diff --git a/admin/src/components/form/fields/SwitchField.vue b/admin/src/components/form/fields/SwitchField.vue
index a569ec5..b7ebe28 100644
--- a/admin/src/components/form/fields/SwitchField.vue
+++ b/admin/src/components/form/fields/SwitchField.vue
@@ -34,12 +34,12 @@ function toggle(): void {
:aria-invalid="invalid ? 'true' : undefined"
:aria-describedby="describedBy || undefined"
:class="on ? 'bg-primary' : 'bg-border-strong'"
- class="relative h-[26px] w-11 shrink-0 rounded-pill transition-colors duration-150 ease-out"
+ class="relative h-[26px] w-[44px] shrink-0 rounded-pill transition-colors duration-150 ease-out"
@click="toggle"
>
diff --git a/modules/boardwalk/dist/assets/index-BhDUy2Lr.css b/modules/boardwalk/dist/assets/index-BhDUy2Lr.css
new file mode 100644
index 0000000..ae34259
--- /dev/null
+++ b/modules/boardwalk/dist/assets/index-BhDUy2Lr.css
@@ -0,0 +1 @@
+@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-translate-x:0;--tw-translate-y:0;--tw-translate-z:0;--tw-border-style:solid;--tw-leading:initial;--tw-font-weight:initial;--tw-tracking:initial;--tw-ordinal:initial;--tw-slashed-zero:initial;--tw-numeric-figure:initial;--tw-numeric-spacing:initial;--tw-numeric-fraction:initial;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--tw-outline-style:solid;--tw-blur:initial;--tw-brightness:initial;--tw-contrast:initial;--tw-grayscale:initial;--tw-hue-rotate:initial;--tw-invert:initial;--tw-opacity:initial;--tw-saturate:initial;--tw-sepia:initial;--tw-drop-shadow:initial;--tw-drop-shadow-color:initial;--tw-drop-shadow-alpha:100%;--tw-drop-shadow-size:initial;--tw-duration:initial;--tw-ease:initial}}}@layer theme{:root,:host{--font-sans:"DM Sans", ui-sans-serif, system-ui, sans-serif;--font-mono:"DM Mono", ui-monospace, monospace;--color-white:#fff;--spacing:.25rem;--font-weight-normal:400;--font-weight-medium:500;--font-weight-semibold:600;--font-weight-bold:700;--leading-tight:1.25;--ease-out:cubic-bezier(0, 0, .2, 1);--animate-spin:spin 1s linear infinite;--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4, 0, .2, 1);--default-font-family:var(--font-sans);--default-mono-font-family:var(--font-mono);--color-bg:var(--c-bg);--color-surface:var(--c-surface);--color-subtle:var(--c-subtle);--color-border:var(--c-border);--color-border-strong:var(--c-border-strong);--color-text:var(--c-text);--color-muted:var(--c-muted);--color-placeholder:var(--c-placeholder);--color-primary:var(--c-primary);--color-on-primary:var(--c-on-primary);--color-danger:var(--c-danger);--color-danger-soft:var(--c-danger-soft);--color-ok-bg:var(--c-ok-bg);--color-ok-text:var(--c-ok-text);--color-hover:var(--c-hover);--color-sel:var(--c-sel);--color-skel:var(--c-skel);--color-overlay:var(--c-overlay);--color-side:var(--c-side);--color-side-border:var(--c-side-border);--color-accent:#fcd34d;--color-on-accent:#1b2540;--color-accent-soft:#fcd34d24;--color-side-text:#c3cbda;--color-side-hover:#ffffff14;--radius-control:10px;--radius-card:16px;--radius-modal:20px;--radius-inner:12px;--radius-tab:9px;--radius-checkbox:5px;--radius-pager:8px;--radius-pill:999px;--spacing-button:42px;--spacing-input:44px;--spacing-header:64px;--spacing-nav:40px;--spacing-row:54px;--spacing-row-head:44px;--spacing-pager:34px;--spacing-rail:96px;--spacing-panel:224px}}@layer base{*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;tab-size:4;line-height:1.5;font-family:var(--default-font-family,ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--default-mono-font-family,ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-variation-settings:var(--default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring{outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab,red,red)){::placeholder{color:color-mix(in oklab,currentcolor 50%,transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){appearance:button}::file-selector-button{appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}html{font-family:var(--font-sans);color:var(--c-text);background:var(--c-bg);font-size:14px;line-height:1.5}body{min-height:100vh;margin:0}a:focus-visible,button:focus-visible,[role=button]:focus-visible,[tabindex]:focus-visible{outline:3px solid var(--c-ring);outline-offset:2px}input:focus-visible,select:focus-visible,textarea:focus-visible{border-color:var(--c-primary);box-shadow:0 0 0 3px var(--c-ring);outline:none}input::placeholder,textarea::placeholder{color:var(--c-placeholder)}}@layer components{.bg-overlay[data-state=open]{animation:.2s ease-out summer-fade-in}[data-dialog-content][data-state=open],[role=alertdialog][data-state=open]{animation:.2s ease-out summer-dialog-in}.toast-enter-active{transition:opacity .2s ease-out,scale .2s ease-out}.toast-enter-from{opacity:0;scale:.98}.summer-partial{color:var(--c-text);overflow-wrap:anywhere;font-size:14px;line-height:1.5}.summer-partial :where(p,ul,ol){margin:0 0 8px}.summer-partial :where(p,ul,ol):last-child{margin-bottom:0}.summer-partial a{color:var(--c-text);text-decoration:underline}.summer-partial a:focus-visible{outline:3px solid var(--c-ring);outline-offset:2px}.summer-markdown{color:var(--c-text);overflow-wrap:anywhere;font-size:14px;line-height:1.6}.summer-markdown :where(h1,h2,h3,h4){color:var(--c-text);margin:0 0 8px;font-weight:600;line-height:1.3}.summer-markdown :where(h1){font-size:22px}.summer-markdown :where(h2){font-size:18px}.summer-markdown :where(h3){font-size:16px}.summer-markdown :where(h4){font-size:14px}.summer-markdown :where(p,ul,ol,blockquote,pre,table){margin:0 0 10px}.summer-markdown :where(h1,h2,h3,h4,p,ul,ol,blockquote,pre,table):last-child{margin-bottom:0}.summer-markdown :where(ul){padding-left:22px;list-style:outside}.summer-markdown :where(ol){padding-left:22px;list-style:decimal}.summer-markdown :where(code){font-family:var(--font-mono);background:var(--c-subtle);border-radius:4px;padding:1px 4px;font-size:13px}.summer-markdown :where(pre){font-family:var(--font-mono);background:var(--c-subtle);white-space:pre;border-radius:8px;padding:10px 12px;font-size:13px;overflow-x:auto}.summer-markdown :where(pre code){background:0 0;padding:0}.summer-markdown :where(blockquote){border-left:3px solid var(--c-border-strong);color:var(--c-muted);padding-left:12px}.summer-markdown :where(a){color:var(--c-text);text-decoration:underline}.summer-markdown :where(a):focus-visible{outline:3px solid var(--c-ring);outline-offset:2px}.summer-markdown :where(hr){border:0;border-top:1px solid var(--c-border);margin:12px 0}.summer-markdown :where(table){border-collapse:collapse}.summer-markdown :where(th,td){border:1px solid var(--c-border);text-align:left;padding:4px 8px}.summer-markdown :where(img){max-width:100%;height:auto}.summer-stats{background:var(--c-surface);border:1px solid var(--c-border);box-shadow:var(--c-shadow-card);border-radius:16px;flex-wrap:wrap;gap:8px 32px;margin:0;padding:16px 20px;display:flex}.summer-stat{flex-direction:column-reverse;gap:4px;min-width:0;display:flex}.summer-stat__label{color:var(--c-muted);overflow-wrap:anywhere;margin:0;font-size:13px;font-weight:400;line-height:1.5}.summer-stat__value{color:var(--c-text);font-variant-numeric:tabular-nums;margin:0;font-size:20px;font-weight:600;line-height:1.2}.summer-callout{overflow-wrap:anywhere;border-radius:12px;flex-direction:column;gap:4px;margin:0;padding:14px 18px;font-size:14px;line-height:1.5;display:flex}.summer-callout--warning{background:var(--c-sel);color:var(--c-text)}.summer-callout--danger{background:var(--c-danger-soft);color:var(--c-danger)}.summer-callout__title{margin:0;font-weight:600}.summer-callout__text{margin:0;font-weight:400}}@layer utilities{.pointer-events-auto{pointer-events:auto}.pointer-events-none{pointer-events:none}.collapse{visibility:collapse}.invisible{visibility:hidden}.visible{visibility:visible}.sr-only{clip-path:inset(50%);white-space:nowrap;border-width:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.absolute{position:absolute}.fixed{position:fixed}.relative{position:relative}.sticky{position:sticky}.inset-0{inset:calc(var(--spacing) * 0)}.inset-x-0{inset-inline:calc(var(--spacing) * 0)}.top-0{top:calc(var(--spacing) * 0)}.top-1\/2{top:50%}.top-2{top:calc(var(--spacing) * 2)}.top-3{top:calc(var(--spacing) * 3)}.top-\[3px\]{top:3px}.top-full{top:100%}.right-1\.5{right:calc(var(--spacing) * 1.5)}.right-2{right:calc(var(--spacing) * 2)}.right-3\.5{right:calc(var(--spacing) * 3.5)}.bottom-0{bottom:calc(var(--spacing) * 0)}.bottom-\[88px\]{bottom:88px}.left-1\/2{left:50%}.left-2{left:calc(var(--spacing) * 2)}.left-3{left:calc(var(--spacing) * 3)}.left-3\.5{left:calc(var(--spacing) * 3.5)}.left-\[3px\]{left:3px}.left-\[calc\(var\(--spacing-rail\)\+8px\)\]{left:calc(var(--spacing-rail) + 8px)}.z-10{z-index:10}.z-20{z-index:20}.z-30{z-index:30}.z-40{z-index:40}.z-50{z-index:50}.z-\[80\]{z-index:80}.z-\[90\]{z-index:90}.col-span-full{grid-column:1/-1}.container{width:100%}@media(min-width:40rem){.container{max-width:40rem}}@media(min-width:48rem){.container{max-width:48rem}}@media(min-width:64rem){.container{max-width:64rem}}@media(min-width:80rem){.container{max-width:80rem}}@media(min-width:96rem){.container{max-width:96rem}}.m-0{margin:calc(var(--spacing) * 0)}.my-1{margin-block:calc(var(--spacing) * 1)}.mt-0\.5{margin-top:calc(var(--spacing) * .5)}.mt-1{margin-top:calc(var(--spacing) * 1)}.mt-1\.5{margin-top:calc(var(--spacing) * 1.5)}.mt-2{margin-top:calc(var(--spacing) * 2)}.mt-3{margin-top:calc(var(--spacing) * 3)}.mt-px{margin-top:1px}.mb-1{margin-bottom:calc(var(--spacing) * 1)}.mb-3\.5{margin-bottom:calc(var(--spacing) * 3.5)}.ml-1{margin-left:calc(var(--spacing) * 1)}.ml-2{margin-left:calc(var(--spacing) * 2)}.ml-auto{margin-left:auto}.block{display:block}.contents{display:contents}.flex{display:flex}.grid{display:grid}.hidden{display:none}.inline{display:inline}.inline-block{display:inline-block}.inline-flex{display:inline-flex}.table{display:table}.aspect-square{aspect-ratio:1}.size-2\.5{width:calc(var(--spacing) * 2.5);height:calc(var(--spacing) * 2.5)}.size-5{width:calc(var(--spacing) * 5);height:calc(var(--spacing) * 5)}.size-6{width:calc(var(--spacing) * 6);height:calc(var(--spacing) * 6)}.size-8{width:calc(var(--spacing) * 8);height:calc(var(--spacing) * 8)}.size-9{width:calc(var(--spacing) * 9);height:calc(var(--spacing) * 9)}.size-10{width:calc(var(--spacing) * 10);height:calc(var(--spacing) * 10)}.size-10\!{width:calc(var(--spacing) * 10)!important;height:calc(var(--spacing) * 10)!important}.size-14{width:calc(var(--spacing) * 14);height:calc(var(--spacing) * 14)}.size-16{width:calc(var(--spacing) * 16);height:calc(var(--spacing) * 16)}.size-40{width:calc(var(--spacing) * 40);height:calc(var(--spacing) * 40)}.size-\[18px\]{width:18px;height:18px}.size-\[20px\]{width:20px;height:20px}.size-\[22px\]{width:22px;height:22px}.size-\[26px\]{width:26px;height:26px}.size-\[30px\]{width:30px;height:30px}.size-\[34px\]{width:34px;height:34px}.size-full{width:100%;height:100%}.h-1{height:calc(var(--spacing) * 1)}.h-3{height:calc(var(--spacing) * 3)}.h-5{height:calc(var(--spacing) * 5)}.h-6{height:calc(var(--spacing) * 6)}.h-8{height:calc(var(--spacing) * 8)}.h-9{height:calc(var(--spacing) * 9)}.h-10{height:calc(var(--spacing) * 10)}.h-\[26px\]{height:26px}.h-\[30px\]{height:30px}.h-\[34px\]{height:34px}.h-\[38px\]{height:38px}.h-\[42px\]{height:42px}.h-\[44px\]{height:44px}.h-\[54px\]{height:54px}.h-\[56px\]{height:56px}.h-\[68px\]{height:68px}.h-\[80px\]{height:80px}.h-\[112px\]{height:112px}.h-button{height:var(--spacing-button)}.h-full{height:100%}.h-header{height:var(--spacing-header)}.h-input{height:var(--spacing-input)}.h-nav{height:var(--spacing-nav)}.h-pager{height:var(--spacing-pager)}.h-px{height:1px}.h-row{height:var(--spacing-row)}.h-row-head{height:var(--spacing-row-head)}.max-h-64{max-height:calc(var(--spacing) * 64)}.max-h-\[calc\(100vh-32px\)\]{max-height:calc(100vh - 32px)}.min-h-0{min-height:calc(var(--spacing) * 0)}.min-h-10{min-height:calc(var(--spacing) * 10)}.min-h-14{min-height:calc(var(--spacing) * 14)}.min-h-\[30px\]{min-height:30px}.min-h-\[56px\]{min-height:56px}.min-h-\[112px\]{min-height:112px}.min-h-input{min-height:var(--spacing-input)}.min-h-screen{min-height:100vh}.w-1\/2{width:50%}.w-1\/3{width:33.3333%}.w-2\/3{width:66.6667%}.w-2\/5{width:40%}.w-3\/4{width:75%}.w-3\/5{width:60%}.w-9{width:calc(var(--spacing) * 9)}.w-24{width:calc(var(--spacing) * 24)}.w-\[44px\]{width:44px}.w-\[52px\]{width:52px}.w-\[56px\]{width:56px}.w-\[92px\]{width:92px}.w-\[160px\]{width:160px}.w-\[220px\]{width:220px}.w-\[230px\]{width:230px}.w-\[240px\]{width:240px}.w-\[280px\]{width:280px}.w-\[284px\]{width:284px}.w-\[320px\]{width:320px}.w-\[calc\(100\%-32px\)\]{width:calc(100% - 32px)}.w-full{width:100%}.w-panel{width:var(--spacing-panel)}.w-rail{width:var(--spacing-rail)}.max-w-\[320px\]{max-width:320px}.max-w-\[400px\]{max-width:400px}.max-w-\[420px\]{max-width:420px}.max-w-\[440px\]{max-width:440px}.max-w-\[560px\]{max-width:560px}.max-w-\[720px\]{max-width:720px}.max-w-full{max-width:100%}.min-w-0{min-width:calc(var(--spacing) * 0)}.min-w-5{min-width:calc(var(--spacing) * 5)}.min-w-\[120px\]{min-width:120px}.min-w-\[480px\]{min-width:480px}.min-w-\[640px\]{min-width:640px}.min-w-pager{min-width:var(--spacing-pager)}.flex-1{flex:1}.shrink-0{flex-shrink:0}.border-collapse{border-collapse:collapse}.-translate-x-1\/2{--tw-translate-x: -50% ;translate:var(--tw-translate-x) var(--tw-translate-y)}.translate-x-0{--tw-translate-x:calc(var(--spacing) * 0);translate:var(--tw-translate-x) var(--tw-translate-y)}.translate-x-\[18px\]{--tw-translate-x:18px;translate:var(--tw-translate-x) var(--tw-translate-y)}.-translate-y-1\/2{--tw-translate-y: -50% ;translate:var(--tw-translate-x) var(--tw-translate-y)}.animate-spin{animation:var(--animate-spin)}.cursor-grab{cursor:grab}.cursor-not-allowed{cursor:not-allowed}.cursor-pointer{cursor:pointer}.resize-y{resize:vertical}.appearance-none{appearance:none}.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.grid-cols-\[repeat\(auto-fill\,minmax\(160px\,1fr\)\)\]{grid-template-columns:repeat(auto-fill,minmax(160px,1fr))}.flex-col{flex-direction:column}.flex-wrap{flex-wrap:wrap}.items-center{align-items:center}.items-end{align-items:flex-end}.items-start{align-items:flex-start}.items-start\!{align-items:flex-start!important}.justify-between{justify-content:space-between}.justify-center{justify-content:center}.justify-end{justify-content:flex-end}.gap-0\.5{gap:calc(var(--spacing) * .5)}.gap-1{gap:calc(var(--spacing) * 1)}.gap-1\.5{gap:calc(var(--spacing) * 1.5)}.gap-2{gap:calc(var(--spacing) * 2)}.gap-2\.5{gap:calc(var(--spacing) * 2.5)}.gap-3{gap:calc(var(--spacing) * 3)}.gap-3\.5{gap:calc(var(--spacing) * 3.5)}.gap-4{gap:calc(var(--spacing) * 4)}.gap-5{gap:calc(var(--spacing) * 5)}.gap-6{gap:calc(var(--spacing) * 6)}.gap-\[18px\]{gap:18px}.gap-x-4{column-gap:calc(var(--spacing) * 4)}.gap-x-6{column-gap:calc(var(--spacing) * 6)}.gap-y-2{row-gap:calc(var(--spacing) * 2)}.gap-y-3{row-gap:calc(var(--spacing) * 3)}.gap-y-\[22px\]{row-gap:22px}.self-start{align-self:flex-start}.truncate{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.overflow-auto{overflow:auto}.overflow-hidden{overflow:hidden}.overflow-x-auto{overflow-x:auto}.overflow-y-auto{overflow-y:auto}.rounded-\[4px\]{border-radius:4px}.rounded-\[6px\]{border-radius:6px}.rounded-\[14px\]{border-radius:14px}.rounded-card{border-radius:var(--radius-card)}.rounded-checkbox{border-radius:var(--radius-checkbox)}.rounded-control{border-radius:var(--radius-control)}.rounded-full{border-radius:3.40282e38px}.rounded-inner{border-radius:var(--radius-inner)}.rounded-modal{border-radius:var(--radius-modal)}.rounded-pager{border-radius:var(--radius-pager)}.rounded-pill{border-radius:var(--radius-pill)}.rounded-tab{border-radius:var(--radius-tab)}.border{border-style:var(--tw-border-style);border-width:1px}.border-0{border-style:var(--tw-border-style);border-width:0}.border-2{border-style:var(--tw-border-style);border-width:2px}.border-\[1\.5px\]{border-style:var(--tw-border-style);border-width:1.5px}.border-y{border-block-style:var(--tw-border-style);border-block-width:1px}.border-t{border-top-style:var(--tw-border-style);border-top-width:1px}.border-r{border-right-style:var(--tw-border-style);border-right-width:1px}.border-b{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}.border-dashed{--tw-border-style:dashed;border-style:dashed}.border-solid{--tw-border-style:solid;border-style:solid}.border-\[\#c62828\]{border-color:#c62828}.border-\[\#d2d8e2\]{border-color:#d2d8e2}.border-\[\#e0b020\]{border-color:#e0b020}.border-border{border-color:var(--color-border)}.border-border-strong{border-color:var(--color-border-strong)}.border-danger{border-color:var(--color-danger)}.border-primary{border-color:var(--color-primary)}.border-side-border{border-color:var(--color-side-border)}.border-transparent{border-color:#0000}.bg-\[\#1d2740\]{background-color:#1d2740}.bg-\[\#22304d\]{background-color:#22304d}.bg-\[\#f58a8a\]{background-color:#f58a8a}.bg-\[\#fdf0f0\]{background-color:#fdf0f0}.bg-accent{background-color:var(--color-accent)}.bg-accent-soft{background-color:var(--color-accent-soft)}.bg-bg{background-color:var(--color-bg)}.bg-border{background-color:var(--color-border)}.bg-border-strong{background-color:var(--color-border-strong)}.bg-danger{background-color:var(--color-danger)}.bg-danger-soft{background-color:var(--color-danger-soft)}.bg-hover{background-color:var(--color-hover)}.bg-ok-bg{background-color:var(--color-ok-bg)}.bg-on-primary{background-color:var(--color-on-primary)}.bg-overlay{background-color:var(--color-overlay)}.bg-primary{background-color:var(--color-primary)}.bg-sel{background-color:var(--color-sel)}.bg-side{background-color:var(--color-side)}.bg-skel{background-color:var(--color-skel)}.bg-subtle{background-color:var(--color-subtle)}.bg-surface{background-color:var(--color-surface)}.bg-transparent{background-color:#0000}.bg-white{background-color:var(--color-white)}.object-contain{object-fit:contain}.object-cover{object-fit:cover}.p-0{padding:calc(var(--spacing) * 0)}.p-1{padding:calc(var(--spacing) * 1)}.p-1\.5{padding:calc(var(--spacing) * 1.5)}.p-2{padding:calc(var(--spacing) * 2)}.p-4{padding:calc(var(--spacing) * 4)}.p-5{padding:calc(var(--spacing) * 5)}.p-6{padding:calc(var(--spacing) * 6)}.p-7{padding:calc(var(--spacing) * 7)}.p-8{padding:calc(var(--spacing) * 8)}.px-0\!{padding-inline:calc(var(--spacing) * 0)!important}.px-0\.5{padding-inline:calc(var(--spacing) * .5)}.px-1{padding-inline:calc(var(--spacing) * 1)}.px-1\.5{padding-inline:calc(var(--spacing) * 1.5)}.px-2{padding-inline:calc(var(--spacing) * 2)}.px-2\.5{padding-inline:calc(var(--spacing) * 2.5)}.px-3{padding-inline:calc(var(--spacing) * 3)}.px-3\.5{padding-inline:calc(var(--spacing) * 3.5)}.px-4{padding-inline:calc(var(--spacing) * 4)}.px-5{padding-inline:calc(var(--spacing) * 5)}.px-6{padding-inline:calc(var(--spacing) * 6)}.px-8{padding-inline:calc(var(--spacing) * 8)}.px-\[18px\]{padding-inline:18px}.py-1{padding-block:calc(var(--spacing) * 1)}.py-2{padding-block:calc(var(--spacing) * 2)}.py-2\.5{padding-block:calc(var(--spacing) * 2.5)}.py-3{padding-block:calc(var(--spacing) * 3)}.py-3\.5{padding-block:calc(var(--spacing) * 3.5)}.py-4{padding-block:calc(var(--spacing) * 4)}.py-6{padding-block:calc(var(--spacing) * 6)}.py-7{padding-block:calc(var(--spacing) * 7)}.py-20{padding-block:calc(var(--spacing) * 20)}.pt-1{padding-top:calc(var(--spacing) * 1)}.pt-3{padding-top:calc(var(--spacing) * 3)}.pt-3\.5{padding-top:calc(var(--spacing) * 3.5)}.pr-1{padding-right:calc(var(--spacing) * 1)}.pr-1\.5{padding-right:calc(var(--spacing) * 1.5)}.pr-2\.5{padding-right:calc(var(--spacing) * 2.5)}.pr-3{padding-right:calc(var(--spacing) * 3)}.pr-3\.5{padding-right:calc(var(--spacing) * 3.5)}.pr-5{padding-right:calc(var(--spacing) * 5)}.pr-6{padding-right:calc(var(--spacing) * 6)}.pr-10{padding-right:calc(var(--spacing) * 10)}.pr-12{padding-right:calc(var(--spacing) * 12)}.pb-2{padding-bottom:calc(var(--spacing) * 2)}.pb-3{padding-bottom:calc(var(--spacing) * 3)}.pb-4{padding-bottom:calc(var(--spacing) * 4)}.pb-6{padding-bottom:calc(var(--spacing) * 6)}.pb-24{padding-bottom:calc(var(--spacing) * 24)}.pl-1{padding-left:calc(var(--spacing) * 1)}.pl-2{padding-left:calc(var(--spacing) * 2)}.pl-3\.5{padding-left:calc(var(--spacing) * 3.5)}.pl-5{padding-left:calc(var(--spacing) * 5)}.pl-8{padding-left:calc(var(--spacing) * 8)}.pl-9{padding-left:calc(var(--spacing) * 9)}.pl-10{padding-left:calc(var(--spacing) * 10)}.text-center{text-align:center}.text-left{text-align:left}.align-\[-2px\]{vertical-align:-2px}.font-mono{font-family:var(--font-mono)}.text-\[10px\]{font-size:10px}.text-\[11px\]{font-size:11px}.text-\[12px\]{font-size:12px}.text-\[13px\]{font-size:13px}.text-\[14px\]{font-size:14px}.text-\[16px\]{font-size:16px}.text-\[17px\]{font-size:17px}.text-\[18px\]{font-size:18px}.text-\[20px\]{font-size:20px}.text-\[22px\]{font-size:22px}.text-\[24px\]{font-size:24px}.text-\[26px\]{font-size:26px}.leading-\[1\.2\]{--tw-leading:1.2;line-height:1.2}.leading-tight{--tw-leading:var(--leading-tight);line-height:var(--leading-tight)}.font-bold{--tw-font-weight:var(--font-weight-bold);font-weight:var(--font-weight-bold)}.font-medium{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.font-normal{--tw-font-weight:var(--font-weight-normal);font-weight:var(--font-weight-normal)}.font-semibold{--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold)}.tracking-\[-0\.01em\]{--tw-tracking:-.01em;letter-spacing:-.01em}.tracking-\[-0\.02em\]{--tw-tracking:-.02em;letter-spacing:-.02em}.tracking-\[0\.02em\]{--tw-tracking:.02em;letter-spacing:.02em}.\[overflow-wrap\:anywhere\]{overflow-wrap:anywhere}.whitespace-nowrap{white-space:nowrap}.whitespace-pre-wrap{white-space:pre-wrap}.text-\[\#1d2740\]{color:#1d2740}.text-\[\#141b2d\]{color:#141b2d}.text-\[\#c3cbda\]{color:#c3cbda}.text-\[\#c62828\]{color:#c62828}.text-accent{color:var(--color-accent)}.text-danger{color:var(--color-danger)}.text-muted{color:var(--color-muted)}.text-ok-text{color:var(--color-ok-text)}.text-on-accent{color:var(--color-on-accent)}.text-on-primary{color:var(--color-on-primary)}.text-side-text{color:var(--color-side-text)}.text-text{color:var(--color-text)}.text-white{color:var(--color-white)}.uppercase{text-transform:uppercase}.tabular-nums{--tw-numeric-spacing:tabular-nums;font-variant-numeric:var(--tw-ordinal,) var(--tw-slashed-zero,) var(--tw-numeric-figure,) var(--tw-numeric-spacing,) var(--tw-numeric-fraction,)}.line-through{text-decoration-line:line-through}.no-underline{text-decoration-line:none}.accent-primary{accent-color:var(--color-primary)}.opacity-50{opacity:.5}.shadow-card{--tw-shadow:var(--c-shadow-card);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-login{--tw-shadow:0 24px 60px var(--tw-shadow-color,#00000059);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-menu{--tw-shadow:0 16px 40px var(--tw-shadow-color,#141b2d29);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-pop{--tw-shadow:0 16px 40px var(--tw-shadow-color,#141b2d2e);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-tab{--tw-shadow:0 1px 3px var(--tw-shadow-color,#141b2d1f);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-toast{--tw-shadow:0 16px 40px var(--tw-shadow-color,#00000040);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.outline{outline-style:var(--tw-outline-style);outline-width:1px}.filter{filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.transition-colors{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-transform{transition-property:transform,translate,scale,rotate;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.duration-150{--tw-duration:.15s;transition-duration:.15s}.ease-out{--tw-ease:var(--ease-out);transition-timing-function:var(--ease-out)}.outline-none{--tw-outline-style:none;outline-style:none}.select-none{-webkit-user-select:none;user-select:none}.first\:pl-5:first-child{padding-left:calc(var(--spacing) * 5)}.last\:pr-5:last-child{padding-right:calc(var(--spacing) * 5)}.focus-within\:border-primary:focus-within{border-color:var(--color-primary)}.focus-within\:shadow-\[0_0_0_3px_var\(--c-ring\)\]:focus-within{--tw-shadow:0 0 0 3px var(--tw-shadow-color,var(--c-ring));box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}@media(hover:hover){.hover\:bg-danger-soft:hover{background-color:var(--color-danger-soft)}.hover\:bg-hover:hover{background-color:var(--color-hover)}.hover\:bg-side-hover:hover{background-color:var(--color-side-hover)}.hover\:text-danger:hover{color:var(--color-danger)}.hover\:text-text:hover{color:var(--color-text)}.hover\:text-white:hover{color:var(--color-white)}.hover\:opacity-90:hover{opacity:.9}}.focus\:bg-sel:focus{background-color:var(--color-sel)}.focus\:text-text:focus{color:var(--color-text)}.focus-visible\:shadow-none:focus-visible{--tw-shadow:0 0 #0000;box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.focus-visible\:outline-none:focus-visible{--tw-outline-style:none;outline-style:none}.disabled\:cursor-not-allowed:disabled{cursor:not-allowed}.disabled\:opacity-60:disabled{opacity:.6}@media(hover:hover){.disabled\:hover\:text-muted:disabled:hover{color:var(--color-muted)}}.has-\[\[data-invalid\]\]\:border-danger:has([data-invalid]){border-color:var(--color-danger)}.data-\[disabled\]\:cursor-not-allowed[data-disabled]{cursor:not-allowed}.data-\[disabled\]\:text-placeholder[data-disabled]{color:var(--color-placeholder)}.data-\[disabled\]\:opacity-40[data-disabled]{opacity:.4}@media(hover:hover){.data-\[disabled\]\:hover\:bg-transparent[data-disabled]:hover{background-color:#0000}}.data-\[highlighted\]\:bg-hover[data-highlighted]{background-color:var(--color-hover)}.data-\[outside-view\]\:text-placeholder[data-outside-view],.data-\[placeholder\]\:text-placeholder[data-placeholder]{color:var(--color-placeholder)}.focus\:data-\[placeholder\]\:text-text:focus[data-placeholder]{color:var(--color-text)}.data-\[selected\]\:bg-primary[data-selected]{background-color:var(--color-primary)}.data-\[selected\]\:font-semibold[data-selected]{--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold)}.data-\[selected\]\:text-on-primary[data-selected]{color:var(--color-on-primary)}.data-\[state\=checked\]\:border-primary[data-state=checked]{border-color:var(--color-primary)}.data-\[state\=checked\]\:bg-danger-soft[data-state=checked]{background-color:var(--color-danger-soft)}.data-\[state\=checked\]\:bg-ok-bg[data-state=checked]{background-color:var(--color-ok-bg)}.data-\[state\=checked\]\:bg-primary[data-state=checked]{background-color:var(--color-primary)}.data-\[state\=checked\]\:bg-surface[data-state=checked]{background-color:var(--color-surface)}.data-\[state\=checked\]\:text-\[14px\][data-state=checked]{font-size:14px}.data-\[state\=checked\]\:font-semibold[data-state=checked]{--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold)}.data-\[state\=checked\]\:text-danger[data-state=checked]{color:var(--color-danger)}.data-\[state\=checked\]\:text-ok-text[data-state=checked]{color:var(--color-ok-text)}.data-\[state\=checked\]\:text-on-primary[data-state=checked]{color:var(--color-on-primary)}.data-\[state\=checked\]\:text-text[data-state=checked]{color:var(--color-text)}.data-\[state\=checked\]\:shadow-tab[data-state=checked]{--tw-shadow:0 1px 3px var(--tw-shadow-color,#141b2d1f);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.data-\[today\]\:font-semibold[data-today]{--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold)}.data-\[today\]\:shadow-\[inset_0_0_0_1px_var\(--c-border-strong\)\][data-today]{--tw-shadow:inset 0 0 0 1px var(--tw-shadow-color,var(--c-border-strong));box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.data-\[unavailable\]\:cursor-not-allowed[data-unavailable]{cursor:not-allowed}.data-\[unavailable\]\:opacity-40[data-unavailable]{opacity:.4}@media not all and (min-width:1099px){.max-\[1099px\]\:hidden{display:none}}@media not all and (min-width:40rem){.max-sm\:flex-col{flex-direction:column}.max-sm\:items-start{align-items:flex-start}}@media(min-width:600px){.min-\[600px\]\:col-start-1{grid-column-start:1}.min-\[600px\]\:col-start-2{grid-column-start:2}.min-\[600px\]\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(min-width:900px){.min-\[900px\]\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}}}@font-face{font-family:DM Sans;font-style:normal;font-display:swap;font-weight:400;src:url(./dm-sans-latin-ext-400-normal-BtiwyxMk.woff2)format("woff2"),url(./dm-sans-latin-ext-400-normal-BjWJ59Pq.woff)format("woff");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:DM Sans;font-style:normal;font-display:swap;font-weight:400;src:url(./dm-sans-latin-400-normal-CW0RaeGs.woff2)format("woff2"),url(./dm-sans-latin-400-normal-BwCSEQnW.woff)format("woff");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:DM Sans;font-style:normal;font-display:swap;font-weight:500;src:url(./dm-sans-latin-ext-500-normal-BJfUCQsA.woff2)format("woff2"),url(./dm-sans-latin-ext-500-normal-DR84L5F-.woff)format("woff");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:DM Sans;font-style:normal;font-display:swap;font-weight:500;src:url(./dm-sans-latin-500-normal-B9HHJjqV.woff2)format("woff2"),url(./dm-sans-latin-500-normal-Dr3UlScf.woff)format("woff");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:DM Sans;font-style:normal;font-display:swap;font-weight:600;src:url(./dm-sans-latin-ext-600-normal-4vooXBpG.woff2)format("woff2"),url(./dm-sans-latin-ext-600-normal-DRtaDpgU.woff)format("woff");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:DM Sans;font-style:normal;font-display:swap;font-weight:600;src:url(./dm-sans-latin-600-normal-Aqo67rzb.woff2)format("woff2"),url(./dm-sans-latin-600-normal-BmdmIIQ2.woff)format("woff");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:DM Sans;font-style:normal;font-display:swap;font-weight:700;src:url(./dm-sans-latin-ext-700-normal-CJIcxD6K.woff2)format("woff2"),url(./dm-sans-latin-ext-700-normal-BLI3TTWz.woff)format("woff");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:DM Sans;font-style:normal;font-display:swap;font-weight:700;src:url(./dm-sans-latin-700-normal-DvUfVpUG.woff2)format("woff2"),url(./dm-sans-latin-700-normal-CUSSCpQX.woff)format("woff");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:DM Mono;font-style:normal;font-display:swap;font-weight:400;src:url(./dm-mono-latin-ext-400-normal-C2zvOubV.woff2)format("woff2"),url(./dm-mono-latin-ext-400-normal-1aZr6b2b.woff)format("woff");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:DM Mono;font-style:normal;font-display:swap;font-weight:400;src:url(./dm-mono-latin-400-normal-4GdczIuU.woff2)format("woff2"),url(./dm-mono-latin-400-normal--0xN8mdc.woff)format("woff");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:DM Mono;font-style:normal;font-display:swap;font-weight:500;src:url(./dm-mono-latin-ext-500-normal-BtRyHRi6.woff2)format("woff2"),url(./dm-mono-latin-ext-500-normal-Dw3M13d8.woff)format("woff");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:DM Mono;font-style:normal;font-display:swap;font-weight:500;src:url(./dm-mono-latin-500-normal-DRMDZjhP.woff2)format("woff2"),url(./dm-mono-latin-500-normal-CN8Miw6E.woff)format("woff");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}:root{--c-bg:#f4f6f9;--c-surface:#fff;--c-subtle:#f3f5f8;--c-border:#e6e9ef;--c-border-strong:#d2d8e2;--c-text:#141b2d;--c-muted:#566175;--c-placeholder:#6b7588;--c-primary:#22304d;--c-on-primary:#fff;--c-danger:#c62828;--c-danger-soft:#fdf0f0;--c-ok-bg:#e3f4e8;--c-ok-text:#1c6b35;--c-ring:#fcc4288c;--c-hover:#f1f3f7;--c-sel:#fdf3cf;--c-skel:#eceff4;--c-overlay:#141b2d80;--c-side:#1d2740;--c-side-border:transparent;--c-shadow-card:0 1px 2px #141b2d0a, 0 4px 16px #141b2d0d}.dark{color-scheme:dark;--c-bg:#111726;--c-surface:#182033;--c-subtle:#1f283d;--c-border:#29334b;--c-border-strong:#3a4661;--c-text:#eef1f6;--c-muted:#a9b3c6;--c-placeholder:#8a95ab;--c-primary:#fcd34d;--c-on-primary:#1b2540;--c-danger:#f58a8a;--c-danger-soft:#3a1d24;--c-ok-bg:#173826;--c-ok-text:#8fdfa8;--c-ring:#fcd34d73;--c-hover:#212b42;--c-sel:#3a3622;--c-skel:#263049;--c-overlay:#050810b3;--c-side:#0d1320;--c-side-border:#222b40;--c-shadow-card:none}@keyframes summer-fade-in{0%{opacity:0}}@keyframes summer-dialog-in{0%{opacity:0;scale:.98}}@media(prefers-reduced-motion:reduce){.bg-overlay,[data-dialog-content],[role=alertdialog]{animation:none!important}.toast-enter-active{transition:none}}@property --tw-translate-x{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-y{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-z{syntax:"*";inherits:false;initial-value:0}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-leading{syntax:"*";inherits:false}@property --tw-font-weight{syntax:"*";inherits:false}@property --tw-tracking{syntax:"*";inherits:false}@property --tw-ordinal{syntax:"*";inherits:false}@property --tw-slashed-zero{syntax:"*";inherits:false}@property --tw-numeric-figure{syntax:"*";inherits:false}@property --tw-numeric-spacing{syntax:"*";inherits:false}@property --tw-numeric-fraction{syntax:"*";inherits:false}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-shadow-alpha{syntax:"";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow-alpha{syntax:"";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-outline-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-blur{syntax:"*";inherits:false}@property --tw-brightness{syntax:"*";inherits:false}@property --tw-contrast{syntax:"*";inherits:false}@property --tw-grayscale{syntax:"*";inherits:false}@property --tw-hue-rotate{syntax:"*";inherits:false}@property --tw-invert{syntax:"*";inherits:false}@property --tw-opacity{syntax:"*";inherits:false}@property --tw-saturate{syntax:"*";inherits:false}@property --tw-sepia{syntax:"*";inherits:false}@property --tw-drop-shadow{syntax:"*";inherits:false}@property --tw-drop-shadow-color{syntax:"*";inherits:false}@property --tw-drop-shadow-alpha{syntax:"";inherits:false;initial-value:100%}@property --tw-drop-shadow-size{syntax:"*";inherits:false}@property --tw-duration{syntax:"*";inherits:false}@property --tw-ease{syntax:"*";inherits:false}@keyframes spin{to{transform:rotate(360deg)}}
diff --git a/modules/boardwalk/dist/assets/index-X2xCWuiY.css b/modules/boardwalk/dist/assets/index-X2xCWuiY.css
deleted file mode 100644
index 09ae3e1..0000000
--- a/modules/boardwalk/dist/assets/index-X2xCWuiY.css
+++ /dev/null
@@ -1 +0,0 @@
-@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-translate-x:0;--tw-translate-y:0;--tw-translate-z:0;--tw-border-style:solid;--tw-leading:initial;--tw-font-weight:initial;--tw-tracking:initial;--tw-ordinal:initial;--tw-slashed-zero:initial;--tw-numeric-figure:initial;--tw-numeric-spacing:initial;--tw-numeric-fraction:initial;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--tw-outline-style:solid;--tw-blur:initial;--tw-brightness:initial;--tw-contrast:initial;--tw-grayscale:initial;--tw-hue-rotate:initial;--tw-invert:initial;--tw-opacity:initial;--tw-saturate:initial;--tw-sepia:initial;--tw-drop-shadow:initial;--tw-drop-shadow-color:initial;--tw-drop-shadow-alpha:100%;--tw-drop-shadow-size:initial;--tw-duration:initial;--tw-ease:initial}}}@layer theme{:root,:host{--font-sans:"DM Sans", ui-sans-serif, system-ui, sans-serif;--font-mono:"DM Mono", ui-monospace, monospace;--color-white:#fff;--spacing:.25rem;--font-weight-normal:400;--font-weight-medium:500;--font-weight-semibold:600;--font-weight-bold:700;--leading-tight:1.25;--ease-out:cubic-bezier(0, 0, .2, 1);--animate-spin:spin 1s linear infinite;--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4, 0, .2, 1);--default-font-family:var(--font-sans);--default-mono-font-family:var(--font-mono);--color-bg:var(--c-bg);--color-surface:var(--c-surface);--color-subtle:var(--c-subtle);--color-border:var(--c-border);--color-border-strong:var(--c-border-strong);--color-text:var(--c-text);--color-muted:var(--c-muted);--color-placeholder:var(--c-placeholder);--color-primary:var(--c-primary);--color-on-primary:var(--c-on-primary);--color-danger:var(--c-danger);--color-danger-soft:var(--c-danger-soft);--color-ok-bg:var(--c-ok-bg);--color-ok-text:var(--c-ok-text);--color-hover:var(--c-hover);--color-sel:var(--c-sel);--color-skel:var(--c-skel);--color-overlay:var(--c-overlay);--color-side:var(--c-side);--color-side-border:var(--c-side-border);--color-accent:#fcd34d;--color-on-accent:#1b2540;--color-accent-soft:#fcd34d24;--color-side-text:#c3cbda;--color-side-hover:#ffffff14;--radius-control:10px;--radius-card:16px;--radius-modal:20px;--radius-inner:12px;--radius-tab:9px;--radius-checkbox:5px;--radius-pager:8px;--radius-pill:999px;--spacing-button:42px;--spacing-input:44px;--spacing-header:64px;--spacing-nav:40px;--spacing-row:54px;--spacing-row-head:44px;--spacing-pager:34px;--spacing-rail:96px;--spacing-panel:224px}}@layer base{*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;tab-size:4;line-height:1.5;font-family:var(--default-font-family,ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--default-mono-font-family,ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-variation-settings:var(--default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring{outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab,red,red)){::placeholder{color:color-mix(in oklab,currentcolor 50%,transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){appearance:button}::file-selector-button{appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}html{font-family:var(--font-sans);color:var(--c-text);background:var(--c-bg);font-size:14px;line-height:1.5}body{min-height:100vh;margin:0}a:focus-visible,button:focus-visible,[role=button]:focus-visible,[tabindex]:focus-visible{outline:3px solid var(--c-ring);outline-offset:2px}input:focus-visible,select:focus-visible,textarea:focus-visible{border-color:var(--c-primary);box-shadow:0 0 0 3px var(--c-ring);outline:none}input::placeholder,textarea::placeholder{color:var(--c-placeholder)}}@layer components{.bg-overlay[data-state=open]{animation:.2s ease-out summer-fade-in}[data-dialog-content][data-state=open],[role=alertdialog][data-state=open]{animation:.2s ease-out summer-dialog-in}.toast-enter-active{transition:opacity .2s ease-out,scale .2s ease-out}.toast-enter-from{opacity:0;scale:.98}.summer-partial{color:var(--c-text);overflow-wrap:anywhere;font-size:14px;line-height:1.5}.summer-partial :where(p,ul,ol){margin:0 0 8px}.summer-partial :where(p,ul,ol):last-child{margin-bottom:0}.summer-partial a{color:var(--c-text);text-decoration:underline}.summer-partial a:focus-visible{outline:3px solid var(--c-ring);outline-offset:2px}.summer-markdown{color:var(--c-text);overflow-wrap:anywhere;font-size:14px;line-height:1.6}.summer-markdown :where(h1,h2,h3,h4){color:var(--c-text);margin:0 0 8px;font-weight:600;line-height:1.3}.summer-markdown :where(h1){font-size:22px}.summer-markdown :where(h2){font-size:18px}.summer-markdown :where(h3){font-size:16px}.summer-markdown :where(h4){font-size:14px}.summer-markdown :where(p,ul,ol,blockquote,pre,table){margin:0 0 10px}.summer-markdown :where(h1,h2,h3,h4,p,ul,ol,blockquote,pre,table):last-child{margin-bottom:0}.summer-markdown :where(ul){padding-left:22px;list-style:outside}.summer-markdown :where(ol){padding-left:22px;list-style:decimal}.summer-markdown :where(code){font-family:var(--font-mono);background:var(--c-subtle);border-radius:4px;padding:1px 4px;font-size:13px}.summer-markdown :where(pre){font-family:var(--font-mono);background:var(--c-subtle);white-space:pre;border-radius:8px;padding:10px 12px;font-size:13px;overflow-x:auto}.summer-markdown :where(pre code){background:0 0;padding:0}.summer-markdown :where(blockquote){border-left:3px solid var(--c-border-strong);color:var(--c-muted);padding-left:12px}.summer-markdown :where(a){color:var(--c-text);text-decoration:underline}.summer-markdown :where(a):focus-visible{outline:3px solid var(--c-ring);outline-offset:2px}.summer-markdown :where(hr){border:0;border-top:1px solid var(--c-border);margin:12px 0}.summer-markdown :where(table){border-collapse:collapse}.summer-markdown :where(th,td){border:1px solid var(--c-border);text-align:left;padding:4px 8px}.summer-markdown :where(img){max-width:100%;height:auto}.summer-stats{background:var(--c-surface);border:1px solid var(--c-border);box-shadow:var(--c-shadow-card);border-radius:16px;flex-wrap:wrap;gap:8px 32px;margin:0;padding:16px 20px;display:flex}.summer-stat{flex-direction:column-reverse;gap:4px;min-width:0;display:flex}.summer-stat__label{color:var(--c-muted);overflow-wrap:anywhere;margin:0;font-size:13px;font-weight:400;line-height:1.5}.summer-stat__value{color:var(--c-text);font-variant-numeric:tabular-nums;margin:0;font-size:20px;font-weight:600;line-height:1.2}.summer-callout{overflow-wrap:anywhere;border-radius:12px;flex-direction:column;gap:4px;margin:0;padding:14px 18px;font-size:14px;line-height:1.5;display:flex}.summer-callout--warning{background:var(--c-sel);color:var(--c-text)}.summer-callout--danger{background:var(--c-danger-soft);color:var(--c-danger)}.summer-callout__title{margin:0;font-weight:600}.summer-callout__text{margin:0;font-weight:400}}@layer utilities{.pointer-events-auto{pointer-events:auto}.pointer-events-none{pointer-events:none}.collapse{visibility:collapse}.invisible{visibility:hidden}.visible{visibility:visible}.sr-only{clip-path:inset(50%);white-space:nowrap;border-width:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.absolute{position:absolute}.fixed{position:fixed}.relative{position:relative}.sticky{position:sticky}.inset-0{inset:calc(var(--spacing) * 0)}.inset-x-0{inset-inline:calc(var(--spacing) * 0)}.top-0{top:calc(var(--spacing) * 0)}.top-1\/2{top:50%}.top-2{top:calc(var(--spacing) * 2)}.top-3{top:calc(var(--spacing) * 3)}.top-\[3px\]{top:3px}.top-full{top:100%}.right-1\.5{right:calc(var(--spacing) * 1.5)}.right-2{right:calc(var(--spacing) * 2)}.right-3\.5{right:calc(var(--spacing) * 3.5)}.bottom-0{bottom:calc(var(--spacing) * 0)}.bottom-\[88px\]{bottom:88px}.left-1\/2{left:50%}.left-2{left:calc(var(--spacing) * 2)}.left-3{left:calc(var(--spacing) * 3)}.left-3\.5{left:calc(var(--spacing) * 3.5)}.left-\[3px\]{left:3px}.left-\[calc\(var\(--spacing-rail\)\+8px\)\]{left:calc(var(--spacing-rail) + 8px)}.z-10{z-index:10}.z-20{z-index:20}.z-30{z-index:30}.z-40{z-index:40}.z-50{z-index:50}.z-\[80\]{z-index:80}.z-\[90\]{z-index:90}.col-span-full{grid-column:1/-1}.container{width:100%}@media(min-width:40rem){.container{max-width:40rem}}@media(min-width:48rem){.container{max-width:48rem}}@media(min-width:64rem){.container{max-width:64rem}}@media(min-width:80rem){.container{max-width:80rem}}@media(min-width:96rem){.container{max-width:96rem}}.m-0{margin:calc(var(--spacing) * 0)}.my-1{margin-block:calc(var(--spacing) * 1)}.mt-0\.5{margin-top:calc(var(--spacing) * .5)}.mt-1{margin-top:calc(var(--spacing) * 1)}.mt-1\.5{margin-top:calc(var(--spacing) * 1.5)}.mt-2{margin-top:calc(var(--spacing) * 2)}.mt-3{margin-top:calc(var(--spacing) * 3)}.mt-px{margin-top:1px}.mb-1{margin-bottom:calc(var(--spacing) * 1)}.mb-3\.5{margin-bottom:calc(var(--spacing) * 3.5)}.ml-1{margin-left:calc(var(--spacing) * 1)}.ml-2{margin-left:calc(var(--spacing) * 2)}.ml-auto{margin-left:auto}.block{display:block}.contents{display:contents}.flex{display:flex}.grid{display:grid}.hidden{display:none}.inline{display:inline}.inline-block{display:inline-block}.inline-flex{display:inline-flex}.table{display:table}.aspect-square{aspect-ratio:1}.size-2\.5{width:calc(var(--spacing) * 2.5);height:calc(var(--spacing) * 2.5)}.size-5{width:calc(var(--spacing) * 5);height:calc(var(--spacing) * 5)}.size-6{width:calc(var(--spacing) * 6);height:calc(var(--spacing) * 6)}.size-8{width:calc(var(--spacing) * 8);height:calc(var(--spacing) * 8)}.size-9{width:calc(var(--spacing) * 9);height:calc(var(--spacing) * 9)}.size-10{width:calc(var(--spacing) * 10);height:calc(var(--spacing) * 10)}.size-10\!{width:calc(var(--spacing) * 10)!important;height:calc(var(--spacing) * 10)!important}.size-14{width:calc(var(--spacing) * 14);height:calc(var(--spacing) * 14)}.size-16{width:calc(var(--spacing) * 16);height:calc(var(--spacing) * 16)}.size-40{width:calc(var(--spacing) * 40);height:calc(var(--spacing) * 40)}.size-\[18px\]{width:18px;height:18px}.size-\[22px\]{width:22px;height:22px}.size-\[26px\]{width:26px;height:26px}.size-\[30px\]{width:30px;height:30px}.size-\[34px\]{width:34px;height:34px}.size-full{width:100%;height:100%}.h-1{height:calc(var(--spacing) * 1)}.h-3{height:calc(var(--spacing) * 3)}.h-5{height:calc(var(--spacing) * 5)}.h-6{height:calc(var(--spacing) * 6)}.h-8{height:calc(var(--spacing) * 8)}.h-9{height:calc(var(--spacing) * 9)}.h-10{height:calc(var(--spacing) * 10)}.h-\[26px\]{height:26px}.h-\[30px\]{height:30px}.h-\[34px\]{height:34px}.h-\[38px\]{height:38px}.h-\[42px\]{height:42px}.h-\[44px\]{height:44px}.h-\[54px\]{height:54px}.h-\[56px\]{height:56px}.h-\[68px\]{height:68px}.h-\[80px\]{height:80px}.h-\[112px\]{height:112px}.h-button{height:var(--spacing-button)}.h-full{height:100%}.h-header{height:var(--spacing-header)}.h-input{height:var(--spacing-input)}.h-nav{height:var(--spacing-nav)}.h-pager{height:var(--spacing-pager)}.h-px{height:1px}.h-row{height:var(--spacing-row)}.h-row-head{height:var(--spacing-row-head)}.max-h-64{max-height:calc(var(--spacing) * 64)}.max-h-\[calc\(100vh-32px\)\]{max-height:calc(100vh - 32px)}.min-h-0{min-height:calc(var(--spacing) * 0)}.min-h-10{min-height:calc(var(--spacing) * 10)}.min-h-14{min-height:calc(var(--spacing) * 14)}.min-h-\[30px\]{min-height:30px}.min-h-\[56px\]{min-height:56px}.min-h-\[112px\]{min-height:112px}.min-h-input{min-height:var(--spacing-input)}.min-h-screen{min-height:100vh}.w-1\/2{width:50%}.w-1\/3{width:33.3333%}.w-2\/3{width:66.6667%}.w-2\/5{width:40%}.w-3\/4{width:75%}.w-3\/5{width:60%}.w-9{width:calc(var(--spacing) * 9)}.w-11{width:calc(var(--spacing) * 11)}.w-24{width:calc(var(--spacing) * 24)}.w-\[52px\]{width:52px}.w-\[56px\]{width:56px}.w-\[92px\]{width:92px}.w-\[160px\]{width:160px}.w-\[220px\]{width:220px}.w-\[230px\]{width:230px}.w-\[240px\]{width:240px}.w-\[280px\]{width:280px}.w-\[284px\]{width:284px}.w-\[320px\]{width:320px}.w-\[calc\(100\%-32px\)\]{width:calc(100% - 32px)}.w-full{width:100%}.w-panel{width:var(--spacing-panel)}.w-rail{width:var(--spacing-rail)}.max-w-\[320px\]{max-width:320px}.max-w-\[400px\]{max-width:400px}.max-w-\[420px\]{max-width:420px}.max-w-\[440px\]{max-width:440px}.max-w-\[560px\]{max-width:560px}.max-w-\[720px\]{max-width:720px}.max-w-full{max-width:100%}.min-w-0{min-width:calc(var(--spacing) * 0)}.min-w-5{min-width:calc(var(--spacing) * 5)}.min-w-\[120px\]{min-width:120px}.min-w-\[480px\]{min-width:480px}.min-w-\[640px\]{min-width:640px}.min-w-pager{min-width:var(--spacing-pager)}.flex-1{flex:1}.shrink-0{flex-shrink:0}.border-collapse{border-collapse:collapse}.-translate-x-1\/2{--tw-translate-x: -50% ;translate:var(--tw-translate-x) var(--tw-translate-y)}.translate-x-0{--tw-translate-x:calc(var(--spacing) * 0);translate:var(--tw-translate-x) var(--tw-translate-y)}.translate-x-\[18px\]{--tw-translate-x:18px;translate:var(--tw-translate-x) var(--tw-translate-y)}.-translate-y-1\/2{--tw-translate-y: -50% ;translate:var(--tw-translate-x) var(--tw-translate-y)}.animate-spin{animation:var(--animate-spin)}.cursor-grab{cursor:grab}.cursor-not-allowed{cursor:not-allowed}.cursor-pointer{cursor:pointer}.resize-y{resize:vertical}.appearance-none{appearance:none}.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.grid-cols-\[repeat\(auto-fill\,minmax\(160px\,1fr\)\)\]{grid-template-columns:repeat(auto-fill,minmax(160px,1fr))}.flex-col{flex-direction:column}.flex-wrap{flex-wrap:wrap}.items-center{align-items:center}.items-end{align-items:flex-end}.items-start{align-items:flex-start}.items-start\!{align-items:flex-start!important}.justify-between{justify-content:space-between}.justify-center{justify-content:center}.justify-end{justify-content:flex-end}.gap-0\.5{gap:calc(var(--spacing) * .5)}.gap-1{gap:calc(var(--spacing) * 1)}.gap-1\.5{gap:calc(var(--spacing) * 1.5)}.gap-2{gap:calc(var(--spacing) * 2)}.gap-2\.5{gap:calc(var(--spacing) * 2.5)}.gap-3{gap:calc(var(--spacing) * 3)}.gap-3\.5{gap:calc(var(--spacing) * 3.5)}.gap-4{gap:calc(var(--spacing) * 4)}.gap-5{gap:calc(var(--spacing) * 5)}.gap-6{gap:calc(var(--spacing) * 6)}.gap-\[18px\]{gap:18px}.gap-x-4{column-gap:calc(var(--spacing) * 4)}.gap-x-6{column-gap:calc(var(--spacing) * 6)}.gap-y-2{row-gap:calc(var(--spacing) * 2)}.gap-y-3{row-gap:calc(var(--spacing) * 3)}.gap-y-\[22px\]{row-gap:22px}.self-start{align-self:flex-start}.truncate{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.overflow-auto{overflow:auto}.overflow-hidden{overflow:hidden}.overflow-x-auto{overflow-x:auto}.overflow-y-auto{overflow-y:auto}.rounded-\[4px\]{border-radius:4px}.rounded-\[6px\]{border-radius:6px}.rounded-\[14px\]{border-radius:14px}.rounded-card{border-radius:var(--radius-card)}.rounded-checkbox{border-radius:var(--radius-checkbox)}.rounded-control{border-radius:var(--radius-control)}.rounded-full{border-radius:3.40282e38px}.rounded-inner{border-radius:var(--radius-inner)}.rounded-modal{border-radius:var(--radius-modal)}.rounded-pager{border-radius:var(--radius-pager)}.rounded-pill{border-radius:var(--radius-pill)}.rounded-tab{border-radius:var(--radius-tab)}.border{border-style:var(--tw-border-style);border-width:1px}.border-0{border-style:var(--tw-border-style);border-width:0}.border-2{border-style:var(--tw-border-style);border-width:2px}.border-\[1\.5px\]{border-style:var(--tw-border-style);border-width:1.5px}.border-y{border-block-style:var(--tw-border-style);border-block-width:1px}.border-t{border-top-style:var(--tw-border-style);border-top-width:1px}.border-r{border-right-style:var(--tw-border-style);border-right-width:1px}.border-b{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}.border-dashed{--tw-border-style:dashed;border-style:dashed}.border-solid{--tw-border-style:solid;border-style:solid}.border-\[\#c62828\]{border-color:#c62828}.border-\[\#d2d8e2\]{border-color:#d2d8e2}.border-\[\#e0b020\]{border-color:#e0b020}.border-border{border-color:var(--color-border)}.border-border-strong{border-color:var(--color-border-strong)}.border-danger{border-color:var(--color-danger)}.border-primary{border-color:var(--color-primary)}.border-side-border{border-color:var(--color-side-border)}.border-transparent{border-color:#0000}.bg-\[\#1d2740\]{background-color:#1d2740}.bg-\[\#22304d\]{background-color:#22304d}.bg-\[\#f58a8a\]{background-color:#f58a8a}.bg-\[\#fdf0f0\]{background-color:#fdf0f0}.bg-accent{background-color:var(--color-accent)}.bg-accent-soft{background-color:var(--color-accent-soft)}.bg-bg{background-color:var(--color-bg)}.bg-border{background-color:var(--color-border)}.bg-border-strong{background-color:var(--color-border-strong)}.bg-danger{background-color:var(--color-danger)}.bg-danger-soft{background-color:var(--color-danger-soft)}.bg-hover{background-color:var(--color-hover)}.bg-ok-bg{background-color:var(--color-ok-bg)}.bg-on-primary{background-color:var(--color-on-primary)}.bg-overlay{background-color:var(--color-overlay)}.bg-primary{background-color:var(--color-primary)}.bg-sel{background-color:var(--color-sel)}.bg-side{background-color:var(--color-side)}.bg-skel{background-color:var(--color-skel)}.bg-subtle{background-color:var(--color-subtle)}.bg-surface{background-color:var(--color-surface)}.bg-transparent{background-color:#0000}.bg-white{background-color:var(--color-white)}.object-contain{object-fit:contain}.object-cover{object-fit:cover}.p-0{padding:calc(var(--spacing) * 0)}.p-1{padding:calc(var(--spacing) * 1)}.p-1\.5{padding:calc(var(--spacing) * 1.5)}.p-2{padding:calc(var(--spacing) * 2)}.p-4{padding:calc(var(--spacing) * 4)}.p-5{padding:calc(var(--spacing) * 5)}.p-6{padding:calc(var(--spacing) * 6)}.p-7{padding:calc(var(--spacing) * 7)}.p-8{padding:calc(var(--spacing) * 8)}.px-0\!{padding-inline:calc(var(--spacing) * 0)!important}.px-0\.5{padding-inline:calc(var(--spacing) * .5)}.px-1{padding-inline:calc(var(--spacing) * 1)}.px-1\.5{padding-inline:calc(var(--spacing) * 1.5)}.px-2{padding-inline:calc(var(--spacing) * 2)}.px-2\.5{padding-inline:calc(var(--spacing) * 2.5)}.px-3{padding-inline:calc(var(--spacing) * 3)}.px-3\.5{padding-inline:calc(var(--spacing) * 3.5)}.px-4{padding-inline:calc(var(--spacing) * 4)}.px-5{padding-inline:calc(var(--spacing) * 5)}.px-6{padding-inline:calc(var(--spacing) * 6)}.px-8{padding-inline:calc(var(--spacing) * 8)}.px-\[18px\]{padding-inline:18px}.py-1{padding-block:calc(var(--spacing) * 1)}.py-2{padding-block:calc(var(--spacing) * 2)}.py-2\.5{padding-block:calc(var(--spacing) * 2.5)}.py-3{padding-block:calc(var(--spacing) * 3)}.py-3\.5{padding-block:calc(var(--spacing) * 3.5)}.py-4{padding-block:calc(var(--spacing) * 4)}.py-6{padding-block:calc(var(--spacing) * 6)}.py-7{padding-block:calc(var(--spacing) * 7)}.py-20{padding-block:calc(var(--spacing) * 20)}.pt-1{padding-top:calc(var(--spacing) * 1)}.pt-3{padding-top:calc(var(--spacing) * 3)}.pt-3\.5{padding-top:calc(var(--spacing) * 3.5)}.pr-1{padding-right:calc(var(--spacing) * 1)}.pr-1\.5{padding-right:calc(var(--spacing) * 1.5)}.pr-2\.5{padding-right:calc(var(--spacing) * 2.5)}.pr-3{padding-right:calc(var(--spacing) * 3)}.pr-3\.5{padding-right:calc(var(--spacing) * 3.5)}.pr-5{padding-right:calc(var(--spacing) * 5)}.pr-6{padding-right:calc(var(--spacing) * 6)}.pr-10{padding-right:calc(var(--spacing) * 10)}.pr-12{padding-right:calc(var(--spacing) * 12)}.pb-2{padding-bottom:calc(var(--spacing) * 2)}.pb-3{padding-bottom:calc(var(--spacing) * 3)}.pb-4{padding-bottom:calc(var(--spacing) * 4)}.pb-6{padding-bottom:calc(var(--spacing) * 6)}.pb-24{padding-bottom:calc(var(--spacing) * 24)}.pl-1{padding-left:calc(var(--spacing) * 1)}.pl-2{padding-left:calc(var(--spacing) * 2)}.pl-3\.5{padding-left:calc(var(--spacing) * 3.5)}.pl-5{padding-left:calc(var(--spacing) * 5)}.pl-8{padding-left:calc(var(--spacing) * 8)}.pl-9{padding-left:calc(var(--spacing) * 9)}.pl-10{padding-left:calc(var(--spacing) * 10)}.text-center{text-align:center}.text-left{text-align:left}.align-\[-2px\]{vertical-align:-2px}.font-mono{font-family:var(--font-mono)}.text-\[10px\]{font-size:10px}.text-\[11px\]{font-size:11px}.text-\[12px\]{font-size:12px}.text-\[13px\]{font-size:13px}.text-\[14px\]{font-size:14px}.text-\[16px\]{font-size:16px}.text-\[17px\]{font-size:17px}.text-\[18px\]{font-size:18px}.text-\[20px\]{font-size:20px}.text-\[22px\]{font-size:22px}.text-\[24px\]{font-size:24px}.text-\[26px\]{font-size:26px}.leading-\[1\.2\]{--tw-leading:1.2;line-height:1.2}.leading-tight{--tw-leading:var(--leading-tight);line-height:var(--leading-tight)}.font-bold{--tw-font-weight:var(--font-weight-bold);font-weight:var(--font-weight-bold)}.font-medium{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.font-normal{--tw-font-weight:var(--font-weight-normal);font-weight:var(--font-weight-normal)}.font-semibold{--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold)}.tracking-\[-0\.01em\]{--tw-tracking:-.01em;letter-spacing:-.01em}.tracking-\[-0\.02em\]{--tw-tracking:-.02em;letter-spacing:-.02em}.tracking-\[0\.02em\]{--tw-tracking:.02em;letter-spacing:.02em}.\[overflow-wrap\:anywhere\]{overflow-wrap:anywhere}.whitespace-nowrap{white-space:nowrap}.whitespace-pre-wrap{white-space:pre-wrap}.text-\[\#1d2740\]{color:#1d2740}.text-\[\#141b2d\]{color:#141b2d}.text-\[\#c3cbda\]{color:#c3cbda}.text-\[\#c62828\]{color:#c62828}.text-accent{color:var(--color-accent)}.text-danger{color:var(--color-danger)}.text-muted{color:var(--color-muted)}.text-ok-text{color:var(--color-ok-text)}.text-on-accent{color:var(--color-on-accent)}.text-on-primary{color:var(--color-on-primary)}.text-side-text{color:var(--color-side-text)}.text-text{color:var(--color-text)}.text-white{color:var(--color-white)}.uppercase{text-transform:uppercase}.tabular-nums{--tw-numeric-spacing:tabular-nums;font-variant-numeric:var(--tw-ordinal,) var(--tw-slashed-zero,) var(--tw-numeric-figure,) var(--tw-numeric-spacing,) var(--tw-numeric-fraction,)}.line-through{text-decoration-line:line-through}.no-underline{text-decoration-line:none}.accent-primary{accent-color:var(--color-primary)}.opacity-50{opacity:.5}.shadow-card{--tw-shadow:var(--c-shadow-card);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-login{--tw-shadow:0 24px 60px var(--tw-shadow-color,#00000059);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-menu{--tw-shadow:0 16px 40px var(--tw-shadow-color,#141b2d29);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-pop{--tw-shadow:0 16px 40px var(--tw-shadow-color,#141b2d2e);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-tab{--tw-shadow:0 1px 3px var(--tw-shadow-color,#141b2d1f);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-toast{--tw-shadow:0 16px 40px var(--tw-shadow-color,#00000040);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.outline{outline-style:var(--tw-outline-style);outline-width:1px}.filter{filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.transition-colors{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-transform{transition-property:transform,translate,scale,rotate;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.duration-150{--tw-duration:.15s;transition-duration:.15s}.ease-out{--tw-ease:var(--ease-out);transition-timing-function:var(--ease-out)}.outline-none{--tw-outline-style:none;outline-style:none}.select-none{-webkit-user-select:none;user-select:none}.first\:pl-5:first-child{padding-left:calc(var(--spacing) * 5)}.last\:pr-5:last-child{padding-right:calc(var(--spacing) * 5)}.focus-within\:border-primary:focus-within{border-color:var(--color-primary)}.focus-within\:shadow-\[0_0_0_3px_var\(--c-ring\)\]:focus-within{--tw-shadow:0 0 0 3px var(--tw-shadow-color,var(--c-ring));box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}@media(hover:hover){.hover\:bg-danger-soft:hover{background-color:var(--color-danger-soft)}.hover\:bg-hover:hover{background-color:var(--color-hover)}.hover\:bg-side-hover:hover{background-color:var(--color-side-hover)}.hover\:text-danger:hover{color:var(--color-danger)}.hover\:text-text:hover{color:var(--color-text)}.hover\:text-white:hover{color:var(--color-white)}.hover\:opacity-90:hover{opacity:.9}}.focus\:bg-sel:focus{background-color:var(--color-sel)}.focus\:text-text:focus{color:var(--color-text)}.focus-visible\:shadow-none:focus-visible{--tw-shadow:0 0 #0000;box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.focus-visible\:outline-none:focus-visible{--tw-outline-style:none;outline-style:none}.disabled\:cursor-not-allowed:disabled{cursor:not-allowed}.disabled\:opacity-60:disabled{opacity:.6}@media(hover:hover){.disabled\:hover\:text-muted:disabled:hover{color:var(--color-muted)}}.has-\[\[data-invalid\]\]\:border-danger:has([data-invalid]){border-color:var(--color-danger)}.data-\[disabled\]\:cursor-not-allowed[data-disabled]{cursor:not-allowed}.data-\[disabled\]\:text-placeholder[data-disabled]{color:var(--color-placeholder)}.data-\[disabled\]\:opacity-40[data-disabled]{opacity:.4}@media(hover:hover){.data-\[disabled\]\:hover\:bg-transparent[data-disabled]:hover{background-color:#0000}}.data-\[highlighted\]\:bg-hover[data-highlighted]{background-color:var(--color-hover)}.data-\[outside-view\]\:text-placeholder[data-outside-view],.data-\[placeholder\]\:text-placeholder[data-placeholder]{color:var(--color-placeholder)}.focus\:data-\[placeholder\]\:text-text:focus[data-placeholder]{color:var(--color-text)}.data-\[selected\]\:bg-primary[data-selected]{background-color:var(--color-primary)}.data-\[selected\]\:font-semibold[data-selected]{--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold)}.data-\[selected\]\:text-on-primary[data-selected]{color:var(--color-on-primary)}.data-\[state\=checked\]\:border-primary[data-state=checked]{border-color:var(--color-primary)}.data-\[state\=checked\]\:bg-danger-soft[data-state=checked]{background-color:var(--color-danger-soft)}.data-\[state\=checked\]\:bg-ok-bg[data-state=checked]{background-color:var(--color-ok-bg)}.data-\[state\=checked\]\:bg-primary[data-state=checked]{background-color:var(--color-primary)}.data-\[state\=checked\]\:bg-surface[data-state=checked]{background-color:var(--color-surface)}.data-\[state\=checked\]\:text-\[14px\][data-state=checked]{font-size:14px}.data-\[state\=checked\]\:font-semibold[data-state=checked]{--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold)}.data-\[state\=checked\]\:text-danger[data-state=checked]{color:var(--color-danger)}.data-\[state\=checked\]\:text-ok-text[data-state=checked]{color:var(--color-ok-text)}.data-\[state\=checked\]\:text-on-primary[data-state=checked]{color:var(--color-on-primary)}.data-\[state\=checked\]\:text-text[data-state=checked]{color:var(--color-text)}.data-\[state\=checked\]\:shadow-tab[data-state=checked]{--tw-shadow:0 1px 3px var(--tw-shadow-color,#141b2d1f);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.data-\[today\]\:font-semibold[data-today]{--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold)}.data-\[today\]\:shadow-\[inset_0_0_0_1px_var\(--c-border-strong\)\][data-today]{--tw-shadow:inset 0 0 0 1px var(--tw-shadow-color,var(--c-border-strong));box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.data-\[unavailable\]\:cursor-not-allowed[data-unavailable]{cursor:not-allowed}.data-\[unavailable\]\:opacity-40[data-unavailable]{opacity:.4}@media not all and (min-width:1099px){.max-\[1099px\]\:hidden{display:none}}@media not all and (min-width:40rem){.max-sm\:flex-col{flex-direction:column}.max-sm\:items-start{align-items:flex-start}}@media(min-width:600px){.min-\[600px\]\:col-start-1{grid-column-start:1}.min-\[600px\]\:col-start-2{grid-column-start:2}.min-\[600px\]\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(min-width:900px){.min-\[900px\]\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}}}@font-face{font-family:DM Sans;font-style:normal;font-display:swap;font-weight:400;src:url(./dm-sans-latin-ext-400-normal-BtiwyxMk.woff2)format("woff2"),url(./dm-sans-latin-ext-400-normal-BjWJ59Pq.woff)format("woff");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:DM Sans;font-style:normal;font-display:swap;font-weight:400;src:url(./dm-sans-latin-400-normal-CW0RaeGs.woff2)format("woff2"),url(./dm-sans-latin-400-normal-BwCSEQnW.woff)format("woff");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:DM Sans;font-style:normal;font-display:swap;font-weight:500;src:url(./dm-sans-latin-ext-500-normal-BJfUCQsA.woff2)format("woff2"),url(./dm-sans-latin-ext-500-normal-DR84L5F-.woff)format("woff");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:DM Sans;font-style:normal;font-display:swap;font-weight:500;src:url(./dm-sans-latin-500-normal-B9HHJjqV.woff2)format("woff2"),url(./dm-sans-latin-500-normal-Dr3UlScf.woff)format("woff");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:DM Sans;font-style:normal;font-display:swap;font-weight:600;src:url(./dm-sans-latin-ext-600-normal-4vooXBpG.woff2)format("woff2"),url(./dm-sans-latin-ext-600-normal-DRtaDpgU.woff)format("woff");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:DM Sans;font-style:normal;font-display:swap;font-weight:600;src:url(./dm-sans-latin-600-normal-Aqo67rzb.woff2)format("woff2"),url(./dm-sans-latin-600-normal-BmdmIIQ2.woff)format("woff");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:DM Sans;font-style:normal;font-display:swap;font-weight:700;src:url(./dm-sans-latin-ext-700-normal-CJIcxD6K.woff2)format("woff2"),url(./dm-sans-latin-ext-700-normal-BLI3TTWz.woff)format("woff");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:DM Sans;font-style:normal;font-display:swap;font-weight:700;src:url(./dm-sans-latin-700-normal-DvUfVpUG.woff2)format("woff2"),url(./dm-sans-latin-700-normal-CUSSCpQX.woff)format("woff");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:DM Mono;font-style:normal;font-display:swap;font-weight:400;src:url(./dm-mono-latin-ext-400-normal-C2zvOubV.woff2)format("woff2"),url(./dm-mono-latin-ext-400-normal-1aZr6b2b.woff)format("woff");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:DM Mono;font-style:normal;font-display:swap;font-weight:400;src:url(./dm-mono-latin-400-normal-4GdczIuU.woff2)format("woff2"),url(./dm-mono-latin-400-normal--0xN8mdc.woff)format("woff");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:DM Mono;font-style:normal;font-display:swap;font-weight:500;src:url(./dm-mono-latin-ext-500-normal-BtRyHRi6.woff2)format("woff2"),url(./dm-mono-latin-ext-500-normal-Dw3M13d8.woff)format("woff");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:DM Mono;font-style:normal;font-display:swap;font-weight:500;src:url(./dm-mono-latin-500-normal-DRMDZjhP.woff2)format("woff2"),url(./dm-mono-latin-500-normal-CN8Miw6E.woff)format("woff");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}:root{--c-bg:#f4f6f9;--c-surface:#fff;--c-subtle:#f3f5f8;--c-border:#e6e9ef;--c-border-strong:#d2d8e2;--c-text:#141b2d;--c-muted:#566175;--c-placeholder:#6b7588;--c-primary:#22304d;--c-on-primary:#fff;--c-danger:#c62828;--c-danger-soft:#fdf0f0;--c-ok-bg:#e3f4e8;--c-ok-text:#1c6b35;--c-ring:#fcc4288c;--c-hover:#f1f3f7;--c-sel:#fdf3cf;--c-skel:#eceff4;--c-overlay:#141b2d80;--c-side:#1d2740;--c-side-border:transparent;--c-shadow-card:0 1px 2px #141b2d0a, 0 4px 16px #141b2d0d}.dark{color-scheme:dark;--c-bg:#111726;--c-surface:#182033;--c-subtle:#1f283d;--c-border:#29334b;--c-border-strong:#3a4661;--c-text:#eef1f6;--c-muted:#a9b3c6;--c-placeholder:#8a95ab;--c-primary:#fcd34d;--c-on-primary:#1b2540;--c-danger:#f58a8a;--c-danger-soft:#3a1d24;--c-ok-bg:#173826;--c-ok-text:#8fdfa8;--c-ring:#fcd34d73;--c-hover:#212b42;--c-sel:#3a3622;--c-skel:#263049;--c-overlay:#050810b3;--c-side:#0d1320;--c-side-border:#222b40;--c-shadow-card:none}@keyframes summer-fade-in{0%{opacity:0}}@keyframes summer-dialog-in{0%{opacity:0;scale:.98}}@media(prefers-reduced-motion:reduce){.bg-overlay,[data-dialog-content],[role=alertdialog]{animation:none!important}.toast-enter-active{transition:none}}@property --tw-translate-x{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-y{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-z{syntax:"*";inherits:false;initial-value:0}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-leading{syntax:"*";inherits:false}@property --tw-font-weight{syntax:"*";inherits:false}@property --tw-tracking{syntax:"*";inherits:false}@property --tw-ordinal{syntax:"*";inherits:false}@property --tw-slashed-zero{syntax:"*";inherits:false}@property --tw-numeric-figure{syntax:"*";inherits:false}@property --tw-numeric-spacing{syntax:"*";inherits:false}@property --tw-numeric-fraction{syntax:"*";inherits:false}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-shadow-alpha{syntax:"";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow-alpha{syntax:"";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-outline-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-blur{syntax:"*";inherits:false}@property --tw-brightness{syntax:"*";inherits:false}@property --tw-contrast{syntax:"*";inherits:false}@property --tw-grayscale{syntax:"*";inherits:false}@property --tw-hue-rotate{syntax:"*";inherits:false}@property --tw-invert{syntax:"*";inherits:false}@property --tw-opacity{syntax:"*";inherits:false}@property --tw-saturate{syntax:"*";inherits:false}@property --tw-sepia{syntax:"*";inherits:false}@property --tw-drop-shadow{syntax:"*";inherits:false}@property --tw-drop-shadow-color{syntax:"*";inherits:false}@property --tw-drop-shadow-alpha{syntax:"";inherits:false;initial-value:100%}@property --tw-drop-shadow-size{syntax:"*";inherits:false}@property --tw-duration{syntax:"*";inherits:false}@property --tw-ease{syntax:"*";inherits:false}@keyframes spin{to{transform:rotate(360deg)}}
diff --git a/modules/boardwalk/dist/assets/index-CE_etpB7.js b/modules/boardwalk/dist/assets/index-kMerM-BR.js
similarity index 92%
rename from modules/boardwalk/dist/assets/index-CE_etpB7.js
rename to modules/boardwalk/dist/assets/index-kMerM-BR.js
index 12545d7..42371ef 100644
--- a/modules/boardwalk/dist/assets/index-CE_etpB7.js
+++ b/modules/boardwalk/dist/assets/index-kMerM-BR.js
@@ -6,4 +6,4 @@
- \`null\` or \`undefined\` if the progress is indeterminate.
Defaulting to \`null\`.`),null)}function mA(e){return Qo(e)&&!Number.isNaN(e)&&e>0?e:(console.error(`Invalid prop \`max\` of value \`${e}\` supplied to \`ProgressRoot\`. Only numbers greater than 0 are valid max values. Defaulting to \`${Dl}\`.`),Dl)}var yA=Q({__name:"ProgressRoot",props:{modelValue:{type:[Number,null],required:!1},max:{type:Number,required:!1,default:Dl},getValueLabel:{type:Function,required:!1,default:(e,t)=>Qo(e)?`${Math.round(e/t*Dl)}%`:void 0},getValueText:{type:Function,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},emits:["update:modelValue","update:max"],setup(e,{emit:t}){const n=e,a=t;ze();const r=ht(n,"modelValue",a,{passive:n.modelValue===void 0}),l=ht(n,"max",a,{passive:n.max===void 0});Fe(()=>r.value,async s=>{const i=vA(s,n.max);i!==s&&(await We(),r.value=i)},{immediate:!0}),Fe(()=>n.max,s=>{const i=mA(n.max);i!==s&&(l.value=i)},{immediate:!0});const o=x(()=>Lt(r.value)?"indeterminate":r.value===l.value?"complete":"loading");return hA({modelValue:r,max:l,progressState:o}),(s,i)=>(v(),F(u(Ue),{"as-child":s.asChild,as:s.as,"aria-valuemax":u(l),"aria-valuemin":0,"aria-valuenow":Qo(u(r))?u(r):void 0,"aria-valuetext":s.getValueText?.(u(r),u(l)),"aria-label":s.getValueLabel(u(r),u(l)),role:"progressbar","data-state":o.value,"data-value":u(r)??void 0,"data-max":u(l)},{default:T(()=>[he(s.$slots,"default",{modelValue:u(r)})]),_:3},8,["as-child","as","aria-valuemax","aria-valuenow","aria-valuetext","aria-label","data-state","data-value","data-max"]))}}),Vi=yA,gA=Q({__name:"ProgressIndicator",props:{asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},setup(e){const t=e,n=pA();return ze(),(a,r)=>(v(),F(u(Ue),Oe(t,{"data-state":u(n).progressState.value,"data-value":u(n).modelValue?.value??void 0,"data-max":u(n).max.value}),{default:T(()=>[he(a.$slots,"default")]),_:3},16,["data-state","data-value","data-max"]))}}),Li=gA;const bA="radio.select";function _A(e,t,n){uc(bA,n,{originalEvent:e,value:t})}var xA=Q({__name:"Radio",props:{id:{type:String,required:!1},value:{type:null,required:!1},disabled:{type:Boolean,required:!1,default:!1},checked:{type:Boolean,required:!1,default:void 0},asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:"button"},name:{type:String,required:!1},required:{type:Boolean,required:!1}},emits:["update:checked","select"],setup(e,{emit:t}){const n=e,a=t,r=ht(n,"checked",a,{passive:n.checked===void 0}),{value:l}=Ot(n),{forwardRef:o,currentElement:s}=ze(),i=Sc(s),c=x(()=>n.id&&s.value?document.querySelector(`[for="${n.id}"]`)?.innerText??n.value:void 0);function d(f){n.disabled||_A(f,n.value,p=>{a("select",p),!p?.defaultPrevented&&(r.value=!0,i.value&&p.stopPropagation())})}return(f,p)=>(v(),F(u(Ue),Oe(f.$attrs,{id:f.id,ref:u(o),role:"radio",type:f.as==="button"?"button":void 0,as:f.as,"aria-checked":u(r),"aria-label":c.value,"as-child":f.asChild,disabled:f.disabled?"":void 0,"data-state":u(r)?"checked":"unchecked","data-disabled":f.disabled?"":void 0,value:u(l),required:f.required,name:f.name,onClick:ut(d,["stop"])}),{default:T(()=>[he(f.$slots,"default",{checked:u(r)}),u(i)&&f.name?(v(),F(u(Pc),{key:0,type:"radio",tabindex:"-1",value:u(l),checked:!!u(r),name:f.name,disabled:f.disabled,required:f.required},null,8,["value","checked","name","disabled","required"])):re("v-if",!0)]),_:3},16,["id","type","as","aria-checked","aria-label","as-child","disabled","data-state","data-disabled","value","required","name"]))}}),wA=xA;const[kA,$A]=dt("RadioGroupRoot");var CA=Q({__name:"RadioGroupRoot",props:{modelValue:{type:null,required:!1},defaultValue:{type:null,required:!1},disabled:{type:Boolean,required:!1,default:!1},orientation:{type:String,required:!1,default:void 0},dir:{type:String,required:!1},loop:{type:Boolean,required:!1,default:!0},asChild:{type:Boolean,required:!1},as:{type:null,required:!1},name:{type:String,required:!1},required:{type:Boolean,required:!1,default:!1}},emits:["update:modelValue"],setup(e,{emit:t}){const n=e,a=t,{forwardRef:r,currentElement:l}=ze(),o=ht(n,"modelValue",a,{defaultValue:n.defaultValue,passive:n.modelValue===void 0}),{disabled:s,loop:i,orientation:c,name:d,required:f,dir:p}=Ot(n),h=ka(p),m=Sc(l);return $A({modelValue:o,changeModelValue:b=>{o.value=b},disabled:s,loop:i,orientation:c,name:d?.value,required:f}),(b,g)=>(v(),F(u(Km),{"as-child":"",orientation:u(c),dir:u(h),loop:u(i)},{default:T(()=>[L(u(Ue),{ref:u(r),role:"radiogroup","data-disabled":u(s)?"":void 0,"as-child":b.asChild,as:b.as,"aria-orientation":u(c),"aria-required":u(f),dir:u(h)},{default:T(()=>[he(b.$slots,"default",{modelValue:u(o)}),u(m)&&u(d)?(v(),F(u(Pc),{key:0,required:u(f),disabled:u(s),value:u(o),name:u(d)},null,8,["required","disabled","value","name"])):re("v-if",!0)]),_:3},8,["data-disabled","as-child","as","aria-orientation","aria-required","dir"])]),_:3},8,["orientation","dir","loop"]))}}),SA=CA;const[Wq,AA]=dt("RadioGroupItem");var EA=Q({inheritAttrs:!1,__name:"RadioGroupItem",props:{id:{type:String,required:!1},value:{type:null,required:!1},disabled:{type:Boolean,required:!1,default:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:"button"},name:{type:String,required:!1},required:{type:Boolean,required:!1}},emits:["select"],setup(e,{emit:t}){const n=e,a=t,{forwardRef:r,currentElement:l}=ze(),o=kA(),s=x(()=>o.disabled.value||n.disabled),i=x(()=>o.required.value||n.required),c=x(()=>kl(o.modelValue?.value,n.value));AA({disabled:s,checked:c});const d=q(!1),f=["ArrowUp","ArrowDown","ArrowLeft","ArrowRight"];Dr("keydown",h=>{f.includes(h.key)&&(d.value=!0)}),Dr("keyup",()=>{d.value=!1});function p(){setTimeout(()=>{d.value&&l.value?.click()},0)}return(h,m)=>(v(),F(u(Wm),{checked:c.value,disabled:s.value,"as-child":"",focusable:!s.value,active:c.value},{default:T(()=>[L(wA,Oe({...h.$attrs,...n},{ref:u(r),checked:c.value,required:i.value,disabled:s.value,"onUpdate:checked":m[0]||(m[0]=b=>u(o).changeModelValue(h.value)),onSelect:m[1]||(m[1]=b=>a("select",b)),onKeydown:m[2]||(m[2]=va(ut(()=>{},["prevent"]),["enter"])),onFocus:p}),{default:T(()=>[he(h.$slots,"default",{checked:c.value,required:i.value,disabled:s.value})]),_:3},16,["checked","required","disabled"])]),_:3},8,["checked","disabled","focusable","active"]))}}),MA=EA;const[DA,OA]=dt("TimeFieldRoot");function ho(e,t=zl(on())){return e&&"day"in e?e:xn(t,e)}var PA=Q({inheritAttrs:!1,__name:"TimeFieldRoot",props:{defaultValue:{type:Object,required:!1,default:void 0},defaultPlaceholder:{type:Object,required:!1},placeholder:{type:Object,required:!1,default:void 0},modelValue:{type:[Object,null],required:!1},hourCycle:{type:null,required:!1},step:{type:Object,required:!1},stepSnapping:{type:Boolean,required:!1,default:!1},granularity:{type:String,required:!1},hideTimeZone:{type:Boolean,required:!1},maxValue:{type:Object,required:!1},minValue:{type:Object,required:!1},locale:{type:String,required:!1},disabled:{type:Boolean,required:!1,default:!1},readonly:{type:Boolean,required:!1,default:!1},id:{type:String,required:!1},dir:{type:String,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1},name:{type:String,required:!1},required:{type:Boolean,required:!1}},emits:["update:modelValue","update:placeholder"],setup(e,{expose:t,emit:n}){const a=e,r=n,{disabled:l,readonly:o,granularity:s,defaultValue:i,minValue:c,maxValue:d,stepSnapping:f,dir:p,locale:h}=Ot(a),m=Fs(h),b=ka(p),g=Cc(m.value,{hourCycle:Sl(a.hourCycle)}),{primitiveElement:y,currentElement:w}=Ua(),A=q(new Set),S=x(()=>hm(a)),R=x(()=>c.value?ho(c.value):void 0),H=x(()=>d.value?ho(d.value):void 0);mt(()=>{hp(w.value).forEach(Z=>A.value.add(Z))});const j=ht(a,"modelValue",r,{defaultValue:i.value,passive:a.modelValue===void 0}),U=x({get(){return Lt(j.value)?j.value:ho(j.value)},set(Z){return Z?j.value=j.value&&"day"in j.value?Z:new mn(Z.hour,Z.minute,Z.second,j.value?.millisecond):j.value=Z,Z}}),k=J2({defaultPlaceholder:a.placeholder,defaultValue:j.value}),I=ht(a,"placeholder",r,{defaultValue:a.defaultPlaceholder??k.copy(),passive:a.placeholder===void 0}),W=x({get(){return ho(I.value)},set(Z){return Z&&(I.value="day"in I.value?Z.copy():new mn(Z.hour,Z.minute,Z.second,I.value?.millisecond)),Z}}),V=x(()=>s.value?s.value:"minute"),B=x(()=>j.value?!!(R.value&&ca(U.value,R.value)||H.value&&ca(H.value,U.value)):!1),X=M3(V.value),M=q(j.value?{...Tu({value:U.value,formatter:g})}:{...X}),ne=x(()=>Um({granularity:V.value,dateRef:W.value,formatter:g,hideTimeZone:a.hideTimeZone,hourCycle:a.hourCycle,segmentValues:M.value,locale:m,isTimeValue:!0})),ee=x(()=>{const Z=ne.value.arr;return a.hourCycle===12?Z.map(K=>{if(K.part==="hour"&&"hour"in M.value){const te=M.value.hour;if(te!==null){const ie=te===0?12:te>12?te-12:te;return{...K,value:ie.toString()}}}return K}):Z}),ue=x(()=>ee.value.filter(({part:Z})=>Z!=="literal"));Fe(m,Z=>{g.getLocale()!==Z&&(g.setLocale(Z),We(()=>{A.value.clear(),hp(w.value).forEach(K=>A.value.add(K))}))}),Fe(U,Z=>{!Lt(Z)&&(!_r(W.value,Z)||W.value.compare(Z)!==0)&&(I.value=Z.copy())}),Fe([U,m],([Z])=>{Lt(Z)?Object.values(M.value).every(K=>K!==null)&&Lt(Z)&&(M.value={...X}):M.value={...Tu({value:Z,formatter:g})}});const ve=q(null),ye=x(()=>Array.from(A.value).findIndex(Z=>Z.getAttribute("data-reka-time-field-segment")===ve.value?.getAttribute("data-reka-time-field-segment"))),be=x(()=>{const Z=b.value==="rtl"?-1:1;return(Z<0?ye.value<0:ye.value>A.value.size-1)?null:Array.from(A.value)[ye.value+Z]}),oe=x(()=>{const Z=b.value==="rtl"?-1:1;return(Z>0?ye.value<0:ye.value>A.value.size-1)?null:Array.from(A.value)[ye.value-Z]}),Ce=Ir();function ce(Z){Z.isComposing||Dn(Z.key)&&(Z.key===Ce.ARROW_LEFT&&oe.value?.focus(),Z.key===Ce.ARROW_RIGHT&&be.value?.focus())}function Ee(Z){ve.value=Z}return OA({locale:m,modelValue:U,placeholder:W,disabled:l,formatter:g,hourCycle:a.hourCycle,step:S,stepSnapping:f,readonly:o,segmentValues:M,isInvalid:B,segmentContents:ue,elements:A,setFocusedElement:Ee,focusNext(){be.value?.focus()}}),t({setFocusedElement:Ee}),(Z,K)=>(v(),F(u(Ue),Oe(Z.$attrs,{ref_key:"primitiveElement",ref:y,role:"group","aria-disabled":u(l)?!0:void 0,"data-disabled":u(l)?"":void 0,"data-readonly":u(o)?"":void 0,"data-invalid":B.value?"":void 0,dir:u(b),onKeydown:va(ce,["left","right"])}),{default:T(()=>[he(Z.$slots,"default",{modelValue:u(j),segments:ee.value,isInvalid:B.value}),L(u(Oc),{id:Z.id,as:"input",feature:"focusable",tabindex:"-1",value:u(j)?u(j).toString():"",name:Z.name,disabled:u(l),required:Z.required,onFocus:K[0]||(K[0]=te=>Array.from(A.value)?.[0]?.focus())},null,8,["id","value","name","disabled","required"])]),_:3},16,["aria-disabled","data-disabled","data-readonly","data-invalid","dir"]))}}),mp=PA,qA=Q({__name:"TimeFieldInput",props:{part:{type:null,required:!0},asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},setup(e){const t=e,n=DA(),a=q(!0),r=q(!1),{handleSegmentClick:l,handleSegmentKeydown:o,handleSegmentBeforeInput:s,handleSegmentCompositionStart:i,handleSegmentCompositionEnd:c,handleSegmentFocusOut:d,attributes:f}=Hm({hasLeftFocus:a,lastKeyZero:r,placeholder:n.placeholder,hourCycle:n.hourCycle,step:n.step,stepSnapping:n.stepSnapping,segmentValues:n.segmentValues,formatter:n.formatter,part:t.part,disabled:n.disabled,readonly:n.readonly,focusNext:n.focusNext,modelValue:n.modelValue}),p=x(()=>n.disabled.value),h=x(()=>n.readonly.value),m=x(()=>n.isInvalid.value);return(b,g)=>(v(),F(u(Ue),Oe({as:b.as,"as-child":b.asChild},u(f),{contenteditable:p.value||h.value?!1:b.part!=="literal","data-reka-time-field-segment":b.part,"aria-disabled":p.value?!0:void 0,"aria-readonly":h.value?!0:void 0,"data-disabled":p.value?"":void 0,"data-invalid":m.value?"":void 0,"aria-invalid":m.value?!0:void 0},wh(b.part!=="literal"?{mousedown:u(l),keydown:u(o),beforeinput:u(s),compositionstart:u(i),compositionend:u(c),focusout:()=>{a.value=!0,u(d)()},focusin:y=>{u(n).setFocusedElement(y.target)}}:{})),{default:T(()=>[he(b.$slots,"default")]),_:3},16,["as","as-child","contenteditable","data-reka-time-field-segment","aria-disabled","aria-readonly","data-disabled","data-invalid","aria-invalid"]))}}),yp=qA;const Xo=q(null),ry=q(null);let hl=null;function ly(e){oy(),ry.value=e,!(e===null||e<=0)&&(hl=setTimeout(()=>{hl=null,ac()},e*800))}function oy(){hl!==null&&(clearTimeout(hl),hl=null)}O0(ly);const fr=pt(Xo);async function TA(e,t){const{data:n,response:a}=await qe.POST("/auth/login",{body:{login:e,password:t}});return!a.ok||!n?!1:(ly(typeof n.data.expires_in=="number"?n.data.expires_in:null),!0)}async function sy(){const{data:e,response:t}=await qe.GET("/auth/me");return Xo.value=t.ok&&e?e.data:null,Xo.value}function iy(){oy(),Xo.value=null,ry.value=null}async function RA(e){try{await qe.POST("/auth/logout")}catch{}finally{iy(),B0([]),V0([])}e&&await e.replace({name:"login"}).catch(()=>{})}const IA={class:"flex size-[34px] shrink-0 items-center justify-center rounded-full bg-accent text-[13px] font-bold text-on-accent","aria-hidden":"true","data-user-initials":""},BA={class:"flex flex-col leading-tight max-[1099px]:hidden","data-user-identity":""},FA={class:"font-semibold"},NA={key:0,class:"text-[12px] text-muted","data-user-role":""},VA={class:"flex items-center gap-3 px-2 py-2"},LA={class:"flex size-10 shrink-0 items-center justify-center rounded-full bg-accent text-[14px] font-bold text-on-accent","aria-hidden":"true"},jA={class:"flex min-w-0 flex-col leading-tight"},zA={class:"truncate font-bold"},UA={class:"truncate text-[13px] text-muted"},HA=Q({__name:"UserMenu",setup(e){const t=Tr(),n=x(()=>{const o=fr.value;if(!o)return"";const s=`${o.first_name} ${o.last_name}`.trim();return s===""?o.login:s}),a=x(()=>{const o=fr.value;if(!o)return"";const s=[o.first_name,o.last_name].map(i=>i.trim()).filter(Boolean);return s.length>0?s.slice(0,2).map(i=>i.charAt(0).toUpperCase()).join(""):o.login.slice(0,2).toUpperCase()}),r=x(()=>fr.value?.role?.name??"");async function l(){await RA(t)}return(o,s)=>(v(),F(u(Xm),{modal:!1},{default:T(()=>[L(u(ay),{"data-user-menu":"",disabled:!u(fr),"aria-label":`${u(D)("backend::lang.nav.user_menu")}: ${n.value}`,class:"flex h-input items-center gap-2.5 rounded-inner px-2 text-left transition-colors duration-150 ease-out hover:bg-hover"},{default:T(()=>[O("span",IA,P(a.value),1),O("span",BA,[O("span",FA,P(n.value),1),r.value?(v(),$("span",NA,P(r.value),1)):re("",!0)]),L(u(Nl),{size:16,class:"text-muted","aria-hidden":"true"})]),_:1},8,["disabled","aria-label"]),L(u(ny),null,{default:T(()=>[L(u(ey),{"data-user-menu-content":"",align:"end","side-offset":8,class:"z-50 flex w-[280px] flex-col rounded-[14px] border border-border bg-surface p-2 text-text shadow-menu"},{default:T(()=>[O("div",VA,[O("span",LA,P(a.value),1),O("span",jA,[O("span",zA,P(n.value),1),O("span",UA,P(u(fr)?.email),1)])]),L(u(dA),{class:"my-1 h-px bg-border"}),L(u(ty),{"data-action":"logout",class:"flex h-10 cursor-pointer items-center gap-2.5 rounded-control px-3 font-medium outline-none transition-colors duration-150 ease-out data-[highlighted]:bg-hover",onSelect:l},{default:T(()=>[L(u(kv),{size:18,"aria-hidden":"true"}),O("span",null,P(u(D)("backend::lang.auth.logout")),1)]),_:1})]),_:1})]),_:1})]),_:1}))}}),KA=4e3,Ol=q([]),Ru=new Map;let WA=1;const GA=pt(Ol);function Te(e,t="success"){const n=WA++;return Ol.value=[{id:n,text:e,tone:t},...Ol.value],Ru.set(n,setTimeout(()=>uy(n),KA)),n}function uy(e){const t=Ru.get(e);t!==void 0&&(clearTimeout(t),Ru.delete(e)),Ol.value=Ol.value.filter(n=>n.id!==e)}const YA=["role","data-tone"],JA={class:"font-medium"},ZA=["aria-label","onClick"],QA=Q({__name:"Toast",setup(e){return(t,n)=>(v(),F(a1,{tag:"div",name:"toast",class:"pointer-events-none fixed inset-x-0 bottom-[88px] z-50 flex flex-col items-center gap-2 px-4"},{default:T(()=>[(v(!0),$(xe,null,Be(u(GA),a=>(v(),$("div",{key:a.id,role:a.tone==="danger"?"alert":"status","data-tone":a.tone,class:"pointer-events-auto flex max-w-[560px] items-center gap-3 rounded-[14px] bg-[#1d2740] py-3 pr-2.5 pl-3.5 text-white shadow-toast"},[O("span",{class:ke([a.tone==="danger"?"bg-[#f58a8a] text-[#1d2740]":"bg-accent text-on-accent","flex size-[26px] shrink-0 items-center justify-center rounded-full"]),"aria-hidden":"true"},[a.tone==="danger"?(v(),F(u(Vt),{key:0,size:16})):(v(),F(u(La),{key:1,size:16}))],2),O("span",JA,P(a.text),1),O("button",{type:"button","aria-label":u(D)("backend::lang.form.close"),class:"flex size-8 items-center justify-center rounded-pager text-[#c3cbda] transition-colors duration-150 ease-out hover:bg-side-hover hover:text-white",onClick:r=>u(uy)(a.id)},[L(u(Yt),{size:16,"aria-hidden":"true"})],8,ZA)],8,YA))),128))]),_:1}))}}),XA={class:"flex min-h-screen bg-bg text-text"},eE={class:"flex min-w-0 flex-1 flex-col"},tE={class:"flex h-header shrink-0 items-center justify-between gap-4 border-b border-border bg-surface pr-6 pl-8"},nE={class:"min-w-0 flex-1 px-8 py-7"},aE=Q({__name:"AppShell",setup(e){const t=ln(),{collapsed:n,watchViewport:a}=Rv(),r=a();Pt(r);const l=x(()=>Fl(String(t.params.vendor??""),String(t.params.plugin??"")));return(o,s)=>(v(),$("div",XA,[L(wk),l.value&&!u(n)?(v(),F(Ak,{key:0,entry:l.value},null,8,["entry"])):re("",!0),O("div",eE,[O("header",tE,[L(Ok),L(HA)]),O("main",nE,[he(o.$slots,"default")])]),L(QA)]))}}),rE=Q({__name:"App",setup(e){const t=ln(),n=x(()=>t.meta.shell===!0);return Zt(()=>{document.title=j0(t)}),(a,r)=>n.value?(v(),F(aE,{key:0},{default:T(()=>[L(u(hu),null,{default:T(({Component:l,route:o})=>[(v(),F(Bt(l),{key:o.path}))]),_:1})]),_:1})):(v(),F(u(hu),{key:1}))}}),lE="data-summer-controller",ji=new Map,Iu=new Map;let Bu="";function cy(){return`${Ss.base}/assets/`}function dy(e){if(!e.startsWith(cy())||e.includes("\\"))return!1;for(const n of e){const a=n.codePointAt(0)??0;if(a<=32||a===127)return!1}return!(e.split(/[?#]/,1)[0]??"").split("/").some(n=>{const a=n.toLowerCase().replaceAll("%2e",".");return a==="."||a===".."})}function oE(e){if(!dy(e))return Promise.reject(new Error(`plugin script outside ${cy()}: ${e}`));const t=ji.get(e);if(t)return t;const n=new Promise((a,r)=>{const l=document.createElement("script");l.type="module",l.addEventListener("load",()=>a(),{once:!0}),l.addEventListener("error",()=>{ji.delete(e),l.remove(),r(new Error(`plugin script failed to load: ${e}`))},{once:!0}),l.src=e,document.head.appendChild(l)});return ji.set(e,n),n}function sE(e,t){for(const n of t){const a=`${e}
-${n}`;if(!dy(n)||Iu.has(a))continue;const r=document.createElement("link");r.rel="stylesheet",r.setAttribute(lE,e),r.disabled=e!==Bu,r.href=n,Iu.set(a,{owner:e,link:r}),document.head.appendChild(r)}}function iE(e){Bu=e;for(const{owner:t,link:n}of Iu.values())n.disabled=t!==Bu}async function Hc(e,t){sE(e,t?.styles??[]);const n=t?.scripts??[],a=await Promise.allSettled(n.map(r=>oE(r)));return n.filter((r,l)=>a[l]?.status==="rejected")}const uE={class:"flex min-h-screen items-center justify-center px-4",style:{background:"radial-gradient(ellipse at 50% 35%, #2b3a5c 0%, #1d2740 60%)"}},cE={class:"flex w-full max-w-[400px] flex-col gap-6"},dE={class:"flex items-center justify-center gap-3"},fE={class:"flex size-[34px] items-center justify-center rounded-full bg-accent-soft"},pE={class:"text-[22px] font-bold tracking-[-0.02em]"},hE={class:"flex flex-col gap-1.5"},vE={class:"font-semibold"},mE={class:"flex flex-col gap-1.5"},yE={class:"font-semibold"},gE=["aria-invalid"],bE={key:0,role:"alert",class:"flex items-center gap-2.5 rounded-control bg-[#fdf0f0] px-3.5 py-3 text-[#c62828]"},_E=["disabled"],xE=Q({__name:"LoginView",setup(e){const t=ln(),n=Tr(),a=q(""),r=q(""),l=q(!1),o=q(!1);async function s(){if(!o.value){o.value=!0,l.value=!1;try{if(!await TA(a.value.trim(),r.value)||!await sy()){l.value=!0;return}r.value="",await Promise.all([mv(),yv().catch(()=>[])]),await n.replace(qy(t.query.redirect)??"/")}finally{o.value=!1}}}return(i,c)=>(v(),$("main",uE,[O("div",cE,[O("div",dE,[O("span",fE,[L(u(Ds),{size:20,class:"text-accent","aria-hidden":"true"})]),c[2]||(c[2]=O("span",{class:"text-[18px] font-bold text-white"},[Se("Summer"),O("span",{class:"text-accent"},"CMS")],-1))]),O("form",{class:"flex flex-col gap-[18px] rounded-card bg-white p-8 text-[#141b2d] shadow-login",novalidate:"",onSubmit:ut(s,["prevent"])},[O("h1",pE,P(u(D)("backend::lang.auth.title")),1),O("label",hE,[O("span",vE,P(u(D)("backend::lang.auth.login")),1),Va(O("input",{"onUpdate:modelValue":c[0]||(c[0]=d=>a.value=d),name:"login",type:"text",autocomplete:"username",required:"",class:"h-input rounded-control border border-[#d2d8e2] bg-white px-3.5"},null,512),[[No,a.value]])]),O("label",mE,[O("span",yE,P(u(D)("backend::lang.auth.password")),1),Va(O("input",{"onUpdate:modelValue":c[1]||(c[1]=d=>r.value=d),name:"password",type:"password",autocomplete:"current-password",required:"","aria-invalid":l.value?"true":void 0,class:ke([l.value?"border-[#c62828]":"border-[#d2d8e2]","h-input rounded-control border bg-white px-3.5"])},null,10,gE),[[No,r.value]])]),l.value?(v(),$("div",bE,[L(u(Vt),{size:18,"aria-hidden":"true"}),O("span",null,P(u(D)("backend::lang.auth.invalid")),1)])):re("",!0),O("button",{type:"submit",disabled:o.value,class:"h-input rounded-control bg-[#22304d] font-semibold text-white disabled:opacity-60"},P(u(D)("backend::lang.auth.submit")),9,_E)],32)])]))}}),wE=/^filter\[(.+)\]$/,kE=/^[1-9]\d*$/;function rr(e){const t=Array.isArray(e)?e[e.length-1]:e;return typeof t=="string"?t:""}function gp(e){return kE.test(e)?Number(e):void 0}function $E(e){const t={},n=rr(e.search).trim();n!==""&&(t.search=n);const a=rr(e.sort).trim();if(a!==""){t.sort=a;const s=rr(e.dir);t.dir=s==="desc"?"desc":"asc"}const r=gp(rr(e.page));r!==void 0&&(t.page=r);const l=gp(rr(e.per_page));l!==void 0&&(t.per_page=l);const o={};for(const s of Object.keys(e).sort()){const i=wE.exec(s)?.[1],c=rr(e[s]);i&&c!==""&&(o[i]=c)}return Object.keys(o).length>0&&(t.filter=o),t}function fy(e){const t={};e.search&&(t.search=e.search),e.sort&&(t.sort=e.sort,t.dir=e.dir==="desc"?"desc":"asc"),e.page!==void 0&&e.page>1&&(t.page=String(e.page)),e.per_page!==void 0&&(t.per_page=String(e.per_page));for(const n of Object.keys(e.filter??{}).sort()){const a=e.filter?.[n];a!==void 0&&a!==""&&(t[`filter[${n}]`]=a)}return t}function CE(e){return JSON.stringify(fy(e))}const bp=/^\d+$/;function py(e,t,n){const a=ws(t),r=Hn(t);if(!a||!r)return"/";const o=((e??"").trim().split(/[?#]/,1)[0]??"").split("/").filter(d=>d!==""),s=[a.vendor,a.plugin,a.controller];if(!s.every((d,f)=>o[f]?.toLowerCase()===d.toLowerCase()))return r;const c=o.slice(s.length);if(c.length===0)return r;if(c.length===1&&c[0]==="create")return`${r}/create`;if(c.length===2&&c[0]==="update"){const d=c[1]===":id"?String(n??""):c[1]??"";return bp.test(d)?`${r}/${d}`:r}if(c.length===2&&c[0]==="preview"){const d=c[1]===":id"?String(n??""):c[1]??"";return bp.test(d)?`${r}/${d}/preview`:r}return r}const SE={key:0,"data-switch":"true",class:"inline-flex h-6 items-center gap-1 rounded-pill bg-ok-bg px-2.5 text-[12px] font-semibold text-ok-text"},AE={key:1,"data-switch":"false",class:"inline-flex h-6 items-center rounded-pill border border-border-strong px-2.5 text-[12px] font-semibold text-muted"},EE={key:1,class:"text-muted","data-empty":""},ME={key:2,class:"text-[13px] text-muted tabular-nums"},lr=Q({__name:"CellValue",props:{column:{},value:{}},setup(e){const t=e;function n(f){return f==null||f===""}function a(f){return n(f)?"":Array.isArray(f)?f.map(a).filter(p=>p!=="").join(", "):typeof f=="boolean"?D(f?"backend::lang.list.column_switch_true":"backend::lang.list.column_switch_false"):typeof f=="object"?"":String(f)}function r(f){return String(f).padStart(2,"0")}function l(f){if(typeof f!="string"&&typeof f!="number")return"";const p=new Date(f);return Number.isNaN(p.getTime())?String(f):`${p.getFullYear()}-${r(p.getMonth()+1)}-${r(p.getDate())} ${r(p.getHours())}:${r(p.getMinutes())}`}function o(f){if(typeof f!="string")return"";const p=/^\d{4}-\d{2}-\d{2}/.exec(f.trim());return p?p[0]:f.trim()}function s(f){if(typeof f!="string")return"";const p=/(\d{2}):(\d{2})/.exec(f);return p?`${p[1]}:${p[2]}`:f.trim()}function i(f){return typeof f=="string"?f!==""&&f!=="0"&&f.toLowerCase()!=="false":!!f}const c=x(()=>t.column.type==="switch"?"switch":t.column.type==="datetime"?"datetime":t.column.type==="date"?"date":t.column.type==="time"?"time":"text"),d=x(()=>{switch(c.value){case"datetime":return l(t.value);case"date":return o(t.value);case"time":return s(t.value);default:return a(t.value)}});return(f,p)=>c.value==="switch"&&!n(e.value)?(v(),$(xe,{key:0},[i(e.value)?(v(),$("span",SE,[L(u(bv),{size:14,"aria-hidden":"true"}),Se(P(u(D)("backend::lang.list.column_switch_true")),1)])):(v(),$("span",AE,P(u(D)("backend::lang.list.column_switch_false")),1))],64)):d.value===""?(v(),$("span",EE,"—")):c.value==="datetime"||c.value==="date"||c.value==="time"?(v(),$("span",ME,P(d.value),1)):(v(),$(xe,{key:3},[Se(P(d.value),1)],64))}}),DE={key:0,class:"flex shrink-0 gap-2"},OE=["data-row-state"],PE=Q({__name:"RowStateBadges",props:{states:{},labels:{}},setup(e){const t=e,n={deleted:"border border-border-strong text-muted",negative:"bg-danger-soft text-danger",disabled:"bg-subtle text-muted"},a=["deleted","negative","disabled"],r=x(()=>a.filter(l=>t.states.includes(l)));return(l,o)=>r.value.length>0?(v(),$("span",DE,[(v(!0),$(xe,null,Be(r.value,s=>(v(),$("span",{key:s,"data-row-state":s,class:ke([n[s],"inline-flex h-6 shrink-0 items-center rounded-pill px-2.5 text-[12px] font-semibold whitespace-nowrap"])},P(e.labels[s]??s),11,OE))),128))])):re("",!0)}}),qE={class:"overflow-x-auto"},TE={class:"sticky top-0 z-10"},RE={class:"h-row-head border-y border-border bg-subtle"},IE={key:0,scope:"col","data-select":"",class:"w-[52px] pl-5"},BE=["aria-checked","aria-label","disabled"],FE=["aria-sort"],NE=["data-sort","onClick"],VE={key:1,class:"w-[56px] pr-5"},LE=["aria-busy"],jE={key:0,class:"pl-5"},zE={key:1,class:"pr-5"},UE={key:1},HE=["colspan"],KE={class:"text-muted"},WE=["aria-selected","data-row-states","onClick"],GE={key:0,"data-select":"",class:"pl-5"},YE=["aria-checked","aria-label","onClick"],JE={key:0,class:"flex items-center gap-3"},ZE={"data-avatar":"",class:"flex size-[30px] shrink-0 items-center justify-center rounded-full bg-subtle text-[12px] font-bold text-text","aria-hidden":"true"},QE=["onClick"],XE={key:1,class:"flex items-center gap-2"},eM={key:1,"data-trailing":"",class:"w-[56px] pr-5"},hy=Q({__name:"DataTable",props:{columns:{},rows:{},loading:{type:Boolean,default:!1},rowLink:{type:Function,default:void 0},selectable:{type:Boolean,default:!1},selected:{default:()=>[]},sortable:{type:Boolean,default:!1},sort:{default:null},variant:{default:"list"},openable:{type:Boolean,default:!1},trailing:{type:Boolean,default:!1},rowStates:{default:()=>({})},stateLabels:{default:()=>({})}},emits:["update:selected","sort","open"],setup(e,{emit:t}){const n=e,a=t,r=Tr();function l(B){const X=B.id;return typeof X=="number"||typeof X=="string"?X:null}function o(B,X){const M=l(B);return M===null?`row-${X}`:String(M)}function s(B){return n.rowLink?n.rowLink(B):null}function i(B,X){if(B.target?.closest("a, button, input, label, select"))return;if(n.openable){const ee=B.currentTarget?.querySelector("[data-row-open]")??null;a("open",X,ee);return}const ne=s(X);ne&&r.push(ne)}const c=x(()=>n.rows.map(l).filter(B=>B!==null)),d=x(()=>new Set(n.selected.map(String))),f=x(()=>{const B=c.value,X=B.filter(M=>d.value.has(String(M))).length;return X===0?"false":X===B.length?"true":"mixed"});function p(B){const X=l(B);return X!==null&&d.value.has(String(X))}function h(){a("update:selected",f.value==="true"?[]:[...c.value])}function m(B){const X=l(B);X!==null&&(d.value.has(String(X))?a("update:selected",n.selected.filter(M=>String(M)!==String(X))):a("update:selected",[...n.selected,X]))}function b(B){if(n.sort?.column===B.key)return n.sort.dir==="desc"?"descending":"ascending"}function g(B){return n.sortable&&B.sortable}const y=x(()=>n.variant==="relation"),w=x(()=>y.value?"h-[56px]":"h-row"),A=x(()=>y.value?3:8);function S(B){return(typeof B=="string"||typeof B=="number"?String(B):"").split(/[\s@._-]+/).filter(Boolean).slice(0,2).map(M=>M.charAt(0).toUpperCase()).join("")}const R=["deleted","negative","disabled"];function H(B){const X=l(B),M=X===null?void 0:n.rowStates[String(X)];return Array.isArray(M)?R.filter(ne=>M.includes(ne)):[]}function j(B,X,M=[]){const ne=M.includes("deleted")||M.includes("disabled");return X===0?ne?"font-semibold text-muted":"font-semibold":ne||y.value||B.relation?"text-muted":""}function U(B){return["min-w-0 truncate",B.includes("deleted")?"line-through":"no-underline",B.includes("negative")?"text-danger":B.includes("deleted")||B.includes("disabled")?"text-muted":"text-text"]}const k=x(()=>n.columns.filter(B=>!B.invisible)),I=x(()=>Math.max(k.value.length+(n.selectable?1:0)+(n.trailing?1:0),1));function W(B,X){a("open",X,B.currentTarget)}const V=["w-3/5","w-2/5","w-1/2","w-3/4","w-1/3","w-2/3","w-1/2","w-2/5"];return(B,X)=>(v(),$("div",qE,[O("table",{class:ke([y.value?"min-w-[480px]":"min-w-[640px]","w-full border-collapse text-left"])},[O("thead",TE,[O("tr",RE,[e.selectable?(v(),$("th",IE,[O("button",{type:"button",role:"checkbox","aria-checked":f.value,"aria-label":u(D)("backend::lang.list.select_all"),disabled:e.loading||c.value.length===0,class:ke([f.value==="false"?"border-border-strong bg-surface":"border-primary bg-primary text-on-primary","flex size-[18px] items-center justify-center rounded-checkbox border disabled:opacity-60"]),onClick:h},[f.value==="mixed"?(v(),F(u($v),{key:0,size:14,"aria-hidden":"true"})):f.value==="true"?(v(),F(u(La),{key:1,size:14,"aria-hidden":"true"})):re("",!0)],10,BE)])):re("",!0),(v(!0),$(xe,null,Be(k.value,M=>(v(),$("th",{key:M.key,scope:"col","aria-sort":g(M)?b(M)??"none":void 0,class:ke([b(M)?"text-text":"text-muted","px-3.5 text-[12px] font-semibold first:pl-5 last:pr-5"])},[g(M)?(v(),$("button",{key:0,type:"button","data-sort":M.key,class:"inline-flex items-center gap-1 font-semibold",onClick:ne=>a("sort",M.key)},[Se(P(M.label)+" ",1),b(M)==="ascending"?(v(),F(u(_v),{key:0,size:14,"aria-hidden":"true"})):b(M)==="descending"?(v(),F(u(gv),{key:1,size:14,"aria-hidden":"true"})):re("",!0)],8,NE)):(v(),$(xe,{key:1},[Se(P(M.label),1)],64))],10,FE))),128)),e.trailing?(v(),$("td",VE)):re("",!0)])]),O("tbody",{"aria-busy":e.loading?"true":void 0},[e.loading?(v(!0),$(xe,{key:0},Be(A.value,M=>(v(),$("tr",{key:`skeleton-${M}`,"data-skeleton":"",class:ke([w.value,"border-b border-border"])},[e.selectable?(v(),$("td",jE,[...X[0]||(X[0]=[O("span",{class:"block size-[18px] rounded-checkbox bg-skel"},null,-1)])])):re("",!0),(v(!0),$(xe,null,Be(k.value,ne=>(v(),$("td",{key:ne.key,class:"px-3.5 first:pl-5 last:pr-5"},[O("span",{class:ke([V[(M-1)%V.length],"block h-3 rounded-[6px] bg-skel"])},null,2)]))),128)),e.trailing?(v(),$("td",zE)):re("",!0)],2))),128)):e.rows.length===0?(v(),$("tr",UE,[O("td",{colspan:I.value,class:"px-5 py-20 text-center"},[he(B.$slots,"empty",{},()=>[O("span",KE,P(u(D)("backend::lang.list.no_records")),1)])],8,HE)])):(v(!0),$(xe,{key:2},Be(e.rows,(M,ne)=>(v(),$("tr",{key:o(M,ne),class:ke([[w.value,p(M)?"bg-sel":s(M)||e.openable?"hover:bg-hover":"",s(M)||e.openable?"cursor-pointer":""],"border-b border-border transition-colors duration-150 ease-out"]),"aria-selected":e.selectable?p(M)?"true":"false":void 0,"data-row-states":H(M).length>0?H(M).join(" "):void 0,onClick:ee=>i(ee,M)},[e.selectable?(v(),$("td",GE,[O("button",{type:"button",role:"checkbox","aria-checked":p(M)?"true":"false","aria-label":u(D)("backend::lang.list.select_row"),class:ke([p(M)?"border-primary bg-primary text-on-primary":"border-border-strong bg-surface","flex size-[18px] items-center justify-center rounded-checkbox border"]),onClick:ee=>m(M)},[p(M)?(v(),F(u(La),{key:0,size:14,"aria-hidden":"true"})):re("",!0)],10,YE)])):re("",!0),(v(!0),$(xe,null,Be(k.value,(ee,ue)=>(v(),$("td",{key:ee.key,class:ke([j(ee,ue,H(M)),"px-3.5 first:pl-5 last:pr-5"])},[y.value&&ue===0?(v(),$("span",JE,[O("span",ZE,P(S(M[ee.key])),1),e.openable?(v(),$("button",{key:0,type:"button","data-row-open":"",class:"min-w-0 truncate text-left font-semibold text-text",onClick:ve=>W(ve,M)},[L(lr,{column:ee,value:M[ee.key]},null,8,["column","value"])],8,QE)):(v(),F(lr,{key:1,column:ee,value:M[ee.key]},null,8,["column","value"]))])):ue===0&&H(M).length>0?(v(),$("span",XE,[s(M)?(v(),F(u(_n),{key:0,to:s(M),class:ke(U(H(M)))},{default:T(()=>[L(lr,{column:ee,value:M[ee.key]},null,8,["column","value"])]),_:2},1032,["to","class"])):(v(),$("span",{key:1,class:ke(U(H(M)))},[L(lr,{column:ee,value:M[ee.key]},null,8,["column","value"])],2)),L(PE,{states:H(M),labels:e.stateLabels},null,8,["states","labels"])])):ue===0&&s(M)?(v(),F(u(_n),{key:2,to:s(M),class:"text-text no-underline"},{default:T(()=>[L(lr,{column:ee,value:M[ee.key]},null,8,["column","value"])]),_:2},1032,["to"])):(v(),F(lr,{key:3,column:ee,value:M[ee.key]},null,8,["column","value"]))],2))),128)),e.trailing?(v(),$("td",eM,[he(B.$slots,"trailing",{row:M})])):re("",!0)],10,WE))),128))],8,LE)],2)]))}}),tM=["aria-label"],nM={key:0,class:"flex flex-col gap-1 text-[13px]"},aM={class:"font-semibold text-muted"},rM=["data-filter","value","onChange"],lM=["value"],oM={key:1,class:"flex flex-col gap-1 text-[13px]"},sM={class:"mb-1 font-semibold text-muted"},iM={class:"flex items-center gap-2"},uM=["data-filter","aria-label","value","onChange"],cM=["data-filter","aria-label","value","onChange"],dM={key:2,class:"flex flex-col gap-1 text-[13px]"},fM={class:"font-semibold text-muted"},pM=["data-filter","value","onChange"],hM=["value"],Yr="",vo="h-button rounded-control border border-border-strong bg-surface px-3 text-text",vM=Q({__name:"FilterBar",props:{filters:{},values:{},source:{}},emits:["update"],setup(e,{emit:t}){const n=e,a=t;function r(f){if(f.options&&f.options.length>0)return f.options.map(h=>({value:JSON.stringify(h.value),label:h.label}));const p=[];return f.trueValue!==void 0&&p.push({value:JSON.stringify(f.trueValue),label:D("backend::lang.list.column_switch_true")}),f.falseValue!==void 0&&p.push({value:JSON.stringify(f.falseValue),label:D("backend::lang.list.column_switch_false")}),p}const l=q({});async function o(f){const{data:p}=await qe.GET("/{vendor}/{plugin}/{controller}/filters/{scope}/options",{params:{path:{...n.source,scope:f.name}}});l.value={...l.value,[f.name]:p?.data??[]}}mt(()=>{for(const f of n.filters)f.type==="scope"&&o(f)});const s=en({});function i(){for(const f of n.filters){if(f.type!=="daterange")continue;const[p="",h=""]=(n.values[f.name]??"").split(".."),m=s[f.name];(!m||n.values[f.name]!==void 0||m.from!==""&&m.to!=="")&&(s[f.name]={from:p,to:h})}}Fe(()=>n.values,i,{immediate:!0,deep:!0});function c(f,p,h){const m={...s[f.name]??{from:"",to:""},[p]:h};s[f.name]=m,m.from!==""&&m.to!==""?a("update",f.name,`${m.from}..${m.to}`):(m.from===""&&m.to===""||n.values[f.name]!==void 0)&&a("update",f.name,null)}function d(f,p){a("update",f.name,p===Yr?null:p)}return(f,p)=>(v(),$("div",{role:"group","aria-label":u(D)("backend::lang.list.filters"),"data-filter-bar":"",class:"flex flex-wrap items-end gap-4 border-t border-border px-5 py-3.5"},[(v(!0),$(xe,null,Be(e.filters,h=>(v(),$(xe,{key:h.name},[h.type==="switch"?(v(),$("label",nM,[O("span",aM,P(h.label||h.name),1),O("select",{"data-filter":h.name,value:e.values[h.name]??Yr,class:ke(vo),onChange:m=>d(h,m.target.value)},[O("option",{value:Yr},P(u(D)("backend::lang.list.filter_all")),1),(v(!0),$(xe,null,Be(r(h),m=>(v(),$("option",{key:m.value,value:m.value},P(m.label),9,lM))),128))],40,rM)])):h.type==="daterange"?(v(),$("fieldset",oM,[O("legend",sM,P(h.label||h.name),1),O("div",iM,[O("input",{type:"date","data-filter":`${h.name}-from`,"aria-label":u(D)("backend::lang.list.filter_from"),value:s[h.name]?.from??"",class:ke(vo),onChange:m=>c(h,"from",m.target.value)},null,40,uM),p[0]||(p[0]=O("span",{"aria-hidden":"true"},"–",-1)),O("input",{type:"date","data-filter":`${h.name}-to`,"aria-label":u(D)("backend::lang.list.filter_to"),value:s[h.name]?.to??"",class:ke(vo),onChange:m=>c(h,"to",m.target.value)},null,40,cM)])])):h.type==="scope"?(v(),$("label",dM,[O("span",fM,P(h.label||h.name),1),(v(),$("select",{key:`${h.name}-${l.value[h.name]?.length??-1}`,"data-filter":h.name,value:e.values[h.name]??Yr,class:ke(vo),onChange:m=>d(h,m.target.value)},[O("option",{value:Yr},P(u(D)("backend::lang.list.filter_all")),1),(v(!0),$(xe,null,Be(l.value[h.name]??[],m=>(v(),$("option",{key:m.value,value:m.value},P(m.label),9,hM))),128))],40,pM))])):re("",!0)],64))),128))],8,tM))}}),mM=["type","disabled"],et=Q({__name:"Button",props:{variant:{default:"outline"},size:{default:"md"},type:{default:"button"},disabled:{type:Boolean,default:!1},icon:{default:void 0},to:{default:void 0}},setup(e){const t=e,n={primary:"bg-primary text-on-primary hover:opacity-90",outline:"border border-border-strong bg-surface text-text hover:bg-hover",ghost:"text-muted hover:bg-hover hover:text-text",danger:"border border-danger bg-surface text-danger hover:bg-danger-soft"},a=x(()=>["inline-flex shrink-0 items-center justify-center gap-2 rounded-control px-4 font-semibold whitespace-nowrap no-underline transition-colors duration-150 ease-out disabled:cursor-not-allowed disabled:opacity-60",t.size==="sm"?"h-[38px]":"h-button",n[t.variant]]);return(r,l)=>e.to!==void 0?(v(),F(u(_n),{key:0,to:e.to,class:ke(a.value)},{default:T(()=>[e.icon?(v(),F(Bt(e.icon),{key:0,size:16,"aria-hidden":"true"})):re("",!0),he(r.$slots,"default")]),_:3},8,["to","class"])):(v(),$("button",{key:1,type:e.type,disabled:e.disabled,class:ke(a.value)},[e.icon?(v(),F(Bt(e.icon),{key:0,size:16,"aria-hidden":"true"})):re("",!0),he(r.$slots,"default")],10,mM))}}),yM=Q({__name:"BulkActionsMenu",props:{actions:{},disabled:{type:Boolean}},emits:["select"],setup(e,{expose:t,emit:n}){const a=n,r=q(null);function l(){const o=r.value?.$el;o instanceof HTMLElement&&o.focus()}return t({focus:l}),(o,s)=>(v(),F(u(Xm),{modal:!1},{default:T(()=>[L(u(ay),{"as-child":"",disabled:e.disabled},{default:T(()=>[L(et,{ref_key:"trigger",ref:r,variant:"outline",size:"md","data-action":"bulk-actions",disabled:e.disabled},{default:T(()=>[Se(P(u(D)("backend::lang.list.bulk_actions"))+" ",1),L(u(Nl),{size:16,class:"text-muted","aria-hidden":"true"})]),_:1},8,["disabled"])]),_:1},8,["disabled"]),L(u(ny),null,{default:T(()=>[L(u(ey),{"data-bulk-menu":"",align:"end","side-offset":8,class:"z-50 flex w-[240px] max-w-[320px] flex-col rounded-[14px] border border-border bg-surface p-2 text-text shadow-menu"},{default:T(()=>[(v(!0),$(xe,null,Be(e.actions,i=>(v(),F(u(ty),{key:i.name,"data-bulk-action":i.name,class:"flex min-h-10 cursor-pointer items-center rounded-control px-3 py-2 outline-none transition-colors duration-150 ease-out data-[highlighted]:bg-hover",onSelect:c=>a("select",i.name)},{default:T(()=>[Se(P(i.label),1)]),_:2},1032,["data-bulk-action","onSelect"]))),128))]),_:1})]),_:1})]),_:1}))}}),gM={class:"flex flex-wrap items-center justify-between gap-3 px-5 py-4"},bM={key:0,class:"relative block w-[320px] max-w-full"},_M={class:"sr-only"},xM=["value","placeholder"],wM={key:1},kM={class:"flex flex-wrap items-center justify-end gap-2.5"},$M={key:0,"data-selected-pill":"",class:"inline-flex h-8 items-center gap-1.5 rounded-pill bg-sel px-3 text-[13px] font-semibold"},CM=Q({__name:"ListToolbar",props:{showSearch:{type:Boolean},search:{},searchPrompt:{},buttons:{},selectedCount:{},selectedLabel:{},deleteLabel:{},actions:{default:()=>[]},busyAction:{default:null},bulkActions:{default:()=>[]},bulkBusy:{type:Boolean,default:!1}},emits:["update:search","delete","action","bulk"],setup(e,{expose:t,emit:n}){const a=e,r=n,l=x(()=>new Map(a.actions.map(i=>[i.name,i.label]))),o=q(null);function s(){o.value?.focus()}return t({focusBulk:s}),(i,c)=>(v(),$("div",gM,[e.showSearch?(v(),$("label",bM,[O("span",_M,P(u(D)("backend::lang.list.search")),1),L(u(Ms),{size:18,class:"pointer-events-none absolute top-1/2 left-3.5 -translate-y-1/2 text-muted","aria-hidden":"true"}),O("input",{type:"search","data-list-search":"",value:e.search,placeholder:e.searchPrompt,class:"h-button w-full rounded-control border border-transparent bg-subtle pr-3.5 pl-10",onInput:c[0]||(c[0]=d=>r("update:search",d.target.value))},null,40,xM)])):(v(),$("span",wM)),O("div",kM,[e.selectedCount>0?(v(),$("span",$M,[L(u(La),{size:14,"aria-hidden":"true"}),Se(P(e.selectedLabel),1)])):re("",!0),e.bulkActions.length>0?(v(),F(yM,{key:1,ref_key:"bulkMenu",ref:o,actions:e.bulkActions,disabled:e.selectedCount===0||e.bulkBusy,onSelect:c[1]||(c[1]=d=>r("bulk",d))},null,8,["actions","disabled"])):re("",!0),(v(!0),$(xe,null,Be(e.buttons,d=>(v(),$(xe,{key:d},[d==="delete"?(v(),F(et,{key:0,"data-action":"delete",variant:e.selectedCount>0?"danger":"outline",icon:u(Ll),disabled:e.selectedCount===0,onClick:c[2]||(c[2]=f=>r("delete"))},{default:T(()=>[Se(P(e.deleteLabel),1)]),_:1},8,["variant","icon","disabled"])):l.value.has(d)?(v(),F(et,{key:1,variant:"outline",size:"md","data-action":d,disabled:e.busyAction===d,"aria-busy":e.busyAction===d?"true":void 0,onClick:f=>r("action",d)},{default:T(()=>[Se(P(l.value.get(d)),1)]),_:2},1032,["data-action","disabled","aria-busy","onClick"])):re("",!0)],64))),128))])]))}}),SM={class:"flex flex-wrap items-center gap-x-6 gap-y-3 border-t border-border px-5 py-3.5 text-[13px] text-muted"},AM={"data-range":""},EM={key:0,class:"flex items-center gap-2"},MM=["value"],DM=["value"],OM=["aria-label"],PM=["disabled"],qM={key:0,"aria-hidden":"true",class:"px-1"},TM=["data-page","aria-current","onClick"],RM=["disabled"],zi="inline-flex h-pager min-w-pager items-center justify-center gap-1 rounded-pager border border-border px-2.5 text-[13px] text-text disabled:cursor-not-allowed disabled:opacity-60 hover:bg-hover",vy=Q({__name:"Pagination",props:{meta:{},loading:{type:Boolean},perPageOptions:{},perPage:{}},emits:["page","perPage"],setup(e,{emit:t}){const n=e,a=t,r=x(()=>n.meta?.total??0),l=x(()=>n.meta?.page??1),o=x(()=>Math.max(n.meta?.last_page??1,1)),s=x(()=>{const d=n.meta;if(!d||d.total===0)return Er("backend::lang.list.results",0);const f=(d.page-1)*d.per_page+1,p=Math.min(d.page*d.per_page,d.total);return D("backend::lang.list.pagination_range",{from:f,to:p,total:d.total})}),i=x(()=>{const d=o.value,f=l.value,p=new Set([1,d,f-1,f,f+1].filter(b=>b>=1&&b<=d));f<=3&&[2,3].forEach(b=>b<=d&&p.add(b)),f>=d-2&&[d-1,d-2].forEach(b=>b>=1&&p.add(b));const h=[...p].sort((b,g)=>b-g),m=[];return h.forEach((b,g)=>{const y=h[g-1];y!==void 0&&b-y>1&&m.push(null),m.push(b)}),m});function c(d){const f=Number(d.target.value);Number.isFinite(f)&&f>0&&a("perPage",f)}return(d,f)=>(v(),$("footer",SM,[O("span",AM,P(e.loading?u(D)("backend::lang.list.loading"):s.value),1),e.perPageOptions.length>1?(v(),$("label",EM,[O("span",null,P(u(D)("backend::lang.list.records_per_page")),1),O("select",{"data-per-page":"",value:String(e.perPage),class:"h-pager rounded-pager border border-border-strong bg-surface px-2 text-text",onChange:c},[(v(!0),$(xe,null,Be(e.perPageOptions,p=>(v(),$("option",{key:p,value:String(p)},P(p),9,DM))),128))],40,MM)])):re("",!0),!e.loading&&r.value>0?(v(),$("nav",{key:1,"aria-label":u(D)("backend::lang.list.pagination"),class:"ml-auto flex items-center gap-1.5"},[O("button",{type:"button","data-page":"prev",class:ke(zi),disabled:l.value<=1,onClick:f[0]||(f[0]=p=>a("page",l.value-1))},[L(u(Es),{size:14,"aria-hidden":"true"}),Se(P(u(D)("backend::lang.list.prev_page")),1)],8,PM),(v(!0),$(xe,null,Be(i.value,(p,h)=>(v(),$(xe,{key:p??`gap-${h}`},[p===null?(v(),$("span",qM,"…")):(v(),$("button",{key:1,type:"button","data-page":p,"aria-current":p===l.value?"page":void 0,class:ke([zi,p===l.value?"border-transparent bg-sel font-bold":""]),onClick:m=>p!==l.value&&a("page",p)},P(p),11,TM))],64))),128)),O("button",{type:"button","data-page":"next",class:ke(zi),disabled:l.value>=o.value,onClick:f[1]||(f[1]=p=>a("page",l.value+1))},[Se(P(u(D)("backend::lang.list.next_page")),1),L(u(Vl),{size:14,"aria-hidden":"true"})],8,RM)],8,OM)):re("",!0)]))}}),IM={role:"alert","data-extension-failure":"",class:"flex min-h-input items-center rounded-control border-[1.5px] border-dashed border-border-strong bg-subtle px-3.5 py-2.5 text-[13px] text-muted"},BM={class:"flex min-w-0 items-start gap-2.5"},FM={class:"min-w-0 [overflow-wrap:anywhere]"},Kc=Q({__name:"ExtensionFailure",props:{text:{}},setup(e){return(t,n)=>(v(),$("div",IM,[O("span",BM,[L(u(Vt),{size:16,class:"mt-0.5 shrink-0 text-danger","aria-hidden":"true"}),O("span",FM,P(e.text),1)])]))}}),NM=new Set(["div","span","p","strong","em","b","i","u","s","small","mark","code","pre","br","hr","ul","ol","li","dl","dt","dd","h2","h3","h4","h5","h6","table","thead","tbody","tfoot","tr","th","td","caption","section","header","footer","figure","figcaption","blockquote","q","abbr","time","data","meter","progress","sup","sub","a","img"]),VM=new Set(["script","style","template","iframe","object","embed","noscript","textarea","title","xmp","svg","math","form","input","button","select","link","meta","base"]),LM=32,jM=2e3,zM=new Set(["class","title","lang","dir","role"]),UM={a:new Set(["href"]),img:new Set(["src","alt","width","height"]),td:new Set(["colspan","rowspan","scope"]),th:new Set(["colspan","rowspan","scope"]),time:new Set(["datetime"]),data:new Set(["value"]),meter:new Set(["value","min","max","low","high","optimum"]),progress:new Set(["value","max"])},HM=/^(aria|data)-[a-z0-9_-]+$/;function KM(e,t){if(e==="")return!1;for(const n of e){const a=n.codePointAt(0)??0;if(a<=32||a===127)return!1}return e.startsWith("#")?t:e.startsWith("/")?e.length===1||e[1]!=="/"&&e[1]!=="\\":!1}function WM(e,t,n){return zM.has(t)||UM[e]?.has(t)===!0||HM.test(t)?e==="a"&&t==="href"||e==="img"&&t==="src"?KM(n,e==="a"):!0:!1}function GM(e,t){const n={};for(const[a,r]of Object.entries(t??{})){const l=a.toLowerCase();typeof r=="string"&&WM(e,l,r)&&(n[l]=r)}return n}function Fu(e,t,n){const a=[];for(const r of e??[]){if(n.left<=0)break;if(r.tag===void 0||r.tag===""){typeof r.text=="string"&&r.text!==""&&(n.left-=1,a.push(r.text));continue}const l=r.tag.toLowerCase();if(VM.has(l))continue;if(!NM.has(l)){a.push(...Fu(r.children,t,n));continue}if(t+1>LM)continue;n.left-=1;const o=Fu(r.children,t+1,n);a.push(Gt(l,GM(l,r.attrs),o.length>0?o:void 0))}return a}function YM(e){return Fu(e,0,{left:jM})}const JM={key:1,"data-partial-loading":"","aria-busy":"true"},ZM=["data-partial","aria-busy"],Wc=Q({__name:"PartialHost",props:{source:{},name:{},recordId:{default:null},variant:{},reloadKey:{default:0},hint:{type:Boolean,default:!1}},setup(e){const t=e,n=q(null),a=q(!1),r=q(!1);let l=0;const o=i=>YM(i.nodes);o.props=["nodes"];async function s(){const i=++l;r.value=!0;let c=null;try{c=(await qe.GET("/{vendor}/{plugin}/{controller}/partials/{name}",{params:{path:{...t.source,name:t.name},query:t.recordId!=null?{id:t.recordId}:void 0}})).data?.data.nodes??null}catch{c=null}i===l&&(r.value=!1,a.value=c===null,n.value=c)}return Fe(()=>t.reloadKey,()=>{s()}),s(),(i,c)=>a.value?(v(),F(Kc,{key:0,"data-partial-failed":"",text:u(D)("backend::lang.extension.partial_failed")},null,8,["text"])):n.value===null?(v(),$("div",JM,[O("div",{"data-partial-skeleton":"",class:ke([e.hint?"h-[68px] w-full rounded-inner":e.variant==="header"?"h-[80px] w-full rounded-card":"h-[44px] w-full rounded-control","bg-skel"]),"aria-hidden":"true"},null,2)])):n.value.length>0?(v(),$("div",{key:2,class:"summer-partial","data-partial":e.variant,"aria-busy":r.value?"true":void 0},[L(o,{nodes:n.value},null,8,["nodes"])],8,ZM)):re("",!0)}}),QM={class:"flex gap-2.5"},XM=["disabled","aria-busy"],Ya=Q({__name:"ConfirmDialog",props:{open:{type:Boolean},message:{},title:{default:void 0},confirmLabel:{default:void 0},cancelLabel:{default:void 0},danger:{type:Boolean,default:!1},busy:{type:Boolean,default:!1}},emits:["update:open","confirm","cancel"],setup(e,{emit:t}){const n=e,a=t;function r(o){!o&&n.busy||(a("update:open",o),o||a("cancel"))}function l(){n.busy||(a("confirm"),a("update:open",!1))}return(o,s)=>(v(),F(u(rC),{open:e.open,"onUpdate:open":r},{default:T(()=>[L(u(nC),null,{default:T(()=>[L(u(eC),{class:"pointer-events-auto fixed inset-0 z-[80] bg-overlay"}),L(u(G$),{"data-confirm-dialog":"",class:"pointer-events-auto fixed top-1/2 left-1/2 z-[90] flex w-[calc(100%-32px)] max-w-[440px] -translate-x-1/2 -translate-y-1/2 flex-col gap-4 rounded-modal bg-surface p-6 text-text shadow-pop"},{default:T(()=>[L(u(oC),{class:"text-[20px] font-bold tracking-[-0.01em]"},{default:T(()=>[Se(P(e.title??u(D)("backend::lang.form.confirm")),1)]),_:1}),L(u(Q$),{class:"text-muted"},{default:T(()=>[Se(P(e.message),1)]),_:1}),O("div",QM,[L(u(J$),{"data-action":"cancel",disabled:e.busy,class:"inline-flex h-button flex-1 items-center justify-center rounded-control border border-border-strong bg-surface font-semibold hover:bg-hover disabled:cursor-not-allowed disabled:opacity-60"},{default:T(()=>[Se(P(e.cancelLabel??u(D)("backend::lang.form.cancel")),1)]),_:1},8,["disabled"]),O("button",{type:"button","data-action":"confirm",disabled:e.busy,"aria-busy":e.busy?"true":void 0,class:ke([e.danger?"bg-danger text-white":"bg-primary text-on-primary","inline-flex h-button flex-1 items-center justify-center gap-2 rounded-control font-semibold hover:opacity-90 disabled:cursor-not-allowed disabled:opacity-60"]),onClick:ut(l,["prevent"])},[e.busy?(v(),F(u(ko),{key:0,size:16,class:"animate-spin","aria-hidden":"true"})):re("",!0),Se(" "+P(e.confirmLabel??u(D)("backend::lang.form.confirm")),1)],10,XM)])]),_:1})]),_:1})]),_:1},8,["open"]))}});function Ja(){const e=q(null),t=q(!1);let n=null,a=null;function r(i){const c=n;n=null,a=null,e.value=null,c?.(i)}function l(i,c){return r(!1),e.value=i,a=c??null,new Promise(d=>{n=d})}async function o(){if(t.value)return;const i=a;if(i){t.value=!0;try{await i()}finally{t.value=!1}}r(!0)}function s(){t.value||r(!1)}return{request:e,busy:t,ask:l,confirm:o,cancel:s}}const e6={class:"flex flex-col gap-5"},t6={class:"flex flex-wrap items-end justify-between gap-4"},n6={class:"flex flex-col"},a6={class:"text-[26px] font-bold tracking-[-0.02em]"},r6={key:0,"data-record-count":"",class:"text-muted"},l6={key:0,class:"flex items-center gap-2.5"},o6={class:"overflow-hidden rounded-card border border-border bg-surface shadow-card"},s6={key:2,role:"alert",class:"border-t border-border px-5 py-4 text-danger"},i6={key:0,"data-empty-search":"",class:"flex flex-col items-center gap-3"},u6={class:"flex size-14 items-center justify-center rounded-full bg-subtle text-muted"},c6={class:"text-[17px] font-bold"},d6={class:"max-w-[420px] text-muted"},f6={key:1,"data-empty-list":"",class:"text-muted"},p6=300,h6=Q({__name:"ListView",setup(e){const t=ln(),n=Tr(),a={vendor:String(t.params.vendor??""),plugin:String(t.params.plugin??""),controller:String(t.params.controller??"")},r=ks(a),l=Hn(r)??"/",o=q(null),s=q([]),i=q(null),c=q(!0),d=q(!1),f=q(!1),p=x(()=>d.value||f.value),h=q([]),m=q(!1),b=q(0),g=Ja(),y=x(()=>$E(t.query)),w=q(y.value.search??""),A=x(()=>o.value?.messages),S=x(()=>o.value?.title?o.value.title:Fl(a.vendor,a.plugin)?.sideMenu.find(J=>J.controller===r)?.label??r),R=x(()=>i.value?Ne(A.value?.recordCount,i.value.total):""),H=x(()=>o.value?.toolbarButtons??[]),j=x(()=>H.value.filter(E=>E==="create")),U=x(()=>o.value?.toolbarActions??[]),k=x(()=>H.value.filter(E=>E==="delete"||U.value.some(J=>J.name===E))),I=q(null),W=x(()=>i.value?.row_states??{}),V=x(()=>({deleted:Ne(A.value?.rowStateDeleted),negative:Ne(A.value?.rowStateNegative),disabled:Ne(A.value?.rowStateDisabled)})),B=x(()=>(o.value?.bulkActions??[]).filter(E=>E.name!=="delete")),X=q(!1),M=q(null),ne=x(()=>{const E=o.value?.perPageOptions??[];return E.length>0?E:[o.value?.recordsPerPage||20]}),ee=x(()=>y.value.per_page??i.value?.per_page??o.value?.recordsPerPage??20),ue=x(()=>y.value.sort?{column:y.value.sort,dir:y.value.dir==="desc"?"desc":"asc"}:null);function ve(E){const J=o.value?.recordUrl,Y=E.id;return!J||typeof Y!="number"&&typeof Y!="string"?null:py(J,r,Y)}function ye(E){n.replace({path:t.path,query:fy(E)})}let be=0;async function oe(){const E=++be;c.value=!0,f.value=!1;const J=await qe.GET("/{vendor}/{plugin}/{controller}",{params:{path:a,query:y.value}});E===be&&(s.value=J.data?.data??[],i.value=J.data?.meta??null,f.value=!J.data,c.value=!1)}async function Ce(){const E=await qe.GET("/{vendor}/{plugin}/{controller}/schema/list",{params:{path:a}});o.value=E.data?.data??null,d.value=!o.value,o.value&&Hc(r,o.value.assets)}Ce(),Fe(()=>CE(y.value),()=>{h.value=[],w.value=y.value.search??"",oe()},{immediate:!0});let ce=null;function Ee(E){w.value=E,ce!==null&&clearTimeout(ce),ce=setTimeout(()=>{ce=null;const J=E.trim();ye({...y.value,search:J===""?void 0:J,page:void 0})},p6)}Pt(()=>{ce!==null&&clearTimeout(ce)});function Z(){w.value="",ye({...y.value,search:void 0,page:void 0})}function K(E){const J=ue.value;J?.column!==E?ye({...y.value,sort:E,dir:"asc",page:void 0}):J.dir==="asc"?ye({...y.value,sort:E,dir:"desc",page:void 0}):ye({...y.value,sort:void 0,dir:void 0,page:void 0})}function te(E){ye({...y.value,page:E})}function ie(E){ye({...y.value,per_page:E,page:void 0})}function le(E,J){const Y={...y.value.filter??{}};J===null?delete Y[E]:Y[E]=J,ye({...y.value,filter:Y,page:void 0})}async function pe(){const E=h.value.map(Number).filter(Y=>Number.isInteger(Y)&&Y>0);if(!(E.length===0||m.value||!await g.ask({message:Ne(A.value?.deleteConfirm,E.length),confirmLabel:D("backend::lang.form.delete"),danger:!0}))){m.value=!0;try{const Y=await qe.POST("/{vendor}/{plugin}/{controller}/bulk-delete",{params:{path:a},body:{ids:E}});if(Y.data){Te(Ne(A.value?.deleted,Y.data.data.deleted)),h.value=[],await oe(),b.value+=1;return}Te(Y.error?.error.message||D("backend::lang.list.delete_failed"),"danger")}catch{Te(D("backend::lang.list.delete_failed"),"danger")}finally{m.value=!1}}}async function _(E){const J=B.value.find(se=>se.name===E),Y=h.value.map(Number).filter(se=>Number.isInteger(se)&&se>0);if(!J||Y.length===0||X.value)return;const ae=J.label??E;let ge=0,me=null,_e="";const G=await g.ask({message:J.confirm||Er("backend::lang.list.bulk_confirm",Y.length,{action:ae}),confirmLabel:ae,danger:!1},async()=>{X.value=!0;try{const se=await qe.POST("/{vendor}/{plugin}/{controller}/bulk/{action}",{params:{path:{...a,action:E}},body:{ids:Y}});ge=se.response.status,me=se.data?.data??null,_e=se.error?.error.message??""}catch{ge=0}finally{X.value=!1}});if(await new Promise(se=>setTimeout(se,0)),M.value?.focusBulk(),!G)return;const de=me;if(de){Te(de.message||Er("backend::lang.list.bulk_done",de.affected)),h.value=[],await oe(),b.value+=1;return}if(ge===409){Te(D("backend::lang.list.bulk_stale"),"danger"),h.value=[],await oe();return}if(ge===403){Te(_e||D("backend::lang.list.action_forbidden"),"danger");return}Te(_e||D("backend::lang.extension.action_failed"),"danger")}async function C(E){if(I.value===null){I.value=E;try{const J=await qe.POST("/{vendor}/{plugin}/{controller}/toolbar/{action}",{params:{path:{...a,action:E}},body:{}});if(J.data){J.data.data.message&&Te(J.data.data.message),await oe(),b.value+=1;return}Te(J.error?.error.message||D("backend::lang.extension.action_failed"),"danger")}catch{Te(D("backend::lang.extension.action_failed"),"danger")}finally{I.value=null}}}return(E,J)=>(v(),$("section",e6,[O("header",t6,[O("div",n6,[O("h1",a6,P(S.value),1),R.value?(v(),$("p",r6,P(R.value),1)):re("",!0)]),j.value.length>0?(v(),$("div",l6,[(v(!0),$(xe,null,Be(j.value,Y=>(v(),F(et,{key:Y,"data-action":"create",variant:"primary",icon:u(ic),to:`${u(l)}/create`},{default:T(()=>[Se(P(u(Ne)(A.value?.create)),1)]),_:1},8,["icon","to"]))),128))])):re("",!0)]),o.value?.headerPartial?(v(),F(Wc,{key:0,variant:"header",source:a,name:o.value.headerPartial,"reload-key":b.value},null,8,["name","reload-key"])):re("",!0),O("div",o6,[o.value?(v(),F(CM,{key:0,ref_key:"toolbar",ref:M,"show-search":o.value.showSearch,search:w.value,"search-prompt":u(Ne)(A.value?.searchPrompt),buttons:k.value,"selected-count":h.value.length,"selected-label":u(Ne)(A.value?.selected,h.value.length),"delete-label":u(Ne)(A.value?.deleteSelected,h.value.length),actions:U.value,"busy-action":I.value,"bulk-actions":B.value,"bulk-busy":X.value,"onUpdate:search":Ee,onDelete:pe,onAction:C,onBulk:_},null,8,["show-search","search","search-prompt","buttons","selected-count","selected-label","delete-label","actions","busy-action","bulk-actions","bulk-busy"])):re("",!0),o.value&&o.value.filters.length>0?(v(),F(vM,{key:1,filters:o.value.filters,values:y.value.filter??{},source:a,onUpdate:le},null,8,["filters","values"])):re("",!0),p.value&&!c.value?(v(),$("p",s6,P(u(D)("backend::lang.list.load_failed")),1)):(v(),F(hy,{key:3,columns:o.value?.columns??[],rows:s.value,loading:c.value||!o.value,"row-link":ve,selectable:o.value?.showCheckboxes??!1,selected:h.value,sortable:o.value?.showSorting??!1,sort:ue.value,"row-states":W.value,"state-labels":V.value,"onUpdate:selected":J[0]||(J[0]=Y=>h.value=Y),onSort:K},{empty:T(()=>[y.value.search?(v(),$("div",i6,[O("span",u6,[L(u(Ev),{size:24,"aria-hidden":"true"})]),O("p",c6,P(u(Ne)(A.value?.emptySearch,void 0,{term:y.value.search})),1),O("p",d6,P(u(Ne)(A.value?.emptySearchHint,void 0,{term:y.value.search})),1),L(et,{"data-action":"clear-search",onClick:Z},{default:T(()=>[Se(P(u(D)("backend::lang.list.clear_search")),1)]),_:1})])):(v(),$("p",f6,P(u(Ne)(A.value?.empty)||o.value?.noRecordsMessage||u(D)("backend::lang.list.no_records")),1))]),_:1},8,["columns","rows","loading","selectable","selected","sortable","sort","row-states","state-labels"])),L(vy,{meta:i.value,loading:c.value||!o.value,"per-page-options":ne.value,"per-page":ee.value,onPage:te,onPerPage:ie},null,8,["meta","loading","per-page-options","per-page"])]),L(Ya,{open:u(g).request.value!==null,message:u(g).request.value?.message??"","confirm-label":u(g).request.value?.confirmLabel,danger:u(g).request.value?.danger,busy:u(g).busy.value,onConfirm:u(g).confirm,onCancel:u(g).cancel},null,8,["open","message","confirm-label","danger","busy","onConfirm","onCancel"])]))}}),_a="X-Session-Key",my="X-Child-Session-Key",v6=32;function Pl(){const e=new Uint8Array(v6);globalThis.crypto.getRandomValues(e);let t="";for(const n of e)t+=String.fromCharCode(n);return btoa(t).replace(/\+/g,"-").replace(/\//g,"_").replace(/=+$/,"")}const m6="X-Upload-Id";async function da(e){try{const t=await e();return{data:t.data?t.data.data:null,status:t.response.status,error:t.error?.error??null}}catch{return{data:null,status:0,error:null}}}async function es(e){try{const t=await e();return t.response.ok&&t.data instanceof Blob?t.data:null}catch{return null}}function Bn(e){return encodeURIComponent(String(e))}function yy(e){return`${Ss.api}/${Bn(e.vendor)}/${Bn(e.plugin)}/${Bn(e.controller)}`}function y6(e){try{return e===""?null:JSON.parse(e)}catch{return null}}function gy(e){if(!e)return"";for(const t of Object.values(e.details??{})){const n=Array.isArray(t)?t.find(a=>typeof a=="string"&&a!==""):t;if(typeof n=="string"&&n!=="")return n}return e.message??""}function g6(e,t){const n=t;if((e===200||e===201)&&n?.data)return{ok:!0,item:n.data};const a=gy(n?.error);return e===413?{ok:!1,reason:"too_large",status:e,message:a}:e===422?{ok:!1,reason:"invalid",status:e,message:a}:e===0?{ok:!1,reason:"network",status:e,message:a}:{ok:!1,reason:"failed",status:e,message:a}}function by(e,t,n,a,r){let l=null,o=!1;const s=()=>new Promise(c=>{const d=new XMLHttpRequest;l=d,d.open("POST",e),d.setRequestHeader("X-Requested-With",fv),d.setRequestHeader("Accept","application/json");for(const[p,h]of Object.entries(n))d.setRequestHeader(p,h);r&&d.setRequestHeader(m6,r),d.upload.onprogress=p=>{p.lengthComputable&&a?.(p.loaded,p.total)},d.onload=()=>c({status:d.status,body:y6(d.responseText)}),d.onerror=()=>c("network"),d.ontimeout=()=>c("network"),d.onabort=()=>c("aborted");const f=new FormData;f.append("file_data",t,t.name),d.send(f)});return{promise:(async()=>{let c=await s();return typeof c=="object"&&c.status===401&&!o&&(await ac()&&(c=o?"aborted":await s()),typeof c=="object"&&c.status===401&&D0()),c==="aborted"||o?{ok:!1,reason:"aborted",status:0,message:""}:c==="network"?{ok:!1,reason:"network",status:0,message:""}:g6(c.status,c.body)})(),abort(){o=!0,l?.abort()}}}function _y(e,t,n,a){const r={...e,id:t,field:n},l={[_a]:a},o=`${yy(e)}/${Bn(t)}/files/${Bn(n)}`;return{list:()=>da(()=>qe.GET("/{vendor}/{plugin}/{controller}/{id}/files/{field}",{params:{path:r,header:l}})),upload:(s,i,c)=>by(o,s,{...l},i,c),update:(s,i)=>da(()=>qe.PUT("/{vendor}/{plugin}/{controller}/{id}/files/{field}/{file}",{params:{path:{...r,file:s},header:l},body:i})),remove:s=>da(()=>qe.DELETE("/{vendor}/{plugin}/{controller}/{id}/files/{field}/{file}",{params:{path:{...r,file:s},header:l}})),reorder:s=>da(()=>qe.POST("/{vendor}/{plugin}/{controller}/{id}/files/{field}/reorder",{params:{path:r,header:l},body:{ids:s}})),download:s=>es(()=>qe.GET("/{vendor}/{plugin}/{controller}/{id}/files/{field}/{file}/download",{params:{path:{...r,file:s},header:l},parseAs:"blob"})),thumb:s=>es(()=>qe.GET("/{vendor}/{plugin}/{controller}/{id}/files/{field}/{file}/thumb",{params:{path:{...r,file:s},header:l},parseAs:"blob"}))}}function b6(e,t,n,a,r,l,o){const s={...e,id:t,name:n,child:a,field:r},i={[_a]:l,[my]:o},c=`${yy(e)}/${Bn(t)}/relations/${Bn(n)}/records/${Bn(a)}/files/${Bn(r)}`;return{list:()=>da(()=>qe.GET("/{vendor}/{plugin}/{controller}/{id}/relations/{name}/records/{child}/files/{field}",{params:{path:s,header:i}})),upload:(d,f,p)=>by(c,d,{...i},f,p),update:(d,f)=>da(()=>qe.PUT("/{vendor}/{plugin}/{controller}/{id}/relations/{name}/records/{child}/files/{field}/{file}",{params:{path:{...s,file:d},header:i},body:f})),remove:d=>da(()=>qe.DELETE("/{vendor}/{plugin}/{controller}/{id}/relations/{name}/records/{child}/files/{field}/{file}",{params:{path:{...s,file:d},header:i}})),reorder:d=>da(()=>qe.POST("/{vendor}/{plugin}/{controller}/{id}/relations/{name}/records/{child}/files/{field}/reorder",{params:{path:s,header:i},body:{ids:d}})),download:d=>es(()=>qe.GET("/{vendor}/{plugin}/{controller}/{id}/relations/{name}/records/{child}/files/{field}/{file}/download",{params:{path:{...s,file:d},header:i},parseAs:"blob"})),thumb:d=>es(()=>qe.GET("/{vendor}/{plugin}/{controller}/{id}/relations/{name}/records/{child}/files/{field}/{file}/thumb",{params:{path:{...s,file:d},header:i},parseAs:"blob"}))}}const _6={key:0,role:"alert","data-forbidden-banner":"",class:"flex items-start gap-3 rounded-inner bg-danger-soft px-[18px] py-3.5 text-danger"},x6={class:"flex min-w-0 flex-col gap-1"},w6={class:"[overflow-wrap:anywhere]"},k6={key:1,role:"alert","data-error-banner":"",class:"flex items-start gap-3 rounded-inner bg-danger-soft px-[18px] py-3.5 text-danger"},$6={class:"flex flex-col gap-1"},Jl=Q({__name:"FormErrorBanner",props:{errors:{},fieldNames:{},forbidden:{default:null}},setup(e){const t=e,n=x(()=>Object.keys(t.errors).length),a=x(()=>Object.entries(t.errors).filter(([r])=>!t.fieldNames.includes(r)).flatMap(([,r])=>r));return(r,l)=>e.forbidden?(v(),$("div",_6,[L(u(Vt),{size:20,class:"mt-px shrink-0","aria-hidden":"true"}),O("div",x6,[O("p",w6,P(e.forbidden),1),(v(!0),$(xe,null,Be(a.value,(o,s)=>(v(),$("p",{key:s,class:"text-[13px] [overflow-wrap:anywhere]"},P(o),1))),128))])])):n.value>0?(v(),$("div",k6,[L(u(Vt),{size:20,class:"mt-px shrink-0","aria-hidden":"true"}),O("div",$6,[O("p",null,[O("strong",null,P(u(D)("backend::lang.form.error_title")),1),Se(" "+P(u(Er)("backend::lang.form.error_fields",n.value)),1)]),(v(!0),$(xe,null,Be(a.value,(o,s)=>(v(),$("p",{key:s,class:"text-[13px]"},P(o),1))),128))])])):re("",!0)}}),C6=new Set(["readonly","placeholder","maxlength","minlength","min","max","step","autocomplete","spellcheck","pattern"]);function Nr(e){const t={};for(const[n,a]of Object.entries(e.attributes??{})){const r=n.toLowerCase();!C6.has(r)||a===null||a===!1||(t[r]=a)}return t}function $n(e){return["w-full rounded-control border bg-surface px-3.5 text-text transition-colors duration-150 ease-out",e?"border-danger":"border-border-strong"].join(" ")}function Gc(e){return typeof e=="string"?e!==""&&e!=="0"&&e.toLowerCase()!=="false":!!e}function xy(e,t){return typeof e=="number"?t?1:0:t}function wy(e,t){const n={};if(t===null||typeof t!="object"||Array.isArray(t))return n;const a=t;for(const r of e.permissionOptions??[]){const l=Number(a[r.code]);(l===1||e.mode==="radio"&&l===-1)&&(n[r.code]=l)}return n}const S6={class:"flex min-w-0 flex-col"},A6=["for"],E6={key:0,class:"text-danger","aria-hidden":"true"},M6=["id"],D6=["id","name","checked","aria-invalid","aria-describedby"],O6=Q({__name:"CheckboxField",props:{field:{},modelValue:{},controlId:{},invalid:{type:Boolean},describedBy:{},labels:{},source:{},recordId:{}},emits:["update:modelValue"],setup(e,{emit:t}){const n=e,a=t,r=x(()=>Gc(n.modelValue));function l(o){a("update:modelValue",xy(n.modelValue,o.target.checked))}return(o,s)=>(v(),$("div",{class:ke([e.invalid?"border-danger":"border-border","flex items-center justify-between gap-4 rounded-inner border px-4 py-3.5"]),"data-toggle-card":""},[O("div",S6,[O("label",{for:e.controlId,class:"font-semibold"},[Se(P(e.field.label||e.field.name),1),e.field.required?(v(),$("span",E6," *")):re("",!0)],8,A6),e.field.comment?(v(),$("p",{key:0,id:`${e.controlId}-comment`,class:"text-[13px] text-muted"},P(e.field.comment),9,M6)):re("",!0)]),O("input",{id:e.controlId,type:"checkbox",name:e.field.name,checked:r.value,"aria-invalid":e.invalid?"true":void 0,"aria-describedby":e.describedBy||void 0,class:"size-5 shrink-0 rounded-[6px] accent-primary",onChange:l},null,40,D6)],2))}});function P6(e){return e==="date"||e==="time"?e:"datetime"}function Tt(e,t=2){return String(e).padStart(t,"0")}const q6=/(Z|[+-]\d{2}:?\d{2})$/i;function T6(e,t,n=!1){if(typeof t!="string"||t.trim()==="")return null;const a=t.trim();try{if(e==="date")return tm(a.slice(0,10));if(e==="time"){const l=/(\d{2}:\d{2}(:\d{2})?)/.exec(a.includes("T")?a.slice(a.indexOf("T")):a);return l?x2(l[1]):null}const r=q6.test(a)?a.replace(" ","T"):`${a.replace(" ","T")}Z`;return n?xn(qf(r,"UTC")):qf(r,on())}catch{return null}}function Ui(e){return`${Tt(e.year,4)}-${Tt(e.month)}-${Tt(e.day)}`}function Hi(e){return`${Tt(e.hour)}:${Tt(e.minute)}:${Tt(e.second)}`}function _p(e,t,n=!1){if(!t)return null;if(e==="time")return"hour"in t?Hi(t):null;if(!("year"in t))return null;if(e==="date")return Ui(t);if(n){const l=t instanceof Kn?xn(t):t,o="hour"in l?Hi(l):"00:00:00";return`${Ui(l)}T${o}Z`}const a=t instanceof Kn?t:vc(t instanceof tt?xn(t):t,on()),r=Is(a,"UTC");return`${Ui(r)}T${Hi(r)}Z`}const R6={date:"YYYY-MM-DD",datetime:"YYYY-MM-DD HH:mm",time:"HH:mm"},I6=/\[([^\]]*)\]|YYYY|YY|MMMM|MMM|MM|M|dddd|ddd|DD|D|HH|H|hh|h|mm|ss|A|a/g;function B6(e){return"year"in e?new tt(e.year,e.month,e.day):null}function Ki(e,t,n,a){return new Qt(e,{...n,timeZone:"UTC"}).formatToParts(t.toDate("UTC")).find(l=>l.type===a)?.value??""}function F6(e,t,n,a){if(!e)return"";const r=n||R6[t],l=B6(e),o="hour"in e?e:null,s=/D/.test(r.replace(/\[[^\]]*\]/g,""));return r.replace(I6,(i,c)=>{if(c!==void 0)return c;switch(i){case"YYYY":return l?Tt(l.year,4):"";case"YY":return l?Tt(l.year%100):"";case"MMMM":case"MMM":{if(!l)return"";const d=i==="MMMM"?"long":"short";return s?Ki(a,l,{day:"numeric",month:d},"month"):Ki(a,l,{month:d},"month")}case"MM":return l?Tt(l.month):"";case"M":return l?String(l.month):"";case"dddd":case"ddd":return l?Ki(a,l,{weekday:i==="dddd"?"long":"short"},"weekday"):"";case"DD":return l?Tt(l.day):"";case"D":return l?String(l.day):"";case"HH":return o?Tt(o.hour):"";case"H":return o?String(o.hour):"";case"hh":return o?Tt(o.hour%12||12):"";case"h":return o?String(o.hour%12||12):"";case"mm":return o?Tt(o.minute):"";case"ss":return o?Tt(o.second):"";case"A":return o?o.hour<12?"AM":"PM":"";case"a":return o?o.hour<12?"am":"pm":"";default:return i}})}const N6=new tt(2026,10,4);function V6(e,t){if(typeof t=="number"&&Number.isInteger(t)&&t>=0&&t<=6)return t;try{return(7-Rs(N6,e))%7}catch{return 1}}function xp(e){if(e)try{return tm(e.slice(0,10))}catch{return}}function L6(e,t=zl(on())){const n=xp(e.minDate),a=xp(e.maxDate);if(n||a)return{min:n,max:a};const r=e.yearRange??[];return r.length===1&&typeof r[0]=="number"?{min:new tt(t.year-r[0],1,1),max:new tt(t.year+r[0],12,31)}:r.length===2&&typeof r[0]=="number"&&typeof r[1]=="number"?{min:new tt(r[0],1,1),max:new tt(r[1],12,31)}:{}}function Nu(e,t,n,a){if(!e||t==="time")return;if(t==="date")return e;const r=new ya(e.year,e.month,e.day,a?23:0,a?59:0,a?59:0);return n?r:Is(vc(r,"UTC"),on())}function j6(e,t){const n=zl(on());return Nu(n,e==="time"?"datetime":e,t,!1)??n}const z6=["id","aria-describedby"],U6={key:0},H6={key:1,class:"text-muted","data-empty":""},K6=["aria-label"],W6={class:"flex size-8 shrink-0 items-center justify-center text-muted","aria-hidden":"true"},G6=["data-mode"],Y6=["aria-label"],J6={key:0,"data-datepicker-time":"",class:"mt-3 flex items-center gap-2 border-t border-border pt-3"},Jr="flex size-8 shrink-0 items-center justify-center rounded-pager text-muted transition-colors duration-150 ease-out hover:bg-hover hover:text-text",Z6=Q({__name:"DatepickerField",props:{field:{},modelValue:{},controlId:{},invalid:{type:Boolean},describedBy:{},labels:{},source:{},recordId:{}},emits:["update:modelValue"],setup(e,{emit:t}){const n=e,a=t,r=x(()=>P6(n.field.mode)),l=x(()=>r.value==="datetime"&&!!n.field.ignoreTimezone),o=x(()=>wl.value||"pl"),s=x(()=>{const oe=n.field.attributes?.readonly;return!!n.field.readOnly||oe!=null&&oe!==!1}),i=x(()=>T6(r.value,n.modelValue,l.value)),c=x(()=>r.value==="time"?null:i.value),d=x(()=>r.value==="time"?i.value:null),f=x(()=>L6(n.field)),p=x(()=>Nu(f.value.min,r.value,l.value,!1)),h=x(()=>Nu(f.value.max,r.value,l.value,!0)),m=j6(r.value,l.value),b=x(()=>V6(o.value,n.field.firstDay)),g=x(()=>n.field.twelveHour?12:24),y=x(()=>r.value==="date"?"day":"minute"),w=x(()=>F6(i.value,r.value,n.field.displayFormat,o.value)),A=x(()=>!n.field.required&&i.value!==null&&!s.value),S=x(()=>{const oe=c.value;return oe?!!p.value&&oe.compare(p.value)<0||!!h.value&&oe.compare(h.value)>0:!1}),R=new Set(["day","month","year","hour","minute","second"]),H=q(null),j=q(!1);function U(){const oe=H.value;if(!oe){j.value=!1;return}const Ce=Array.from(oe.querySelectorAll("[data-reka-date-field-segment], [data-reka-time-field-segment]")).filter(Ee=>R.has(Ee.dataset.rekaDateFieldSegment??Ee.dataset.rekaTimeFieldSegment??"")),ce=Ce.filter(Ee=>!Ee.hasAttribute("data-placeholder")).length;j.value=ce>0&&ce!!n.invalid||S.value||j.value),W=x(()=>_p(r.value,i.value,l.value));function V(oe){const Ce=_p(r.value,oe??null,l.value);k(),!(Ce===W.value&&(Ce!==null||n.modelValue===null))&&a("update:modelValue",Ce)}function B(oe){if(!oe||r.value!=="datetime"){V(oe);return}const Ce=c.value,ce=ne.value,Ee=!Ce||Ce.year!==oe.year||Ce.month!==oe.month||Ce.day!==oe.day,Z=!("hour"in oe)||oe.hour!==ce.hour||oe.minute!==ce.minute;Ee&&Z&&(oe=ee(oe,ce)),M.value=oe,V(oe)}function X(){a("update:modelValue",null),k()}const M=q(null);Fe(c,oe=>{M.value=oe},{immediate:!0});const ne=x(()=>{const oe=M.value??c.value;return oe&&"hour"in oe?new mn(oe.hour,oe.minute):new mn(0,0)});function ee(oe,Ce){return"hour"in oe?oe.set({hour:Ce.hour,minute:Ce.minute,second:0,millisecond:0}):new ya(oe.year,oe.month,oe.day,Ce.hour,Ce.minute)}function ue(oe){if(!oe)return;const Ce=oe instanceof mn?oe:new mn(oe.hour,oe.minute),ce=M.value??c.value??m,Ee=ee(ce,Ce);M.value=Ee,V(Ee)}function ve(oe){return oe.charAt(0).toLocaleUpperCase(o.value)+oe.slice(1)}const ye=x(()=>[$n(I.value),"h-input flex min-w-0 items-center gap-1 pl-3.5 pr-1.5","focus-within:border-primary focus-within:shadow-[0_0_0_3px_var(--c-ring)]","has-[[data-invalid]]:border-danger"]);function be(oe){return oe==="literal"?"text-muted":oe==="timeZoneName"?"ml-2 min-w-0 truncate text-[13px] text-muted":"rounded-[4px] px-0.5 tabular-nums outline-none focus:bg-sel focus:text-text focus-visible:outline-none data-[placeholder]:text-placeholder focus:data-[placeholder]:text-text"}return(oe,Ce)=>s.value?(v(),$("p",{key:0,id:e.controlId,"data-datepicker-readonly":"","aria-describedby":e.describedBy||void 0,class:"flex min-h-input items-center rounded-control border border-border bg-subtle px-3.5 tabular-nums"},[w.value!==""?(v(),$("span",U6,P(w.value),1)):(v(),$("span",H6,"—"))],8,z6)):r.value==="time"?(v(),$("div",{key:1,ref_key:"container",ref:H,"data-datepicker":"","data-mode":"time",class:ke(ye.value),onKeyup:k,onFocusout:k},[L(u(mp),{id:e.controlId,"model-value":d.value,locale:o.value,"hour-cycle":g.value,granularity:"minute",name:e.field.name,required:e.field.required||void 0,"aria-invalid":I.value?"true":void 0,"aria-describedby":e.describedBy||void 0,class:"flex min-w-0 flex-1 items-center","onUpdate:modelValue":V},{default:T(({segments:ce})=>[(v(!0),$(xe,null,Be(ce,Ee=>(v(),F(u(yp),{key:Ee.part,part:Ee.part,class:ke(be(Ee.part))},{default:T(()=>[Se(P(Ee.value),1)]),_:2},1032,["part","class"]))),128))]),_:1},8,["id","model-value","locale","hour-cycle","name","required","aria-invalid","aria-describedby"]),A.value?(v(),$("button",{key:0,type:"button","data-action":"clear","aria-label":u(D)("backend::lang.datepicker.clear"),class:ke(Jr),onClick:X},[L(u(Yt),{size:16,"aria-hidden":"true"})],8,K6)):re("",!0),O("span",W6,[L(u(yu),{size:16})])],34)):(v(),F(u(m4),{key:2,id:e.controlId,"model-value":c.value,"default-placeholder":u(m),locale:o.value,granularity:y.value,"hour-cycle":g.value,"hide-time-zone":r.value!=="datetime"||l.value,"min-value":p.value,"max-value":h.value,"week-starts-on":b.value,name:e.field.name,required:e.field.required||void 0,"close-on-select":r.value==="date","prevent-deselect":"","onUpdate:modelValue":B},{default:T(()=>[O("div",{ref_key:"container",ref:H,"data-datepicker":"","data-mode":r.value,class:ke(ye.value),onKeyup:k,onFocusout:k},[L(u(R4),{"aria-invalid":I.value?"true":void 0,"aria-describedby":e.describedBy||void 0,class:"flex min-w-0 flex-1 items-center overflow-hidden"},{default:T(({segments:ce})=>[(v(!0),$(xe,null,Be(ce,Ee=>(v(),F(u(J4),{key:Ee.part,part:Ee.part,class:ke(be(Ee.part))},{default:T(()=>[Se(P(Ee.value),1)]),_:2},1032,["part","class"]))),128))]),_:1},8,["aria-invalid","aria-describedby"]),A.value?(v(),$("button",{key:0,type:"button","data-action":"clear","aria-label":u(D)("backend::lang.datepicker.clear"),class:ke(Jr),onClick:X},[L(u(Yt),{size:16,"aria-hidden":"true"})],8,Y6)):re("",!0),L(u(rA),{"data-action":"open-calendar","aria-label":u(D)("backend::lang.datepicker.open_calendar"),class:ke(Jr)},{default:T(()=>[L(u(xv),{size:16,"aria-hidden":"true"})]),_:1},8,["aria-label"])],42,G6),L(u(q4),{"data-datepicker-calendar":"","side-offset":4,align:"end",class:"z-50 w-[284px] rounded-inner border border-border bg-surface p-4 text-text shadow-menu"},{default:T(()=>[L(u(g4),null,{default:T(({weekDays:ce,grid:Ee})=>[L(u(K4),{class:"flex h-9 items-center justify-between"},{default:T(()=>[L(u(eA),{"aria-label":u(D)("backend::lang.datepicker.prev_month"),class:ke(Jr)},{default:T(()=>[L(u(Es),{size:16,"aria-hidden":"true"})]),_:1},8,["aria-label"]),L(u(G4),{class:"font-semibold"},{default:T(({headingValue:Z})=>[Se(P(ve(Z)),1)]),_:1}),L(u(Q4),{"aria-label":u(D)("backend::lang.datepicker.next_month"),class:ke(Jr)},{default:T(()=>[L(u(Vl),{size:16,"aria-hidden":"true"})]),_:1},8,["aria-label"])]),_:1}),(v(!0),$(xe,null,Be(Ee,Z=>(v(),F(u(B4),{key:Z.value.toString(),class:"mt-2 w-full border-collapse select-none"},{default:T(()=>[L(u(L4),null,{default:T(()=>[L(u(vp),{class:"flex"},{default:T(()=>[(v(!0),$(xe,null,Be(ce,K=>(v(),F(u(U4),{key:K,class:"flex h-9 w-9 items-center justify-center text-[13px] font-normal text-muted"},{default:T(()=>[Se(P(K),1)]),_:2},1024))),128))]),_:2},1024)]),_:2},1024),L(u(N4),null,{default:T(()=>[(v(!0),$(xe,null,Be(Z.rows,(K,te)=>(v(),F(u(vp),{key:`week-${te}`,class:"flex"},{default:T(()=>[(v(!0),$(xe,null,Be(K,ie=>(v(),F(u(_4),{key:ie.toString(),date:ie,class:"p-0"},{default:T(()=>[L(u(w4),{day:ie,month:Z.value,class:"flex size-9 items-center justify-center rounded-pager tabular-nums text-text transition-colors duration-150 ease-out hover:bg-hover data-[outside-view]:text-placeholder data-[today]:font-semibold data-[today]:shadow-[inset_0_0_0_1px_var(--c-border-strong)] data-[selected]:bg-primary data-[selected]:font-semibold data-[selected]:text-on-primary data-[disabled]:cursor-not-allowed data-[disabled]:text-placeholder data-[disabled]:opacity-40 data-[disabled]:hover:bg-transparent data-[unavailable]:cursor-not-allowed data-[unavailable]:opacity-40"},null,8,["day","month"])]),_:2},1032,["date"]))),128))]),_:2},1024))),128))]),_:2},1024)]),_:2},1024))),128))]),_:1}),r.value==="datetime"?(v(),$("div",J6,[L(u(yu),{size:16,class:"shrink-0 text-muted","aria-hidden":"true"}),L(u(mp),{"model-value":ne.value,locale:o.value,"hour-cycle":g.value,granularity:"minute","hide-time-zone":"",class:"flex min-w-0 items-center","onUpdate:modelValue":ue},{default:T(({segments:ce})=>[(v(!0),$(xe,null,Be(ce,Ee=>(v(),F(u(yp),{key:Ee.part,part:Ee.part,class:ke(be(Ee.part))},{default:T(()=>[Se(P(Ee.value),1)]),_:2},1032,["part","class"]))),128))]),_:1},8,["model-value","locale","hour-cycle"])])):re("",!0)]),_:1})]),_:1},8,["id","model-value","default-placeholder","locale","granularity","hour-cycle","hide-time-zone","min-value","max-value","week-starts-on","name","required","close-on-select"]))}}),Q6={class:"relative"},X6=["id","name","value","required","aria-required","aria-invalid","aria-describedby"],eD=["value"],mo="empty",yo="placeholder",tD=Q({__name:"DropdownField",props:{field:{},modelValue:{},controlId:{},invalid:{type:Boolean},describedBy:{},labels:{},source:{},recordId:{}},emits:["update:modelValue"],setup(e,{emit:t}){const n=e,a=t,r=x(()=>n.field.options??[]);function l(c,d){return c==null||d===null||d===void 0?c===d||c==null&&d==null:String(c)===String(d)}const o=x(()=>{const c=r.value.findIndex(d=>l(d.value,n.modelValue));return c>=0?String(c):n.field.emptyOption!==void 0&&(n.modelValue===null||n.modelValue===void 0||n.modelValue==="")?mo:yo}),s=x(()=>o.value===mo||o.value===yo);function i(c){const d=c.target.value;if(d===mo){a("update:modelValue",null);return}const f=r.value[Number(d)];f&&a("update:modelValue",f.value)}return(c,d)=>(v(),$("div",Q6,[O("select",{id:e.controlId,name:e.field.name,value:o.value,required:e.field.required||void 0,"aria-required":e.field.required?"true":void 0,"aria-invalid":e.invalid?"true":void 0,"aria-describedby":e.describedBy||void 0,class:ke([[u($n)(e.invalid),s.value?"text-muted":""],"h-input appearance-none pr-10"]),onChange:i},[e.field.emptyOption!==void 0?(v(),$("option",{key:0,value:mo,class:"text-muted"},P(e.field.emptyOption),1)):re("",!0),o.value===yo?(v(),$("option",{key:1,value:yo,disabled:""},P(u(D)("backend::lang.form.select_placeholder")),1)):re("",!0),(v(!0),$(xe,null,Be(r.value,(f,p)=>(v(),$("option",{key:p,value:String(p),class:"text-text"},P(f.label),9,eD))),128))],42,X6),L(u(Nl),{size:16,class:"pointer-events-none absolute top-1/2 right-3.5 -translate-y-1/2 text-muted","aria-hidden":"true"})]))}}),Yc=Symbol("summer.form.values"),Jc=Symbol("summer.form.patch"),ky=Symbol("summer.form.locale"),ts=Symbol("summer.form.enabledLocales"),$y=Symbol("summer.form.assets");function Zc(){const e=q(0);return{activeUploads:e,beginUpload(){e.value++;let t=!1;return()=>{t||(t=!0,e.value>0&&e.value--)}}}}const Vr=Symbol("summer.form.session"),wp="summer-action",nD="summer-result",aD=5e3,rD={class:"flex items-start gap-3"},lD={class:"flex min-w-0 flex-1 flex-col gap-1"},oD={key:0,class:"flex items-center gap-4"},sD=["src"],iD={key:1,class:"flex size-16 shrink-0 items-center justify-center rounded-inner bg-subtle","aria-hidden":"true"},uD=["title"],cD={class:"flex flex-col gap-1.5"},dD=["for"],fD=["id","disabled","aria-invalid","aria-describedby"],pD=["id"],hD={class:"flex flex-col gap-1.5"},vD=["for"],mD=["id","disabled","aria-invalid","aria-describedby"],yD=["id"],gD={class:"flex gap-2.5"},bD=["disabled"],_D=["disabled"],xD=Q({__name:"FileCaptionModal",props:{open:{type:Boolean},file:{},routes:{},preview:{},idPrefix:{}},emits:["update:open","saved","closed"],setup(e,{emit:t}){const n=e,a=t,r=q(""),l=q(""),o=q({}),s=q(!1),i=Ja();function c(g){const y={};for(const[w,A]of Object.entries(g??{})){const S=(Array.isArray(A)?A:[A]).filter(R=>typeof R=="string"&&R!=="");S.length>0&&(y[w]=S)}return y}const d=x(()=>`${n.idPrefix}-caption-title`),f=x(()=>`${n.idPrefix}-caption-description`),p=x(()=>!!n.file&&(r.value!==n.file.title||l.value!==n.file.description));Fe(()=>n.open,g=>{g&&n.file&&(r.value=n.file.title??"",l.value=n.file.description??"",o.value={},s.value=!1)},{immediate:!0});async function h(g){if(g){a("update:open",!0);return}s.value||p.value&&!await i.ask({message:D("backend::lang.form.unsaved_confirm"),confirmLabel:D("backend::lang.form.discard"),danger:!0})||a("update:open",!1)}async function m(){if(!(s.value||!n.file||!n.routes)){s.value=!0;try{const g=await n.routes.update(n.file.id,{title:r.value,description:l.value});if(g.data){o.value={},a("saved",g.data),a("update:open",!1),Te(D("backend::lang.fileupload.details_saved"));return}if(g.status===422){o.value=c(g.error?.details),Object.keys(o.value).length===0&&(o.value={title:[gy(g.error)||D("backend::lang.form.error_generic")]});return}Te(g.error?.message||D("backend::lang.form.error_generic"),"danger")}finally{s.value=!1}}}function b(g){g.preventDefault(),a("closed")}return(g,y)=>(v(),$(xe,null,[L(u(Hl),{open:e.open,"onUpdate:open":h},{default:T(()=>[L(u(Vs),null,{default:T(()=>[L(u(Wl),{"data-dialog-overlay":"",class:"fixed inset-0 z-40 bg-overlay"}),L(u(Kl),{"data-caption-modal":"","data-dialog-content":"","aria-modal":"true",class:"fixed top-1/2 left-1/2 z-50 flex max-h-[calc(100vh-32px)] w-[calc(100%-32px)] max-w-[560px] -translate-x-1/2 -translate-y-1/2 flex-col gap-4 overflow-y-auto rounded-modal bg-surface p-6 text-text shadow-pop",onCloseAutoFocus:b},{default:T(()=>[O("div",rD,[O("div",lD,[L(u(Gl),{class:"text-[20px] font-bold tracking-[-0.01em]"},{default:T(()=>[Se(P(u(D)("backend::lang.fileupload.attachment")),1)]),_:1}),L(u(Al),{class:"text-muted"},{default:T(()=>[Se(P(u(D)("backend::lang.fileupload.help")),1)]),_:1})]),L(u(Pr),{"data-action":"close","aria-label":u(D)("backend::lang.form.close"),disabled:s.value,class:"flex size-[34px] shrink-0 items-center justify-center rounded-tab bg-subtle text-muted hover:bg-hover hover:text-text"},{default:T(()=>[L(u(Yt),{size:16,"aria-hidden":"true"})]),_:1},8,["aria-label","disabled"])]),e.file?(v(),$("div",oD,[e.preview?(v(),$("img",{key:0,src:e.preview,alt:"",class:"size-16 shrink-0 rounded-inner object-cover"},null,8,sD)):(v(),$("span",iD,[L(u(pr),{size:16,class:"text-muted"})])),O("span",{class:"min-w-0 truncate text-[13px] text-muted",title:e.file.file_name},P(e.file.file_name),9,uD)])):re("",!0),O("form",{class:"flex flex-col gap-4",novalidate:"",onSubmit:ut(m,["prevent"])},[O("div",cD,[O("label",{for:d.value,class:"font-semibold"},P(u(D)("backend::lang.fileupload.title_label")),9,dD),Va(O("input",{id:d.value,"onUpdate:modelValue":y[0]||(y[0]=w=>r.value=w),type:"text","data-caption-title":"",disabled:s.value,"aria-invalid":o.value.title?"true":void 0,"aria-describedby":o.value.title?`${d.value}-error`:void 0,class:ke([u($n)(!!o.value.title),"h-input"])},null,10,fD),[[No,r.value]]),o.value.title?(v(),$("p",{key:0,id:`${d.value}-error`,class:"flex items-center gap-1.5 text-[13px] text-danger"},[L(u(Vt),{size:14,class:"shrink-0","aria-hidden":"true"}),O("span",null,P(o.value.title.join(" ")),1)],8,pD)):re("",!0)]),O("div",hD,[O("label",{for:f.value,class:"font-semibold"},P(u(D)("backend::lang.fileupload.description_label")),9,vD),Va(O("textarea",{id:f.value,"onUpdate:modelValue":y[1]||(y[1]=w=>l.value=w),rows:"3","data-caption-description":"",disabled:s.value,"aria-invalid":o.value.description?"true":void 0,"aria-describedby":o.value.description?`${f.value}-error`:void 0,class:ke([u($n)(!!o.value.description),"min-h-input resize-y py-2.5"])},null,10,mD),[[No,l.value]]),o.value.description?(v(),$("p",{key:0,id:`${f.value}-error`,class:"flex items-center gap-1.5 text-[13px] text-danger"},[L(u(Vt),{size:14,class:"shrink-0","aria-hidden":"true"}),O("span",null,P(o.value.description.join(" ")),1)],8,yD)):re("",!0)]),O("div",gD,[O("button",{type:"button","data-action":"cancel",disabled:s.value,class:"inline-flex h-button flex-1 items-center justify-center rounded-control border border-border-strong bg-surface font-semibold hover:bg-hover disabled:cursor-not-allowed disabled:opacity-60",onClick:y[2]||(y[2]=w=>h(!1))},P(u(D)("backend::lang.form.cancel")),9,bD),O("button",{type:"submit","data-action":"save-caption",disabled:s.value,class:"inline-flex h-button flex-1 items-center justify-center rounded-control bg-primary font-semibold text-on-primary hover:opacity-90 disabled:cursor-not-allowed disabled:opacity-60"},P(s.value?u(D)("backend::lang.form.saving"):u(D)("backend::lang.fileupload.details_submit")),9,_D)])],32)]),_:1})]),_:1})]),_:1},8,["open"]),L(Ya,{open:u(i).request.value!==null,message:u(i).request.value?.message??"","confirm-label":u(i).request.value?.confirmLabel,danger:u(i).request.value?.danger,onConfirm:u(i).confirm,onCancel:u(i).cancel},null,8,["open","message","confirm-label","danger","onConfirm","onCancel"])],64))}}),wD=["id","data-field-name","aria-labelledby","aria-describedby","aria-busy"],kD={key:0,"data-fileupload-loading":"",class:"h-[112px] rounded-control bg-skel","aria-hidden":"true"},$D={key:1,role:"alert","data-fileupload-failed":"",class:"rounded-inner bg-danger-soft px-[18px] py-3.5 text-danger"},CD={key:0,"data-fileupload-empty":"",class:"flex min-h-input items-center rounded-control border border-border bg-subtle px-3.5 text-muted"},SD={key:1,"data-fileupload-grid":"",class:"grid grid-cols-[repeat(auto-fill,minmax(160px,1fr))] gap-4"},AD=["data-file-item","data-state","onDragover","onDrop"],ED={class:"relative flex aspect-square items-center justify-center bg-subtle"},MD=["href","aria-label"],DD=["src","alt","onError"],OD=["aria-label","onClick"],PD=["src","alt"],qD={key:2,"data-preview-unavailable":"",class:"flex flex-col items-center gap-2 text-[13px] text-muted"},TD=["data-handle","aria-label","onKeydown","onDragstart"],RD={key:5,class:"absolute top-2 right-2 flex gap-1"},ID=["data-caption","aria-label","onClick"],BD=["aria-label","onClick"],FD=["aria-label","onClick"],ND={class:"flex flex-col gap-1 p-2"},VD=["title"],LD={class:"flex items-center gap-2 text-[13px] text-muted tabular-nums"},jD={key:0},zD={key:1},UD={key:2},HD={key:3,"data-unsaved-chip":"",class:"inline-flex h-6 items-center rounded-pill bg-sel px-2 text-[13px] font-semibold text-text"},KD={key:1,"data-file-error":"",class:"text-[13px] text-danger"},WD={class:"sr-only"},GD={key:2,"data-fileupload-single":"",class:"flex flex-col gap-2"},YD=["data-file-item","data-state"],JD=["src","alt","onError"],ZD={key:3,"data-preview-unavailable":"",class:"flex flex-col items-center gap-2 text-[13px] text-muted"},QD={class:"flex min-w-0 flex-1 flex-col gap-1"},XD=["title"],e8={class:"flex items-center gap-2 text-[13px] text-muted tabular-nums"},t8={key:0},n8={key:1},a8={key:2},r8={key:3,"data-unsaved-chip":"",class:"inline-flex h-6 items-center rounded-pill bg-sel px-2 text-[13px] font-semibold text-text"},l8={key:1,"data-file-error":"",class:"text-[13px] text-danger"},o8={class:"sr-only"},s8={key:2,class:"mt-1 flex flex-wrap gap-2"},i8={key:3,"data-fileupload-rows":"",class:"flex flex-col gap-2"},u8=["data-file-item","data-state","onDragover","onDrop"],c8={class:"flex items-center gap-3"},d8=["data-handle","aria-label","onKeydown","onDragstart"],f8={class:"flex size-8 shrink-0 items-center justify-center overflow-hidden rounded-pager bg-subtle"},p8=["src","onError"],h8={class:"flex min-w-0 flex-1 flex-col leading-tight"},v8=["title"],m8=["title"],y8=["title"],g8={class:"flex shrink-0 items-center gap-2 text-[13px] text-muted tabular-nums"},b8={key:0},_8={key:1},x8={key:2},w8={key:3,"data-unsaved-chip":"",class:"inline-flex h-6 items-center rounded-pill bg-sel px-2 text-[13px] font-semibold text-text"},k8={class:"flex shrink-0 items-center gap-1"},$8=["href","aria-label"],C8=["aria-label","onClick"],S8=["data-caption","aria-label","onClick"],A8=["aria-label","onClick"],E8=["aria-label","onClick"],M8={key:1,"data-file-error":"",class:"text-[13px] text-danger"},D8={class:"sr-only"},O8=["aria-describedby"],P8={class:"flex size-10 items-center justify-center rounded-full bg-surface","aria-hidden":"true"},q8={class:"text-text"},T8={key:0,"data-fileupload-limits":"",class:"text-[13px] text-muted tabular-nums"},R8={key:5,"data-fileupload-limits":"",class:"text-[13px] text-muted tabular-nums"},I8={key:6,role:"alert","data-fileupload-too-many":"",class:"flex items-center gap-1.5 text-[13px] text-danger"},B8=["accept","multiple"],F8={class:"sr-only","aria-live":"polite","data-fileupload-live":""},N8=1<<20,V8=400,Wi="inline-flex size-8 items-center justify-center rounded-pager border border-border bg-surface text-muted hover:text-text",L8="inline-flex size-8 items-center justify-center rounded-pager border border-border bg-surface text-muted hover:bg-danger-soft hover:text-danger",or="inline-flex size-8 shrink-0 items-center justify-center rounded-pager text-muted hover:bg-hover hover:text-text",j8=Q({__name:"FileuploadField",props:{field:{},modelValue:{},controlId:{},invalid:{type:Boolean},describedBy:{},labels:{},source:{},recordId:{}},setup(e){const t=e,n=ot(Vr,null),a=["jpg","jpeg","png","gif","webp"],r=["image/jpeg","image/png","image/gif","image/webp"];let l=1;const o=q([]),s=q("loading"),i=q(!1),c=q(0),d=q(""),f=q(null),p=q(null),h=q(null),m=q(null),b=q(null),g=q(!1),y=q({}),w=q(new Set),A=new Set,S=[],R=n?n.routes(t.field.name):null;let H=null,j=null,U=!1,k=null,I=0,W=!1;const V=x(()=>{const N=t.field.attributes?.readonly;return!!t.field.readOnly||N!=null&&N!==!1}),B=x(()=>t.field.multiple===!0),X=x(()=>t.field.mode==="image"),M=x(()=>B.value?t.field.maxFiles:1),ne=x(()=>(n?.recordId??0)!==0),ee=x(()=>o.value.filter(N=>N.state!=="failed")),ue=x(()=>{if(B.value)return o.value;const N=ee.value,we=N[N.length-1];return o.value.filter(z=>z.state==="failed"||z===we)}),ve=x(()=>ue.value.filter(N=>N.state!=="failed").length),ye=x(()=>V.value||s.value!=="ready"?!1:B.value?M.value===void 0||M.value===null||ee.value.lengthB.value&&!V.value&&typeof M.value=="number"&&ee.value.length>=M.value),oe=x(()=>t.field.fileTypes?.length?t.field.fileTypes.map(N=>N.toLowerCase()):X.value&&!t.field.mimeTypes?.length?a:null),Ce=x(()=>(t.field.fileTypes?.length?t.field.fileTypes:t.field.mimeTypes??[]).join(", ")),ce=x(()=>{const N=[];for(const we of t.field.fileTypes??[])N.push(`.${we.toLowerCase()}`);for(const we of t.field.mimeTypes??[])N.push(we.includes("/")?we:`.${we.toLowerCase()}`);return N.length===0&&X.value&&N.push(...r),N.length>0?N.join(","):void 0}),Ee=x(()=>t.field.prompt||D(B.value?"backend::lang.fileupload.default_prompt_many":"backend::lang.fileupload.default_prompt"));function Z(N,we){return new Intl.NumberFormat(wl.value,{minimumFractionDigits:we,maximumFractionDigits:we}).format(N)}function K(N){const we=["B","kB","MB","GB"];let z=N,Ae=0;for(;z>=1e3&&Ae{const N=t.field.maxFilesize;return typeof N=="number"?`${new Intl.NumberFormat(wl.value).format(N)} MB`:""}),ie=x(()=>{const N=[];return Ce.value!==""&&N.push(D("backend::lang.fileupload.limits_types",{types:Ce.value})),te.value!==""&&N.push(D("backend::lang.fileupload.limits_size",{size:te.value})),B.value&&typeof M.value=="number"&&N.push(D("backend::lang.fileupload.limits_count",{current:ee.value.length,max:M.value})),N.join(" · ")});function le(N){const we=N.lastIndexOf(".");return we<0?"":N.slice(we+1).toLowerCase()}function pe(N){const we=t.field.mimeTypes??[];if(we.length===0||N.type==="")return!0;const z=N.type.toLowerCase(),Ae=le(N.name);return we.some(je=>{const Ct=je.toLowerCase();return Ct.includes("/")?Ct.endsWith("/*")?z.startsWith(Ct.slice(0,-1)):z===Ct:Ct===Ae})}function _(N){const we=oe.value;if(we&&!we.includes(le(N.name)))return D("backend::lang.fileupload.wrong_type",{name:N.name,types:we.join(", ")});if(!pe(N))return D("backend::lang.fileupload.wrong_type",{name:N.name,types:Ce.value});const z=t.field.maxFilesize;return typeof z=="number"&&N.size>Math.ceil(z*N8)?D("backend::lang.fileupload.too_large",{name:N.name,size:te.value}):""}function C(N){return en({uid:l++,name:N.file_name,size:N.file_size,state:"done",progress:100,error:"",retryable:!1,file:N,source:null,handle:null,uploadId:""})}function E(){return globalThis.crypto?.randomUUID?.()??`u${Date.now().toString(36)}${Math.random().toString(36).slice(2,10)}`}function J(N,we){return en({uid:l++,name:N.name,size:N.size,state:we===""?"queued":"failed",progress:0,error:we,retryable:!1,file:null,source:Mo(N),handle:null,uploadId:E()})}function Y(N){return o.value.find(we=>we.uid===N)}async function ae(N){if(!R){s.value="failed";return}N&&(s.value="loading");const we=await R.list();if(W)return;if(!we.data){N&&(s.value="failed");return}const z=o.value.filter(Ae=>Ae.state!=="done");for(const Ae of o.value)Ae.state==="done"&&Js(Ae.uid);o.value=[...we.data.map(C),...z],s.value="ready"}function ge(){V.value||f.value?.click()}function me(N){if(N.length===0||V.value)return;if(c.value=0,!B.value)for(const je of[...o.value])je.state!=="failed"&&(je.state!=="done"||je.file?.pending)&&He(je);let we=B.value?typeof M.value=="number"?Math.max(M.value-ee.value.length,0):Number.POSITIVE_INFINITY:1,z=0;const Ae=[];for(const je of N.slice(0,B.value?N.length:1)){const Ct=_(je);if(Ct===""&&we<=0){z++;continue}Ct===""&&we--,Ae.push(J(je,Ct))}o.value=[...o.value,...Ae],c.value=z,$e()}function _e(N){const we=N.target;me(Array.from(we.files??[])),we.value=""}function G(N){return h.value===null&&Array.from(N.dataTransfer?.types??[]).includes("Files")}function de(N){G(N)&&(N.preventDefault(),i.value=!0)}function se(N){G(N)&&(N.preventDefault(),i.value=!1,me(Array.from(N.dataTransfer?.files??[])))}function $e(){if(!R||o.value.some(we=>we.state==="uploading"))return;const N=o.value.find(we=>we.state==="queued");N&&Pe(N)}async function Pe(N){if(!R||!N.source)return;N.state="uploading",N.progress=0,N.error="",N.retryable=!1;const we=new Set(o.value.filter(Ae=>Ae.file).map(Ae=>Ae.file.id)),z=n?.beginUpload();try{const Ae=R.upload(N.source,(Xn,Qa)=>{N.progress=Qa>0?Math.min(100,Math.round(Xn/Qa*100)):0},N.uploadId||void 0);N.handle=Mo(Ae);const je=await Ae.promise;N.handle=null;const Ct=!!Y(N.uid);if(je.ok)!Ct||W?R.remove(je.item.id):(N.state="done",N.progress=100,N.file=je.item,N.name=je.item.file_name,N.size=je.item.file_size,n?.markDirty());else if(je.reason==="aborted"||je.reason==="network"){const Xn=await Ve(we);if(je.reason==="aborted"){for(const Qa of Xn)R.remove(Qa.id);o.value=o.value.filter(Qa=>Qa.uid!==N.uid),Js(N.uid)}else Ct&&Xn[0]&&Xn.length===1?(N.state="done",N.progress=100,N.file=Xn[0],N.name=Xn[0].file_name,N.size=Xn[0].file_size,n?.markDirty()):(N.state="failed",N.error=D("backend::lang.fileupload.upload_failed"),N.retryable=!0)}else if(Ct)switch(N.state="failed",je.reason){case"too_large":N.error=te.value?D("backend::lang.fileupload.too_large",{name:N.name,size:te.value}):je.message||D("backend::lang.fileupload.upload_failed");break;case"invalid":N.error=je.message||D("backend::lang.fileupload.upload_failed");break;default:N.error=je.message||D("backend::lang.fileupload.upload_failed"),N.retryable=je.status>=500}}finally{z?.(),W||$e()}}async function Ve(N){if(!R)return[];const we=await R.list();return we.data?we.data.filter(z=>z.pending&&!N.has(z.id)):[]}function Ke(N){N.state!=="failed"||!N.source||(N.state="queued",N.error="",N.retryable=!1,$e())}async function He(N){const we=o.value.findIndex(Ae=>Ae.uid===N.uid);if(we<0)return;switch(o.value=o.value.filter(Ae=>Ae.uid!==N.uid),Js(N.uid),N.state){case"uploading":N.handle?.abort(),n?.markDirty(),$e();return;case"queued":case"failed":return}if(!R||!N.file)return;n?.markDirty();const z=await R.remove(N.file.id);if(!z.data&&!W){const Ae=[...o.value];Ae.splice(Math.min(we,Ae.length),0,N),o.value=Ae,Te(z.error?.message||D("backend::lang.form.error_generic"),"danger")}}function lt(){return o.value.map(N=>N.uid)}function it(N){const we=new Map(o.value.map(je=>[je.uid,je])),z=N.map(je=>we.get(je)).filter(je=>!!je),Ae=o.value.filter(je=>!N.includes(je.uid));o.value=[...z,...Ae]}function kt(){H!==null&&clearTimeout(H),H=setTimeout(()=>{H=null,sn()},V8)}function qt(){return o.value.filter(N=>N.state==="done"&&N.file).map(N=>N.file.id)}async function sn(){if(!R)return;const N=qt();if(U){k=N;return}const we=j;j=null;const z=++I;U=!0;try{const Ae=await R.reorder(N);if(k)return;!Ae.data&&!W&&z===I&&(we&&it(we),Te(D("backend::lang.fileupload.reorder_failed"),"danger"))}finally{U=!1,k&&(k=null,sn())}}function De(N,we){const z=o.value.findIndex(Ct=>Ct.uid===N);if(z<0||we<0||we>=o.value.length||we===z)return!1;j===null&&(j=lt());const Ae=[...o.value],[je]=Ae.splice(z,1);return Ae.splice(we,0,je),o.value=Ae,d.value=D("backend::lang.fileupload.moved",{name:je.name,position:we+1,total:Ae.length}),kt(),!0}async function Me(N,we){const z=o.value.findIndex(je=>je.uid===we.uid);let Ae;switch(N.key){case"ArrowUp":case"ArrowLeft":Ae=z-1;break;case"ArrowDown":case"ArrowRight":Ae=z+1;break;default:return}N.preventDefault(),De(we.uid,Ae)&&(await We(),p.value?.querySelector(`[data-handle="${we.uid}"]`)?.focus())}function Ie(N,we){h.value=we.uid,N.dataTransfer&&(N.dataTransfer.effectAllowed="move",N.dataTransfer.setData("text/plain",we.name))}function $t(N,we){h.value!==null&&(N.preventDefault(),m.value=we.uid)}function Lr(N,we){h.value!==null&&(N.preventDefault(),De(h.value,o.value.findIndex(z=>z.uid===we.uid)),Ys())}function Ys(){h.value=null,m.value=null}function td(N){const we=N.file?.content_type??N.source?.type??"";return r.includes(we.toLowerCase())}function Sn(N){return!N.file||!td(N)||w.value.has(N.uid)?null:t.field.protected?y.value[N.uid]??null:N.file.thumb_url||N.file.url||null}function nd(){return typeof URL.revokeObjectURL=="function"}function Js(N){const we=y.value[N];if(we!==void 0){nd()&&URL.revokeObjectURL(we);const z={...y.value};delete z[N],y.value=z}A.delete(N)}async function Ty(N){if(!R||!N.file||A.has(N.uid)||typeof URL.createObjectURL!="function")return;A.add(N.uid);const we=await R.thumb(N.file.id);if(!(W||!Y(N.uid)||!A.has(N.uid))){if(!we){w.value=new Set([...w.value,N.uid]);return}y.value={...y.value,[N.uid]:URL.createObjectURL(we)}}}Fe(()=>o.value.map(N=>`${N.uid}:${N.state}`).join(","),()=>{if(t.field.protected)for(const N of o.value)N.state==="done"&&td(N)&&Ty(N)});function Zs(N){w.value=new Set([...w.value,N.uid])}async function ad(N,we){if(!R||!N.file||typeof URL.createObjectURL!="function")return;const z=await R.download(N.file.id);if(!z){Te(D("backend::lang.form.error_generic"),"danger");return}const Ae=URL.createObjectURL(z);S.push(Ae);const je=document.createElement("a");je.href=Ae,je.rel="noopener",we?je.download=N.file.file_name:je.target="_blank",je.click()}function Sa(N){return t.field.useCaption&&N.file?.title?N.file.title:N.name}function Qs(N){return ne.value&&!!N.file?.pending}const eo=x(()=>b.value===null?void 0:Y(b.value));function Xs(N){b.value=N.uid,g.value=!0}function Ry(N){const we=eo.value;we&&(we.file=N)}function Iy(){const N=b.value;b.value=null,N!==null&&p.value?.querySelector(`[data-caption="${N}"]`)?.focus()}const ei=x(()=>{const N=t.field.thumbOptions?.mode;return N==="fit"||N==="auto"?"object-contain":"object-cover"});return mt(()=>{ae(!0)}),n&&Fe(n.revision,()=>{ae(!1)}),Pt(()=>{W=!0,H!==null&&(clearTimeout(H),H=null);for(const N of o.value)N.handle?.abort();if(nd()){for(const N of Object.values(y.value))URL.revokeObjectURL(N);for(const N of S)URL.revokeObjectURL(N)}}),(N,we)=>(v(),$("div",{id:e.controlId,ref_key:"root",ref:p,role:"group","data-fileupload":"","data-field-name":e.field.name,"aria-labelledby":e.field.label?`${e.controlId}-label`:void 0,"aria-describedby":e.describedBy||void 0,"aria-busy":s.value==="loading"?"true":void 0,class:"flex min-w-0 flex-col gap-4"},[s.value==="loading"?(v(),$("span",kD)):s.value==="failed"?(v(),$("p",$D,P(u(D)("backend::lang.fileupload.load_failed")),1)):(v(),$(xe,{key:2},[V.value&&ue.value.length===0?(v(),$("p",CD,P(u(D)("backend::lang.fileupload.empty")),1)):X.value&&B.value&&ue.value.length>0?(v(),$("ul",SD,[(v(!0),$(xe,null,Be(ue.value,z=>(v(),$("li",{key:z.uid,"data-file-item":z.uid,"data-state":z.state,class:ke([[z.state==="failed"?"border-danger":"border-border",h.value===z.uid?"opacity-50":"",m.value===z.uid&&h.value!==z.uid?"border-2 border-dashed border-primary bg-sel":""],"relative overflow-hidden rounded-inner border bg-surface"]),onDragover:Ae=>$t(Ae,z),onDrop:Ae=>Lr(Ae,z)},[O("div",ED,[z.state==="uploading"?(v(),F(u(ko),{key:0,size:20,class:"animate-spin text-muted","aria-hidden":"true"})):z.state==="failed"?(v(),F(u(Vt),{key:1,size:16,class:"text-danger","aria-hidden":"true"})):z.state==="done"?(v(),$(xe,{key:2},[Sn(z)&&!e.field.protected&&z.file?.url?(v(),$("a",{key:0,href:z.file.url,target:"_blank",rel:"noopener",class:"block size-full","aria-label":u(D)("backend::lang.fileupload.open_preview",{name:z.name})},[O("img",{src:Sn(z)??void 0,alt:Sa(z),class:ke([ei.value,"size-full"]),onError:Ae=>Zs(z)},null,42,DD)],8,MD)):Sn(z)?(v(),$("button",{key:1,type:"button",class:"block size-full","aria-label":u(D)("backend::lang.fileupload.open_preview",{name:z.name}),onClick:Ae=>ad(z,!1)},[O("img",{src:Sn(z)??void 0,alt:Sa(z),class:ke([ei.value,"size-full"])},null,10,PD)],8,OD)):w.value.has(z.uid)?(v(),$("span",qD,[L(u(_f),{size:20,"aria-hidden":"true"}),Se(" "+P(u(D)("backend::lang.fileupload.preview_unavailable")),1)])):(v(),F(u(pr),{key:3,size:20,class:"text-muted","aria-hidden":"true"}))],64)):(v(),F(u(pr),{key:3,size:20,class:"text-muted","aria-hidden":"true"})),!V.value&&z.state==="done"?(v(),$("button",{key:4,type:"button",draggable:"true","data-handle":z.uid,"aria-label":u(D)("backend::lang.fileupload.move",{name:z.name}),class:ke([Wi,"absolute top-2 left-2 cursor-grab"]),onKeydown:Ae=>Me(Ae,z),onDragstart:Ae=>Ie(Ae,z),onDragend:Ys},[L(u(bf),{size:16,"aria-hidden":"true"})],40,TD)):re("",!0),V.value?re("",!0):(v(),$("div",RD,[e.field.useCaption&&z.state==="done"?(v(),$("button",{key:0,type:"button","data-caption":z.uid,"aria-label":u(D)("backend::lang.fileupload.edit_details",{name:z.name}),class:ke(Wi),onClick:Ae=>Xs(z)},[L(u(cl),{size:16,"aria-hidden":"true"})],8,ID)):re("",!0),z.state==="failed"&&z.retryable?(v(),$("button",{key:1,type:"button","data-action":"retry","aria-label":u(D)("backend::lang.fileupload.retry"),class:ke(Wi),onClick:Ae=>Ke(z)},[L(u(mi),{size:16,"aria-hidden":"true"})],8,BD)):re("",!0),O("button",{type:"button","data-action":"remove-file","aria-label":z.state==="uploading"||z.state==="queued"?u(D)("backend::lang.fileupload.cancel_upload",{name:z.name}):u(D)("backend::lang.form.remove_item",{name:z.name}),class:ke(L8),onClick:Ae=>He(z)},[L(u(Yt),{size:16,"aria-hidden":"true"})],8,FD)]))]),O("div",ND,[O("span",{class:"truncate text-[13px]",title:Sa(z)},P(Sa(z)),9,VD),O("span",LD,[z.state==="queued"?(v(),$("span",jD,P(u(D)("backend::lang.fileupload.queued")),1)):z.state==="uploading"?(v(),$("span",zD,P(u(D)("backend::lang.fileupload.uploading",{percent:z.progress})),1)):(v(),$("span",UD,P(K(z.size)),1)),Qs(z)?(v(),$("span",HD,P(u(D)("backend::lang.fileupload.unsaved")),1)):re("",!0)]),z.state==="uploading"?(v(),F(u(Vi),{key:0,"model-value":z.progress,max:100,"aria-label":u(D)("backend::lang.fileupload.uploading",{percent:z.progress}),class:"h-1 w-full overflow-hidden rounded-pill bg-subtle"},{default:T(()=>[L(u(Li),{class:"h-full bg-primary",style:Nn({width:`${z.progress}%`})},null,8,["style"])]),_:2},1032,["model-value","aria-label"])):re("",!0),z.state==="failed"?(v(),$("p",KD,[O("span",WD,P(u(D)("backend::lang.fileupload.upload_error"))+": ",1),Se(P(z.error),1)])):re("",!0)])],42,AD))),128))])):X.value&&!B.value&&ue.value.length>0?(v(),$("div",GD,[(v(!0),$(xe,null,Be(ue.value,z=>(v(),$("div",{key:z.uid,"data-file-item":z.uid,"data-state":z.state,class:"flex items-start gap-4"},[O("div",{class:ke([z.state==="failed"?"border-danger":"border-border","flex size-40 shrink-0 items-center justify-center overflow-hidden rounded-inner border bg-subtle"])},[z.state==="uploading"?(v(),F(u(ko),{key:0,size:20,class:"animate-spin text-muted","aria-hidden":"true"})):z.state==="failed"?(v(),F(u(Vt),{key:1,size:16,class:"text-danger","aria-hidden":"true"})):Sn(z)?(v(),$("img",{key:2,src:Sn(z)??void 0,alt:Sa(z),class:ke([ei.value,"size-full"]),onError:Ae=>Zs(z)},null,42,JD)):w.value.has(z.uid)?(v(),$("span",ZD,[L(u(_f),{size:20,"aria-hidden":"true"}),Se(" "+P(u(D)("backend::lang.fileupload.preview_unavailable")),1)])):(v(),F(u(pr),{key:4,size:20,class:"text-muted","aria-hidden":"true"}))],2),O("div",QD,[O("span",{class:"truncate font-semibold",title:Sa(z)},P(Sa(z)),9,XD),O("span",e8,[z.state==="queued"?(v(),$("span",t8,P(u(D)("backend::lang.fileupload.queued")),1)):z.state==="uploading"?(v(),$("span",n8,P(u(D)("backend::lang.fileupload.uploading",{percent:z.progress})),1)):(v(),$("span",a8,P(K(z.size)),1)),Qs(z)?(v(),$("span",r8,P(u(D)("backend::lang.fileupload.unsaved")),1)):re("",!0)]),z.state==="uploading"?(v(),F(u(Vi),{key:0,"model-value":z.progress,max:100,"aria-label":u(D)("backend::lang.fileupload.uploading",{percent:z.progress}),class:"h-1 w-full overflow-hidden rounded-pill bg-subtle"},{default:T(()=>[L(u(Li),{class:"h-full bg-primary",style:Nn({width:`${z.progress}%`})},null,8,["style"])]),_:2},1032,["model-value","aria-label"])):re("",!0),z.state==="failed"?(v(),$("p",l8,[O("span",o8,P(u(D)("backend::lang.fileupload.upload_error"))+": ",1),Se(P(z.error),1)])):re("",!0),V.value?re("",!0):(v(),$("div",s8,[z.state!=="failed"?(v(),F(et,{key:0,size:"sm",variant:"outline","data-action":"replace-file",icon:u($o),onClick:ge},{default:T(()=>[Se(P(u(D)("backend::lang.fileupload.replace_file")),1)]),_:1},8,["icon"])):re("",!0),z.state==="failed"&&z.retryable?(v(),F(et,{key:1,size:"sm",variant:"outline","data-action":"retry",icon:u(mi),onClick:Ae=>Ke(z)},{default:T(()=>[Se(P(u(D)("backend::lang.fileupload.retry")),1)]),_:1},8,["icon","onClick"])):re("",!0),e.field.useCaption&&z.state==="done"?(v(),F(et,{key:2,size:"sm",variant:"outline","data-caption":z.uid,icon:u(cl),onClick:Ae=>Xs(z)},{default:T(()=>[Se(P(u(D)("backend::lang.fileupload.details_submit")),1)]),_:1},8,["data-caption","icon","onClick"])):re("",!0),L(et,{size:"sm",variant:"danger","data-action":"remove-file",icon:u(Yt),onClick:Ae=>He(z)},{default:T(()=>[Se(P(u(D)("backend::lang.fileupload.remove_file")),1)]),_:1},8,["icon","onClick"])]))])],8,YD))),128))])):ue.value.length>0?(v(),$("ul",i8,[(v(!0),$(xe,null,Be(ue.value,z=>(v(),$("li",{key:z.uid,"data-file-item":z.uid,"data-state":z.state,class:ke([[z.state==="failed"?"border-danger":"border-border",h.value===z.uid?"opacity-50":"",m.value===z.uid&&h.value!==z.uid?"border-2 border-dashed border-primary bg-sel":""],"flex min-h-14 flex-col justify-center gap-1 rounded-inner border bg-surface px-3 py-2"]),onDragover:Ae=>$t(Ae,z),onDrop:Ae=>Lr(Ae,z)},[O("div",c8,[B.value&&!V.value&&z.state==="done"?(v(),$("button",{key:0,type:"button",draggable:"true","data-handle":z.uid,"aria-label":u(D)("backend::lang.fileupload.move",{name:z.name}),class:ke([or,"cursor-grab"]),onKeydown:Ae=>Me(Ae,z),onDragstart:Ae=>Ie(Ae,z),onDragend:Ys},[L(u(bf),{size:16,"aria-hidden":"true"})],40,d8)):re("",!0),O("span",f8,[z.state==="uploading"?(v(),F(u(ko),{key:0,size:16,class:"animate-spin text-muted","aria-hidden":"true"})):z.state==="failed"?(v(),F(u(Vt),{key:1,size:16,class:"text-danger","aria-hidden":"true"})):Sn(z)?(v(),$("img",{key:2,src:Sn(z)??void 0,alt:"",class:"size-8 object-cover",onError:Ae=>Zs(z)},null,40,p8)):(v(),F(u(pr),{key:3,size:16,class:"text-muted","aria-hidden":"true"}))]),O("span",h8,[e.field.useCaption&&z.file?.title?(v(),$(xe,{key:0},[O("span",{class:"truncate font-semibold",title:z.file.title},P(z.file.title),9,v8),O("span",{class:"truncate text-[13px] text-muted",title:z.name},P(z.name),9,m8)],64)):(v(),$("span",{key:1,class:"truncate",title:z.name},P(z.name),9,y8))]),O("span",g8,[z.state==="queued"?(v(),$("span",b8,P(u(D)("backend::lang.fileupload.queued")),1)):z.state==="uploading"?(v(),$("span",_8,P(u(D)("backend::lang.fileupload.uploading",{percent:z.progress})),1)):(v(),$("span",x8,P(K(z.size)),1)),Qs(z)?(v(),$("span",w8,P(u(D)("backend::lang.fileupload.unsaved")),1)):re("",!0)]),!B.value&&!V.value&&z.state!=="failed"?(v(),F(et,{key:1,size:"sm",variant:"outline","data-action":"replace-file",icon:u($o),onClick:ge},{default:T(()=>[Se(P(u(D)("backend::lang.fileupload.replace_file")),1)]),_:1},8,["icon"])):re("",!0),O("span",k8,[z.state==="done"&&z.file?(v(),$(xe,{key:0},[!e.field.protected&&z.file.url?(v(),$("a",{key:0,href:z.file.url,download:"",target:"_blank",rel:"noopener","aria-label":u(D)("backend::lang.fileupload.download",{name:z.name}),class:ke(or)},[L(u(gu),{size:16,"aria-hidden":"true"})],8,$8)):e.field.protected?(v(),$("button",{key:1,type:"button","data-action":"download","aria-label":u(D)("backend::lang.fileupload.download",{name:z.name}),class:ke(or),onClick:Ae=>ad(z,!0)},[L(u(gu),{size:16,"aria-hidden":"true"})],8,C8)):re("",!0),e.field.useCaption&&!V.value?(v(),$("button",{key:2,type:"button","data-caption":z.uid,"aria-label":u(D)("backend::lang.fileupload.edit_details",{name:z.name}),class:ke(or),onClick:Ae=>Xs(z)},[L(u(cl),{size:16,"aria-hidden":"true"})],8,S8)):re("",!0)],64)):re("",!0),z.state==="failed"&&z.retryable?(v(),$("button",{key:1,type:"button","data-action":"retry","aria-label":u(D)("backend::lang.fileupload.retry"),class:ke(or),onClick:Ae=>Ke(z)},[L(u(mi),{size:16,"aria-hidden":"true"})],8,A8)):re("",!0),V.value?re("",!0):(v(),$("button",{key:2,type:"button","data-action":"remove-file","aria-label":z.state==="uploading"||z.state==="queued"?u(D)("backend::lang.fileupload.cancel_upload",{name:z.name}):u(D)("backend::lang.form.remove_item",{name:z.name}),class:ke([or,"hover:bg-danger-soft hover:text-danger"]),onClick:Ae=>He(z)},[L(u(Yt),{size:16,"aria-hidden":"true"})],8,E8))])]),z.state==="uploading"?(v(),F(u(Vi),{key:0,"model-value":z.progress,max:100,"aria-label":u(D)("backend::lang.fileupload.uploading",{percent:z.progress}),class:"h-1 w-full overflow-hidden rounded-pill bg-subtle"},{default:T(()=>[L(u(Li),{class:"h-full bg-primary",style:Nn({width:`${z.progress}%`})},null,8,["style"])]),_:2},1032,["model-value","aria-label"])):re("",!0),z.state==="failed"?(v(),$("p",M8,[O("span",D8,P(u(D)("backend::lang.fileupload.upload_error"))+": ",1),Se(P(z.error),1)])):re("",!0)],42,u8))),128))])):re("",!0),ye.value?(v(),$("button",{key:4,type:"button","data-fileupload-dropzone":"","aria-describedby":e.describedBy||void 0,class:ke([[i.value?"border-solid border-primary bg-sel":e.invalid?"border-dashed border-danger bg-subtle":"border-dashed border-border-strong bg-subtle"],"flex min-h-[112px] w-full flex-col items-center justify-center gap-2 rounded-control border-[1.5px] px-4 py-6 text-center transition-colors duration-150 ease-out hover:bg-hover"]),onClick:ge,onDragover:de,onDragleave:we[0]||(we[0]=z=>i.value=!1),onDrop:se},[O("span",P8,[L(u($o),{size:20,class:"text-muted"})]),O("span",q8,P(Ee.value),1),ie.value!==""?(v(),$("span",T8,P(ie.value),1)):re("",!0)],42,O8)):be.value&&ie.value!==""?(v(),$("p",R8,P(ie.value),1)):re("",!0),c.value>0?(v(),$("p",I8,[L(u(Vt),{size:14,class:"shrink-0","aria-hidden":"true"}),O("span",null,P(u(Er)("backend::lang.fileupload.too_many",c.value,{max:M.value??0})),1)])):re("",!0)],64)),O("input",{ref_key:"input",ref:f,type:"file",hidden:"",tabindex:"-1","data-fileupload-input":"",accept:ce.value,multiple:B.value||void 0,onChange:_e},null,40,B8),O("p",F8,P(d.value),1),e.field.useCaption?(v(),F(xD,{key:3,open:g.value,"onUpdate:open":we[1]||(we[1]=z=>g.value=z),file:eo.value?.file??null,routes:u(R),preview:eo.value?Sn(eo.value):null,"id-prefix":e.controlId,onSaved:Ry,onClosed:Iy},null,8,["open","file","routes","preview","id-prefix"])):re("",!0)],8,wD))}}),z8=["id","name","value","required","aria-required","aria-invalid","aria-describedby"],U8=Q({__name:"NumberField",props:{field:{},modelValue:{},controlId:{},invalid:{type:Boolean},describedBy:{},labels:{},source:{},recordId:{}},emits:["update:modelValue"],setup(e,{emit:t}){const n=e,a=t,r=x(()=>n.modelValue===null||n.modelValue===void 0?"":String(n.modelValue)),l=x(()=>Nr(n.field));function o(s){const i=s.target.value.trim();if(i===""){a("update:modelValue",null);return}const c=Number(i);a("update:modelValue",Number.isFinite(c)?c:null)}return(s,i)=>(v(),$("input",Oe({id:e.controlId},l.value,{name:e.field.name,type:"number",inputmode:"decimal",value:r.value,required:e.field.required||void 0,"aria-required":e.field.required?"true":void 0,"aria-invalid":e.invalid?"true":void 0,"aria-describedby":e.describedBy||void 0,class:[u($n)(e.invalid),"h-input tabular-nums"],onInput:o}),null,16,z8))}}),H8=["id","aria-labelledby","aria-describedby"],K8=Q({__name:"PartialField",props:{field:{},modelValue:{},controlId:{},invalid:{type:Boolean},describedBy:{},labels:{},source:{},recordId:{}},setup(e){const t=e;return(n,a)=>(v(),$("div",{id:e.controlId,role:"group","data-partial-field":"","aria-labelledby":t.field.label?`${e.controlId}-label`:void 0,"aria-describedby":e.describedBy||void 0},[e.source?(v(),F(Wc,{key:0,variant:"field",source:e.source,name:t.field.path||t.field.name,"record-id":e.recordId??null},null,8,["source","name","record-id"])):(v(),F(Kc,{key:1,"data-partial-failed":"",text:u(D)("backend::lang.extension.partial_failed")},null,8,["text"]))],8,H8))}}),W8={class:"relative"},G8=["id","name","type","value","required","aria-required","aria-invalid","aria-describedby"],Y8=["aria-pressed","aria-label"],J8=Q({__name:"PasswordField",props:{field:{},modelValue:{},controlId:{},invalid:{type:Boolean},describedBy:{},labels:{},source:{},recordId:{}},emits:["update:modelValue"],setup(e,{emit:t}){const n=e,a=t,r=q(!1),l=x(()=>typeof n.modelValue=="string"?n.modelValue:""),o=x(()=>Nr(n.field)),s=ot(Vr,null);return s&&Fe(s.revision,()=>{r.value=!1}),(i,c)=>(v(),$("div",W8,[O("input",Oe({id:e.controlId,autocomplete:"new-password",spellcheck:"false"},o.value,{name:e.field.name,type:r.value?"text":"password",value:l.value,required:e.field.required||void 0,"aria-required":e.field.required?"true":void 0,"aria-invalid":e.invalid?"true":void 0,"aria-describedby":e.describedBy||void 0,class:[u($n)(e.invalid),"h-input pr-12"],onInput:c[0]||(c[0]=d=>a("update:modelValue",d.target.value))}),null,16,G8),O("button",{type:"button","data-password-toggle":"","aria-pressed":r.value?"true":"false","aria-label":u(D)(r.value?"backend::lang.form.hide_password":"backend::lang.form.show_password"),class:"absolute top-1/2 right-1.5 flex size-8 -translate-y-1/2 items-center justify-center rounded-pager text-muted transition-colors duration-150 ease-out hover:bg-hover hover:text-text",onClick:c[1]||(c[1]=d=>r.value=!r.value)},[(v(),F(Bt(r.value?u(ex):u(nx)),{size:16,"aria-hidden":"true"}))],8,Y8)]))}}),Z8=["id"],Q8=["id","aria-labelledby","aria-label","aria-describedby","data-mode"],X8=["aria-labelledby"],e5=["id"],t5={class:"min-w-0 [overflow-wrap:anywhere]"},n5={key:0,class:"shrink-0 text-[12px] font-semibold text-muted","aria-hidden":"true"},a5=["data-permission","data-locked"],r5={class:"flex min-w-0 flex-col"},l5=["id"],o5=["id"],s5=Q({__name:"PermissionEditorField",props:{field:{},modelValue:{},controlId:{},invalid:{type:Boolean},describedBy:{},labels:{},source:{},recordId:{}},emits:["update:modelValue"],setup(e,{emit:t}){const n=e,a=t,r=x(()=>n.field.permissionOptions??[]),l=x(()=>n.field.mode==="radio"),o=x(()=>!!n.field.readOnly||!!Nr(n.field).readonly),s=x(()=>wy(n.field,n.modelValue)),i=x(()=>{const g=[],y=[];for(const w of r.value){if(!w.tab){y.push(w);continue}let A=g.find(S=>S.label===w.tab);A||(A={key:`tab:${w.tab}`,label:w.tab,options:[]},g.push(A)),A.options.push(w)}return y.length>0&&g.push({key:"other",label:D("backend::lang.permissioneditor.other"),options:y}),g}),c=[{value:"1",label:"backend::lang.permissioneditor.allow",checked:"data-[state=checked]:bg-ok-bg data-[state=checked]:text-ok-text"},{value:"0",label:"backend::lang.permissioneditor.inherit",checked:"data-[state=checked]:bg-surface data-[state=checked]:text-text data-[state=checked]:shadow-tab"},{value:"-1",label:"backend::lang.permissioneditor.deny",checked:"data-[state=checked]:bg-danger-soft data-[state=checked]:text-danger"}],d=x(()=>`${n.controlId}-label`);function f(g,y){return`${n.controlId}-${g}-${y}`}function p(g){return o.value||!!g.locked}function h(g){return!!g.locked&&!o.value}function m(g){return s.value[g.code]??0}function b(g,y){if(p(g))return;const w={...s.value};y===1||l.value&&y===-1?w[g.code]=y:delete w[g.code],a("update:modelValue",w)}return(g,y)=>r.value.length===0?(v(),$("div",{key:0,id:e.controlId,"data-permission-empty":"",class:"flex min-h-input items-center rounded-control border border-border bg-subtle px-3.5 text-muted"},P(u(D)("backend::lang.permissioneditor.empty")),9,Z8)):(v(),$("div",{key:1,id:e.controlId,role:"group","aria-labelledby":e.field.label?d.value:void 0,"aria-label":e.field.label?void 0:e.field.name,"aria-describedby":e.describedBy||void 0,class:ke([e.invalid?"border-danger":"border-border","overflow-hidden rounded-inner border"]),"data-permission-editor":"","data-mode":l.value?"radio":"checkbox"},[(v(!0),$(xe,null,Be(i.value,(w,A)=>(v(),$("div",{key:w.key,role:"group","aria-labelledby":`${e.controlId}-section-${A}`,"data-permission-section":""},[O("h3",{id:`${e.controlId}-section-${A}`,class:ke([A>0?"border-t border-border":"","flex h-row-head items-center justify-between gap-4 bg-subtle px-4 font-semibold"])},[O("span",t5,P(w.label),1),l.value?re("",!0):(v(),$("span",n5,P(u(D)("backend::lang.permissioneditor.allow")),1))],10,e5),(v(!0),$(xe,null,Be(w.options,(S,R)=>(v(),$("div",{key:S.code,"data-permission":S.code,"data-locked":h(S)?"":void 0,class:"flex min-h-[56px] items-center justify-between gap-x-4 gap-y-2 border-t border-border px-4 py-3 max-sm:flex-col max-sm:items-start"},[O("div",r5,[(v(),F(Bt(l.value?"span":"label"),{id:`${f(A,R)}-label`,for:l.value?void 0:f(A,R),class:"[overflow-wrap:anywhere]"},{default:T(()=>[Se(P(S.label||S.code)+" ",1),h(S)?(v(),F(u(Ra),{key:0,size:14,class:"ml-1 inline-block align-[-2px] text-muted","aria-hidden":"true"})):re("",!0)]),_:2},1032,["id","for"])),h(S)?(v(),$("p",{key:0,id:`${f(A,R)}-note`,class:"text-[13px] text-muted [overflow-wrap:anywhere]","data-permission-locked":""},P(u(D)("backend::lang.permissioneditor.locked")),9,l5)):S.comment?(v(),$("p",{key:1,id:`${f(A,R)}-note`,class:"text-[13px] text-muted [overflow-wrap:anywhere]"},P(S.comment),9,o5)):re("",!0)]),l.value?(v(),F(u(SA),{key:0,orientation:"horizontal","model-value":String(m(S)),disabled:p(S),"aria-disabled":p(S)?"true":void 0,"aria-labelledby":`${f(A,R)}-label`,"aria-describedby":h(S)||S.comment?`${f(A,R)}-note`:void 0,class:"inline-flex shrink-0 gap-1 rounded-inner border border-border bg-subtle p-1","onUpdate:modelValue":H=>b(S,Number(H))},{default:T(()=>[(v(),$(xe,null,Be(c,H=>L(u(MA),{key:H.value,value:H.value,"data-segment":H.value,class:ke([H.checked,"inline-flex h-pager items-center rounded-tab px-4 text-[13px] whitespace-nowrap text-muted transition-colors duration-150 ease-out hover:text-text disabled:cursor-not-allowed disabled:hover:text-muted data-[state=checked]:text-[14px] data-[state=checked]:font-semibold"])},{default:T(()=>[Se(P(u(D)(H.label)),1)]),_:2},1032,["value","data-segment","class"])),64))]),_:1},8,["model-value","disabled","aria-disabled","aria-labelledby","aria-describedby","onUpdate:modelValue"])):(v(),F(u(PS),{key:1,id:f(A,R),"model-value":m(S)===1,disabled:p(S),"aria-disabled":p(S)?"true":void 0,"aria-labelledby":`${f(A,R)}-label`,"aria-describedby":h(S)||S.comment?`${f(A,R)}-note`:void 0,class:"flex size-[18px] shrink-0 items-center justify-center rounded-checkbox border border-border-strong bg-surface disabled:cursor-not-allowed disabled:opacity-60 data-[state=checked]:border-primary data-[state=checked]:bg-primary data-[state=checked]:text-on-primary","onUpdate:modelValue":H=>b(S,H===!0?1:0)},{default:T(()=>[L(u(TS),null,{default:T(()=>[L(u(La),{size:14,"aria-hidden":"true"})]),_:1})]),_:1},8,["id","model-value","disabled","aria-disabled","aria-labelledby","aria-describedby","onUpdate:modelValue"]))],8,a5))),128))],8,X8))),128))],10,Q8))}}),i5=new Set(["mltext","mltextarea","mlmarkdown"]);function qr(e){return e!==void 0&&i5.has(e)}const ql="summer:ml-locale";function u5(e){typeof window>"u"||e===""||window.dispatchEvent(new CustomEvent(ql,{detail:e}))}function Fn(e){const t={};if(e===null||typeof e!="object"||Array.isArray(e))return t;for(const[n,a]of Object.entries(e))typeof a=="string"&&(t[n]=a);return t}const Mt="default";function gn(e){return e.tab?`tab:${e.tab}`:Mt}function Tl(e,t){return`${e}-tab-${t}`}function Ws(e,t){return`${e}-panel-${t}`}function Gs(e,t){const n=e.context;if(n==null)return!0;const a=Array.isArray(n)?n:[n];return a.length===0||a.includes(t)}function Wt(e,t,n="create"){const a={};for(const r of e){if(r.readOnly||!CP(r.type))continue;const l=t[r.name];if(!(r.type==="password"&&n==="update"&&(l===""||l===null))){if(r.type==="permissioneditor"){a[r.name]=wy(r,l);continue}if(qr(r.type)){a[r.name]=Fn(l);continue}l!==void 0&&(a[r.name]=l)}}return a}function Gi(e,t){const n=typeof t=="string"||typeof t=="number"?String(t):"";return e!=="slug"?n:n.toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,"")}function Cy(e,t){const n=Fn(e),a=Fn(t),r=[];for(const l of new Set([...Object.keys(n),...Object.keys(a)]))(n[l]??"")!==(a[l]??"")&&r.push(l);return r}function c5(e,t,n,a,r,l,o){const s={},i=qr(e.find(c=>c.name===t)?.type);for(const c of e){const d=c.preset;if(!d||d.field!==t||c.type!=="text"&&c.type!=="mltext")continue;if(c.type==="text"){if(o(c.name))continue;s[c.name]=Gi(d.type,i?Fn(a)[l]??"":a);continue}if(!i){if(o(c.name,l))continue;s[c.name]={...Fn(r[c.name]),[l]:Gi(d.type,a)};continue}const f=Fn(a),p={...Fn(r[c.name])};let h=!1;for(const m of Cy(n,a))o(c.name,m)||(p[m]=Gi(d.type,f[m]??""),h=!0);h&&(s[c.name]=p)}return s}function Qc(e,t=[]){const n={};for(const a of e)if(a.default!==void 0)n[a.name]=a.default;else if(a.type==="switch"||a.type==="checkbox")n[a.name]=!1;else if(a.type==="relation"&&a.multiple)n[a.name]=[];else if(qr(a.type)){const r={};for(const l of t)r[l]="";n[a.name]=r}return n}function go(e){return e?.enabledLocales??[]}function Sy(e,t){const n={};for(const a of t)n[a]="";if(typeof e=="string"){const a=t[0];return a&&(n[a]=e),n}return{...n,...Fn(e)}}function Zl(e){const t={};for(const[n,a]of Object.entries(e??{})){const r=Array.isArray(a)?a.filter(l=>typeof l=="string"&&l!==""):typeof a=="string"&&a!==""?[a]:[];r.length>0&&(t[n]=r)}return t}function fa(e){return JSON.stringify(Object.keys(e).sort().map(t=>[t,e[t]]))}function Ql(e,t){const n=document.getElementById(`${e}-${t}`);return n?(n.matches("input, select, textarea, button, [tabindex]")||n.setAttribute("tabindex","-1"),n.focus(),!0):!1}const d5={role:"tablist",class:"inline-flex gap-1 rounded-inner border border-border bg-subtle p-1"},f5=["id","data-tab","aria-selected","aria-controls","tabindex","onClick","onKeydown"],p5=["aria-label"],Xc=Q({__name:"FormTabs",props:{tabs:{},modelValue:{},idPrefix:{}},emits:["update:modelValue"],setup(e,{emit:t}){const n=e,a=t;function r(l,o){const s=l.key==="ArrowRight"?1:l.key==="ArrowLeft"?-1:0;if(s===0)return;l.preventDefault();const i=(o+s+n.tabs.length)%n.tabs.length,c=n.tabs[i];c&&(a("update:modelValue",c.key),document.getElementById(Tl(n.idPrefix,i))?.focus())}return(l,o)=>(v(),$("div",d5,[(v(!0),$(xe,null,Be(e.tabs,(s,i)=>(v(),$("button",{id:u(Tl)(e.idPrefix,i),key:s.key,type:"button",role:"tab","data-tab":s.key,"aria-selected":s.key===e.modelValue?"true":"false","aria-controls":u(Ws)(e.idPrefix,i),tabindex:s.key===e.modelValue?0:-1,class:ke([s.key===e.modelValue?"bg-surface text-text shadow-tab":"text-muted hover:text-text","inline-flex h-[34px] items-center gap-2 rounded-tab px-4 font-semibold transition-colors duration-150 ease-out"]),onClick:c=>a("update:modelValue",s.key),onKeydown:c=>r(c,i)},[Se(P(s.label)+" ",1),s.errors>0?(v(),$("span",{key:0,"data-tab-errors":"","aria-label":u(Er)("backend::lang.form.tab_errors",s.errors),class:"inline-flex h-5 min-w-5 items-center justify-center rounded-pill bg-danger px-1.5 text-[11px] font-bold text-white"},P(s.errors),9,p5)):re("",!0)],42,f5))),128))]))}}),h5={class:"flex items-start gap-3 p-6 pb-4"},v5={key:0,"data-child-loading":"","aria-hidden":"true",class:"grid grid-cols-1 gap-x-6 gap-y-[22px] min-[600px]:grid-cols-2"},m5={key:1,role:"alert","data-child-load-failed":"",class:"rounded-inner bg-danger-soft px-[18px] py-3.5 text-danger"},y5=["id","role","aria-labelledby"],g5=["disabled"],b5={class:"flex items-center gap-2.5 border-t border-border px-6 py-4"},_5={class:"ml-auto flex gap-2.5"},x5=Q({__name:"RelationChildModal",props:{open:{type:Boolean},source:{},ownerId:{},relation:{},schema:{},mode:{},childId:{},sessionKey:{},canDelete:{type:Boolean}},emits:["update:open","changed","gone","closed"],setup(e,{emit:t}){const n=e,a=t,r=q({}),l=q({}),o=q({}),s=q(!1),i=q(!1),c=q(!1),d=q(""),f=q(Mt),p=q(Pl()),h=q(0),m=q(0),{activeUploads:b,beginUpload:g}=Zc(),y=q(null),w=Ja();let A=0;const S=x(()=>`child-${n.relation}`),R=x(()=>n.mode==="preview"),H=x(()=>n.mode==="create"?"create":"update"),j=x(()=>{const pe=((R.value?n.schema.viewForm:n.schema.manageForm)??[]).filter(_=>Gs(_,H.value));return R.value?pe.map(_=>({..._,readOnly:!0,attributes:{..._.attributes??{},readonly:!0}})):pe}),U=x(()=>j.value.map(le=>le.name)),k=x(()=>{if(!j.value.some(pe=>pe.tab))return[];const le=[];for(const pe of j.value){const _=gn(pe);let C=le.find(E=>E.key===_);C||(C={key:_,label:pe.tab||D("backend::lang.form.tab_default"),errors:0},_===Mt?le.unshift(C):le.push(C)),o.value[pe.name]&&(C.errors+=1)}return le}),I=x(()=>Math.max(k.value.findIndex(le=>le.key===f.value),0)),W=x(()=>{if(k.value.length===0)return j.value;const le=k.value[I.value]?.key??Mt;return j.value.filter(pe=>gn(pe)===le)}),V=x(()=>{const le=n.schema.messages;return n.mode==="create"?Ne(le.createTitle):Ne(R.value?le.previewTitle:le.updateTitle)}),B=x(()=>Ne(n.mode==="create"?n.schema.messages.createSubmit:n.schema.messages.updateSubmit)),X=x(()=>!R.value&&!s.value&&!i.value&&(h.value>0||b.value>0||fa(Wt(j.value,r.value))!==d.value));function M(){return{[_a]:n.sessionKey,[my]:p.value}}function ne(){return{...n.source,id:n.ownerId,name:n.relation}}yt(Vr,{get key(){return n.sessionKey},get childKey(){return p.value},get recordId(){return n.childId??0},routes:le=>b6(n.source,n.ownerId,n.relation,n.childId??0,le,n.sessionKey,p.value),markDirty:()=>{h.value++},pendingChanges:pt(h),revision:pt(m),beginUpload:g,activeUploads:pt(b)}),yt(Yc,x(()=>r.value)),yt(Jc,ve);const ue=ot(ts,x(()=>[]));yt(ts,ue);function ve(le,pe){if(r.value={...r.value,[le]:pe},o.value[le]){const _={...o.value};delete _[le],o.value=_}}function ye(le,pe){const _=ue.value,C={...le};for(const E of j.value)E.type==="password"?C[E.name]="":qr(E.type)&&(C[E.name]=Sy(le[E.name],_));r.value=C,l.value=pe?.labels??{},d.value=fa(Wt(j.value,r.value))}async function be(){await We(),y.value?.querySelector('input:not([type="hidden"]):not([tabindex="-1"]), select, textarea, button, [contenteditable="true"], [tabindex="0"]')?.focus()}function oe(){a("update:open",!1),Te(D("backend::lang.relation.child_gone"),"danger"),a("gone")}async function Ce(){const le=++A;if(o.value={},i.value=!1,c.value=!1,h.value=0,p.value=Pl(),f.value=Mt,n.mode==="create"||n.childId===null){s.value=!1,ye(Qc(j.value,ue.value)),f.value=k.value[0]?.key??Mt,await be();return}s.value=!0;try{const pe=await qe.GET("/{vendor}/{plugin}/{controller}/{id}/relations/{name}/records/{child}",{params:{path:{...ne(),child:n.childId},header:M()}});if(le!==A)return;if(pe.data)ye(pe.data.data,pe.data.meta),f.value=k.value[0]?.key??Mt;else if(pe.response.status===404){oe();return}else i.value=!0}catch{le===A&&(i.value=!0)}finally{le===A&&(s.value=!1)}le===A&&await be()}Fe(()=>n.open,le=>{le?Ce():A++},{immediate:!0});async function ce(le){if(le){a("update:open",!0);return}c.value||X.value&&!await w.ask({message:D("backend::lang.form.unsaved_confirm"),confirmLabel:D("backend::lang.form.discard"),danger:!0})||a("update:open",!1)}async function Ee(le){o.value=Zl(le);const pe=j.value.filter(C=>o.value[C.name]),_=pe.find(C=>gn(C)===f.value)??pe[0];_&&(k.value.length>0&&(f.value=gn(_)),await We(),Ql(S.value,_.name))}async function Z(){if(!(c.value||R.value||s.value||i.value||b.value>0)){c.value=!0;try{const le=Wt(j.value,r.value),pe=n.mode==="create"||n.childId===null?await qe.POST("/{vendor}/{plugin}/{controller}/{id}/relations/{name}/records",{params:{path:ne(),header:M()},body:le}):await qe.PUT("/{vendor}/{plugin}/{controller}/{id}/relations/{name}/records/{child}",{params:{path:{...ne(),child:n.childId},header:M()},body:le});if(pe.data){const C=n.mode==="create"?"created":"updated";o.value={},h.value=0,a("update:open",!1),Te(Ne(C==="created"?n.schema.messages.created:n.schema.messages.updated)),a("changed",C);return}const _=pe.response.status;_===422?await Ee(pe.error?.error.details):_===404?oe():Te(pe.error?.error.message||D("backend::lang.form.error_generic"),"danger")}catch{Te(D("backend::lang.form.error_generic"),"danger")}finally{c.value=!1}}}async function K(){if(c.value||n.childId===null)return;const le=n.childId;if(await w.ask({message:Ne(n.schema.messages.deleteOneConfirm),confirmLabel:D("backend::lang.form.delete"),danger:!0})){c.value=!0;try{const _=await qe.POST("/{vendor}/{plugin}/{controller}/{id}/relations/{name}/delete",{params:{path:ne(),header:{[_a]:n.sessionKey}},body:{ids:[le]}});if(_.data){h.value=0,a("update:open",!1),Te(Ne(n.schema.messages.deleted,_.data.data.deleted||1)),a("changed","deleted");return}if(_.response.status===404){oe();return}Te(_.error?.error.message||D("backend::lang.form.error_generic"),"danger")}catch{Te(D("backend::lang.form.error_generic"),"danger")}finally{c.value=!1}}}function te(le){le.preventDefault()}function ie(le){le.preventDefault(),a("closed")}return(le,pe)=>(v(),$(xe,null,[L(u(Hl),{open:e.open,"onUpdate:open":ce},{default:T(()=>[L(u(Vs),null,{default:T(()=>[L(u(Wl),{"data-dialog-overlay":"",class:"fixed inset-0 z-40 bg-overlay"}),L(u(Kl),{"data-relation-child-modal":"","data-dialog-content":"","data-mode":e.mode,"aria-modal":"true","aria-describedby":void 0,class:"fixed top-1/2 left-1/2 z-50 flex max-h-[calc(100vh-32px)] w-[calc(100%-32px)] max-w-[720px] -translate-x-1/2 -translate-y-1/2 flex-col rounded-modal bg-surface text-text shadow-pop",onOpenAutoFocus:te,onCloseAutoFocus:ie},{default:T(()=>[O("div",h5,[L(u(Gl),{class:"min-w-0 flex-1 text-[20px] font-bold tracking-[-0.01em]"},{default:T(()=>[Se(P(V.value),1)]),_:1}),L(u(Pr),{"data-action":"close","aria-label":u(D)("backend::lang.form.close"),disabled:c.value,class:"flex size-[34px] shrink-0 items-center justify-center rounded-tab bg-subtle text-muted hover:bg-hover hover:text-text"},{default:T(()=>[L(u(Yt),{size:16,"aria-hidden":"true"})]),_:1},8,["aria-label","disabled"])]),O("div",{ref_key:"body",ref:y,"data-child-body":"",class:"flex min-h-0 flex-1 flex-col gap-4 overflow-y-auto px-6 pb-6"},[s.value?(v(),$("div",v5,[(v(),$(xe,null,Be(6,_=>O("div",{key:_,class:"flex flex-col gap-1.5"},[...pe[3]||(pe[3]=[O("span",{class:"block h-3 w-24 rounded-[6px] bg-skel"},null,-1),O("span",{class:"block h-input rounded-control bg-skel"},null,-1)])])),64))])):i.value?(v(),$("p",m5,P(u(D)("backend::lang.relation.child_load_failed")),1)):(v(),$(xe,{key:2},[L(Jl,{errors:o.value,"field-names":U.value},null,8,["errors","field-names"]),k.value.length>0?(v(),F(Xc,{key:0,modelValue:f.value,"onUpdate:modelValue":pe[0]||(pe[0]=_=>f.value=_),tabs:k.value,"id-prefix":S.value,class:"self-start"},null,8,["modelValue","tabs","id-prefix"])):re("",!0),O("form",{id:k.value.length>0?u(Ws)(S.value,I.value):void 0,role:k.value.length>0?"tabpanel":void 0,"aria-labelledby":k.value.length>0?u(Tl)(S.value,I.value):void 0,novalidate:"",onSubmit:ut(Z,["prevent"])},[O("fieldset",{disabled:c.value||R.value,class:"m-0 min-w-0 border-0 p-0"},[L(Xl,{fields:W.value,values:r.value,errors:o.value,labels:l.value,source:e.source,"record-id":e.childId,"id-prefix":S.value,onUpdate:ve},null,8,["fields","values","errors","labels","source","record-id","id-prefix"])],8,g5)],40,y5)],64))],512),O("div",b5,[e.mode==="update"&&e.canDelete&&!s.value&&!i.value?(v(),F(et,{key:0,variant:"danger","data-action":"delete-child",icon:u(Ll),disabled:c.value,onClick:K},{default:T(()=>[Se(P(u(D)("backend::lang.form.delete")),1)]),_:1},8,["icon","disabled"])):re("",!0),O("div",_5,[R.value?(v(),F(et,{key:0,variant:"outline","data-action":"cancel",onClick:pe[1]||(pe[1]=_=>ce(!1))},{default:T(()=>[Se(P(u(D)("backend::lang.form.close")),1)]),_:1})):(v(),$(xe,{key:1},[L(et,{variant:"ghost","data-action":"cancel",disabled:c.value,onClick:pe[2]||(pe[2]=_=>ce(!1))},{default:T(()=>[Se(P(u(D)("backend::lang.form.cancel")),1)]),_:1},8,["disabled"]),i.value?re("",!0):(v(),F(et,{key:0,variant:"primary","data-action":"save-child",disabled:c.value||s.value||u(b)>0,onClick:Z},{default:T(()=>[Se(P(c.value?u(D)("backend::lang.form.saving"):B.value),1)]),_:1},8,["disabled"]))],64))])])]),_:1},8,["data-mode"])]),_:1})]),_:1},8,["open"]),L(Ya,{open:u(w).request.value!==null,message:u(w).request.value?.message??"","confirm-label":u(w).request.value?.confirmLabel,danger:u(w).request.value?.danger,onConfirm:u(w).confirm,onCancel:u(w).cancel},null,8,["open","message","confirm-label","danger","onConfirm","onCancel"])],64))}}),w5={class:"flex items-start gap-3"},k5={class:"flex min-w-0 flex-1 flex-col gap-1"},$5=["title"],C5={key:0,class:"truncate text-[13px] text-muted"},S5=["disabled"],A5={class:"relative block"},E5={class:"sr-only"},M5=["value","placeholder"],D5=["aria-multiselectable","aria-label","aria-busy"],O5=["data-candidate","aria-selected","onClick","onKeydown"],P5={class:"flex size-8 shrink-0 items-center justify-center rounded-full bg-subtle text-[12px] font-bold","aria-hidden":"true"},q5={class:"flex min-w-0 flex-1 flex-col leading-tight"},T5={class:"truncate font-semibold"},R5={key:0,class:"truncate text-[13px] text-muted"},I5={key:0,class:"block size-2.5 rounded-full bg-primary"},B5={key:0,role:"presentation",class:"px-1 py-3 text-[13px] text-muted"},F5={key:1,role:"presentation","data-candidates-empty":"",class:"px-1 py-3 text-[13px] text-muted"},N5=["aria-label"],V5={"data-candidates-range":"",class:"flex-1"},L5=["aria-label","disabled"],j5=["aria-label","disabled"],z5={class:"flex gap-2.5"},U5=["disabled"],H5=["disabled"],K5=["disabled","aria-busy"],W5=5,G5=300,kp="inline-flex size-[34px] items-center justify-center rounded-tab border border-border text-text hover:bg-hover disabled:cursor-not-allowed disabled:opacity-60",Y5=Q({__name:"RelationPickerModal",props:{open:{type:Boolean},source:{},recordId:{},relation:{},schema:{},sessionKey:{}},emits:["update:open","linked","closed"],setup(e,{emit:t}){const n=e,a=t,r=q(""),l=q(1),o=q([]),s=q(null),i=q(!1),c=q(!1),d=q(new Set),f=q(null),p=q(1),h=q(null),m=q({}),b=q({}),g=q(null);let y=0,w=null;const A=x(()=>n.schema.manage.list.columns),S=x(()=>A.value[0]?.key??""),R=x(()=>A.value[1]?.key??""),H=x(()=>d.value.size),j=`relation-${n.relation}-candidates`,U=x(()=>n.schema.pivotForm??[]),k=x(()=>U.value.map(_=>_.name)),I=x(()=>U.value.length>0),W=x(()=>`link-${n.relation}`);function V(){return n.sessionKey?{[_a]:n.sessionKey}:void 0}const B=x(()=>{const _=s.value;if(!_||_.total===0)return"";const C=(_.page-1)*_.per_page+1,E=Math.min(_.page*_.per_page,_.total);return D("backend::lang.relation.candidates_range",{from:C,to:E,total:_.total})}),X=x(()=>Math.max(s.value?.last_page??1,1));function M(_){const C=_.id;return typeof C=="number"&&Number.isInteger(C)?C:typeof C=="string"&&/^\d+$/.test(C)?Number(C):null}function ne(_,C){const E=C===""?void 0:_[C];return typeof E=="string"||typeof E=="number"?String(E):""}function ee(_){return _.split(/[\s@._-]+/).filter(Boolean).slice(0,2).map(C=>C.charAt(0).toUpperCase()).join("")}async function ue(){const _=++y;i.value=!0;try{const C=r.value.trim(),{data:E}=await qe.GET("/{vendor}/{plugin}/{controller}/{id}/relations/{name}/candidates",{params:{path:{...n.source,id:n.recordId,name:n.relation},query:{search:C===""?void 0:C,page:l.value,per_page:W5},header:V()}});if(_!==y)return;o.value=E?.data??[],s.value=E?.meta??null}catch{_===y&&(o.value=[],s.value=null)}finally{_===y&&(i.value=!1)}}function ve(){w!==null&&(clearTimeout(w),w=null),y++,r.value="",l.value=1,o.value=[],s.value=null,i.value=!1,d.value=new Set,p.value=1,h.value=null,m.value={},b.value={}}Fe(()=>n.open,_=>{_?(ve(),ue()):ve()},{immediate:!0});function ye(_){r.value=_.target.value,w!==null&&clearTimeout(w),w=setTimeout(()=>{w=null,l.value=1,ue()},G5)}function be(_){_<1||_>X.value||_===l.value||(l.value=_,ue())}function oe(_){const C=M(_);return C!==null&&d.value.has(C)}function Ce(_){const C=M(_);if(C===null)return;if(I.value){d.value=new Set([C]),h.value=_;return}const E=new Set(d.value);E.has(C)?E.delete(C):E.add(C),d.value=E}async function ce(){!I.value||d.value.size===0||!h.value||(p.value=2,m.value=Qc(U.value,[]),b.value={},await We(),g.value?.querySelector('input, select, textarea, button, [contenteditable="true"]')?.focus())}async function Ee(){if(c.value)return;p.value=1,b.value={},await We(),(document.querySelector(`#${j} [aria-selected="true"]`)??f.value)?.focus()}function Z(_,C){if(m.value={...m.value,[_]:C},b.value[_]){const E={...b.value};delete E[_],b.value=E}}function K(_,C,E){switch(_.key){case" ":_.preventDefault(),Ce(C);break;case"Enter":_.preventDefault(),Ce(C),I.value&&ce();break;case"ArrowDown":case"ArrowUp":{_.preventDefault();const J=_.currentTarget.parentElement?.querySelectorAll('[role="option"]'),Y=_.key==="ArrowDown"?1:-1;J?.[Math.min(Math.max(E+Y,0),J.length-1)]?.focus();break}}}function te(_){a("update:open",_)}async function ie(){const _=[...d.value];if(c.value||_.length===0)return;const C=I.value;c.value=!0;try{const E=await qe.POST("/{vendor}/{plugin}/{controller}/{id}/relations/{name}/link",{params:{path:{...n.source,id:n.recordId,name:n.relation},header:V()},body:C?{ids:_.slice(0,1),pivot:Wt(U.value,m.value)}:{ids:_}});if(E.data){te(!1),a("linked",E.data.data.linked??_.length);return}const J=E.response.status;if(C&&J===422){b.value=Zl(E.error?.error.details);const Y=U.value.find(ae=>b.value[ae.name]);Y&&(await We(),Ql(W.value,Y.name));return}if(C&&J===404){Te(D("backend::lang.relation.child_gone"),"danger"),d.value=new Set,h.value=null,p.value=1,ue();return}if(C){Te(D("backend::lang.form.error_generic"),"danger");return}Te(E.error?.error.message||D("backend::lang.form.error_generic"),"danger")}catch{Te(D("backend::lang.form.error_generic"),"danger")}finally{c.value=!1}}function le(_){_.preventDefault(),f.value?.focus()}function pe(_){_.preventDefault(),a("closed")}return Pt(()=>{w!==null&&clearTimeout(w)}),(_,C)=>(v(),F(u(Hl),{open:e.open,"onUpdate:open":te},{default:T(()=>[L(u(Vs),null,{default:T(()=>[L(u(Wl),{"data-dialog-overlay":"",class:"fixed inset-0 z-40 bg-overlay"}),L(u(Kl),{"data-relation-picker":"","data-dialog-content":"","aria-modal":"true",class:"fixed top-1/2 left-1/2 z-50 flex max-h-[calc(100vh-32px)] w-[calc(100%-32px)] max-w-[560px] -translate-x-1/2 -translate-y-1/2 flex-col gap-4 rounded-modal bg-surface p-6 text-text shadow-pop",onOpenAutoFocus:le,onCloseAutoFocus:pe},{default:T(()=>[O("div",w5,[O("div",k5,[L(u(Gl),{class:"text-[20px] font-bold tracking-[-0.01em]"},{default:T(()=>[Se(P(p.value===2?u(Ne)(e.schema.messages.pivotTitle):u(Ne)(e.schema.messages.link)),1)]),_:1}),p.value===1?(v(),F(u(Al),{key:0,class:"text-muted"},{default:T(()=>[Se(P(u(Ne)(e.schema.messages.linkHint)),1)]),_:1})):(v(),F(u(Al),{key:1,class:"flex min-w-0 flex-col","data-chosen-record":""},{default:T(()=>[O("span",{class:"truncate font-semibold text-text",title:ne(h.value??{},S.value)},P(ne(h.value??{},S.value)),9,$5),R.value?(v(),$("span",C5,P(ne(h.value??{},R.value)),1)):re("",!0)]),_:1}))]),L(u(Pr),{"data-action":"close","aria-label":u(D)("backend::lang.form.close"),class:"flex size-[34px] shrink-0 items-center justify-center rounded-tab bg-subtle text-muted hover:bg-hover hover:text-text"},{default:T(()=>[L(u(Yt),{size:16,"aria-hidden":"true"})]),_:1},8,["aria-label"])]),p.value===2?(v(),$("div",{key:0,ref_key:"stepTwo",ref:g,"data-pivot-step":"",class:"flex min-h-0 flex-col gap-4 overflow-y-auto"},[L(Jl,{errors:b.value,"field-names":k.value},null,8,["errors","field-names"]),O("form",{novalidate:"",onSubmit:ut(ie,["prevent"])},[O("fieldset",{disabled:c.value,class:"m-0 min-w-0 border-0 p-0"},[L(Xl,{fields:U.value,values:m.value,errors:b.value,source:e.source,"record-id":null,"id-prefix":W.value,onUpdate:Z},null,8,["fields","values","errors","source","id-prefix"])],8,S5)],32)],512)):re("",!0),Va(O("label",A5,[O("span",E5,P(u(D)("backend::lang.list.search")),1),L(u(Ms),{size:18,class:"pointer-events-none absolute top-1/2 left-3.5 -translate-y-1/2 text-muted","aria-hidden":"true"}),O("input",{ref_key:"searchInput",ref:f,type:"search","data-candidate-search":"",value:r.value,placeholder:u(Ne)(e.schema.messages.candidateSearch),"aria-controls":j,class:"h-input w-full rounded-control border border-border-strong bg-surface pr-3.5 pl-10",onInput:ye},null,40,M5)],512),[[cu,p.value===1]]),Va(O("ul",{id:j,role:"listbox","aria-multiselectable":I.value?"false":"true","aria-label":u(Ne)(e.schema.messages.link),"aria-busy":i.value?"true":void 0,class:"flex min-h-0 flex-col gap-2 overflow-y-auto"},[(v(!0),$(xe,null,Be(o.value,(E,J)=>(v(),$("li",{key:M(E)??`row-${J}`,role:"option",tabindex:"0","data-candidate":M(E)??void 0,"aria-selected":oe(E)?"true":"false",class:ke([oe(E)?"border-[#e0b020] bg-sel":"border-border hover:bg-hover","flex h-[54px] cursor-pointer items-center gap-3 rounded-inner border px-3 transition-colors duration-150 ease-out"]),onClick:Y=>Ce(E),onKeydown:Y=>K(Y,E,J)},[O("span",P5,P(ee(ne(E,S.value))),1),O("span",q5,[O("span",T5,P(ne(E,S.value)),1),R.value?(v(),$("span",R5,P(ne(E,R.value)),1)):re("",!0)]),I.value?(v(),$("span",{key:0,"data-radio":"",class:ke([oe(E)?"border-primary":"border-border-strong bg-surface","flex size-[18px] shrink-0 items-center justify-center rounded-full border"]),"aria-hidden":"true"},[oe(E)?(v(),$("span",I5)):re("",!0)],2)):(v(),$("span",{key:1,class:ke([oe(E)?"border-primary bg-primary text-on-primary":"border-border-strong bg-surface","flex size-[18px] shrink-0 items-center justify-center rounded-checkbox border"]),"aria-hidden":"true"},[oe(E)?(v(),F(u(La),{key:0,size:14})):re("",!0)],2))],42,O5))),128)),i.value&&o.value.length===0?(v(),$("li",B5,P(u(D)("backend::lang.list.loading")),1)):!i.value&&o.value.length===0?(v(),$("li",F5,P(u(D)("backend::lang.relation.no_candidates")),1)):re("",!0)],8,D5),[[cu,p.value===1]]),p.value===1&&s.value&&s.value.total>0?(v(),$("nav",{key:1,"aria-label":u(D)("backend::lang.list.pagination"),class:"flex items-center gap-2 text-[13px] text-muted"},[O("span",V5,P(B.value),1),O("button",{type:"button","data-page":"prev","aria-label":u(D)("backend::lang.list.prev_page"),class:ke(kp),disabled:i.value||l.value<=1,onClick:C[0]||(C[0]=E=>be(l.value-1))},[L(u(Es),{size:16,"aria-hidden":"true"})],8,L5),O("button",{type:"button","data-page":"next","aria-label":u(D)("backend::lang.list.next_page"),class:ke(kp),disabled:i.value||l.value>=X.value,onClick:C[1]||(C[1]=E=>be(l.value+1))},[L(u(Vl),{size:16,"aria-hidden":"true"})],8,j5)],8,N5)):re("",!0),O("div",z5,[p.value===2?(v(),$("button",{key:0,type:"button","data-action":"back",disabled:c.value,class:"inline-flex h-button flex-1 items-center justify-center rounded-control border border-border-strong bg-surface font-semibold hover:bg-hover disabled:cursor-not-allowed disabled:opacity-60",onClick:Ee},P(u(D)("backend::lang.relation.back")),9,U5)):(v(),F(u(Pr),{key:1,"data-action":"cancel",class:"inline-flex h-button flex-1 items-center justify-center rounded-control border border-border-strong bg-surface font-semibold hover:bg-hover"},{default:T(()=>[Se(P(u(D)("backend::lang.form.cancel")),1)]),_:1})),I.value&&p.value===1?(v(),$("button",{key:2,type:"button","data-action":"next",disabled:H.value===0,class:"inline-flex h-button flex-1 items-center justify-center rounded-control bg-primary font-semibold text-on-primary hover:opacity-90 disabled:cursor-not-allowed disabled:opacity-60",onClick:ce},P(u(D)("backend::lang.relation.next")),9,H5)):(v(),$("button",{key:3,type:"button","data-action":"confirm-link",disabled:c.value||H.value===0,"aria-busy":c.value?"true":void 0,class:"inline-flex h-button flex-1 items-center justify-center rounded-control bg-primary font-semibold text-on-primary hover:opacity-90 disabled:cursor-not-allowed disabled:opacity-60",onClick:ie},[I.value?(v(),$(xe,{key:0},[Se(P(c.value?u(D)("backend::lang.form.saving"):u(Ne)(e.schema.messages.linkSubmit)),1)],64)):(v(),$(xe,{key:1},[Se(P(u(D)("backend::lang.relation.add_count",{count:H.value})),1)],64))],8,K5))])]),_:1})]),_:1})]),_:1},8,["open"]))}}),J5={class:"flex items-start gap-3"},Z5={class:"flex min-w-0 flex-1 flex-col gap-1"},Q5={key:0,"data-pivot-loading":"","aria-hidden":"true",class:"flex flex-col gap-1.5"},X5={key:1,role:"alert",class:"rounded-inner bg-danger-soft px-[18px] py-3.5 text-danger"},eO=["disabled"],tO={class:"flex gap-2.5"},nO=["disabled"],aO=["disabled"],rO=Q({__name:"RelationPivotModal",props:{open:{type:Boolean},source:{},ownerId:{},relation:{},schema:{},childId:{},childName:{},sessionKey:{}},emits:["update:open","saved","gone","closed"],setup(e,{emit:t}){const n=e,a=t,r=q({}),l=q({}),o=q(!1),s=q(!1),i=q(!1),c=q(""),d=Ja();let f=0;const p=x(()=>`pivot-${n.relation}`),h=x(()=>n.schema.pivotForm??[]),m=x(()=>h.value.map(U=>U.name)),b=x(()=>!o.value&&!s.value&&fa(Wt(h.value,r.value))!==c.value);function g(){return{[_a]:n.sessionKey}}function y(U){return{...n.source,id:n.ownerId,name:n.relation,child:U}}function w(U,k){if(r.value={...r.value,[U]:k},l.value[U]){const I={...l.value};delete I[U],l.value=I}}function A(){a("update:open",!1),Te(D("backend::lang.relation.child_gone"),"danger"),a("gone")}async function S(){const U=++f;if(l.value={},s.value=!1,i.value=!1,r.value={},c.value=fa({}),n.childId!==null){o.value=!0;try{const k=await qe.GET("/{vendor}/{plugin}/{controller}/{id}/relations/{name}/pivot/{child}",{params:{path:y(n.childId),header:g()}});if(U!==f)return;k.data?(r.value={...k.data.data},c.value=fa(Wt(h.value,r.value))):k.response.status===404?A():s.value=!0}catch{U===f&&(s.value=!0)}finally{U===f&&(o.value=!1)}}}Fe(()=>n.open,U=>{U?S():f++},{immediate:!0});async function R(U){if(U){a("update:open",!0);return}i.value||b.value&&!await d.ask({message:D("backend::lang.form.unsaved_confirm"),confirmLabel:D("backend::lang.form.discard"),danger:!0})||a("update:open",!1)}async function H(){if(!(i.value||o.value||s.value||n.childId===null)){i.value=!0;try{const U=await qe.PUT("/{vendor}/{plugin}/{controller}/{id}/relations/{name}/pivot/{child}",{params:{path:y(n.childId),header:g()},body:Wt(h.value,r.value)});if(U.data){l.value={},c.value=fa(Wt(h.value,r.value)),a("update:open",!1),Te(Ne(n.schema.messages.pivotSaved)),a("saved");return}const k=U.response.status;if(k===422){l.value=Zl(U.error?.error.details);const I=h.value.find(W=>l.value[W.name]);I&&(await We(),Ql(p.value,I.name))}else k===404?A():Te(D("backend::lang.form.error_generic"),"danger")}catch{Te(D("backend::lang.form.error_generic"),"danger")}finally{i.value=!1}}}function j(U){U.preventDefault(),a("closed")}return(U,k)=>(v(),$(xe,null,[L(u(Hl),{open:e.open,"onUpdate:open":R},{default:T(()=>[L(u(Vs),null,{default:T(()=>[L(u(Wl),{"data-dialog-overlay":"",class:"fixed inset-0 z-40 bg-overlay"}),L(u(Kl),{"data-relation-pivot-modal":"","data-dialog-content":"","aria-modal":"true",class:"fixed top-1/2 left-1/2 z-50 flex max-h-[calc(100vh-32px)] w-[calc(100%-32px)] max-w-[560px] -translate-x-1/2 -translate-y-1/2 flex-col gap-4 overflow-y-auto rounded-modal bg-surface p-6 text-text shadow-pop",onCloseAutoFocus:j},{default:T(()=>[O("div",J5,[O("div",Z5,[L(u(Gl),{class:"text-[20px] font-bold tracking-[-0.01em]"},{default:T(()=>[Se(P(u(Ne)(e.schema.messages.pivotTitle)),1)]),_:1}),L(u(Al),{class:"truncate text-muted",title:e.childName},{default:T(()=>[Se(P(e.childName),1)]),_:1},8,["title"])]),L(u(Pr),{"data-action":"close","aria-label":u(D)("backend::lang.form.close"),disabled:i.value,class:"flex size-[34px] shrink-0 items-center justify-center rounded-tab bg-subtle text-muted hover:bg-hover hover:text-text"},{default:T(()=>[L(u(Yt),{size:16,"aria-hidden":"true"})]),_:1},8,["aria-label","disabled"])]),o.value?(v(),$("div",Q5,[...k[1]||(k[1]=[O("span",{class:"block h-3 w-24 rounded-[6px] bg-skel"},null,-1),O("span",{class:"block h-input rounded-control bg-skel"},null,-1)])])):s.value?(v(),$("p",X5,P(u(D)("backend::lang.relation.child_load_failed")),1)):(v(),$("form",{key:2,class:"flex flex-col gap-4",novalidate:"",onSubmit:ut(H,["prevent"])},[L(Jl,{errors:l.value,"field-names":m.value},null,8,["errors","field-names"]),O("fieldset",{disabled:i.value,class:"m-0 min-w-0 border-0 p-0"},[L(Xl,{fields:h.value,values:r.value,errors:l.value,source:e.source,"record-id":null,"id-prefix":p.value,onUpdate:w},null,8,["fields","values","errors","source","id-prefix"])],8,eO)],32)),O("div",tO,[O("button",{type:"button","data-action":"cancel",disabled:i.value,class:"inline-flex h-button flex-1 items-center justify-center rounded-control border border-border-strong bg-surface font-semibold hover:bg-hover disabled:cursor-not-allowed disabled:opacity-60",onClick:k[0]||(k[0]=I=>R(!1))},P(u(D)("backend::lang.form.cancel")),9,nO),O("button",{type:"button","data-action":"save-pivot",disabled:i.value||o.value||s.value,class:"inline-flex h-button flex-1 items-center justify-center rounded-control bg-primary font-semibold text-on-primary hover:opacity-90 disabled:cursor-not-allowed disabled:opacity-60",onClick:H},P(i.value?u(D)("backend::lang.form.saving"):u(Ne)(e.schema.messages.pivotSubmit)),9,aO)])]),_:1})]),_:1})]),_:1},8,["open"]),L(Ya,{open:u(d).request.value!==null,message:u(d).request.value?.message??"","confirm-label":u(d).request.value?.confirmLabel,danger:u(d).request.value?.danger,onConfirm:u(d).confirm,onCancel:u(d).cancel},null,8,["open","message","confirm-label","danger","onConfirm","onCancel"])],64))}}),lO=["id","data-relation-name","data-deferred","aria-labelledby","aria-describedby"],oO={class:"flex flex-col gap-2"},sO={class:"flex flex-wrap items-center gap-3"},iO={class:"flex min-w-0 flex-1 flex-col"},uO=["id"],cO=["id"],dO={key:0,class:"relative block w-[220px] max-w-full"},fO={class:"sr-only"},pO=["value","placeholder"],hO={key:0,"data-relation-pending":"",class:"flex items-center gap-2 text-[13px] text-muted"},vO={key:0,role:"alert",class:"rounded-inner bg-danger-soft px-[18px] py-3.5 text-danger"},mO={key:1,class:"overflow-hidden rounded-inner border border-border"},yO={"data-relation-empty":"",class:"text-muted"},gO=["aria-label","onClick"],bO=300,_O=Q({__name:"RelationManager",props:{field:{},modelValue:{},controlId:{},invalid:{type:Boolean},describedBy:{},labels:{},source:{},recordId:{}},setup(e){const t=e,n=ot(Vr,null),a=x(()=>t.field.relation||t.field.name),r=x(()=>typeof t.recordId=="number"?t.recordId:n&&n.recordId===0&&t.field.deferrable?0:null),l=x(()=>r.value===0),o=x(()=>t.source!=null&&r.value!==null),s=n?.key??Pl(),i=q(null),c=q([]),d=q(null),f=q(!0),p=q(!1),h=q(""),m=q(1),b=q(null),g=q([]),y=q(!1),w=q(!1),A=q(!1),S=q("create"),R=q(null),H=q(!1),j=q(null),U=q("");let k=null,I=null,W=null;const V=Ja();let B=0,X=null;const M=x(()=>i.value?.view.list.columns??[]),ne=x(()=>i.value?.view.toolbarButtons??[]),ee=x(()=>i.value?.messages),ue=x(()=>`${t.controlId}-heading`),ve=x(()=>`${t.controlId}-comment`),ye=x(()=>ne.value.includes("create")&&(i.value?.manageForm?.length??0)>0),be=x(()=>ne.value.includes("update")&&(i.value?.manageForm?.length??0)>0),oe=x(()=>i.value?.kind==="belongsToMany"&&(i.value?.pivotForm?.length??0)>0&&(ne.value.includes("link")||ne.value.includes("update"))),Ce=x(()=>(i.value?.viewForm?.length??0)>0),ce=x(()=>be.value?"update":oe.value?"pivot":Ce.value?"preview":null),Ee=x(()=>be.value&&oe.value),Z=x(()=>ne.value.includes("unlink")||ne.value.includes("delete"));function K(){return l.value?{[_a]:s}:void 0}function te(){return{...t.source,id:r.value,name:a.value}}function ie(){l.value&&n?.markDirty()}async function le(){const{data:De}=await qe.GET("/{vendor}/{plugin}/{controller}/schema/relation/{name}",{params:{path:{...t.source,name:a.value}}});i.value=De?.data??null}async function pe(){const De=++B;f.value=!0,p.value=!1;try{const Me=h.value.trim(),Ie={page:m.value};Me!==""&&(Ie.search=Me),b.value&&(Ie.sort=b.value.column,Ie.dir=b.value.dir);const{data:$t}=await qe.GET("/{vendor}/{plugin}/{controller}/{id}/relations/{name}",{params:{path:te(),query:Ie,header:K()}});if(De!==B)return;c.value=$t?.data??[],d.value=$t?.meta??null,p.value=!$t}catch{De===B&&(c.value=[],d.value=null,p.value=!0)}finally{De===B&&(f.value=!1)}}async function _(){if(o.value){try{await le()}catch{i.value=null}if(!i.value){f.value=!1,p.value=!0;return}await pe()}}function C(De){h.value=De.target.value,X!==null&&clearTimeout(X),X=setTimeout(()=>{X=null,m.value=1,g.value=[],pe()},bO)}function E(De){m.value=De,g.value=[],pe()}function J(De){const Me=b.value;Me?.column!==De?b.value={column:De,dir:"asc"}:Me.dir==="asc"?b.value={column:De,dir:"desc"}:b.value=null,m.value=1,g.value=[],pe()}function Y(){return g.value.map(Number).filter(De=>Number.isInteger(De)&&De>0)}function ae(De){const Me=De.id;return typeof Me=="number"&&Number.isInteger(Me)?Me:typeof Me=="string"&&/^\d+$/.test(Me)?Number(Me):null}function ge(De){const Me=M.value[0]?.key,Ie=Me?De[Me]:void 0;return typeof Ie=="string"||typeof Ie=="number"?String(Ie):""}async function me(){const De=Y();if(!(y.value||De.length===0||!i.value||!await V.ask({message:Ne(ee.value?.unlinkConfirm,De.length),confirmLabel:Ne(ee.value?.unlinkSelected),danger:!0}))){y.value=!0;try{const Ie=await qe.POST("/{vendor}/{plugin}/{controller}/{id}/relations/{name}/unlink",{params:{path:te(),header:K()},body:{ids:De}});if(Ie.data){g.value=[],ie(),Te(Ne(ee.value?.unlinked,Ie.data.data.removed??De.length)),await pe();return}Te(Ie.error?.error.message||D("backend::lang.form.error_generic"),"danger")}catch{Te(D("backend::lang.form.error_generic"),"danger")}finally{y.value=!1}}}async function _e(De){y.value=!0;try{const Me=await qe.POST("/{vendor}/{plugin}/{controller}/{id}/relations/{name}/delete",{params:{path:te(),header:K()},body:{ids:De}});if(Me.data){g.value=[],ie(),Te(Ne(ee.value?.deleted,Me.data.data.deleted||De.length)),await pe();return}Te(Me.error?.error.message||D("backend::lang.form.error_generic"),"danger")}catch{Te(D("backend::lang.form.error_generic"),"danger")}finally{y.value=!1}}async function G(){const De=Y();y.value||De.length===0||!i.value||await V.ask({message:Ne(ee.value?.deleteConfirm,De.length),confirmLabel:Ne(ee.value?.deleteSelected),danger:!0},()=>_e(De))}async function de(De){ie(),Te(Ne(ee.value?.linked,De)),g.value=[],await pe()}function se(De){k=De.currentTarget??W,S.value="create",R.value=null,A.value=!0}function $e(De,Me){const Ie=ae(De);Ie!==null&&(k=Me,j.value=Ie,U.value=ge(De),H.value=!0)}function Pe(De,Me){const Ie=ce.value,$t=ae(De);if(!(Ie===null||$t===null)){if(Ie==="pivot"){$e(De,Me);return}k=Me,S.value=Ie,R.value=$t,A.value=!0}}async function Ve(){ie(),g.value=[],await pe()}async function Ke(){ie(),await pe()}async function He(){g.value=[],await pe()}function lt(){const De=k&&k.isConnected?k:null;k=null,De?.focus()}function it(){I?.focus()}function kt(De){const Me=De?.$el;return Me instanceof HTMLElement?Me:null}function qt(De){I=kt(De)}function sn(De){W=kt(De)}return Pt(()=>{X!==null&&clearTimeout(X)}),_(),(De,Me)=>o.value?(v(),$("section",{key:0,id:e.controlId,"data-relation-manager":"","data-relation-name":a.value,"data-deferred":l.value?"true":void 0,"aria-labelledby":ue.value,"aria-describedby":e.field.comment?ve.value:void 0,tabindex:"-1",class:"flex flex-col gap-4"},[O("div",oO,[O("header",sO,[O("div",iO,[O("h2",{id:ue.value,class:"text-[17px] font-bold tracking-[-0.01em]"},P(i.value?.label||e.field.label||a.value),9,uO),e.field.comment?(v(),$("p",{key:0,id:ve.value,class:"text-[13px] text-muted"},P(e.field.comment),9,cO)):re("",!0)]),i.value?.view.showSearch?(v(),$("label",dO,[O("span",fO,P(u(D)("backend::lang.list.search")),1),L(u(Ms),{size:16,class:"pointer-events-none absolute top-1/2 left-3 -translate-y-1/2 text-muted","aria-hidden":"true"}),O("input",{type:"search","data-relation-search":"",value:h.value,placeholder:u(D)("backend::lang.list.search_prompt"),class:"h-[38px] w-full rounded-control border border-transparent bg-subtle pr-3 pl-9",onInput:C,onKeydown:Me[0]||(Me[0]=va(ut(()=>{},["prevent"]),["enter"]))},null,40,pO)])):re("",!0),(v(!0),$(xe,null,Be(ne.value,Ie=>(v(),$(xe,{key:Ie},[Ie==="create"&&ye.value?(v(),F(et,{key:0,ref_for:!0,ref:sn,"data-action":"create",size:"sm",variant:"primary",icon:u(ic),disabled:y.value||!i.value,"aria-haspopup":"dialog",onClick:se},{default:T(()=>[Se(P(u(Ne)(ee.value?.create)),1)]),_:1},8,["icon","disabled"])):Ie==="link"?(v(),F(et,{key:1,ref_for:!0,ref:qt,"data-action":"link",size:"sm",variant:ye.value?"outline":"primary",icon:u(Ov),disabled:y.value||!i.value,"aria-haspopup":"dialog",onClick:Me[1]||(Me[1]=$t=>w.value=!0)},{default:T(()=>[Se(P(u(Ne)(ee.value?.link)),1)]),_:1},8,["variant","icon","disabled"])):Ie==="delete"?(v(),F(et,{key:2,"data-action":"delete",size:"sm",variant:"danger",icon:u(Ll),disabled:y.value||g.value.length===0,onClick:G},{default:T(()=>[Se(P(u(Ne)(ee.value?.deleteSelected)),1)]),_:1},8,["icon","disabled"])):Ie==="unlink"?(v(),F(et,{key:3,"data-action":"unlink",size:"sm",variant:"danger",icon:u(Dv),disabled:y.value||g.value.length===0,onClick:me},{default:T(()=>[Se(P(u(Ne)(ee.value?.unlinkSelected)),1)]),_:1},8,["icon","disabled"])):re("",!0)],64))),128))]),l.value?(v(),$("p",hO,[L(u(wv),{size:14,class:"shrink-0","aria-hidden":"true"}),O("span",null,P(u(D)("backend::lang.relation.pending_note")),1)])):re("",!0)]),p.value&&!f.value?(v(),$("p",vO,P(u(D)("backend::lang.relation.load_failed")),1)):(v(),$("div",mO,[L(hy,{selected:g.value,"onUpdate:selected":Me[2]||(Me[2]=Ie=>g.value=Ie),variant:"relation",columns:M.value,rows:c.value,loading:f.value,selectable:Z.value,sortable:!0,sort:b.value,openable:ce.value!==null,trailing:Ee.value,onSort:J,onOpen:Pe},{empty:T(()=>[O("span",yO,P(u(Ne)(ee.value?.empty)),1)]),trailing:T(({row:Ie})=>[O("button",{type:"button","data-action":"edit-pivot","aria-label":u(Ne)(ee.value?.editPivot,void 0,{name:ge(Ie)}),class:"flex size-8 items-center justify-center rounded-pager text-muted transition-colors duration-150 ease-out hover:bg-hover hover:text-text",onClick:$t=>$e(Ie,$t.currentTarget)},[L(u(Rw),{size:16,"aria-hidden":"true"})],8,gO)]),_:1},8,["selected","columns","rows","loading","selectable","sort","openable","trailing"]),d.value&&d.value.last_page>1?(v(),F(vy,{key:0,meta:d.value,loading:f.value,"per-page-options":[],"per-page":d.value.per_page,onPage:E},null,8,["meta","loading","per-page"])):re("",!0)])),i.value&&ne.value.includes("link")?(v(),F(Y5,{key:2,open:w.value,"onUpdate:open":Me[3]||(Me[3]=Ie=>w.value=Ie),source:e.source,"record-id":r.value,relation:a.value,schema:i.value,"session-key":l.value?u(s):null,onLinked:de,onClosed:it},null,8,["open","source","record-id","relation","schema","session-key"])):re("",!0),i.value&&(ye.value||ce.value==="update"||ce.value==="preview")?(v(),F(x5,{key:3,open:A.value,"onUpdate:open":Me[4]||(Me[4]=Ie=>A.value=Ie),source:e.source,"owner-id":r.value,relation:a.value,schema:i.value,mode:S.value,"child-id":R.value,"session-key":u(s),"can-delete":ne.value.includes("delete"),onChanged:Ve,onGone:He,onClosed:lt},null,8,["open","source","owner-id","relation","schema","mode","child-id","session-key","can-delete"])):re("",!0),i.value&&oe.value?(v(),F(rO,{key:4,open:H.value,"onUpdate:open":Me[5]||(Me[5]=Ie=>H.value=Ie),source:e.source,"owner-id":r.value,relation:a.value,schema:i.value,"child-id":j.value,"child-name":U.value,"session-key":u(s),onSaved:Ke,onGone:He,onClosed:lt},null,8,["open","source","owner-id","relation","schema","child-id","child-name","session-key"])):re("",!0),L(Ya,{open:u(V).request.value!==null,message:u(V).request.value?.message??"","confirm-label":u(V).request.value?.confirmLabel,danger:u(V).request.value?.danger,busy:u(V).busy.value,onConfirm:u(V).confirm,onCancel:u(V).cancel},null,8,["open","message","confirm-label","danger","busy","onConfirm","onCancel"])],8,lO)):re("",!0)}}),xO=["id","aria-describedby"],wO=["id","aria-describedby"],kO={class:"min-w-0 [overflow-wrap:anywhere]"},$O=["id"],CO=["data-relation"],SO={class:"flex size-[22px] items-center justify-center rounded-full bg-primary text-[10px] font-bold text-on-primary","aria-hidden":"true"},AO={class:"font-semibold"},EO={key:0,"data-chip-locked":"",class:"flex size-6 items-center justify-center text-muted"},MO={class:"sr-only"},DO=["aria-label","onClick"],OO=["id","aria-expanded","aria-controls","aria-activedescendant","aria-required","aria-invalid","aria-describedby","value","placeholder"],PO={key:1,class:"relative"},qO=["id","aria-expanded","aria-controls","aria-activedescendant","aria-required","aria-invalid","aria-describedby","value","placeholder"],TO=["id"],RO=["id","data-value","aria-selected","aria-disabled","onMousedown"],IO={class:"min-w-0 truncate"},BO={key:0,role:"presentation",class:"px-3 py-2 text-[13px] text-muted"},FO={key:1,role:"presentation",class:"px-3 py-2 text-[13px] text-muted"},NO={key:2,role:"presentation",class:"p-1"},VO=["id"],LO=20,jO=300,zO=Q({__name:"RelationField",props:{field:{},modelValue:{},controlId:{},invalid:{type:Boolean},describedBy:{},labels:{},source:{},recordId:{}},emits:["update:modelValue"],setup(e,{emit:t}){const n=e,a=t,r=x(()=>n.field.readOnly?"readonly":n.field.multiple?"multiple":"single"),l=x(()=>`${n.controlId}-listbox`),o=q({}),s=q(new Set);function i(Z){const K={...o.value};let te=null;for(const ie of Z)K[ie.value]=ie.label,ie.locked&&!s.value.has(ie.value)&&(te??=new Set(s.value),te.add(ie.value));o.value=K,te&&(s.value=te)}Fe(()=>n.labels,Z=>i(Z??[]),{immediate:!0});function c(Z){return Z!==null&&s.value.has(Z)}const d=x(()=>`${n.controlId}-locked-note`),f=x(()=>s.value.size>0),p=x(()=>[n.describedBy,f.value?d.value:""].filter(Boolean).join(" "));function h(Z){return typeof Z=="number"&&Number.isInteger(Z)?Z:typeof Z=="string"&&/^\d+$/.test(Z)?Number(Z):null}const m=x(()=>h(n.modelValue)),b=x(()=>Array.isArray(n.modelValue)?n.modelValue.map(h).filter(Z=>Z!==null):[]);function g(Z){return o.value[Z]??String(Z)}function y(Z){return Z.split(/[\s@._-]+/).filter(Boolean).slice(0,2).map(K=>K.charAt(0).toUpperCase()).join("")}const w=x(()=>{const Z=n.labels?.[0]?.label;return Z||(n.field.emptyOption??"—")}),A=q(!1),S=q(""),R=q([]),H=q(0),j=q(0),U=q(!1),k=q(-1);let I=0,W=null;const V=x(()=>H.value{const Z=[];r.value==="single"&&n.field.emptyOption!==void 0&&Z.push({key:"empty",label:n.field.emptyOption,value:null,muted:!0,locked:!1});const K=new Set(b.value);for(const te of R.value)r.value==="multiple"&&K.has(te.value)||Z.push({key:`option-${te.value}`,label:te.label,value:te.value,muted:!1,locked:!!te.locked||c(te.value)});return Z});function M(Z){return`${l.value}-${Z}`}function ne(){A.value||(A.value=!0,k.value=-1,B(1,!1))}function ee(){A.value=!1,S.value="",k.value=-1,W!==null&&(clearTimeout(W),W=null)}function ue(Z){S.value=Z.target.value,A.value=!0,k.value=-1,W!==null&&clearTimeout(W),W=setTimeout(()=>{W=null,B(1,!1)},jO)}function ve(){V.value&&!U.value&&B(H.value+1,!0)}function ye(Z){const K=Z.target;K.scrollTop+K.clientHeight>=K.scrollHeight-24&&ve()}function be(Z){Z.locked||(r.value==="multiple"?Z.value!==null&&!b.value.includes(Z.value)&&a("update:modelValue",[...b.value,Z.value]):a("update:modelValue",Z.value),ee())}function oe(Z){c(Z)||a("update:modelValue",b.value.filter(K=>K!==Z))}function Ce(Z,K){for(let te=Z+K;te>=0&&te!c(te));K!==void 0&&oe(K)}break}}const Ee=x(()=>m.value!==null?g(m.value):n.field.emptyOption??"");return Pt(()=>{W!==null&&clearTimeout(W)}),(Z,K)=>r.value==="readonly"?(v(),$("div",{key:0,id:e.controlId,"data-relation-readonly":"","aria-describedby":e.describedBy||void 0,class:ke([e.labels?.[0]?.label?"text-text":"text-muted","flex min-h-input items-center rounded-control border border-border bg-subtle px-3.5"])},P(w.value),11,xO)):r.value==="single"&&c(m.value)?(v(),$(xe,{key:1},[O("div",{id:e.controlId,"data-relation-locked":"","aria-describedby":p.value||void 0,class:"flex min-h-input items-center justify-between gap-2 rounded-control border border-border bg-subtle px-3.5"},[O("span",kO,P(Ee.value),1),L(u(Ra),{size:14,class:"shrink-0 text-muted","aria-hidden":"true"})],8,wO),O("p",{id:d.value,"data-locked-note":"",class:"mt-1.5 flex items-center gap-2 text-[13px] text-muted"},[L(u(Ra),{size:14,class:"shrink-0","aria-hidden":"true"}),O("span",null,P(u(D)("backend::lang.form.locked_note")),1)],8,$O)],64)):(v(),$("div",{key:2,class:"relative","data-relation":r.value},[r.value==="multiple"?(v(),$("div",{key:0,class:ke([e.invalid?"border-danger":"border-border-strong","flex min-h-input flex-wrap items-center gap-1.5 rounded-control border bg-surface p-1.5"])},[(v(!0),$(xe,null,Be(b.value,te=>(v(),$("span",{key:te,"data-chip":"",class:"inline-flex h-[30px] items-center gap-1.5 rounded-pill bg-subtle pr-1 pl-1"},[O("span",SO,P(y(g(te))),1),O("span",AO,P(g(te)),1),c(te)?(v(),$("span",EO,[L(u(Ra),{size:14,"aria-hidden":"true"}),O("span",MO,P(u(D)("backend::lang.form.locked_item",{name:g(te)})),1)])):(v(),$("button",{key:1,type:"button","aria-label":u(D)("backend::lang.form.remove_item",{name:g(te)}),class:"flex size-6 items-center justify-center rounded-full text-muted hover:bg-hover hover:text-text",onClick:ie=>oe(te)},[L(u(Yt),{size:14,"aria-hidden":"true"})],8,DO))]))),128)),O("input",{id:e.controlId,type:"text",role:"combobox",autocomplete:"off","aria-expanded":A.value?"true":"false","aria-controls":l.value,"aria-autocomplete":"list","aria-activedescendant":A.value&&k.value>=0?M(k.value):void 0,"aria-required":e.field.required?"true":void 0,"aria-invalid":e.invalid?"true":void 0,"aria-describedby":p.value||void 0,value:S.value,placeholder:u(D)("backend::lang.form.add_item"),class:"h-[30px] min-w-[120px] flex-1 border-0 bg-transparent px-2 focus-visible:shadow-none",onClick:ne,onInput:ue,onKeydown:ce,onBlur:ee},null,40,OO)],2)):(v(),$("div",PO,[O("input",{id:e.controlId,type:"text",role:"combobox",autocomplete:"off","aria-expanded":A.value?"true":"false","aria-controls":l.value,"aria-autocomplete":"list","aria-activedescendant":A.value&&k.value>=0?M(k.value):void 0,"aria-required":e.field.required?"true":void 0,"aria-invalid":e.invalid?"true":void 0,"aria-describedby":p.value||void 0,value:A.value?S.value:Ee.value,placeholder:A.value&&Ee.value||u(D)("backend::lang.form.select_placeholder"),class:ke([[e.invalid?"border-danger":"border-border-strong",!A.value&&m.value===null?"text-muted":"text-text"],"h-input w-full rounded-control border bg-surface pr-10 pl-3.5"]),onClick:ne,onInput:ue,onKeydown:ce,onBlur:ee},null,42,qO),L(u(Nl),{size:16,class:"pointer-events-none absolute top-1/2 right-3.5 -translate-y-1/2 text-muted","aria-hidden":"true"})])),Va(O("ul",{id:l.value,role:"listbox",class:"absolute inset-x-0 top-full z-20 mt-1 max-h-64 overflow-y-auto rounded-inner border border-border bg-surface p-1 shadow-menu",onScroll:ye},[(v(!0),$(xe,null,Be(X.value,(te,ie)=>(v(),$("li",{id:M(ie),key:te.key,role:"option","data-value":te.value??"empty","aria-selected":r.value==="single"&&te.value===m.value?"true":"false","aria-disabled":te.locked?"true":void 0,class:ke([[te.muted||te.locked?"text-muted":"text-text",te.locked?"cursor-not-allowed":"cursor-pointer hover:bg-hover",ie===k.value&&!te.locked?"bg-hover":""],"flex h-10 items-center justify-between gap-2 rounded-control px-3"]),onMousedown:ut(le=>be(te),["prevent"])},[O("span",IO,P(te.label),1),te.locked?(v(),F(u(Ra),{key:0,size:14,class:"shrink-0","aria-hidden":"true"})):re("",!0)],42,RO))),128)),U.value?(v(),$("li",BO,P(u(D)("backend::lang.form.loading_options")),1)):X.value.filter(te=>te.value!==null).length===0?(v(),$("li",FO,P(u(D)("backend::lang.form.no_options")),1)):re("",!0),V.value&&!U.value?(v(),$("li",NO,[O("button",{type:"button","data-action":"more-options",class:"h-8 w-full rounded-control text-[13px] font-semibold text-muted hover:bg-hover hover:text-text",onMousedown:ut(ve,["prevent"])},P(u(D)("backend::lang.form.more_options")),33)])):re("",!0)],40,TO),[[cu,A.value]]),f.value?(v(),$("p",{key:2,id:d.value,"data-locked-note":"",class:"mt-1.5 flex items-center gap-2 text-[13px] text-muted"},[L(u(Ra),{size:14,class:"shrink-0","aria-hidden":"true"}),O("span",null,P(u(D)("backend::lang.form.locked_note")),1)],8,VO)):re("",!0)],8,CO))}}),UO={class:"flex min-w-0 flex-col"},HO=["for"],KO={key:0,class:"text-danger","aria-hidden":"true"},WO=["id"],GO=["id","aria-checked","aria-invalid","aria-describedby"],YO=Q({__name:"SwitchField",props:{field:{},modelValue:{},controlId:{},invalid:{type:Boolean},describedBy:{},labels:{},source:{},recordId:{}},emits:["update:modelValue"],setup(e,{emit:t}){const n=e,a=t,r=x(()=>Gc(n.modelValue));function l(){a("update:modelValue",xy(n.modelValue,!r.value))}return(o,s)=>(v(),$("div",{class:ke([e.invalid?"border-danger":"border-border","flex items-center justify-between gap-4 rounded-inner border px-4 py-3.5"]),"data-toggle-card":""},[O("div",UO,[O("label",{for:e.controlId,class:"font-semibold"},[Se(P(e.field.label||e.field.name),1),e.field.required?(v(),$("span",KO," *")):re("",!0)],8,HO),e.field.comment?(v(),$("p",{key:0,id:`${e.controlId}-comment`,class:"text-[13px] text-muted"},P(e.field.comment),9,WO)):re("",!0)]),O("button",{id:e.controlId,type:"button",role:"switch","aria-checked":r.value?"true":"false","aria-invalid":e.invalid?"true":void 0,"aria-describedby":e.describedBy||void 0,class:ke([r.value?"bg-primary":"bg-border-strong","relative h-[26px] w-11 shrink-0 rounded-pill transition-colors duration-150 ease-out"]),onClick:l},[O("span",{class:ke([r.value?"translate-x-[18px] bg-on-primary":"translate-x-0 bg-white","absolute top-[3px] left-[3px] size-5 rounded-full shadow-tab transition-transform duration-150 ease-out"]),"aria-hidden":"true"},null,2)],10,GO)],2))}}),JO=["id","name","value","required","aria-required","aria-invalid","aria-describedby"],Ay=Q({__name:"TextField",props:{field:{},modelValue:{},controlId:{},invalid:{type:Boolean},describedBy:{},labels:{},source:{},recordId:{}},emits:["update:modelValue"],setup(e,{emit:t}){const n=e,a=t,r=x(()=>n.modelValue===null||n.modelValue===void 0?"":String(n.modelValue)),l=x(()=>Nr(n.field));return(o,s)=>(v(),$("input",Oe({id:e.controlId},l.value,{name:e.field.name,type:"text",value:r.value,required:e.field.required||void 0,"aria-required":e.field.required?"true":void 0,"aria-invalid":e.invalid?"true":void 0,"aria-describedby":e.describedBy||void 0,class:[u($n)(e.invalid),"h-input"],onInput:s[0]||(s[0]=i=>a("update:modelValue",i.target.value))}),null,16,JO))}}),ZO=["id","name","rows","value","required","aria-required","aria-invalid","aria-describedby"],Ey=Q({__name:"TextareaField",props:{field:{},modelValue:{},controlId:{},invalid:{type:Boolean},describedBy:{},labels:{},source:{},recordId:{}},emits:["update:modelValue"],setup(e,{emit:t}){const n=e,a=t,r={tiny:2,small:4,large:8,huge:12,giant:18},l=x(()=>r[n.field.size??""]??5),o=x(()=>n.modelValue===null||n.modelValue===void 0?"":String(n.modelValue)),s=x(()=>Nr(n.field));return(i,c)=>(v(),$("textarea",Oe({id:e.controlId},s.value,{name:e.field.name,rows:l.value,value:o.value,required:e.field.required||void 0,"aria-required":e.field.required?"true":void 0,"aria-invalid":e.invalid?"true":void 0,"aria-describedby":e.describedBy||void 0,class:[u($n)(e.invalid),"min-h-input resize-y py-2.5"],onInput:c[0]||(c[0]=d=>a("update:modelValue",d.target.value))}),null,16,ZO))}}),QO={class:"flex flex-col gap-1.5"},XO=["aria-pressed"],eP={key:0,class:"flex flex-col gap-1.5"},tP={key:0,"data-markdown-preview-error":"",role:"status",class:"text-[13px] text-danger"},nP=["aria-busy","innerHTML"],aP=["id","name","rows","value","required","aria-required","aria-invalid","aria-describedby"],$p="Preview unavailable.",rP=300,My=Q({__name:"MarkdownField",props:{field:{},modelValue:{},controlId:{},invalid:{type:Boolean},describedBy:{},labels:{},source:{},recordId:{}},emits:["update:modelValue"],setup(e,{emit:t}){const n=e,a=t,r={tiny:2,small:4,large:8,huge:12,giant:18},l=x(()=>r[n.field.size??""]??8),o=x(()=>n.modelValue===null||n.modelValue===void 0?"":String(n.modelValue)),s=x(()=>Nr(n.field)),i=q(!1),c=q(""),d=q(""),f=q(!1);let p=0,h=null;function m(){h!==null&&(clearTimeout(h),h=null)}function b(w){const S=w?.error?.details?.markdown;return Array.isArray(S)&&typeof S[0]=="string"&&S[0]!==""?S[0]:$p}async function g(){const w=++p;if(o.value.trim()===""){c.value="",d.value="",f.value=!1;return}f.value=!0;try{const{data:A,error:S}=await qe.POST("/markdown/preview",{body:{markdown:o.value}});if(w!==p)return;A?(c.value=A.data.html,d.value=""):(c.value="",d.value=b(S))}catch{if(w!==p)return;c.value="",d.value=$p}finally{w===p&&(f.value=!1)}}function y(){i.value=!i.value,m(),i.value?g():(p++,f.value=!1)}return Fe(o,()=>{i.value&&(m(),h=setTimeout(()=>{h=null,g()},rP))}),Pt(()=>{m(),p++}),(w,A)=>(v(),$("div",QO,[O("button",{type:"button","data-markdown-preview":"",class:"self-start rounded-pager px-2 py-1 text-[13px] text-muted hover:bg-hover hover:text-text","aria-pressed":i.value?"true":"false",onClick:y}," Preview ",8,XO),i.value?(v(),$("div",eP,[d.value?(v(),$("p",tP,P(d.value),1)):re("",!0),O("div",{"data-markdown-preview-pane":"",class:ke([u($n)(e.invalid),"summer-markdown min-h-input overflow-auto px-3.5 py-2.5"]),"aria-busy":f.value?"true":"false",innerHTML:c.value},null,10,nP)])):(v(),$("textarea",Oe({key:1,id:e.controlId},s.value,{name:e.field.name,rows:l.value,value:o.value,required:e.field.required||void 0,"aria-required":e.field.required?"true":void 0,"aria-invalid":e.invalid?"true":void 0,"aria-describedby":e.describedBy||void 0,class:[u($n)(e.invalid),"min-h-input resize-y py-2.5"],onInput:A[0]||(A[0]=S=>a("update:modelValue",S.target.value))}),null,16,aP))]))}}),lP=["aria-labelledby","data-ml-field"],oP={class:"flex flex-wrap items-center gap-2"},sP=["value","aria-label"],iP=["value"],ed=Q({__name:"MLField",props:{inner:{},innerType:{},mlType:{},field:{},modelValue:{},controlId:{},invalid:{type:Boolean},describedBy:{},labels:{},source:{},recordId:{}},emits:["update:modelValue"],setup(e,{emit:t}){const n=e,a=t,r=x(()=>Fn(n.modelValue)),l=ot(ts,null),o=x(()=>{const g=l?.value;return g&&g.length>0?[...g]:[]}),s=q(o.value[0]??"en"),i=x(()=>`${n.controlId}-label`),c=x(()=>`${n.controlId}-editor`),d=x(()=>r.value[s.value]??""),f=x(()=>({...n.field,type:n.innerType}));function p(g){g&&(s.value=g)}function h(g){const y=g.target.value;p(y),u5(y)}function m(g){a("update:modelValue",{...r.value,[s.value]:g})}function b(g){const y=g.detail;typeof y=="string"&&y!==""&&p(y)}return mt(()=>{window.addEventListener(ql,b)}),wa(()=>{window.removeEventListener(ql,b)}),(g,y)=>(v(),$("div",{class:"flex flex-col gap-1.5",role:"group","aria-labelledby":i.value,"data-ml-field":e.mlType},[O("div",oP,[O("select",{"data-ml-locale":"",class:"rounded-control border border-border-strong bg-surface px-2 py-1 text-[13px]",value:s.value,"aria-label":`Locale for ${e.field.label||e.field.name}`,onChange:h},[(v(!0),$(xe,null,Be(o.value,w=>(v(),$("option",{key:w,value:w},P(w),9,iP))),128))],40,sP)]),(v(),F(Bt(e.inner),{field:f.value,"model-value":d.value,"control-id":c.value,invalid:e.invalid,"described-by":e.describedBy,"onUpdate:modelValue":m},null,8,["field","model-value","control-id","invalid","described-by"]))],8,lP))}}),uP=Q({__name:"MLTextField",props:{field:{},modelValue:{},controlId:{},invalid:{type:Boolean},describedBy:{},labels:{},source:{},recordId:{}},emits:["update:modelValue"],setup(e,{emit:t}){const n=e,a=t;return(r,l)=>(v(),F(ed,Oe(n,{inner:Ay,"inner-type":"text","ml-type":"mltext","onUpdate:modelValue":l[0]||(l[0]=o=>a("update:modelValue",o))}),null,16))}}),cP=Q({__name:"MLTextareaField",props:{field:{},modelValue:{},controlId:{},invalid:{type:Boolean},describedBy:{},labels:{},source:{},recordId:{}},emits:["update:modelValue"],setup(e,{emit:t}){const n=e,a=t;return(r,l)=>(v(),F(ed,Oe(n,{inner:Ey,"inner-type":"textarea","ml-type":"mltextarea","onUpdate:modelValue":l[0]||(l[0]=o=>a("update:modelValue",o))}),null,16))}}),dP=Q({__name:"MLMarkdownField",props:{field:{},modelValue:{},controlId:{},invalid:{type:Boolean},describedBy:{},labels:{},source:{},recordId:{}},emits:["update:modelValue"],setup(e,{emit:t}){const n=e,a=t;return(r,l)=>(v(),F(ed,Oe(n,{inner:My,"inner-type":"markdown","ml-type":"mlmarkdown","onUpdate:modelValue":l[0]||(l[0]=o=>a("update:modelValue",o))}),null,16))}}),fP=["id","aria-describedby"],pP={key:0},hP={class:"font-mono text-text"},vP={key:1},mP={class:"font-mono text-text"},bo="\0",yP=Q({__name:"UnsupportedField",props:{field:{},modelValue:{},controlId:{},invalid:{type:Boolean},describedBy:{},labels:{},source:{},recordId:{}},setup(e){const t=e,n=x(()=>{const[r="",l=""]=D("backend::lang.form.unsupported_field",{type:bo}).split(bo);return{before:r,after:l}}),a=x(()=>D("backend::lang.form.unsupported_field",{type:bo}).includes(bo));return(r,l)=>(v(),$("div",{id:e.controlId,"data-unsupported-field":"","aria-describedby":e.describedBy||void 0,class:"flex min-h-input items-center gap-2.5 rounded-control border-[1.5px] border-dashed border-border-strong bg-subtle px-3.5 text-[13px] text-muted"},[L(u(Av),{size:16,"aria-hidden":"true"}),a.value?(v(),$("span",pP,[Se(P(n.value.before),1),O("code",hP,P(t.field.type),1),Se(P(n.value.after),1)])):(v(),$("span",vP,[Se(P(u(D)("backend::lang.form.unsupported_field"))+" ",1),O("code",mP,P(t.field.type),1)]))],8,fP))}}),gP=["id","aria-labelledby","aria-describedby","aria-busy"],bP={key:0,"data-widget-skeleton":"",class:"h-[42px] w-[160px] rounded-control bg-skel","aria-hidden":"true"},_P=Q({__name:"WidgetField",props:{field:{},modelValue:{},controlId:{},invalid:{type:Boolean},describedBy:{},labels:{},source:{},recordId:{}},setup(e){const t=e,n=ot(Yc,null),a=ot(Jc,()=>{}),r=ot(ky,null),l=ot($y,()=>Promise.resolve([])),o=q("loading"),s=q(null);let i=null,c=!1,d=!1;function f(){const S=n?.value??{},R={};for(const H of t.field.fill??[])S[H]!==void 0&&(R[H]=S[H]);return R}const p=x(()=>JSON.stringify(f())),h=x(()=>r?.value||wl.value);function m(S){let R;return{promise:new Promise((j,U)=>{R=setTimeout(()=>U(new Error("widget element was not defined in time")),S)}),cancel:()=>clearTimeout(R)}}async function b(S){const R=await l();if(customElements.get(S))return;if(R.length>0)throw new Error(`plugin script failed: ${R.join(", ")}`);const H=m(aD);try{await Promise.race([customElements.whenDefined(S),H.promise])}finally{H.cancel()}}function g(S){Te(S||D("backend::lang.extension.action_failed"),"danger"),i?.setAttribute("state","error")}async function y(S){const R=t.source,H=i;if(!(!H||c||!R)){c=!0,H.setAttribute("busy",""),H.removeAttribute("state");try{const j=await qe.POST("/{vendor}/{plugin}/{controller}/widgets/{field}",{params:{path:{...R,field:t.field.name}},body:{record_id:t.recordId??void 0,values:f(),...S===void 0?{}:{payload:S}}});if(j.data){const U=j.data.data,k=U.fill??{};for(const I of t.field.fill??[])Object.hasOwn(k,I)&&a(I,k[I]);d||(Object.hasOwn(U,"data")?H.setAttribute("data",JSON.stringify(U.data)):H.removeAttribute("data"),H.dispatchEvent(new CustomEvent(nD,{detail:{data:U.data,fill:k,message:U.message}}))),U.message&&Te(U.message)}else g(j.error?.error.message)}catch{g()}finally{c=!1,i?.removeAttribute("busy")}}}function w(S){const R=S.detail;if(R!==null&&typeof R=="object"&&Object.hasOwn(R,"payload"))return R.payload}function A(S){y(w(S))}return mt(async()=>{const S=t.field.widget??"";try{if(S===""||!t.source)throw new Error("widget field without a tag or controller");if(await b(S),d||!s.value)return;const R=document.createElement(S);R.setAttribute("record-id",t.recordId==null?"":String(t.recordId)),R.setAttribute("field-name",t.field.name),R.setAttribute("locale",h.value),R.setAttribute("fill-values",p.value),R.setAttribute("label",t.field.actionLabel||t.field.label||t.field.name),R.setAttribute("busy-label",D("backend::lang.extension.busy")),R.addEventListener(wp,A),s.value.append(R),i=R,o.value="ready"}catch{d||(o.value="failed")}}),Fe(p,S=>i?.setAttribute("fill-values",S)),Fe(h,S=>i?.setAttribute("locale",S)),Pt(()=>{d=!0,i?.removeEventListener(wp,A),i=null}),(S,R)=>o.value==="failed"?(v(),F(Kc,{key:0,id:e.controlId,"data-widget-failed":"","aria-describedby":e.describedBy||void 0,text:u(D)("backend::lang.extension.widget_failed")},null,8,["id","aria-describedby","text"])):(v(),$("div",{key:1,id:e.controlId,role:"group","data-widget-host":"","aria-labelledby":e.field.label?`${e.controlId}-label`:void 0,"aria-describedby":e.describedBy||void 0,"aria-busy":o.value==="loading"?"true":void 0,class:"flex min-h-input items-center"},[o.value==="loading"?(v(),$("span",bP)):re("",!0),O("div",{ref_key:"mountPoint",ref:s,class:"contents"},null,512)],8,gP))}}),Za="relation-manager",Dy=new Map([[Za,()=>_O]]),Oy=new Map([["text",Ay],["textarea",Ey],["number",U8],["dropdown",tD],["switch",YO],["checkbox",O6],["relation",zO],["widget",_P],["partial",K8],["fileupload",j8],["datepicker",Z6],["password",J8],["permissioneditor",s5],["markdown",My],["mltext",uP],["mltextarea",cP],["mlmarkdown",dP]]),xP=new Set(["switch","checkbox",Za]),wP=new Set([Za]),kP=new Set([Za,"widget","partial","fileupload"]),$P=new Set(["widget","partial","fileupload","permissioneditor","mltext","mltextarea","mlmarkdown"]);function Py(e){return Oy.get(e)??Dy.get(e)?.()??yP}function CP(e){return(Oy.has(e)||Dy.has(e))&&!kP.has(e)}function SP(e){return wP.has(e)}function AP(e){return xP.has(e)}function EP(e){return $P.has(e)}const MP=Q({__name:"FieldRenderer",props:{field:{},modelValue:{},controlId:{},invalid:{type:Boolean},describedBy:{},labels:{},source:{},recordId:{}},emits:["update:modelValue"],setup(e,{emit:t}){const n=e,a=t,r=x(()=>Py(n.field.type));return(l,o)=>(v(),F(Bt(r.value),{field:e.field,"model-value":e.modelValue,"control-id":e.controlId,invalid:e.invalid,"described-by":e.describedBy,labels:e.labels,source:e.source,"record-id":e.recordId,"onUpdate:modelValue":o[0]||(o[0]=s=>a("update:modelValue",s))},null,8,["field","model-value","control-id","invalid","described-by","labels","source","record-id"]))}}),DP=["data-field"],OP=["id"],PP={key:0,class:"text-danger","aria-hidden":"true"},qP=["for"],TP={key:0,class:"text-danger","aria-hidden":"true"},RP=["id"],IP=["id"],BP=Q({__name:"FormField",props:{field:{},modelValue:{},errors:{},labels:{},source:{},recordId:{},idPrefix:{}},emits:["update:modelValue"],setup(e,{emit:t}){const n=e,a=t,r=x(()=>`${n.idPrefix??"field"}-${n.field.name}`),l=x(()=>r.value),o=x(()=>`${r.value}-comment`),s=x(()=>`${r.value}-error`),i=x(()=>(n.errors?.length??0)>0),c=x(()=>AP(n.field.type)),d=x(()=>EP(n.field.type)),f=x(()=>!c.value&&!!n.field.comment),p=x(()=>[f.value||c.value&&n.field.comment?o.value:"",i.value?s.value:""].filter(Boolean).join(" "));return(h,m)=>(v(),$("div",{class:"flex min-w-0 flex-col gap-1.5","data-field":e.field.name},[d.value&&e.field.label?(v(),$("span",{key:0,id:`${l.value}-label`,class:"font-semibold"},[Se(P(e.field.label),1),e.field.required?(v(),$("span",PP," *")):re("",!0)],8,OP)):!c.value&&!d.value?(v(),$("label",{key:1,for:l.value,class:"font-semibold"},[Se(P(e.field.label||e.field.name),1),e.field.required?(v(),$("span",TP," *")):re("",!0)],8,qP)):re("",!0),L(MP,{field:e.field,"model-value":e.modelValue,"control-id":l.value,invalid:i.value,"described-by":p.value,labels:e.labels,source:e.source,"record-id":e.recordId,"onUpdate:modelValue":m[0]||(m[0]=b=>a("update:modelValue",b))},null,8,["field","model-value","control-id","invalid","described-by","labels","source","record-id"]),f.value?(v(),$("p",{key:2,id:o.value,class:"text-[13px] text-muted"},P(e.field.comment),9,RP)):re("",!0),i.value?(v(),$("div",{key:3,id:s.value,class:"flex flex-col gap-0.5 text-[13px] text-danger"},[(v(!0),$(xe,null,Be(e.errors,(b,g)=>(v(),$("p",{key:g,class:"flex items-center gap-1.5"},[L(u(Vt),{size:14,class:"shrink-0","aria-hidden":"true"}),O("span",null,P(b),1)]))),128))],8,IP)):re("",!0)],8,DP))}}),FP={class:"grid grid-cols-1 gap-x-6 gap-y-[22px] min-[600px]:grid-cols-2"},Xl=Q({__name:"FormGrid",props:{fields:{},values:{},errors:{},labels:{},source:{},recordId:{},idPrefix:{}},emits:["update"],setup(e,{emit:t}){const n=t;function a(r){if(r.type===Za)return"col-span-full";switch(r.span){case"left":return"min-[600px]:col-start-1";case"right":return"min-[600px]:col-start-2";case"auto":case"row":return"";default:return"col-span-full"}}return(r,l)=>(v(),$("div",FP,[(v(!0),$(xe,null,Be(e.fields,o=>(v(),F(BP,{key:o.name,class:ke(a(o)),field:o,"model-value":e.values[o.name],errors:e.errors[o.name],labels:e.labels?.[o.name],source:e.source,"record-id":e.recordId,"id-prefix":e.idPrefix,"onUpdate:modelValue":s=>n("update",o.name,s)},null,8,["class","field","model-value","errors","labels","source","record-id","id-prefix","onUpdate:modelValue"]))),128))]))}}),NP={class:"flex w-full flex-col gap-5 pb-24"},VP={class:"flex flex-wrap items-center gap-4"},LP={class:"flex min-w-0 flex-1 flex-col"},jP={class:"truncate text-[24px] font-bold tracking-[-0.02em]"},zP={key:0,class:"text-muted"},UP={key:0,role:"alert",class:"rounded-inner bg-danger-soft px-[18px] py-3.5 text-danger"},HP=["id","role","aria-labelledby"],KP={class:"fixed inset-x-0 bottom-0 z-30 flex items-center gap-2.5 border-t border-border bg-surface px-8 py-3.5"},WP={class:"ml-auto flex items-center gap-2.5"},Zr="field",Cp=Q({__name:"FormView",setup(e){const t=ln(),n=Tr(),a={vendor:String(t.params.vendor??""),plugin:String(t.params.plugin??""),controller:String(t.params.controller??"")},r=ks(a),l=Hn(r)??"/",o=t.name==="create"?"create":"update",s=o==="update"?Number(t.params.id):null,i=q(null),c=q({}),d=q({}),f=q({}),p=q(null),h=q(!0),m=q(!1),b=q(!1),g=q(""),y=q(Mt),w=Ja();let A=!1,S=Promise.resolve([]);const R=Pl(),H={[_a]:R},j=q(0),U=q(0),{activeUploads:k,beginUpload:I}=Zc(),W=x(()=>(i.value?.fields??[]).filter(G=>Gs(G,o)&&(o==="update"||!SP(G.type)||G.type===Za&&!!G.deferrable))),V=x(()=>W.value.map(G=>G.name)),B=x(()=>{if(!W.value.some(de=>de.tab))return[];const G=[];for(const de of W.value){const se=gn(de);let $e=G.find(Pe=>Pe.key===se);$e||($e={key:se,label:de.tab||D("backend::lang.form.tab_default"),errors:0},se===Mt?G.unshift($e):G.push($e)),f.value[de.name]&&($e.errors+=1)}return G}),X=x(()=>Math.max(B.value.findIndex(G=>G.key===y.value),0)),M=x(()=>{if(B.value.length===0)return W.value;const G=B.value[X.value]?.key??Mt;return W.value.filter(de=>gn(de)===G)}),ne=x(()=>{const G=i.value?.fields.find(se=>se.type==="text"),de=G?c.value[G.name]:void 0;return typeof de=="string"||typeof de=="number"?String(de).trim():""}),ee=x(()=>{if(o==="update"&&ne.value!=="")return ne.value;const G=o==="create"?i.value?.messages.create:i.value?.messages.update;return Ne(G,void 0,{name:ne.value})}),ue=x(()=>o==="update"?Ne(i.value?.messages.update,void 0,{name:ne.value}):""),ve=x(()=>o==="update"&&!!i.value?.preview),ye=x(()=>ve.value?`${l}/${s}/preview`:l),be=x(()=>!h.value&&(j.value>0||k.value>0||fa(Wt(W.value,c.value,o))!==g.value));function oe(G){if(G){const de=go(i.value?.meta),se={...G.data};for(const $e of W.value)$e.type==="password"?se[$e.name]="":qr($e.type)&&(se[$e.name]=Sy(G.data[$e.name],de));c.value=se,d.value=G.meta.labels??{}}g.value=fa(Wt(W.value,c.value,o))}async function Ce(){h.value=!0,m.value=!1;const G={path:a},[de,se]=await Promise.all([qe.GET("/{vendor}/{plugin}/{controller}/schema/form",{params:G}),s!==null?qe.GET("/{vendor}/{plugin}/{controller}/{id}",{params:{path:{...a,id:s}}}):Promise.resolve(null)]);i.value=de.data?.data??null,m.value=!de.data||se!==null&&!se.data,i.value&&(S=Hc(r,i.value.assets)),i.value&&o==="create"&&(c.value=Qc(W.value,go(i.value.meta))),oe(se?.data),Z.value=K(),y.value=B.value[0]?.key??Mt,h.value=!1}const ce=new Set,Ee=new Map,Z=q("en");function K(){return go(i.value?.meta)[0]??"en"}function te(G){const de=G.detail;typeof de=="string"&&de!==""&&(Z.value=de)}Fe(y,()=>{Z.value=K()});function ie(G,de){return de===void 0?ce.has(G):Ee.get(G)?.has(de)??!1}function le(G,de){const se=c.value[G],$e={...c.value,[G]:de};ce.add(G);const Pe=W.value.find(Ve=>Ve.name===G)?.type;if(qr(Pe)){let Ve=Ee.get(G);Ve||(Ve=new Set,Ee.set(G,Ve));for(const Ke of Cy(se,de))Ve.add(Ke)}if(o==="create"&&Object.assign($e,c5(W.value,G,se,de,c.value,Z.value,ie)),c.value=$e,f.value[G]){const Ve={...f.value};delete Ve[G],f.value=Ve}}yt(Yc,x(()=>c.value)),yt(Jc,le),yt(ky,x(()=>i.value?.meta.locale||wl.value)),yt(ts,x(()=>go(i.value?.meta))),yt($y,()=>S),yt(Vr,{key:R,recordId:s??0,routes:G=>_y(a,s??0,G,R),markDirty:()=>{j.value++},pendingChanges:pt(j),revision:pt(U),beginUpload:I,activeUploads:pt(k)});async function pe(G){f.value=Zl(G?.details);const de=W.value.filter($e=>f.value[$e.name]),se=de.find($e=>gn($e)===y.value)??de[0];se&&(B.value.length>0&&(y.value=gn(se)),await We(),Ql(Zr,se.name))}function _(G,de){const se=i.value?.redirects,$e=(se?.[o]?.[G]||se?.default)??"";return py($e,r,typeof de=="number"||typeof de=="string"?de:null)}async function C(){if(b.value||!i.value||k.value>0)return null;b.value=!0,p.value=null;try{const G=Wt(W.value,c.value,o),de=s===null?await qe.POST("/{vendor}/{plugin}/{controller}",{params:{path:a,header:H},body:G}):await qe.PUT("/{vendor}/{plugin}/{controller}/{id}",{params:{path:{...a,id:s},header:H},body:G});return de.data?(f.value={},oe(de.data),j.value=0,U.value++,Te(Ne(i.value.messages.saved,void 0,{name:ne.value})),de.data):(de.response.status===422?await pe(de.error?.error):de.response.status===403?(p.value=de.error?.error.message||D("backend::lang.form.forbidden"),await pe(de.error?.error)):Te(de.error?.error.message||D("backend::lang.form.error_generic"),"danger"),null)}catch{return Te(D("backend::lang.form.error_generic"),"danger"),null}finally{b.value=!1}}async function E(G){A=!0;try{await n.push(G)}finally{A=!1}}async function J(){const G=await C();G&&o==="create"&&await E(_("redirect",G.data.id))}async function Y(){const G=await C();G&&await E(_("redirectClose",G.data.id))}async function ae(){if(!(s===null||b.value||!i.value||!await w.ask({message:Ne(i.value.messages.deleteConfirm,void 0,{name:ne.value}),confirmLabel:D("backend::lang.form.delete"),danger:!0}))){b.value=!0;try{const de=await qe.DELETE("/{vendor}/{plugin}/{controller}/{id}",{params:{path:{...a,id:s}}});if(de.data){Te(Ne(i.value.messages.deleted,void 0,{name:ne.value})),await E(l);return}const se=de.response.status===403?"backend::lang.list.action_forbidden":"backend::lang.form.error_generic";Te(de.error?.error.message||D(se),"danger")}catch{Te(D("backend::lang.form.error_generic"),"danger")}finally{b.value=!1}}}async function ge(){return A||!be.value?!0:w.ask({message:D("backend::lang.form.unsaved_confirm"),confirmLabel:D("backend::lang.form.discard"),danger:!0})}async function me(){be.value&&!await w.ask({message:D("backend::lang.form.unsaved_confirm"),confirmLabel:D("backend::lang.form.discard"),danger:!0})||await E(ye.value)}W1(ge),G1(ge);function _e(G){be.value&&(G.preventDefault(),G.returnValue="")}return mt(()=>{window.addEventListener("beforeunload",_e),window.addEventListener(ql,te)}),Pt(()=>{window.removeEventListener("beforeunload",_e),window.removeEventListener(ql,te)}),Zt(()=>hv(h.value?"":ee.value)),Pt(vv),Ce(),(G,de)=>(v(),$("section",NP,[O("header",VP,[L(et,{variant:"outline","data-action":"back","aria-label":u(D)(ve.value?"backend::lang.form.return_to_preview":"backend::lang.form.return_to_list"),class:"size-10! px-0!",onClick:me},{default:T(()=>[L(u(As),{size:18,"aria-hidden":"true"})]),_:1},8,["aria-label"]),O("div",LP,[O("h1",jP,P(h.value?"":ee.value),1),ue.value?(v(),$("p",zP,P(ue.value),1)):re("",!0)]),B.value.length>0?(v(),F(Xc,{key:0,modelValue:y.value,"onUpdate:modelValue":de[0]||(de[0]=se=>y.value=se),tabs:B.value,"id-prefix":Zr},null,8,["modelValue","tabs"])):re("",!0)]),m.value&&!h.value?(v(),$("p",UP,P(u(D)("backend::lang.form.load_failed")),1)):i.value?(v(),$(xe,{key:1},[L(Jl,{errors:f.value,"field-names":V.value,forbidden:p.value},null,8,["errors","field-names","forbidden"]),O("form",{id:B.value.length>0?u(Ws)(Zr,X.value):void 0,role:B.value.length>0?"tabpanel":void 0,"aria-labelledby":B.value.length>0?u(Tl)(Zr,X.value):void 0,class:"rounded-card border border-border bg-surface p-7 shadow-card",novalidate:"",onSubmit:ut(J,["prevent"])},[L(Xl,{fields:M.value,values:c.value,errors:f.value,labels:d.value,source:a,"record-id":u(s),"id-prefix":Zr,onUpdate:le},null,8,["fields","values","errors","labels","record-id"])],40,HP)],64)):re("",!0),O("footer",KP,[u(o)==="update"?(v(),F(et,{key:0,variant:"danger","data-action":"delete",icon:u(Ll),disabled:b.value||h.value||!i.value,onClick:ae},{default:T(()=>[Se(P(u(D)("backend::lang.form.delete")),1)]),_:1},8,["icon","disabled"])):re("",!0),O("div",WP,[L(et,{variant:"ghost","data-action":"cancel",onClick:me},{default:T(()=>[Se(P(u(D)("backend::lang.form.cancel")),1)]),_:1}),L(et,{variant:"outline","data-action":"save-close",disabled:b.value||h.value||!i.value||u(k)>0,onClick:Y},{default:T(()=>[Se(P(u(D)("backend::lang.form.save_and_close")),1)]),_:1},8,["disabled"]),L(et,{variant:"primary","data-action":"save",disabled:b.value||h.value||!i.value||u(k)>0,onClick:J},{default:T(()=>[Se(P(b.value?u(D)("backend::lang.form.saving"):u(D)("backend::lang.form.save")),1)]),_:1},8,["disabled"])])]),L(Ya,{open:u(w).request.value!==null,message:u(w).request.value?.message??"","confirm-label":u(w).request.value?.confirmLabel,danger:u(w).request.value?.danger,onConfirm:u(w).confirm,onCancel:u(w).cancel,"onUpdate:open":de[1]||(de[1]=se=>{se||u(w).cancel()})},null,8,["open","message","confirm-label","danger","onConfirm","onCancel"])]))}}),GP=["data-preview-field"],YP=["id"],JP={class:"m-0 min-w-0"},ZP={key:0,"data-switch":"true",class:"inline-flex h-6 items-center rounded-pill bg-ok-bg px-2.5 text-[12px] font-semibold text-ok-text"},QP={key:1,"data-switch":"false",class:"inline-flex h-6 items-center rounded-pill border border-border-strong px-2.5 text-[12px] font-semibold text-muted"},XP={class:"flex size-[22px] shrink-0 items-center justify-center rounded-full bg-primary text-[10px] font-bold text-on-primary","aria-hidden":"true"},eq={class:"font-semibold"},tq={key:0,class:"px-2 text-muted","data-empty":""},nq={key:0},aq={key:1,class:"text-muted","data-empty":""},rq={key:0},lq={key:1,class:"text-muted","data-empty":""},Yi="flex min-h-input items-center rounded-control border border-border bg-subtle px-3.5 [overflow-wrap:anywhere]",oq=Q({__name:"PreviewField",props:{field:{},value:{},labels:{},source:{},recordId:{},idPrefix:{}},setup(e){const t=e,n=new Set(["datepicker","fileupload","partial","permissioneditor"]),a=x(()=>`${t.idPrefix??"preview"}-${t.field.name}`),r=x(()=>`${a.value}-label`),l=x(()=>{const h=t.field.type;return n.has(h)?"control":h==="checkbox"||h==="switch"?"toggle":h==="relation"?t.field.multiple?"chips":"relation":h==="textarea"?"textarea":"text"}),o=x(()=>({...t.field,readOnly:!0})),s=x(()=>Py(t.field.type));function i(h){return h==null||h===""}const c=x(()=>{const h=t.value;if(i(h)||typeof h=="object")return"";if(t.field.type==="dropdown"){const m=(t.field.options??[]).find(b=>String(b.value)===String(h));return m?m.label:String(h)}return String(h)}),d=x(()=>t.labels?.[0]?.label??""),f=x(()=>Array.isArray(t.value)?t.labels??[]:[]);function p(h){return h.trim().split(/\s+/).filter(Boolean).slice(0,2).map(b=>b.charAt(0).toUpperCase()).join("")}return(h,m)=>(v(),$("div",{class:"flex min-w-0 flex-col gap-1.5","data-preview-field":e.field.name},[O("dt",{id:r.value,class:"font-semibold"},P(e.field.label||e.field.name),9,YP),O("dd",JP,[l.value==="control"?(v(),F(Bt(s.value),{key:0,field:o.value,"model-value":e.value,"control-id":a.value,labels:e.labels,source:e.source,"record-id":e.recordId},null,8,["field","model-value","control-id","labels","source","record-id"])):l.value==="toggle"?(v(),$(xe,{key:1},[u(Gc)(e.value)?(v(),$("span",ZP,P(u(D)("backend::lang.list.column_switch_true")),1)):(v(),$("span",QP,P(u(D)("backend::lang.list.column_switch_false")),1))],64)):l.value==="chips"?(v(),$("div",{key:2,"data-preview-value":"",class:ke([Yi,"flex-wrap gap-1.5 p-1.5"])},[(v(!0),$(xe,null,Be(f.value,b=>(v(),$("span",{key:String(b.value),"data-chip":"",class:"inline-flex min-h-[30px] items-center gap-1.5 rounded-pill bg-surface pr-3 pl-1"},[O("span",XP,P(p(b.label)),1),O("span",eq,P(b.label),1)]))),128)),f.value.length===0?(v(),$("span",tq,P(u(D)("backend::lang.list.empty_value")),1)):re("",!0)])):l.value==="relation"?(v(),$("div",{key:3,"data-preview-value":"",class:ke(Yi)},[d.value!==""?(v(),$("span",nq,P(d.value),1)):(v(),$("span",aq,P(e.field.emptyOption||u(D)("backend::lang.list.empty_value")),1))])):(v(),$("div",{key:4,"data-preview-value":"",class:ke([Yi,l.value==="textarea"?"items-start! py-3 whitespace-pre-wrap":""])},[c.value!==""?(v(),$("span",rq,P(c.value),1)):(v(),$("span",lq,P(u(D)("backend::lang.list.empty_value")),1))],2))])],8,GP))}}),sq=Q({__name:"RecordActions",props:{source:{},recordId:{},actions:{},disabled:{type:Boolean,default:!1}},emits:["busy","done","stale","gone"],setup(e,{emit:t}){const n=e,a=t,r=Ja(),l=q(!1);async function o(s){if(l.value||n.disabled)return;let i=0,c=!1,d="";if(await r.ask({message:s.confirm||D("backend::lang.form.action_confirm",{action:s.label}),confirmLabel:s.label,danger:!1},async()=>{l.value=!0,a("busy",!0);try{const p=await qe.POST("/{vendor}/{plugin}/{controller}/{id}/actions/{action}",{params:{path:{...n.source,id:n.recordId,action:s.name}},body:{}});i=p.response.status,c=!!p.data,d=p.data?.data.message??p.error?.error.message??""}catch{i=0}finally{l.value=!1,a("busy",!1)}})){if(c){a("done",d||D("backend::lang.form.action_done"));return}if(i===409){Te(D("backend::lang.form.action_stale"),"danger"),a("stale");return}if(i===404){a("gone");return}if(i===403){Te(d||D("backend::lang.list.action_forbidden"),"danger");return}Te(d||D("backend::lang.extension.action_failed"),"danger")}}return(s,i)=>e.actions.length>0?(v(),$(xe,{key:0},[(v(!0),$(xe,null,Be(e.actions,c=>(v(),F(et,{key:c.name,variant:"outline",size:"md","data-record-action":c.name,disabled:e.disabled||l.value,onClick:d=>o(c)},{default:T(()=>[Se(P(c.label),1)]),_:2},1032,["data-record-action","disabled","onClick"]))),128)),L(Ya,{open:u(r).request.value!==null,message:u(r).request.value?.message??"","confirm-label":u(r).request.value?.confirmLabel,danger:u(r).request.value?.danger,busy:u(r).busy.value,onConfirm:u(r).confirm,onCancel:u(r).cancel},null,8,["open","message","confirm-label","danger","busy","onConfirm","onCancel"])],64)):re("",!0)}}),iq={class:"flex w-full flex-col gap-5 pb-24","data-preview":""},uq={class:"flex flex-wrap items-center gap-4"},cq={class:"flex min-w-0 flex-1 flex-col"},dq={class:"truncate text-[24px] font-bold tracking-[-0.02em]"},fq={key:0,class:"text-muted"},pq={key:0,role:"alert",class:"rounded-inner bg-danger-soft px-[18px] py-3.5 text-danger"},hq=["id","role","aria-labelledby"],vq={class:"m-0 grid grid-cols-1 gap-x-6 gap-y-[22px] min-[600px]:grid-cols-2"},mq={class:"fixed inset-x-0 bottom-0 z-30 flex flex-wrap items-center gap-2.5 border-t border-border bg-surface px-8 py-3.5"},yq={class:"ml-auto flex flex-wrap items-center gap-2.5"},_o="preview",gq=Q({__name:"PreviewView",setup(e){const t=ln(),n=Tr(),a={vendor:String(t.params.vendor??""),plugin:String(t.params.plugin??""),controller:String(t.params.controller??"")},r=ks(a),l=Hn(r)??"/",o=Number(t.params.id),s=`${l}/${o}`,i=q(null),c=q({}),d=q({}),f=q([]),p=q(!0),h=q(!1),m=q(!1),b=q(Mt),g=q(0),y=new Set(["password","widget",Za]),w=x(()=>(i.value?.fields??[]).filter(ve=>Gs(ve,"preview")&&!y.has(ve.type))),A=x(()=>{if(!w.value.some(ye=>ye.tab))return[];const ve=[];for(const ye of w.value){const be=gn(ye);if(ve.some(Ce=>Ce.key===be))continue;const oe={key:be,label:ye.tab||D("backend::lang.form.tab_default"),errors:0};be===Mt?ve.unshift(oe):ve.push(oe)}return ve}),S=x(()=>Math.max(A.value.findIndex(ve=>ve.key===b.value),0)),R=x(()=>{if(A.value.length===0)return w.value;const ve=A.value[S.value]?.key??Mt;return w.value.filter(ye=>gn(ye)===ve)}),H=x(()=>{const ve=i.value?.fields.find(be=>be.type==="text"),ye=ve?c.value[ve.name]:void 0;return typeof ye=="string"||typeof ye=="number"?String(ye).trim():""}),j=x(()=>Ne(i.value?.messages.preview,void 0,{name:H.value})),U=x(()=>i.value?.preview?.headerPartial??""),k=x(()=>!p.value&&!h.value&&i.value!==null);function I(ve){switch(ve.span){case"left":return"min-[600px]:col-start-1";case"right":return"min-[600px]:col-start-2";case"auto":case"row":return"";default:return"col-span-full"}}async function W(){try{const ve=await qe.GET("/{vendor}/{plugin}/{controller}/{id}",{params:{path:{...a,id:o}}});return ve.data?(c.value={...ve.data.data},d.value=ve.data.meta.labels??{},f.value=ve.data.meta.actions??[],!0):!1}catch{return!1}}async function V(){p.value=!0,h.value=!1;const[ve,ye]=await Promise.all([qe.GET("/{vendor}/{plugin}/{controller}/schema/form",{params:{path:a}}).catch(()=>null),W()]),be=ve?.data?.data??null;if(be&&!be.preview){await n.replace(s);return}i.value=be,h.value=!be||!ye,be&&Hc(r,be.assets),b.value=A.value[0]?.key??Mt,p.value=!1}async function B(){g.value++,await W()||(h.value=!0)}async function X(ve){Te(ve),await B()}function M(){h.value=!0}const{activeUploads:ne,beginUpload:ee}=Zc(),ue=Pl();return yt(Vr,{key:ue,recordId:o,routes:ve=>_y(a,o,ve,ue),markDirty:()=>{},pendingChanges:pt(q(0)),revision:pt(q(0)),beginUpload:ee,activeUploads:pt(ne)}),Zt(()=>hv(p.value?"":H.value)),Pt(vv),V(),(ve,ye)=>(v(),$("section",iq,[O("header",uq,[L(et,{variant:"outline","data-action":"back",to:u(l),"aria-label":u(D)("backend::lang.form.return_to_list"),class:"size-10! px-0!"},{default:T(()=>[L(u(As),{size:18,"aria-hidden":"true"})]),_:1},8,["to","aria-label"]),O("div",cq,[O("h1",dq,P(p.value?"":H.value),1),k.value&&j.value?(v(),$("p",fq,P(j.value),1)):re("",!0)]),k.value&&A.value.length>0?(v(),F(Xc,{key:0,modelValue:b.value,"onUpdate:modelValue":ye[0]||(ye[0]=be=>b.value=be),tabs:A.value,"id-prefix":_o},null,8,["modelValue","tabs"])):re("",!0)]),h.value&&!p.value?(v(),$("p",pq,P(u(D)("backend::lang.form.load_failed")),1)):k.value?(v(),$(xe,{key:1},[U.value!==""?(v(),F(Wc,{key:0,variant:"header",hint:"",source:a,name:U.value,"record-id":u(o),"reload-key":g.value},null,8,["name","record-id","reload-key"])):re("",!0),O("div",{id:A.value.length>0?u(Ws)(_o,S.value):void 0,role:A.value.length>0?"tabpanel":void 0,"aria-labelledby":A.value.length>0?u(Tl)(_o,S.value):void 0,class:"rounded-card border border-border bg-surface p-7 shadow-card"},[O("dl",vq,[(v(!0),$(xe,null,Be(R.value,be=>(v(),F(oq,{key:be.name,class:ke(I(be)),field:be,value:c.value[be.name],labels:d.value?.[be.name],source:a,"record-id":u(o),"id-prefix":_o},null,8,["class","field","value","labels","record-id"]))),128))])],8,hq)],64)):re("",!0),O("footer",mq,[O("div",yq,[k.value?(v(),F(sq,{key:0,source:a,"record-id":u(o),actions:f.value,disabled:m.value,onBusy:ye[1]||(ye[1]=be=>m.value=be),onDone:X,onStale:B,onGone:M},null,8,["record-id","actions","disabled"])):re("",!0),h.value?re("",!0):(v(),F(et,{key:1,variant:"primary","data-action":"edit",icon:u(cl),disabled:p.value||m.value,onClick:ye[2]||(ye[2]=be=>u(n).push(s))},{default:T(()=>[Se(P(u(Ne)(i.value?.messages.edit)),1)]),_:1},8,["icon","disabled"]))])])]))}}),bq={class:"flex w-full flex-col gap-5 pb-24"},_q={class:"flex items-center gap-4"},xq={class:"flex min-w-0 flex-col"},wq={class:"truncate text-[24px] font-bold tracking-[-0.02em]"},kq={key:0,class:"text-muted"},$q={key:0,role:"alert",class:"rounded-inner bg-danger-soft px-[18px] py-3.5 text-danger"},Cq={class:"fixed inset-x-0 bottom-0 z-30 flex items-center justify-end gap-2.5 border-t border-border bg-surface px-8 py-3.5"},Sp="setting",Sq=Q({__name:"SettingsFormView",setup(e){const t=ln(),n=String(t.params.code??""),a=q(null),r=q({}),l=q({}),o=q(!0),s=q(!1),i=q(!1),c=x(()=>(a.value?.fields??[]).filter(g=>Gs(g,"update"))),d=x(()=>c.value.map(g=>g.name)),f=x(()=>Uo(n)?.label||a.value?.name||n),p=x(()=>Uo(n)?.description??"");async function h(){const g={path:{code:n}},[y,w]=await Promise.all([qe.GET("/settings/{code}/schema",{params:g}),qe.GET("/settings/{code}",{params:g})]);a.value=y.data?.data??null,r.value={...w.data?.data.data??{}},s.value=!y.data||!w.data,o.value=!1}function m(g,y){if(r.value={...r.value,[g]:y},l.value[g]){const w={...l.value};delete w[g],l.value=w}}async function b(){if(!(i.value||!a.value)){i.value=!0;try{const g=await qe.PUT("/settings/{code}",{params:{path:{code:n}},body:Wt(c.value,r.value)});if(g.data){l.value={},r.value={...g.data.data.data},Te(D("backend::lang.settings.saved"));return}if(g.response.status===422){l.value=Zl(g.error?.error.details);const y=c.value.find(w=>l.value[w.name]);await We(),y&&Ql(Sp,y.name);return}Te(g.error?.error.message||D("backend::lang.form.error_generic"),"danger")}catch{Te(D("backend::lang.form.error_generic"),"danger")}finally{i.value=!1}}}return h(),(g,y)=>(v(),$("section",bq,[O("header",_q,[L(et,{variant:"outline","data-action":"back",to:"/settings","aria-label":u(D)("backend::lang.settings.back"),class:"size-10! px-0!"},{default:T(()=>[L(u(As),{size:18,"aria-hidden":"true"})]),_:1},8,["aria-label"]),O("div",xq,[O("h1",wq,P(f.value),1),p.value?(v(),$("p",kq,P(p.value),1)):re("",!0)])]),s.value&&!o.value?(v(),$("p",$q,P(u(D)("backend::lang.form.load_failed")),1)):a.value?(v(),$(xe,{key:1},[L(Jl,{errors:l.value,"field-names":d.value},null,8,["errors","field-names"]),O("form",{class:"rounded-card border border-border bg-surface p-7 shadow-card",novalidate:"",onSubmit:ut(b,["prevent"])},[L(Xl,{fields:c.value,values:r.value,errors:l.value,source:null,"id-prefix":Sp,onUpdate:m},null,8,["fields","values","errors"])],32)],64)):re("",!0),O("footer",Cq,[L(et,{variant:"ghost",to:"/settings"},{default:T(()=>[Se(P(u(D)("backend::lang.form.cancel")),1)]),_:1}),L(et,{variant:"primary","data-action":"save",disabled:i.value||o.value||!a.value,onClick:b},{default:T(()=>[Se(P(i.value?u(D)("backend::lang.form.saving"):u(D)("backend::lang.form.save")),1)]),_:1},8,["disabled"])])]))}}),Aq={class:"flex flex-col gap-5"},Eq={class:"text-[26px] font-bold tracking-[-0.02em]"},Mq={key:0,class:"text-muted"},Dq={key:0,class:"text-[13px] font-semibold tracking-[0.02em] text-muted uppercase"},Oq={class:"grid grid-cols-1 gap-3 min-[900px]:grid-cols-2"},Pq={class:"flex size-10 shrink-0 items-center justify-center rounded-inner bg-subtle text-muted"},qq={class:"flex min-w-0 flex-col"},Tq={class:"font-semibold"},Rq={key:0,class:"text-[13px] text-muted"},Iq=Q({__name:"SettingsIndexView",setup(e){return(t,n)=>(v(),$("section",Aq,[O("header",null,[O("h1",Eq,P(u(D)("backend::lang.settings.title")),1)]),u(vf).length===0?(v(),$("p",Mq,P(u(D)("backend::lang.settings.empty")),1)):re("",!0),(v(!0),$(xe,null,Be(u(vf),a=>(v(),$("section",{key:a.category,"data-settings-group":"",class:"flex flex-col gap-3"},[a.category?(v(),$("h2",Dq,P(a.category),1)):re("",!0),O("div",Oq,[(v(!0),$(xe,null,Be(a.entries,r=>(v(),F(u(_n),{key:r.code,to:`/settings/${encodeURIComponent(r.code)}`,"data-settings":r.code,class:"flex items-start gap-3.5 rounded-card border border-border bg-surface p-5 text-text no-underline shadow-card hover:bg-hover"},{default:T(()=>[O("span",Pq,[(v(),F(Bt(u(Os)(r.icon)),{size:20,"aria-hidden":"true"}))]),O("span",qq,[O("span",Tq,P(r.label),1),r.description?(v(),$("span",Rq,P(r.description),1)):re("",!0)])]),_:2},1032,["to","data-settings"]))),128))])]))),128))]))}}),Bq={class:"flex flex-col items-center gap-2 py-20 text-center"},Fq={class:"text-[17px] font-bold"},Ap=Q({__name:"NotFoundView",props:{home:{type:Boolean}},setup(e){return(t,n)=>(v(),$("section",Bq,[O("h1",Fq,P(e.home?u(D)("backend::lang.nav.empty"):u(D)("backend::lang.page.not_found")),1)]))}});function qy(e){return typeof e!="string"||e.length===0||!e.startsWith("/")||e.startsWith("//")||e.startsWith("/\\")?null:e}const Nq=new Set(["list","create","record","preview"]);function Vq(e){if(typeof e.name!="string"||!Nq.has(e.name))return"";const{vendor:t,plugin:n,controller:a}=e.params;return typeof t!="string"||typeof n!="string"||typeof a!="string"?"":ks({vendor:t,plugin:n,controller:a})}function Lq(e=X1(Ss.base)){const t=g0({history:e,routes:[{path:"/login",name:"login",component:xE,meta:{public:!0}},{path:"/",name:"home",component:Ap,props:{home:!0},meta:{shell:!0},beforeEnter:()=>F0()??!0},{path:"/settings",name:"settings",component:Iq,meta:{shell:!0}},{path:"/settings/:code",name:"settings-form",component:Sq,meta:{shell:!0}},{path:"/:vendor/:plugin/:controller",name:"list",component:h6,meta:{shell:!0}},{path:"/:vendor/:plugin/:controller/create",name:"create",component:Cp,meta:{shell:!0}},{path:"/:vendor/:plugin/:controller/:id(\\d+)",name:"record",component:Cp,meta:{shell:!0}},{path:"/:vendor/:plugin/:controller/:id(\\d+)/preview",name:"preview",component:gq,meta:{shell:!0}},{path:"/:pathMatch(.*)*",name:"not-found",component:Ap,meta:{shell:!0}}]});return t.beforeEach(n=>{const a=fr.value!==null;return n.meta.public?a&&n.name==="login"?qy(n.query.redirect)??"/":!0:a?!0:{name:"login",query:{redirect:n.fullPath}}}),t.afterEach((n,a,r)=>{r||iE(Vq(n))}),t}const jq="(prefers-color-scheme: dark)";function zq(e=window){const t=e.document.documentElement;if(typeof e.matchMedia!="function")return t.classList.remove("dark"),()=>{};const n=e.matchMedia(jq),a=l=>{t.classList.toggle("dark",l)};a(n.matches);const r=l=>a(l.matches);return n.addEventListener("change",r),()=>n.removeEventListener("change",r)}async function Uq(){zq(),await R0().catch(()=>{}),await sy().catch(()=>null)&&await Promise.all([mv().catch(()=>[]),yv().catch(()=>[])]);const t=Lq();M0(()=>{iy();const a=t.currentRoute.value;a.name!=="login"&&t.push({name:"login",query:{redirect:a.fullPath}})});const n=h1(rE);n.use(t),await t.isReady(),n.mount("#app")}Uq();
+${n}`;if(!dy(n)||Iu.has(a))continue;const r=document.createElement("link");r.rel="stylesheet",r.setAttribute(lE,e),r.disabled=e!==Bu,r.href=n,Iu.set(a,{owner:e,link:r}),document.head.appendChild(r)}}function iE(e){Bu=e;for(const{owner:t,link:n}of Iu.values())n.disabled=t!==Bu}async function Hc(e,t){sE(e,t?.styles??[]);const n=t?.scripts??[],a=await Promise.allSettled(n.map(r=>oE(r)));return n.filter((r,l)=>a[l]?.status==="rejected")}const uE={class:"flex min-h-screen items-center justify-center px-4",style:{background:"radial-gradient(ellipse at 50% 35%, #2b3a5c 0%, #1d2740 60%)"}},cE={class:"flex w-full max-w-[400px] flex-col gap-6"},dE={class:"flex items-center justify-center gap-3"},fE={class:"flex size-[34px] items-center justify-center rounded-full bg-accent-soft"},pE={class:"text-[22px] font-bold tracking-[-0.02em]"},hE={class:"flex flex-col gap-1.5"},vE={class:"font-semibold"},mE={class:"flex flex-col gap-1.5"},yE={class:"font-semibold"},gE=["aria-invalid"],bE={key:0,role:"alert",class:"flex items-center gap-2.5 rounded-control bg-[#fdf0f0] px-3.5 py-3 text-[#c62828]"},_E=["disabled"],xE=Q({__name:"LoginView",setup(e){const t=ln(),n=Tr(),a=q(""),r=q(""),l=q(!1),o=q(!1);async function s(){if(!o.value){o.value=!0,l.value=!1;try{if(!await TA(a.value.trim(),r.value)||!await sy()){l.value=!0;return}r.value="",await Promise.all([mv(),yv().catch(()=>[])]),await n.replace(qy(t.query.redirect)??"/")}finally{o.value=!1}}}return(i,c)=>(v(),$("main",uE,[O("div",cE,[O("div",dE,[O("span",fE,[L(u(Ds),{size:20,class:"text-accent","aria-hidden":"true"})]),c[2]||(c[2]=O("span",{class:"text-[18px] font-bold text-white"},[Se("Summer"),O("span",{class:"text-accent"},"CMS")],-1))]),O("form",{class:"flex flex-col gap-[18px] rounded-card bg-white p-8 text-[#141b2d] shadow-login",novalidate:"",onSubmit:ut(s,["prevent"])},[O("h1",pE,P(u(D)("backend::lang.auth.title")),1),O("label",hE,[O("span",vE,P(u(D)("backend::lang.auth.login")),1),Va(O("input",{"onUpdate:modelValue":c[0]||(c[0]=d=>a.value=d),name:"login",type:"text",autocomplete:"username",required:"",class:"h-input rounded-control border border-[#d2d8e2] bg-white px-3.5"},null,512),[[No,a.value]])]),O("label",mE,[O("span",yE,P(u(D)("backend::lang.auth.password")),1),Va(O("input",{"onUpdate:modelValue":c[1]||(c[1]=d=>r.value=d),name:"password",type:"password",autocomplete:"current-password",required:"","aria-invalid":l.value?"true":void 0,class:ke([l.value?"border-[#c62828]":"border-[#d2d8e2]","h-input rounded-control border bg-white px-3.5"])},null,10,gE),[[No,r.value]])]),l.value?(v(),$("div",bE,[L(u(Vt),{size:18,"aria-hidden":"true"}),O("span",null,P(u(D)("backend::lang.auth.invalid")),1)])):re("",!0),O("button",{type:"submit",disabled:o.value,class:"h-input rounded-control bg-[#22304d] font-semibold text-white disabled:opacity-60"},P(u(D)("backend::lang.auth.submit")),9,_E)],32)])]))}}),wE=/^filter\[(.+)\]$/,kE=/^[1-9]\d*$/;function rr(e){const t=Array.isArray(e)?e[e.length-1]:e;return typeof t=="string"?t:""}function gp(e){return kE.test(e)?Number(e):void 0}function $E(e){const t={},n=rr(e.search).trim();n!==""&&(t.search=n);const a=rr(e.sort).trim();if(a!==""){t.sort=a;const s=rr(e.dir);t.dir=s==="desc"?"desc":"asc"}const r=gp(rr(e.page));r!==void 0&&(t.page=r);const l=gp(rr(e.per_page));l!==void 0&&(t.per_page=l);const o={};for(const s of Object.keys(e).sort()){const i=wE.exec(s)?.[1],c=rr(e[s]);i&&c!==""&&(o[i]=c)}return Object.keys(o).length>0&&(t.filter=o),t}function fy(e){const t={};e.search&&(t.search=e.search),e.sort&&(t.sort=e.sort,t.dir=e.dir==="desc"?"desc":"asc"),e.page!==void 0&&e.page>1&&(t.page=String(e.page)),e.per_page!==void 0&&(t.per_page=String(e.per_page));for(const n of Object.keys(e.filter??{}).sort()){const a=e.filter?.[n];a!==void 0&&a!==""&&(t[`filter[${n}]`]=a)}return t}function CE(e){return JSON.stringify(fy(e))}const bp=/^\d+$/;function py(e,t,n){const a=ws(t),r=Hn(t);if(!a||!r)return"/";const o=((e??"").trim().split(/[?#]/,1)[0]??"").split("/").filter(d=>d!==""),s=[a.vendor,a.plugin,a.controller];if(!s.every((d,f)=>o[f]?.toLowerCase()===d.toLowerCase()))return r;const c=o.slice(s.length);if(c.length===0)return r;if(c.length===1&&c[0]==="create")return`${r}/create`;if(c.length===2&&c[0]==="update"){const d=c[1]===":id"?String(n??""):c[1]??"";return bp.test(d)?`${r}/${d}`:r}if(c.length===2&&c[0]==="preview"){const d=c[1]===":id"?String(n??""):c[1]??"";return bp.test(d)?`${r}/${d}/preview`:r}return r}const SE={key:0,"data-switch":"true",class:"inline-flex h-6 items-center gap-1 rounded-pill bg-ok-bg px-2.5 text-[12px] font-semibold text-ok-text"},AE={key:1,"data-switch":"false",class:"inline-flex h-6 items-center rounded-pill border border-border-strong px-2.5 text-[12px] font-semibold text-muted"},EE={key:1,class:"text-muted","data-empty":""},ME={key:2,class:"text-[13px] text-muted tabular-nums"},lr=Q({__name:"CellValue",props:{column:{},value:{}},setup(e){const t=e;function n(f){return f==null||f===""}function a(f){return n(f)?"":Array.isArray(f)?f.map(a).filter(p=>p!=="").join(", "):typeof f=="boolean"?D(f?"backend::lang.list.column_switch_true":"backend::lang.list.column_switch_false"):typeof f=="object"?"":String(f)}function r(f){return String(f).padStart(2,"0")}function l(f){if(typeof f!="string"&&typeof f!="number")return"";const p=new Date(f);return Number.isNaN(p.getTime())?String(f):`${p.getFullYear()}-${r(p.getMonth()+1)}-${r(p.getDate())} ${r(p.getHours())}:${r(p.getMinutes())}`}function o(f){if(typeof f!="string")return"";const p=/^\d{4}-\d{2}-\d{2}/.exec(f.trim());return p?p[0]:f.trim()}function s(f){if(typeof f!="string")return"";const p=/(\d{2}):(\d{2})/.exec(f);return p?`${p[1]}:${p[2]}`:f.trim()}function i(f){return typeof f=="string"?f!==""&&f!=="0"&&f.toLowerCase()!=="false":!!f}const c=x(()=>t.column.type==="switch"?"switch":t.column.type==="datetime"?"datetime":t.column.type==="date"?"date":t.column.type==="time"?"time":"text"),d=x(()=>{switch(c.value){case"datetime":return l(t.value);case"date":return o(t.value);case"time":return s(t.value);default:return a(t.value)}});return(f,p)=>c.value==="switch"&&!n(e.value)?(v(),$(xe,{key:0},[i(e.value)?(v(),$("span",SE,[L(u(bv),{size:14,"aria-hidden":"true"}),Se(P(u(D)("backend::lang.list.column_switch_true")),1)])):(v(),$("span",AE,P(u(D)("backend::lang.list.column_switch_false")),1))],64)):d.value===""?(v(),$("span",EE,"—")):c.value==="datetime"||c.value==="date"||c.value==="time"?(v(),$("span",ME,P(d.value),1)):(v(),$(xe,{key:3},[Se(P(d.value),1)],64))}}),DE={key:0,class:"flex shrink-0 gap-2"},OE=["data-row-state"],PE=Q({__name:"RowStateBadges",props:{states:{},labels:{}},setup(e){const t=e,n={deleted:"border border-border-strong text-muted",negative:"bg-danger-soft text-danger",disabled:"bg-subtle text-muted"},a=["deleted","negative","disabled"],r=x(()=>a.filter(l=>t.states.includes(l)));return(l,o)=>r.value.length>0?(v(),$("span",DE,[(v(!0),$(xe,null,Be(r.value,s=>(v(),$("span",{key:s,"data-row-state":s,class:ke([n[s],"inline-flex h-6 shrink-0 items-center rounded-pill px-2.5 text-[12px] font-semibold whitespace-nowrap"])},P(e.labels[s]??s),11,OE))),128))])):re("",!0)}}),qE={class:"overflow-x-auto"},TE={class:"sticky top-0 z-10"},RE={class:"h-row-head border-y border-border bg-subtle"},IE={key:0,scope:"col","data-select":"",class:"w-[52px] pl-5"},BE=["aria-checked","aria-label","disabled"],FE=["aria-sort"],NE=["data-sort","onClick"],VE={key:1,class:"w-[56px] pr-5"},LE=["aria-busy"],jE={key:0,class:"pl-5"},zE={key:1,class:"pr-5"},UE={key:1},HE=["colspan"],KE={class:"text-muted"},WE=["aria-selected","data-row-states","onClick"],GE={key:0,"data-select":"",class:"pl-5"},YE=["aria-checked","aria-label","onClick"],JE={key:0,class:"flex items-center gap-3"},ZE={"data-avatar":"",class:"flex size-[30px] shrink-0 items-center justify-center rounded-full bg-subtle text-[12px] font-bold text-text","aria-hidden":"true"},QE=["onClick"],XE={key:1,class:"flex items-center gap-2"},eM={key:1,"data-trailing":"",class:"w-[56px] pr-5"},hy=Q({__name:"DataTable",props:{columns:{},rows:{},loading:{type:Boolean,default:!1},rowLink:{type:Function,default:void 0},selectable:{type:Boolean,default:!1},selected:{default:()=>[]},sortable:{type:Boolean,default:!1},sort:{default:null},variant:{default:"list"},openable:{type:Boolean,default:!1},trailing:{type:Boolean,default:!1},rowStates:{default:()=>({})},stateLabels:{default:()=>({})}},emits:["update:selected","sort","open"],setup(e,{emit:t}){const n=e,a=t,r=Tr();function l(B){const X=B.id;return typeof X=="number"||typeof X=="string"?X:null}function o(B,X){const M=l(B);return M===null?`row-${X}`:String(M)}function s(B){return n.rowLink?n.rowLink(B):null}function i(B,X){if(B.target?.closest("a, button, input, label, select"))return;if(n.openable){const ee=B.currentTarget?.querySelector("[data-row-open]")??null;a("open",X,ee);return}const ne=s(X);ne&&r.push(ne)}const c=x(()=>n.rows.map(l).filter(B=>B!==null)),d=x(()=>new Set(n.selected.map(String))),f=x(()=>{const B=c.value,X=B.filter(M=>d.value.has(String(M))).length;return X===0?"false":X===B.length?"true":"mixed"});function p(B){const X=l(B);return X!==null&&d.value.has(String(X))}function h(){a("update:selected",f.value==="true"?[]:[...c.value])}function m(B){const X=l(B);X!==null&&(d.value.has(String(X))?a("update:selected",n.selected.filter(M=>String(M)!==String(X))):a("update:selected",[...n.selected,X]))}function b(B){if(n.sort?.column===B.key)return n.sort.dir==="desc"?"descending":"ascending"}function g(B){return n.sortable&&B.sortable}const y=x(()=>n.variant==="relation"),w=x(()=>y.value?"h-[56px]":"h-row"),A=x(()=>y.value?3:8);function S(B){return(typeof B=="string"||typeof B=="number"?String(B):"").split(/[\s@._-]+/).filter(Boolean).slice(0,2).map(M=>M.charAt(0).toUpperCase()).join("")}const R=["deleted","negative","disabled"];function H(B){const X=l(B),M=X===null?void 0:n.rowStates[String(X)];return Array.isArray(M)?R.filter(ne=>M.includes(ne)):[]}function j(B,X,M=[]){const ne=M.includes("deleted")||M.includes("disabled");return X===0?ne?"font-semibold text-muted":"font-semibold":ne||y.value||B.relation?"text-muted":""}function U(B){return["min-w-0 truncate",B.includes("deleted")?"line-through":"no-underline",B.includes("negative")?"text-danger":B.includes("deleted")||B.includes("disabled")?"text-muted":"text-text"]}const k=x(()=>n.columns.filter(B=>!B.invisible)),I=x(()=>Math.max(k.value.length+(n.selectable?1:0)+(n.trailing?1:0),1));function W(B,X){a("open",X,B.currentTarget)}const V=["w-3/5","w-2/5","w-1/2","w-3/4","w-1/3","w-2/3","w-1/2","w-2/5"];return(B,X)=>(v(),$("div",qE,[O("table",{class:ke([y.value?"min-w-[480px]":"min-w-[640px]","w-full border-collapse text-left"])},[O("thead",TE,[O("tr",RE,[e.selectable?(v(),$("th",IE,[O("button",{type:"button",role:"checkbox","aria-checked":f.value,"aria-label":u(D)("backend::lang.list.select_all"),disabled:e.loading||c.value.length===0,class:ke([f.value==="false"?"border-border-strong bg-surface":"border-primary bg-primary text-on-primary","flex size-[18px] items-center justify-center rounded-checkbox border disabled:opacity-60"]),onClick:h},[f.value==="mixed"?(v(),F(u($v),{key:0,size:14,"aria-hidden":"true"})):f.value==="true"?(v(),F(u(La),{key:1,size:14,"aria-hidden":"true"})):re("",!0)],10,BE)])):re("",!0),(v(!0),$(xe,null,Be(k.value,M=>(v(),$("th",{key:M.key,scope:"col","aria-sort":g(M)?b(M)??"none":void 0,class:ke([b(M)?"text-text":"text-muted","px-3.5 text-[12px] font-semibold first:pl-5 last:pr-5"])},[g(M)?(v(),$("button",{key:0,type:"button","data-sort":M.key,class:"inline-flex items-center gap-1 font-semibold",onClick:ne=>a("sort",M.key)},[Se(P(M.label)+" ",1),b(M)==="ascending"?(v(),F(u(_v),{key:0,size:14,"aria-hidden":"true"})):b(M)==="descending"?(v(),F(u(gv),{key:1,size:14,"aria-hidden":"true"})):re("",!0)],8,NE)):(v(),$(xe,{key:1},[Se(P(M.label),1)],64))],10,FE))),128)),e.trailing?(v(),$("td",VE)):re("",!0)])]),O("tbody",{"aria-busy":e.loading?"true":void 0},[e.loading?(v(!0),$(xe,{key:0},Be(A.value,M=>(v(),$("tr",{key:`skeleton-${M}`,"data-skeleton":"",class:ke([w.value,"border-b border-border"])},[e.selectable?(v(),$("td",jE,[...X[0]||(X[0]=[O("span",{class:"block size-[18px] rounded-checkbox bg-skel"},null,-1)])])):re("",!0),(v(!0),$(xe,null,Be(k.value,ne=>(v(),$("td",{key:ne.key,class:"px-3.5 first:pl-5 last:pr-5"},[O("span",{class:ke([V[(M-1)%V.length],"block h-3 rounded-[6px] bg-skel"])},null,2)]))),128)),e.trailing?(v(),$("td",zE)):re("",!0)],2))),128)):e.rows.length===0?(v(),$("tr",UE,[O("td",{colspan:I.value,class:"px-5 py-20 text-center"},[he(B.$slots,"empty",{},()=>[O("span",KE,P(u(D)("backend::lang.list.no_records")),1)])],8,HE)])):(v(!0),$(xe,{key:2},Be(e.rows,(M,ne)=>(v(),$("tr",{key:o(M,ne),class:ke([[w.value,p(M)?"bg-sel":s(M)||e.openable?"hover:bg-hover":"",s(M)||e.openable?"cursor-pointer":""],"border-b border-border transition-colors duration-150 ease-out"]),"aria-selected":e.selectable?p(M)?"true":"false":void 0,"data-row-states":H(M).length>0?H(M).join(" "):void 0,onClick:ee=>i(ee,M)},[e.selectable?(v(),$("td",GE,[O("button",{type:"button",role:"checkbox","aria-checked":p(M)?"true":"false","aria-label":u(D)("backend::lang.list.select_row"),class:ke([p(M)?"border-primary bg-primary text-on-primary":"border-border-strong bg-surface","flex size-[18px] items-center justify-center rounded-checkbox border"]),onClick:ee=>m(M)},[p(M)?(v(),F(u(La),{key:0,size:14,"aria-hidden":"true"})):re("",!0)],10,YE)])):re("",!0),(v(!0),$(xe,null,Be(k.value,(ee,ue)=>(v(),$("td",{key:ee.key,class:ke([j(ee,ue,H(M)),"px-3.5 first:pl-5 last:pr-5"])},[y.value&&ue===0?(v(),$("span",JE,[O("span",ZE,P(S(M[ee.key])),1),e.openable?(v(),$("button",{key:0,type:"button","data-row-open":"",class:"min-w-0 truncate text-left font-semibold text-text",onClick:ve=>W(ve,M)},[L(lr,{column:ee,value:M[ee.key]},null,8,["column","value"])],8,QE)):(v(),F(lr,{key:1,column:ee,value:M[ee.key]},null,8,["column","value"]))])):ue===0&&H(M).length>0?(v(),$("span",XE,[s(M)?(v(),F(u(_n),{key:0,to:s(M),class:ke(U(H(M)))},{default:T(()=>[L(lr,{column:ee,value:M[ee.key]},null,8,["column","value"])]),_:2},1032,["to","class"])):(v(),$("span",{key:1,class:ke(U(H(M)))},[L(lr,{column:ee,value:M[ee.key]},null,8,["column","value"])],2)),L(PE,{states:H(M),labels:e.stateLabels},null,8,["states","labels"])])):ue===0&&s(M)?(v(),F(u(_n),{key:2,to:s(M),class:"text-text no-underline"},{default:T(()=>[L(lr,{column:ee,value:M[ee.key]},null,8,["column","value"])]),_:2},1032,["to"])):(v(),F(lr,{key:3,column:ee,value:M[ee.key]},null,8,["column","value"]))],2))),128)),e.trailing?(v(),$("td",eM,[he(B.$slots,"trailing",{row:M})])):re("",!0)],10,WE))),128))],8,LE)],2)]))}}),tM=["aria-label"],nM={key:0,class:"flex flex-col gap-1 text-[13px]"},aM={class:"font-semibold text-muted"},rM=["data-filter","value","onChange"],lM=["value"],oM={key:1,class:"flex flex-col gap-1 text-[13px]"},sM={class:"mb-1 font-semibold text-muted"},iM={class:"flex items-center gap-2"},uM=["data-filter","aria-label","value","onChange"],cM=["data-filter","aria-label","value","onChange"],dM={key:2,class:"flex flex-col gap-1 text-[13px]"},fM={class:"font-semibold text-muted"},pM=["data-filter","value","onChange"],hM=["value"],Yr="",vo="h-button rounded-control border border-border-strong bg-surface px-3 text-text",vM=Q({__name:"FilterBar",props:{filters:{},values:{},source:{}},emits:["update"],setup(e,{emit:t}){const n=e,a=t;function r(f){if(f.options&&f.options.length>0)return f.options.map(h=>({value:JSON.stringify(h.value),label:h.label}));const p=[];return f.trueValue!==void 0&&p.push({value:JSON.stringify(f.trueValue),label:D("backend::lang.list.column_switch_true")}),f.falseValue!==void 0&&p.push({value:JSON.stringify(f.falseValue),label:D("backend::lang.list.column_switch_false")}),p}const l=q({});async function o(f){const{data:p}=await qe.GET("/{vendor}/{plugin}/{controller}/filters/{scope}/options",{params:{path:{...n.source,scope:f.name}}});l.value={...l.value,[f.name]:p?.data??[]}}mt(()=>{for(const f of n.filters)f.type==="scope"&&o(f)});const s=en({});function i(){for(const f of n.filters){if(f.type!=="daterange")continue;const[p="",h=""]=(n.values[f.name]??"").split(".."),m=s[f.name];(!m||n.values[f.name]!==void 0||m.from!==""&&m.to!=="")&&(s[f.name]={from:p,to:h})}}Fe(()=>n.values,i,{immediate:!0,deep:!0});function c(f,p,h){const m={...s[f.name]??{from:"",to:""},[p]:h};s[f.name]=m,m.from!==""&&m.to!==""?a("update",f.name,`${m.from}..${m.to}`):(m.from===""&&m.to===""||n.values[f.name]!==void 0)&&a("update",f.name,null)}function d(f,p){a("update",f.name,p===Yr?null:p)}return(f,p)=>(v(),$("div",{role:"group","aria-label":u(D)("backend::lang.list.filters"),"data-filter-bar":"",class:"flex flex-wrap items-end gap-4 border-t border-border px-5 py-3.5"},[(v(!0),$(xe,null,Be(e.filters,h=>(v(),$(xe,{key:h.name},[h.type==="switch"?(v(),$("label",nM,[O("span",aM,P(h.label||h.name),1),O("select",{"data-filter":h.name,value:e.values[h.name]??Yr,class:ke(vo),onChange:m=>d(h,m.target.value)},[O("option",{value:Yr},P(u(D)("backend::lang.list.filter_all")),1),(v(!0),$(xe,null,Be(r(h),m=>(v(),$("option",{key:m.value,value:m.value},P(m.label),9,lM))),128))],40,rM)])):h.type==="daterange"?(v(),$("fieldset",oM,[O("legend",sM,P(h.label||h.name),1),O("div",iM,[O("input",{type:"date","data-filter":`${h.name}-from`,"aria-label":u(D)("backend::lang.list.filter_from"),value:s[h.name]?.from??"",class:ke(vo),onChange:m=>c(h,"from",m.target.value)},null,40,uM),p[0]||(p[0]=O("span",{"aria-hidden":"true"},"–",-1)),O("input",{type:"date","data-filter":`${h.name}-to`,"aria-label":u(D)("backend::lang.list.filter_to"),value:s[h.name]?.to??"",class:ke(vo),onChange:m=>c(h,"to",m.target.value)},null,40,cM)])])):h.type==="scope"?(v(),$("label",dM,[O("span",fM,P(h.label||h.name),1),(v(),$("select",{key:`${h.name}-${l.value[h.name]?.length??-1}`,"data-filter":h.name,value:e.values[h.name]??Yr,class:ke(vo),onChange:m=>d(h,m.target.value)},[O("option",{value:Yr},P(u(D)("backend::lang.list.filter_all")),1),(v(!0),$(xe,null,Be(l.value[h.name]??[],m=>(v(),$("option",{key:m.value,value:m.value},P(m.label),9,hM))),128))],40,pM))])):re("",!0)],64))),128))],8,tM))}}),mM=["type","disabled"],et=Q({__name:"Button",props:{variant:{default:"outline"},size:{default:"md"},type:{default:"button"},disabled:{type:Boolean,default:!1},icon:{default:void 0},to:{default:void 0}},setup(e){const t=e,n={primary:"bg-primary text-on-primary hover:opacity-90",outline:"border border-border-strong bg-surface text-text hover:bg-hover",ghost:"text-muted hover:bg-hover hover:text-text",danger:"border border-danger bg-surface text-danger hover:bg-danger-soft"},a=x(()=>["inline-flex shrink-0 items-center justify-center gap-2 rounded-control px-4 font-semibold whitespace-nowrap no-underline transition-colors duration-150 ease-out disabled:cursor-not-allowed disabled:opacity-60",t.size==="sm"?"h-[38px]":"h-button",n[t.variant]]);return(r,l)=>e.to!==void 0?(v(),F(u(_n),{key:0,to:e.to,class:ke(a.value)},{default:T(()=>[e.icon?(v(),F(Bt(e.icon),{key:0,size:16,"aria-hidden":"true"})):re("",!0),he(r.$slots,"default")]),_:3},8,["to","class"])):(v(),$("button",{key:1,type:e.type,disabled:e.disabled,class:ke(a.value)},[e.icon?(v(),F(Bt(e.icon),{key:0,size:16,"aria-hidden":"true"})):re("",!0),he(r.$slots,"default")],10,mM))}}),yM=Q({__name:"BulkActionsMenu",props:{actions:{},disabled:{type:Boolean}},emits:["select"],setup(e,{expose:t,emit:n}){const a=n,r=q(null);function l(){const o=r.value?.$el;o instanceof HTMLElement&&o.focus()}return t({focus:l}),(o,s)=>(v(),F(u(Xm),{modal:!1},{default:T(()=>[L(u(ay),{"as-child":"",disabled:e.disabled},{default:T(()=>[L(et,{ref_key:"trigger",ref:r,variant:"outline",size:"md","data-action":"bulk-actions",disabled:e.disabled},{default:T(()=>[Se(P(u(D)("backend::lang.list.bulk_actions"))+" ",1),L(u(Nl),{size:16,class:"text-muted","aria-hidden":"true"})]),_:1},8,["disabled"])]),_:1},8,["disabled"]),L(u(ny),null,{default:T(()=>[L(u(ey),{"data-bulk-menu":"",align:"end","side-offset":8,class:"z-50 flex w-[240px] max-w-[320px] flex-col rounded-[14px] border border-border bg-surface p-2 text-text shadow-menu"},{default:T(()=>[(v(!0),$(xe,null,Be(e.actions,i=>(v(),F(u(ty),{key:i.name,"data-bulk-action":i.name,class:"flex min-h-10 cursor-pointer items-center rounded-control px-3 py-2 outline-none transition-colors duration-150 ease-out data-[highlighted]:bg-hover",onSelect:c=>a("select",i.name)},{default:T(()=>[Se(P(i.label),1)]),_:2},1032,["data-bulk-action","onSelect"]))),128))]),_:1})]),_:1})]),_:1}))}}),gM={class:"flex flex-wrap items-center justify-between gap-3 px-5 py-4"},bM={key:0,class:"relative block w-[320px] max-w-full"},_M={class:"sr-only"},xM=["value","placeholder"],wM={key:1},kM={class:"flex flex-wrap items-center justify-end gap-2.5"},$M={key:0,"data-selected-pill":"",class:"inline-flex h-8 items-center gap-1.5 rounded-pill bg-sel px-3 text-[13px] font-semibold"},CM=Q({__name:"ListToolbar",props:{showSearch:{type:Boolean},search:{},searchPrompt:{},buttons:{},selectedCount:{},selectedLabel:{},deleteLabel:{},actions:{default:()=>[]},busyAction:{default:null},bulkActions:{default:()=>[]},bulkBusy:{type:Boolean,default:!1}},emits:["update:search","delete","action","bulk"],setup(e,{expose:t,emit:n}){const a=e,r=n,l=x(()=>new Map(a.actions.map(i=>[i.name,i.label]))),o=q(null);function s(){o.value?.focus()}return t({focusBulk:s}),(i,c)=>(v(),$("div",gM,[e.showSearch?(v(),$("label",bM,[O("span",_M,P(u(D)("backend::lang.list.search")),1),L(u(Ms),{size:18,class:"pointer-events-none absolute top-1/2 left-3.5 -translate-y-1/2 text-muted","aria-hidden":"true"}),O("input",{type:"search","data-list-search":"",value:e.search,placeholder:e.searchPrompt,class:"h-button w-full rounded-control border border-transparent bg-subtle pr-3.5 pl-10",onInput:c[0]||(c[0]=d=>r("update:search",d.target.value))},null,40,xM)])):(v(),$("span",wM)),O("div",kM,[e.selectedCount>0?(v(),$("span",$M,[L(u(La),{size:14,"aria-hidden":"true"}),Se(P(e.selectedLabel),1)])):re("",!0),e.bulkActions.length>0?(v(),F(yM,{key:1,ref_key:"bulkMenu",ref:o,actions:e.bulkActions,disabled:e.selectedCount===0||e.bulkBusy,onSelect:c[1]||(c[1]=d=>r("bulk",d))},null,8,["actions","disabled"])):re("",!0),(v(!0),$(xe,null,Be(e.buttons,d=>(v(),$(xe,{key:d},[d==="delete"?(v(),F(et,{key:0,"data-action":"delete",variant:e.selectedCount>0?"danger":"outline",icon:u(Ll),disabled:e.selectedCount===0,onClick:c[2]||(c[2]=f=>r("delete"))},{default:T(()=>[Se(P(e.deleteLabel),1)]),_:1},8,["variant","icon","disabled"])):l.value.has(d)?(v(),F(et,{key:1,variant:"outline",size:"md","data-action":d,disabled:e.busyAction===d,"aria-busy":e.busyAction===d?"true":void 0,onClick:f=>r("action",d)},{default:T(()=>[Se(P(l.value.get(d)),1)]),_:2},1032,["data-action","disabled","aria-busy","onClick"])):re("",!0)],64))),128))])]))}}),SM={class:"flex flex-wrap items-center gap-x-6 gap-y-3 border-t border-border px-5 py-3.5 text-[13px] text-muted"},AM={"data-range":""},EM={key:0,class:"flex items-center gap-2"},MM=["value"],DM=["value"],OM=["aria-label"],PM=["disabled"],qM={key:0,"aria-hidden":"true",class:"px-1"},TM=["data-page","aria-current","onClick"],RM=["disabled"],zi="inline-flex h-pager min-w-pager items-center justify-center gap-1 rounded-pager border border-border px-2.5 text-[13px] text-text disabled:cursor-not-allowed disabled:opacity-60 hover:bg-hover",vy=Q({__name:"Pagination",props:{meta:{},loading:{type:Boolean},perPageOptions:{},perPage:{}},emits:["page","perPage"],setup(e,{emit:t}){const n=e,a=t,r=x(()=>n.meta?.total??0),l=x(()=>n.meta?.page??1),o=x(()=>Math.max(n.meta?.last_page??1,1)),s=x(()=>{const d=n.meta;if(!d||d.total===0)return Er("backend::lang.list.results",0);const f=(d.page-1)*d.per_page+1,p=Math.min(d.page*d.per_page,d.total);return D("backend::lang.list.pagination_range",{from:f,to:p,total:d.total})}),i=x(()=>{const d=o.value,f=l.value,p=new Set([1,d,f-1,f,f+1].filter(b=>b>=1&&b<=d));f<=3&&[2,3].forEach(b=>b<=d&&p.add(b)),f>=d-2&&[d-1,d-2].forEach(b=>b>=1&&p.add(b));const h=[...p].sort((b,g)=>b-g),m=[];return h.forEach((b,g)=>{const y=h[g-1];y!==void 0&&b-y>1&&m.push(null),m.push(b)}),m});function c(d){const f=Number(d.target.value);Number.isFinite(f)&&f>0&&a("perPage",f)}return(d,f)=>(v(),$("footer",SM,[O("span",AM,P(e.loading?u(D)("backend::lang.list.loading"):s.value),1),e.perPageOptions.length>1?(v(),$("label",EM,[O("span",null,P(u(D)("backend::lang.list.records_per_page")),1),O("select",{"data-per-page":"",value:String(e.perPage),class:"h-pager rounded-pager border border-border-strong bg-surface px-2 text-text",onChange:c},[(v(!0),$(xe,null,Be(e.perPageOptions,p=>(v(),$("option",{key:p,value:String(p)},P(p),9,DM))),128))],40,MM)])):re("",!0),!e.loading&&r.value>0?(v(),$("nav",{key:1,"aria-label":u(D)("backend::lang.list.pagination"),class:"ml-auto flex items-center gap-1.5"},[O("button",{type:"button","data-page":"prev",class:ke(zi),disabled:l.value<=1,onClick:f[0]||(f[0]=p=>a("page",l.value-1))},[L(u(Es),{size:14,"aria-hidden":"true"}),Se(P(u(D)("backend::lang.list.prev_page")),1)],8,PM),(v(!0),$(xe,null,Be(i.value,(p,h)=>(v(),$(xe,{key:p??`gap-${h}`},[p===null?(v(),$("span",qM,"…")):(v(),$("button",{key:1,type:"button","data-page":p,"aria-current":p===l.value?"page":void 0,class:ke([zi,p===l.value?"border-transparent bg-sel font-bold":""]),onClick:m=>p!==l.value&&a("page",p)},P(p),11,TM))],64))),128)),O("button",{type:"button","data-page":"next",class:ke(zi),disabled:l.value>=o.value,onClick:f[1]||(f[1]=p=>a("page",l.value+1))},[Se(P(u(D)("backend::lang.list.next_page")),1),L(u(Vl),{size:14,"aria-hidden":"true"})],8,RM)],8,OM)):re("",!0)]))}}),IM={role:"alert","data-extension-failure":"",class:"flex min-h-input items-center rounded-control border-[1.5px] border-dashed border-border-strong bg-subtle px-3.5 py-2.5 text-[13px] text-muted"},BM={class:"flex min-w-0 items-start gap-2.5"},FM={class:"min-w-0 [overflow-wrap:anywhere]"},Kc=Q({__name:"ExtensionFailure",props:{text:{}},setup(e){return(t,n)=>(v(),$("div",IM,[O("span",BM,[L(u(Vt),{size:16,class:"mt-0.5 shrink-0 text-danger","aria-hidden":"true"}),O("span",FM,P(e.text),1)])]))}}),NM=new Set(["div","span","p","strong","em","b","i","u","s","small","mark","code","pre","br","hr","ul","ol","li","dl","dt","dd","h2","h3","h4","h5","h6","table","thead","tbody","tfoot","tr","th","td","caption","section","header","footer","figure","figcaption","blockquote","q","abbr","time","data","meter","progress","sup","sub","a","img"]),VM=new Set(["script","style","template","iframe","object","embed","noscript","textarea","title","xmp","svg","math","form","input","button","select","link","meta","base"]),LM=32,jM=2e3,zM=new Set(["class","title","lang","dir","role"]),UM={a:new Set(["href"]),img:new Set(["src","alt","width","height"]),td:new Set(["colspan","rowspan","scope"]),th:new Set(["colspan","rowspan","scope"]),time:new Set(["datetime"]),data:new Set(["value"]),meter:new Set(["value","min","max","low","high","optimum"]),progress:new Set(["value","max"])},HM=/^(aria|data)-[a-z0-9_-]+$/;function KM(e,t){if(e==="")return!1;for(const n of e){const a=n.codePointAt(0)??0;if(a<=32||a===127)return!1}return e.startsWith("#")?t:e.startsWith("/")?e.length===1||e[1]!=="/"&&e[1]!=="\\":!1}function WM(e,t,n){return zM.has(t)||UM[e]?.has(t)===!0||HM.test(t)?e==="a"&&t==="href"||e==="img"&&t==="src"?KM(n,e==="a"):!0:!1}function GM(e,t){const n={};for(const[a,r]of Object.entries(t??{})){const l=a.toLowerCase();typeof r=="string"&&WM(e,l,r)&&(n[l]=r)}return n}function Fu(e,t,n){const a=[];for(const r of e??[]){if(n.left<=0)break;if(r.tag===void 0||r.tag===""){typeof r.text=="string"&&r.text!==""&&(n.left-=1,a.push(r.text));continue}const l=r.tag.toLowerCase();if(VM.has(l))continue;if(!NM.has(l)){a.push(...Fu(r.children,t,n));continue}if(t+1>LM)continue;n.left-=1;const o=Fu(r.children,t+1,n);a.push(Gt(l,GM(l,r.attrs),o.length>0?o:void 0))}return a}function YM(e){return Fu(e,0,{left:jM})}const JM={key:1,"data-partial-loading":"","aria-busy":"true"},ZM=["data-partial","aria-busy"],Wc=Q({__name:"PartialHost",props:{source:{},name:{},recordId:{default:null},variant:{},reloadKey:{default:0},hint:{type:Boolean,default:!1}},setup(e){const t=e,n=q(null),a=q(!1),r=q(!1);let l=0;const o=i=>YM(i.nodes);o.props=["nodes"];async function s(){const i=++l;r.value=!0;let c=null;try{c=(await qe.GET("/{vendor}/{plugin}/{controller}/partials/{name}",{params:{path:{...t.source,name:t.name},query:t.recordId!=null?{id:t.recordId}:void 0}})).data?.data.nodes??null}catch{c=null}i===l&&(r.value=!1,a.value=c===null,n.value=c)}return Fe(()=>t.reloadKey,()=>{s()}),s(),(i,c)=>a.value?(v(),F(Kc,{key:0,"data-partial-failed":"",text:u(D)("backend::lang.extension.partial_failed")},null,8,["text"])):n.value===null?(v(),$("div",JM,[O("div",{"data-partial-skeleton":"",class:ke([e.hint?"h-[68px] w-full rounded-inner":e.variant==="header"?"h-[80px] w-full rounded-card":"h-[44px] w-full rounded-control","bg-skel"]),"aria-hidden":"true"},null,2)])):n.value.length>0?(v(),$("div",{key:2,class:"summer-partial","data-partial":e.variant,"aria-busy":r.value?"true":void 0},[L(o,{nodes:n.value},null,8,["nodes"])],8,ZM)):re("",!0)}}),QM={class:"flex gap-2.5"},XM=["disabled","aria-busy"],Ya=Q({__name:"ConfirmDialog",props:{open:{type:Boolean},message:{},title:{default:void 0},confirmLabel:{default:void 0},cancelLabel:{default:void 0},danger:{type:Boolean,default:!1},busy:{type:Boolean,default:!1}},emits:["update:open","confirm","cancel"],setup(e,{emit:t}){const n=e,a=t;function r(o){!o&&n.busy||(a("update:open",o),o||a("cancel"))}function l(){n.busy||(a("confirm"),a("update:open",!1))}return(o,s)=>(v(),F(u(rC),{open:e.open,"onUpdate:open":r},{default:T(()=>[L(u(nC),null,{default:T(()=>[L(u(eC),{class:"pointer-events-auto fixed inset-0 z-[80] bg-overlay"}),L(u(G$),{"data-confirm-dialog":"",class:"pointer-events-auto fixed top-1/2 left-1/2 z-[90] flex w-[calc(100%-32px)] max-w-[440px] -translate-x-1/2 -translate-y-1/2 flex-col gap-4 rounded-modal bg-surface p-6 text-text shadow-pop"},{default:T(()=>[L(u(oC),{class:"text-[20px] font-bold tracking-[-0.01em]"},{default:T(()=>[Se(P(e.title??u(D)("backend::lang.form.confirm")),1)]),_:1}),L(u(Q$),{class:"text-muted"},{default:T(()=>[Se(P(e.message),1)]),_:1}),O("div",QM,[L(u(J$),{"data-action":"cancel",disabled:e.busy,class:"inline-flex h-button flex-1 items-center justify-center rounded-control border border-border-strong bg-surface font-semibold hover:bg-hover disabled:cursor-not-allowed disabled:opacity-60"},{default:T(()=>[Se(P(e.cancelLabel??u(D)("backend::lang.form.cancel")),1)]),_:1},8,["disabled"]),O("button",{type:"button","data-action":"confirm",disabled:e.busy,"aria-busy":e.busy?"true":void 0,class:ke([e.danger?"bg-danger text-white":"bg-primary text-on-primary","inline-flex h-button flex-1 items-center justify-center gap-2 rounded-control font-semibold hover:opacity-90 disabled:cursor-not-allowed disabled:opacity-60"]),onClick:ut(l,["prevent"])},[e.busy?(v(),F(u(ko),{key:0,size:16,class:"animate-spin","aria-hidden":"true"})):re("",!0),Se(" "+P(e.confirmLabel??u(D)("backend::lang.form.confirm")),1)],10,XM)])]),_:1})]),_:1})]),_:1},8,["open"]))}});function Ja(){const e=q(null),t=q(!1);let n=null,a=null;function r(i){const c=n;n=null,a=null,e.value=null,c?.(i)}function l(i,c){return r(!1),e.value=i,a=c??null,new Promise(d=>{n=d})}async function o(){if(t.value)return;const i=a;if(i){t.value=!0;try{await i()}finally{t.value=!1}}r(!0)}function s(){t.value||r(!1)}return{request:e,busy:t,ask:l,confirm:o,cancel:s}}const e6={class:"flex flex-col gap-5"},t6={class:"flex flex-wrap items-end justify-between gap-4"},n6={class:"flex flex-col"},a6={class:"text-[26px] font-bold tracking-[-0.02em]"},r6={key:0,"data-record-count":"",class:"text-muted"},l6={key:0,class:"flex items-center gap-2.5"},o6={class:"overflow-hidden rounded-card border border-border bg-surface shadow-card"},s6={key:2,role:"alert",class:"border-t border-border px-5 py-4 text-danger"},i6={key:0,"data-empty-search":"",class:"flex flex-col items-center gap-3"},u6={class:"flex size-14 items-center justify-center rounded-full bg-subtle text-muted"},c6={class:"text-[17px] font-bold"},d6={class:"max-w-[420px] text-muted"},f6={key:1,"data-empty-list":"",class:"text-muted"},p6=300,h6=Q({__name:"ListView",setup(e){const t=ln(),n=Tr(),a={vendor:String(t.params.vendor??""),plugin:String(t.params.plugin??""),controller:String(t.params.controller??"")},r=ks(a),l=Hn(r)??"/",o=q(null),s=q([]),i=q(null),c=q(!0),d=q(!1),f=q(!1),p=x(()=>d.value||f.value),h=q([]),m=q(!1),b=q(0),g=Ja(),y=x(()=>$E(t.query)),w=q(y.value.search??""),A=x(()=>o.value?.messages),S=x(()=>o.value?.title?o.value.title:Fl(a.vendor,a.plugin)?.sideMenu.find(J=>J.controller===r)?.label??r),R=x(()=>i.value?Ne(A.value?.recordCount,i.value.total):""),H=x(()=>o.value?.toolbarButtons??[]),j=x(()=>H.value.filter(E=>E==="create")),U=x(()=>o.value?.toolbarActions??[]),k=x(()=>H.value.filter(E=>E==="delete"||U.value.some(J=>J.name===E))),I=q(null),W=x(()=>i.value?.row_states??{}),V=x(()=>({deleted:Ne(A.value?.rowStateDeleted),negative:Ne(A.value?.rowStateNegative),disabled:Ne(A.value?.rowStateDisabled)})),B=x(()=>(o.value?.bulkActions??[]).filter(E=>E.name!=="delete")),X=q(!1),M=q(null),ne=x(()=>{const E=o.value?.perPageOptions??[];return E.length>0?E:[o.value?.recordsPerPage||20]}),ee=x(()=>y.value.per_page??i.value?.per_page??o.value?.recordsPerPage??20),ue=x(()=>y.value.sort?{column:y.value.sort,dir:y.value.dir==="desc"?"desc":"asc"}:null);function ve(E){const J=o.value?.recordUrl,Y=E.id;return!J||typeof Y!="number"&&typeof Y!="string"?null:py(J,r,Y)}function ye(E){n.replace({path:t.path,query:fy(E)})}let be=0;async function oe(){const E=++be;c.value=!0,f.value=!1;const J=await qe.GET("/{vendor}/{plugin}/{controller}",{params:{path:a,query:y.value}});E===be&&(s.value=J.data?.data??[],i.value=J.data?.meta??null,f.value=!J.data,c.value=!1)}async function Ce(){const E=await qe.GET("/{vendor}/{plugin}/{controller}/schema/list",{params:{path:a}});o.value=E.data?.data??null,d.value=!o.value,o.value&&Hc(r,o.value.assets)}Ce(),Fe(()=>CE(y.value),()=>{h.value=[],w.value=y.value.search??"",oe()},{immediate:!0});let ce=null;function Ee(E){w.value=E,ce!==null&&clearTimeout(ce),ce=setTimeout(()=>{ce=null;const J=E.trim();ye({...y.value,search:J===""?void 0:J,page:void 0})},p6)}Pt(()=>{ce!==null&&clearTimeout(ce)});function Z(){w.value="",ye({...y.value,search:void 0,page:void 0})}function K(E){const J=ue.value;J?.column!==E?ye({...y.value,sort:E,dir:"asc",page:void 0}):J.dir==="asc"?ye({...y.value,sort:E,dir:"desc",page:void 0}):ye({...y.value,sort:void 0,dir:void 0,page:void 0})}function te(E){ye({...y.value,page:E})}function ie(E){ye({...y.value,per_page:E,page:void 0})}function le(E,J){const Y={...y.value.filter??{}};J===null?delete Y[E]:Y[E]=J,ye({...y.value,filter:Y,page:void 0})}async function pe(){const E=h.value.map(Number).filter(Y=>Number.isInteger(Y)&&Y>0);if(!(E.length===0||m.value||!await g.ask({message:Ne(A.value?.deleteConfirm,E.length),confirmLabel:D("backend::lang.form.delete"),danger:!0}))){m.value=!0;try{const Y=await qe.POST("/{vendor}/{plugin}/{controller}/bulk-delete",{params:{path:a},body:{ids:E}});if(Y.data){Te(Ne(A.value?.deleted,Y.data.data.deleted)),h.value=[],await oe(),b.value+=1;return}Te(Y.error?.error.message||D("backend::lang.list.delete_failed"),"danger")}catch{Te(D("backend::lang.list.delete_failed"),"danger")}finally{m.value=!1}}}async function _(E){const J=B.value.find(se=>se.name===E),Y=h.value.map(Number).filter(se=>Number.isInteger(se)&&se>0);if(!J||Y.length===0||X.value)return;const ae=J.label??E;let ge=0,me=null,_e="";const G=await g.ask({message:J.confirm||Er("backend::lang.list.bulk_confirm",Y.length,{action:ae}),confirmLabel:ae,danger:!1},async()=>{X.value=!0;try{const se=await qe.POST("/{vendor}/{plugin}/{controller}/bulk/{action}",{params:{path:{...a,action:E}},body:{ids:Y}});ge=se.response.status,me=se.data?.data??null,_e=se.error?.error.message??""}catch{ge=0}finally{X.value=!1}});if(await new Promise(se=>setTimeout(se,0)),M.value?.focusBulk(),!G)return;const de=me;if(de){Te(de.message||Er("backend::lang.list.bulk_done",de.affected)),h.value=[],await oe(),b.value+=1;return}if(ge===409){Te(D("backend::lang.list.bulk_stale"),"danger"),h.value=[],await oe();return}if(ge===403){Te(_e||D("backend::lang.list.action_forbidden"),"danger");return}Te(_e||D("backend::lang.extension.action_failed"),"danger")}async function C(E){if(I.value===null){I.value=E;try{const J=await qe.POST("/{vendor}/{plugin}/{controller}/toolbar/{action}",{params:{path:{...a,action:E}},body:{}});if(J.data){J.data.data.message&&Te(J.data.data.message),await oe(),b.value+=1;return}Te(J.error?.error.message||D("backend::lang.extension.action_failed"),"danger")}catch{Te(D("backend::lang.extension.action_failed"),"danger")}finally{I.value=null}}}return(E,J)=>(v(),$("section",e6,[O("header",t6,[O("div",n6,[O("h1",a6,P(S.value),1),R.value?(v(),$("p",r6,P(R.value),1)):re("",!0)]),j.value.length>0?(v(),$("div",l6,[(v(!0),$(xe,null,Be(j.value,Y=>(v(),F(et,{key:Y,"data-action":"create",variant:"primary",icon:u(ic),to:`${u(l)}/create`},{default:T(()=>[Se(P(u(Ne)(A.value?.create)),1)]),_:1},8,["icon","to"]))),128))])):re("",!0)]),o.value?.headerPartial?(v(),F(Wc,{key:0,variant:"header",source:a,name:o.value.headerPartial,"reload-key":b.value},null,8,["name","reload-key"])):re("",!0),O("div",o6,[o.value?(v(),F(CM,{key:0,ref_key:"toolbar",ref:M,"show-search":o.value.showSearch,search:w.value,"search-prompt":u(Ne)(A.value?.searchPrompt),buttons:k.value,"selected-count":h.value.length,"selected-label":u(Ne)(A.value?.selected,h.value.length),"delete-label":u(Ne)(A.value?.deleteSelected,h.value.length),actions:U.value,"busy-action":I.value,"bulk-actions":B.value,"bulk-busy":X.value,"onUpdate:search":Ee,onDelete:pe,onAction:C,onBulk:_},null,8,["show-search","search","search-prompt","buttons","selected-count","selected-label","delete-label","actions","busy-action","bulk-actions","bulk-busy"])):re("",!0),o.value&&o.value.filters.length>0?(v(),F(vM,{key:1,filters:o.value.filters,values:y.value.filter??{},source:a,onUpdate:le},null,8,["filters","values"])):re("",!0),p.value&&!c.value?(v(),$("p",s6,P(u(D)("backend::lang.list.load_failed")),1)):(v(),F(hy,{key:3,columns:o.value?.columns??[],rows:s.value,loading:c.value||!o.value,"row-link":ve,selectable:o.value?.showCheckboxes??!1,selected:h.value,sortable:o.value?.showSorting??!1,sort:ue.value,"row-states":W.value,"state-labels":V.value,"onUpdate:selected":J[0]||(J[0]=Y=>h.value=Y),onSort:K},{empty:T(()=>[y.value.search?(v(),$("div",i6,[O("span",u6,[L(u(Ev),{size:24,"aria-hidden":"true"})]),O("p",c6,P(u(Ne)(A.value?.emptySearch,void 0,{term:y.value.search})),1),O("p",d6,P(u(Ne)(A.value?.emptySearchHint,void 0,{term:y.value.search})),1),L(et,{"data-action":"clear-search",onClick:Z},{default:T(()=>[Se(P(u(D)("backend::lang.list.clear_search")),1)]),_:1})])):(v(),$("p",f6,P(u(Ne)(A.value?.empty)||o.value?.noRecordsMessage||u(D)("backend::lang.list.no_records")),1))]),_:1},8,["columns","rows","loading","selectable","selected","sortable","sort","row-states","state-labels"])),L(vy,{meta:i.value,loading:c.value||!o.value,"per-page-options":ne.value,"per-page":ee.value,onPage:te,onPerPage:ie},null,8,["meta","loading","per-page-options","per-page"])]),L(Ya,{open:u(g).request.value!==null,message:u(g).request.value?.message??"","confirm-label":u(g).request.value?.confirmLabel,danger:u(g).request.value?.danger,busy:u(g).busy.value,onConfirm:u(g).confirm,onCancel:u(g).cancel},null,8,["open","message","confirm-label","danger","busy","onConfirm","onCancel"])]))}}),_a="X-Session-Key",my="X-Child-Session-Key",v6=32;function Pl(){const e=new Uint8Array(v6);globalThis.crypto.getRandomValues(e);let t="";for(const n of e)t+=String.fromCharCode(n);return btoa(t).replace(/\+/g,"-").replace(/\//g,"_").replace(/=+$/,"")}const m6="X-Upload-Id";async function da(e){try{const t=await e();return{data:t.data?t.data.data:null,status:t.response.status,error:t.error?.error??null}}catch{return{data:null,status:0,error:null}}}async function es(e){try{const t=await e();return t.response.ok&&t.data instanceof Blob?t.data:null}catch{return null}}function Bn(e){return encodeURIComponent(String(e))}function yy(e){return`${Ss.api}/${Bn(e.vendor)}/${Bn(e.plugin)}/${Bn(e.controller)}`}function y6(e){try{return e===""?null:JSON.parse(e)}catch{return null}}function gy(e){if(!e)return"";for(const t of Object.values(e.details??{})){const n=Array.isArray(t)?t.find(a=>typeof a=="string"&&a!==""):t;if(typeof n=="string"&&n!=="")return n}return e.message??""}function g6(e,t){const n=t;if((e===200||e===201)&&n?.data)return{ok:!0,item:n.data};const a=gy(n?.error);return e===413?{ok:!1,reason:"too_large",status:e,message:a}:e===422?{ok:!1,reason:"invalid",status:e,message:a}:e===0?{ok:!1,reason:"network",status:e,message:a}:{ok:!1,reason:"failed",status:e,message:a}}function by(e,t,n,a,r){let l=null,o=!1;const s=()=>new Promise(c=>{const d=new XMLHttpRequest;l=d,d.open("POST",e),d.setRequestHeader("X-Requested-With",fv),d.setRequestHeader("Accept","application/json");for(const[p,h]of Object.entries(n))d.setRequestHeader(p,h);r&&d.setRequestHeader(m6,r),d.upload.onprogress=p=>{p.lengthComputable&&a?.(p.loaded,p.total)},d.onload=()=>c({status:d.status,body:y6(d.responseText)}),d.onerror=()=>c("network"),d.ontimeout=()=>c("network"),d.onabort=()=>c("aborted");const f=new FormData;f.append("file_data",t,t.name),d.send(f)});return{promise:(async()=>{let c=await s();return typeof c=="object"&&c.status===401&&!o&&(await ac()&&(c=o?"aborted":await s()),typeof c=="object"&&c.status===401&&D0()),c==="aborted"||o?{ok:!1,reason:"aborted",status:0,message:""}:c==="network"?{ok:!1,reason:"network",status:0,message:""}:g6(c.status,c.body)})(),abort(){o=!0,l?.abort()}}}function _y(e,t,n,a){const r={...e,id:t,field:n},l={[_a]:a},o=`${yy(e)}/${Bn(t)}/files/${Bn(n)}`;return{list:()=>da(()=>qe.GET("/{vendor}/{plugin}/{controller}/{id}/files/{field}",{params:{path:r,header:l}})),upload:(s,i,c)=>by(o,s,{...l},i,c),update:(s,i)=>da(()=>qe.PUT("/{vendor}/{plugin}/{controller}/{id}/files/{field}/{file}",{params:{path:{...r,file:s},header:l},body:i})),remove:s=>da(()=>qe.DELETE("/{vendor}/{plugin}/{controller}/{id}/files/{field}/{file}",{params:{path:{...r,file:s},header:l}})),reorder:s=>da(()=>qe.POST("/{vendor}/{plugin}/{controller}/{id}/files/{field}/reorder",{params:{path:r,header:l},body:{ids:s}})),download:s=>es(()=>qe.GET("/{vendor}/{plugin}/{controller}/{id}/files/{field}/{file}/download",{params:{path:{...r,file:s},header:l},parseAs:"blob"})),thumb:s=>es(()=>qe.GET("/{vendor}/{plugin}/{controller}/{id}/files/{field}/{file}/thumb",{params:{path:{...r,file:s},header:l},parseAs:"blob"}))}}function b6(e,t,n,a,r,l,o){const s={...e,id:t,name:n,child:a,field:r},i={[_a]:l,[my]:o},c=`${yy(e)}/${Bn(t)}/relations/${Bn(n)}/records/${Bn(a)}/files/${Bn(r)}`;return{list:()=>da(()=>qe.GET("/{vendor}/{plugin}/{controller}/{id}/relations/{name}/records/{child}/files/{field}",{params:{path:s,header:i}})),upload:(d,f,p)=>by(c,d,{...i},f,p),update:(d,f)=>da(()=>qe.PUT("/{vendor}/{plugin}/{controller}/{id}/relations/{name}/records/{child}/files/{field}/{file}",{params:{path:{...s,file:d},header:i},body:f})),remove:d=>da(()=>qe.DELETE("/{vendor}/{plugin}/{controller}/{id}/relations/{name}/records/{child}/files/{field}/{file}",{params:{path:{...s,file:d},header:i}})),reorder:d=>da(()=>qe.POST("/{vendor}/{plugin}/{controller}/{id}/relations/{name}/records/{child}/files/{field}/reorder",{params:{path:s,header:i},body:{ids:d}})),download:d=>es(()=>qe.GET("/{vendor}/{plugin}/{controller}/{id}/relations/{name}/records/{child}/files/{field}/{file}/download",{params:{path:{...s,file:d},header:i},parseAs:"blob"})),thumb:d=>es(()=>qe.GET("/{vendor}/{plugin}/{controller}/{id}/relations/{name}/records/{child}/files/{field}/{file}/thumb",{params:{path:{...s,file:d},header:i},parseAs:"blob"}))}}const _6={key:0,role:"alert","data-forbidden-banner":"",class:"flex items-start gap-3 rounded-inner bg-danger-soft px-[18px] py-3.5 text-danger"},x6={class:"flex min-w-0 flex-col gap-1"},w6={class:"[overflow-wrap:anywhere]"},k6={key:1,role:"alert","data-error-banner":"",class:"flex items-start gap-3 rounded-inner bg-danger-soft px-[18px] py-3.5 text-danger"},$6={class:"flex flex-col gap-1"},Jl=Q({__name:"FormErrorBanner",props:{errors:{},fieldNames:{},forbidden:{default:null}},setup(e){const t=e,n=x(()=>Object.keys(t.errors).length),a=x(()=>Object.entries(t.errors).filter(([r])=>!t.fieldNames.includes(r)).flatMap(([,r])=>r));return(r,l)=>e.forbidden?(v(),$("div",_6,[L(u(Vt),{size:20,class:"mt-px shrink-0","aria-hidden":"true"}),O("div",x6,[O("p",w6,P(e.forbidden),1),(v(!0),$(xe,null,Be(a.value,(o,s)=>(v(),$("p",{key:s,class:"text-[13px] [overflow-wrap:anywhere]"},P(o),1))),128))])])):n.value>0?(v(),$("div",k6,[L(u(Vt),{size:20,class:"mt-px shrink-0","aria-hidden":"true"}),O("div",$6,[O("p",null,[O("strong",null,P(u(D)("backend::lang.form.error_title")),1),Se(" "+P(u(Er)("backend::lang.form.error_fields",n.value)),1)]),(v(!0),$(xe,null,Be(a.value,(o,s)=>(v(),$("p",{key:s,class:"text-[13px]"},P(o),1))),128))])])):re("",!0)}}),C6=new Set(["readonly","placeholder","maxlength","minlength","min","max","step","autocomplete","spellcheck","pattern"]);function Nr(e){const t={};for(const[n,a]of Object.entries(e.attributes??{})){const r=n.toLowerCase();!C6.has(r)||a===null||a===!1||(t[r]=a)}return t}function $n(e){return["w-full rounded-control border bg-surface px-3.5 text-text transition-colors duration-150 ease-out",e?"border-danger":"border-border-strong"].join(" ")}function Gc(e){return typeof e=="string"?e!==""&&e!=="0"&&e.toLowerCase()!=="false":!!e}function xy(e,t){return typeof e=="number"?t?1:0:t}function wy(e,t){const n={};if(t===null||typeof t!="object"||Array.isArray(t))return n;const a=t;for(const r of e.permissionOptions??[]){const l=Number(a[r.code]);(l===1||e.mode==="radio"&&l===-1)&&(n[r.code]=l)}return n}const S6={class:"flex min-w-0 flex-col"},A6=["for"],E6={key:0,class:"text-danger","aria-hidden":"true"},M6=["id"],D6=["id","name","checked","aria-invalid","aria-describedby"],O6=Q({__name:"CheckboxField",props:{field:{},modelValue:{},controlId:{},invalid:{type:Boolean},describedBy:{},labels:{},source:{},recordId:{}},emits:["update:modelValue"],setup(e,{emit:t}){const n=e,a=t,r=x(()=>Gc(n.modelValue));function l(o){a("update:modelValue",xy(n.modelValue,o.target.checked))}return(o,s)=>(v(),$("div",{class:ke([e.invalid?"border-danger":"border-border","flex items-center justify-between gap-4 rounded-inner border px-4 py-3.5"]),"data-toggle-card":""},[O("div",S6,[O("label",{for:e.controlId,class:"font-semibold"},[Se(P(e.field.label||e.field.name),1),e.field.required?(v(),$("span",E6," *")):re("",!0)],8,A6),e.field.comment?(v(),$("p",{key:0,id:`${e.controlId}-comment`,class:"text-[13px] text-muted"},P(e.field.comment),9,M6)):re("",!0)]),O("input",{id:e.controlId,type:"checkbox",name:e.field.name,checked:r.value,"aria-invalid":e.invalid?"true":void 0,"aria-describedby":e.describedBy||void 0,class:"size-5 shrink-0 rounded-[6px] accent-primary",onChange:l},null,40,D6)],2))}});function P6(e){return e==="date"||e==="time"?e:"datetime"}function Tt(e,t=2){return String(e).padStart(t,"0")}const q6=/(Z|[+-]\d{2}:?\d{2})$/i;function T6(e,t,n=!1){if(typeof t!="string"||t.trim()==="")return null;const a=t.trim();try{if(e==="date")return tm(a.slice(0,10));if(e==="time"){const l=/(\d{2}:\d{2}(:\d{2})?)/.exec(a.includes("T")?a.slice(a.indexOf("T")):a);return l?x2(l[1]):null}const r=q6.test(a)?a.replace(" ","T"):`${a.replace(" ","T")}Z`;return n?xn(qf(r,"UTC")):qf(r,on())}catch{return null}}function Ui(e){return`${Tt(e.year,4)}-${Tt(e.month)}-${Tt(e.day)}`}function Hi(e){return`${Tt(e.hour)}:${Tt(e.minute)}:${Tt(e.second)}`}function _p(e,t,n=!1){if(!t)return null;if(e==="time")return"hour"in t?Hi(t):null;if(!("year"in t))return null;if(e==="date")return Ui(t);if(n){const l=t instanceof Kn?xn(t):t,o="hour"in l?Hi(l):"00:00:00";return`${Ui(l)}T${o}Z`}const a=t instanceof Kn?t:vc(t instanceof tt?xn(t):t,on()),r=Is(a,"UTC");return`${Ui(r)}T${Hi(r)}Z`}const R6={date:"YYYY-MM-DD",datetime:"YYYY-MM-DD HH:mm",time:"HH:mm"},I6=/\[([^\]]*)\]|YYYY|YY|MMMM|MMM|MM|M|dddd|ddd|DD|D|HH|H|hh|h|mm|ss|A|a/g;function B6(e){return"year"in e?new tt(e.year,e.month,e.day):null}function Ki(e,t,n,a){return new Qt(e,{...n,timeZone:"UTC"}).formatToParts(t.toDate("UTC")).find(l=>l.type===a)?.value??""}function F6(e,t,n,a){if(!e)return"";const r=n||R6[t],l=B6(e),o="hour"in e?e:null,s=/D/.test(r.replace(/\[[^\]]*\]/g,""));return r.replace(I6,(i,c)=>{if(c!==void 0)return c;switch(i){case"YYYY":return l?Tt(l.year,4):"";case"YY":return l?Tt(l.year%100):"";case"MMMM":case"MMM":{if(!l)return"";const d=i==="MMMM"?"long":"short";return s?Ki(a,l,{day:"numeric",month:d},"month"):Ki(a,l,{month:d},"month")}case"MM":return l?Tt(l.month):"";case"M":return l?String(l.month):"";case"dddd":case"ddd":return l?Ki(a,l,{weekday:i==="dddd"?"long":"short"},"weekday"):"";case"DD":return l?Tt(l.day):"";case"D":return l?String(l.day):"";case"HH":return o?Tt(o.hour):"";case"H":return o?String(o.hour):"";case"hh":return o?Tt(o.hour%12||12):"";case"h":return o?String(o.hour%12||12):"";case"mm":return o?Tt(o.minute):"";case"ss":return o?Tt(o.second):"";case"A":return o?o.hour<12?"AM":"PM":"";case"a":return o?o.hour<12?"am":"pm":"";default:return i}})}const N6=new tt(2026,10,4);function V6(e,t){if(typeof t=="number"&&Number.isInteger(t)&&t>=0&&t<=6)return t;try{return(7-Rs(N6,e))%7}catch{return 1}}function xp(e){if(e)try{return tm(e.slice(0,10))}catch{return}}function L6(e,t=zl(on())){const n=xp(e.minDate),a=xp(e.maxDate);if(n||a)return{min:n,max:a};const r=e.yearRange??[];return r.length===1&&typeof r[0]=="number"?{min:new tt(t.year-r[0],1,1),max:new tt(t.year+r[0],12,31)}:r.length===2&&typeof r[0]=="number"&&typeof r[1]=="number"?{min:new tt(r[0],1,1),max:new tt(r[1],12,31)}:{}}function Nu(e,t,n,a){if(!e||t==="time")return;if(t==="date")return e;const r=new ya(e.year,e.month,e.day,a?23:0,a?59:0,a?59:0);return n?r:Is(vc(r,"UTC"),on())}function j6(e,t){const n=zl(on());return Nu(n,e==="time"?"datetime":e,t,!1)??n}const z6=["id","aria-describedby"],U6={key:0},H6={key:1,class:"text-muted","data-empty":""},K6=["aria-label"],W6={class:"flex size-8 shrink-0 items-center justify-center text-muted","aria-hidden":"true"},G6=["data-mode"],Y6=["aria-label"],J6={key:0,"data-datepicker-time":"",class:"mt-3 flex items-center gap-2 border-t border-border pt-3"},Jr="flex size-8 shrink-0 items-center justify-center rounded-pager text-muted transition-colors duration-150 ease-out hover:bg-hover hover:text-text",Z6=Q({__name:"DatepickerField",props:{field:{},modelValue:{},controlId:{},invalid:{type:Boolean},describedBy:{},labels:{},source:{},recordId:{}},emits:["update:modelValue"],setup(e,{emit:t}){const n=e,a=t,r=x(()=>P6(n.field.mode)),l=x(()=>r.value==="datetime"&&!!n.field.ignoreTimezone),o=x(()=>wl.value||"pl"),s=x(()=>{const oe=n.field.attributes?.readonly;return!!n.field.readOnly||oe!=null&&oe!==!1}),i=x(()=>T6(r.value,n.modelValue,l.value)),c=x(()=>r.value==="time"?null:i.value),d=x(()=>r.value==="time"?i.value:null),f=x(()=>L6(n.field)),p=x(()=>Nu(f.value.min,r.value,l.value,!1)),h=x(()=>Nu(f.value.max,r.value,l.value,!0)),m=j6(r.value,l.value),b=x(()=>V6(o.value,n.field.firstDay)),g=x(()=>n.field.twelveHour?12:24),y=x(()=>r.value==="date"?"day":"minute"),w=x(()=>F6(i.value,r.value,n.field.displayFormat,o.value)),A=x(()=>!n.field.required&&i.value!==null&&!s.value),S=x(()=>{const oe=c.value;return oe?!!p.value&&oe.compare(p.value)<0||!!h.value&&oe.compare(h.value)>0:!1}),R=new Set(["day","month","year","hour","minute","second"]),H=q(null),j=q(!1);function U(){const oe=H.value;if(!oe){j.value=!1;return}const Ce=Array.from(oe.querySelectorAll("[data-reka-date-field-segment], [data-reka-time-field-segment]")).filter(Ee=>R.has(Ee.dataset.rekaDateFieldSegment??Ee.dataset.rekaTimeFieldSegment??"")),ce=Ce.filter(Ee=>!Ee.hasAttribute("data-placeholder")).length;j.value=ce>0&&ce!!n.invalid||S.value||j.value),W=x(()=>_p(r.value,i.value,l.value));function V(oe){const Ce=_p(r.value,oe??null,l.value);k(),!(Ce===W.value&&(Ce!==null||n.modelValue===null))&&a("update:modelValue",Ce)}function B(oe){if(!oe||r.value!=="datetime"){V(oe);return}const Ce=c.value,ce=ne.value,Ee=!Ce||Ce.year!==oe.year||Ce.month!==oe.month||Ce.day!==oe.day,Z=!("hour"in oe)||oe.hour!==ce.hour||oe.minute!==ce.minute;Ee&&Z&&(oe=ee(oe,ce)),M.value=oe,V(oe)}function X(){a("update:modelValue",null),k()}const M=q(null);Fe(c,oe=>{M.value=oe},{immediate:!0});const ne=x(()=>{const oe=M.value??c.value;return oe&&"hour"in oe?new mn(oe.hour,oe.minute):new mn(0,0)});function ee(oe,Ce){return"hour"in oe?oe.set({hour:Ce.hour,minute:Ce.minute,second:0,millisecond:0}):new ya(oe.year,oe.month,oe.day,Ce.hour,Ce.minute)}function ue(oe){if(!oe)return;const Ce=oe instanceof mn?oe:new mn(oe.hour,oe.minute),ce=M.value??c.value??m,Ee=ee(ce,Ce);M.value=Ee,V(Ee)}function ve(oe){return oe.charAt(0).toLocaleUpperCase(o.value)+oe.slice(1)}const ye=x(()=>[$n(I.value),"h-input flex min-w-0 items-center gap-1 pl-3.5 pr-1.5","focus-within:border-primary focus-within:shadow-[0_0_0_3px_var(--c-ring)]","has-[[data-invalid]]:border-danger"]);function be(oe){return oe==="literal"?"text-muted":oe==="timeZoneName"?"ml-2 min-w-0 truncate text-[13px] text-muted":"rounded-[4px] px-0.5 tabular-nums outline-none focus:bg-sel focus:text-text focus-visible:outline-none data-[placeholder]:text-placeholder focus:data-[placeholder]:text-text"}return(oe,Ce)=>s.value?(v(),$("p",{key:0,id:e.controlId,"data-datepicker-readonly":"","aria-describedby":e.describedBy||void 0,class:"flex min-h-input items-center rounded-control border border-border bg-subtle px-3.5 tabular-nums"},[w.value!==""?(v(),$("span",U6,P(w.value),1)):(v(),$("span",H6,"—"))],8,z6)):r.value==="time"?(v(),$("div",{key:1,ref_key:"container",ref:H,"data-datepicker":"","data-mode":"time",class:ke(ye.value),onKeyup:k,onFocusout:k},[L(u(mp),{id:e.controlId,"model-value":d.value,locale:o.value,"hour-cycle":g.value,granularity:"minute",name:e.field.name,required:e.field.required||void 0,"aria-invalid":I.value?"true":void 0,"aria-describedby":e.describedBy||void 0,class:"flex min-w-0 flex-1 items-center","onUpdate:modelValue":V},{default:T(({segments:ce})=>[(v(!0),$(xe,null,Be(ce,Ee=>(v(),F(u(yp),{key:Ee.part,part:Ee.part,class:ke(be(Ee.part))},{default:T(()=>[Se(P(Ee.value),1)]),_:2},1032,["part","class"]))),128))]),_:1},8,["id","model-value","locale","hour-cycle","name","required","aria-invalid","aria-describedby"]),A.value?(v(),$("button",{key:0,type:"button","data-action":"clear","aria-label":u(D)("backend::lang.datepicker.clear"),class:ke(Jr),onClick:X},[L(u(Yt),{size:16,"aria-hidden":"true"})],8,K6)):re("",!0),O("span",W6,[L(u(yu),{size:16})])],34)):(v(),F(u(m4),{key:2,id:e.controlId,"model-value":c.value,"default-placeholder":u(m),locale:o.value,granularity:y.value,"hour-cycle":g.value,"hide-time-zone":r.value!=="datetime"||l.value,"min-value":p.value,"max-value":h.value,"week-starts-on":b.value,name:e.field.name,required:e.field.required||void 0,"close-on-select":r.value==="date","prevent-deselect":"","onUpdate:modelValue":B},{default:T(()=>[O("div",{ref_key:"container",ref:H,"data-datepicker":"","data-mode":r.value,class:ke(ye.value),onKeyup:k,onFocusout:k},[L(u(R4),{"aria-invalid":I.value?"true":void 0,"aria-describedby":e.describedBy||void 0,class:"flex min-w-0 flex-1 items-center overflow-hidden"},{default:T(({segments:ce})=>[(v(!0),$(xe,null,Be(ce,Ee=>(v(),F(u(J4),{key:Ee.part,part:Ee.part,class:ke(be(Ee.part))},{default:T(()=>[Se(P(Ee.value),1)]),_:2},1032,["part","class"]))),128))]),_:1},8,["aria-invalid","aria-describedby"]),A.value?(v(),$("button",{key:0,type:"button","data-action":"clear","aria-label":u(D)("backend::lang.datepicker.clear"),class:ke(Jr),onClick:X},[L(u(Yt),{size:16,"aria-hidden":"true"})],8,Y6)):re("",!0),L(u(rA),{"data-action":"open-calendar","aria-label":u(D)("backend::lang.datepicker.open_calendar"),class:ke(Jr)},{default:T(()=>[L(u(xv),{size:16,"aria-hidden":"true"})]),_:1},8,["aria-label"])],42,G6),L(u(q4),{"data-datepicker-calendar":"","side-offset":4,align:"end",class:"z-50 w-[284px] rounded-inner border border-border bg-surface p-4 text-text shadow-menu"},{default:T(()=>[L(u(g4),null,{default:T(({weekDays:ce,grid:Ee})=>[L(u(K4),{class:"flex h-9 items-center justify-between"},{default:T(()=>[L(u(eA),{"aria-label":u(D)("backend::lang.datepicker.prev_month"),class:ke(Jr)},{default:T(()=>[L(u(Es),{size:16,"aria-hidden":"true"})]),_:1},8,["aria-label"]),L(u(G4),{class:"font-semibold"},{default:T(({headingValue:Z})=>[Se(P(ve(Z)),1)]),_:1}),L(u(Q4),{"aria-label":u(D)("backend::lang.datepicker.next_month"),class:ke(Jr)},{default:T(()=>[L(u(Vl),{size:16,"aria-hidden":"true"})]),_:1},8,["aria-label"])]),_:1}),(v(!0),$(xe,null,Be(Ee,Z=>(v(),F(u(B4),{key:Z.value.toString(),class:"mt-2 w-full border-collapse select-none"},{default:T(()=>[L(u(L4),null,{default:T(()=>[L(u(vp),{class:"flex"},{default:T(()=>[(v(!0),$(xe,null,Be(ce,K=>(v(),F(u(U4),{key:K,class:"flex h-9 w-9 items-center justify-center text-[13px] font-normal text-muted"},{default:T(()=>[Se(P(K),1)]),_:2},1024))),128))]),_:2},1024)]),_:2},1024),L(u(N4),null,{default:T(()=>[(v(!0),$(xe,null,Be(Z.rows,(K,te)=>(v(),F(u(vp),{key:`week-${te}`,class:"flex"},{default:T(()=>[(v(!0),$(xe,null,Be(K,ie=>(v(),F(u(_4),{key:ie.toString(),date:ie,class:"p-0"},{default:T(()=>[L(u(w4),{day:ie,month:Z.value,class:"flex size-9 items-center justify-center rounded-pager tabular-nums text-text transition-colors duration-150 ease-out hover:bg-hover data-[outside-view]:text-placeholder data-[today]:font-semibold data-[today]:shadow-[inset_0_0_0_1px_var(--c-border-strong)] data-[selected]:bg-primary data-[selected]:font-semibold data-[selected]:text-on-primary data-[disabled]:cursor-not-allowed data-[disabled]:text-placeholder data-[disabled]:opacity-40 data-[disabled]:hover:bg-transparent data-[unavailable]:cursor-not-allowed data-[unavailable]:opacity-40"},null,8,["day","month"])]),_:2},1032,["date"]))),128))]),_:2},1024))),128))]),_:2},1024)]),_:2},1024))),128))]),_:1}),r.value==="datetime"?(v(),$("div",J6,[L(u(yu),{size:16,class:"shrink-0 text-muted","aria-hidden":"true"}),L(u(mp),{"model-value":ne.value,locale:o.value,"hour-cycle":g.value,granularity:"minute","hide-time-zone":"",class:"flex min-w-0 items-center","onUpdate:modelValue":ue},{default:T(({segments:ce})=>[(v(!0),$(xe,null,Be(ce,Ee=>(v(),F(u(yp),{key:Ee.part,part:Ee.part,class:ke(be(Ee.part))},{default:T(()=>[Se(P(Ee.value),1)]),_:2},1032,["part","class"]))),128))]),_:1},8,["model-value","locale","hour-cycle"])])):re("",!0)]),_:1})]),_:1},8,["id","model-value","default-placeholder","locale","granularity","hour-cycle","hide-time-zone","min-value","max-value","week-starts-on","name","required","close-on-select"]))}}),Q6={class:"relative"},X6=["id","name","value","required","aria-required","aria-invalid","aria-describedby"],eD=["value"],mo="empty",yo="placeholder",tD=Q({__name:"DropdownField",props:{field:{},modelValue:{},controlId:{},invalid:{type:Boolean},describedBy:{},labels:{},source:{},recordId:{}},emits:["update:modelValue"],setup(e,{emit:t}){const n=e,a=t,r=x(()=>n.field.options??[]);function l(c,d){return c==null||d===null||d===void 0?c===d||c==null&&d==null:String(c)===String(d)}const o=x(()=>{const c=r.value.findIndex(d=>l(d.value,n.modelValue));return c>=0?String(c):n.field.emptyOption!==void 0&&(n.modelValue===null||n.modelValue===void 0||n.modelValue==="")?mo:yo}),s=x(()=>o.value===mo||o.value===yo);function i(c){const d=c.target.value;if(d===mo){a("update:modelValue",null);return}const f=r.value[Number(d)];f&&a("update:modelValue",f.value)}return(c,d)=>(v(),$("div",Q6,[O("select",{id:e.controlId,name:e.field.name,value:o.value,required:e.field.required||void 0,"aria-required":e.field.required?"true":void 0,"aria-invalid":e.invalid?"true":void 0,"aria-describedby":e.describedBy||void 0,class:ke([[u($n)(e.invalid),s.value?"text-muted":""],"h-input appearance-none pr-10"]),onChange:i},[e.field.emptyOption!==void 0?(v(),$("option",{key:0,value:mo,class:"text-muted"},P(e.field.emptyOption),1)):re("",!0),o.value===yo?(v(),$("option",{key:1,value:yo,disabled:""},P(u(D)("backend::lang.form.select_placeholder")),1)):re("",!0),(v(!0),$(xe,null,Be(r.value,(f,p)=>(v(),$("option",{key:p,value:String(p),class:"text-text"},P(f.label),9,eD))),128))],42,X6),L(u(Nl),{size:16,class:"pointer-events-none absolute top-1/2 right-3.5 -translate-y-1/2 text-muted","aria-hidden":"true"})]))}}),Yc=Symbol("summer.form.values"),Jc=Symbol("summer.form.patch"),ky=Symbol("summer.form.locale"),ts=Symbol("summer.form.enabledLocales"),$y=Symbol("summer.form.assets");function Zc(){const e=q(0);return{activeUploads:e,beginUpload(){e.value++;let t=!1;return()=>{t||(t=!0,e.value>0&&e.value--)}}}}const Vr=Symbol("summer.form.session"),wp="summer-action",nD="summer-result",aD=5e3,rD={class:"flex items-start gap-3"},lD={class:"flex min-w-0 flex-1 flex-col gap-1"},oD={key:0,class:"flex items-center gap-4"},sD=["src"],iD={key:1,class:"flex size-16 shrink-0 items-center justify-center rounded-inner bg-subtle","aria-hidden":"true"},uD=["title"],cD={class:"flex flex-col gap-1.5"},dD=["for"],fD=["id","disabled","aria-invalid","aria-describedby"],pD=["id"],hD={class:"flex flex-col gap-1.5"},vD=["for"],mD=["id","disabled","aria-invalid","aria-describedby"],yD=["id"],gD={class:"flex gap-2.5"},bD=["disabled"],_D=["disabled"],xD=Q({__name:"FileCaptionModal",props:{open:{type:Boolean},file:{},routes:{},preview:{},idPrefix:{}},emits:["update:open","saved","closed"],setup(e,{emit:t}){const n=e,a=t,r=q(""),l=q(""),o=q({}),s=q(!1),i=Ja();function c(g){const y={};for(const[w,A]of Object.entries(g??{})){const S=(Array.isArray(A)?A:[A]).filter(R=>typeof R=="string"&&R!=="");S.length>0&&(y[w]=S)}return y}const d=x(()=>`${n.idPrefix}-caption-title`),f=x(()=>`${n.idPrefix}-caption-description`),p=x(()=>!!n.file&&(r.value!==n.file.title||l.value!==n.file.description));Fe(()=>n.open,g=>{g&&n.file&&(r.value=n.file.title??"",l.value=n.file.description??"",o.value={},s.value=!1)},{immediate:!0});async function h(g){if(g){a("update:open",!0);return}s.value||p.value&&!await i.ask({message:D("backend::lang.form.unsaved_confirm"),confirmLabel:D("backend::lang.form.discard"),danger:!0})||a("update:open",!1)}async function m(){if(!(s.value||!n.file||!n.routes)){s.value=!0;try{const g=await n.routes.update(n.file.id,{title:r.value,description:l.value});if(g.data){o.value={},a("saved",g.data),a("update:open",!1),Te(D("backend::lang.fileupload.details_saved"));return}if(g.status===422){o.value=c(g.error?.details),Object.keys(o.value).length===0&&(o.value={title:[gy(g.error)||D("backend::lang.form.error_generic")]});return}Te(g.error?.message||D("backend::lang.form.error_generic"),"danger")}finally{s.value=!1}}}function b(g){g.preventDefault(),a("closed")}return(g,y)=>(v(),$(xe,null,[L(u(Hl),{open:e.open,"onUpdate:open":h},{default:T(()=>[L(u(Vs),null,{default:T(()=>[L(u(Wl),{"data-dialog-overlay":"",class:"fixed inset-0 z-40 bg-overlay"}),L(u(Kl),{"data-caption-modal":"","data-dialog-content":"","aria-modal":"true",class:"fixed top-1/2 left-1/2 z-50 flex max-h-[calc(100vh-32px)] w-[calc(100%-32px)] max-w-[560px] -translate-x-1/2 -translate-y-1/2 flex-col gap-4 overflow-y-auto rounded-modal bg-surface p-6 text-text shadow-pop",onCloseAutoFocus:b},{default:T(()=>[O("div",rD,[O("div",lD,[L(u(Gl),{class:"text-[20px] font-bold tracking-[-0.01em]"},{default:T(()=>[Se(P(u(D)("backend::lang.fileupload.attachment")),1)]),_:1}),L(u(Al),{class:"text-muted"},{default:T(()=>[Se(P(u(D)("backend::lang.fileupload.help")),1)]),_:1})]),L(u(Pr),{"data-action":"close","aria-label":u(D)("backend::lang.form.close"),disabled:s.value,class:"flex size-[34px] shrink-0 items-center justify-center rounded-tab bg-subtle text-muted hover:bg-hover hover:text-text"},{default:T(()=>[L(u(Yt),{size:16,"aria-hidden":"true"})]),_:1},8,["aria-label","disabled"])]),e.file?(v(),$("div",oD,[e.preview?(v(),$("img",{key:0,src:e.preview,alt:"",class:"size-16 shrink-0 rounded-inner object-cover"},null,8,sD)):(v(),$("span",iD,[L(u(pr),{size:16,class:"text-muted"})])),O("span",{class:"min-w-0 truncate text-[13px] text-muted",title:e.file.file_name},P(e.file.file_name),9,uD)])):re("",!0),O("form",{class:"flex flex-col gap-4",novalidate:"",onSubmit:ut(m,["prevent"])},[O("div",cD,[O("label",{for:d.value,class:"font-semibold"},P(u(D)("backend::lang.fileupload.title_label")),9,dD),Va(O("input",{id:d.value,"onUpdate:modelValue":y[0]||(y[0]=w=>r.value=w),type:"text","data-caption-title":"",disabled:s.value,"aria-invalid":o.value.title?"true":void 0,"aria-describedby":o.value.title?`${d.value}-error`:void 0,class:ke([u($n)(!!o.value.title),"h-input"])},null,10,fD),[[No,r.value]]),o.value.title?(v(),$("p",{key:0,id:`${d.value}-error`,class:"flex items-center gap-1.5 text-[13px] text-danger"},[L(u(Vt),{size:14,class:"shrink-0","aria-hidden":"true"}),O("span",null,P(o.value.title.join(" ")),1)],8,pD)):re("",!0)]),O("div",hD,[O("label",{for:f.value,class:"font-semibold"},P(u(D)("backend::lang.fileupload.description_label")),9,vD),Va(O("textarea",{id:f.value,"onUpdate:modelValue":y[1]||(y[1]=w=>l.value=w),rows:"3","data-caption-description":"",disabled:s.value,"aria-invalid":o.value.description?"true":void 0,"aria-describedby":o.value.description?`${f.value}-error`:void 0,class:ke([u($n)(!!o.value.description),"min-h-input resize-y py-2.5"])},null,10,mD),[[No,l.value]]),o.value.description?(v(),$("p",{key:0,id:`${f.value}-error`,class:"flex items-center gap-1.5 text-[13px] text-danger"},[L(u(Vt),{size:14,class:"shrink-0","aria-hidden":"true"}),O("span",null,P(o.value.description.join(" ")),1)],8,yD)):re("",!0)]),O("div",gD,[O("button",{type:"button","data-action":"cancel",disabled:s.value,class:"inline-flex h-button flex-1 items-center justify-center rounded-control border border-border-strong bg-surface font-semibold hover:bg-hover disabled:cursor-not-allowed disabled:opacity-60",onClick:y[2]||(y[2]=w=>h(!1))},P(u(D)("backend::lang.form.cancel")),9,bD),O("button",{type:"submit","data-action":"save-caption",disabled:s.value,class:"inline-flex h-button flex-1 items-center justify-center rounded-control bg-primary font-semibold text-on-primary hover:opacity-90 disabled:cursor-not-allowed disabled:opacity-60"},P(s.value?u(D)("backend::lang.form.saving"):u(D)("backend::lang.fileupload.details_submit")),9,_D)])],32)]),_:1})]),_:1})]),_:1},8,["open"]),L(Ya,{open:u(i).request.value!==null,message:u(i).request.value?.message??"","confirm-label":u(i).request.value?.confirmLabel,danger:u(i).request.value?.danger,onConfirm:u(i).confirm,onCancel:u(i).cancel},null,8,["open","message","confirm-label","danger","onConfirm","onCancel"])],64))}}),wD=["id","data-field-name","aria-labelledby","aria-describedby","aria-busy"],kD={key:0,"data-fileupload-loading":"",class:"h-[112px] rounded-control bg-skel","aria-hidden":"true"},$D={key:1,role:"alert","data-fileupload-failed":"",class:"rounded-inner bg-danger-soft px-[18px] py-3.5 text-danger"},CD={key:0,"data-fileupload-empty":"",class:"flex min-h-input items-center rounded-control border border-border bg-subtle px-3.5 text-muted"},SD={key:1,"data-fileupload-grid":"",class:"grid grid-cols-[repeat(auto-fill,minmax(160px,1fr))] gap-4"},AD=["data-file-item","data-state","onDragover","onDrop"],ED={class:"relative flex aspect-square items-center justify-center bg-subtle"},MD=["href","aria-label"],DD=["src","alt","onError"],OD=["aria-label","onClick"],PD=["src","alt"],qD={key:2,"data-preview-unavailable":"",class:"flex flex-col items-center gap-2 text-[13px] text-muted"},TD=["data-handle","aria-label","onKeydown","onDragstart"],RD={key:5,class:"absolute top-2 right-2 flex gap-1"},ID=["data-caption","aria-label","onClick"],BD=["aria-label","onClick"],FD=["aria-label","onClick"],ND={class:"flex flex-col gap-1 p-2"},VD=["title"],LD={class:"flex items-center gap-2 text-[13px] text-muted tabular-nums"},jD={key:0},zD={key:1},UD={key:2},HD={key:3,"data-unsaved-chip":"",class:"inline-flex h-6 items-center rounded-pill bg-sel px-2 text-[13px] font-semibold text-text"},KD={key:1,"data-file-error":"",class:"text-[13px] text-danger"},WD={class:"sr-only"},GD={key:2,"data-fileupload-single":"",class:"flex flex-col gap-2"},YD=["data-file-item","data-state"],JD=["src","alt","onError"],ZD={key:3,"data-preview-unavailable":"",class:"flex flex-col items-center gap-2 text-[13px] text-muted"},QD={class:"flex min-w-0 flex-1 flex-col gap-1"},XD=["title"],e8={class:"flex items-center gap-2 text-[13px] text-muted tabular-nums"},t8={key:0},n8={key:1},a8={key:2},r8={key:3,"data-unsaved-chip":"",class:"inline-flex h-6 items-center rounded-pill bg-sel px-2 text-[13px] font-semibold text-text"},l8={key:1,"data-file-error":"",class:"text-[13px] text-danger"},o8={class:"sr-only"},s8={key:2,class:"mt-1 flex flex-wrap gap-2"},i8={key:3,"data-fileupload-rows":"",class:"flex flex-col gap-2"},u8=["data-file-item","data-state","onDragover","onDrop"],c8={class:"flex items-center gap-3"},d8=["data-handle","aria-label","onKeydown","onDragstart"],f8={class:"flex size-8 shrink-0 items-center justify-center overflow-hidden rounded-pager bg-subtle"},p8=["src","onError"],h8={class:"flex min-w-0 flex-1 flex-col leading-tight"},v8=["title"],m8=["title"],y8=["title"],g8={class:"flex shrink-0 items-center gap-2 text-[13px] text-muted tabular-nums"},b8={key:0},_8={key:1},x8={key:2},w8={key:3,"data-unsaved-chip":"",class:"inline-flex h-6 items-center rounded-pill bg-sel px-2 text-[13px] font-semibold text-text"},k8={class:"flex shrink-0 items-center gap-1"},$8=["href","aria-label"],C8=["aria-label","onClick"],S8=["data-caption","aria-label","onClick"],A8=["aria-label","onClick"],E8=["aria-label","onClick"],M8={key:1,"data-file-error":"",class:"text-[13px] text-danger"},D8={class:"sr-only"},O8=["aria-describedby"],P8={class:"flex size-10 items-center justify-center rounded-full bg-surface","aria-hidden":"true"},q8={class:"text-text"},T8={key:0,"data-fileupload-limits":"",class:"text-[13px] text-muted tabular-nums"},R8={key:5,"data-fileupload-limits":"",class:"text-[13px] text-muted tabular-nums"},I8={key:6,role:"alert","data-fileupload-too-many":"",class:"flex items-center gap-1.5 text-[13px] text-danger"},B8=["accept","multiple"],F8={class:"sr-only","aria-live":"polite","data-fileupload-live":""},N8=1<<20,V8=400,Wi="inline-flex size-8 items-center justify-center rounded-pager border border-border bg-surface text-muted hover:text-text",L8="inline-flex size-8 items-center justify-center rounded-pager border border-border bg-surface text-muted hover:bg-danger-soft hover:text-danger",or="inline-flex size-8 shrink-0 items-center justify-center rounded-pager text-muted hover:bg-hover hover:text-text",j8=Q({__name:"FileuploadField",props:{field:{},modelValue:{},controlId:{},invalid:{type:Boolean},describedBy:{},labels:{},source:{},recordId:{}},setup(e){const t=e,n=ot(Vr,null),a=["jpg","jpeg","png","gif","webp"],r=["image/jpeg","image/png","image/gif","image/webp"];let l=1;const o=q([]),s=q("loading"),i=q(!1),c=q(0),d=q(""),f=q(null),p=q(null),h=q(null),m=q(null),b=q(null),g=q(!1),y=q({}),w=q(new Set),A=new Set,S=[],R=n?n.routes(t.field.name):null;let H=null,j=null,U=!1,k=null,I=0,W=!1;const V=x(()=>{const N=t.field.attributes?.readonly;return!!t.field.readOnly||N!=null&&N!==!1}),B=x(()=>t.field.multiple===!0),X=x(()=>t.field.mode==="image"),M=x(()=>B.value?t.field.maxFiles:1),ne=x(()=>(n?.recordId??0)!==0),ee=x(()=>o.value.filter(N=>N.state!=="failed")),ue=x(()=>{if(B.value)return o.value;const N=ee.value,we=N[N.length-1];return o.value.filter(z=>z.state==="failed"||z===we)}),ve=x(()=>ue.value.filter(N=>N.state!=="failed").length),ye=x(()=>V.value||s.value!=="ready"?!1:B.value?M.value===void 0||M.value===null||ee.value.lengthB.value&&!V.value&&typeof M.value=="number"&&ee.value.length>=M.value),oe=x(()=>t.field.fileTypes?.length?t.field.fileTypes.map(N=>N.toLowerCase()):X.value&&!t.field.mimeTypes?.length?a:null),Ce=x(()=>(t.field.fileTypes?.length?t.field.fileTypes:t.field.mimeTypes??[]).join(", ")),ce=x(()=>{const N=[];for(const we of t.field.fileTypes??[])N.push(`.${we.toLowerCase()}`);for(const we of t.field.mimeTypes??[])N.push(we.includes("/")?we:`.${we.toLowerCase()}`);return N.length===0&&X.value&&N.push(...r),N.length>0?N.join(","):void 0}),Ee=x(()=>t.field.prompt||D(B.value?"backend::lang.fileupload.default_prompt_many":"backend::lang.fileupload.default_prompt"));function Z(N,we){return new Intl.NumberFormat(wl.value,{minimumFractionDigits:we,maximumFractionDigits:we}).format(N)}function K(N){const we=["B","kB","MB","GB"];let z=N,Ae=0;for(;z>=1e3&&Ae{const N=t.field.maxFilesize;return typeof N=="number"?`${new Intl.NumberFormat(wl.value).format(N)} MB`:""}),ie=x(()=>{const N=[];return Ce.value!==""&&N.push(D("backend::lang.fileupload.limits_types",{types:Ce.value})),te.value!==""&&N.push(D("backend::lang.fileupload.limits_size",{size:te.value})),B.value&&typeof M.value=="number"&&N.push(D("backend::lang.fileupload.limits_count",{current:ee.value.length,max:M.value})),N.join(" · ")});function le(N){const we=N.lastIndexOf(".");return we<0?"":N.slice(we+1).toLowerCase()}function pe(N){const we=t.field.mimeTypes??[];if(we.length===0||N.type==="")return!0;const z=N.type.toLowerCase(),Ae=le(N.name);return we.some(je=>{const Ct=je.toLowerCase();return Ct.includes("/")?Ct.endsWith("/*")?z.startsWith(Ct.slice(0,-1)):z===Ct:Ct===Ae})}function _(N){const we=oe.value;if(we&&!we.includes(le(N.name)))return D("backend::lang.fileupload.wrong_type",{name:N.name,types:we.join(", ")});if(!pe(N))return D("backend::lang.fileupload.wrong_type",{name:N.name,types:Ce.value});const z=t.field.maxFilesize;return typeof z=="number"&&N.size>Math.ceil(z*N8)?D("backend::lang.fileupload.too_large",{name:N.name,size:te.value}):""}function C(N){return en({uid:l++,name:N.file_name,size:N.file_size,state:"done",progress:100,error:"",retryable:!1,file:N,source:null,handle:null,uploadId:""})}function E(){return globalThis.crypto?.randomUUID?.()??`u${Date.now().toString(36)}${Math.random().toString(36).slice(2,10)}`}function J(N,we){return en({uid:l++,name:N.name,size:N.size,state:we===""?"queued":"failed",progress:0,error:we,retryable:!1,file:null,source:Mo(N),handle:null,uploadId:E()})}function Y(N){return o.value.find(we=>we.uid===N)}async function ae(N){if(!R){s.value="failed";return}N&&(s.value="loading");const we=await R.list();if(W)return;if(!we.data){N&&(s.value="failed");return}const z=o.value.filter(Ae=>Ae.state!=="done");for(const Ae of o.value)Ae.state==="done"&&Js(Ae.uid);o.value=[...we.data.map(C),...z],s.value="ready"}function ge(){V.value||f.value?.click()}function me(N){if(N.length===0||V.value)return;if(c.value=0,!B.value)for(const je of[...o.value])je.state!=="failed"&&(je.state!=="done"||je.file?.pending)&&He(je);let we=B.value?typeof M.value=="number"?Math.max(M.value-ee.value.length,0):Number.POSITIVE_INFINITY:1,z=0;const Ae=[];for(const je of N.slice(0,B.value?N.length:1)){const Ct=_(je);if(Ct===""&&we<=0){z++;continue}Ct===""&&we--,Ae.push(J(je,Ct))}o.value=[...o.value,...Ae],c.value=z,$e()}function _e(N){const we=N.target;me(Array.from(we.files??[])),we.value=""}function G(N){return h.value===null&&Array.from(N.dataTransfer?.types??[]).includes("Files")}function de(N){G(N)&&(N.preventDefault(),i.value=!0)}function se(N){G(N)&&(N.preventDefault(),i.value=!1,me(Array.from(N.dataTransfer?.files??[])))}function $e(){if(!R||o.value.some(we=>we.state==="uploading"))return;const N=o.value.find(we=>we.state==="queued");N&&Pe(N)}async function Pe(N){if(!R||!N.source)return;N.state="uploading",N.progress=0,N.error="",N.retryable=!1;const we=new Set(o.value.filter(Ae=>Ae.file).map(Ae=>Ae.file.id)),z=n?.beginUpload();try{const Ae=R.upload(N.source,(Xn,Qa)=>{N.progress=Qa>0?Math.min(100,Math.round(Xn/Qa*100)):0},N.uploadId||void 0);N.handle=Mo(Ae);const je=await Ae.promise;N.handle=null;const Ct=!!Y(N.uid);if(je.ok)!Ct||W?R.remove(je.item.id):(N.state="done",N.progress=100,N.file=je.item,N.name=je.item.file_name,N.size=je.item.file_size,n?.markDirty());else if(je.reason==="aborted"||je.reason==="network"){const Xn=await Ve(we);if(je.reason==="aborted"){for(const Qa of Xn)R.remove(Qa.id);o.value=o.value.filter(Qa=>Qa.uid!==N.uid),Js(N.uid)}else Ct&&Xn[0]&&Xn.length===1?(N.state="done",N.progress=100,N.file=Xn[0],N.name=Xn[0].file_name,N.size=Xn[0].file_size,n?.markDirty()):(N.state="failed",N.error=D("backend::lang.fileupload.upload_failed"),N.retryable=!0)}else if(Ct)switch(N.state="failed",je.reason){case"too_large":N.error=te.value?D("backend::lang.fileupload.too_large",{name:N.name,size:te.value}):je.message||D("backend::lang.fileupload.upload_failed");break;case"invalid":N.error=je.message||D("backend::lang.fileupload.upload_failed");break;default:N.error=je.message||D("backend::lang.fileupload.upload_failed"),N.retryable=je.status>=500}}finally{z?.(),W||$e()}}async function Ve(N){if(!R)return[];const we=await R.list();return we.data?we.data.filter(z=>z.pending&&!N.has(z.id)):[]}function Ke(N){N.state!=="failed"||!N.source||(N.state="queued",N.error="",N.retryable=!1,$e())}async function He(N){const we=o.value.findIndex(Ae=>Ae.uid===N.uid);if(we<0)return;switch(o.value=o.value.filter(Ae=>Ae.uid!==N.uid),Js(N.uid),N.state){case"uploading":N.handle?.abort(),n?.markDirty(),$e();return;case"queued":case"failed":return}if(!R||!N.file)return;n?.markDirty();const z=await R.remove(N.file.id);if(!z.data&&!W){const Ae=[...o.value];Ae.splice(Math.min(we,Ae.length),0,N),o.value=Ae,Te(z.error?.message||D("backend::lang.form.error_generic"),"danger")}}function lt(){return o.value.map(N=>N.uid)}function it(N){const we=new Map(o.value.map(je=>[je.uid,je])),z=N.map(je=>we.get(je)).filter(je=>!!je),Ae=o.value.filter(je=>!N.includes(je.uid));o.value=[...z,...Ae]}function kt(){H!==null&&clearTimeout(H),H=setTimeout(()=>{H=null,sn()},V8)}function qt(){return o.value.filter(N=>N.state==="done"&&N.file).map(N=>N.file.id)}async function sn(){if(!R)return;const N=qt();if(U){k=N;return}const we=j;j=null;const z=++I;U=!0;try{const Ae=await R.reorder(N);if(k)return;!Ae.data&&!W&&z===I&&(we&&it(we),Te(D("backend::lang.fileupload.reorder_failed"),"danger"))}finally{U=!1,k&&(k=null,sn())}}function De(N,we){const z=o.value.findIndex(Ct=>Ct.uid===N);if(z<0||we<0||we>=o.value.length||we===z)return!1;j===null&&(j=lt());const Ae=[...o.value],[je]=Ae.splice(z,1);return Ae.splice(we,0,je),o.value=Ae,d.value=D("backend::lang.fileupload.moved",{name:je.name,position:we+1,total:Ae.length}),kt(),!0}async function Me(N,we){const z=o.value.findIndex(je=>je.uid===we.uid);let Ae;switch(N.key){case"ArrowUp":case"ArrowLeft":Ae=z-1;break;case"ArrowDown":case"ArrowRight":Ae=z+1;break;default:return}N.preventDefault(),De(we.uid,Ae)&&(await We(),p.value?.querySelector(`[data-handle="${we.uid}"]`)?.focus())}function Ie(N,we){h.value=we.uid,N.dataTransfer&&(N.dataTransfer.effectAllowed="move",N.dataTransfer.setData("text/plain",we.name))}function $t(N,we){h.value!==null&&(N.preventDefault(),m.value=we.uid)}function Lr(N,we){h.value!==null&&(N.preventDefault(),De(h.value,o.value.findIndex(z=>z.uid===we.uid)),Ys())}function Ys(){h.value=null,m.value=null}function td(N){const we=N.file?.content_type??N.source?.type??"";return r.includes(we.toLowerCase())}function Sn(N){return!N.file||!td(N)||w.value.has(N.uid)?null:t.field.protected?y.value[N.uid]??null:N.file.thumb_url||N.file.url||null}function nd(){return typeof URL.revokeObjectURL=="function"}function Js(N){const we=y.value[N];if(we!==void 0){nd()&&URL.revokeObjectURL(we);const z={...y.value};delete z[N],y.value=z}A.delete(N)}async function Ty(N){if(!R||!N.file||A.has(N.uid)||typeof URL.createObjectURL!="function")return;A.add(N.uid);const we=await R.thumb(N.file.id);if(!(W||!Y(N.uid)||!A.has(N.uid))){if(!we){w.value=new Set([...w.value,N.uid]);return}y.value={...y.value,[N.uid]:URL.createObjectURL(we)}}}Fe(()=>o.value.map(N=>`${N.uid}:${N.state}`).join(","),()=>{if(t.field.protected)for(const N of o.value)N.state==="done"&&td(N)&&Ty(N)});function Zs(N){w.value=new Set([...w.value,N.uid])}async function ad(N,we){if(!R||!N.file||typeof URL.createObjectURL!="function")return;const z=await R.download(N.file.id);if(!z){Te(D("backend::lang.form.error_generic"),"danger");return}const Ae=URL.createObjectURL(z);S.push(Ae);const je=document.createElement("a");je.href=Ae,je.rel="noopener",we?je.download=N.file.file_name:je.target="_blank",je.click()}function Sa(N){return t.field.useCaption&&N.file?.title?N.file.title:N.name}function Qs(N){return ne.value&&!!N.file?.pending}const eo=x(()=>b.value===null?void 0:Y(b.value));function Xs(N){b.value=N.uid,g.value=!0}function Ry(N){const we=eo.value;we&&(we.file=N)}function Iy(){const N=b.value;b.value=null,N!==null&&p.value?.querySelector(`[data-caption="${N}"]`)?.focus()}const ei=x(()=>{const N=t.field.thumbOptions?.mode;return N==="fit"||N==="auto"?"object-contain":"object-cover"});return mt(()=>{ae(!0)}),n&&Fe(n.revision,()=>{ae(!1)}),Pt(()=>{W=!0,H!==null&&(clearTimeout(H),H=null);for(const N of o.value)N.handle?.abort();if(nd()){for(const N of Object.values(y.value))URL.revokeObjectURL(N);for(const N of S)URL.revokeObjectURL(N)}}),(N,we)=>(v(),$("div",{id:e.controlId,ref_key:"root",ref:p,role:"group","data-fileupload":"","data-field-name":e.field.name,"aria-labelledby":e.field.label?`${e.controlId}-label`:void 0,"aria-describedby":e.describedBy||void 0,"aria-busy":s.value==="loading"?"true":void 0,class:"flex min-w-0 flex-col gap-4"},[s.value==="loading"?(v(),$("span",kD)):s.value==="failed"?(v(),$("p",$D,P(u(D)("backend::lang.fileupload.load_failed")),1)):(v(),$(xe,{key:2},[V.value&&ue.value.length===0?(v(),$("p",CD,P(u(D)("backend::lang.fileupload.empty")),1)):X.value&&B.value&&ue.value.length>0?(v(),$("ul",SD,[(v(!0),$(xe,null,Be(ue.value,z=>(v(),$("li",{key:z.uid,"data-file-item":z.uid,"data-state":z.state,class:ke([[z.state==="failed"?"border-danger":"border-border",h.value===z.uid?"opacity-50":"",m.value===z.uid&&h.value!==z.uid?"border-2 border-dashed border-primary bg-sel":""],"relative overflow-hidden rounded-inner border bg-surface"]),onDragover:Ae=>$t(Ae,z),onDrop:Ae=>Lr(Ae,z)},[O("div",ED,[z.state==="uploading"?(v(),F(u(ko),{key:0,size:20,class:"animate-spin text-muted","aria-hidden":"true"})):z.state==="failed"?(v(),F(u(Vt),{key:1,size:16,class:"text-danger","aria-hidden":"true"})):z.state==="done"?(v(),$(xe,{key:2},[Sn(z)&&!e.field.protected&&z.file?.url?(v(),$("a",{key:0,href:z.file.url,target:"_blank",rel:"noopener",class:"block size-full","aria-label":u(D)("backend::lang.fileupload.open_preview",{name:z.name})},[O("img",{src:Sn(z)??void 0,alt:Sa(z),class:ke([ei.value,"size-full"]),onError:Ae=>Zs(z)},null,42,DD)],8,MD)):Sn(z)?(v(),$("button",{key:1,type:"button",class:"block size-full","aria-label":u(D)("backend::lang.fileupload.open_preview",{name:z.name}),onClick:Ae=>ad(z,!1)},[O("img",{src:Sn(z)??void 0,alt:Sa(z),class:ke([ei.value,"size-full"])},null,10,PD)],8,OD)):w.value.has(z.uid)?(v(),$("span",qD,[L(u(_f),{size:20,"aria-hidden":"true"}),Se(" "+P(u(D)("backend::lang.fileupload.preview_unavailable")),1)])):(v(),F(u(pr),{key:3,size:20,class:"text-muted","aria-hidden":"true"}))],64)):(v(),F(u(pr),{key:3,size:20,class:"text-muted","aria-hidden":"true"})),!V.value&&z.state==="done"?(v(),$("button",{key:4,type:"button",draggable:"true","data-handle":z.uid,"aria-label":u(D)("backend::lang.fileupload.move",{name:z.name}),class:ke([Wi,"absolute top-2 left-2 cursor-grab"]),onKeydown:Ae=>Me(Ae,z),onDragstart:Ae=>Ie(Ae,z),onDragend:Ys},[L(u(bf),{size:16,"aria-hidden":"true"})],40,TD)):re("",!0),V.value?re("",!0):(v(),$("div",RD,[e.field.useCaption&&z.state==="done"?(v(),$("button",{key:0,type:"button","data-caption":z.uid,"aria-label":u(D)("backend::lang.fileupload.edit_details",{name:z.name}),class:ke(Wi),onClick:Ae=>Xs(z)},[L(u(cl),{size:16,"aria-hidden":"true"})],8,ID)):re("",!0),z.state==="failed"&&z.retryable?(v(),$("button",{key:1,type:"button","data-action":"retry","aria-label":u(D)("backend::lang.fileupload.retry"),class:ke(Wi),onClick:Ae=>Ke(z)},[L(u(mi),{size:16,"aria-hidden":"true"})],8,BD)):re("",!0),O("button",{type:"button","data-action":"remove-file","aria-label":z.state==="uploading"||z.state==="queued"?u(D)("backend::lang.fileupload.cancel_upload",{name:z.name}):u(D)("backend::lang.form.remove_item",{name:z.name}),class:ke(L8),onClick:Ae=>He(z)},[L(u(Yt),{size:16,"aria-hidden":"true"})],8,FD)]))]),O("div",ND,[O("span",{class:"truncate text-[13px]",title:Sa(z)},P(Sa(z)),9,VD),O("span",LD,[z.state==="queued"?(v(),$("span",jD,P(u(D)("backend::lang.fileupload.queued")),1)):z.state==="uploading"?(v(),$("span",zD,P(u(D)("backend::lang.fileupload.uploading",{percent:z.progress})),1)):(v(),$("span",UD,P(K(z.size)),1)),Qs(z)?(v(),$("span",HD,P(u(D)("backend::lang.fileupload.unsaved")),1)):re("",!0)]),z.state==="uploading"?(v(),F(u(Vi),{key:0,"model-value":z.progress,max:100,"aria-label":u(D)("backend::lang.fileupload.uploading",{percent:z.progress}),class:"h-1 w-full overflow-hidden rounded-pill bg-subtle"},{default:T(()=>[L(u(Li),{class:"h-full bg-primary",style:Nn({width:`${z.progress}%`})},null,8,["style"])]),_:2},1032,["model-value","aria-label"])):re("",!0),z.state==="failed"?(v(),$("p",KD,[O("span",WD,P(u(D)("backend::lang.fileupload.upload_error"))+": ",1),Se(P(z.error),1)])):re("",!0)])],42,AD))),128))])):X.value&&!B.value&&ue.value.length>0?(v(),$("div",GD,[(v(!0),$(xe,null,Be(ue.value,z=>(v(),$("div",{key:z.uid,"data-file-item":z.uid,"data-state":z.state,class:"flex items-start gap-4"},[O("div",{class:ke([z.state==="failed"?"border-danger":"border-border","flex size-40 shrink-0 items-center justify-center overflow-hidden rounded-inner border bg-subtle"])},[z.state==="uploading"?(v(),F(u(ko),{key:0,size:20,class:"animate-spin text-muted","aria-hidden":"true"})):z.state==="failed"?(v(),F(u(Vt),{key:1,size:16,class:"text-danger","aria-hidden":"true"})):Sn(z)?(v(),$("img",{key:2,src:Sn(z)??void 0,alt:Sa(z),class:ke([ei.value,"size-full"]),onError:Ae=>Zs(z)},null,42,JD)):w.value.has(z.uid)?(v(),$("span",ZD,[L(u(_f),{size:20,"aria-hidden":"true"}),Se(" "+P(u(D)("backend::lang.fileupload.preview_unavailable")),1)])):(v(),F(u(pr),{key:4,size:20,class:"text-muted","aria-hidden":"true"}))],2),O("div",QD,[O("span",{class:"truncate font-semibold",title:Sa(z)},P(Sa(z)),9,XD),O("span",e8,[z.state==="queued"?(v(),$("span",t8,P(u(D)("backend::lang.fileupload.queued")),1)):z.state==="uploading"?(v(),$("span",n8,P(u(D)("backend::lang.fileupload.uploading",{percent:z.progress})),1)):(v(),$("span",a8,P(K(z.size)),1)),Qs(z)?(v(),$("span",r8,P(u(D)("backend::lang.fileupload.unsaved")),1)):re("",!0)]),z.state==="uploading"?(v(),F(u(Vi),{key:0,"model-value":z.progress,max:100,"aria-label":u(D)("backend::lang.fileupload.uploading",{percent:z.progress}),class:"h-1 w-full overflow-hidden rounded-pill bg-subtle"},{default:T(()=>[L(u(Li),{class:"h-full bg-primary",style:Nn({width:`${z.progress}%`})},null,8,["style"])]),_:2},1032,["model-value","aria-label"])):re("",!0),z.state==="failed"?(v(),$("p",l8,[O("span",o8,P(u(D)("backend::lang.fileupload.upload_error"))+": ",1),Se(P(z.error),1)])):re("",!0),V.value?re("",!0):(v(),$("div",s8,[z.state!=="failed"?(v(),F(et,{key:0,size:"sm",variant:"outline","data-action":"replace-file",icon:u($o),onClick:ge},{default:T(()=>[Se(P(u(D)("backend::lang.fileupload.replace_file")),1)]),_:1},8,["icon"])):re("",!0),z.state==="failed"&&z.retryable?(v(),F(et,{key:1,size:"sm",variant:"outline","data-action":"retry",icon:u(mi),onClick:Ae=>Ke(z)},{default:T(()=>[Se(P(u(D)("backend::lang.fileupload.retry")),1)]),_:1},8,["icon","onClick"])):re("",!0),e.field.useCaption&&z.state==="done"?(v(),F(et,{key:2,size:"sm",variant:"outline","data-caption":z.uid,icon:u(cl),onClick:Ae=>Xs(z)},{default:T(()=>[Se(P(u(D)("backend::lang.fileupload.details_submit")),1)]),_:1},8,["data-caption","icon","onClick"])):re("",!0),L(et,{size:"sm",variant:"danger","data-action":"remove-file",icon:u(Yt),onClick:Ae=>He(z)},{default:T(()=>[Se(P(u(D)("backend::lang.fileupload.remove_file")),1)]),_:1},8,["icon","onClick"])]))])],8,YD))),128))])):ue.value.length>0?(v(),$("ul",i8,[(v(!0),$(xe,null,Be(ue.value,z=>(v(),$("li",{key:z.uid,"data-file-item":z.uid,"data-state":z.state,class:ke([[z.state==="failed"?"border-danger":"border-border",h.value===z.uid?"opacity-50":"",m.value===z.uid&&h.value!==z.uid?"border-2 border-dashed border-primary bg-sel":""],"flex min-h-14 flex-col justify-center gap-1 rounded-inner border bg-surface px-3 py-2"]),onDragover:Ae=>$t(Ae,z),onDrop:Ae=>Lr(Ae,z)},[O("div",c8,[B.value&&!V.value&&z.state==="done"?(v(),$("button",{key:0,type:"button",draggable:"true","data-handle":z.uid,"aria-label":u(D)("backend::lang.fileupload.move",{name:z.name}),class:ke([or,"cursor-grab"]),onKeydown:Ae=>Me(Ae,z),onDragstart:Ae=>Ie(Ae,z),onDragend:Ys},[L(u(bf),{size:16,"aria-hidden":"true"})],40,d8)):re("",!0),O("span",f8,[z.state==="uploading"?(v(),F(u(ko),{key:0,size:16,class:"animate-spin text-muted","aria-hidden":"true"})):z.state==="failed"?(v(),F(u(Vt),{key:1,size:16,class:"text-danger","aria-hidden":"true"})):Sn(z)?(v(),$("img",{key:2,src:Sn(z)??void 0,alt:"",class:"size-8 object-cover",onError:Ae=>Zs(z)},null,40,p8)):(v(),F(u(pr),{key:3,size:16,class:"text-muted","aria-hidden":"true"}))]),O("span",h8,[e.field.useCaption&&z.file?.title?(v(),$(xe,{key:0},[O("span",{class:"truncate font-semibold",title:z.file.title},P(z.file.title),9,v8),O("span",{class:"truncate text-[13px] text-muted",title:z.name},P(z.name),9,m8)],64)):(v(),$("span",{key:1,class:"truncate",title:z.name},P(z.name),9,y8))]),O("span",g8,[z.state==="queued"?(v(),$("span",b8,P(u(D)("backend::lang.fileupload.queued")),1)):z.state==="uploading"?(v(),$("span",_8,P(u(D)("backend::lang.fileupload.uploading",{percent:z.progress})),1)):(v(),$("span",x8,P(K(z.size)),1)),Qs(z)?(v(),$("span",w8,P(u(D)("backend::lang.fileupload.unsaved")),1)):re("",!0)]),!B.value&&!V.value&&z.state!=="failed"?(v(),F(et,{key:1,size:"sm",variant:"outline","data-action":"replace-file",icon:u($o),onClick:ge},{default:T(()=>[Se(P(u(D)("backend::lang.fileupload.replace_file")),1)]),_:1},8,["icon"])):re("",!0),O("span",k8,[z.state==="done"&&z.file?(v(),$(xe,{key:0},[!e.field.protected&&z.file.url?(v(),$("a",{key:0,href:z.file.url,download:"",target:"_blank",rel:"noopener","aria-label":u(D)("backend::lang.fileupload.download",{name:z.name}),class:ke(or)},[L(u(gu),{size:16,"aria-hidden":"true"})],8,$8)):e.field.protected?(v(),$("button",{key:1,type:"button","data-action":"download","aria-label":u(D)("backend::lang.fileupload.download",{name:z.name}),class:ke(or),onClick:Ae=>ad(z,!0)},[L(u(gu),{size:16,"aria-hidden":"true"})],8,C8)):re("",!0),e.field.useCaption&&!V.value?(v(),$("button",{key:2,type:"button","data-caption":z.uid,"aria-label":u(D)("backend::lang.fileupload.edit_details",{name:z.name}),class:ke(or),onClick:Ae=>Xs(z)},[L(u(cl),{size:16,"aria-hidden":"true"})],8,S8)):re("",!0)],64)):re("",!0),z.state==="failed"&&z.retryable?(v(),$("button",{key:1,type:"button","data-action":"retry","aria-label":u(D)("backend::lang.fileupload.retry"),class:ke(or),onClick:Ae=>Ke(z)},[L(u(mi),{size:16,"aria-hidden":"true"})],8,A8)):re("",!0),V.value?re("",!0):(v(),$("button",{key:2,type:"button","data-action":"remove-file","aria-label":z.state==="uploading"||z.state==="queued"?u(D)("backend::lang.fileupload.cancel_upload",{name:z.name}):u(D)("backend::lang.form.remove_item",{name:z.name}),class:ke([or,"hover:bg-danger-soft hover:text-danger"]),onClick:Ae=>He(z)},[L(u(Yt),{size:16,"aria-hidden":"true"})],8,E8))])]),z.state==="uploading"?(v(),F(u(Vi),{key:0,"model-value":z.progress,max:100,"aria-label":u(D)("backend::lang.fileupload.uploading",{percent:z.progress}),class:"h-1 w-full overflow-hidden rounded-pill bg-subtle"},{default:T(()=>[L(u(Li),{class:"h-full bg-primary",style:Nn({width:`${z.progress}%`})},null,8,["style"])]),_:2},1032,["model-value","aria-label"])):re("",!0),z.state==="failed"?(v(),$("p",M8,[O("span",D8,P(u(D)("backend::lang.fileupload.upload_error"))+": ",1),Se(P(z.error),1)])):re("",!0)],42,u8))),128))])):re("",!0),ye.value?(v(),$("button",{key:4,type:"button","data-fileupload-dropzone":"","aria-describedby":e.describedBy||void 0,class:ke([[i.value?"border-solid border-primary bg-sel":e.invalid?"border-dashed border-danger bg-subtle":"border-dashed border-border-strong bg-subtle"],"flex min-h-[112px] w-full flex-col items-center justify-center gap-2 rounded-control border-[1.5px] px-4 py-6 text-center transition-colors duration-150 ease-out hover:bg-hover"]),onClick:ge,onDragover:de,onDragleave:we[0]||(we[0]=z=>i.value=!1),onDrop:se},[O("span",P8,[L(u($o),{size:20,class:"text-muted"})]),O("span",q8,P(Ee.value),1),ie.value!==""?(v(),$("span",T8,P(ie.value),1)):re("",!0)],42,O8)):be.value&&ie.value!==""?(v(),$("p",R8,P(ie.value),1)):re("",!0),c.value>0?(v(),$("p",I8,[L(u(Vt),{size:14,class:"shrink-0","aria-hidden":"true"}),O("span",null,P(u(Er)("backend::lang.fileupload.too_many",c.value,{max:M.value??0})),1)])):re("",!0)],64)),O("input",{ref_key:"input",ref:f,type:"file",hidden:"",tabindex:"-1","data-fileupload-input":"",accept:ce.value,multiple:B.value||void 0,onChange:_e},null,40,B8),O("p",F8,P(d.value),1),e.field.useCaption?(v(),F(xD,{key:3,open:g.value,"onUpdate:open":we[1]||(we[1]=z=>g.value=z),file:eo.value?.file??null,routes:u(R),preview:eo.value?Sn(eo.value):null,"id-prefix":e.controlId,onSaved:Ry,onClosed:Iy},null,8,["open","file","routes","preview","id-prefix"])):re("",!0)],8,wD))}}),z8=["id","name","value","required","aria-required","aria-invalid","aria-describedby"],U8=Q({__name:"NumberField",props:{field:{},modelValue:{},controlId:{},invalid:{type:Boolean},describedBy:{},labels:{},source:{},recordId:{}},emits:["update:modelValue"],setup(e,{emit:t}){const n=e,a=t,r=x(()=>n.modelValue===null||n.modelValue===void 0?"":String(n.modelValue)),l=x(()=>Nr(n.field));function o(s){const i=s.target.value.trim();if(i===""){a("update:modelValue",null);return}const c=Number(i);a("update:modelValue",Number.isFinite(c)?c:null)}return(s,i)=>(v(),$("input",Oe({id:e.controlId},l.value,{name:e.field.name,type:"number",inputmode:"decimal",value:r.value,required:e.field.required||void 0,"aria-required":e.field.required?"true":void 0,"aria-invalid":e.invalid?"true":void 0,"aria-describedby":e.describedBy||void 0,class:[u($n)(e.invalid),"h-input tabular-nums"],onInput:o}),null,16,z8))}}),H8=["id","aria-labelledby","aria-describedby"],K8=Q({__name:"PartialField",props:{field:{},modelValue:{},controlId:{},invalid:{type:Boolean},describedBy:{},labels:{},source:{},recordId:{}},setup(e){const t=e;return(n,a)=>(v(),$("div",{id:e.controlId,role:"group","data-partial-field":"","aria-labelledby":t.field.label?`${e.controlId}-label`:void 0,"aria-describedby":e.describedBy||void 0},[e.source?(v(),F(Wc,{key:0,variant:"field",source:e.source,name:t.field.path||t.field.name,"record-id":e.recordId??null},null,8,["source","name","record-id"])):(v(),F(Kc,{key:1,"data-partial-failed":"",text:u(D)("backend::lang.extension.partial_failed")},null,8,["text"]))],8,H8))}}),W8={class:"relative"},G8=["id","name","type","value","required","aria-required","aria-invalid","aria-describedby"],Y8=["aria-pressed","aria-label"],J8=Q({__name:"PasswordField",props:{field:{},modelValue:{},controlId:{},invalid:{type:Boolean},describedBy:{},labels:{},source:{},recordId:{}},emits:["update:modelValue"],setup(e,{emit:t}){const n=e,a=t,r=q(!1),l=x(()=>typeof n.modelValue=="string"?n.modelValue:""),o=x(()=>Nr(n.field)),s=ot(Vr,null);return s&&Fe(s.revision,()=>{r.value=!1}),(i,c)=>(v(),$("div",W8,[O("input",Oe({id:e.controlId,autocomplete:"new-password",spellcheck:"false"},o.value,{name:e.field.name,type:r.value?"text":"password",value:l.value,required:e.field.required||void 0,"aria-required":e.field.required?"true":void 0,"aria-invalid":e.invalid?"true":void 0,"aria-describedby":e.describedBy||void 0,class:[u($n)(e.invalid),"h-input pr-12"],onInput:c[0]||(c[0]=d=>a("update:modelValue",d.target.value))}),null,16,G8),O("button",{type:"button","data-password-toggle":"","aria-pressed":r.value?"true":"false","aria-label":u(D)(r.value?"backend::lang.form.hide_password":"backend::lang.form.show_password"),class:"absolute top-1/2 right-1.5 flex size-8 -translate-y-1/2 items-center justify-center rounded-pager text-muted transition-colors duration-150 ease-out hover:bg-hover hover:text-text",onClick:c[1]||(c[1]=d=>r.value=!r.value)},[(v(),F(Bt(r.value?u(ex):u(nx)),{size:16,"aria-hidden":"true"}))],8,Y8)]))}}),Z8=["id"],Q8=["id","aria-labelledby","aria-label","aria-describedby","data-mode"],X8=["aria-labelledby"],e5=["id"],t5={class:"min-w-0 [overflow-wrap:anywhere]"},n5={key:0,class:"shrink-0 text-[12px] font-semibold text-muted","aria-hidden":"true"},a5=["data-permission","data-locked"],r5={class:"flex min-w-0 flex-col"},l5=["id"],o5=["id"],s5=Q({__name:"PermissionEditorField",props:{field:{},modelValue:{},controlId:{},invalid:{type:Boolean},describedBy:{},labels:{},source:{},recordId:{}},emits:["update:modelValue"],setup(e,{emit:t}){const n=e,a=t,r=x(()=>n.field.permissionOptions??[]),l=x(()=>n.field.mode==="radio"),o=x(()=>!!n.field.readOnly||!!Nr(n.field).readonly),s=x(()=>wy(n.field,n.modelValue)),i=x(()=>{const g=[],y=[];for(const w of r.value){if(!w.tab){y.push(w);continue}let A=g.find(S=>S.label===w.tab);A||(A={key:`tab:${w.tab}`,label:w.tab,options:[]},g.push(A)),A.options.push(w)}return y.length>0&&g.push({key:"other",label:D("backend::lang.permissioneditor.other"),options:y}),g}),c=[{value:"1",label:"backend::lang.permissioneditor.allow",checked:"data-[state=checked]:bg-ok-bg data-[state=checked]:text-ok-text"},{value:"0",label:"backend::lang.permissioneditor.inherit",checked:"data-[state=checked]:bg-surface data-[state=checked]:text-text data-[state=checked]:shadow-tab"},{value:"-1",label:"backend::lang.permissioneditor.deny",checked:"data-[state=checked]:bg-danger-soft data-[state=checked]:text-danger"}],d=x(()=>`${n.controlId}-label`);function f(g,y){return`${n.controlId}-${g}-${y}`}function p(g){return o.value||!!g.locked}function h(g){return!!g.locked&&!o.value}function m(g){return s.value[g.code]??0}function b(g,y){if(p(g))return;const w={...s.value};y===1||l.value&&y===-1?w[g.code]=y:delete w[g.code],a("update:modelValue",w)}return(g,y)=>r.value.length===0?(v(),$("div",{key:0,id:e.controlId,"data-permission-empty":"",class:"flex min-h-input items-center rounded-control border border-border bg-subtle px-3.5 text-muted"},P(u(D)("backend::lang.permissioneditor.empty")),9,Z8)):(v(),$("div",{key:1,id:e.controlId,role:"group","aria-labelledby":e.field.label?d.value:void 0,"aria-label":e.field.label?void 0:e.field.name,"aria-describedby":e.describedBy||void 0,class:ke([e.invalid?"border-danger":"border-border","overflow-hidden rounded-inner border"]),"data-permission-editor":"","data-mode":l.value?"radio":"checkbox"},[(v(!0),$(xe,null,Be(i.value,(w,A)=>(v(),$("div",{key:w.key,role:"group","aria-labelledby":`${e.controlId}-section-${A}`,"data-permission-section":""},[O("h3",{id:`${e.controlId}-section-${A}`,class:ke([A>0?"border-t border-border":"","flex h-row-head items-center justify-between gap-4 bg-subtle px-4 font-semibold"])},[O("span",t5,P(w.label),1),l.value?re("",!0):(v(),$("span",n5,P(u(D)("backend::lang.permissioneditor.allow")),1))],10,e5),(v(!0),$(xe,null,Be(w.options,(S,R)=>(v(),$("div",{key:S.code,"data-permission":S.code,"data-locked":h(S)?"":void 0,class:"flex min-h-[56px] items-center justify-between gap-x-4 gap-y-2 border-t border-border px-4 py-3 max-sm:flex-col max-sm:items-start"},[O("div",r5,[(v(),F(Bt(l.value?"span":"label"),{id:`${f(A,R)}-label`,for:l.value?void 0:f(A,R),class:"[overflow-wrap:anywhere]"},{default:T(()=>[Se(P(S.label||S.code)+" ",1),h(S)?(v(),F(u(Ra),{key:0,size:14,class:"ml-1 inline-block align-[-2px] text-muted","aria-hidden":"true"})):re("",!0)]),_:2},1032,["id","for"])),h(S)?(v(),$("p",{key:0,id:`${f(A,R)}-note`,class:"text-[13px] text-muted [overflow-wrap:anywhere]","data-permission-locked":""},P(u(D)("backend::lang.permissioneditor.locked")),9,l5)):S.comment?(v(),$("p",{key:1,id:`${f(A,R)}-note`,class:"text-[13px] text-muted [overflow-wrap:anywhere]"},P(S.comment),9,o5)):re("",!0)]),l.value?(v(),F(u(SA),{key:0,orientation:"horizontal","model-value":String(m(S)),disabled:p(S),"aria-disabled":p(S)?"true":void 0,"aria-labelledby":`${f(A,R)}-label`,"aria-describedby":h(S)||S.comment?`${f(A,R)}-note`:void 0,class:"inline-flex shrink-0 gap-1 rounded-inner border border-border bg-subtle p-1","onUpdate:modelValue":H=>b(S,Number(H))},{default:T(()=>[(v(),$(xe,null,Be(c,H=>L(u(MA),{key:H.value,value:H.value,"data-segment":H.value,class:ke([H.checked,"inline-flex h-pager items-center rounded-tab px-4 text-[13px] whitespace-nowrap text-muted transition-colors duration-150 ease-out hover:text-text disabled:cursor-not-allowed disabled:hover:text-muted data-[state=checked]:text-[14px] data-[state=checked]:font-semibold"])},{default:T(()=>[Se(P(u(D)(H.label)),1)]),_:2},1032,["value","data-segment","class"])),64))]),_:1},8,["model-value","disabled","aria-disabled","aria-labelledby","aria-describedby","onUpdate:modelValue"])):(v(),F(u(PS),{key:1,id:f(A,R),"model-value":m(S)===1,disabled:p(S),"aria-disabled":p(S)?"true":void 0,"aria-labelledby":`${f(A,R)}-label`,"aria-describedby":h(S)||S.comment?`${f(A,R)}-note`:void 0,class:"flex size-[18px] shrink-0 items-center justify-center rounded-checkbox border border-border-strong bg-surface disabled:cursor-not-allowed disabled:opacity-60 data-[state=checked]:border-primary data-[state=checked]:bg-primary data-[state=checked]:text-on-primary","onUpdate:modelValue":H=>b(S,H===!0?1:0)},{default:T(()=>[L(u(TS),null,{default:T(()=>[L(u(La),{size:14,"aria-hidden":"true"})]),_:1})]),_:1},8,["id","model-value","disabled","aria-disabled","aria-labelledby","aria-describedby","onUpdate:modelValue"]))],8,a5))),128))],8,X8))),128))],10,Q8))}}),i5=new Set(["mltext","mltextarea","mlmarkdown"]);function qr(e){return e!==void 0&&i5.has(e)}const ql="summer:ml-locale";function u5(e){typeof window>"u"||e===""||window.dispatchEvent(new CustomEvent(ql,{detail:e}))}function Fn(e){const t={};if(e===null||typeof e!="object"||Array.isArray(e))return t;for(const[n,a]of Object.entries(e))typeof a=="string"&&(t[n]=a);return t}const Mt="default";function gn(e){return e.tab?`tab:${e.tab}`:Mt}function Tl(e,t){return`${e}-tab-${t}`}function Ws(e,t){return`${e}-panel-${t}`}function Gs(e,t){const n=e.context;if(n==null)return!0;const a=Array.isArray(n)?n:[n];return a.length===0||a.includes(t)}function Wt(e,t,n="create"){const a={};for(const r of e){if(r.readOnly||!CP(r.type))continue;const l=t[r.name];if(!(r.type==="password"&&n==="update"&&(l===""||l===null))){if(r.type==="permissioneditor"){a[r.name]=wy(r,l);continue}if(qr(r.type)){a[r.name]=Fn(l);continue}l!==void 0&&(a[r.name]=l)}}return a}function Gi(e,t){const n=typeof t=="string"||typeof t=="number"?String(t):"";return e!=="slug"?n:n.toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,"")}function Cy(e,t){const n=Fn(e),a=Fn(t),r=[];for(const l of new Set([...Object.keys(n),...Object.keys(a)]))(n[l]??"")!==(a[l]??"")&&r.push(l);return r}function c5(e,t,n,a,r,l,o){const s={},i=qr(e.find(c=>c.name===t)?.type);for(const c of e){const d=c.preset;if(!d||d.field!==t||c.type!=="text"&&c.type!=="mltext")continue;if(c.type==="text"){if(o(c.name))continue;s[c.name]=Gi(d.type,i?Fn(a)[l]??"":a);continue}if(!i){if(o(c.name,l))continue;s[c.name]={...Fn(r[c.name]),[l]:Gi(d.type,a)};continue}const f=Fn(a),p={...Fn(r[c.name])};let h=!1;for(const m of Cy(n,a))o(c.name,m)||(p[m]=Gi(d.type,f[m]??""),h=!0);h&&(s[c.name]=p)}return s}function Qc(e,t=[]){const n={};for(const a of e)if(a.default!==void 0)n[a.name]=a.default;else if(a.type==="switch"||a.type==="checkbox")n[a.name]=!1;else if(a.type==="relation"&&a.multiple)n[a.name]=[];else if(qr(a.type)){const r={};for(const l of t)r[l]="";n[a.name]=r}return n}function go(e){return e?.enabledLocales??[]}function Sy(e,t){const n={};for(const a of t)n[a]="";if(typeof e=="string"){const a=t[0];return a&&(n[a]=e),n}return{...n,...Fn(e)}}function Zl(e){const t={};for(const[n,a]of Object.entries(e??{})){const r=Array.isArray(a)?a.filter(l=>typeof l=="string"&&l!==""):typeof a=="string"&&a!==""?[a]:[];r.length>0&&(t[n]=r)}return t}function fa(e){return JSON.stringify(Object.keys(e).sort().map(t=>[t,e[t]]))}function Ql(e,t){const n=document.getElementById(`${e}-${t}`);return n?(n.matches("input, select, textarea, button, [tabindex]")||n.setAttribute("tabindex","-1"),n.focus(),!0):!1}const d5={role:"tablist",class:"inline-flex gap-1 rounded-inner border border-border bg-subtle p-1"},f5=["id","data-tab","aria-selected","aria-controls","tabindex","onClick","onKeydown"],p5=["aria-label"],Xc=Q({__name:"FormTabs",props:{tabs:{},modelValue:{},idPrefix:{}},emits:["update:modelValue"],setup(e,{emit:t}){const n=e,a=t;function r(l,o){const s=l.key==="ArrowRight"?1:l.key==="ArrowLeft"?-1:0;if(s===0)return;l.preventDefault();const i=(o+s+n.tabs.length)%n.tabs.length,c=n.tabs[i];c&&(a("update:modelValue",c.key),document.getElementById(Tl(n.idPrefix,i))?.focus())}return(l,o)=>(v(),$("div",d5,[(v(!0),$(xe,null,Be(e.tabs,(s,i)=>(v(),$("button",{id:u(Tl)(e.idPrefix,i),key:s.key,type:"button",role:"tab","data-tab":s.key,"aria-selected":s.key===e.modelValue?"true":"false","aria-controls":u(Ws)(e.idPrefix,i),tabindex:s.key===e.modelValue?0:-1,class:ke([s.key===e.modelValue?"bg-surface text-text shadow-tab":"text-muted hover:text-text","inline-flex h-[34px] items-center gap-2 rounded-tab px-4 font-semibold transition-colors duration-150 ease-out"]),onClick:c=>a("update:modelValue",s.key),onKeydown:c=>r(c,i)},[Se(P(s.label)+" ",1),s.errors>0?(v(),$("span",{key:0,"data-tab-errors":"","aria-label":u(Er)("backend::lang.form.tab_errors",s.errors),class:"inline-flex h-5 min-w-5 items-center justify-center rounded-pill bg-danger px-1.5 text-[11px] font-bold text-white"},P(s.errors),9,p5)):re("",!0)],42,f5))),128))]))}}),h5={class:"flex items-start gap-3 p-6 pb-4"},v5={key:0,"data-child-loading":"","aria-hidden":"true",class:"grid grid-cols-1 gap-x-6 gap-y-[22px] min-[600px]:grid-cols-2"},m5={key:1,role:"alert","data-child-load-failed":"",class:"rounded-inner bg-danger-soft px-[18px] py-3.5 text-danger"},y5=["id","role","aria-labelledby"],g5=["disabled"],b5={class:"flex items-center gap-2.5 border-t border-border px-6 py-4"},_5={class:"ml-auto flex gap-2.5"},x5=Q({__name:"RelationChildModal",props:{open:{type:Boolean},source:{},ownerId:{},relation:{},schema:{},mode:{},childId:{},sessionKey:{},canDelete:{type:Boolean}},emits:["update:open","changed","gone","closed"],setup(e,{emit:t}){const n=e,a=t,r=q({}),l=q({}),o=q({}),s=q(!1),i=q(!1),c=q(!1),d=q(""),f=q(Mt),p=q(Pl()),h=q(0),m=q(0),{activeUploads:b,beginUpload:g}=Zc(),y=q(null),w=Ja();let A=0;const S=x(()=>`child-${n.relation}`),R=x(()=>n.mode==="preview"),H=x(()=>n.mode==="create"?"create":"update"),j=x(()=>{const pe=((R.value?n.schema.viewForm:n.schema.manageForm)??[]).filter(_=>Gs(_,H.value));return R.value?pe.map(_=>({..._,readOnly:!0,attributes:{..._.attributes??{},readonly:!0}})):pe}),U=x(()=>j.value.map(le=>le.name)),k=x(()=>{if(!j.value.some(pe=>pe.tab))return[];const le=[];for(const pe of j.value){const _=gn(pe);let C=le.find(E=>E.key===_);C||(C={key:_,label:pe.tab||D("backend::lang.form.tab_default"),errors:0},_===Mt?le.unshift(C):le.push(C)),o.value[pe.name]&&(C.errors+=1)}return le}),I=x(()=>Math.max(k.value.findIndex(le=>le.key===f.value),0)),W=x(()=>{if(k.value.length===0)return j.value;const le=k.value[I.value]?.key??Mt;return j.value.filter(pe=>gn(pe)===le)}),V=x(()=>{const le=n.schema.messages;return n.mode==="create"?Ne(le.createTitle):Ne(R.value?le.previewTitle:le.updateTitle)}),B=x(()=>Ne(n.mode==="create"?n.schema.messages.createSubmit:n.schema.messages.updateSubmit)),X=x(()=>!R.value&&!s.value&&!i.value&&(h.value>0||b.value>0||fa(Wt(j.value,r.value))!==d.value));function M(){return{[_a]:n.sessionKey,[my]:p.value}}function ne(){return{...n.source,id:n.ownerId,name:n.relation}}yt(Vr,{get key(){return n.sessionKey},get childKey(){return p.value},get recordId(){return n.childId??0},routes:le=>b6(n.source,n.ownerId,n.relation,n.childId??0,le,n.sessionKey,p.value),markDirty:()=>{h.value++},pendingChanges:pt(h),revision:pt(m),beginUpload:g,activeUploads:pt(b)}),yt(Yc,x(()=>r.value)),yt(Jc,ve);const ue=ot(ts,x(()=>[]));yt(ts,ue);function ve(le,pe){if(r.value={...r.value,[le]:pe},o.value[le]){const _={...o.value};delete _[le],o.value=_}}function ye(le,pe){const _=ue.value,C={...le};for(const E of j.value)E.type==="password"?C[E.name]="":qr(E.type)&&(C[E.name]=Sy(le[E.name],_));r.value=C,l.value=pe?.labels??{},d.value=fa(Wt(j.value,r.value))}async function be(){await We(),y.value?.querySelector('input:not([type="hidden"]):not([tabindex="-1"]), select, textarea, button, [contenteditable="true"], [tabindex="0"]')?.focus()}function oe(){a("update:open",!1),Te(D("backend::lang.relation.child_gone"),"danger"),a("gone")}async function Ce(){const le=++A;if(o.value={},i.value=!1,c.value=!1,h.value=0,p.value=Pl(),f.value=Mt,n.mode==="create"||n.childId===null){s.value=!1,ye(Qc(j.value,ue.value)),f.value=k.value[0]?.key??Mt,await be();return}s.value=!0;try{const pe=await qe.GET("/{vendor}/{plugin}/{controller}/{id}/relations/{name}/records/{child}",{params:{path:{...ne(),child:n.childId},header:M()}});if(le!==A)return;if(pe.data)ye(pe.data.data,pe.data.meta),f.value=k.value[0]?.key??Mt;else if(pe.response.status===404){oe();return}else i.value=!0}catch{le===A&&(i.value=!0)}finally{le===A&&(s.value=!1)}le===A&&await be()}Fe(()=>n.open,le=>{le?Ce():A++},{immediate:!0});async function ce(le){if(le){a("update:open",!0);return}c.value||X.value&&!await w.ask({message:D("backend::lang.form.unsaved_confirm"),confirmLabel:D("backend::lang.form.discard"),danger:!0})||a("update:open",!1)}async function Ee(le){o.value=Zl(le);const pe=j.value.filter(C=>o.value[C.name]),_=pe.find(C=>gn(C)===f.value)??pe[0];_&&(k.value.length>0&&(f.value=gn(_)),await We(),Ql(S.value,_.name))}async function Z(){if(!(c.value||R.value||s.value||i.value||b.value>0)){c.value=!0;try{const le=Wt(j.value,r.value),pe=n.mode==="create"||n.childId===null?await qe.POST("/{vendor}/{plugin}/{controller}/{id}/relations/{name}/records",{params:{path:ne(),header:M()},body:le}):await qe.PUT("/{vendor}/{plugin}/{controller}/{id}/relations/{name}/records/{child}",{params:{path:{...ne(),child:n.childId},header:M()},body:le});if(pe.data){const C=n.mode==="create"?"created":"updated";o.value={},h.value=0,a("update:open",!1),Te(Ne(C==="created"?n.schema.messages.created:n.schema.messages.updated)),a("changed",C);return}const _=pe.response.status;_===422?await Ee(pe.error?.error.details):_===404?oe():Te(pe.error?.error.message||D("backend::lang.form.error_generic"),"danger")}catch{Te(D("backend::lang.form.error_generic"),"danger")}finally{c.value=!1}}}async function K(){if(c.value||n.childId===null)return;const le=n.childId;if(await w.ask({message:Ne(n.schema.messages.deleteOneConfirm),confirmLabel:D("backend::lang.form.delete"),danger:!0})){c.value=!0;try{const _=await qe.POST("/{vendor}/{plugin}/{controller}/{id}/relations/{name}/delete",{params:{path:ne(),header:{[_a]:n.sessionKey}},body:{ids:[le]}});if(_.data){h.value=0,a("update:open",!1),Te(Ne(n.schema.messages.deleted,_.data.data.deleted||1)),a("changed","deleted");return}if(_.response.status===404){oe();return}Te(_.error?.error.message||D("backend::lang.form.error_generic"),"danger")}catch{Te(D("backend::lang.form.error_generic"),"danger")}finally{c.value=!1}}}function te(le){le.preventDefault()}function ie(le){le.preventDefault(),a("closed")}return(le,pe)=>(v(),$(xe,null,[L(u(Hl),{open:e.open,"onUpdate:open":ce},{default:T(()=>[L(u(Vs),null,{default:T(()=>[L(u(Wl),{"data-dialog-overlay":"",class:"fixed inset-0 z-40 bg-overlay"}),L(u(Kl),{"data-relation-child-modal":"","data-dialog-content":"","data-mode":e.mode,"aria-modal":"true","aria-describedby":void 0,class:"fixed top-1/2 left-1/2 z-50 flex max-h-[calc(100vh-32px)] w-[calc(100%-32px)] max-w-[720px] -translate-x-1/2 -translate-y-1/2 flex-col rounded-modal bg-surface text-text shadow-pop",onOpenAutoFocus:te,onCloseAutoFocus:ie},{default:T(()=>[O("div",h5,[L(u(Gl),{class:"min-w-0 flex-1 text-[20px] font-bold tracking-[-0.01em]"},{default:T(()=>[Se(P(V.value),1)]),_:1}),L(u(Pr),{"data-action":"close","aria-label":u(D)("backend::lang.form.close"),disabled:c.value,class:"flex size-[34px] shrink-0 items-center justify-center rounded-tab bg-subtle text-muted hover:bg-hover hover:text-text"},{default:T(()=>[L(u(Yt),{size:16,"aria-hidden":"true"})]),_:1},8,["aria-label","disabled"])]),O("div",{ref_key:"body",ref:y,"data-child-body":"",class:"flex min-h-0 flex-1 flex-col gap-4 overflow-y-auto px-6 pb-6"},[s.value?(v(),$("div",v5,[(v(),$(xe,null,Be(6,_=>O("div",{key:_,class:"flex flex-col gap-1.5"},[...pe[3]||(pe[3]=[O("span",{class:"block h-3 w-24 rounded-[6px] bg-skel"},null,-1),O("span",{class:"block h-input rounded-control bg-skel"},null,-1)])])),64))])):i.value?(v(),$("p",m5,P(u(D)("backend::lang.relation.child_load_failed")),1)):(v(),$(xe,{key:2},[L(Jl,{errors:o.value,"field-names":U.value},null,8,["errors","field-names"]),k.value.length>0?(v(),F(Xc,{key:0,modelValue:f.value,"onUpdate:modelValue":pe[0]||(pe[0]=_=>f.value=_),tabs:k.value,"id-prefix":S.value,class:"self-start"},null,8,["modelValue","tabs","id-prefix"])):re("",!0),O("form",{id:k.value.length>0?u(Ws)(S.value,I.value):void 0,role:k.value.length>0?"tabpanel":void 0,"aria-labelledby":k.value.length>0?u(Tl)(S.value,I.value):void 0,novalidate:"",onSubmit:ut(Z,["prevent"])},[O("fieldset",{disabled:c.value||R.value,class:"m-0 min-w-0 border-0 p-0"},[L(Xl,{fields:W.value,values:r.value,errors:o.value,labels:l.value,source:e.source,"record-id":e.childId,"id-prefix":S.value,onUpdate:ve},null,8,["fields","values","errors","labels","source","record-id","id-prefix"])],8,g5)],40,y5)],64))],512),O("div",b5,[e.mode==="update"&&e.canDelete&&!s.value&&!i.value?(v(),F(et,{key:0,variant:"danger","data-action":"delete-child",icon:u(Ll),disabled:c.value,onClick:K},{default:T(()=>[Se(P(u(D)("backend::lang.form.delete")),1)]),_:1},8,["icon","disabled"])):re("",!0),O("div",_5,[R.value?(v(),F(et,{key:0,variant:"outline","data-action":"cancel",onClick:pe[1]||(pe[1]=_=>ce(!1))},{default:T(()=>[Se(P(u(D)("backend::lang.form.close")),1)]),_:1})):(v(),$(xe,{key:1},[L(et,{variant:"ghost","data-action":"cancel",disabled:c.value,onClick:pe[2]||(pe[2]=_=>ce(!1))},{default:T(()=>[Se(P(u(D)("backend::lang.form.cancel")),1)]),_:1},8,["disabled"]),i.value?re("",!0):(v(),F(et,{key:0,variant:"primary","data-action":"save-child",disabled:c.value||s.value||u(b)>0,onClick:Z},{default:T(()=>[Se(P(c.value?u(D)("backend::lang.form.saving"):B.value),1)]),_:1},8,["disabled"]))],64))])])]),_:1},8,["data-mode"])]),_:1})]),_:1},8,["open"]),L(Ya,{open:u(w).request.value!==null,message:u(w).request.value?.message??"","confirm-label":u(w).request.value?.confirmLabel,danger:u(w).request.value?.danger,onConfirm:u(w).confirm,onCancel:u(w).cancel},null,8,["open","message","confirm-label","danger","onConfirm","onCancel"])],64))}}),w5={class:"flex items-start gap-3"},k5={class:"flex min-w-0 flex-1 flex-col gap-1"},$5=["title"],C5={key:0,class:"truncate text-[13px] text-muted"},S5=["disabled"],A5={class:"relative block"},E5={class:"sr-only"},M5=["value","placeholder"],D5=["aria-multiselectable","aria-label","aria-busy"],O5=["data-candidate","aria-selected","onClick","onKeydown"],P5={class:"flex size-8 shrink-0 items-center justify-center rounded-full bg-subtle text-[12px] font-bold","aria-hidden":"true"},q5={class:"flex min-w-0 flex-1 flex-col leading-tight"},T5={class:"truncate font-semibold"},R5={key:0,class:"truncate text-[13px] text-muted"},I5={key:0,class:"block size-2.5 rounded-full bg-primary"},B5={key:0,role:"presentation",class:"px-1 py-3 text-[13px] text-muted"},F5={key:1,role:"presentation","data-candidates-empty":"",class:"px-1 py-3 text-[13px] text-muted"},N5=["aria-label"],V5={"data-candidates-range":"",class:"flex-1"},L5=["aria-label","disabled"],j5=["aria-label","disabled"],z5={class:"flex gap-2.5"},U5=["disabled"],H5=["disabled"],K5=["disabled","aria-busy"],W5=5,G5=300,kp="inline-flex size-[34px] items-center justify-center rounded-tab border border-border text-text hover:bg-hover disabled:cursor-not-allowed disabled:opacity-60",Y5=Q({__name:"RelationPickerModal",props:{open:{type:Boolean},source:{},recordId:{},relation:{},schema:{},sessionKey:{}},emits:["update:open","linked","closed"],setup(e,{emit:t}){const n=e,a=t,r=q(""),l=q(1),o=q([]),s=q(null),i=q(!1),c=q(!1),d=q(new Set),f=q(null),p=q(1),h=q(null),m=q({}),b=q({}),g=q(null);let y=0,w=null;const A=x(()=>n.schema.manage.list.columns),S=x(()=>A.value[0]?.key??""),R=x(()=>A.value[1]?.key??""),H=x(()=>d.value.size),j=`relation-${n.relation}-candidates`,U=x(()=>n.schema.pivotForm??[]),k=x(()=>U.value.map(_=>_.name)),I=x(()=>U.value.length>0),W=x(()=>`link-${n.relation}`);function V(){return n.sessionKey?{[_a]:n.sessionKey}:void 0}const B=x(()=>{const _=s.value;if(!_||_.total===0)return"";const C=(_.page-1)*_.per_page+1,E=Math.min(_.page*_.per_page,_.total);return D("backend::lang.relation.candidates_range",{from:C,to:E,total:_.total})}),X=x(()=>Math.max(s.value?.last_page??1,1));function M(_){const C=_.id;return typeof C=="number"&&Number.isInteger(C)?C:typeof C=="string"&&/^\d+$/.test(C)?Number(C):null}function ne(_,C){const E=C===""?void 0:_[C];return typeof E=="string"||typeof E=="number"?String(E):""}function ee(_){return _.split(/[\s@._-]+/).filter(Boolean).slice(0,2).map(C=>C.charAt(0).toUpperCase()).join("")}async function ue(){const _=++y;i.value=!0;try{const C=r.value.trim(),{data:E}=await qe.GET("/{vendor}/{plugin}/{controller}/{id}/relations/{name}/candidates",{params:{path:{...n.source,id:n.recordId,name:n.relation},query:{search:C===""?void 0:C,page:l.value,per_page:W5},header:V()}});if(_!==y)return;o.value=E?.data??[],s.value=E?.meta??null}catch{_===y&&(o.value=[],s.value=null)}finally{_===y&&(i.value=!1)}}function ve(){w!==null&&(clearTimeout(w),w=null),y++,r.value="",l.value=1,o.value=[],s.value=null,i.value=!1,d.value=new Set,p.value=1,h.value=null,m.value={},b.value={}}Fe(()=>n.open,_=>{_?(ve(),ue()):ve()},{immediate:!0});function ye(_){r.value=_.target.value,w!==null&&clearTimeout(w),w=setTimeout(()=>{w=null,l.value=1,ue()},G5)}function be(_){_<1||_>X.value||_===l.value||(l.value=_,ue())}function oe(_){const C=M(_);return C!==null&&d.value.has(C)}function Ce(_){const C=M(_);if(C===null)return;if(I.value){d.value=new Set([C]),h.value=_;return}const E=new Set(d.value);E.has(C)?E.delete(C):E.add(C),d.value=E}async function ce(){!I.value||d.value.size===0||!h.value||(p.value=2,m.value=Qc(U.value,[]),b.value={},await We(),g.value?.querySelector('input, select, textarea, button, [contenteditable="true"]')?.focus())}async function Ee(){if(c.value)return;p.value=1,b.value={},await We(),(document.querySelector(`#${j} [aria-selected="true"]`)??f.value)?.focus()}function Z(_,C){if(m.value={...m.value,[_]:C},b.value[_]){const E={...b.value};delete E[_],b.value=E}}function K(_,C,E){switch(_.key){case" ":_.preventDefault(),Ce(C);break;case"Enter":_.preventDefault(),Ce(C),I.value&&ce();break;case"ArrowDown":case"ArrowUp":{_.preventDefault();const J=_.currentTarget.parentElement?.querySelectorAll('[role="option"]'),Y=_.key==="ArrowDown"?1:-1;J?.[Math.min(Math.max(E+Y,0),J.length-1)]?.focus();break}}}function te(_){a("update:open",_)}async function ie(){const _=[...d.value];if(c.value||_.length===0)return;const C=I.value;c.value=!0;try{const E=await qe.POST("/{vendor}/{plugin}/{controller}/{id}/relations/{name}/link",{params:{path:{...n.source,id:n.recordId,name:n.relation},header:V()},body:C?{ids:_.slice(0,1),pivot:Wt(U.value,m.value)}:{ids:_}});if(E.data){te(!1),a("linked",E.data.data.linked??_.length);return}const J=E.response.status;if(C&&J===422){b.value=Zl(E.error?.error.details);const Y=U.value.find(ae=>b.value[ae.name]);Y&&(await We(),Ql(W.value,Y.name));return}if(C&&J===404){Te(D("backend::lang.relation.child_gone"),"danger"),d.value=new Set,h.value=null,p.value=1,ue();return}if(C){Te(D("backend::lang.form.error_generic"),"danger");return}Te(E.error?.error.message||D("backend::lang.form.error_generic"),"danger")}catch{Te(D("backend::lang.form.error_generic"),"danger")}finally{c.value=!1}}function le(_){_.preventDefault(),f.value?.focus()}function pe(_){_.preventDefault(),a("closed")}return Pt(()=>{w!==null&&clearTimeout(w)}),(_,C)=>(v(),F(u(Hl),{open:e.open,"onUpdate:open":te},{default:T(()=>[L(u(Vs),null,{default:T(()=>[L(u(Wl),{"data-dialog-overlay":"",class:"fixed inset-0 z-40 bg-overlay"}),L(u(Kl),{"data-relation-picker":"","data-dialog-content":"","aria-modal":"true",class:"fixed top-1/2 left-1/2 z-50 flex max-h-[calc(100vh-32px)] w-[calc(100%-32px)] max-w-[560px] -translate-x-1/2 -translate-y-1/2 flex-col gap-4 rounded-modal bg-surface p-6 text-text shadow-pop",onOpenAutoFocus:le,onCloseAutoFocus:pe},{default:T(()=>[O("div",w5,[O("div",k5,[L(u(Gl),{class:"text-[20px] font-bold tracking-[-0.01em]"},{default:T(()=>[Se(P(p.value===2?u(Ne)(e.schema.messages.pivotTitle):u(Ne)(e.schema.messages.link)),1)]),_:1}),p.value===1?(v(),F(u(Al),{key:0,class:"text-muted"},{default:T(()=>[Se(P(u(Ne)(e.schema.messages.linkHint)),1)]),_:1})):(v(),F(u(Al),{key:1,class:"flex min-w-0 flex-col","data-chosen-record":""},{default:T(()=>[O("span",{class:"truncate font-semibold text-text",title:ne(h.value??{},S.value)},P(ne(h.value??{},S.value)),9,$5),R.value?(v(),$("span",C5,P(ne(h.value??{},R.value)),1)):re("",!0)]),_:1}))]),L(u(Pr),{"data-action":"close","aria-label":u(D)("backend::lang.form.close"),class:"flex size-[34px] shrink-0 items-center justify-center rounded-tab bg-subtle text-muted hover:bg-hover hover:text-text"},{default:T(()=>[L(u(Yt),{size:16,"aria-hidden":"true"})]),_:1},8,["aria-label"])]),p.value===2?(v(),$("div",{key:0,ref_key:"stepTwo",ref:g,"data-pivot-step":"",class:"flex min-h-0 flex-col gap-4 overflow-y-auto"},[L(Jl,{errors:b.value,"field-names":k.value},null,8,["errors","field-names"]),O("form",{novalidate:"",onSubmit:ut(ie,["prevent"])},[O("fieldset",{disabled:c.value,class:"m-0 min-w-0 border-0 p-0"},[L(Xl,{fields:U.value,values:m.value,errors:b.value,source:e.source,"record-id":null,"id-prefix":W.value,onUpdate:Z},null,8,["fields","values","errors","source","id-prefix"])],8,S5)],32)],512)):re("",!0),Va(O("label",A5,[O("span",E5,P(u(D)("backend::lang.list.search")),1),L(u(Ms),{size:18,class:"pointer-events-none absolute top-1/2 left-3.5 -translate-y-1/2 text-muted","aria-hidden":"true"}),O("input",{ref_key:"searchInput",ref:f,type:"search","data-candidate-search":"",value:r.value,placeholder:u(Ne)(e.schema.messages.candidateSearch),"aria-controls":j,class:"h-input w-full rounded-control border border-border-strong bg-surface pr-3.5 pl-10",onInput:ye},null,40,M5)],512),[[cu,p.value===1]]),Va(O("ul",{id:j,role:"listbox","aria-multiselectable":I.value?"false":"true","aria-label":u(Ne)(e.schema.messages.link),"aria-busy":i.value?"true":void 0,class:"flex min-h-0 flex-col gap-2 overflow-y-auto"},[(v(!0),$(xe,null,Be(o.value,(E,J)=>(v(),$("li",{key:M(E)??`row-${J}`,role:"option",tabindex:"0","data-candidate":M(E)??void 0,"aria-selected":oe(E)?"true":"false",class:ke([oe(E)?"border-[#e0b020] bg-sel":"border-border hover:bg-hover","flex h-[54px] cursor-pointer items-center gap-3 rounded-inner border px-3 transition-colors duration-150 ease-out"]),onClick:Y=>Ce(E),onKeydown:Y=>K(Y,E,J)},[O("span",P5,P(ee(ne(E,S.value))),1),O("span",q5,[O("span",T5,P(ne(E,S.value)),1),R.value?(v(),$("span",R5,P(ne(E,R.value)),1)):re("",!0)]),I.value?(v(),$("span",{key:0,"data-radio":"",class:ke([oe(E)?"border-primary":"border-border-strong bg-surface","flex size-[18px] shrink-0 items-center justify-center rounded-full border"]),"aria-hidden":"true"},[oe(E)?(v(),$("span",I5)):re("",!0)],2)):(v(),$("span",{key:1,class:ke([oe(E)?"border-primary bg-primary text-on-primary":"border-border-strong bg-surface","flex size-[18px] shrink-0 items-center justify-center rounded-checkbox border"]),"aria-hidden":"true"},[oe(E)?(v(),F(u(La),{key:0,size:14})):re("",!0)],2))],42,O5))),128)),i.value&&o.value.length===0?(v(),$("li",B5,P(u(D)("backend::lang.list.loading")),1)):!i.value&&o.value.length===0?(v(),$("li",F5,P(u(D)("backend::lang.relation.no_candidates")),1)):re("",!0)],8,D5),[[cu,p.value===1]]),p.value===1&&s.value&&s.value.total>0?(v(),$("nav",{key:1,"aria-label":u(D)("backend::lang.list.pagination"),class:"flex items-center gap-2 text-[13px] text-muted"},[O("span",V5,P(B.value),1),O("button",{type:"button","data-page":"prev","aria-label":u(D)("backend::lang.list.prev_page"),class:ke(kp),disabled:i.value||l.value<=1,onClick:C[0]||(C[0]=E=>be(l.value-1))},[L(u(Es),{size:16,"aria-hidden":"true"})],8,L5),O("button",{type:"button","data-page":"next","aria-label":u(D)("backend::lang.list.next_page"),class:ke(kp),disabled:i.value||l.value>=X.value,onClick:C[1]||(C[1]=E=>be(l.value+1))},[L(u(Vl),{size:16,"aria-hidden":"true"})],8,j5)],8,N5)):re("",!0),O("div",z5,[p.value===2?(v(),$("button",{key:0,type:"button","data-action":"back",disabled:c.value,class:"inline-flex h-button flex-1 items-center justify-center rounded-control border border-border-strong bg-surface font-semibold hover:bg-hover disabled:cursor-not-allowed disabled:opacity-60",onClick:Ee},P(u(D)("backend::lang.relation.back")),9,U5)):(v(),F(u(Pr),{key:1,"data-action":"cancel",class:"inline-flex h-button flex-1 items-center justify-center rounded-control border border-border-strong bg-surface font-semibold hover:bg-hover"},{default:T(()=>[Se(P(u(D)("backend::lang.form.cancel")),1)]),_:1})),I.value&&p.value===1?(v(),$("button",{key:2,type:"button","data-action":"next",disabled:H.value===0,class:"inline-flex h-button flex-1 items-center justify-center rounded-control bg-primary font-semibold text-on-primary hover:opacity-90 disabled:cursor-not-allowed disabled:opacity-60",onClick:ce},P(u(D)("backend::lang.relation.next")),9,H5)):(v(),$("button",{key:3,type:"button","data-action":"confirm-link",disabled:c.value||H.value===0,"aria-busy":c.value?"true":void 0,class:"inline-flex h-button flex-1 items-center justify-center rounded-control bg-primary font-semibold text-on-primary hover:opacity-90 disabled:cursor-not-allowed disabled:opacity-60",onClick:ie},[I.value?(v(),$(xe,{key:0},[Se(P(c.value?u(D)("backend::lang.form.saving"):u(Ne)(e.schema.messages.linkSubmit)),1)],64)):(v(),$(xe,{key:1},[Se(P(u(D)("backend::lang.relation.add_count",{count:H.value})),1)],64))],8,K5))])]),_:1})]),_:1})]),_:1},8,["open"]))}}),J5={class:"flex items-start gap-3"},Z5={class:"flex min-w-0 flex-1 flex-col gap-1"},Q5={key:0,"data-pivot-loading":"","aria-hidden":"true",class:"flex flex-col gap-1.5"},X5={key:1,role:"alert",class:"rounded-inner bg-danger-soft px-[18px] py-3.5 text-danger"},eO=["disabled"],tO={class:"flex gap-2.5"},nO=["disabled"],aO=["disabled"],rO=Q({__name:"RelationPivotModal",props:{open:{type:Boolean},source:{},ownerId:{},relation:{},schema:{},childId:{},childName:{},sessionKey:{}},emits:["update:open","saved","gone","closed"],setup(e,{emit:t}){const n=e,a=t,r=q({}),l=q({}),o=q(!1),s=q(!1),i=q(!1),c=q(""),d=Ja();let f=0;const p=x(()=>`pivot-${n.relation}`),h=x(()=>n.schema.pivotForm??[]),m=x(()=>h.value.map(U=>U.name)),b=x(()=>!o.value&&!s.value&&fa(Wt(h.value,r.value))!==c.value);function g(){return{[_a]:n.sessionKey}}function y(U){return{...n.source,id:n.ownerId,name:n.relation,child:U}}function w(U,k){if(r.value={...r.value,[U]:k},l.value[U]){const I={...l.value};delete I[U],l.value=I}}function A(){a("update:open",!1),Te(D("backend::lang.relation.child_gone"),"danger"),a("gone")}async function S(){const U=++f;if(l.value={},s.value=!1,i.value=!1,r.value={},c.value=fa({}),n.childId!==null){o.value=!0;try{const k=await qe.GET("/{vendor}/{plugin}/{controller}/{id}/relations/{name}/pivot/{child}",{params:{path:y(n.childId),header:g()}});if(U!==f)return;k.data?(r.value={...k.data.data},c.value=fa(Wt(h.value,r.value))):k.response.status===404?A():s.value=!0}catch{U===f&&(s.value=!0)}finally{U===f&&(o.value=!1)}}}Fe(()=>n.open,U=>{U?S():f++},{immediate:!0});async function R(U){if(U){a("update:open",!0);return}i.value||b.value&&!await d.ask({message:D("backend::lang.form.unsaved_confirm"),confirmLabel:D("backend::lang.form.discard"),danger:!0})||a("update:open",!1)}async function H(){if(!(i.value||o.value||s.value||n.childId===null)){i.value=!0;try{const U=await qe.PUT("/{vendor}/{plugin}/{controller}/{id}/relations/{name}/pivot/{child}",{params:{path:y(n.childId),header:g()},body:Wt(h.value,r.value)});if(U.data){l.value={},c.value=fa(Wt(h.value,r.value)),a("update:open",!1),Te(Ne(n.schema.messages.pivotSaved)),a("saved");return}const k=U.response.status;if(k===422){l.value=Zl(U.error?.error.details);const I=h.value.find(W=>l.value[W.name]);I&&(await We(),Ql(p.value,I.name))}else k===404?A():Te(D("backend::lang.form.error_generic"),"danger")}catch{Te(D("backend::lang.form.error_generic"),"danger")}finally{i.value=!1}}}function j(U){U.preventDefault(),a("closed")}return(U,k)=>(v(),$(xe,null,[L(u(Hl),{open:e.open,"onUpdate:open":R},{default:T(()=>[L(u(Vs),null,{default:T(()=>[L(u(Wl),{"data-dialog-overlay":"",class:"fixed inset-0 z-40 bg-overlay"}),L(u(Kl),{"data-relation-pivot-modal":"","data-dialog-content":"","aria-modal":"true",class:"fixed top-1/2 left-1/2 z-50 flex max-h-[calc(100vh-32px)] w-[calc(100%-32px)] max-w-[560px] -translate-x-1/2 -translate-y-1/2 flex-col gap-4 overflow-y-auto rounded-modal bg-surface p-6 text-text shadow-pop",onCloseAutoFocus:j},{default:T(()=>[O("div",J5,[O("div",Z5,[L(u(Gl),{class:"text-[20px] font-bold tracking-[-0.01em]"},{default:T(()=>[Se(P(u(Ne)(e.schema.messages.pivotTitle)),1)]),_:1}),L(u(Al),{class:"truncate text-muted",title:e.childName},{default:T(()=>[Se(P(e.childName),1)]),_:1},8,["title"])]),L(u(Pr),{"data-action":"close","aria-label":u(D)("backend::lang.form.close"),disabled:i.value,class:"flex size-[34px] shrink-0 items-center justify-center rounded-tab bg-subtle text-muted hover:bg-hover hover:text-text"},{default:T(()=>[L(u(Yt),{size:16,"aria-hidden":"true"})]),_:1},8,["aria-label","disabled"])]),o.value?(v(),$("div",Q5,[...k[1]||(k[1]=[O("span",{class:"block h-3 w-24 rounded-[6px] bg-skel"},null,-1),O("span",{class:"block h-input rounded-control bg-skel"},null,-1)])])):s.value?(v(),$("p",X5,P(u(D)("backend::lang.relation.child_load_failed")),1)):(v(),$("form",{key:2,class:"flex flex-col gap-4",novalidate:"",onSubmit:ut(H,["prevent"])},[L(Jl,{errors:l.value,"field-names":m.value},null,8,["errors","field-names"]),O("fieldset",{disabled:i.value,class:"m-0 min-w-0 border-0 p-0"},[L(Xl,{fields:h.value,values:r.value,errors:l.value,source:e.source,"record-id":null,"id-prefix":p.value,onUpdate:w},null,8,["fields","values","errors","source","id-prefix"])],8,eO)],32)),O("div",tO,[O("button",{type:"button","data-action":"cancel",disabled:i.value,class:"inline-flex h-button flex-1 items-center justify-center rounded-control border border-border-strong bg-surface font-semibold hover:bg-hover disabled:cursor-not-allowed disabled:opacity-60",onClick:k[0]||(k[0]=I=>R(!1))},P(u(D)("backend::lang.form.cancel")),9,nO),O("button",{type:"button","data-action":"save-pivot",disabled:i.value||o.value||s.value,class:"inline-flex h-button flex-1 items-center justify-center rounded-control bg-primary font-semibold text-on-primary hover:opacity-90 disabled:cursor-not-allowed disabled:opacity-60",onClick:H},P(i.value?u(D)("backend::lang.form.saving"):u(Ne)(e.schema.messages.pivotSubmit)),9,aO)])]),_:1})]),_:1})]),_:1},8,["open"]),L(Ya,{open:u(d).request.value!==null,message:u(d).request.value?.message??"","confirm-label":u(d).request.value?.confirmLabel,danger:u(d).request.value?.danger,onConfirm:u(d).confirm,onCancel:u(d).cancel},null,8,["open","message","confirm-label","danger","onConfirm","onCancel"])],64))}}),lO=["id","data-relation-name","data-deferred","aria-labelledby","aria-describedby"],oO={class:"flex flex-col gap-2"},sO={class:"flex flex-wrap items-center gap-3"},iO={class:"flex min-w-0 flex-1 flex-col"},uO=["id"],cO=["id"],dO={key:0,class:"relative block w-[220px] max-w-full"},fO={class:"sr-only"},pO=["value","placeholder"],hO={key:0,"data-relation-pending":"",class:"flex items-center gap-2 text-[13px] text-muted"},vO={key:0,role:"alert",class:"rounded-inner bg-danger-soft px-[18px] py-3.5 text-danger"},mO={key:1,class:"overflow-hidden rounded-inner border border-border"},yO={"data-relation-empty":"",class:"text-muted"},gO=["aria-label","onClick"],bO=300,_O=Q({__name:"RelationManager",props:{field:{},modelValue:{},controlId:{},invalid:{type:Boolean},describedBy:{},labels:{},source:{},recordId:{}},setup(e){const t=e,n=ot(Vr,null),a=x(()=>t.field.relation||t.field.name),r=x(()=>typeof t.recordId=="number"?t.recordId:n&&n.recordId===0&&t.field.deferrable?0:null),l=x(()=>r.value===0),o=x(()=>t.source!=null&&r.value!==null),s=n?.key??Pl(),i=q(null),c=q([]),d=q(null),f=q(!0),p=q(!1),h=q(""),m=q(1),b=q(null),g=q([]),y=q(!1),w=q(!1),A=q(!1),S=q("create"),R=q(null),H=q(!1),j=q(null),U=q("");let k=null,I=null,W=null;const V=Ja();let B=0,X=null;const M=x(()=>i.value?.view.list.columns??[]),ne=x(()=>i.value?.view.toolbarButtons??[]),ee=x(()=>i.value?.messages),ue=x(()=>`${t.controlId}-heading`),ve=x(()=>`${t.controlId}-comment`),ye=x(()=>ne.value.includes("create")&&(i.value?.manageForm?.length??0)>0),be=x(()=>ne.value.includes("update")&&(i.value?.manageForm?.length??0)>0),oe=x(()=>i.value?.kind==="belongsToMany"&&(i.value?.pivotForm?.length??0)>0&&(ne.value.includes("link")||ne.value.includes("update"))),Ce=x(()=>(i.value?.viewForm?.length??0)>0),ce=x(()=>be.value?"update":oe.value?"pivot":Ce.value?"preview":null),Ee=x(()=>be.value&&oe.value),Z=x(()=>ne.value.includes("unlink")||ne.value.includes("delete"));function K(){return l.value?{[_a]:s}:void 0}function te(){return{...t.source,id:r.value,name:a.value}}function ie(){l.value&&n?.markDirty()}async function le(){const{data:De}=await qe.GET("/{vendor}/{plugin}/{controller}/schema/relation/{name}",{params:{path:{...t.source,name:a.value}}});i.value=De?.data??null}async function pe(){const De=++B;f.value=!0,p.value=!1;try{const Me=h.value.trim(),Ie={page:m.value};Me!==""&&(Ie.search=Me),b.value&&(Ie.sort=b.value.column,Ie.dir=b.value.dir);const{data:$t}=await qe.GET("/{vendor}/{plugin}/{controller}/{id}/relations/{name}",{params:{path:te(),query:Ie,header:K()}});if(De!==B)return;c.value=$t?.data??[],d.value=$t?.meta??null,p.value=!$t}catch{De===B&&(c.value=[],d.value=null,p.value=!0)}finally{De===B&&(f.value=!1)}}async function _(){if(o.value){try{await le()}catch{i.value=null}if(!i.value){f.value=!1,p.value=!0;return}await pe()}}function C(De){h.value=De.target.value,X!==null&&clearTimeout(X),X=setTimeout(()=>{X=null,m.value=1,g.value=[],pe()},bO)}function E(De){m.value=De,g.value=[],pe()}function J(De){const Me=b.value;Me?.column!==De?b.value={column:De,dir:"asc"}:Me.dir==="asc"?b.value={column:De,dir:"desc"}:b.value=null,m.value=1,g.value=[],pe()}function Y(){return g.value.map(Number).filter(De=>Number.isInteger(De)&&De>0)}function ae(De){const Me=De.id;return typeof Me=="number"&&Number.isInteger(Me)?Me:typeof Me=="string"&&/^\d+$/.test(Me)?Number(Me):null}function ge(De){const Me=M.value[0]?.key,Ie=Me?De[Me]:void 0;return typeof Ie=="string"||typeof Ie=="number"?String(Ie):""}async function me(){const De=Y();if(!(y.value||De.length===0||!i.value||!await V.ask({message:Ne(ee.value?.unlinkConfirm,De.length),confirmLabel:Ne(ee.value?.unlinkSelected),danger:!0}))){y.value=!0;try{const Ie=await qe.POST("/{vendor}/{plugin}/{controller}/{id}/relations/{name}/unlink",{params:{path:te(),header:K()},body:{ids:De}});if(Ie.data){g.value=[],ie(),Te(Ne(ee.value?.unlinked,Ie.data.data.removed??De.length)),await pe();return}Te(Ie.error?.error.message||D("backend::lang.form.error_generic"),"danger")}catch{Te(D("backend::lang.form.error_generic"),"danger")}finally{y.value=!1}}}async function _e(De){y.value=!0;try{const Me=await qe.POST("/{vendor}/{plugin}/{controller}/{id}/relations/{name}/delete",{params:{path:te(),header:K()},body:{ids:De}});if(Me.data){g.value=[],ie(),Te(Ne(ee.value?.deleted,Me.data.data.deleted||De.length)),await pe();return}Te(Me.error?.error.message||D("backend::lang.form.error_generic"),"danger")}catch{Te(D("backend::lang.form.error_generic"),"danger")}finally{y.value=!1}}async function G(){const De=Y();y.value||De.length===0||!i.value||await V.ask({message:Ne(ee.value?.deleteConfirm,De.length),confirmLabel:Ne(ee.value?.deleteSelected),danger:!0},()=>_e(De))}async function de(De){ie(),Te(Ne(ee.value?.linked,De)),g.value=[],await pe()}function se(De){k=De.currentTarget??W,S.value="create",R.value=null,A.value=!0}function $e(De,Me){const Ie=ae(De);Ie!==null&&(k=Me,j.value=Ie,U.value=ge(De),H.value=!0)}function Pe(De,Me){const Ie=ce.value,$t=ae(De);if(!(Ie===null||$t===null)){if(Ie==="pivot"){$e(De,Me);return}k=Me,S.value=Ie,R.value=$t,A.value=!0}}async function Ve(){ie(),g.value=[],await pe()}async function Ke(){ie(),await pe()}async function He(){g.value=[],await pe()}function lt(){const De=k&&k.isConnected?k:null;k=null,De?.focus()}function it(){I?.focus()}function kt(De){const Me=De?.$el;return Me instanceof HTMLElement?Me:null}function qt(De){I=kt(De)}function sn(De){W=kt(De)}return Pt(()=>{X!==null&&clearTimeout(X)}),_(),(De,Me)=>o.value?(v(),$("section",{key:0,id:e.controlId,"data-relation-manager":"","data-relation-name":a.value,"data-deferred":l.value?"true":void 0,"aria-labelledby":ue.value,"aria-describedby":e.field.comment?ve.value:void 0,tabindex:"-1",class:"flex flex-col gap-4"},[O("div",oO,[O("header",sO,[O("div",iO,[O("h2",{id:ue.value,class:"text-[17px] font-bold tracking-[-0.01em]"},P(i.value?.label||e.field.label||a.value),9,uO),e.field.comment?(v(),$("p",{key:0,id:ve.value,class:"text-[13px] text-muted"},P(e.field.comment),9,cO)):re("",!0)]),i.value?.view.showSearch?(v(),$("label",dO,[O("span",fO,P(u(D)("backend::lang.list.search")),1),L(u(Ms),{size:16,class:"pointer-events-none absolute top-1/2 left-3 -translate-y-1/2 text-muted","aria-hidden":"true"}),O("input",{type:"search","data-relation-search":"",value:h.value,placeholder:u(D)("backend::lang.list.search_prompt"),class:"h-[38px] w-full rounded-control border border-transparent bg-subtle pr-3 pl-9",onInput:C,onKeydown:Me[0]||(Me[0]=va(ut(()=>{},["prevent"]),["enter"]))},null,40,pO)])):re("",!0),(v(!0),$(xe,null,Be(ne.value,Ie=>(v(),$(xe,{key:Ie},[Ie==="create"&&ye.value?(v(),F(et,{key:0,ref_for:!0,ref:sn,"data-action":"create",size:"sm",variant:"primary",icon:u(ic),disabled:y.value||!i.value,"aria-haspopup":"dialog",onClick:se},{default:T(()=>[Se(P(u(Ne)(ee.value?.create)),1)]),_:1},8,["icon","disabled"])):Ie==="link"?(v(),F(et,{key:1,ref_for:!0,ref:qt,"data-action":"link",size:"sm",variant:ye.value?"outline":"primary",icon:u(Ov),disabled:y.value||!i.value,"aria-haspopup":"dialog",onClick:Me[1]||(Me[1]=$t=>w.value=!0)},{default:T(()=>[Se(P(u(Ne)(ee.value?.link)),1)]),_:1},8,["variant","icon","disabled"])):Ie==="delete"?(v(),F(et,{key:2,"data-action":"delete",size:"sm",variant:"danger",icon:u(Ll),disabled:y.value||g.value.length===0,onClick:G},{default:T(()=>[Se(P(u(Ne)(ee.value?.deleteSelected)),1)]),_:1},8,["icon","disabled"])):Ie==="unlink"?(v(),F(et,{key:3,"data-action":"unlink",size:"sm",variant:"danger",icon:u(Dv),disabled:y.value||g.value.length===0,onClick:me},{default:T(()=>[Se(P(u(Ne)(ee.value?.unlinkSelected)),1)]),_:1},8,["icon","disabled"])):re("",!0)],64))),128))]),l.value?(v(),$("p",hO,[L(u(wv),{size:14,class:"shrink-0","aria-hidden":"true"}),O("span",null,P(u(D)("backend::lang.relation.pending_note")),1)])):re("",!0)]),p.value&&!f.value?(v(),$("p",vO,P(u(D)("backend::lang.relation.load_failed")),1)):(v(),$("div",mO,[L(hy,{selected:g.value,"onUpdate:selected":Me[2]||(Me[2]=Ie=>g.value=Ie),variant:"relation",columns:M.value,rows:c.value,loading:f.value,selectable:Z.value,sortable:!0,sort:b.value,openable:ce.value!==null,trailing:Ee.value,onSort:J,onOpen:Pe},{empty:T(()=>[O("span",yO,P(u(Ne)(ee.value?.empty)),1)]),trailing:T(({row:Ie})=>[O("button",{type:"button","data-action":"edit-pivot","aria-label":u(Ne)(ee.value?.editPivot,void 0,{name:ge(Ie)}),class:"flex size-8 items-center justify-center rounded-pager text-muted transition-colors duration-150 ease-out hover:bg-hover hover:text-text",onClick:$t=>$e(Ie,$t.currentTarget)},[L(u(Rw),{size:16,"aria-hidden":"true"})],8,gO)]),_:1},8,["selected","columns","rows","loading","selectable","sort","openable","trailing"]),d.value&&d.value.last_page>1?(v(),F(vy,{key:0,meta:d.value,loading:f.value,"per-page-options":[],"per-page":d.value.per_page,onPage:E},null,8,["meta","loading","per-page"])):re("",!0)])),i.value&&ne.value.includes("link")?(v(),F(Y5,{key:2,open:w.value,"onUpdate:open":Me[3]||(Me[3]=Ie=>w.value=Ie),source:e.source,"record-id":r.value,relation:a.value,schema:i.value,"session-key":l.value?u(s):null,onLinked:de,onClosed:it},null,8,["open","source","record-id","relation","schema","session-key"])):re("",!0),i.value&&(ye.value||ce.value==="update"||ce.value==="preview")?(v(),F(x5,{key:3,open:A.value,"onUpdate:open":Me[4]||(Me[4]=Ie=>A.value=Ie),source:e.source,"owner-id":r.value,relation:a.value,schema:i.value,mode:S.value,"child-id":R.value,"session-key":u(s),"can-delete":ne.value.includes("delete"),onChanged:Ve,onGone:He,onClosed:lt},null,8,["open","source","owner-id","relation","schema","mode","child-id","session-key","can-delete"])):re("",!0),i.value&&oe.value?(v(),F(rO,{key:4,open:H.value,"onUpdate:open":Me[5]||(Me[5]=Ie=>H.value=Ie),source:e.source,"owner-id":r.value,relation:a.value,schema:i.value,"child-id":j.value,"child-name":U.value,"session-key":u(s),onSaved:Ke,onGone:He,onClosed:lt},null,8,["open","source","owner-id","relation","schema","child-id","child-name","session-key"])):re("",!0),L(Ya,{open:u(V).request.value!==null,message:u(V).request.value?.message??"","confirm-label":u(V).request.value?.confirmLabel,danger:u(V).request.value?.danger,busy:u(V).busy.value,onConfirm:u(V).confirm,onCancel:u(V).cancel},null,8,["open","message","confirm-label","danger","busy","onConfirm","onCancel"])],8,lO)):re("",!0)}}),xO=["id","aria-describedby"],wO=["id","aria-describedby"],kO={class:"min-w-0 [overflow-wrap:anywhere]"},$O=["id"],CO=["data-relation"],SO={class:"flex size-[22px] items-center justify-center rounded-full bg-primary text-[10px] font-bold text-on-primary","aria-hidden":"true"},AO={class:"font-semibold"},EO={key:0,"data-chip-locked":"",class:"flex size-6 items-center justify-center text-muted"},MO={class:"sr-only"},DO=["aria-label","onClick"],OO=["id","aria-expanded","aria-controls","aria-activedescendant","aria-required","aria-invalid","aria-describedby","value","placeholder"],PO={key:1,class:"relative"},qO=["id","aria-expanded","aria-controls","aria-activedescendant","aria-required","aria-invalid","aria-describedby","value","placeholder"],TO=["id"],RO=["id","data-value","aria-selected","aria-disabled","onMousedown"],IO={class:"min-w-0 truncate"},BO={key:0,role:"presentation",class:"px-3 py-2 text-[13px] text-muted"},FO={key:1,role:"presentation",class:"px-3 py-2 text-[13px] text-muted"},NO={key:2,role:"presentation",class:"p-1"},VO=["id"],LO=20,jO=300,zO=Q({__name:"RelationField",props:{field:{},modelValue:{},controlId:{},invalid:{type:Boolean},describedBy:{},labels:{},source:{},recordId:{}},emits:["update:modelValue"],setup(e,{emit:t}){const n=e,a=t,r=x(()=>n.field.readOnly?"readonly":n.field.multiple?"multiple":"single"),l=x(()=>`${n.controlId}-listbox`),o=q({}),s=q(new Set);function i(Z){const K={...o.value};let te=null;for(const ie of Z)K[ie.value]=ie.label,ie.locked&&!s.value.has(ie.value)&&(te??=new Set(s.value),te.add(ie.value));o.value=K,te&&(s.value=te)}Fe(()=>n.labels,Z=>i(Z??[]),{immediate:!0});function c(Z){return Z!==null&&s.value.has(Z)}const d=x(()=>`${n.controlId}-locked-note`),f=x(()=>s.value.size>0),p=x(()=>[n.describedBy,f.value?d.value:""].filter(Boolean).join(" "));function h(Z){return typeof Z=="number"&&Number.isInteger(Z)?Z:typeof Z=="string"&&/^\d+$/.test(Z)?Number(Z):null}const m=x(()=>h(n.modelValue)),b=x(()=>Array.isArray(n.modelValue)?n.modelValue.map(h).filter(Z=>Z!==null):[]);function g(Z){return o.value[Z]??String(Z)}function y(Z){return Z.split(/[\s@._-]+/).filter(Boolean).slice(0,2).map(K=>K.charAt(0).toUpperCase()).join("")}const w=x(()=>{const Z=n.labels?.[0]?.label;return Z||(n.field.emptyOption??"—")}),A=q(!1),S=q(""),R=q([]),H=q(0),j=q(0),U=q(!1),k=q(-1);let I=0,W=null;const V=x(()=>H.value{const Z=[];r.value==="single"&&n.field.emptyOption!==void 0&&Z.push({key:"empty",label:n.field.emptyOption,value:null,muted:!0,locked:!1});const K=new Set(b.value);for(const te of R.value)r.value==="multiple"&&K.has(te.value)||Z.push({key:`option-${te.value}`,label:te.label,value:te.value,muted:!1,locked:!!te.locked||c(te.value)});return Z});function M(Z){return`${l.value}-${Z}`}function ne(){A.value||(A.value=!0,k.value=-1,B(1,!1))}function ee(){A.value=!1,S.value="",k.value=-1,W!==null&&(clearTimeout(W),W=null)}function ue(Z){S.value=Z.target.value,A.value=!0,k.value=-1,W!==null&&clearTimeout(W),W=setTimeout(()=>{W=null,B(1,!1)},jO)}function ve(){V.value&&!U.value&&B(H.value+1,!0)}function ye(Z){const K=Z.target;K.scrollTop+K.clientHeight>=K.scrollHeight-24&&ve()}function be(Z){Z.locked||(r.value==="multiple"?Z.value!==null&&!b.value.includes(Z.value)&&a("update:modelValue",[...b.value,Z.value]):a("update:modelValue",Z.value),ee())}function oe(Z){c(Z)||a("update:modelValue",b.value.filter(K=>K!==Z))}function Ce(Z,K){for(let te=Z+K;te>=0&&te!c(te));K!==void 0&&oe(K)}break}}const Ee=x(()=>m.value!==null?g(m.value):n.field.emptyOption??"");return Pt(()=>{W!==null&&clearTimeout(W)}),(Z,K)=>r.value==="readonly"?(v(),$("div",{key:0,id:e.controlId,"data-relation-readonly":"","aria-describedby":e.describedBy||void 0,class:ke([e.labels?.[0]?.label?"text-text":"text-muted","flex min-h-input items-center rounded-control border border-border bg-subtle px-3.5"])},P(w.value),11,xO)):r.value==="single"&&c(m.value)?(v(),$(xe,{key:1},[O("div",{id:e.controlId,"data-relation-locked":"","aria-describedby":p.value||void 0,class:"flex min-h-input items-center justify-between gap-2 rounded-control border border-border bg-subtle px-3.5"},[O("span",kO,P(Ee.value),1),L(u(Ra),{size:14,class:"shrink-0 text-muted","aria-hidden":"true"})],8,wO),O("p",{id:d.value,"data-locked-note":"",class:"mt-1.5 flex items-center gap-2 text-[13px] text-muted"},[L(u(Ra),{size:14,class:"shrink-0","aria-hidden":"true"}),O("span",null,P(u(D)("backend::lang.form.locked_note")),1)],8,$O)],64)):(v(),$("div",{key:2,class:"relative","data-relation":r.value},[r.value==="multiple"?(v(),$("div",{key:0,class:ke([e.invalid?"border-danger":"border-border-strong","flex min-h-input flex-wrap items-center gap-1.5 rounded-control border bg-surface p-1.5"])},[(v(!0),$(xe,null,Be(b.value,te=>(v(),$("span",{key:te,"data-chip":"",class:"inline-flex h-[30px] items-center gap-1.5 rounded-pill bg-subtle pr-1 pl-1"},[O("span",SO,P(y(g(te))),1),O("span",AO,P(g(te)),1),c(te)?(v(),$("span",EO,[L(u(Ra),{size:14,"aria-hidden":"true"}),O("span",MO,P(u(D)("backend::lang.form.locked_item",{name:g(te)})),1)])):(v(),$("button",{key:1,type:"button","aria-label":u(D)("backend::lang.form.remove_item",{name:g(te)}),class:"flex size-6 items-center justify-center rounded-full text-muted hover:bg-hover hover:text-text",onClick:ie=>oe(te)},[L(u(Yt),{size:14,"aria-hidden":"true"})],8,DO))]))),128)),O("input",{id:e.controlId,type:"text",role:"combobox",autocomplete:"off","aria-expanded":A.value?"true":"false","aria-controls":l.value,"aria-autocomplete":"list","aria-activedescendant":A.value&&k.value>=0?M(k.value):void 0,"aria-required":e.field.required?"true":void 0,"aria-invalid":e.invalid?"true":void 0,"aria-describedby":p.value||void 0,value:S.value,placeholder:u(D)("backend::lang.form.add_item"),class:"h-[30px] min-w-[120px] flex-1 border-0 bg-transparent px-2 focus-visible:shadow-none",onClick:ne,onInput:ue,onKeydown:ce,onBlur:ee},null,40,OO)],2)):(v(),$("div",PO,[O("input",{id:e.controlId,type:"text",role:"combobox",autocomplete:"off","aria-expanded":A.value?"true":"false","aria-controls":l.value,"aria-autocomplete":"list","aria-activedescendant":A.value&&k.value>=0?M(k.value):void 0,"aria-required":e.field.required?"true":void 0,"aria-invalid":e.invalid?"true":void 0,"aria-describedby":p.value||void 0,value:A.value?S.value:Ee.value,placeholder:A.value&&Ee.value||u(D)("backend::lang.form.select_placeholder"),class:ke([[e.invalid?"border-danger":"border-border-strong",!A.value&&m.value===null?"text-muted":"text-text"],"h-input w-full rounded-control border bg-surface pr-10 pl-3.5"]),onClick:ne,onInput:ue,onKeydown:ce,onBlur:ee},null,42,qO),L(u(Nl),{size:16,class:"pointer-events-none absolute top-1/2 right-3.5 -translate-y-1/2 text-muted","aria-hidden":"true"})])),Va(O("ul",{id:l.value,role:"listbox",class:"absolute inset-x-0 top-full z-20 mt-1 max-h-64 overflow-y-auto rounded-inner border border-border bg-surface p-1 shadow-menu",onScroll:ye},[(v(!0),$(xe,null,Be(X.value,(te,ie)=>(v(),$("li",{id:M(ie),key:te.key,role:"option","data-value":te.value??"empty","aria-selected":r.value==="single"&&te.value===m.value?"true":"false","aria-disabled":te.locked?"true":void 0,class:ke([[te.muted||te.locked?"text-muted":"text-text",te.locked?"cursor-not-allowed":"cursor-pointer hover:bg-hover",ie===k.value&&!te.locked?"bg-hover":""],"flex h-10 items-center justify-between gap-2 rounded-control px-3"]),onMousedown:ut(le=>be(te),["prevent"])},[O("span",IO,P(te.label),1),te.locked?(v(),F(u(Ra),{key:0,size:14,class:"shrink-0","aria-hidden":"true"})):re("",!0)],42,RO))),128)),U.value?(v(),$("li",BO,P(u(D)("backend::lang.form.loading_options")),1)):X.value.filter(te=>te.value!==null).length===0?(v(),$("li",FO,P(u(D)("backend::lang.form.no_options")),1)):re("",!0),V.value&&!U.value?(v(),$("li",NO,[O("button",{type:"button","data-action":"more-options",class:"h-8 w-full rounded-control text-[13px] font-semibold text-muted hover:bg-hover hover:text-text",onMousedown:ut(ve,["prevent"])},P(u(D)("backend::lang.form.more_options")),33)])):re("",!0)],40,TO),[[cu,A.value]]),f.value?(v(),$("p",{key:2,id:d.value,"data-locked-note":"",class:"mt-1.5 flex items-center gap-2 text-[13px] text-muted"},[L(u(Ra),{size:14,class:"shrink-0","aria-hidden":"true"}),O("span",null,P(u(D)("backend::lang.form.locked_note")),1)],8,VO)):re("",!0)],8,CO))}}),UO={class:"flex min-w-0 flex-col"},HO=["for"],KO={key:0,class:"text-danger","aria-hidden":"true"},WO=["id"],GO=["id","aria-checked","aria-invalid","aria-describedby"],YO=Q({__name:"SwitchField",props:{field:{},modelValue:{},controlId:{},invalid:{type:Boolean},describedBy:{},labels:{},source:{},recordId:{}},emits:["update:modelValue"],setup(e,{emit:t}){const n=e,a=t,r=x(()=>Gc(n.modelValue));function l(){a("update:modelValue",xy(n.modelValue,!r.value))}return(o,s)=>(v(),$("div",{class:ke([e.invalid?"border-danger":"border-border","flex items-center justify-between gap-4 rounded-inner border px-4 py-3.5"]),"data-toggle-card":""},[O("div",UO,[O("label",{for:e.controlId,class:"font-semibold"},[Se(P(e.field.label||e.field.name),1),e.field.required?(v(),$("span",KO," *")):re("",!0)],8,HO),e.field.comment?(v(),$("p",{key:0,id:`${e.controlId}-comment`,class:"text-[13px] text-muted"},P(e.field.comment),9,WO)):re("",!0)]),O("button",{id:e.controlId,type:"button",role:"switch","aria-checked":r.value?"true":"false","aria-invalid":e.invalid?"true":void 0,"aria-describedby":e.describedBy||void 0,class:ke([r.value?"bg-primary":"bg-border-strong","relative h-[26px] w-[44px] shrink-0 rounded-pill transition-colors duration-150 ease-out"]),onClick:l},[O("span",{class:ke([r.value?"translate-x-[18px] bg-on-primary":"translate-x-0 bg-white","absolute top-[3px] left-[3px] size-[20px] rounded-full shadow-tab transition-transform duration-150 ease-out"]),"aria-hidden":"true"},null,2)],10,GO)],2))}}),JO=["id","name","value","required","aria-required","aria-invalid","aria-describedby"],Ay=Q({__name:"TextField",props:{field:{},modelValue:{},controlId:{},invalid:{type:Boolean},describedBy:{},labels:{},source:{},recordId:{}},emits:["update:modelValue"],setup(e,{emit:t}){const n=e,a=t,r=x(()=>n.modelValue===null||n.modelValue===void 0?"":String(n.modelValue)),l=x(()=>Nr(n.field));return(o,s)=>(v(),$("input",Oe({id:e.controlId},l.value,{name:e.field.name,type:"text",value:r.value,required:e.field.required||void 0,"aria-required":e.field.required?"true":void 0,"aria-invalid":e.invalid?"true":void 0,"aria-describedby":e.describedBy||void 0,class:[u($n)(e.invalid),"h-input"],onInput:s[0]||(s[0]=i=>a("update:modelValue",i.target.value))}),null,16,JO))}}),ZO=["id","name","rows","value","required","aria-required","aria-invalid","aria-describedby"],Ey=Q({__name:"TextareaField",props:{field:{},modelValue:{},controlId:{},invalid:{type:Boolean},describedBy:{},labels:{},source:{},recordId:{}},emits:["update:modelValue"],setup(e,{emit:t}){const n=e,a=t,r={tiny:2,small:4,large:8,huge:12,giant:18},l=x(()=>r[n.field.size??""]??5),o=x(()=>n.modelValue===null||n.modelValue===void 0?"":String(n.modelValue)),s=x(()=>Nr(n.field));return(i,c)=>(v(),$("textarea",Oe({id:e.controlId},s.value,{name:e.field.name,rows:l.value,value:o.value,required:e.field.required||void 0,"aria-required":e.field.required?"true":void 0,"aria-invalid":e.invalid?"true":void 0,"aria-describedby":e.describedBy||void 0,class:[u($n)(e.invalid),"min-h-input resize-y py-2.5"],onInput:c[0]||(c[0]=d=>a("update:modelValue",d.target.value))}),null,16,ZO))}}),QO={class:"flex flex-col gap-1.5"},XO=["aria-pressed"],eP={key:0,class:"flex flex-col gap-1.5"},tP={key:0,"data-markdown-preview-error":"",role:"status",class:"text-[13px] text-danger"},nP=["aria-busy","innerHTML"],aP=["id","name","rows","value","required","aria-required","aria-invalid","aria-describedby"],$p="Preview unavailable.",rP=300,My=Q({__name:"MarkdownField",props:{field:{},modelValue:{},controlId:{},invalid:{type:Boolean},describedBy:{},labels:{},source:{},recordId:{}},emits:["update:modelValue"],setup(e,{emit:t}){const n=e,a=t,r={tiny:2,small:4,large:8,huge:12,giant:18},l=x(()=>r[n.field.size??""]??8),o=x(()=>n.modelValue===null||n.modelValue===void 0?"":String(n.modelValue)),s=x(()=>Nr(n.field)),i=q(!1),c=q(""),d=q(""),f=q(!1);let p=0,h=null;function m(){h!==null&&(clearTimeout(h),h=null)}function b(w){const S=w?.error?.details?.markdown;return Array.isArray(S)&&typeof S[0]=="string"&&S[0]!==""?S[0]:$p}async function g(){const w=++p;if(o.value.trim()===""){c.value="",d.value="",f.value=!1;return}f.value=!0;try{const{data:A,error:S}=await qe.POST("/markdown/preview",{body:{markdown:o.value}});if(w!==p)return;A?(c.value=A.data.html,d.value=""):(c.value="",d.value=b(S))}catch{if(w!==p)return;c.value="",d.value=$p}finally{w===p&&(f.value=!1)}}function y(){i.value=!i.value,m(),i.value?g():(p++,f.value=!1)}return Fe(o,()=>{i.value&&(m(),h=setTimeout(()=>{h=null,g()},rP))}),Pt(()=>{m(),p++}),(w,A)=>(v(),$("div",QO,[O("button",{type:"button","data-markdown-preview":"",class:"self-start rounded-pager px-2 py-1 text-[13px] text-muted hover:bg-hover hover:text-text","aria-pressed":i.value?"true":"false",onClick:y}," Preview ",8,XO),i.value?(v(),$("div",eP,[d.value?(v(),$("p",tP,P(d.value),1)):re("",!0),O("div",{"data-markdown-preview-pane":"",class:ke([u($n)(e.invalid),"summer-markdown min-h-input overflow-auto px-3.5 py-2.5"]),"aria-busy":f.value?"true":"false",innerHTML:c.value},null,10,nP)])):(v(),$("textarea",Oe({key:1,id:e.controlId},s.value,{name:e.field.name,rows:l.value,value:o.value,required:e.field.required||void 0,"aria-required":e.field.required?"true":void 0,"aria-invalid":e.invalid?"true":void 0,"aria-describedby":e.describedBy||void 0,class:[u($n)(e.invalid),"min-h-input resize-y py-2.5"],onInput:A[0]||(A[0]=S=>a("update:modelValue",S.target.value))}),null,16,aP))]))}}),lP=["aria-labelledby","data-ml-field"],oP={class:"flex flex-wrap items-center gap-2"},sP=["value","aria-label"],iP=["value"],ed=Q({__name:"MLField",props:{inner:{},innerType:{},mlType:{},field:{},modelValue:{},controlId:{},invalid:{type:Boolean},describedBy:{},labels:{},source:{},recordId:{}},emits:["update:modelValue"],setup(e,{emit:t}){const n=e,a=t,r=x(()=>Fn(n.modelValue)),l=ot(ts,null),o=x(()=>{const g=l?.value;return g&&g.length>0?[...g]:[]}),s=q(o.value[0]??"en"),i=x(()=>`${n.controlId}-label`),c=x(()=>`${n.controlId}-editor`),d=x(()=>r.value[s.value]??""),f=x(()=>({...n.field,type:n.innerType}));function p(g){g&&(s.value=g)}function h(g){const y=g.target.value;p(y),u5(y)}function m(g){a("update:modelValue",{...r.value,[s.value]:g})}function b(g){const y=g.detail;typeof y=="string"&&y!==""&&p(y)}return mt(()=>{window.addEventListener(ql,b)}),wa(()=>{window.removeEventListener(ql,b)}),(g,y)=>(v(),$("div",{class:"flex flex-col gap-1.5",role:"group","aria-labelledby":i.value,"data-ml-field":e.mlType},[O("div",oP,[O("select",{"data-ml-locale":"",class:"rounded-control border border-border-strong bg-surface px-2 py-1 text-[13px]",value:s.value,"aria-label":`Locale for ${e.field.label||e.field.name}`,onChange:h},[(v(!0),$(xe,null,Be(o.value,w=>(v(),$("option",{key:w,value:w},P(w),9,iP))),128))],40,sP)]),(v(),F(Bt(e.inner),{field:f.value,"model-value":d.value,"control-id":c.value,invalid:e.invalid,"described-by":e.describedBy,"onUpdate:modelValue":m},null,8,["field","model-value","control-id","invalid","described-by"]))],8,lP))}}),uP=Q({__name:"MLTextField",props:{field:{},modelValue:{},controlId:{},invalid:{type:Boolean},describedBy:{},labels:{},source:{},recordId:{}},emits:["update:modelValue"],setup(e,{emit:t}){const n=e,a=t;return(r,l)=>(v(),F(ed,Oe(n,{inner:Ay,"inner-type":"text","ml-type":"mltext","onUpdate:modelValue":l[0]||(l[0]=o=>a("update:modelValue",o))}),null,16))}}),cP=Q({__name:"MLTextareaField",props:{field:{},modelValue:{},controlId:{},invalid:{type:Boolean},describedBy:{},labels:{},source:{},recordId:{}},emits:["update:modelValue"],setup(e,{emit:t}){const n=e,a=t;return(r,l)=>(v(),F(ed,Oe(n,{inner:Ey,"inner-type":"textarea","ml-type":"mltextarea","onUpdate:modelValue":l[0]||(l[0]=o=>a("update:modelValue",o))}),null,16))}}),dP=Q({__name:"MLMarkdownField",props:{field:{},modelValue:{},controlId:{},invalid:{type:Boolean},describedBy:{},labels:{},source:{},recordId:{}},emits:["update:modelValue"],setup(e,{emit:t}){const n=e,a=t;return(r,l)=>(v(),F(ed,Oe(n,{inner:My,"inner-type":"markdown","ml-type":"mlmarkdown","onUpdate:modelValue":l[0]||(l[0]=o=>a("update:modelValue",o))}),null,16))}}),fP=["id","aria-describedby"],pP={key:0},hP={class:"font-mono text-text"},vP={key:1},mP={class:"font-mono text-text"},bo="\0",yP=Q({__name:"UnsupportedField",props:{field:{},modelValue:{},controlId:{},invalid:{type:Boolean},describedBy:{},labels:{},source:{},recordId:{}},setup(e){const t=e,n=x(()=>{const[r="",l=""]=D("backend::lang.form.unsupported_field",{type:bo}).split(bo);return{before:r,after:l}}),a=x(()=>D("backend::lang.form.unsupported_field",{type:bo}).includes(bo));return(r,l)=>(v(),$("div",{id:e.controlId,"data-unsupported-field":"","aria-describedby":e.describedBy||void 0,class:"flex min-h-input items-center gap-2.5 rounded-control border-[1.5px] border-dashed border-border-strong bg-subtle px-3.5 text-[13px] text-muted"},[L(u(Av),{size:16,"aria-hidden":"true"}),a.value?(v(),$("span",pP,[Se(P(n.value.before),1),O("code",hP,P(t.field.type),1),Se(P(n.value.after),1)])):(v(),$("span",vP,[Se(P(u(D)("backend::lang.form.unsupported_field"))+" ",1),O("code",mP,P(t.field.type),1)]))],8,fP))}}),gP=["id","aria-labelledby","aria-describedby","aria-busy"],bP={key:0,"data-widget-skeleton":"",class:"h-[42px] w-[160px] rounded-control bg-skel","aria-hidden":"true"},_P=Q({__name:"WidgetField",props:{field:{},modelValue:{},controlId:{},invalid:{type:Boolean},describedBy:{},labels:{},source:{},recordId:{}},setup(e){const t=e,n=ot(Yc,null),a=ot(Jc,()=>{}),r=ot(ky,null),l=ot($y,()=>Promise.resolve([])),o=q("loading"),s=q(null);let i=null,c=!1,d=!1;function f(){const S=n?.value??{},R={};for(const H of t.field.fill??[])S[H]!==void 0&&(R[H]=S[H]);return R}const p=x(()=>JSON.stringify(f())),h=x(()=>r?.value||wl.value);function m(S){let R;return{promise:new Promise((j,U)=>{R=setTimeout(()=>U(new Error("widget element was not defined in time")),S)}),cancel:()=>clearTimeout(R)}}async function b(S){const R=await l();if(customElements.get(S))return;if(R.length>0)throw new Error(`plugin script failed: ${R.join(", ")}`);const H=m(aD);try{await Promise.race([customElements.whenDefined(S),H.promise])}finally{H.cancel()}}function g(S){Te(S||D("backend::lang.extension.action_failed"),"danger"),i?.setAttribute("state","error")}async function y(S){const R=t.source,H=i;if(!(!H||c||!R)){c=!0,H.setAttribute("busy",""),H.removeAttribute("state");try{const j=await qe.POST("/{vendor}/{plugin}/{controller}/widgets/{field}",{params:{path:{...R,field:t.field.name}},body:{record_id:t.recordId??void 0,values:f(),...S===void 0?{}:{payload:S}}});if(j.data){const U=j.data.data,k=U.fill??{};for(const I of t.field.fill??[])Object.hasOwn(k,I)&&a(I,k[I]);d||(Object.hasOwn(U,"data")?H.setAttribute("data",JSON.stringify(U.data)):H.removeAttribute("data"),H.dispatchEvent(new CustomEvent(nD,{detail:{data:U.data,fill:k,message:U.message}}))),U.message&&Te(U.message)}else g(j.error?.error.message)}catch{g()}finally{c=!1,i?.removeAttribute("busy")}}}function w(S){const R=S.detail;if(R!==null&&typeof R=="object"&&Object.hasOwn(R,"payload"))return R.payload}function A(S){y(w(S))}return mt(async()=>{const S=t.field.widget??"";try{if(S===""||!t.source)throw new Error("widget field without a tag or controller");if(await b(S),d||!s.value)return;const R=document.createElement(S);R.setAttribute("record-id",t.recordId==null?"":String(t.recordId)),R.setAttribute("field-name",t.field.name),R.setAttribute("locale",h.value),R.setAttribute("fill-values",p.value),R.setAttribute("label",t.field.actionLabel||t.field.label||t.field.name),R.setAttribute("busy-label",D("backend::lang.extension.busy")),R.addEventListener(wp,A),s.value.append(R),i=R,o.value="ready"}catch{d||(o.value="failed")}}),Fe(p,S=>i?.setAttribute("fill-values",S)),Fe(h,S=>i?.setAttribute("locale",S)),Pt(()=>{d=!0,i?.removeEventListener(wp,A),i=null}),(S,R)=>o.value==="failed"?(v(),F(Kc,{key:0,id:e.controlId,"data-widget-failed":"","aria-describedby":e.describedBy||void 0,text:u(D)("backend::lang.extension.widget_failed")},null,8,["id","aria-describedby","text"])):(v(),$("div",{key:1,id:e.controlId,role:"group","data-widget-host":"","aria-labelledby":e.field.label?`${e.controlId}-label`:void 0,"aria-describedby":e.describedBy||void 0,"aria-busy":o.value==="loading"?"true":void 0,class:"flex min-h-input items-center"},[o.value==="loading"?(v(),$("span",bP)):re("",!0),O("div",{ref_key:"mountPoint",ref:s,class:"contents"},null,512)],8,gP))}}),Za="relation-manager",Dy=new Map([[Za,()=>_O]]),Oy=new Map([["text",Ay],["textarea",Ey],["number",U8],["dropdown",tD],["switch",YO],["checkbox",O6],["relation",zO],["widget",_P],["partial",K8],["fileupload",j8],["datepicker",Z6],["password",J8],["permissioneditor",s5],["markdown",My],["mltext",uP],["mltextarea",cP],["mlmarkdown",dP]]),xP=new Set(["switch","checkbox",Za]),wP=new Set([Za]),kP=new Set([Za,"widget","partial","fileupload"]),$P=new Set(["widget","partial","fileupload","permissioneditor","mltext","mltextarea","mlmarkdown"]);function Py(e){return Oy.get(e)??Dy.get(e)?.()??yP}function CP(e){return(Oy.has(e)||Dy.has(e))&&!kP.has(e)}function SP(e){return wP.has(e)}function AP(e){return xP.has(e)}function EP(e){return $P.has(e)}const MP=Q({__name:"FieldRenderer",props:{field:{},modelValue:{},controlId:{},invalid:{type:Boolean},describedBy:{},labels:{},source:{},recordId:{}},emits:["update:modelValue"],setup(e,{emit:t}){const n=e,a=t,r=x(()=>Py(n.field.type));return(l,o)=>(v(),F(Bt(r.value),{field:e.field,"model-value":e.modelValue,"control-id":e.controlId,invalid:e.invalid,"described-by":e.describedBy,labels:e.labels,source:e.source,"record-id":e.recordId,"onUpdate:modelValue":o[0]||(o[0]=s=>a("update:modelValue",s))},null,8,["field","model-value","control-id","invalid","described-by","labels","source","record-id"]))}}),DP=["data-field"],OP=["id"],PP={key:0,class:"text-danger","aria-hidden":"true"},qP=["for"],TP={key:0,class:"text-danger","aria-hidden":"true"},RP=["id"],IP=["id"],BP=Q({__name:"FormField",props:{field:{},modelValue:{},errors:{},labels:{},source:{},recordId:{},idPrefix:{}},emits:["update:modelValue"],setup(e,{emit:t}){const n=e,a=t,r=x(()=>`${n.idPrefix??"field"}-${n.field.name}`),l=x(()=>r.value),o=x(()=>`${r.value}-comment`),s=x(()=>`${r.value}-error`),i=x(()=>(n.errors?.length??0)>0),c=x(()=>AP(n.field.type)),d=x(()=>EP(n.field.type)),f=x(()=>!c.value&&!!n.field.comment),p=x(()=>[f.value||c.value&&n.field.comment?o.value:"",i.value?s.value:""].filter(Boolean).join(" "));return(h,m)=>(v(),$("div",{class:"flex min-w-0 flex-col gap-1.5","data-field":e.field.name},[d.value&&e.field.label?(v(),$("span",{key:0,id:`${l.value}-label`,class:"font-semibold"},[Se(P(e.field.label),1),e.field.required?(v(),$("span",PP," *")):re("",!0)],8,OP)):!c.value&&!d.value?(v(),$("label",{key:1,for:l.value,class:"font-semibold"},[Se(P(e.field.label||e.field.name),1),e.field.required?(v(),$("span",TP," *")):re("",!0)],8,qP)):re("",!0),L(MP,{field:e.field,"model-value":e.modelValue,"control-id":l.value,invalid:i.value,"described-by":p.value,labels:e.labels,source:e.source,"record-id":e.recordId,"onUpdate:modelValue":m[0]||(m[0]=b=>a("update:modelValue",b))},null,8,["field","model-value","control-id","invalid","described-by","labels","source","record-id"]),f.value?(v(),$("p",{key:2,id:o.value,class:"text-[13px] text-muted"},P(e.field.comment),9,RP)):re("",!0),i.value?(v(),$("div",{key:3,id:s.value,class:"flex flex-col gap-0.5 text-[13px] text-danger"},[(v(!0),$(xe,null,Be(e.errors,(b,g)=>(v(),$("p",{key:g,class:"flex items-center gap-1.5"},[L(u(Vt),{size:14,class:"shrink-0","aria-hidden":"true"}),O("span",null,P(b),1)]))),128))],8,IP)):re("",!0)],8,DP))}}),FP={class:"grid grid-cols-1 gap-x-6 gap-y-[22px] min-[600px]:grid-cols-2"},Xl=Q({__name:"FormGrid",props:{fields:{},values:{},errors:{},labels:{},source:{},recordId:{},idPrefix:{}},emits:["update"],setup(e,{emit:t}){const n=t;function a(r){if(r.type===Za)return"col-span-full";switch(r.span){case"left":return"min-[600px]:col-start-1";case"right":return"min-[600px]:col-start-2";case"auto":case"row":return"";default:return"col-span-full"}}return(r,l)=>(v(),$("div",FP,[(v(!0),$(xe,null,Be(e.fields,o=>(v(),F(BP,{key:o.name,class:ke(a(o)),field:o,"model-value":e.values[o.name],errors:e.errors[o.name],labels:e.labels?.[o.name],source:e.source,"record-id":e.recordId,"id-prefix":e.idPrefix,"onUpdate:modelValue":s=>n("update",o.name,s)},null,8,["class","field","model-value","errors","labels","source","record-id","id-prefix","onUpdate:modelValue"]))),128))]))}}),NP={class:"flex w-full flex-col gap-5 pb-24"},VP={class:"flex flex-wrap items-center gap-4"},LP={class:"flex min-w-0 flex-1 flex-col"},jP={class:"truncate text-[24px] font-bold tracking-[-0.02em]"},zP={key:0,class:"text-muted"},UP={key:0,role:"alert",class:"rounded-inner bg-danger-soft px-[18px] py-3.5 text-danger"},HP=["id","role","aria-labelledby"],KP={class:"fixed inset-x-0 bottom-0 z-30 flex items-center gap-2.5 border-t border-border bg-surface px-8 py-3.5"},WP={class:"ml-auto flex items-center gap-2.5"},Zr="field",Cp=Q({__name:"FormView",setup(e){const t=ln(),n=Tr(),a={vendor:String(t.params.vendor??""),plugin:String(t.params.plugin??""),controller:String(t.params.controller??"")},r=ks(a),l=Hn(r)??"/",o=t.name==="create"?"create":"update",s=o==="update"?Number(t.params.id):null,i=q(null),c=q({}),d=q({}),f=q({}),p=q(null),h=q(!0),m=q(!1),b=q(!1),g=q(""),y=q(Mt),w=Ja();let A=!1,S=Promise.resolve([]);const R=Pl(),H={[_a]:R},j=q(0),U=q(0),{activeUploads:k,beginUpload:I}=Zc(),W=x(()=>(i.value?.fields??[]).filter(G=>Gs(G,o)&&(o==="update"||!SP(G.type)||G.type===Za&&!!G.deferrable))),V=x(()=>W.value.map(G=>G.name)),B=x(()=>{if(!W.value.some(de=>de.tab))return[];const G=[];for(const de of W.value){const se=gn(de);let $e=G.find(Pe=>Pe.key===se);$e||($e={key:se,label:de.tab||D("backend::lang.form.tab_default"),errors:0},se===Mt?G.unshift($e):G.push($e)),f.value[de.name]&&($e.errors+=1)}return G}),X=x(()=>Math.max(B.value.findIndex(G=>G.key===y.value),0)),M=x(()=>{if(B.value.length===0)return W.value;const G=B.value[X.value]?.key??Mt;return W.value.filter(de=>gn(de)===G)}),ne=x(()=>{const G=i.value?.fields.find(se=>se.type==="text"),de=G?c.value[G.name]:void 0;return typeof de=="string"||typeof de=="number"?String(de).trim():""}),ee=x(()=>{if(o==="update"&&ne.value!=="")return ne.value;const G=o==="create"?i.value?.messages.create:i.value?.messages.update;return Ne(G,void 0,{name:ne.value})}),ue=x(()=>o==="update"?Ne(i.value?.messages.update,void 0,{name:ne.value}):""),ve=x(()=>o==="update"&&!!i.value?.preview),ye=x(()=>ve.value?`${l}/${s}/preview`:l),be=x(()=>!h.value&&(j.value>0||k.value>0||fa(Wt(W.value,c.value,o))!==g.value));function oe(G){if(G){const de=go(i.value?.meta),se={...G.data};for(const $e of W.value)$e.type==="password"?se[$e.name]="":qr($e.type)&&(se[$e.name]=Sy(G.data[$e.name],de));c.value=se,d.value=G.meta.labels??{}}g.value=fa(Wt(W.value,c.value,o))}async function Ce(){h.value=!0,m.value=!1;const G={path:a},[de,se]=await Promise.all([qe.GET("/{vendor}/{plugin}/{controller}/schema/form",{params:G}),s!==null?qe.GET("/{vendor}/{plugin}/{controller}/{id}",{params:{path:{...a,id:s}}}):Promise.resolve(null)]);i.value=de.data?.data??null,m.value=!de.data||se!==null&&!se.data,i.value&&(S=Hc(r,i.value.assets)),i.value&&o==="create"&&(c.value=Qc(W.value,go(i.value.meta))),oe(se?.data),Z.value=K(),y.value=B.value[0]?.key??Mt,h.value=!1}const ce=new Set,Ee=new Map,Z=q("en");function K(){return go(i.value?.meta)[0]??"en"}function te(G){const de=G.detail;typeof de=="string"&&de!==""&&(Z.value=de)}Fe(y,()=>{Z.value=K()});function ie(G,de){return de===void 0?ce.has(G):Ee.get(G)?.has(de)??!1}function le(G,de){const se=c.value[G],$e={...c.value,[G]:de};ce.add(G);const Pe=W.value.find(Ve=>Ve.name===G)?.type;if(qr(Pe)){let Ve=Ee.get(G);Ve||(Ve=new Set,Ee.set(G,Ve));for(const Ke of Cy(se,de))Ve.add(Ke)}if(o==="create"&&Object.assign($e,c5(W.value,G,se,de,c.value,Z.value,ie)),c.value=$e,f.value[G]){const Ve={...f.value};delete Ve[G],f.value=Ve}}yt(Yc,x(()=>c.value)),yt(Jc,le),yt(ky,x(()=>i.value?.meta.locale||wl.value)),yt(ts,x(()=>go(i.value?.meta))),yt($y,()=>S),yt(Vr,{key:R,recordId:s??0,routes:G=>_y(a,s??0,G,R),markDirty:()=>{j.value++},pendingChanges:pt(j),revision:pt(U),beginUpload:I,activeUploads:pt(k)});async function pe(G){f.value=Zl(G?.details);const de=W.value.filter($e=>f.value[$e.name]),se=de.find($e=>gn($e)===y.value)??de[0];se&&(B.value.length>0&&(y.value=gn(se)),await We(),Ql(Zr,se.name))}function _(G,de){const se=i.value?.redirects,$e=(se?.[o]?.[G]||se?.default)??"";return py($e,r,typeof de=="number"||typeof de=="string"?de:null)}async function C(){if(b.value||!i.value||k.value>0)return null;b.value=!0,p.value=null;try{const G=Wt(W.value,c.value,o),de=s===null?await qe.POST("/{vendor}/{plugin}/{controller}",{params:{path:a,header:H},body:G}):await qe.PUT("/{vendor}/{plugin}/{controller}/{id}",{params:{path:{...a,id:s},header:H},body:G});return de.data?(f.value={},oe(de.data),j.value=0,U.value++,Te(Ne(i.value.messages.saved,void 0,{name:ne.value})),de.data):(de.response.status===422?await pe(de.error?.error):de.response.status===403?(p.value=de.error?.error.message||D("backend::lang.form.forbidden"),await pe(de.error?.error)):Te(de.error?.error.message||D("backend::lang.form.error_generic"),"danger"),null)}catch{return Te(D("backend::lang.form.error_generic"),"danger"),null}finally{b.value=!1}}async function E(G){A=!0;try{await n.push(G)}finally{A=!1}}async function J(){const G=await C();G&&o==="create"&&await E(_("redirect",G.data.id))}async function Y(){const G=await C();G&&await E(_("redirectClose",G.data.id))}async function ae(){if(!(s===null||b.value||!i.value||!await w.ask({message:Ne(i.value.messages.deleteConfirm,void 0,{name:ne.value}),confirmLabel:D("backend::lang.form.delete"),danger:!0}))){b.value=!0;try{const de=await qe.DELETE("/{vendor}/{plugin}/{controller}/{id}",{params:{path:{...a,id:s}}});if(de.data){Te(Ne(i.value.messages.deleted,void 0,{name:ne.value})),await E(l);return}const se=de.response.status===403?"backend::lang.list.action_forbidden":"backend::lang.form.error_generic";Te(de.error?.error.message||D(se),"danger")}catch{Te(D("backend::lang.form.error_generic"),"danger")}finally{b.value=!1}}}async function ge(){return A||!be.value?!0:w.ask({message:D("backend::lang.form.unsaved_confirm"),confirmLabel:D("backend::lang.form.discard"),danger:!0})}async function me(){be.value&&!await w.ask({message:D("backend::lang.form.unsaved_confirm"),confirmLabel:D("backend::lang.form.discard"),danger:!0})||await E(ye.value)}W1(ge),G1(ge);function _e(G){be.value&&(G.preventDefault(),G.returnValue="")}return mt(()=>{window.addEventListener("beforeunload",_e),window.addEventListener(ql,te)}),Pt(()=>{window.removeEventListener("beforeunload",_e),window.removeEventListener(ql,te)}),Zt(()=>hv(h.value?"":ee.value)),Pt(vv),Ce(),(G,de)=>(v(),$("section",NP,[O("header",VP,[L(et,{variant:"outline","data-action":"back","aria-label":u(D)(ve.value?"backend::lang.form.return_to_preview":"backend::lang.form.return_to_list"),class:"size-10! px-0!",onClick:me},{default:T(()=>[L(u(As),{size:18,"aria-hidden":"true"})]),_:1},8,["aria-label"]),O("div",LP,[O("h1",jP,P(h.value?"":ee.value),1),ue.value?(v(),$("p",zP,P(ue.value),1)):re("",!0)]),B.value.length>0?(v(),F(Xc,{key:0,modelValue:y.value,"onUpdate:modelValue":de[0]||(de[0]=se=>y.value=se),tabs:B.value,"id-prefix":Zr},null,8,["modelValue","tabs"])):re("",!0)]),m.value&&!h.value?(v(),$("p",UP,P(u(D)("backend::lang.form.load_failed")),1)):i.value?(v(),$(xe,{key:1},[L(Jl,{errors:f.value,"field-names":V.value,forbidden:p.value},null,8,["errors","field-names","forbidden"]),O("form",{id:B.value.length>0?u(Ws)(Zr,X.value):void 0,role:B.value.length>0?"tabpanel":void 0,"aria-labelledby":B.value.length>0?u(Tl)(Zr,X.value):void 0,class:"rounded-card border border-border bg-surface p-7 shadow-card",novalidate:"",onSubmit:ut(J,["prevent"])},[L(Xl,{fields:M.value,values:c.value,errors:f.value,labels:d.value,source:a,"record-id":u(s),"id-prefix":Zr,onUpdate:le},null,8,["fields","values","errors","labels","record-id"])],40,HP)],64)):re("",!0),O("footer",KP,[u(o)==="update"?(v(),F(et,{key:0,variant:"danger","data-action":"delete",icon:u(Ll),disabled:b.value||h.value||!i.value,onClick:ae},{default:T(()=>[Se(P(u(D)("backend::lang.form.delete")),1)]),_:1},8,["icon","disabled"])):re("",!0),O("div",WP,[L(et,{variant:"ghost","data-action":"cancel",onClick:me},{default:T(()=>[Se(P(u(D)("backend::lang.form.cancel")),1)]),_:1}),L(et,{variant:"outline","data-action":"save-close",disabled:b.value||h.value||!i.value||u(k)>0,onClick:Y},{default:T(()=>[Se(P(u(D)("backend::lang.form.save_and_close")),1)]),_:1},8,["disabled"]),L(et,{variant:"primary","data-action":"save",disabled:b.value||h.value||!i.value||u(k)>0,onClick:J},{default:T(()=>[Se(P(b.value?u(D)("backend::lang.form.saving"):u(D)("backend::lang.form.save")),1)]),_:1},8,["disabled"])])]),L(Ya,{open:u(w).request.value!==null,message:u(w).request.value?.message??"","confirm-label":u(w).request.value?.confirmLabel,danger:u(w).request.value?.danger,onConfirm:u(w).confirm,onCancel:u(w).cancel,"onUpdate:open":de[1]||(de[1]=se=>{se||u(w).cancel()})},null,8,["open","message","confirm-label","danger","onConfirm","onCancel"])]))}}),GP=["data-preview-field"],YP=["id"],JP={class:"m-0 min-w-0"},ZP={key:0,"data-switch":"true",class:"inline-flex h-6 items-center rounded-pill bg-ok-bg px-2.5 text-[12px] font-semibold text-ok-text"},QP={key:1,"data-switch":"false",class:"inline-flex h-6 items-center rounded-pill border border-border-strong px-2.5 text-[12px] font-semibold text-muted"},XP={class:"flex size-[22px] shrink-0 items-center justify-center rounded-full bg-primary text-[10px] font-bold text-on-primary","aria-hidden":"true"},eq={class:"font-semibold"},tq={key:0,class:"px-2 text-muted","data-empty":""},nq={key:0},aq={key:1,class:"text-muted","data-empty":""},rq={key:0},lq={key:1,class:"text-muted","data-empty":""},Yi="flex min-h-input items-center rounded-control border border-border bg-subtle px-3.5 [overflow-wrap:anywhere]",oq=Q({__name:"PreviewField",props:{field:{},value:{},labels:{},source:{},recordId:{},idPrefix:{}},setup(e){const t=e,n=new Set(["datepicker","fileupload","partial","permissioneditor"]),a=x(()=>`${t.idPrefix??"preview"}-${t.field.name}`),r=x(()=>`${a.value}-label`),l=x(()=>{const h=t.field.type;return n.has(h)?"control":h==="checkbox"||h==="switch"?"toggle":h==="relation"?t.field.multiple?"chips":"relation":h==="textarea"?"textarea":"text"}),o=x(()=>({...t.field,readOnly:!0})),s=x(()=>Py(t.field.type));function i(h){return h==null||h===""}const c=x(()=>{const h=t.value;if(i(h)||typeof h=="object")return"";if(t.field.type==="dropdown"){const m=(t.field.options??[]).find(b=>String(b.value)===String(h));return m?m.label:String(h)}return String(h)}),d=x(()=>t.labels?.[0]?.label??""),f=x(()=>Array.isArray(t.value)?t.labels??[]:[]);function p(h){return h.trim().split(/\s+/).filter(Boolean).slice(0,2).map(b=>b.charAt(0).toUpperCase()).join("")}return(h,m)=>(v(),$("div",{class:"flex min-w-0 flex-col gap-1.5","data-preview-field":e.field.name},[O("dt",{id:r.value,class:"font-semibold"},P(e.field.label||e.field.name),9,YP),O("dd",JP,[l.value==="control"?(v(),F(Bt(s.value),{key:0,field:o.value,"model-value":e.value,"control-id":a.value,labels:e.labels,source:e.source,"record-id":e.recordId},null,8,["field","model-value","control-id","labels","source","record-id"])):l.value==="toggle"?(v(),$(xe,{key:1},[u(Gc)(e.value)?(v(),$("span",ZP,P(u(D)("backend::lang.list.column_switch_true")),1)):(v(),$("span",QP,P(u(D)("backend::lang.list.column_switch_false")),1))],64)):l.value==="chips"?(v(),$("div",{key:2,"data-preview-value":"",class:ke([Yi,"flex-wrap gap-1.5 p-1.5"])},[(v(!0),$(xe,null,Be(f.value,b=>(v(),$("span",{key:String(b.value),"data-chip":"",class:"inline-flex min-h-[30px] items-center gap-1.5 rounded-pill bg-surface pr-3 pl-1"},[O("span",XP,P(p(b.label)),1),O("span",eq,P(b.label),1)]))),128)),f.value.length===0?(v(),$("span",tq,P(u(D)("backend::lang.list.empty_value")),1)):re("",!0)])):l.value==="relation"?(v(),$("div",{key:3,"data-preview-value":"",class:ke(Yi)},[d.value!==""?(v(),$("span",nq,P(d.value),1)):(v(),$("span",aq,P(e.field.emptyOption||u(D)("backend::lang.list.empty_value")),1))])):(v(),$("div",{key:4,"data-preview-value":"",class:ke([Yi,l.value==="textarea"?"items-start! py-3 whitespace-pre-wrap":""])},[c.value!==""?(v(),$("span",rq,P(c.value),1)):(v(),$("span",lq,P(u(D)("backend::lang.list.empty_value")),1))],2))])],8,GP))}}),sq=Q({__name:"RecordActions",props:{source:{},recordId:{},actions:{},disabled:{type:Boolean,default:!1}},emits:["busy","done","stale","gone"],setup(e,{emit:t}){const n=e,a=t,r=Ja(),l=q(!1);async function o(s){if(l.value||n.disabled)return;let i=0,c=!1,d="";if(await r.ask({message:s.confirm||D("backend::lang.form.action_confirm",{action:s.label}),confirmLabel:s.label,danger:!1},async()=>{l.value=!0,a("busy",!0);try{const p=await qe.POST("/{vendor}/{plugin}/{controller}/{id}/actions/{action}",{params:{path:{...n.source,id:n.recordId,action:s.name}},body:{}});i=p.response.status,c=!!p.data,d=p.data?.data.message??p.error?.error.message??""}catch{i=0}finally{l.value=!1,a("busy",!1)}})){if(c){a("done",d||D("backend::lang.form.action_done"));return}if(i===409){Te(D("backend::lang.form.action_stale"),"danger"),a("stale");return}if(i===404){a("gone");return}if(i===403){Te(d||D("backend::lang.list.action_forbidden"),"danger");return}Te(d||D("backend::lang.extension.action_failed"),"danger")}}return(s,i)=>e.actions.length>0?(v(),$(xe,{key:0},[(v(!0),$(xe,null,Be(e.actions,c=>(v(),F(et,{key:c.name,variant:"outline",size:"md","data-record-action":c.name,disabled:e.disabled||l.value,onClick:d=>o(c)},{default:T(()=>[Se(P(c.label),1)]),_:2},1032,["data-record-action","disabled","onClick"]))),128)),L(Ya,{open:u(r).request.value!==null,message:u(r).request.value?.message??"","confirm-label":u(r).request.value?.confirmLabel,danger:u(r).request.value?.danger,busy:u(r).busy.value,onConfirm:u(r).confirm,onCancel:u(r).cancel},null,8,["open","message","confirm-label","danger","busy","onConfirm","onCancel"])],64)):re("",!0)}}),iq={class:"flex w-full flex-col gap-5 pb-24","data-preview":""},uq={class:"flex flex-wrap items-center gap-4"},cq={class:"flex min-w-0 flex-1 flex-col"},dq={class:"truncate text-[24px] font-bold tracking-[-0.02em]"},fq={key:0,class:"text-muted"},pq={key:0,role:"alert",class:"rounded-inner bg-danger-soft px-[18px] py-3.5 text-danger"},hq=["id","role","aria-labelledby"],vq={class:"m-0 grid grid-cols-1 gap-x-6 gap-y-[22px] min-[600px]:grid-cols-2"},mq={class:"fixed inset-x-0 bottom-0 z-30 flex flex-wrap items-center gap-2.5 border-t border-border bg-surface px-8 py-3.5"},yq={class:"ml-auto flex flex-wrap items-center gap-2.5"},_o="preview",gq=Q({__name:"PreviewView",setup(e){const t=ln(),n=Tr(),a={vendor:String(t.params.vendor??""),plugin:String(t.params.plugin??""),controller:String(t.params.controller??"")},r=ks(a),l=Hn(r)??"/",o=Number(t.params.id),s=`${l}/${o}`,i=q(null),c=q({}),d=q({}),f=q([]),p=q(!0),h=q(!1),m=q(!1),b=q(Mt),g=q(0),y=new Set(["password","widget",Za]),w=x(()=>(i.value?.fields??[]).filter(ve=>Gs(ve,"preview")&&!y.has(ve.type))),A=x(()=>{if(!w.value.some(ye=>ye.tab))return[];const ve=[];for(const ye of w.value){const be=gn(ye);if(ve.some(Ce=>Ce.key===be))continue;const oe={key:be,label:ye.tab||D("backend::lang.form.tab_default"),errors:0};be===Mt?ve.unshift(oe):ve.push(oe)}return ve}),S=x(()=>Math.max(A.value.findIndex(ve=>ve.key===b.value),0)),R=x(()=>{if(A.value.length===0)return w.value;const ve=A.value[S.value]?.key??Mt;return w.value.filter(ye=>gn(ye)===ve)}),H=x(()=>{const ve=i.value?.fields.find(be=>be.type==="text"),ye=ve?c.value[ve.name]:void 0;return typeof ye=="string"||typeof ye=="number"?String(ye).trim():""}),j=x(()=>Ne(i.value?.messages.preview,void 0,{name:H.value})),U=x(()=>i.value?.preview?.headerPartial??""),k=x(()=>!p.value&&!h.value&&i.value!==null);function I(ve){switch(ve.span){case"left":return"min-[600px]:col-start-1";case"right":return"min-[600px]:col-start-2";case"auto":case"row":return"";default:return"col-span-full"}}async function W(){try{const ve=await qe.GET("/{vendor}/{plugin}/{controller}/{id}",{params:{path:{...a,id:o}}});return ve.data?(c.value={...ve.data.data},d.value=ve.data.meta.labels??{},f.value=ve.data.meta.actions??[],!0):!1}catch{return!1}}async function V(){p.value=!0,h.value=!1;const[ve,ye]=await Promise.all([qe.GET("/{vendor}/{plugin}/{controller}/schema/form",{params:{path:a}}).catch(()=>null),W()]),be=ve?.data?.data??null;if(be&&!be.preview){await n.replace(s);return}i.value=be,h.value=!be||!ye,be&&Hc(r,be.assets),b.value=A.value[0]?.key??Mt,p.value=!1}async function B(){g.value++,await W()||(h.value=!0)}async function X(ve){Te(ve),await B()}function M(){h.value=!0}const{activeUploads:ne,beginUpload:ee}=Zc(),ue=Pl();return yt(Vr,{key:ue,recordId:o,routes:ve=>_y(a,o,ve,ue),markDirty:()=>{},pendingChanges:pt(q(0)),revision:pt(q(0)),beginUpload:ee,activeUploads:pt(ne)}),Zt(()=>hv(p.value?"":H.value)),Pt(vv),V(),(ve,ye)=>(v(),$("section",iq,[O("header",uq,[L(et,{variant:"outline","data-action":"back",to:u(l),"aria-label":u(D)("backend::lang.form.return_to_list"),class:"size-10! px-0!"},{default:T(()=>[L(u(As),{size:18,"aria-hidden":"true"})]),_:1},8,["to","aria-label"]),O("div",cq,[O("h1",dq,P(p.value?"":H.value),1),k.value&&j.value?(v(),$("p",fq,P(j.value),1)):re("",!0)]),k.value&&A.value.length>0?(v(),F(Xc,{key:0,modelValue:b.value,"onUpdate:modelValue":ye[0]||(ye[0]=be=>b.value=be),tabs:A.value,"id-prefix":_o},null,8,["modelValue","tabs"])):re("",!0)]),h.value&&!p.value?(v(),$("p",pq,P(u(D)("backend::lang.form.load_failed")),1)):k.value?(v(),$(xe,{key:1},[U.value!==""?(v(),F(Wc,{key:0,variant:"header",hint:"",source:a,name:U.value,"record-id":u(o),"reload-key":g.value},null,8,["name","record-id","reload-key"])):re("",!0),O("div",{id:A.value.length>0?u(Ws)(_o,S.value):void 0,role:A.value.length>0?"tabpanel":void 0,"aria-labelledby":A.value.length>0?u(Tl)(_o,S.value):void 0,class:"rounded-card border border-border bg-surface p-7 shadow-card"},[O("dl",vq,[(v(!0),$(xe,null,Be(R.value,be=>(v(),F(oq,{key:be.name,class:ke(I(be)),field:be,value:c.value[be.name],labels:d.value?.[be.name],source:a,"record-id":u(o),"id-prefix":_o},null,8,["class","field","value","labels","record-id"]))),128))])],8,hq)],64)):re("",!0),O("footer",mq,[O("div",yq,[k.value?(v(),F(sq,{key:0,source:a,"record-id":u(o),actions:f.value,disabled:m.value,onBusy:ye[1]||(ye[1]=be=>m.value=be),onDone:X,onStale:B,onGone:M},null,8,["record-id","actions","disabled"])):re("",!0),h.value?re("",!0):(v(),F(et,{key:1,variant:"primary","data-action":"edit",icon:u(cl),disabled:p.value||m.value,onClick:ye[2]||(ye[2]=be=>u(n).push(s))},{default:T(()=>[Se(P(u(Ne)(i.value?.messages.edit)),1)]),_:1},8,["icon","disabled"]))])])]))}}),bq={class:"flex w-full flex-col gap-5 pb-24"},_q={class:"flex items-center gap-4"},xq={class:"flex min-w-0 flex-col"},wq={class:"truncate text-[24px] font-bold tracking-[-0.02em]"},kq={key:0,class:"text-muted"},$q={key:0,role:"alert",class:"rounded-inner bg-danger-soft px-[18px] py-3.5 text-danger"},Cq={class:"fixed inset-x-0 bottom-0 z-30 flex items-center justify-end gap-2.5 border-t border-border bg-surface px-8 py-3.5"},Sp="setting",Sq=Q({__name:"SettingsFormView",setup(e){const t=ln(),n=String(t.params.code??""),a=q(null),r=q({}),l=q({}),o=q(!0),s=q(!1),i=q(!1),c=x(()=>(a.value?.fields??[]).filter(g=>Gs(g,"update"))),d=x(()=>c.value.map(g=>g.name)),f=x(()=>Uo(n)?.label||a.value?.name||n),p=x(()=>Uo(n)?.description??"");async function h(){const g={path:{code:n}},[y,w]=await Promise.all([qe.GET("/settings/{code}/schema",{params:g}),qe.GET("/settings/{code}",{params:g})]);a.value=y.data?.data??null,r.value={...w.data?.data.data??{}},s.value=!y.data||!w.data,o.value=!1}function m(g,y){if(r.value={...r.value,[g]:y},l.value[g]){const w={...l.value};delete w[g],l.value=w}}async function b(){if(!(i.value||!a.value)){i.value=!0;try{const g=await qe.PUT("/settings/{code}",{params:{path:{code:n}},body:Wt(c.value,r.value)});if(g.data){l.value={},r.value={...g.data.data.data},Te(D("backend::lang.settings.saved"));return}if(g.response.status===422){l.value=Zl(g.error?.error.details);const y=c.value.find(w=>l.value[w.name]);await We(),y&&Ql(Sp,y.name);return}Te(g.error?.error.message||D("backend::lang.form.error_generic"),"danger")}catch{Te(D("backend::lang.form.error_generic"),"danger")}finally{i.value=!1}}}return h(),(g,y)=>(v(),$("section",bq,[O("header",_q,[L(et,{variant:"outline","data-action":"back",to:"/settings","aria-label":u(D)("backend::lang.settings.back"),class:"size-10! px-0!"},{default:T(()=>[L(u(As),{size:18,"aria-hidden":"true"})]),_:1},8,["aria-label"]),O("div",xq,[O("h1",wq,P(f.value),1),p.value?(v(),$("p",kq,P(p.value),1)):re("",!0)])]),s.value&&!o.value?(v(),$("p",$q,P(u(D)("backend::lang.form.load_failed")),1)):a.value?(v(),$(xe,{key:1},[L(Jl,{errors:l.value,"field-names":d.value},null,8,["errors","field-names"]),O("form",{class:"rounded-card border border-border bg-surface p-7 shadow-card",novalidate:"",onSubmit:ut(b,["prevent"])},[L(Xl,{fields:c.value,values:r.value,errors:l.value,source:null,"id-prefix":Sp,onUpdate:m},null,8,["fields","values","errors"])],32)],64)):re("",!0),O("footer",Cq,[L(et,{variant:"ghost",to:"/settings"},{default:T(()=>[Se(P(u(D)("backend::lang.form.cancel")),1)]),_:1}),L(et,{variant:"primary","data-action":"save",disabled:i.value||o.value||!a.value,onClick:b},{default:T(()=>[Se(P(i.value?u(D)("backend::lang.form.saving"):u(D)("backend::lang.form.save")),1)]),_:1},8,["disabled"])])]))}}),Aq={class:"flex flex-col gap-5"},Eq={class:"text-[26px] font-bold tracking-[-0.02em]"},Mq={key:0,class:"text-muted"},Dq={key:0,class:"text-[13px] font-semibold tracking-[0.02em] text-muted uppercase"},Oq={class:"grid grid-cols-1 gap-3 min-[900px]:grid-cols-2"},Pq={class:"flex size-10 shrink-0 items-center justify-center rounded-inner bg-subtle text-muted"},qq={class:"flex min-w-0 flex-col"},Tq={class:"font-semibold"},Rq={key:0,class:"text-[13px] text-muted"},Iq=Q({__name:"SettingsIndexView",setup(e){return(t,n)=>(v(),$("section",Aq,[O("header",null,[O("h1",Eq,P(u(D)("backend::lang.settings.title")),1)]),u(vf).length===0?(v(),$("p",Mq,P(u(D)("backend::lang.settings.empty")),1)):re("",!0),(v(!0),$(xe,null,Be(u(vf),a=>(v(),$("section",{key:a.category,"data-settings-group":"",class:"flex flex-col gap-3"},[a.category?(v(),$("h2",Dq,P(a.category),1)):re("",!0),O("div",Oq,[(v(!0),$(xe,null,Be(a.entries,r=>(v(),F(u(_n),{key:r.code,to:`/settings/${encodeURIComponent(r.code)}`,"data-settings":r.code,class:"flex items-start gap-3.5 rounded-card border border-border bg-surface p-5 text-text no-underline shadow-card hover:bg-hover"},{default:T(()=>[O("span",Pq,[(v(),F(Bt(u(Os)(r.icon)),{size:20,"aria-hidden":"true"}))]),O("span",qq,[O("span",Tq,P(r.label),1),r.description?(v(),$("span",Rq,P(r.description),1)):re("",!0)])]),_:2},1032,["to","data-settings"]))),128))])]))),128))]))}}),Bq={class:"flex flex-col items-center gap-2 py-20 text-center"},Fq={class:"text-[17px] font-bold"},Ap=Q({__name:"NotFoundView",props:{home:{type:Boolean}},setup(e){return(t,n)=>(v(),$("section",Bq,[O("h1",Fq,P(e.home?u(D)("backend::lang.nav.empty"):u(D)("backend::lang.page.not_found")),1)]))}});function qy(e){return typeof e!="string"||e.length===0||!e.startsWith("/")||e.startsWith("//")||e.startsWith("/\\")?null:e}const Nq=new Set(["list","create","record","preview"]);function Vq(e){if(typeof e.name!="string"||!Nq.has(e.name))return"";const{vendor:t,plugin:n,controller:a}=e.params;return typeof t!="string"||typeof n!="string"||typeof a!="string"?"":ks({vendor:t,plugin:n,controller:a})}function Lq(e=X1(Ss.base)){const t=g0({history:e,routes:[{path:"/login",name:"login",component:xE,meta:{public:!0}},{path:"/",name:"home",component:Ap,props:{home:!0},meta:{shell:!0},beforeEnter:()=>F0()??!0},{path:"/settings",name:"settings",component:Iq,meta:{shell:!0}},{path:"/settings/:code",name:"settings-form",component:Sq,meta:{shell:!0}},{path:"/:vendor/:plugin/:controller",name:"list",component:h6,meta:{shell:!0}},{path:"/:vendor/:plugin/:controller/create",name:"create",component:Cp,meta:{shell:!0}},{path:"/:vendor/:plugin/:controller/:id(\\d+)",name:"record",component:Cp,meta:{shell:!0}},{path:"/:vendor/:plugin/:controller/:id(\\d+)/preview",name:"preview",component:gq,meta:{shell:!0}},{path:"/:pathMatch(.*)*",name:"not-found",component:Ap,meta:{shell:!0}}]});return t.beforeEach(n=>{const a=fr.value!==null;return n.meta.public?a&&n.name==="login"?qy(n.query.redirect)??"/":!0:a?!0:{name:"login",query:{redirect:n.fullPath}}}),t.afterEach((n,a,r)=>{r||iE(Vq(n))}),t}const jq="(prefers-color-scheme: dark)";function zq(e=window){const t=e.document.documentElement;if(typeof e.matchMedia!="function")return t.classList.remove("dark"),()=>{};const n=e.matchMedia(jq),a=l=>{t.classList.toggle("dark",l)};a(n.matches);const r=l=>a(l.matches);return n.addEventListener("change",r),()=>n.removeEventListener("change",r)}async function Uq(){zq(),await R0().catch(()=>{}),await sy().catch(()=>null)&&await Promise.all([mv().catch(()=>[]),yv().catch(()=>[])]);const t=Lq();M0(()=>{iy();const a=t.currentRoute.value;a.name!=="login"&&t.push({name:"login",query:{redirect:a.fullPath}})});const n=h1(rE);n.use(t),await t.isReady(),n.mount("#app")}Uq();
diff --git a/modules/boardwalk/dist/index.html b/modules/boardwalk/dist/index.html
index 7cbcd63..f6b0911 100644
--- a/modules/boardwalk/dist/index.html
+++ b/modules/boardwalk/dist/index.html
@@ -7,8 +7,8 @@
SummerCMS
-
-
+
+