diff --git a/package-lock.json b/package-lock.json index f6fde0f6a99..f0f6d1ee1ce 100644 --- a/package-lock.json +++ b/package-lock.json @@ -24396,6 +24396,7 @@ "@vitest/coverage-v8": "^3.2.4", "@wc-toolkit/storybook-helpers": "^9.0.1", "del": "^8.0.1", + "dom-accessibility-api": "^0.7.1", "globby": "^14.1.0", "happy-dom": "^18.0.1", "lit": "^3.3.1", @@ -24466,6 +24467,13 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "packages/craftcms-cp/node_modules/dom-accessibility-api": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/dom-accessibility-api/-/dom-accessibility-api-0.7.1.tgz", + "integrity": "sha512-vdnCeZD+3wZ+8h8xXL/ZtBlvvoobOFyPzSiIfO6sGOZDqjFx4aLMAjZhl4rawj5xYz3UwP6Tgvyh0iH4IOCVnQ==", + "dev": true, + "license": "MIT" + }, "packages/craftcms-cp/node_modules/glob": { "version": "11.0.3", "dev": true, diff --git a/packages/craftcms-cp/package.json b/packages/craftcms-cp/package.json index 62d84c98e72..26376f942f8 100644 --- a/packages/craftcms-cp/package.json +++ b/packages/craftcms-cp/package.json @@ -73,6 +73,7 @@ "@vitest/coverage-v8": "^3.2.4", "@wc-toolkit/storybook-helpers": "^9.0.1", "del": "^8.0.1", + "dom-accessibility-api": "^0.7.1", "globby": "^14.1.0", "happy-dom": "^18.0.1", "lit": "^3.3.1", diff --git a/packages/craftcms-cp/src/components/button/button.styles.ts b/packages/craftcms-cp/src/components/button/button.styles.ts index 08b523e9ec1..7feb310361c 100644 --- a/packages/craftcms-cp/src/components/button/button.styles.ts +++ b/packages/craftcms-cp/src/components/button/button.styles.ts @@ -164,6 +164,25 @@ export default css` craft-button-reset, craft-button-submit { /* Temporarily make it very obvious when these are used */ - outline: 10px solid red; + outline: 10px solid var(--c-button-danger-border); + } + + .a11y-error { + position: relative; + outline: 2px solid var(--c-color-danger-border-normal) !important; + background-color: rgba(255, 0, 0, 0.1) !important; + + &:after { + content: '!'; + position: absolute; + display: inline-flex; + font-size: calc(11rem / 16); + padding: 0.125em 0.5em 0.25em; + inset-block-start: -2px; + inset-inline-start: 0; + background: var(--c-color-danger-bg-emphasis); + color: white; + transform: translateX(-100%); + } } `; diff --git a/packages/craftcms-cp/src/components/button/button.ts b/packages/craftcms-cp/src/components/button/button.ts index d9ebdc1630f..0e077ccc90e 100644 --- a/packages/craftcms-cp/src/components/button/button.ts +++ b/packages/craftcms-cp/src/components/button/button.ts @@ -1,8 +1,10 @@ import {LionButtonSubmit} from '@lion/ui/button.js'; import {html, nothing} from 'lit'; -import {property} from 'lit/decorators.js'; +import {property, state} from 'lit/decorators.js'; import styles from './button.styles.js'; import '../spinner/spinner.js'; +import '../icon/icon.js'; +import {computeAccessibleName} from 'dom-accessibility-api'; import {classMap} from 'lit/directives/class-map.js'; /** @@ -26,6 +28,27 @@ export default class CraftButton extends LionButtonSubmit { return [...super.styles, styles]; } + override async firstUpdated(changedProperties: Map) { + super.firstUpdated(changedProperties); + + await this.updateComplete; + + const childComponents = this.querySelectorAll('craft-icon, craft-spinner'); + await Promise.all( + Array.from(childComponents).map((child: any) => child.updateComplete) + ); + + if (!this.accessibleName) { + this.accessibleName = computeAccessibleName(this); + } + + this._hasAccessibilityError = + !this.accessibleName || this.accessibleName.trim() === ''; + } + + /** The computed accessible name */ + @property() accessibleName: string; + /** Visual appearance of the button */ @property({reflect: true}) appearance: 'accent' | 'plain' = 'accent'; @@ -43,6 +66,9 @@ export default class CraftButton extends LionButtonSubmit { /** Set align-items for the content */ @property() align: 'start' | 'end' | 'center' = 'center'; + @state() + private _hasAccessibilityError: boolean = false; + override render() { return html`
diff --git a/packages/craftcms-cp/src/components/nav-item/nav-item.styles.ts b/packages/craftcms-cp/src/components/nav-item/nav-item.styles.ts index 2eee1719e8b..3967469e203 100644 --- a/packages/craftcms-cp/src/components/nav-item/nav-item.styles.ts +++ b/packages/craftcms-cp/src/components/nav-item/nav-item.styles.ts @@ -4,7 +4,7 @@ export default css` .nav-item { display: grid; gap: var(--c-spacing-md); - grid-template-columns: 1fr auto; + grid-template-columns: calc(24rem / 16) 1fr auto; align-items: center; text-decoration: none; color: inherit; diff --git a/packages/craftcms-cp/src/components/nav-item/nav-item.ts b/packages/craftcms-cp/src/components/nav-item/nav-item.ts index 466c1196ee4..5ebcb08ef05 100644 --- a/packages/craftcms-cp/src/components/nav-item/nav-item.ts +++ b/packages/craftcms-cp/src/components/nav-item/nav-item.ts @@ -104,20 +104,25 @@ export default class CraftNavItem extends LitElement { ${hasSubnav ? html` - - + ` @@ -138,7 +143,7 @@ export default class CraftNavItem extends LitElement { aria-current="${this.active ? 'page' : false}" > ${hasPrefix ? this.renderPrefix() : nothing} - + ${this.renderSuffix(hasSubnav)} `; diff --git a/resources/build/CalloutReadOnly.vue_vue_type_script_setup_true_lang.js b/resources/build/CalloutReadOnly.vue_vue_type_script_setup_true_lang.js index e0a932efeb8..86ba1ab556c 100644 --- a/resources/build/CalloutReadOnly.vue_vue_type_script_setup_true_lang.js +++ b/resources/build/CalloutReadOnly.vue_vue_type_script_setup_true_lang.js @@ -1 +1 @@ -import{B as N,d as p,c as $,o as s,G as z,p as _,w as D,a as t,e as a,b as u,t as d,F as g,f as w,g as k,u as m,h as M,Q as A,A as y,r as v,H as O,R as q,M as C,J as P,x as R,N as j,O as J,q as Q}from"./cp2.js";import{i as B}from"./nav-item.ts.js";import"./lit-element.js";import"./nav-list.ts.js";import"./progress-DOMF4PIT.js";import{_ as h,b as G}from"./_plugin-vue_export-helper.js";function I(){const e=N();return new Proxy({},{get(i,o){return e.props.craft?.[o]}})}const H={class:"system-info__icon"},K=["src"],U={class:"system-info__name"},X=p({__name:"SystemInfo",setup(e){const i=I(),o=_(()=>i.system),c=_(()=>i.site),n=_(()=>c.value.url?"a":"div");return(l,r)=>(s(),$(z(n.value),{class:"system-info",href:c.value.url,target:c.value.url?"_blank":null},{default:D(()=>[t("div",H,[o.value.icon?(s(),a("img",{key:0,src:o.value.icon.url,alt:""},null,8,K)):u("",!0)]),t("div",U,d(o.value.name),1)]),_:1},8,["href","target"]))}}),F=h(X,[["__scopeId","data-v-f4725d04"]]),Y=["icon","href","active","indicator"],Z={key:0,slot:"subnav"},ee=["active","href","indicator"],te=["name"],se={key:1,class:"nav-indicator",slot:"icon"},ae=p({__name:"MainNav",setup(e){const{nav:i}=I();return(o,c)=>(s(),a("craft-nav-list",null,[(s(!0),a(g,null,w(m(i),n=>(s(),a("craft-nav-item",{key:n.url,icon:n.icon,href:n.url,active:n.sel,indicator:!!n.badgeCount},[k(d(n.label)+" ",1),n.subnav?(s(),a(g,{key:0},[n.subnav?(s(),a("craft-nav-list",Z,[(s(!0),a(g,null,w(n.subnav,l=>(s(),a("craft-nav-item",{key:l.url,active:l.sel,href:l.url,indicator:!!l.badgeCount},[l.icon?(s(),a("craft-icon",{key:0,name:l.icon,slot:"icon"},null,8,te)):(s(),a("span",se)),k(" "+d(l.label),1)],8,ee))),128))])):u("",!0)],64)):u("",!0)],8,Y))),128))]))}}),ie=h(ae,[["__scopeId","data-v-c3702d23"]]),ne={class:"flex justify-center py-4 px-2 text-muted"},oe={lang:"en",class:"flex items-center gap-2"},le={class:"edition-logo"},re={"aria-hidden":"true"},ce={class:"sr-only"},de=p({__name:"EditionInfo",setup(e){const{app:i}=I(),o=_(()=>`${i.edition.name} Edition`);return(c,n)=>(s(),a("div",ne,[t("div",null,[t("span",oe,[n[0]||(n[0]=k(" Craft CMS ",-1)),t("span",le,[t("span",re,d(m(i).edition.name),1),t("span",ce,d(o.value),1)]),k(" "+d(m(i).version),1)])])]))}}),ue=h(de,[["__scopeId","data-v-f8b4ece7"]]),fe={},be={class:"dev-mode"};function ve(e,i){return s(),a("div",be,[...i[0]||(i[0]=[t("div",{class:"inline-flex py-1 px-2 bg-slate-900 text-slate-100 font-mono text-xs rounded-lg"}," Dev Mode is enabled ",-1)])])}const _e=h(fe,[["render",ve],["__scopeId","data-v-52fa7a33"]]),me=["data-visibility","data-mode"],pe={class:"cp-sidebar__header"},he={key:0,class:"sidebar-header"},ye={class:"cp-sidebar__body"},ge={class:"cp-sidebar__footer"},ke=p({__name:"CpSidebar",props:{mode:{default:"floating"},visibility:{default:"hidden"}},emits:["close","dock"],setup(e,{emit:i}){const o=i,c=_(()=>e.mode==="floating");return M(()=>e.visibility,async n=>{c.value&&n==="visible"&&(await A(),document.querySelector(".cp-sidebar").querySelector('button, [href], [tabindex]:not([tabindex="-1"])')?.focus())}),(n,l)=>(s(),a("nav",{class:"cp-sidebar","data-visibility":e.visibility,"data-mode":e.mode},[e.visibility==="visible"?(s(),a(g,{key:0},[t("div",pe,[e.mode!=="docked"?(s(),a("div",he,[y(F),l[2]||(l[2]=t("div",{class:"ml-auto"},null,-1)),t("craft-button",{size:"small",icon:"",onClick:l[0]||(l[0]=r=>o("close")),type:"button"},[...l[1]||(l[1]=[t("craft-icon",{name:"x",style:{"font-size":"0.7em"}},null,-1)])])])):u("",!0)]),t("div",ye,[y(ie)]),t("div",ge,[y(ue),y(_e)])],64)):u("",!0)],8,me))}}),$e=h(ke,[["__scopeId","data-v-22a18951"]]),xe=p({__name:"VarDump",props:{data:{}},setup(e){return(i,o)=>(s(),a("pre",null,d(JSON.stringify(e.data,null,2)),1))}}),Ce=h(xe,[["__scopeId","data-v-0fbfca53"]]),Se=p({__name:"CpLink",props:{as:{default:"a"},href:{},variant:{default:"default"},appearance:{default:"inline"},block:{type:Boolean,default:!1}},setup(e){return(i,o)=>(s(),$(m(q),O({as:e.as,href:e.href,class:{block:e.block,"inline-flex":!e.block,"cp-link":!0,"cp-link--inline":e.appearance==="inline","cp-link--button":e.appearance==="button","cp-link--default":e.variant==="default","cp-link--primary":e.variant==="primary","cp-link--danger":e.variant==="danger"}},i.$attrs),{default:D(()=>[v(i.$slots,"default",{},void 0,!0)]),_:3},16,["as","href","class"]))}}),we=h(Se,[["__scopeId","data-v-cec492d6"]]),Be={class:"breadcrumbs"},De={key:2,class:"separator"},Ie=p({__name:"Breadcrumbs",props:{items:{},separator:{default:"/"}},setup(e){return(i,o)=>(s(),a("ul",Be,[(s(!0),a(g,null,w(e.items,(c,n)=>(s(),a("li",{key:n,class:C({"breadcrumb-item":!0,"breadcrumb-item--active":n===e.items.length-1})},[c.url?(s(),$(we,{key:0,href:c.url},{default:D(()=>[k(d(c.label),1)]),_:2},1032,["href"])):(s(),a(g,{key:1},[k(d(c.label),1)],64)),n({c67f2d64:E.value}));const i=N(),o=_(()=>i.props.flash?.error),c=_(()=>i.props.flash?.success),n=_(()=>i.props.crumbs??null),l=R("sidebarToggle"),r=j({sidebar:{mode:"floating",visibility:"hidden"}}),S=G("(min-width: 1024px)"),x=Q(!1);M(S,f=>{f?(r.sidebar.mode="docked",r.sidebar.visibility="visible"):(r.sidebar.mode="floating",r.sidebar.visibility="hidden")},{immediate:!0});function V(){r.sidebar.visibility==="visible"?r.sidebar.visibility="hidden":r.sidebar.visibility="visible"}function L(){r.sidebar.visibility="hidden",l.value.focus()}const T=_(()=>r.sidebar.visibility==="visible"?"x":"bars"),E=_(()=>r.sidebar.mode==="docked"?r.sidebar.visibility==="visible"?"var(--global-sidebar-width)":"0":"auto");return(f,b)=>(s(),a(g,null,[y(m(J),{title:e.title},null,8,["title"]),t("div",Me,[t("div",Fe,[t("div",Ve,[m(S)?u("",!0):(s(),a("craft-button",{key:0,icon:"",type:"button",appearance:"plain",onClick:V,ref_key:"sidebarToggle",ref:l},[t("craft-icon",{name:T.value},null,8,Le)],512)),m(S)?(s(),$(F,{key:1})):u("",!0),b[2]||(b[2]=t("div",{class:"ml-auto"},null,-1)),b[3]||(b[3]=t("craft-button",{icon:"",appearance:"plain"},[t("craft-icon",{name:"search"})],-1))]),o.value?(s(),a("craft-callout",Te,d(o.value),1)):u("",!0),c.value?(s(),a("craft-callout",Ee,d(c.value),1)):u("",!0)]),t("div",We,[y($e,{mode:r.sidebar.mode,visibility:r.sidebar.visibility,onClose:L},null,8,["mode","visibility"])]),t("div",ze,[v(f.$slots,"main",{},()=>[t("main",null,[v(f.$slots,"breadcrumbs",{},()=>[n.value?(s(),a("div",Ae,[y(Ne,{items:n.value},null,8,["items"])])):u("",!0)],!0),v(f.$slots,"header",{},()=>[t("div",{class:C({container:!0,"container--full":e.fullWidth})},[t("div",Oe,[v(f.$slots,"title",{},()=>[t("h1",qe,d(e.title),1)],!0),v(f.$slots,"title-badge",{},void 0,!0),b[4]||(b[4]=t("div",{class:"flex-1"},null,-1)),t("div",Pe,[v(f.$slots,"actions",{},void 0,!0)])])],2)],!0),t("div",{class:C({container:!0,"container--full":e.fullWidth})},[v(f.$slots,"default",{},void 0,!0)],2)])],!0)]),t("div",Re,[t("footer",null,[t("div",{class:C({container:!0,"container--full":e.fullWidth})},[v(f.$slots,"footer",{},void 0,!0)],2)])])]),e.debug?(s(),a("div",je,[x.value?(s(),a("div",Je,[t("craft-button",{icon:"",size:"small",type:"button",onClick:b[0]||(b[0]=W=>x.value=!1)},[t("craft-icon",{label:m(B)("Close Debug panel"),name:"x"},null,8,Qe)])])):(s(),a("div",Ge,[t("craft-button",{type:"button",onClick:b[1]||(b[1]=W=>x.value=!0),icon:""},[t("craft-icon",{name:"code",label:m(B)("Show debug variables")},null,8,He)])])),x.value?(s(),$(Ce,{key:2,data:e.debug,class:"max-h-[50vh] overflow-scroll"},null,8,["data"])):u("",!0)])):u("",!0)],64))}}),at=h(Ke,[["__scopeId","data-v-27b42e26"]]),Ue={appearance:"fill",rounded:"start",class:"border border-b-border-subtle"},it=p({__name:"CalloutReadOnly",setup(e){return(i,o)=>(s(),a("craft-callout",Ue,[o[0]||(o[0]=t("craft-icon",{slot:"icon",name:"custom-icons/gear-slash"},null,-1)),v(i.$slots,"default",{},()=>[k(d(m(B)("Changes to these settings arenʼt permitted in this environment.")),1)])]))}});export{at as A,we as C,it as _,I as u}; +import{B as N,d as m,c as x,o as s,G as z,p as v,w as D,a as t,e as a,b as u,t as d,F as g,f as B,g as k,u as f,h as M,Q as A,A as y,r as _,H as O,R as q,M as S,J as P,x as R,N as j,O as J,q as Q}from"./cp2.js";import{_ as p,b as G}from"./_plugin-vue_export-helper.js";import{i as $}from"./nav-item.ts.js";import"./lit-element.js";import"./nav-list.ts.js";import"./progress-DOMF4PIT.js";function I(){const e=N();return new Proxy({},{get(i,o){return e.props.craft?.[o]}})}const H={class:"system-info__icon"},K=["src"],U={class:"system-info__name"},X=m({__name:"SystemInfo",setup(e){const i=I(),o=v(()=>i.system),c=v(()=>i.site),n=v(()=>c.value.url?"a":"div");return(l,r)=>(s(),x(z(n.value),{class:"system-info",href:c.value.url,target:c.value.url?"_blank":null},{default:D(()=>[t("div",H,[o.value.icon?(s(),a("img",{key:0,src:o.value.icon.url,alt:""},null,8,K)):u("",!0)]),t("div",U,d(o.value.name),1)]),_:1},8,["href","target"]))}}),F=p(X,[["__scopeId","data-v-f4725d04"]]),Y=["icon","href","active","indicator"],Z={key:0,slot:"subnav"},ee=["active","href","indicator"],te=["name"],se={key:1,class:"nav-indicator",slot:"icon"},ae=m({__name:"MainNav",setup(e){const{nav:i}=I();return(o,c)=>(s(),a("craft-nav-list",null,[(s(!0),a(g,null,B(f(i),n=>(s(),a("craft-nav-item",{key:n.url,icon:n.icon,href:n.url,active:n.sel,indicator:!!n.badgeCount},[k(d(n.label)+" ",1),n.subnav?(s(),a(g,{key:0},[n.subnav?(s(),a("craft-nav-list",Z,[(s(!0),a(g,null,B(n.subnav,l=>(s(),a("craft-nav-item",{key:l.url,active:l.sel,href:l.url,indicator:!!l.badgeCount},[l.icon?(s(),a("craft-icon",{key:0,name:l.icon,slot:"icon"},null,8,te)):(s(),a("span",se)),k(" "+d(l.label),1)],8,ee))),128))])):u("",!0)],64)):u("",!0)],8,Y))),128))]))}}),ie=p(ae,[["__scopeId","data-v-c3702d23"]]),ne={class:"flex justify-center py-4 px-2 text-muted"},oe={lang:"en",class:"flex items-center gap-2"},le={class:"edition-logo"},re={"aria-hidden":"true"},ce={class:"sr-only"},de=m({__name:"EditionInfo",setup(e){const{app:i}=I(),o=v(()=>`${i.edition.name} Edition`);return(c,n)=>(s(),a("div",ne,[t("div",null,[t("span",oe,[n[0]||(n[0]=k(" Craft CMS ",-1)),t("span",le,[t("span",re,d(f(i).edition.name),1),t("span",ce,d(o.value),1)]),k(" "+d(f(i).version),1)])])]))}}),ue=p(de,[["__scopeId","data-v-f8b4ece7"]]),fe={},be={class:"dev-mode"};function _e(e,i){return s(),a("div",be,[...i[0]||(i[0]=[t("div",{class:"inline-flex py-1 px-2 bg-slate-900 text-slate-100 font-mono text-xs rounded-lg"}," Dev Mode is enabled ",-1)])])}const ve=p(fe,[["render",_e],["__scopeId","data-v-52fa7a33"]]),me=["data-visibility","data-mode"],pe={class:"cp-sidebar__header"},he={key:0,class:"sidebar-header"},ye=["label"],ge={class:"cp-sidebar__body"},ke={class:"cp-sidebar__footer"},$e=m({__name:"CpSidebar",props:{mode:{default:"floating"},visibility:{default:"hidden"}},emits:["close","dock"],setup(e,{emit:i}){const o=i,c=v(()=>e.mode==="floating");return M(()=>e.visibility,async n=>{c.value&&n==="visible"&&(await A(),document.querySelector(".cp-sidebar").querySelector('button, [href], [tabindex]:not([tabindex="-1"])')?.focus())}),(n,l)=>(s(),a("nav",{class:"cp-sidebar","data-visibility":e.visibility,"data-mode":e.mode},[e.visibility==="visible"?(s(),a(g,{key:0},[t("div",pe,[e.mode!=="docked"?(s(),a("div",he,[y(F),l[1]||(l[1]=t("div",{class:"ml-auto"},null,-1)),t("craft-button",{size:"small",icon:"",onClick:l[0]||(l[0]=r=>o("close")),type:"button"},[t("craft-icon",{name:"x",style:{"font-size":"0.7em"},label:f($)("Close")},null,8,ye)])])):u("",!0)]),t("div",ge,[y(ie)]),t("div",ke,[y(ue),y(ve)])],64)):u("",!0)],8,me))}}),xe=p($e,[["__scopeId","data-v-7f5f0148"]]),Ce=m({__name:"VarDump",props:{data:{}},setup(e){return(i,o)=>(s(),a("pre",null,d(JSON.stringify(e.data,null,2)),1))}}),Se=p(Ce,[["__scopeId","data-v-0fbfca53"]]),we=m({__name:"CpLink",props:{as:{default:"a"},href:{},variant:{default:"default"},appearance:{default:"inline"},block:{type:Boolean,default:!1}},setup(e){return(i,o)=>(s(),x(f(q),O({as:e.as,href:e.href,class:{block:e.block,"inline-flex":!e.block,"cp-link":!0,"cp-link--inline":e.appearance==="inline","cp-link--button":e.appearance==="button","cp-link--default":e.variant==="default","cp-link--primary":e.variant==="primary","cp-link--danger":e.variant==="danger"}},i.$attrs),{default:D(()=>[_(i.$slots,"default",{},void 0,!0)]),_:3},16,["as","href","class"]))}}),Be=p(we,[["__scopeId","data-v-cec492d6"]]),De={class:"breadcrumbs"},Ie={key:2,class:"separator"},Ne=m({__name:"Breadcrumbs",props:{items:{},separator:{default:"/"}},setup(e){return(i,o)=>(s(),a("ul",De,[(s(!0),a(g,null,B(e.items,(c,n)=>(s(),a("li",{key:n,class:S({"breadcrumb-item":!0,"breadcrumb-item--active":n===e.items.length-1})},[c.url?(s(),x(Be,{key:0,href:c.url},{default:D(()=>[k(d(c.label),1)]),_:2},1032,["href"])):(s(),a(g,{key:1},[k(d(c.label),1)],64)),n({v52e1a9c1:E.value}));const i=N(),o=v(()=>i.props.flash?.error),c=v(()=>i.props.flash?.success),n=v(()=>i.props.crumbs??null),l=R("sidebarToggle"),r=j({sidebar:{mode:"floating",visibility:"hidden"}}),w=G("(min-width: 1024px)"),C=Q(!1);M(w,b=>{b?(r.sidebar.mode="docked",r.sidebar.visibility="visible"):(r.sidebar.mode="floating",r.sidebar.visibility="hidden")},{immediate:!0});function T(){r.sidebar.visibility==="visible"?r.sidebar.visibility="hidden":r.sidebar.visibility="visible"}function V(){r.sidebar.visibility="hidden",l.value.focus()}const L=v(()=>r.sidebar.visibility==="visible"?"x":"bars"),E=v(()=>r.sidebar.mode==="docked"?r.sidebar.visibility==="visible"?"var(--global-sidebar-width)":"0":"auto");return(b,h)=>(s(),a(g,null,[y(f(J),{title:e.title},null,8,["title"]),t("div",Fe,[t("div",Te,[t("div",Ve,[f(w)?u("",!0):(s(),a("craft-button",{key:0,icon:"",type:"button",appearance:"plain",onClick:T,ref_key:"sidebarToggle",ref:l},[t("craft-icon",{name:L.value,label:f($)("Toggle menu")},null,8,Le)],512)),f(w)?(s(),x(F,{key:1})):u("",!0),h[2]||(h[2]=t("div",{class:"ml-auto"},null,-1)),t("craft-button",Ee,[t("craft-icon",{name:"search",label:f($)("Search")},null,8,We)])]),o.value?(s(),a("craft-callout",ze,d(o.value),1)):u("",!0),c.value?(s(),a("craft-callout",Ae,d(c.value),1)):u("",!0)]),t("div",Oe,[y(xe,{mode:r.sidebar.mode,visibility:r.sidebar.visibility,onClose:V},null,8,["mode","visibility"])]),t("div",qe,[_(b.$slots,"main",{},()=>[t("main",null,[_(b.$slots,"breadcrumbs",{},()=>[n.value?(s(),a("div",Pe,[y(Me,{items:n.value},null,8,["items"])])):u("",!0)],!0),_(b.$slots,"header",{},()=>[t("div",{class:S({container:!0,"container--full":e.fullWidth})},[t("div",Re,[_(b.$slots,"title",{},()=>[t("h1",je,d(e.title),1)],!0),_(b.$slots,"title-badge",{},void 0,!0),h[3]||(h[3]=t("div",{class:"flex-1"},null,-1)),t("div",Je,[_(b.$slots,"actions",{},void 0,!0)])])],2)],!0),t("div",{class:S({container:!0,"container--full":e.fullWidth})},[_(b.$slots,"default",{},void 0,!0)],2)])],!0)]),t("div",Qe,[t("footer",null,[t("div",{class:S({container:!0,"container--full":e.fullWidth})},[_(b.$slots,"footer",{},void 0,!0)],2)])])]),e.debug?(s(),a("div",Ge,[C.value?(s(),a("div",He,[t("craft-button",{icon:"",size:"small",type:"button",onClick:h[0]||(h[0]=W=>C.value=!1)},[t("craft-icon",{label:f($)("Close Debug panel"),name:"x"},null,8,Ke)])])):(s(),a("div",Ue,[t("craft-button",{type:"button",onClick:h[1]||(h[1]=W=>C.value=!0),icon:""},[t("craft-icon",{name:"code",label:f($)("Show debug variables")},null,8,Xe)])])),C.value?(s(),x(Se,{key:2,data:e.debug,class:"max-h-[50vh] overflow-scroll"},null,8,["data"])):u("",!0)])):u("",!0)],64))}}),ot=p(Ye,[["__scopeId","data-v-c43515f0"]]),Ze={appearance:"fill",rounded:"start",class:"border border-b-border-subtle"},lt=m({__name:"CalloutReadOnly",setup(e){return(i,o)=>(s(),a("craft-callout",Ze,[o[0]||(o[0]=t("craft-icon",{slot:"icon",name:"custom-icons/gear-slash"},null,-1)),_(i.$slots,"default",{},()=>[k(d(f($)("Changes to these settings arenʼt permitted in this environment.")),1)])]))}});export{ot as A,Be as C,lt as _,I as u}; diff --git a/resources/build/SettingsGeneralPage.js b/resources/build/SettingsGeneralPage.js index b86e0e3e3f6..0c13acf2ad2 100644 --- a/resources/build/SettingsGeneralPage.js +++ b/resources/build/SettingsGeneralPage.js @@ -1 +1 @@ -import{d as O,I,J as F,p as x,K as M,e as n,o,L as U,b as f,a as e,t as u,C as B,A as V,w as _,c as E,y as T,u as t,F as h,f as g,g as y,z,D as N}from"./cp2.js";import{i as d}from"./nav-item.ts.js";import"./lit-element.js";import"./nav-list.ts.js";import"./progress-DOMF4PIT.js";import{u as Z,_ as P,A as R}from"./CalloutReadOnly.vue_vue_type_script_setup_true_lang.js";import{q as A}from"./index.js";import{T as $}from"./TransitionFade.js";import{_ as D,u as G}from"./_plugin-vue_export-helper.js";import"./index2.js";import"./CpGlobalSidebar.js";import"./property.js";import"./query.js";const v=a=>({url:v.url(a),method:"post"});v.definition={methods:["post"],url:"/admin/settings/general"};v.url=a=>v.definition.url+A(a);v.post=a=>({url:v.url(a),method:"post"});const H={Solo:0,Team:1,Pro:2,Enterprise:3},q=["label","name","button-label","help-text","disabled","multiple",".uploadResponse","has-feedback-for"],K={key:0,class:"error-list",slot:"feedback"},J=O({__name:"FileUpload",props:I({label:{},name:{},buttonLabel:{default:"Select file"},helpText:{},thumbnailSize:{default:120},disabled:{type:Boolean,default:!1},multiple:{type:Boolean,default:!1},error:{default:null}},{modelValue:{},modelModifiers:{}}),emits:["update:modelValue"],setup(a){F(b=>({c33cc0a6:c.value}));const m=M(a,"modelValue"),p=a,c=x(()=>isNaN(Number(p.thumbnailSize))?p.thumbnailSize:`calc(${p.thumbnailSize}rem / 16)`);function S(b){m.value=p.multiple?b.detail?.newFiles:b.detail?.newFiles?.[0]||null}function r(b){m.value=null}const k=x(()=>m.value?(Array.isArray(m.value)?m.value:[m.value]).map(i=>({name:i.name,status:"SUCCESS",downloadUrl:i.url,errorMessage:"",id:i.name})):[]);return(b,i)=>(o(),n("craft-input-file",{label:a.label,name:a.name,"button-label":a.buttonLabel,"help-text":a.helpText,disabled:a.disabled,multiple:a.multiple,".uploadResponse":k.value,onFileRemoved:r,onFileListChanged:S,"has-feedback-for":a.error?"error":"",style:U({"--thumbnail-size":c.value})},[a.error?(o(),n("ul",K,[e("li",null,u(a.error),1)])):f("",!0)],44,q))}}),C=D(J,[["__scopeId","data-v-e8396b7f"]]),j={key:0,class:"flex gap-1 items-center text-sm"},Q={key:1,class:"tw:flex tw:gap-1 tw:items-center tw:text-sm"},W={key:0},X=["loading"],Y={slot:"content"},ee={class:"bg-white border border-border-subtle rounded-sm shadow-sm"},te={class:"grid gap-3 p-5"},ae={key:0,variant:"danger",icon:"triangle-exclamation"},le={slot:"title",class:"tw:font-bold"},oe=["label","has-feedback-for","disabled"],ne=[".choiceValue",".hint"],se={slot:"after"},ie={variant:"info",appearance:"plain",class:"p-0",icon:"lightbulb"},re={href:"https://craftcms.com/docs/5.x/configure.html#control-panel-settings"},de={slot:"feedback"},ue={key:0,class:"error-list"},ce=["label",".modelValue","has-feedback-for","disabled"],me={class:"tw:flex tw:items-center tw:gap-1"},fe={class:"tw:flex tw:items-center tw:gap-1"},be=[".choiceValue"],he={class:"tw:flex tw:items-center tw:gap-1"},pe=["variant"],ve={class:"tw:font-mono"},ye=["innerHTML"],ge={slot:"feedback"},ke={key:0,class:"error-list"},we=["label","has-feedback-for","disabled"],Ve=["innerHTML"],xe={key:0,class:"error-list",slot:"feedback"},Se=["label",".modelValue","has-feedback-for","disabled"],_e=[".choiceValue"],Le={key:0,class:"error-list",slot:"feedback"},Te={class:"p-4 grid gap-3"},ze=O({__name:"SettingsGeneralPage",props:{readOnly:{type:Boolean},system:{},nameSuggestions:{},timezoneOptions:{},systemStatusOptions:{},siteIcon:{},siteLogo:{},saveUrl:{},flash:{},errors:{}},setup(a){const m=a,p=x(()=>m.flash),c=x(()=>m.errors),{app:S}=Z(),r=B({name:m.system.name,live:m.system.live,retryDuration:m.system.retryDuration,timeZone:m.system.timeZone,siteIcon:m.siteIcon,siteLogo:m.siteLogo});function k(i){const l=i.target;l&&(r[l.name]=l.modelValue)}G("keydown",i=>{(i.metaKey||i.ctrlKey)&&i.key==="s"&&(i.preventDefault(),b())});function b(){r.transform(i=>(i.siteIcon!==null&&!(i.siteIcon instanceof File)&&delete i.siteIcon,i.siteLogo!==null&&!(i.siteLogo instanceof File)&&delete i.siteLogo,i)).clearErrors().submit(v())}return(i,l)=>(o(),n("form",{onSubmit:N(b,["prevent"])},[V(R,{title:t(d)("General Settings")},{actions:_(()=>[V($,null,{default:_(()=>[t(r).recentlySuccessful&&p.value?.success?(o(),n("div",j,[l[4]||(l[4]=e("craft-icon",{name:"circle-check",style:{color:"var(--c-color-success-bg-emphasis)"}},null,-1)),y(" "+u(p.value.success),1)])):f("",!0),t(r).hasErrors?(o(),n("div",Q,[l[5]||(l[5]=e("craft-icon",{name:"triangle-exclamation",style:{color:"var(--c-color-danger-bg-emphasis)"}},null,-1)),y(" "+u(t(d)("Could not save settings")),1)])):f("",!0)]),_:1}),a.readOnly?f("",!0):(o(),n("craft-button-group",W,[e("craft-button",{type:"submit",variant:"primary",loading:t(r).processing},u(t(d)("Save")),9,X),e("craft-action-menu",null,[l[7]||(l[7]=e("craft-button",{slot:"invoker",variant:"primary",type:"button",icon:""},[e("craft-icon",{name:"chevron-down"})],-1)),e("div",Y,[e("craft-action-item",{onClick:b},[y(u(t(d)("Save and continue editing"))+" ",1),l[6]||(l[6]=e("craft-shortcut",{slot:"suffix",class:"ml-2"},"S",-1))])])])]))]),default:_(()=>[e("div",ee,[a.readOnly?(o(),E(P,{key:0})):f("",!0),e("div",te,[t(r).hasErrors?(o(),n("craft-callout",ae,[e("div",le,u(t(d)("Could not save settings")),1),e("ul",null,[(o(!0),n(h,null,g(c.value,(s,L)=>(o(),n("li",null,u(s),1))),256))])])):f("",!0),T(e("craft-combobox",{label:t(d)("System Name"),id:"name",name:"name","onUpdate:modelValue":l[0]||(l[0]=s=>t(r).name=s),"has-feedback-for":c.value?.name?"error":"",disabled:a.readOnly,"require-option-match":!1,"show-all-on-empty":""},[(o(!0),n(h,null,g(a.nameSuggestions,(s,L)=>(o(),n(h,{key:L},[(o(!0),n(h,null,g(s.data,w=>(o(),n("craft-option",{key:w.name,".choiceValue":w.name,".hint":w.hint},u(w.name),41,ne))),128))],64))),128)),e("div",se,[e("craft-callout",ie,[y(u(t(d)("This can begin with an environment variable."))+" ",1),e("a",re,u(t(d)("Learn more")),1)])]),e("div",de,[c.value?.name?(o(),n("ul",ue,[e("li",null,u(c.value.name),1)])):f("",!0)])],8,oe),[[z,t(r).name]]),e("craft-combobox",{label:t(d)("System Status"),id:"live",name:"live",".modelValue":a.system.live?"1":"0","has-feedback-for":c.value?.live?"error":"",onModelValueChanged:k,disabled:a.readOnly,"show-all-on-empty":""},[e("craft-option",{".choiceValue":"1"},[e("div",me,[l[8]||(l[8]=e("craft-indicator",{variant:"success"},null,-1)),e("span",null,u(t(d)("Online")),1)])],32),e("craft-option",{".choiceValue":"0"},[e("div",fe,[l[9]||(l[9]=e("craft-indicator",{variant:"danger"},null,-1)),e("span",null,u(t(d)("Offline")),1)])],32),(o(!0),n(h,null,g(a.systemStatusOptions,s=>(o(),n(h,{key:s.label},[s.optgroup?(o(),n(h,{key:0},[],64)):(o(),n("craft-option",{key:1,".choiceValue":s.value},[e("div",he,[e("craft-indicator",{variant:s.value?"success":"error"},null,8,pe),e("span",ve,u(s.label),1)])],40,be))],64))),128)),e("craft-callout",{slot:"after",variant:"info",appearance:"plain",class:"p-0",icon:"lightbulb",innerHTML:t(d)("This can be set to an environment variable with a boolean value ({examples})",{examples:"yes/no/true/false/on/off/0/1"})},null,8,ye),e("div",ge,[c.value.live?(o(),n("ul",ke,[e("li",null,u(c.value.live),1)])):f("",!0)])],40,ce),T(e("craft-input",{label:t(d)("Retry Duration"),id:"retry-duration",name:"retryDuration","onUpdate:modelValue":l[1]||(l[1]=s=>t(r).retryDuration=s),"has-feedback-for":c.value?.retryDuration?"error":"",inputmode:"numeric",size:"4",disabled:a.readOnly},[e("div",{slot:"help-text",innerHTML:t(d)("The number of seconds that the Retry-After HTTP header should be set to for 503 responses when the system is offline.")},null,8,Ve),c.value?.retryDuration?(o(),n("ul",xe,[e("li",null,u(c.value.retryDuration),1)])):f("",!0)],8,we),[[z,t(r).retryDuration]]),e("craft-combobox",{label:t(d)("Time Zone"),id:"time-zone",name:"timeZone",".modelValue":t(r).timeZone,onModelValueChanged:k,"has-feedback-for":c.value?.timeZone?"error":"",disabled:a.readOnly,"show-all-on-empty":""},[(o(!0),n(h,null,g(a.timezoneOptions,s=>(o(),n("craft-option",{key:s.value,".choiceValue":s.value},u(s.label)+u(s.data?.hint?` — ${s.data.hint}`:""),41,_e))),128)),l[10]||(l[10]=e("craft-callout",{slot:"after",variant:"info",appearance:"plain",class:"p-0",icon:"lightbulb"},[y(" This can be set to an environment variable with a value of a "),e("a",{href:"https://www.php.net/manual/en/timezones.php",rel:"noopener",target:"_blank"},"supported time zone"),y(". ")],-1)),c.value?.timeZone?(o(),n("ul",Le,[e("li",null,u(c.value.timeZone),1)])):f("",!0)],40,Se)]),t(S).edition.value>=t(H).Pro?(o(),n(h,{key:1},[l[11]||(l[11]=e("hr",null,null,-1)),e("div",Te,[V(C,{label:t(d)("Site Icon"),name:"siteIcon",modelValue:t(r).siteIcon,"onUpdate:modelValue":l[2]||(l[2]=s=>t(r).siteIcon=s),"help-text":t(d)("Square SVG file recommended. The logo will be displayed at {size} by {size}.",{size:"32px"}),"thumbnail-size":32,disabled:a.readOnly,error:t(r).errors.siteIcon},null,8,["label","modelValue","help-text","disabled","error"]),V(C,{label:t(d)("Login Page Logo"),modelValue:t(r).siteLogo,"onUpdate:modelValue":l[3]||(l[3]=s=>t(r).siteLogo=s),name:"siteLogo","help-text":t(d)("SVG file recommended. The logo will be displayed at {size} wide.",{size:"288px"}),disabled:a.readOnly,"thumbnail-size":288,error:t(r).errors.siteLogo},null,8,["label","modelValue","help-text","disabled","error"])])],64)):f("",!0)])]),_:1},8,["title"])],32))}}),Ae=D(ze,[["__scopeId","data-v-5eec89a4"]]);export{Ae as default}; +import{d as O,I,J as F,p as x,K as M,e as n,o,L as U,b as f,a as e,t as u,C as B,A as V,w as S,c as E,y as T,u as t,F as b,f as g,g as y,z,D as N}from"./cp2.js";import{i as r}from"./nav-item.ts.js";import"./lit-element.js";import"./nav-list.ts.js";import"./progress-DOMF4PIT.js";import{u as Z,_ as P,A as R}from"./CalloutReadOnly.vue_vue_type_script_setup_true_lang.js";import{q as A}from"./index.js";import{T as $}from"./TransitionFade.js";import{_ as D,u as G}from"./_plugin-vue_export-helper.js";import"./index2.js";import"./CpGlobalSidebar.js";import"./property.js";import"./query.js";const v=a=>({url:v.url(a),method:"post"});v.definition={methods:["post"],url:"/admin/settings/general"};v.url=a=>v.definition.url+A(a);v.post=a=>({url:v.url(a),method:"post"});const H={Solo:0,Team:1,Pro:2,Enterprise:3},q=["label","name","button-label","help-text","disabled","multiple",".uploadResponse","has-feedback-for"],K={key:0,class:"error-list",slot:"feedback"},J=O({__name:"FileUpload",props:I({label:{},name:{},buttonLabel:{default:"Select file"},helpText:{},thumbnailSize:{default:120},disabled:{type:Boolean,default:!1},multiple:{type:Boolean,default:!1},error:{default:null}},{modelValue:{},modelModifiers:{}}),emits:["update:modelValue"],setup(a){F(h=>({c33cc0a6:c.value}));const m=M(a,"modelValue"),p=a,c=x(()=>isNaN(Number(p.thumbnailSize))?p.thumbnailSize:`calc(${p.thumbnailSize}rem / 16)`);function _(h){m.value=p.multiple?h.detail?.newFiles:h.detail?.newFiles?.[0]||null}function d(h){m.value=null}const k=x(()=>m.value?(Array.isArray(m.value)?m.value:[m.value]).map(i=>({name:i.name,status:"SUCCESS",downloadUrl:i.url,errorMessage:"",id:i.name})):[]);return(h,i)=>(o(),n("craft-input-file",{label:a.label,name:a.name,"button-label":a.buttonLabel,"help-text":a.helpText,disabled:a.disabled,multiple:a.multiple,".uploadResponse":k.value,onFileRemoved:d,onFileListChanged:_,"has-feedback-for":a.error?"error":"",style:U({"--thumbnail-size":c.value})},[a.error?(o(),n("ul",K,[e("li",null,u(a.error),1)])):f("",!0)],44,q))}}),C=D(J,[["__scopeId","data-v-e8396b7f"]]),j={key:0,class:"flex gap-1 items-center text-sm"},Q={key:1,class:"tw:flex tw:gap-1 tw:items-center tw:text-sm"},W={key:0},X=["loading"],Y={slot:"invoker",variant:"primary",type:"button",icon:""},ee=["label"],te={slot:"content"},ae={class:"bg-white border border-border-subtle rounded-sm shadow-sm"},le={class:"grid gap-3 p-5"},oe={key:0,variant:"danger",icon:"triangle-exclamation"},ne={slot:"title",class:"tw:font-bold"},se=["label","has-feedback-for","disabled"],ie=[".choiceValue",".hint"],re={slot:"after"},de={variant:"info",appearance:"plain",class:"p-0",icon:"lightbulb"},ue={href:"https://craftcms.com/docs/5.x/configure.html#control-panel-settings"},ce={slot:"feedback"},me={key:0,class:"error-list"},fe=["label",".modelValue","has-feedback-for","disabled"],he={class:"tw:flex tw:items-center tw:gap-1"},be={class:"tw:flex tw:items-center tw:gap-1"},pe=[".choiceValue"],ve={class:"tw:flex tw:items-center tw:gap-1"},ye=["variant"],ge={class:"tw:font-mono"},ke=["innerHTML"],we={slot:"feedback"},Ve={key:0,class:"error-list"},xe=["label","has-feedback-for","disabled"],_e=["innerHTML"],Se={key:0,class:"error-list",slot:"feedback"},Le=["label",".modelValue","has-feedback-for","disabled"],Te=[".choiceValue"],ze={key:0,class:"error-list",slot:"feedback"},Ce={class:"p-4 grid gap-3"},Oe=O({__name:"SettingsGeneralPage",props:{readOnly:{type:Boolean},system:{},nameSuggestions:{},timezoneOptions:{},systemStatusOptions:{},siteIcon:{},siteLogo:{},saveUrl:{},flash:{},errors:{}},setup(a){const m=a,p=x(()=>m.flash),c=x(()=>m.errors),{app:_}=Z(),d=B({name:m.system.name,live:m.system.live,retryDuration:m.system.retryDuration,timeZone:m.system.timeZone,siteIcon:m.siteIcon,siteLogo:m.siteLogo});function k(i){const l=i.target;l&&(d[l.name]=l.modelValue)}G("keydown",i=>{(i.metaKey||i.ctrlKey)&&i.key==="s"&&(i.preventDefault(),h())});function h(){d.transform(i=>(i.siteIcon!==null&&!(i.siteIcon instanceof File)&&delete i.siteIcon,i.siteLogo!==null&&!(i.siteLogo instanceof File)&&delete i.siteLogo,i)).clearErrors().submit(v())}return(i,l)=>(o(),n("form",{onSubmit:N(h,["prevent"])},[V(R,{title:t(r)("General Settings")},{actions:S(()=>[V($,null,{default:S(()=>[t(d).recentlySuccessful&&p.value?.success?(o(),n("div",j,[l[4]||(l[4]=e("craft-icon",{name:"circle-check",style:{color:"var(--c-color-success-bg-emphasis)"}},null,-1)),y(" "+u(p.value.success),1)])):f("",!0),t(d).hasErrors?(o(),n("div",Q,[l[5]||(l[5]=e("craft-icon",{name:"triangle-exclamation",style:{color:"var(--c-color-danger-bg-emphasis)"}},null,-1)),y(" "+u(t(r)("Could not save settings")),1)])):f("",!0)]),_:1}),a.readOnly?f("",!0):(o(),n("craft-button-group",W,[e("craft-button",{type:"submit",variant:"primary",loading:t(d).processing},u(t(r)("Save")),9,X),e("craft-action-menu",null,[e("craft-button",Y,[e("craft-icon",{name:"chevron-down",label:t(r)("More actions")},null,8,ee)]),e("div",te,[e("craft-action-item",{onClick:h},[y(u(t(r)("Save and continue editing"))+" ",1),l[6]||(l[6]=e("craft-shortcut",{slot:"suffix",class:"ml-2"},"S",-1))])])])]))]),default:S(()=>[e("div",ae,[a.readOnly?(o(),E(P,{key:0})):f("",!0),e("div",le,[t(d).hasErrors?(o(),n("craft-callout",oe,[e("div",ne,u(t(r)("Could not save settings")),1),e("ul",null,[(o(!0),n(b,null,g(c.value,(s,L)=>(o(),n("li",null,u(s),1))),256))])])):f("",!0),T(e("craft-combobox",{label:t(r)("System Name"),id:"name",name:"name","onUpdate:modelValue":l[0]||(l[0]=s=>t(d).name=s),"has-feedback-for":c.value?.name?"error":"",disabled:a.readOnly,"require-option-match":!1,"show-all-on-empty":""},[(o(!0),n(b,null,g(a.nameSuggestions,(s,L)=>(o(),n(b,{key:L},[(o(!0),n(b,null,g(s.data,w=>(o(),n("craft-option",{key:w.name,".choiceValue":w.name,".hint":w.hint},u(w.name),41,ie))),128))],64))),128)),e("div",re,[e("craft-callout",de,[y(u(t(r)("This can begin with an environment variable."))+" ",1),e("a",ue,u(t(r)("Learn more")),1)])]),e("div",ce,[c.value?.name?(o(),n("ul",me,[e("li",null,u(c.value.name),1)])):f("",!0)])],8,se),[[z,t(d).name]]),e("craft-combobox",{label:t(r)("System Status"),id:"live",name:"live",".modelValue":a.system.live?"1":"0","has-feedback-for":c.value?.live?"error":"",onModelValueChanged:k,disabled:a.readOnly,"show-all-on-empty":""},[e("craft-option",{".choiceValue":"1"},[e("div",he,[l[7]||(l[7]=e("craft-indicator",{variant:"success"},null,-1)),e("span",null,u(t(r)("Online")),1)])],32),e("craft-option",{".choiceValue":"0"},[e("div",be,[l[8]||(l[8]=e("craft-indicator",{variant:"danger"},null,-1)),e("span",null,u(t(r)("Offline")),1)])],32),(o(!0),n(b,null,g(a.systemStatusOptions,s=>(o(),n(b,{key:s.label},[s.optgroup?(o(),n(b,{key:0},[],64)):(o(),n("craft-option",{key:1,".choiceValue":s.value},[e("div",ve,[e("craft-indicator",{variant:s.value?"success":"error"},null,8,ye),e("span",ge,u(s.label),1)])],40,pe))],64))),128)),e("craft-callout",{slot:"after",variant:"info",appearance:"plain",class:"p-0",icon:"lightbulb",innerHTML:t(r)("This can be set to an environment variable with a boolean value ({examples})",{examples:"yes/no/true/false/on/off/0/1"})},null,8,ke),e("div",we,[c.value.live?(o(),n("ul",Ve,[e("li",null,u(c.value.live),1)])):f("",!0)])],40,fe),T(e("craft-input",{label:t(r)("Retry Duration"),id:"retry-duration",name:"retryDuration","onUpdate:modelValue":l[1]||(l[1]=s=>t(d).retryDuration=s),"has-feedback-for":c.value?.retryDuration?"error":"",inputmode:"numeric",size:"4",disabled:a.readOnly},[e("div",{slot:"help-text",innerHTML:t(r)("The number of seconds that the Retry-After HTTP header should be set to for 503 responses when the system is offline.")},null,8,_e),c.value?.retryDuration?(o(),n("ul",Se,[e("li",null,u(c.value.retryDuration),1)])):f("",!0)],8,xe),[[z,t(d).retryDuration]]),e("craft-combobox",{label:t(r)("Time Zone"),id:"time-zone",name:"timeZone",".modelValue":t(d).timeZone,onModelValueChanged:k,"has-feedback-for":c.value?.timeZone?"error":"",disabled:a.readOnly,"show-all-on-empty":""},[(o(!0),n(b,null,g(a.timezoneOptions,s=>(o(),n("craft-option",{key:s.value,".choiceValue":s.value},u(s.label)+u(s.data?.hint?` — ${s.data.hint}`:""),41,Te))),128)),l[9]||(l[9]=e("craft-callout",{slot:"after",variant:"info",appearance:"plain",class:"p-0",icon:"lightbulb"},[y(" This can be set to an environment variable with a value of a "),e("a",{href:"https://www.php.net/manual/en/timezones.php",rel:"noopener",target:"_blank"},"supported time zone"),y(". ")],-1)),c.value?.timeZone?(o(),n("ul",ze,[e("li",null,u(c.value.timeZone),1)])):f("",!0)],40,Le)]),t(_).edition.value>=t(H).Pro?(o(),n(b,{key:1},[l[10]||(l[10]=e("hr",null,null,-1)),e("div",Ce,[V(C,{label:t(r)("Site Icon"),name:"siteIcon",modelValue:t(d).siteIcon,"onUpdate:modelValue":l[2]||(l[2]=s=>t(d).siteIcon=s),"help-text":t(r)("Square SVG file recommended. The logo will be displayed at {size} by {size}.",{size:"32px"}),"thumbnail-size":32,disabled:a.readOnly,error:t(d).errors.siteIcon},null,8,["label","modelValue","help-text","disabled","error"]),V(C,{label:t(r)("Login Page Logo"),modelValue:t(d).siteLogo,"onUpdate:modelValue":l[3]||(l[3]=s=>t(d).siteLogo=s),name:"siteLogo","help-text":t(r)("SVG file recommended. The logo will be displayed at {size} wide.",{size:"288px"}),disabled:a.readOnly,"thumbnail-size":288,error:t(d).errors.siteLogo},null,8,["label","modelValue","help-text","disabled","error"])])],64)):f("",!0)])]),_:1},8,["title"])],32))}}),Ge=D(Oe,[["__scopeId","data-v-24796a08"]]);export{Ge as default}; diff --git a/resources/build/assets/CalloutReadOnly.css b/resources/build/assets/CalloutReadOnly.css index b05b3263a6f..271bbaa045e 100644 --- a/resources/build/assets/CalloutReadOnly.css +++ b/resources/build/assets/CalloutReadOnly.css @@ -1 +1 @@ -.system-info[data-v-f4725d04]{display:grid;grid-template-columns:2rem auto;gap:var(--c-spacing-md);align-items:center;color:currentColor}.system-info__icon[data-v-f4725d04]{aspect-ratio:1}[data-v-f4725d04] svg{fill:currentColor;max-width:100%;height:auto}.nav-indicator[data-v-c3702d23]{--nav-item-indicator-size: .25rem ;display:inline-flex;width:var(--nav-item-indicator-size);border-radius:var(--c-radius-full);aspect-ratio:1;background-color:currentcolor}.nav-indicator[active][data-v-c3702d23]{--nav-item-indicator-size: .375rem }.edition-logo[data-v-f8b4ece7]{-webkit-user-select:none;user-select:none;border:1px solid currentColor;border-radius:3px;display:inline-flex;box-sizing:content-box;font-size:11px;padding-block:6px;padding-inline:7px 5px;line-height:8px;font-weight:600;letter-spacing:1.7px;text-transform:uppercase}.dev-mode[data-v-52fa7a33]{padding:calc(var(--spacing) * 2);text-align:center;background-image:repeating-linear-gradient(-45deg,transparent,transparent 12px,var(--color-yellow-400) 12px,var(--color-yellow-400) 20px);background-color:var(--color-slate-900)}.cp-sidebar[data-v-22a18951]{height:100%;width:var(--global-sidebar-width);background-color:var(--c-bg-overlay);display:grid;grid-template-rows:minmax(0,auto) 1fr minmax(0,auto)}.cp-sidebar[data-mode=docked][data-v-22a18951]{position:relative;transform:0}.cp-sidebar[data-mode=floating][data-v-22a18951]{position:fixed;inset-block-start:0;inset-block-end:0;inset-inline-start:0;inset-inline-end:auto;border-radius:0 var(--c-radius-md) var(--c-radius-md) 0;box-shadow:var(--c-shadow-lg);transform:translate(0);max-width:90%;z-index:100;transition:transform .2s cubic-bezier(0,.55,.45,1)}.cp-sidebar[data-visibility=hidden][data-v-22a18951]{transform:translate(-100%)}.cp-sidebar__body[data-v-22a18951]{padding-block:var(--c-spacing-md);padding-inline:var(--c-spacing-md)}.sidebar-header[data-v-22a18951]{padding-block:var(--c-spacing-md);padding-inline:var(--c-spacing-md);display:flex;justify-content:space-between;align-items:center}.cp-sidebar__body[data-v-22a18951]{overflow-y:scroll;background:linear-gradient(#fff 30%,#fff0) center top,linear-gradient(#fff0,#fff 70%) center bottom,linear-gradient(to bottom,#0000001a,#0000) center top,linear-gradient(to top,#0000001a,#0000) center bottom;background-repeat:no-repeat;background-size:100% 2.5rem,100% 2.5rem,100% .5rem,100% .5rem;background-attachment:local,local,scroll,scroll}pre[data-v-0fbfca53]{font-size:.7rem;padding:var(--c-spacing-md);border:1px solid var(--color-slate-400);background-color:var(--color-slate-50);border-radius:var(--c-radius-md);overflow:auto}.cp-link[data-v-cec492d6]{justify-content:center;gap:var(--c-spacing-sm);align-items:center;text-decoration:none}.cp-link--button[data-v-cec492d6]{cursor:pointer;font:inherit;border:1px solid var(--c-button-border, var(--c-button-default-border));background-color:var(--c-button-bg, var(--c-button-default-bg));border-radius:var(--c-button-radius, var(--c-radius-sm));color:var(--c-button-fg, inherit);padding-inline:var(--c-button-spacing-inline, var(--c-spacing-md));padding-block:0;width:auto;min-height:var(--c-button-height, var(--c-size-control-md));min-width:var(--c-button-width, var(--c-size-control-md));white-space:nowrap}@media(hover:hover){.cp-link--button[data-v-cec492d6]:hover{background-color:var(--c-button-bg-hover, var(--c-button-default-bg-hover));border-color:var(--c-button-border-hover, var(--c-button-default-border-hover));color:var(--c-button-fg-hover, var(--c-button-default-fg-hover))}}.cp-link--default[data-v-cec492d6]{--c-button-bg: var(--c-button-default-bg);--c-button-bg-hover: var(--c-button-default-bg-hover);--c-button-border: var(--c-button-default-border);--c-button-border-hover: var(--c-button-default-border-hover);--c-button-fg: var(--c-button-default-fg);--c-button-fg-hover: var(--c-button-default-fg-hover)}.cp-link--primary[data-v-cec492d6]{--c-button-bg: var(--c-button-primary-bg);--c-button-bg-hover: var(--c-button-primary-bg-hover);--c-button-border: var(--c-button-primary-border);--c-button-border-hover: var(--c-button-primary-border-hover);--c-button-fg: var(--c-button-primary-fg);--c-button-fg-hover: var(--c-button-primary-fg-hover)}.cp-link--danger[data-v-cec492d6]{--c-button-bg: var(--c-button-danger-bg);--c-button-bg-hover: var(--c-button-danger-bg-hover);--c-button-border: var(--c-button-danger-border);--c-button-border-hover: var(--c-button-danger-border-hover);--c-button-fg: var(--c-button-danger-fg);--c-button-fg-hover: var(--c-button-danger-fg-hover)}.breadcrumbs[data-v-4d21c399]{display:flex}.breadcrumb-item--active[data-v-4d21c399]{font-weight:700;color:currentColor}.separator[data-v-4d21c399]{padding:0 var(--c-spacing-md)}.cp[data-v-27b42e26]{display:grid}.cp__main[data-v-27b42e26]{container-type:size}.cp__header[data-v-27b42e26]{color:var(--color-slate-200);background-color:var(--color-slate-950)}.container[data-v-27b42e26]{max-width:var(--global-content-width);margin:0 auto;padding-inline:var(--c-spacing-lg)}.container--full[data-v-27b42e26]{max-width:none}@media screen and (min-width:1024px){.cp[data-v-27b42e26]{grid-template-columns:var(--c67f2d64) minmax(0,1fr);grid-template-areas:"header header" "sidebar main";grid-template-rows:auto 1fr;min-height:100vh}.cp__header[data-v-27b42e26]{grid-area:header}.cp__sidebar[data-v-27b42e26]{grid-area:sidebar}.cp__main[data-v-27b42e26]{grid-area:main}} +.system-info[data-v-f4725d04]{display:grid;grid-template-columns:2rem auto;gap:var(--c-spacing-md);align-items:center;color:currentColor}.system-info__icon[data-v-f4725d04]{aspect-ratio:1}[data-v-f4725d04] svg{fill:currentColor;max-width:100%;height:auto}.nav-indicator[data-v-c3702d23]{--nav-item-indicator-size: .25rem ;display:inline-flex;width:var(--nav-item-indicator-size);border-radius:var(--c-radius-full);aspect-ratio:1;background-color:currentcolor}.nav-indicator[active][data-v-c3702d23]{--nav-item-indicator-size: .375rem }.edition-logo[data-v-f8b4ece7]{-webkit-user-select:none;user-select:none;border:1px solid currentColor;border-radius:3px;display:inline-flex;box-sizing:content-box;font-size:11px;padding-block:6px;padding-inline:7px 5px;line-height:8px;font-weight:600;letter-spacing:1.7px;text-transform:uppercase}.dev-mode[data-v-52fa7a33]{padding:calc(var(--spacing) * 2);text-align:center;background-image:repeating-linear-gradient(-45deg,transparent,transparent 12px,var(--color-yellow-400) 12px,var(--color-yellow-400) 20px);background-color:var(--color-slate-900)}.cp-sidebar[data-v-7f5f0148]{height:100%;width:var(--global-sidebar-width);background-color:var(--c-bg-overlay);display:grid;grid-template-rows:minmax(0,auto) 1fr minmax(0,auto)}.cp-sidebar[data-mode=docked][data-v-7f5f0148]{position:relative;transform:0}.cp-sidebar[data-mode=floating][data-v-7f5f0148]{position:fixed;inset-block-start:0;inset-block-end:0;inset-inline-start:0;inset-inline-end:auto;border-radius:0 var(--c-radius-md) var(--c-radius-md) 0;box-shadow:var(--c-shadow-lg);transform:translate(0);max-width:90%;z-index:100;transition:transform .2s cubic-bezier(0,.55,.45,1)}.cp-sidebar[data-visibility=hidden][data-v-7f5f0148]{transform:translate(-100%)}.cp-sidebar__body[data-v-7f5f0148]{padding-block:var(--c-spacing-md);padding-inline:var(--c-spacing-md)}.sidebar-header[data-v-7f5f0148]{padding-block:var(--c-spacing-md);padding-inline:var(--c-spacing-md);display:flex;justify-content:space-between;align-items:center}.cp-sidebar__body[data-v-7f5f0148]{overflow-y:scroll;background:linear-gradient(#fff 30%,#fff0) center top,linear-gradient(#fff0,#fff 70%) center bottom,linear-gradient(to bottom,#0000001a,#0000) center top,linear-gradient(to top,#0000001a,#0000) center bottom;background-repeat:no-repeat;background-size:100% 2.5rem,100% 2.5rem,100% .5rem,100% .5rem;background-attachment:local,local,scroll,scroll}pre[data-v-0fbfca53]{font-size:.7rem;padding:var(--c-spacing-md);border:1px solid var(--color-slate-400);background-color:var(--color-slate-50);border-radius:var(--c-radius-md);overflow:auto}.cp-link[data-v-cec492d6]{justify-content:center;gap:var(--c-spacing-sm);align-items:center;text-decoration:none}.cp-link--button[data-v-cec492d6]{cursor:pointer;font:inherit;border:1px solid var(--c-button-border, var(--c-button-default-border));background-color:var(--c-button-bg, var(--c-button-default-bg));border-radius:var(--c-button-radius, var(--c-radius-sm));color:var(--c-button-fg, inherit);padding-inline:var(--c-button-spacing-inline, var(--c-spacing-md));padding-block:0;width:auto;min-height:var(--c-button-height, var(--c-size-control-md));min-width:var(--c-button-width, var(--c-size-control-md));white-space:nowrap}@media(hover:hover){.cp-link--button[data-v-cec492d6]:hover{background-color:var(--c-button-bg-hover, var(--c-button-default-bg-hover));border-color:var(--c-button-border-hover, var(--c-button-default-border-hover));color:var(--c-button-fg-hover, var(--c-button-default-fg-hover))}}.cp-link--default[data-v-cec492d6]{--c-button-bg: var(--c-button-default-bg);--c-button-bg-hover: var(--c-button-default-bg-hover);--c-button-border: var(--c-button-default-border);--c-button-border-hover: var(--c-button-default-border-hover);--c-button-fg: var(--c-button-default-fg);--c-button-fg-hover: var(--c-button-default-fg-hover)}.cp-link--primary[data-v-cec492d6]{--c-button-bg: var(--c-button-primary-bg);--c-button-bg-hover: var(--c-button-primary-bg-hover);--c-button-border: var(--c-button-primary-border);--c-button-border-hover: var(--c-button-primary-border-hover);--c-button-fg: var(--c-button-primary-fg);--c-button-fg-hover: var(--c-button-primary-fg-hover)}.cp-link--danger[data-v-cec492d6]{--c-button-bg: var(--c-button-danger-bg);--c-button-bg-hover: var(--c-button-danger-bg-hover);--c-button-border: var(--c-button-danger-border);--c-button-border-hover: var(--c-button-danger-border-hover);--c-button-fg: var(--c-button-danger-fg);--c-button-fg-hover: var(--c-button-danger-fg-hover)}.breadcrumbs[data-v-4d21c399]{display:flex}.breadcrumb-item--active[data-v-4d21c399]{font-weight:700;color:currentColor}.separator[data-v-4d21c399]{padding:0 var(--c-spacing-md)}.cp[data-v-c43515f0]{display:grid}.cp__main[data-v-c43515f0]{container-type:size}.cp__header[data-v-c43515f0]{color:var(--color-slate-200);background-color:var(--color-slate-950)}.container[data-v-c43515f0]{max-width:var(--global-content-width);margin:0 auto;padding-inline:var(--c-spacing-lg)}.container--full[data-v-c43515f0]{max-width:none}@media screen and (min-width:1024px){.cp[data-v-c43515f0]{grid-template-columns:var(--v52e1a9c1) minmax(0,1fr);grid-template-areas:"header header" "sidebar main";grid-template-rows:auto 1fr;min-height:100vh}.cp__header[data-v-c43515f0]{grid-area:header}.cp__sidebar[data-v-c43515f0]{grid-area:sidebar}.cp__main[data-v-c43515f0]{grid-area:main}} diff --git a/resources/build/assets/SettingsGeneralPage.css b/resources/build/assets/SettingsGeneralPage.css index c9be3087d80..1f328de744b 100644 --- a/resources/build/assets/SettingsGeneralPage.css +++ b/resources/build/assets/SettingsGeneralPage.css @@ -1 +1 @@ -.preview[data-v-e8396b7f]{display:flex;width:var(--c33cc0a6)}.stage[data-v-5eec89a4]{padding:var(--c-spacing-md)}.preview[data-v-5eec89a4]{border:1px solid var(--c-color-neutral-border-subtle)}.preview--icon[data-v-5eec89a4]{aspect-ratio:1;width:32px}.preview--logo[data-v-5eec89a4]{aspect-ratio:16/9;width:288px;height:auto} +.preview[data-v-e8396b7f]{display:flex;width:var(--c33cc0a6)}.stage[data-v-24796a08]{padding:var(--c-spacing-md)}.preview[data-v-24796a08]{border:1px solid var(--c-color-neutral-border-subtle)}.preview--icon[data-v-24796a08]{aspect-ratio:1;width:32px}.preview--logo[data-v-24796a08]{aspect-ratio:16/9;width:288px;height:auto} diff --git a/resources/build/cp2.js b/resources/build/cp2.js index 1e4c509b828..2d739a0fc45 100644 --- a/resources/build/cp2.js +++ b/resources/build/cp2.js @@ -82,4 +82,4 @@ import{a as Rl,i as qp,b as jp,m as Zy,_ as si}from"./index2.js";import"./nav-it 0% { transform: rotate(0deg); } 100% { transform: rotate(360deg); } } - `,document.head.appendChild(t)},ox=()=>{Rt&&(Rt.style.display="")},ax=()=>{Rt&&(Rt.style.display="none")},Bt={configure:ZO,isStarted:jy,done:ex,set:la,remove:Wy,start:Hy,status:Yr,show:ox,hide:ax},lx=class{constructor(){this.hideCount=0}start(){Bt.start()}reveal(e=!1){this.hideCount=Math.max(0,this.hideCount-1),(e||this.hideCount===0)&&Bt.show()}hide(){this.hideCount++,Bt.hide()}set(e){Bt.set(Math.max(0,Math.min(1,e)))}finish(){Bt.done()}reset(){Bt.set(0)}remove(){Bt.done(),Bt.remove()}isStarted(){return Bt.isStarted()}getStatus(){return Bt.status}},pt=new lx;pt.reveal;pt.hide;function cx(e){document.addEventListener("inertia:start",t=>fx(t,e)),document.addEventListener("inertia:progress",ux)}function fx(e,t){e.detail.visit.showProgress||pt.hide();const r=setTimeout(()=>pt.start(),t);document.addEventListener("inertia:finish",n=>hx(n,r),{once:!0})}function ux(e){pt.isStarted()&&e.detail.progress?.percentage&&pt.set(Math.max(pt.getStatus(),e.detail.progress.percentage/100*.9))}function hx(e,t){clearTimeout(t),pt.isStarted()&&(e.detail.visit.completed?pt.finish():e.detail.visit.interrupted?pt.reset():e.detail.visit.cancelled&&pt.remove())}function px({delay:e=250,color:t="#29d",includeCSS:r=!0,showSpinner:n=!1}={}){cx(e),Bt.configure({showSpinner:n,includeCSS:r,color:t})}var je=new XO;let es=Rl.create(),Gy=(e,t)=>`${e.method}:${e.baseURL??t.defaults.baseURL??""}${e.url}`,zy=e=>e.status===204&&e.headers["precognition-success"]==="true";const Oo={},Hr={get:(e,t={},r={})=>pi(hi("get",e,t,r)),post:(e,t={},r={})=>pi(hi("post",e,t,r)),patch:(e,t={},r={})=>pi(hi("patch",e,t,r)),put:(e,t={},r={})=>pi(hi("put",e,t,r)),delete:(e,t={},r={})=>pi(hi("delete",e,t,r)),use(e){return es=e,Hr},axios(){return es},fingerprintRequestsUsing(e){return Gy=e===null?()=>null:e,Hr},determineSuccessUsing(e){return zy=e,Hr}},hi=(e,t,r,n)=>({url:t,method:e,...n,...["get","delete"].includes(e)?{params:dc({},r,n?.params)}:{data:dc({},r,n?.data)}}),pi=(e={})=>{const t=[dx,mx,yx].reduce((r,n)=>n(r),e);return(t.onBefore??(()=>!0))()===!1?Promise.resolve(null):((t.onStart??(()=>null))(),es.request(t).then(async r=>{t.precognitive&&Dp(r);const n=r.status;let i=r;return t.precognitive&&t.onPrecognitionSuccess&&zy(i)&&(i=await Promise.resolve(t.onPrecognitionSuccess(i)??i)),t.onSuccess&&gx(n)&&(i=await Promise.resolve(t.onSuccess(i)??i)),(Lp(t,n)??(o=>o))(i)??i},r=>vx(r)?Promise.reject(r):(t.precognitive&&Dp(r.response),(Lp(t,r.response.status)??((i,s)=>Promise.reject(s)))(r.response,r))).finally(t.onFinish??(()=>null)))},dx=e=>{const t=e.only??e.validate;return{...e,timeout:e.timeout??es.defaults.timeout??3e4,precognitive:e.precognitive!==!1,fingerprint:typeof e.fingerprint>"u"?Gy(e,es):e.fingerprint,headers:{...e.headers,"Content-Type":bx(e),...e.precognitive!==!1?{Precognition:!0}:{},...t?{"Precognition-Validate-Only":Array.from(t).join()}:{}}}},gx=e=>e>=200&&e<300,mx=e=>(typeof e.fingerprint!="string"||(Oo[e.fingerprint]?.abort(),delete Oo[e.fingerprint]),e),yx=e=>typeof e.fingerprint!="string"||e.signal||e.cancelToken||!e.precognitive?e:(Oo[e.fingerprint]=new AbortController,{...e,signal:Oo[e.fingerprint].signal}),Dp=e=>{if(e.headers?.precognition!=="true")throw Error("Did not receive a Precognition response. Ensure you have the Precognition middleware in place for the route.")},vx=e=>!jp(e)||typeof e.response?.status!="number"||qp(e),Lp=(e,t)=>({401:e.onUnauthorized,403:e.onForbidden,404:e.onNotFound,409:e.onConflict,422:e.onValidationError,423:e.onLocked})[t],bx=e=>e.headers?.["Content-Type"]??e.headers?.["Content-type"]??e.headers?.["content-type"]??(Jy(e.data)?"multipart/form-data":"application/json"),Jy=e=>qf(e)||typeof e=="object"&&e!==null&&Object.values(e).some(t=>Jy(t)),qf=e=>typeof File<"u"&&e instanceof File||e instanceof Blob||typeof FileList<"u"&&e instanceof FileList&&e.length>0,Sx=(e,t={})=>{const r={errorsChanged:[],touchedChanged:[],validatingChanged:[],validatedChanged:[]};let n=!1,i=!1;const s=C=>C!==i?(i=C,r.validatingChanged):[];let o=[];const a=C=>{const _=[...new Set(C)];return o.length!==_.length||!_.every($=>o.includes($))?(o=_,r.validatedChanged):[]},l=()=>o.filter(C=>typeof f[C]>"u");let u=[];const c=C=>{const _=[...new Set(C)];return u.length!==_.length||!_.every($=>u.includes($))?(u=_,r.touchedChanged):[]};let f={};const g=C=>{const _=wx(C);return Jr(f,_)?[]:(f=_,r.errorsChanged)},m=C=>{const _={...f};return delete _[Ni(C)],g(_)},h=()=>Object.keys(f).length>0;let p=1500;const y=C=>{p=C,x.cancel(),x=T()};let S=t,w=null,d=[],b=null;const T=()=>dC(C=>{e({get:(_,$={},k={})=>Hr.get(_,P($),E(k,C,$)),post:(_,$={},k={})=>Hr.post(_,P($),E(k,C,$)),patch:(_,$={},k={})=>Hr.patch(_,P($),E(k,C,$)),put:(_,$={},k={})=>Hr.put(_,P($),E(k,C,$)),delete:(_,$={},k={})=>Hr.delete(_,P($),E(k,C,$))}).catch(_=>qp(_)||jp(_)&&_.response?.status===422?null:Promise.reject(_))},p,{leading:!0,trailing:!0});let x=T();const E=(C,_,$={})=>{const k={...C,..._},W=Array.from(k.only??k.validate??u);return{..._,...Zy(C,_),only:W,timeout:k.timeout??5e3,onValidationError:(D,V)=>([...a([...o,...W]),...g(dc(Fh({...f},W),D.data.errors))].forEach(F=>F()),k.onValidationError?k.onValidationError(D,V):Promise.reject(V)),onSuccess:D=>(a([...o,...W]).forEach(V=>V()),k.onSuccess?k.onSuccess(D):D),onPrecognitionSuccess:D=>([...a([...o,...W]),...g(Fh({...f},W))].forEach(V=>V()),k.onPrecognitionSuccess?k.onPrecognitionSuccess(D):D),onBefore:()=>k.onBeforeValidation&&k.onBeforeValidation({data:$,touched:u},{data:S,touched:d})===!1||(k.onBefore||(()=>!0))()===!1?!1:(b=u,w=$,!0),onStart:()=>{s(!0).forEach(D=>D()),(k.onStart??(()=>null))()},onFinish:()=>{s(!1).forEach(D=>D()),d=b,S=w,b=w=null,(k.onFinish??(()=>null))()}}},O=(C,_,$)=>{if(typeof C>"u"){const k=Array.from($?.only??$?.validate??[]);c([...u,...k]).forEach(W=>W()),x($??{});return}if(qf(_)&&!n){console.warn('Precognition file validation is not active. Call the "validateFiles" function on your form to enable it.');return}C=Ni(C),Ht(S,C)!==_&&(c([C,...u]).forEach(k=>k()),x($??{}))},P=C=>n===!1?bc(C):C,I={touched:()=>u,validate(C,_,$){return typeof C=="object"&&!("target"in C)&&($=C,C=_=void 0),O(C,_,$),I},touch(C){const _=Array.isArray(C)?C:[Ni(C)];return c([...u,..._]).forEach($=>$()),I},validating:()=>i,valid:l,errors:()=>f,hasErrors:h,setErrors(C){return g(C).forEach(_=>_()),I},forgetError(C){return m(C).forEach(_=>_()),I},defaults(C){return t=C,S=C,I},reset(...C){if(C.length===0)c([]).forEach(_=>_());else{const _=[...u];C.forEach($=>{_.includes($)&&_.splice(_.indexOf($),1),er(S,$,Ht(t,$))}),c(_).forEach($=>$())}return I},setTimeout(C){return y(C),I},on(C,_){return r[C].push(_),I},validateFiles(){return n=!0,I},withoutFileValidation(){return n=!1,I}};return I},_x=e=>Object.keys(e).reduce((t,r)=>({...t,[r]:Array.isArray(e[r])?e[r][0]:e[r]}),{}),wx=e=>Object.keys(e).reduce((t,r)=>({...t,[r]:typeof e[r]=="string"?[e[r]]:e[r]}),{}),Ni=e=>typeof e!="string"?e.target.name:e,bc=e=>{const t={...e};return Object.keys(t).forEach(r=>{const n=t[r];if(n!==null){if(qf(n)){delete t[r];return}if(Array.isArray(n)){t[r]=Object.values(bc({...n}));return}if(typeof n=="object"){t[r]=bc(t[r]);return}}}),t};var Ex={created(){if(!this.$options.remember)return;Array.isArray(this.$options.remember)&&(this.$options.remember={data:this.$options.remember}),typeof this.$options.remember=="string"&&(this.$options.remember={data:[this.$options.remember]}),typeof this.$options.remember.data=="string"&&(this.$options.remember={data:[this.$options.remember.data]});const e=this.$options.remember.key instanceof Function?this.$options.remember.key.call(this):this.$options.remember.key,t=je.restore(e),r=this.$options.remember.data.filter(i=>!(this[i]!==null&&typeof this[i]=="object"&&this[i].__rememberable===!1)),n=i=>this[i]!==null&&typeof this[i]=="object"&&typeof this[i].__remember=="function"&&typeof this[i].__restore=="function";r.forEach(i=>{this[i]!==void 0&&t!==void 0&&t[i]!==void 0&&(n(i)?this[i].__restore(t[i]):this[i]=t[i]),this.$watch(i,()=>{je.remember(r.reduce((s,o)=>({...s,[o]:We(n(o)?this[o].__remember():this[o])}),{}),e)},{immediate:!0,deep:!0})})}},Px=Ex,Ol=null,xl=!1;function Tx(e){if(xl)return;Ol===null&&(xl=!0,Ol=new Set(Object.keys(Qy({}))),xl=!1);const t=Object.keys(e).filter(r=>Ol.has(r));t.length>0&&console.error(`[Inertia] useForm() data contains field(s) that conflict with form properties: ${t.map(r=>`"${r}"`).join(", ")}. These fields will be overwritten by form methods/properties. Please rename these fields.`)}function Qy(...e){let{rememberKey:t,data:r,precognitionEndpoint:n}=Al.parseUseFormArguments(...e);const i=t?je.restore(t):null;let s=We(typeof r=="function"?r():r);Tx(s);let o=null,a,l=h=>h,u=null,c=[],f=!1;const m=Yn({...i?i.data:We(s),isDirty:!1,errors:i?i.errors:{},hasErrors:!1,processing:!1,progress:null,wasSuccessful:!1,recentlySuccessful:!1,withPrecognition(...h){n=Al.createWayfinderCallback(...h);const p=this;let y=!1;const S=Sx(d=>{const{method:b,url:T}=n(),x=We(l(this.data()));return d[b](T,x)},We(s));u=S,S.on("validatingChanged",()=>{p.validating=S.validating()}).on("validatedChanged",()=>{p.__valid=S.valid()}).on("touchedChanged",()=>{p.__touched=S.touched()}).on("errorsChanged",()=>{const d=y?S.errors():_x(S.errors());this.errors={},this.setError(d),p.__valid=S.valid()});const w=(d,b)=>(b(d),d);return Object.assign(p,{__touched:[],__valid:[],validating:!1,validator:()=>S,withAllErrors:()=>w(p,()=>y=!0),valid:d=>p.__valid.includes(d),invalid:d=>d in this.errors,setValidationTimeout:d=>w(p,()=>S.setTimeout(d)),validateFiles:()=>w(p,()=>S.validateFiles()),withoutFileValidation:()=>w(p,()=>S.withoutFileValidation()),touch:(d,...b)=>(Array.isArray(d)?S.touch(d):typeof d=="string"?S.touch([d,...b]):S.touch(d),p),touched:d=>typeof d=="string"?p.__touched.includes(d):p.__touched.length>0,validate:(d,b)=>{if(typeof d=="object"&&!("target"in d)&&(b=d,d=void 0),d===void 0)S.validate(b);else{const T=Ni(d),x=l(this.data());S.validate(T,Ht(x,T),b)}return p},setErrors:d=>w(p,()=>this.setError(d)),forgetError:d=>w(p,()=>this.clearErrors(Ni(d)))}),p},data(){return Object.keys(s).reduce((h,p)=>er(h,p,Ht(this,p)),{})},transform(h){return l=h,this},defaults(h,p){if(typeof r=="function")throw new Error("You cannot call `defaults()` when using a function to define your form data.");return f=!0,typeof h>"u"?(s=We(this.data()),this.isDirty=!1):s=typeof h=="string"?er(We(s),h,p):Object.assign({},We(s),h),u?.defaults(s),this},reset(...h){const p=We(typeof r=="function"?r():s),y=We(p);return h.length===0?(s=y,Object.assign(this,p)):h.filter(S=>vy(y,S)).forEach(S=>{er(s,S,Ht(y,S)),er(this,S,Ht(p,S))}),u?.reset(...h),this},setError(h,p){const y=typeof h=="string"?{[h]:p}:h;return Object.assign(this.errors,y),this.hasErrors=Object.keys(this.errors).length>0,u?.setErrors(y),this},clearErrors(...h){return this.errors=Object.keys(this.errors).reduce((p,y)=>({...p,...h.length>0&&!h.includes(y)?{[y]:this.errors[y]}:{}}),{}),this.hasErrors=Object.keys(this.errors).length>0,u&&(h.length===0?u.setErrors({}):h.forEach(u.forgetError)),this},resetAndClearErrors(...h){return this.reset(...h),this.clearErrors(...h),this},submit(...h){const{method:p,url:y,options:S}=Al.parseSubmitArguments(h,n);f=!1;const w={...S,onCancelToken:b=>{if(o=b,S.onCancelToken)return S.onCancelToken(b)},onBefore:b=>{if(this.wasSuccessful=!1,this.recentlySuccessful=!1,clearTimeout(a),S.onBefore)return S.onBefore(b)},onStart:b=>{if(this.processing=!0,S.onStart)return S.onStart(b)},onProgress:b=>{if(this.progress=b??null,S.onProgress)return S.onProgress(b)},onSuccess:async b=>{this.processing=!1,this.progress=null,this.clearErrors(),this.wasSuccessful=!0,this.recentlySuccessful=!0,a=setTimeout(()=>this.recentlySuccessful=!1,ts.get("form.recentlySuccessfulDuration"));const T=S.onSuccess?await S.onSuccess(b):null;return f||(s=We(this.data()),this.isDirty=!1),T},onError:b=>{if(this.processing=!1,this.progress=null,this.clearErrors().setError(b),S.onError)return S.onError(b)},onCancel:()=>{if(this.processing=!1,this.progress=null,S.onCancel)return S.onCancel()},onFinish:b=>{if(this.processing=!1,this.progress=null,o=null,S.onFinish)return S.onFinish(b)}},d=l(this.data());p==="delete"?je.delete(y,{...w,data:d}):je[p](y,d,w)},get(h,p){this.submit("get",h,p)},post(h,p){this.submit("post",h,p)},put(h,p){this.submit("put",h,p)},patch(h,p){this.submit("patch",h,p)},delete(h,p){this.submit("delete",h,p)},cancel(){o&&o.cancel()},dontRemember(...h){return c=h,this},__rememberable:t===null,__remember(){const h=this.data();if(c.length>0){const p={...h};return c.forEach(y=>delete p[y]),{data:p,errors:this.errors}}return{data:h,errors:this.errors}},__restore(h){Object.assign(this,h.data),this.setError(h.errors)}});return fn(m,h=>{m.isDirty=!Jr(m.data(),s);const p=je.restore(t),y=We(h.__remember());t&&!Jr(p,y)&&je.remember(y,t)},{immediate:!0,deep:!0}),n?m.withPrecognition(n):m}var bt=tr(void 0),Ie=tr(),Il=Ac(null),Ds=tr(void 0),Sc,Ax=wn({name:"Inertia",props:{initialPage:{type:Object,required:!0},initialComponent:{type:Object,required:!1},resolveComponent:{type:Function,required:!1},titleCallback:{type:Function,required:!1,default:e=>e},onHeadUpdate:{type:Function,required:!1,default:()=>()=>{}}},setup({initialPage:e,initialComponent:t,resolveComponent:r,titleCallback:n,onHeadUpdate:i}){bt.value=t?Xs(t):void 0,Ie.value={...e,flash:e.flash??{}},Ds.value=void 0;const s=typeof window>"u";return Sc=YO(s,n||(o=>o),i||(()=>{})),s||(je.init({initialPage:e,resolveComponent:r,swapComponent:async o=>{bt.value=Xs(o.component),Ie.value=o.page,Ds.value=o.preserveState?Ds.value:Date.now()},onFlash:o=>{Ie.value={...Ie.value,flash:o}}}),je.on("navigate",()=>Sc.forceUpdate())),()=>{if(bt.value){bt.value.inheritAttrs=!!bt.value.inheritAttrs;const o=nr(bt.value,{...Ie.value.props,key:Ds.value});return Il.value&&(bt.value.layout=Il.value,Il.value=null),bt.value.layout?typeof bt.value.layout=="function"?bt.value.layout(nr,o):(Array.isArray(bt.value.layout)?bt.value.layout:[bt.value.layout]).concat(o).reverse().reduce((a,l)=>(l.inheritAttrs=!!l.inheritAttrs,nr(l,{...Ie.value.props},()=>a))):o}}}}),kp=Ax,Bp={install(e){je.form=Qy,Object.defineProperty(e.config.globalProperties,"$inertia",{get:()=>je}),Object.defineProperty(e.config.globalProperties,"$page",{get:()=>Ie.value}),Object.defineProperty(e.config.globalProperties,"$headManager",{get:()=>Sc}),e.mixin(Px)}};function Bx(){return Yn({props:_e(()=>Ie.value?.props),url:_e(()=>Ie.value?.url),component:_e(()=>Ie.value?.component),version:_e(()=>Ie.value?.version),clearHistory:_e(()=>Ie.value?.clearHistory),deferredProps:_e(()=>Ie.value?.deferredProps),mergeProps:_e(()=>Ie.value?.mergeProps),prependProps:_e(()=>Ie.value?.prependProps),deepMergeProps:_e(()=>Ie.value?.deepMergeProps),matchPropsOn:_e(()=>Ie.value?.matchPropsOn),rememberedState:_e(()=>Ie.value?.rememberedState),encryptHistory:_e(()=>Ie.value?.encryptHistory),flash:_e(()=>Ie.value?.flash)})}async function Cx({id:e="app",resolve:t,setup:r,title:n,progress:i={},page:s,render:o,defaults:a={}}){ts.replace(a);const l=typeof window>"u",u=ts.get("future.useScriptElementForInitialPage"),c=s||MO(e,u),f=h=>Promise.resolve(t(h)).then(p=>p.default||p);let g=[];const m=await Promise.all([f(c.component),je.decryptHistory().catch(()=>{})]).then(([h])=>{const p={initialPage:c,initialComponent:h,resolveComponent:f,titleCallback:n};return r(l?{el:null,App:kp,props:{...p,onHeadUpdate:w=>g=w},plugin:Bp}:{el:document.getElementById(e),App:kp,props:p,plugin:Bp})});if(!l&&i&&px(i),l&&o){const h=()=>u?[nr("script",{"data-page":e,type:"application/json",innerHTML:JSON.stringify(c).replace(/\//g,"\\/")}),nr("div",{id:e,innerHTML:m?o(m):""})]:nr("div",{id:e,"data-page":JSON.stringify(c),innerHTML:m?o(m):""}),p=await o(Xc({render:()=>h()}));return{head:g,body:p}}}var qx=wn({name:"Deferred",props:{data:{type:[String,Array],required:!0}},render(){const e=Array.isArray(this.$props.data)?this.$props.data:[this.$props.data];if(!this.$slots.fallback)throw new Error("`` requires a `