tyrell-components 1.0.0-TC55 → 1.0.0-TC57
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +53 -53
- package/css/tyrell-theme.css +7 -2
- package/css/tyrell.css +9 -18
- package/dist/tyrell-theme.css +1 -1
- package/dist/tyrell.css +1 -1
- package/dist/tyrell.js +1 -1
- package/lib/base/ty-component.d.ts +17 -0
- package/lib/base/ty-component.d.ts.map +1 -0
- package/lib/base/ty-component.js +32 -1
- package/lib/base/ty-component.js.map +1 -0
- package/lib/components/button.d.ts.map +1 -0
- package/lib/components/button.js +7 -0
- package/lib/components/button.js.map +1 -0
- package/lib/components/calendar-month.d.ts.map +1 -0
- package/lib/components/calendar-month.js +3 -2
- package/lib/components/calendar-month.js.map +1 -0
- package/lib/components/calendar-navigation.d.ts +11 -0
- package/lib/components/calendar-navigation.d.ts.map +1 -0
- package/lib/components/calendar-navigation.js +51 -40
- package/lib/components/calendar-navigation.js.map +1 -0
- package/lib/components/calendar.d.ts +28 -0
- package/lib/components/calendar.d.ts.map +1 -0
- package/lib/components/calendar.js +186 -4
- package/lib/components/calendar.js.map +1 -0
- package/lib/components/checkbox.d.ts +2 -0
- package/lib/components/checkbox.d.ts.map +1 -0
- package/lib/components/checkbox.js +10 -3
- package/lib/components/checkbox.js.map +1 -0
- package/lib/components/copy.d.ts.map +1 -0
- package/lib/components/copy.js +9 -2
- package/lib/components/copy.js.map +1 -0
- package/lib/components/date-picker.d.ts +17 -16
- package/lib/components/date-picker.d.ts.map +1 -0
- package/lib/components/date-picker.js +182 -249
- package/lib/components/date-picker.js.map +1 -0
- package/lib/components/dropdown.d.ts +403 -0
- package/lib/components/dropdown.d.ts.map +1 -0
- package/lib/components/dropdown.js +1315 -0
- package/lib/components/dropdown.js.map +1 -0
- package/lib/components/file-upload.d.ts +6 -0
- package/lib/components/file-upload.js +29 -2
- package/lib/components/icon.d.ts.map +1 -0
- package/lib/components/icon.js.map +1 -0
- package/lib/components/input.d.ts +74 -2
- package/lib/components/input.d.ts.map +1 -0
- package/lib/components/input.js +168 -8
- package/lib/components/input.js.map +1 -0
- package/lib/components/modal.d.ts +4 -8
- package/lib/components/modal.d.ts.map +1 -0
- package/lib/components/modal.js +18 -25
- package/lib/components/modal.js.map +1 -0
- package/lib/components/multiselect.d.ts +389 -0
- package/lib/components/multiselect.d.ts.map +1 -0
- package/lib/components/multiselect.js +1301 -0
- package/lib/components/multiselect.js.map +1 -0
- package/lib/components/option.d.ts.map +1 -0
- package/lib/components/option.js +5 -0
- package/lib/components/option.js.map +1 -0
- package/lib/components/popup.d.ts.map +1 -0
- package/lib/components/popup.js +19 -4
- package/lib/components/popup.js.map +1 -0
- package/lib/components/radio.d.ts +17 -0
- package/lib/components/radio.js +42 -4
- package/lib/components/resize-observer.d.ts.map +1 -0
- package/lib/components/resize-observer.js.map +1 -0
- package/lib/components/scroll-container.d.ts +3 -2
- package/lib/components/scroll-container.d.ts.map +1 -0
- package/lib/components/scroll-container.js +5 -8
- package/lib/components/scroll-container.js.map +1 -0
- package/lib/components/select.d.ts +16 -6
- package/lib/components/select.js +73 -19
- package/lib/components/selected-tags.d.ts +7 -1
- package/lib/components/selected-tags.js +10 -1
- package/lib/components/step.d.ts.map +1 -0
- package/lib/components/step.js.map +1 -0
- package/lib/components/switch.d.ts +2 -0
- package/lib/components/switch.js +10 -3
- package/lib/components/tab.d.ts +49 -1
- package/lib/components/tab.d.ts.map +1 -0
- package/lib/components/tab.js +151 -10
- package/lib/components/tab.js.map +1 -0
- package/lib/components/tabs.d.ts +14 -2
- package/lib/components/tabs.d.ts.map +1 -0
- package/lib/components/tabs.js +184 -135
- package/lib/components/tabs.js.map +1 -0
- package/lib/components/tag.d.ts +4 -7
- package/lib/components/tag.d.ts.map +1 -0
- package/lib/components/tag.js +6 -7
- package/lib/components/tag.js.map +1 -0
- package/lib/components/textarea.d.ts +8 -3
- package/lib/components/textarea.d.ts.map +1 -0
- package/lib/components/textarea.js +23 -15
- package/lib/components/textarea.js.map +1 -0
- package/lib/components/tooltip.d.ts +4 -3
- package/lib/components/tooltip.d.ts.map +1 -0
- package/lib/components/tooltip.js +34 -24
- package/lib/components/tooltip.js.map +1 -0
- package/lib/components/wizard.d.ts +5 -4
- package/lib/components/wizard.d.ts.map +1 -0
- package/lib/components/wizard.js +120 -156
- package/lib/components/wizard.js.map +1 -0
- package/lib/icons/fontawesome/brands.d.ts.map +1 -0
- package/lib/icons/fontawesome/brands.js.map +1 -0
- package/lib/icons/fontawesome/regular.d.ts.map +1 -0
- package/lib/icons/fontawesome/regular.js.map +1 -0
- package/lib/icons/fontawesome/solid.d.ts.map +1 -0
- package/lib/icons/fontawesome/solid.js.map +1 -0
- package/lib/icons/heroicons/micro.d.ts.map +1 -0
- package/lib/icons/heroicons/micro.js.map +1 -0
- package/lib/icons/heroicons/mini.d.ts.map +1 -0
- package/lib/icons/heroicons/mini.js.map +1 -0
- package/lib/icons/heroicons/outline.d.ts.map +1 -0
- package/lib/icons/heroicons/outline.js.map +1 -0
- package/lib/icons/heroicons/solid.d.ts.map +1 -0
- package/lib/icons/heroicons/solid.js.map +1 -0
- package/lib/icons/lucide.d.ts.map +1 -0
- package/lib/icons/lucide.js.map +1 -0
- package/lib/icons/material/filled.d.ts.map +1 -0
- package/lib/icons/material/filled.js.map +1 -0
- package/lib/icons/material/outlined.d.ts.map +1 -0
- package/lib/icons/material/outlined.js.map +1 -0
- package/lib/icons/material/round.d.ts.map +1 -0
- package/lib/icons/material/round.js.map +1 -0
- package/lib/icons/material/sharp.d.ts.map +1 -0
- package/lib/icons/material/sharp.js.map +1 -0
- package/lib/icons/material/two-tone.d.ts.map +1 -0
- package/lib/icons/material/two-tone.js.map +1 -0
- package/lib/index.d.ts +1 -1
- package/lib/index.d.ts.map +1 -0
- package/lib/index.js.map +1 -0
- package/lib/styles/button.d.ts.map +1 -0
- package/lib/styles/button.js +68 -58
- package/lib/styles/button.js.map +1 -0
- package/lib/styles/calendar-month.d.ts +3 -0
- package/lib/styles/calendar-month.d.ts.map +1 -0
- package/lib/styles/calendar-month.js +43 -27
- package/lib/styles/calendar-month.js.map +1 -0
- package/lib/styles/calendar-navigation.d.ts +1 -1
- package/lib/styles/calendar-navigation.d.ts.map +1 -0
- package/lib/styles/calendar-navigation.js +55 -26
- package/lib/styles/calendar-navigation.js.map +1 -0
- package/lib/styles/calendar.d.ts +3 -2
- package/lib/styles/calendar.d.ts.map +1 -0
- package/lib/styles/calendar.js +74 -0
- package/lib/styles/calendar.js.map +1 -0
- package/lib/styles/checkbox.js +22 -10
- package/lib/styles/copy.d.ts.map +1 -0
- package/lib/styles/copy.js +5 -1
- package/lib/styles/copy.js.map +1 -0
- package/lib/styles/date-picker.d.ts.map +1 -0
- package/lib/styles/date-picker.js +53 -23
- package/lib/styles/date-picker.js.map +1 -0
- package/lib/styles/dropdown.d.ts +12 -0
- package/lib/styles/dropdown.d.ts.map +1 -0
- package/lib/styles/dropdown.js +725 -0
- package/lib/styles/dropdown.js.map +1 -0
- package/lib/styles/file-upload.d.ts +1 -1
- package/lib/styles/file-upload.js +3 -3
- package/lib/styles/icon.d.ts +1 -1
- package/lib/styles/icon.d.ts.map +1 -0
- package/lib/styles/icon.js +2 -2
- package/lib/styles/icon.js.map +1 -0
- package/lib/styles/input.d.ts.map +1 -0
- package/lib/styles/input.js +1 -1
- package/lib/styles/input.js.map +1 -0
- package/lib/styles/modal.d.ts.map +1 -0
- package/lib/styles/modal.js.map +1 -0
- package/lib/styles/multiselect.d.ts +6 -0
- package/lib/styles/multiselect.d.ts.map +1 -0
- package/lib/styles/multiselect.js +568 -0
- package/lib/styles/multiselect.js.map +1 -0
- package/lib/styles/option.d.ts +1 -1
- package/lib/styles/option.d.ts.map +1 -0
- package/lib/styles/option.js +3 -3
- package/lib/styles/option.js.map +1 -0
- package/lib/styles/popup.d.ts +1 -1
- package/lib/styles/popup.d.ts.map +1 -0
- package/lib/styles/popup.js +8 -5
- package/lib/styles/popup.js.map +1 -0
- package/lib/styles/radio.js +10 -4
- package/lib/styles/resize-observer.d.ts.map +1 -0
- package/lib/styles/resize-observer.js.map +1 -0
- package/lib/styles/scroll-container.d.ts +1 -1
- package/lib/styles/scroll-container.d.ts.map +1 -0
- package/lib/styles/scroll-container.js +1 -1
- package/lib/styles/scroll-container.js.map +1 -0
- package/lib/styles/select.d.ts +1 -1
- package/lib/styles/select.js +6 -0
- package/lib/styles/step.d.ts +1 -1
- package/lib/styles/step.d.ts.map +1 -0
- package/lib/styles/step.js +1 -9
- package/lib/styles/step.js.map +1 -0
- package/lib/styles/switch.js +6 -3
- package/lib/styles/tab.d.ts +1 -1
- package/lib/styles/tab.d.ts.map +1 -0
- package/lib/styles/tab.js +67 -3
- package/lib/styles/tab.js.map +1 -0
- package/lib/styles/tabs.d.ts +1 -1
- package/lib/styles/tabs.d.ts.map +1 -0
- package/lib/styles/tabs.js +7 -3
- package/lib/styles/tabs.js.map +1 -0
- package/lib/styles/tag.d.ts.map +1 -0
- package/lib/styles/tag.js +1 -2
- package/lib/styles/tag.js.map +1 -0
- package/lib/styles/textarea.d.ts.map +1 -0
- package/lib/styles/textarea.js.map +1 -0
- package/lib/styles/tooltip.d.ts.map +1 -0
- package/lib/styles/tooltip.js.map +1 -0
- package/lib/styles/wizard.d.ts +9 -5
- package/lib/styles/wizard.d.ts.map +1 -0
- package/lib/styles/wizard.js +211 -99
- package/lib/styles/wizard.js.map +1 -0
- package/lib/types/common.d.ts +2 -2
- package/lib/types/common.d.ts.map +1 -0
- package/lib/types/common.js.map +1 -0
- package/lib/utils/calendar-utils.d.ts.map +1 -0
- package/lib/utils/calendar-utils.js.map +1 -0
- package/lib/utils/icon-registry.d.ts.map +1 -0
- package/lib/utils/icon-registry.js.map +1 -0
- package/lib/utils/locale.d.ts.map +1 -0
- package/lib/utils/locale.js.map +1 -0
- package/lib/utils/number-format.d.ts.map +1 -0
- package/lib/utils/number-format.js.map +1 -0
- package/lib/utils/parse-boolean.d.ts +39 -0
- package/lib/utils/parse-boolean.d.ts.map +1 -0
- package/lib/utils/parse-boolean.js +23 -0
- package/lib/utils/parse-boolean.js.map +1 -0
- package/lib/utils/positioning.d.ts.map +1 -0
- package/lib/utils/positioning.js.map +1 -0
- package/lib/utils/property-capture.d.ts.map +1 -0
- package/lib/utils/property-capture.js.map +1 -0
- package/lib/utils/property-manager.d.ts +7 -1
- package/lib/utils/property-manager.d.ts.map +1 -0
- package/lib/utils/property-manager.js +16 -4
- package/lib/utils/property-manager.js.map +1 -0
- package/lib/utils/resize-observer.d.ts.map +1 -0
- package/lib/utils/resize-observer.js.map +1 -0
- package/lib/utils/scroll-lock.d.ts.map +1 -0
- package/lib/utils/scroll-lock.js.map +1 -0
- package/lib/utils/styles.d.ts.map +1 -0
- package/lib/utils/styles.js.map +1 -0
- package/lib/utils/validity.d.ts +38 -0
- package/lib/utils/validity.js +116 -0
- package/lib/version.d.ts +1 -1
- package/lib/version.d.ts.map +1 -0
- package/lib/version.js +1 -1
- package/lib/version.js.map +1 -0
- package/package.json +26 -5
package/dist/tyrell.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
/*! Tyrell Components | Components Only (NO Icons) | MIT License | https://github.com/gersak/tyrell */
|
|
2
|
-
!function(t,n){"object"==typeof exports&&"undefined"!=typeof module?n(exports):"function"==typeof define&&define.amd?define(["exports"],n):n((t="undefined"!=typeof globalThis?globalThis:t||self).Tyrell={})}(this,function(t){"use strict";const n=["primary","success","danger","warning","neutral"],e="sm";class i{constructor(t){this.t=new Map,this.i=t,this.o()}o(){for(const[t,n]of Object.entries(this.i))void 0!==n.default&&this.t.set(t,n.default)}hasConfig(t){return t in this.i}updateProperty(t,n,e="property"){const i=this.i[t];if(!i)return null;const o=this.t.get(t),s=this.l(t,n,i);return this.h(t,s,i)?this.u(o,s)?null:(this.t.set(t,s),{name:t,oldValue:o,newValue:s,source:e}):null}l(t,n,e){if(e.coerce)return e.coerce(n);if(null==n)return e.default??null;switch(e.type){case"boolean":if("string"==typeof n){if(""===n)return!0;const t=n.toLowerCase().trim();return"false"!==t&&"0"!==t}return!!n;case"number":const t=+n;return isNaN(t)?e.default??0:t;case"string":return n+"";case"object":case"array":if("string"==typeof n)try{return JSON.parse(n)}catch{return e.default??("array"===e.type?[]:{})}return n;default:return n}}h(t,n,e){return!e.validate||e.validate(n)}u(t,n){if("object"!=typeof t||"object"!=typeof n)return t===n;if(null===t||null===n)return t===n;try{return JSON.stringify(t)===JSON.stringify(n)}catch{return!1}}get(t){return this.t.get(t)}getAll(){return Object.fromEntries(this.t)}getConfig(t){return this.i[t]}isVisual(t){return this.i[t]?.visual??!1}isFormValue(t){return this.i[t]?.formValue??!1}shouldEmitChange(t){return this.i[t]?.emitChange??!1}handleAlias(t,n){for(const[e,i]of Object.entries(this.i))if(i.aliases&&t in i.aliases)return this.updateProperty(e,i.aliases[t],"attribute");return null}}const o=class extends HTMLElement{constructor(){super(),this.p=!1,this.v=!1,this.m=!1,this.k=null,this.props=new i(this.constructor.properties),this.$=this.attachInternals(),this.shadowRoot||this.attachShadow({mode:"open"})}static get observedAttributes(){const t=[];for(const[n,e]of Object.entries(this.properties))if(t.push(n.replace(/([a-z])([A-Z])/g,"$1-$2").toLowerCase()),e.aliases)for(const i of Object.keys(e.aliases))t.push(i);return t}setProperty(t,n){const e=this.props.updateProperty(t,n,"property");e&&(this.C(e),this.T([e]))}getProperty(t){return this.props.get(t)}C(t){const{name:n,newValue:e}=t,i=this.props.getConfig(n);if(!i)return;const o=this.S(n);"boolean"===i.type?e?this.setAttribute(o,""):this.removeAttribute(o):null==e?this.removeAttribute(o):this.setAttribute(o,"object"==typeof e?JSON.stringify(e):e+"")}S(t){return t.replace(/([a-z])([A-Z])/g,"$1-$2").toLowerCase()}M(t){return t.replace(/-([a-z])/g,(t,n)=>n.toUpperCase())}attributeChangedCallback(t,n,e){if(n===e)return;let i=this.props.handleAlias(t,e);if(!i){const n=this.M(t),o=this.props.hasConfig(t)?t:n;i=this.props.updateProperty(o,e,"attribute")}i&&this.T([i])}connectedCallback(){if(this.p=!0,!this.k){this.k=new Map;const t=this.constructor;for(const[n,e]of Object.entries(t.properties)){if(!e.formValue)continue;const t=this.getAttribute(this.S(n));this.k.set(n,t??e.default??null)}}const t=this._();t.length>0&&this.T(t),this.onConnect(),this.v||(this.render(),this.v=!0)}disconnectedCallback(){this.p=!1,this.onDisconnect()}_(){const t=[],n=this.constructor;for(const e of Object.keys(n.properties)){const n=Object.getOwnPropertyDescriptor(this,e);if(n&&void 0!==n.value){const i=this.props.updateProperty(e,n.value,"property");i&&t.push(i)}}return t}T(t){0!==t.length&&(this.onPropertiesChanged(t),t.some(t=>this.props.isFormValue(t.name))&&this.updateFormValue(),t.some(t=>this.props.isVisual(t.name))&&this.p&&this.render(),this.D(t))}D(t){for(const n of t)this.props.shouldEmitChange(n.name)&&this.dispatchEvent(new CustomEvent("prop:change",{detail:{property:n.name,oldValue:n.oldValue,newValue:n.newValue},bubbles:!0,composed:!0}))}updateFormValue(){const t=this.getFormValue();this.$.setFormValue(t)}getFormValue(){return this.props.get("value")??null}onPropertiesChanged(t){}onConnect(){}onDisconnect(){}get form(){return this.$.form}applyLabelName(t){let n=Array.from(this.$.labels??[]).map(t=>t.textContent?.trim()).filter(Boolean).join(" ");if(!n){const t=this.closest("label");if(t){const e=t.cloneNode(!0);e.querySelectorAll(this.tagName.toLowerCase()).forEach(t=>t.remove()),n=e.textContent?.trim()??""}}n?t.setAttribute("aria-label",n):t.removeAttribute("aria-label")}isDuplicateActivationClick(){return!!this.m||(this.m=!0,queueMicrotask(()=>{this.m=!1}),!1)}formResetCallback(){for(const[t,n]of this.k??[])this.setProperty(t,n);this.onFormReset()}onFormReset(){}};o.formAssociated=!0,o.properties={};let s=o;const r=new Map;function a(t,n){const{css:e,id:i}=n;let o;i&&r.has(i)?o=r.get(i):(o=new CSSStyleSheet,o.replaceSync(e),i&&r.set(i,o));const s=t.adoptedStyleSheets||[];s.includes(o)||(t.adoptedStyleSheets=[...s,o])}const l=(t,n,e,i)=>i?`var(${t}-${n}${e}, var(${t}-${i}${e}))`:`var(${t}-${n}${e})`,c=(t,n)=>`oklch(from ${t} calc(l + var(--ty-${n})) c h)`,d=(t,n)=>`oklch(from ${t} calc(l + sign(0.5 - l) * abs(var(--ty-${n}))) c h)`,h=(t,n)=>{const e=e=>l("--ty-solid",t,e,n),i="neutral"===t?" --_border-l: var(--ty-button-border-l-neutral, var(--ty-button-border-l, -0.15));":" --_border-l: var(--_muted-border-l, var(--ty-button-border-l, -0.15));",o="neutral"===t?d:c;return`\nbutton.solid.${t} { --_ring: ${l("--ty-color",t,"",n)}; --_solid-bg: var(--ty-button-bg, var(--_muted-solid-bg, ${e("")})); --_solid-rest: var(--ty-button-bg, var(--_muted-solid-bg, ${e("")}));${i} color: var(--ty-button-color, var(--_muted-solid-fg, ${e("-fg")})); }\nbutton.solid.${t}.tone-plus { --_solid-bg: var(--ty-button-bg, var(--_muted-solid-bg, ${e("-strong")})); --_solid-rest: var(--ty-button-bg, var(--_muted-solid-bg, ${e("-strong")})); color: var(--ty-button-color, var(--_muted-solid-fg, ${e("-strong-fg")})); }\nbutton.solid.${t}.tone-minus { --_solid-bg: var(--ty-button-bg, var(--_muted-solid-bg, ${e("-soft")})); --_solid-rest: var(--ty-button-bg, var(--_muted-solid-bg, ${e("-soft")})); color: var(--ty-button-color, var(--_muted-solid-fg, ${e("-soft-fg")})); }\nbutton.solid.${t}:hover:not(:disabled) { --_solid-bg: var(--ty-button-bg-hover, ${e("-hover")}); }\nbutton.solid.${t}:active:not(:disabled) { --_solid-bg: ${e("-active")}; }\nbutton.solid.${t}.tone-plus:hover:not(:disabled) { --_solid-bg: var(--ty-button-bg-hover, ${o(e("-strong"),"solid-hover-l")}); }\nbutton.solid.${t}.tone-plus:active:not(:disabled) { --_solid-bg: ${o(e("-strong"),"solid-active-l")}; }\nbutton.solid.${t}.tone-minus:hover:not(:disabled) { --_solid-bg: var(--ty-button-bg-hover, ${c(e("-soft"),"solid-hover-l")}); }\nbutton.solid.${t}.tone-minus:active:not(:disabled) { --_solid-bg: ${c(e("-soft"),"solid-active-l")}; }\n`},u=(t,n)=>{const e=e=>"neutral"===t&&"-strong"===e?`var(--ty-solid-neutral${e})`:(e=>l("--ty-color",t,e,n))(e);return`\nbutton.outlined.${t} {\ncolor: var(--ty-button-color, var(--_muted-outlined-line, ${e("")}));\nborder-color: var(--ty-button-border, var(--_muted-outlined-line, ${e("")}));\n}\nbutton.outlined.${t}.tone-plus {\ncolor: var(--ty-button-color, var(--_muted-outlined-line, ${e("-strong")}));\nborder-color: var(--ty-button-border, var(--_muted-outlined-line, ${e("-strong")}));\n}\nbutton.outlined.${t}.tone-minus {\ncolor: var(--ty-button-color, var(--_muted-outlined-line, ${e("-soft")}));\nborder-color: var(--ty-button-border, var(--_muted-outlined-line, ${e("-soft")}));\n}\nbutton.outlined.${t}:hover:not(:disabled) {\nbackground: var(--ty-button-bg-hover, ${l("--ty-bg",t,"-soft",n)});\n}\nbutton.outlined.${t}:not(.muted):hover:not(:disabled),\nbutton.outlined.${t}:active:not(:disabled),\nbutton.outlined.${t}:focus-visible {\ncolor: var(--ty-button-color, ${e("-strong")});\nborder-color: var(--ty-button-border, ${e("-strong")});\n}\n`},p=(t,n)=>{const e=e=>"neutral"===t&&"-strong"===e?`var(--ty-solid-neutral${e})`:(e=>l("--ty-color",t,e,n))(e);return`\nbutton.ghost.${t} { color: var(--ty-button-color, var(--_muted-ghost-fg, ${e("")})); }\nbutton.ghost.${t}.tone-plus { color: var(--ty-button-color, var(--_muted-ghost-fg, ${e("-strong")})); }\nbutton.ghost.${t}.tone-minus { color: var(--ty-button-color, var(--_muted-ghost-fg, ${e("-soft")})); }\nbutton.ghost.${t}:hover:not(:disabled) {\nbackground: var(--ty-button-bg-hover, ${l("--ty-bg",t,"-soft",n)});\n}\nbutton.ghost.${t}:not(.muted):hover:not(:disabled),\nbutton.ghost.${t}:active:not(:disabled),\nbutton.ghost.${t}:focus-visible {\ncolor: var(--ty-button-color, ${e("-strong")});\n}\n`},b=`\n:host {\ndisplay: inline-block;\nfont-family: inherit;\n}\n:host([wide]) {\ndisplay: flex;\nflex-grow: 1;\n}\nbutton {\nfont-family: inherit;\nposition: relative;\ndisplay: flex;\nalign-items: center;\njustify-content: center;\ngap: var(--ty-spacing-1);\nfont-size: var(--ty-font-xs);\nline-height: var(--ty-leading-xs);\nletter-spacing: var(--ty-tracking-xs);\nfont-weight: var(--ty-weight-action, var(--ty-font-medium));\nwhite-space: nowrap;\ncursor: pointer;\nuser-select: none;\ntransition: var(--ty-local-transition, background-color 0.2s ease, color 0.2s ease, border-color 0.2s ease, box-shadow 0.2s ease);\nbackground: transparent;\ncolor: var(--ty-color-neutral);\nborder: 1px solid transparent;\n}\nbutton:not(.action) {\nmin-width: 4rem;\n}\nbutton:not(.pill) {\nborder-radius: var(--ty-radius-md);\n}\nbutton.xs:not(.pill) { border-radius: var(--ty-button-radius-xs, var(--ty-radius-md)); }\nbutton.sm:not(.pill) { border-radius: var(--ty-button-radius-sm, var(--ty-radius-md)); }\nbutton.md:not(.pill) { border-radius: var(--ty-button-radius-md, var(--ty-radius-md)); }\nbutton.lg:not(.pill) { border-radius: var(--ty-button-radius-lg, var(--ty-radius-md)); }\nbutton.xl:not(.pill) { border-radius: var(--ty-button-radius-xl, var(--ty-radius-md)); }\nbutton:focus-visible {\noutline: none;\n}\nbutton:disabled {\ncursor: not-allowed;\nopacity: 0.6;\n}\n.loader-icon {\ndisplay: none;\nalign-items: center;\njustify-content: center;\nflex-shrink: 0;\nwidth: 1em;\nheight: 1em;\ncolor: currentColor;\n}\n.loader-icon svg {\nwidth: 100%;\nheight: 100%;\n}\nbutton.loading {\ncursor: wait;\n}\nbutton.loading > *:not(.loader-icon) {\nvisibility: hidden;\n}\nbutton.loading > .loader-icon {\ndisplay: inline-flex;\nposition: absolute;\ntop: 50%;\nleft: 50%;\ntransform: translate(-50%, -50%);\nanimation: ty-button-spin 0.7s linear infinite;\n}\n@keyframes ty-button-spin {\nto { transform: translate(-50%, -50%) rotate(360deg); }\n}\n@media (prefers-reduced-motion: reduce) {\nbutton.loading > .loader-icon {\nanimation-duration: 1.6s;\n}\n}\n::slotted(*) {\ndisplay: inline-flex;\nalign-items: center;\njustify-content: center;\n}\n::slotted(ty-icon) {\nflex-shrink: 0;\n}\n:host([wide]) button {\nflex-grow: 1;\n}\nbutton.xs {\npadding: 0 var(--ty-spacing-2);\nfont-size: var(--ty-font-xs);\nline-height: var(--ty-leading-xs);\nletter-spacing: var(--ty-tracking-xs);\ngap: var(--ty-spacing-1);\nheight: 1.5rem; \n}\nbutton.sm {\npadding: 0 var(--ty-spacing-2);\nfont-size: var(--ty-font-xs);\nline-height: var(--ty-leading-xs);\nletter-spacing: var(--ty-tracking-xs);\ngap: var(--ty-spacing-1);\nheight: 1.75rem; \n}\nbutton.md {\npadding: 0.375rem var(--ty-spacing-3);\nfont-size: var(--ty-font-sm);\nline-height: var(--ty-leading-sm);\nletter-spacing: var(--ty-tracking-sm);\ngap: var(--ty-spacing-2);\nheight: 2rem; \n}\nbutton.lg {\npadding: 0.375rem var(--ty-spacing-4);\nfont-size: var(--ty-font-sm);\nline-height: var(--ty-leading-sm);\nletter-spacing: var(--ty-tracking-sm);\ngap: var(--ty-spacing-2);\nheight: 2.25rem; \n}\nbutton.xl {\npadding: var(--ty-spacing-2) var(--ty-spacing-6);\nfont-size: var(--ty-font-base);\nline-height: var(--ty-leading-base);\nletter-spacing: var(--ty-tracking-base);\ngap: var(--ty-spacing-2);\nheight: 2.5rem; \n}\nbutton.action {\ngap: 0px !important;\nheight: 2rem;\nwidth: 2rem;\npadding: 0px !important;\n}\nbutton.action ::slotted(ty-icon) {\nheight: 1rem;\nwidth: 1rem;\n}\nbutton.action.xs { height: 1.375rem; width: 1.375rem; }\nbutton.action.xs ::slotted(ty-icon) { height: 0.75rem; width: 0.75rem; }\nbutton.action.sm { height: 1.5rem; width: 1.5rem; }\nbutton.action.sm ::slotted(ty-icon) { height: 0.875rem; width: 0.875rem; }\nbutton.action.lg { height: 2.25rem; width: 2.25rem; }\nbutton.action.lg ::slotted(ty-icon) { height: 1.125rem; width: 1.125rem; }\nbutton.action.xl { height: 2.5rem; width: 2.5rem; }\nbutton.action.xl ::slotted(ty-icon) { height: 1.25rem; width: 1.25rem; }\nbutton.muted {\n--_muted-solid-bg: var(--ty-solid-neutral);\n--_muted-solid-fg: var(--ty-solid-neutral-fg);\n--_muted-outlined-line: var(--ty-color-neutral);\n--_muted-ghost-fg: var(--ty-color-neutral);\n--_muted-border-l: var(--ty-button-border-l-neutral, var(--ty-button-border-l, -0.15));\n}\nbutton.muted.tone-plus {\n--_muted-solid-bg: var(--ty-solid-neutral-strong);\n--_muted-solid-fg: var(--ty-solid-neutral-strong-fg);\n--_muted-outlined-line: var(--ty-solid-neutral-strong);\n--_muted-ghost-fg: var(--ty-solid-neutral-strong);\n}\nbutton.muted.tone-minus {\n--_muted-solid-bg: var(--ty-solid-neutral-soft);\n--_muted-solid-fg: var(--ty-solid-neutral-soft-fg);\n--_muted-outlined-line: var(--ty-color-neutral-soft);\n--_muted-ghost-fg: var(--ty-color-neutral-soft);\n}\n@media (hover: hover) and (pointer: fine) {\nbutton.muted:hover:not(:disabled) {\n--_muted-solid-bg: unset;\n--_muted-solid-fg: unset;\n--_muted-outlined-line: unset;\n--_muted-ghost-fg: unset;\n--_muted-border-l: unset;\n}\n}\nbutton.muted:active:not(:disabled),\nbutton.muted:focus-visible:not(:disabled) {\n--_muted-solid-bg: unset;\n--_muted-solid-fg: unset;\n--_muted-outlined-line: unset;\n--_muted-ghost-fg: unset;\n--_muted-border-l: unset;\n}\nbutton.pill {\nborder-radius: 9999px;\npadding-left: 1.25em;\npadding-right: 1.25em;\n}\nbutton.pill.xs { padding-left: 1em; padding-right: 1em; }\nbutton.pill.sm { padding-left: 1.125em; padding-right: 1.125em; }\nbutton.pill.lg { padding-left: 1.5em; padding-right: 1.5em; }\nbutton.pill.xl { padding-left: 1.75em; padding-right: 1.75em; }\nbutton.pill:has(ty-icon:only-child),\nbutton.pill:has(slot[name="start"]:only-child),\nbutton.pill:has(slot[name="end"]:only-child) {\npadding: 0;\naspect-ratio: 1;\nmin-width: var(--ty-size-md);\n}\nbutton.pill.xs:has(ty-icon:only-child) { min-width: 1.375rem; min-height: 1.375rem; }\nbutton.pill.sm:has(ty-icon:only-child) { min-width: 1.5rem; min-height: 1.5rem; }\nbutton.pill.md:has(ty-icon:only-child) { min-width: 2rem; min-height: 2rem; }\nbutton.pill.lg:has(ty-icon:only-child) { min-width: 2.25rem; min-height: 2.25rem; }\nbutton.pill.xl:has(ty-icon:only-child) { min-width: 2.5rem; min-height: 2.5rem; }\nbutton.solid {\n--_ring: var(--ty-color-neutral);\n--_solid-bg: var(--ty-button-bg, var(--ty-solid-neutral));\n--_solid-rest: var(--ty-button-bg, var(--ty-solid-neutral));\n--_border-l: var(--ty-button-border-l-neutral, var(--ty-button-border-l, -0.15));\nbackground: var(--_solid-bg);\ncolor: var(--ty-button-color, var(--ty-solid-neutral-fg));\nborder: var(--ty-solid-border-width, 1px) solid\nvar(--ty-solid-border-color,\noklch(from var(--_solid-rest, var(--_solid-bg)) calc(l + var(--_border-l, -0.15) * var(--ty-button-depth, 0.35)) c h));\nbox-shadow: 0 1px 2px oklch(0 0 0 / calc(0.4 * var(--ty-button-depth, 0.35)));\n}\nbutton.solid.tone-plus { --_solid-bg: var(--ty-button-bg, var(--ty-solid-neutral-strong)); --_solid-rest: var(--ty-button-bg, var(--ty-solid-neutral-strong)); color: var(--ty-button-color, var(--ty-solid-neutral-strong-fg)); }\nbutton.solid.tone-minus { --_solid-bg: var(--ty-button-bg, var(--ty-solid-neutral-soft)); --_solid-rest: var(--ty-button-bg, var(--ty-solid-neutral-soft)); color: var(--ty-button-color, var(--ty-solid-neutral-soft-fg)); }\nbutton.solid:hover:not(:disabled) { --_solid-bg: var(--ty-button-bg-hover, var(--ty-solid-neutral-hover)); }\nbutton.solid:active:not(:disabled) { --_solid-bg: var(--ty-solid-neutral-active); }\nbutton.solid.tone-plus:hover:not(:disabled) {\n--_solid-bg: var(--ty-button-bg-hover, oklch(from var(--ty-solid-neutral-strong) calc(l + sign(0.5 - l) * abs(var(--ty-solid-hover-l))) c h));\n}\nbutton.solid.tone-plus:active:not(:disabled) {\n--_solid-bg: oklch(from var(--ty-solid-neutral-strong) calc(l + sign(0.5 - l) * abs(var(--ty-solid-active-l))) c h);\n}\nbutton.solid.tone-minus:hover:not(:disabled) {\n--_solid-bg: var(--ty-button-bg-hover, oklch(from var(--ty-solid-neutral-soft) calc(l + var(--ty-solid-hover-l)) c h));\n}\nbutton.solid.tone-minus:active:not(:disabled) {\n--_solid-bg: oklch(from var(--ty-solid-neutral-soft) calc(l + var(--ty-solid-active-l)) c h);\n}\n${n.map(t=>h(t)).join("")}\nbutton.solid:focus-visible {\nbox-shadow: 0 0 0 2px var(--ty-focus-ring-gap), 0 0 0 4px var(--_ring);\n}\nbutton.outlined {\nbackground: transparent;\ncolor: var(--ty-button-border, var(--ty-button-color, var(--ty-color-neutral)));\nborder-color: var(--ty-button-border, var(--ty-button-color, var(--ty-color-neutral)));\n}\nbutton.outlined:hover:not(:disabled) {\nbackground: var(--ty-button-bg-hover, var(--ty-bg-neutral-soft));\n}\n${n.map(t=>u(t)).join("")}\nbutton.ghost {\nbackground: transparent;\nborder: none;\ncolor: var(--ty-button-color, var(--ty-color-neutral));\n}\nbutton.ghost:hover:not(:disabled) {\nbackground: var(--ty-button-bg-hover, var(--ty-bg-neutral-soft));\n}\n${n.map(t=>p(t)).join("")}`;function v(t,e,i,o){const s=(i||"")+"",r=s.replace(/[+-]$/,"");return n.includes(r)||!/^[A-Za-z][A-Za-z0-9_-]*$/.test(r)?(e&&(t.adoptedStyleSheets=t.adoptedStyleSheets.filter(t=>t!==e)),null):(e||(e=new CSSStyleSheet,t.adoptedStyleSheets=[...t.adoptedStyleSheets,e]),e.replaceSync(o({flavor:s,base:r,shade:s.slice(r.length)})),e)}let g=null;function m(t){g=t&&t.trim()?t:null}function y(){return g??'<svg viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg" aria-hidden="true"><circle cx="12" cy="12" r="10" stroke="currentColor" stroke-width="3" stroke-opacity="0.25"/><path d="M22 12a10 10 0 0 1-10 10" stroke="currentColor" stroke-width="3" stroke-linecap="round"/></svg>'}function f(){g=null}const w=class extends s{constructor(){super(),this.q=!1,this.A=null,a(this.shadowRoot,{css:b,id:"ty-button"})}onConnect(){this.j()}onDisconnect(){}onPropertiesChanged(t){t.some(t=>"flavor"===t.name)&&this.j()}j(){const{base:t}=this.parseFlavor();this.A=v(this.shadowRoot,this.A,t,()=>(t=>h(t,"neutral")+u(t,"neutral")+p(t,"neutral"))(t))}get flavor(){return this.getProperty("flavor")}set flavor(t){this.setProperty("flavor",t)}get size(){return this.getProperty("size")}set size(t){this.setProperty("size",t)}get appearance(){return this.getProperty("appearance")}set appearance(t){this.setProperty("appearance",t)}get disabled(){return this.getProperty("disabled")}set disabled(t){this.setProperty("disabled",t)}get loading(){return this.getProperty("loading")}set loading(t){this.setProperty("loading",t)}get type(){return this.getProperty("type")}set type(t){this.setProperty("type",t)}get pill(){return this.getProperty("pill")}set pill(t){this.setProperty("pill",t)}get action(){return this.getProperty("action")}set action(t){this.setProperty("action",t)}get muted(){return this.getProperty("muted")}set muted(t){this.setProperty("muted",t)}get wide(){return this.getProperty("wide")}set wide(t){this.setProperty("wide",t)}get name(){return this.getProperty("name")}set name(t){this.setProperty("name",t)}get value(){return this.getProperty("value")}set value(t){this.setProperty("value",t)}parseFlavor(){const t=this.flavor||"";return t.length>1&&t.endsWith("+")?{base:t.slice(0,-1),tone:"+"}:t.length>1&&t.endsWith("-")?{base:t.slice(0,-1),tone:"-"}:{base:t,tone:""}}buildClasses(){const{base:t,tone:n}=this.parseFlavor();return function(...t){return t.filter(Boolean).join(" ")}(t,this.size,this.appearance,this.pill&&"pill",this.action&&"action",this.muted&&"muted","+"===n&&"tone-plus","-"===n&&"tone-minus")}handleFormAction(){const t=this.$.form;if(t)switch(this.type){case"submit":this.name&&this.value&&this.$.setFormValue(this.value),t.requestSubmit();break;case"reset":t.reset()}}initializeButtonStructure(){const t=this.shadowRoot,n=this.buildClasses(),e=document.createElement("button");e.disabled=this.disabled,e.className=n;const i=document.createElement("span");i.className="loader-icon",i.setAttribute("aria-hidden","true"),i.innerHTML=y();const o=document.createElement("slot");o.name="start",o.className="start";const s=document.createElement("slot"),r=document.createElement("slot");r.name="end",r.className="end",e.appendChild(i),e.appendChild(o),e.appendChild(s),e.appendChild(r),e.addEventListener("click",t=>{this.disabled||this.loading||(t.stopPropagation(),this.handleFormAction(),this.dispatchEvent(new CustomEvent("click",{bubbles:!0,composed:!0,detail:{originalEvent:t}})))}),this.applyLoadingState(e),t.appendChild(e),this.q=!0}applyLoadingState(t){const n=this.loading;if(t.classList.toggle("loading",n),n){t.setAttribute("aria-busy","true");const n=t.querySelector(".loader-icon");n&&(n.innerHTML=y())}else t.removeAttribute("aria-busy")}render(){const t=this.shadowRoot;if(!this.q)return void this.initializeButtonStructure();const n=this.buildClasses(),e=t.querySelector("button");e&&(e.disabled=this.disabled,e.className=n,this.applyLoadingState(e))}};w.formAssociated=!0,w.properties={flavor:{type:"string",visual:!0,default:"neutral"},size:{type:"string",visual:!0,default:e,validate:t=>["xs","sm","md","lg","xl"].includes(t),coerce:t=>["xs","sm","md","lg","xl"].includes(t)?t:e},appearance:{type:"string",visual:!0,default:"solid",validate:t=>["solid","outlined","ghost"].includes(t),coerce:t=>["solid","outlined","ghost"].includes(t)?t:"solid"},disabled:{type:"boolean",visual:!0,default:!1},loading:{type:"boolean",visual:!0,default:!1},type:{type:"string",visual:!1,default:"submit"},pill:{type:"boolean",visual:!0,default:!1},action:{type:"boolean",visual:!0,default:!1},muted:{type:"boolean",visual:!0,default:!1},wide:{type:"boolean",visual:!1,default:!1},name:{type:"string",default:""},value:{type:"string",default:""}};let x=w;customElements.get("ty-button")||customElements.define("ty-button",x);const k="1.0.0-TC55",$=new Map,z=new Map,C=new Map;let E=null,T=null;const S="ty-icons-v"+k,M="https://ty-icons.local/",_=new Map;let D=!1;function q(t){const n=new Set;Object.entries(t).forEach(([t,e])=>{$.set(t,e),n.add(t)}),n.size>0&&F(n)}function A(t){return $.get(t)}function j(t){return $.has(t)}async function I(){const t=new Set($.keys());if($.clear(),"caches"in window)try{await caches.delete(S),D=!1}catch(n){}F(t)}function L(t,n,e){z.set(t,e),n&&C.set(t,n)}function V(t){z.delete(t),C.delete(t)}function F(t){E||(E=new Set),t.forEach(t=>E.add(t)),null!==T&&clearTimeout(T);const n="undefined"!=typeof requestIdleCallback?requestIdleCallback:t=>setTimeout(t,0);T=n(()=>{const t=E;E=null,T=null,t&&t.size>0&&function(t){z.forEach((n,e)=>{const i=C.get(e);i?t.has(i)&&n(new Set([i])):n(t)})}(t)})}function O(){return Array.from($.keys())}async function H(){const t={version:k,cacheName:S,available:"caches"in window};if(!t.available)return t;try{const n=await caches.open(S),e=(await n.keys()).filter(t=>t.url.startsWith(M));return{...t,iconCount:e.length}}catch(n){return t}}const N=Object.freeze(Object.defineProperty({__proto__:null,addWatcher:L,clearIcons:I,getCacheInfo:H,getCachedIcon:async function(t){const n=_.get(t);if(n)return n;const e=(async()=>{try{await async function(){if(!D&&"caches"in window){D=!0;try{const t=(await caches.keys()).filter(t=>t.startsWith("ty-icons-v")&&t!==S);await Promise.all(t.map(t=>caches.delete(t)))}catch(t){}}}();const n=await caches.open(S),e=await n.match(`${M}${t}`);if(e)return await e.text()}catch(n){}return null})();return _.set(t,e),e.finally(()=>{_.delete(t)}),e},getIcon:A,getIconNames:O,hasIcon:j,registerIcons:q,removeWatcher:V},Symbol.toStringTag,{value:"Module"}));let P=0;const W='<svg xmlns="http://www.w3.org/2000/svg"\nviewBox="0 0 512 512"\nfill="currentColor"\nopacity="0.2">\n<path d="M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512z"/>\n</svg>',B=class extends s{constructor(){super(),this.I=null,this.L="",this.V=null,a(this.shadowRoot,{css:"\n:host {\ndisplay: flex;\nalign-items: center;\njustify-content: center;\nline-height: 0;\nwidth: var(--ty-icon-size, 1em);\nheight: var(--ty-icon-size, 1em);\naspect-ratio: 1 / 1;\ncolor: inherit;\ntransition: color var(--ty-transition-fast);\nflex-shrink: 0;\nvisibility: visible !important;\nopacity: 1;\nwill-change: contents;\ntransform: translateZ(0);\n-webkit-font-smoothing: antialiased;\n}\n:host svg {\nwidth: 100%;\nheight: 100%;\ndisplay: block;\nwill-change: auto;\ntransform: translateZ(0);\n}\n::slotted(svg),\n::slotted(img) {\nwidth: 100%;\nheight: 100%;\ndisplay: block;\n}\n:host([slot]) {\ndisplay: inline-flex;\n}\n:host(.icon-xs) {\nwidth: 0.75em;\nheight: 0.75em;\n}\n:host(.icon-sm) {\nwidth: 0.875em;\nheight: 0.875em;\n}\n:host(.icon-md) {\nwidth: 1em;\nheight: 1em;\n}\n:host(.icon-lg) {\nwidth: 1.25em;\nheight: 1.25em;\n}\n:host(.icon-xl) {\nwidth: 1.5em;\nheight: 1.5em;\n}\n:host(.icon-2xl) {\nwidth: 2em;\nheight: 2em;\n}\n:host(.icon-12) {\nwidth: 12px;\nheight: 12px;\n}\n:host(.icon-14) {\nwidth: 14px;\nheight: 14px;\n}\n:host(.icon-16) {\nwidth: 16px;\nheight: 16px;\n}\n:host(.icon-18) {\nwidth: 18px;\nheight: 18px;\n}\n:host(.icon-20) {\nwidth: 20px;\nheight: 20px;\n}\n:host(.icon-24) {\nwidth: 24px;\nheight: 24px;\n}\n:host(.icon-32) {\nwidth: 32px;\nheight: 32px;\n}\n:host(.icon-48) {\nwidth: 48px;\nheight: 48px;\n}\n:host(.icon-64) {\nwidth: 64px;\nheight: 64px;\n}\n:host(.icon-80) {\nwidth: 80px;\nheight: 80px;\n}\n:host(.icon-96) {\nwidth: 96px;\nheight: 96px;\n}\n:host(.icon-spin) {\nanimation: icon-spin 1s linear infinite;\n}\n:host(.icon-spin.icon-tempo-slow) {\nanimation: icon-spin 2s linear infinite;\n}\n:host(.icon-spin.icon-tempo-fast) {\nanimation: icon-spin 0.5s linear infinite;\n}\n@keyframes icon-spin {\nfrom {\ntransform: rotate(0deg);\n}\nto {\ntransform: rotate(360deg);\n}\n}\n:host(.icon-pulse) {\nanimation: icon-pulse 2s cubic-bezier(0.4, 0, 0.6, 1) infinite;\n}\n:host(.icon-pulse.icon-tempo-slow) {\nanimation: icon-pulse 3s cubic-bezier(0.4, 0, 0.6, 1) infinite;\n}\n:host(.icon-pulse.icon-tempo-fast) {\nanimation: icon-pulse 1s cubic-bezier(0.4, 0, 0.6, 1) infinite;\n}\n@keyframes icon-pulse {\n0%,\n100% {\nopacity: 1;\n}\n50% {\nopacity: 0.5;\n}\n}\n:host {\n-webkit-user-select: none;\nuser-select: none;\n}\n:host(:not(.icon-clickable)) {\npointer-events: none;\n}\n:host(.icon-clickable) {\ncursor: pointer;\npointer-events: auto;\ntransition: color var(--ty-transition-fast), transform var(--ty-transition-fast);\n}\n:host(.icon-clickable:hover) {\ntransform: scale(1.1);\n}\n:host(.icon-clickable:active) {\ntransform: scale(0.95);\n}\n:host(.icon-disabled) {\nopacity: 0.5;\ncursor: not-allowed;\n}\n:host(.icon-block) {\ndisplay: block;\n}\n",id:"ty-icon"}),this.V=document.createElement("slot"),this.V.innerHTML=W,this.L=W,this.shadowRoot.appendChild(this.V)}onConnect(){this.I="ty-icon-"+ ++P,this.name&&L(this.I,this.name,t=>{this.name&&t.has(this.name)&&this.render()}),this.updateClasses()}onDisconnect(){this.I&&(V(this.I),this.I=null)}onPropertiesChanged(t){for(const n of t)if("name"===n.name){this.I&&V(this.I);const t=n.newValue||"";t&&this.isConnected&&(this.I="ty-icon-"+ ++P,L(this.I,t,t=>{this.name&&t.has(this.name)&&this.render()}))}this.updateClasses()}get name(){return this.getProperty("name")}set name(t){this.setProperty("name",t)}get size(){return this.getProperty("size")||void 0}set size(t){this.setProperty("size",t||"")}get spin(){return this.getProperty("spin")}set spin(t){this.setProperty("spin",t)}get pulse(){return this.getProperty("pulse")}set pulse(t){this.setProperty("pulse",t)}get tempo(){return this.getProperty("tempo")||void 0}set tempo(t){this.setProperty("tempo",t||"")}buildClasses(){const t=[],n=this.getProperty("size");n&&t.push("icon-"+n),this.getProperty("spin")&&t.push("icon-spin"),this.getProperty("pulse")&&t.push("icon-pulse");const e=this.getProperty("tempo");e&&(this.getProperty("spin")||this.getProperty("pulse"))&&t.push("icon-tempo-"+e);const i=this.className.split(/\s+/).filter(t=>t&&!t.startsWith("icon-")&&"icon-spin"!==t&&"icon-pulse"!==t);return[...t,...i]}updateClasses(){const t=this.buildClasses().join(" ");this.className!==t&&(this.className=t)}render(){const t=this.getProperty("name");if(!t)return void this.renderSvg(W);const n=A(t);this.renderSvg(n||W)}renderSvg(t){this.L!==t&&this.V&&(this.V.innerHTML=t,this.L=t)}};B.formAssociated=!1,B.properties={name:{type:"string",visual:!0,default:""},size:{type:"string",visual:!0,default:""},spin:{type:"boolean",visual:!0,default:!1},pulse:{type:"boolean",visual:!0,default:!1},tempo:{type:"string",visual:!0,default:""}};let R=B;customElements.get("ty-icon")||customElements.define("ty-icon",R);const Y=`\n:host([hidden]) {\ndisplay: none !important;\n}\n.tag-container {\ndisplay: flex;\nalign-items: center;\njustify-content: center;\ngap: var(--ty-spacing-1);\nborder-radius: var(--ty-radius-full);\nfont-weight: var(--ty-weight-label, 440);\ntext-align: center;\nwhite-space: nowrap;\nuser-select: none;\nbox-sizing: border-box;\npadding: 0 0.625rem; \nfont-size: var(--ty-font-xs); \nline-height: var(--ty-leading-xs); \nletter-spacing: var(--ty-tracking-xs); \nmin-height: 28px;\ntransition: var(--ty-transition-all);\nbackground: var(--tag-bg, transparent);\ncolor: var(--tag-color, var(--ty-text));\nborder: 1px solid;\nborder-color: var(--tag-border-color, var(--ty-border));\n}\n:host([pill="false"]) .tag-container,\n:host([not-pill]) .tag-container {\nborder-radius: var(--ty-radius-md);\n}\n:host([value]:not([selected])) .tag-container:not([aria-disabled="true"]) {\ncursor: pointer;\n}\n:host([selected]) .tag-container:not([aria-disabled="true"]) {\ncursor: initial;\n}\n.tag-container[tabindex]:not([aria-disabled="true"]):hover {\nbackground: var(--ty-bg-neutral-soft);\ntransform: translateY(-1px);\nbox-shadow: var(--ty-shadow-sm);\n}\n.tag-container[tabindex]:not([aria-disabled="true"]):active {\ntransform: translateY(0);\nbox-shadow: var(--ty-shadow-sm);\n}\n.tag-container[tabindex]:focus {\noutline: none;\n}\n.tag-container[aria-disabled="true"] {\nopacity: 0.6;\ncursor: not-allowed;\npointer-events: none;\n}\n.tag-start,\n.tag-content,\n.tag-end {\ndisplay: flex;\nalign-items: center;\njustify-content: center;\nflex-shrink: 0;\n}\n.tag-content {\nflex: 1;\nmin-width: 0;\n}\n.tag-dismiss {\ndisplay: inline-flex;\nalign-items: center;\njustify-content: center;\npadding: 0;\nbackground: none;\nborder: none;\ncolor: currentColor;\ncursor: pointer;\nborder-radius: var(--ty-radius-full);\ntransition: var(--ty-transition-all);\nopacity: 0.7;\nflex-shrink: 0;\nwidth: var(--ty-spacing-4);\nheight: var(--ty-spacing-4);\n}\n.tag-dismiss:hover {\nopacity: 1;\nbackground: rgba(0, 0, 0, 0.1);\n}\n.tag-dismiss svg {\nwidth: 100%;\nheight: 100%;\n}\n:host([size="xs"]) .tag-container {\npadding: 0 0.375rem; \nfont-size: var(--ty-font-xs); \nline-height: var(--ty-leading-xs);\nletter-spacing: var(--ty-tracking-xs);\nmin-height: 20px;\n}\n:host([size="xs"]) .tag-dismiss {\nwidth: var(--ty-spacing-3);\nheight: var(--ty-spacing-3);\nmargin-left: var(--ty-spacing-2);\n}\n:host([size="sm"]) .tag-container {\npadding: 0 var(--ty-spacing-2); \nfont-size: var(--ty-font-xs); \nline-height: var(--ty-leading-xs);\nletter-spacing: var(--ty-tracking-xs);\nmin-height: 24px;\n}\n:host([size="sm"]) .tag-dismiss {\nwidth: var(--ty-spacing-3);\nheight: var(--ty-spacing-3);\nmargin-left: var(--ty-spacing-2);\n}\n:host([size="lg"]) .tag-container {\npadding: 0 var(--ty-spacing-3); \nfont-size: var(--ty-font-sm); \nline-height: var(--ty-leading-sm); \nletter-spacing: var(--ty-tracking-sm); \nmin-height: 32px;\n}\n:host([size="lg"]) .tag-dismiss {\nwidth: var(--ty-spacing-5);\nheight: var(--ty-spacing-5);\nmargin-left: var(--ty-spacing-4);\n}\n:host([size="xl"]) .tag-container {\npadding: 0 0.875rem; \nfont-size: var(--ty-font-sm); \nline-height: var(--ty-leading-sm); \nletter-spacing: var(--ty-tracking-sm); \nmin-height: 36px;\n}\n:host([size="xl"]) .tag-dismiss {\nwidth: var(--ty-spacing-5);\nheight: var(--ty-spacing-5);\nmargin-left: var(--ty-spacing-4);\n}\n${n.filter(t=>"neutral"!==t).map(t=>`\n:host([flavor="${t}"]) {\n--tag-bg: var(--ty-bg-${t});\n--tag-color: var(--ty-color-${t});\n--tag-border-color: var(--ty-border-${t});\n}\n:host([flavor="${t}+"]) {\n--tag-bg: var(--ty-bg-${t}-bold);\n--tag-color: var(--ty-color-${t}-strong);\n--tag-border-color: var(--ty-color-${t});\n}\n:host([flavor="${t}-"]) {\n--tag-bg: var(--ty-bg-${t}-soft);\n--tag-color: var(--ty-color-${t});\n--tag-border-color: var(--ty-border-${t});\n}\n:host([flavor="${t}"]) .tag-container[tabindex]:hover,\n:host([flavor="${t}+"]) .tag-container[tabindex]:hover,\n:host([flavor="${t}-"]) .tag-container[tabindex]:hover {\nbackground: var(--ty-bg-${t}-bold);\n}\n:host([flavor="${t}"]) .tag-container[tabindex]:focus,\n:host([flavor="${t}+"]) .tag-container[tabindex]:focus,\n:host([flavor="${t}-"]) .tag-container[tabindex]:focus {\nbox-shadow: 0 0 0 3px var(--ty-color-${t}-faint);\n}\n`).join("")}\n:host([flavor="neutral"]) {\n--tag-color: var(--ty-text-bold);\n--tag-bg: var(--ty-bg-neutral-soft);\n--tag-border-color: var(--ty-border-bold);\n}\n:host([flavor="neutral+"]) {\n--tag-bg: var(--ty-bg-neutral-bold);\n--tag-color: var(--ty-text-bold);\n--tag-border-color: var(--ty-border-strong);\n}\n:host([flavor="neutral-"]) {\n--tag-bg: var(--ty-bg-neutral-soft);\n--tag-color: var(--ty-text-soft);\n--tag-border-color: var(--ty-border);\n}\n:host([flavor="neutral"]) .tag-container[tabindex]:hover,\n:host([flavor="neutral+"]) .tag-container[tabindex]:hover,\n:host([flavor="neutral-"]) .tag-container[tabindex]:hover {\nbackground: var(--ty-bg-neutral-soft);\n}\n:host([flavor="neutral"]) .tag-container[tabindex]:focus,\n:host([flavor="neutral+"]) .tag-container[tabindex]:focus,\n:host([flavor="neutral-"]) .tag-container[tabindex]:focus {\nbox-shadow: 0 0 0 3px var(--ty-border-soft);\n}\n.tag-start ::slotted(*),\n.tag-content ::slotted(*),\n.tag-end ::slotted(*) {\ndisplay: flex;\nalign-items: center;\n}\n.tag-start ::slotted(ty-icon),\n.tag-end ::slotted(ty-icon) {\nwidth: 1em;\nheight: 1em;\nflex-shrink: 0;\n}\n.tag-end ::slotted(.count) {\ndisplay: inline-flex;\nalign-items: center;\njustify-content: center;\nmin-width: var(--ty-spacing-6);\nheight: var(--ty-spacing-5);\npadding: 0 var(--ty-spacing-2);\nbackground: rgba(0, 0, 0, 0.1);\nborder-radius: var(--ty-radius-full);\nfont-size: var(--ty-font-xs);\nfont-weight: var(--ty-font-semibold);\nline-height: var(--ty-line-height-none);\nflex-shrink: 0;\n}\n.tag-content {\noverflow: hidden;\ntext-overflow: ellipsis;\n}\n:host([data-type="user"]) .tag-container {\nmin-width: var(--ty-spacing-20);\n}\n`,U=class extends s{constructor(){super(),this.F=null,this.A=null,this.handleClick=t=>{this.clickable&&!this.disabled&&(t.preventDefault(),t.stopPropagation(),this.dispatchTagEvent("click",{target:this}),this.dispatchTagEvent("pointerdown",{target:this}))},this.handleDismiss=t=>{this.dismissible&&!this.disabled&&(t.preventDefault(),t.stopPropagation(),this.dispatchTagEvent("dismiss",{target:this}))},this.handleKeydown=t=>{const n=t;if(!this.disabled)switch(n.keyCode){case 13:case 32:this.clickable&&(n.preventDefault(),this.dispatchTagEvent("click",{target:this}));break;case 8:case 46:this.dismissible&&(n.preventDefault(),this.dispatchTagEvent("dismiss",{target:this}))}},a(this.shadowRoot,{css:Y,id:"ty-tag"})}onConnect(){this.j(),queueMicrotask(()=>{this.setupEventListeners()})}j(){this.A=v(this.shadowRoot,this.A,this.flavor,({flavor:t,base:n,shade:e})=>`\n:host([flavor="${t}"]) {\n--tag-bg: var(${"+"===e?`--ty-bg-${n}-bold`:"-"===e?`--ty-bg-${n}-soft`:"--ty-bg-"+n});\n--tag-color: var(${"+"===e?`--ty-color-${n}-strong`:"--ty-color-"+n});\n--tag-border-color: var(--ty-border-${n}, var(--ty-color-${n}));\n}\n:host([flavor="${t}"]) .tag-container[tabindex]:hover {\nbackground: var(--ty-bg-${n}-bold, var(--tag-bg));\n}\n:host([flavor="${t}"]) .tag-container[tabindex]:focus {\nbox-shadow: 0 0 0 3px var(--ty-color-${n}-faint, var(--tag-color));\n}`)}onDisconnect(){this.cleanupEventListeners()}onPropertiesChanged(t){t.some(t=>"flavor"===t.name)&&this.j()}dispatchTagEvent(t,n){this.dispatchEvent(new CustomEvent(t,{detail:n,bubbles:!0,composed:!0,cancelable:!0}))}cleanupEventListeners(){this.F&&(this.F(),this.F=null)}setupEventListeners(){this.cleanupEventListeners();const t=this.shadowRoot,n=t.querySelector(".tag-container"),e=t.querySelector(".tag-dismiss");n&&(n.addEventListener("click",this.handleClick),n.addEventListener("keydown",this.handleKeydown),e&&e.addEventListener("click",this.handleDismiss),this.F=()=>{n.removeEventListener("click",this.handleClick),n.removeEventListener("keydown",this.handleKeydown),e&&e.removeEventListener("click",this.handleDismiss)})}render(){this.shadowRoot.innerHTML=`\n<div class="tag-container" part="container"${this.clickable?' tabindex="0"':""}${this.disabled?' aria-disabled="true"':""}${this.value?` data-value="${this.value}"`:""}>\n<div class="tag-start">\n<slot name="start" class="tag-start"></slot>\n</div>\n<div class="tag-content">\n<slot></slot>\n</div>\n<div class="tag-end">\n<slot name="end"></slot>\n${this.dismissible?'\n<button class="tag-dismiss" type="button" aria-label="Remove tag">\n<svg viewBox="0 0 20 20" fill="currentColor">\n<path fill-rule="evenodd" d="M4.293 4.293a1 1 0 011.414 0L10 8.586l4.293-4.293a1 1 0 111.414 1.414L11.414 10l4.293 4.293a1 1 0 01-1.414 1.414L10 11.414l-4.293 4.293a1 1 0 01-1.414-1.414L8.586 10 4.293 5.707a1 1 0 010-1.414z" clip-rule="evenodd" />\n</svg>\n</button>\n':""}\n</div>\n</div>\n`,this.p&&this.setupEventListeners()}get flavor(){return this.getProperty("flavor")}set flavor(t){this.setProperty("flavor",t)}get size(){return this.getProperty("size")}set size(t){this.setProperty("size",t)}get value(){return this.getProperty("value")}set value(t){this.setProperty("value",t)}get selected(){return this.getProperty("selected")}set selected(t){this.setProperty("selected",t)}get pill(){return this.getProperty("pill")}set pill(t){this.setProperty("pill",t)}get clickable(){return this.getProperty("clickable")}set clickable(t){this.setProperty("clickable",t)}get dismissible(){return this.getProperty("dismissible")}set dismissible(t){this.setProperty("dismissible",t)}get disabled(){return this.getProperty("disabled")}set disabled(t){this.setProperty("disabled",t)}};U.formAssociated=!0,U.properties={flavor:{type:"string",visual:!0,default:"neutral"},size:{type:"string",visual:!0,default:e,validate:t=>["xs","sm","md","lg","xl"].includes(t),coerce:t=>["xs","sm","md","lg","xl"].includes(t)?t:e},value:{type:"string",visual:!0,default:""},selected:{type:"boolean",visual:!0,default:!1},pill:{type:"boolean",visual:!0,default:!0,aliases:{"not-pill":!1}},clickable:{type:"boolean",visual:!0,default:!1},dismissible:{type:"boolean",visual:!0,default:!1},disabled:{type:"boolean",visual:!0,default:!1}};let X=U;customElements.get("ty-tag")||customElements.define("ty-tag",X);class TyOption extends HTMLElement{constructor(){super(),this.O=void 0,this.H=!1,this.N=!1,this.P=!1,this.W=!1,a(this.attachShadow({mode:"open"}),{css:"\n.option-content {\ndisplay: flex;\nalign-items: center;\njustify-content: space-between;\ngap: var(--ty-spacing-2);\nbox-sizing: border-box;\nwidth: 100%;\ncursor: pointer;\nuser-select: none;\ntransition: var(--ty-transition-all);\ncolor: var(--ty-text);\nfont-family: inherit;\nfont-size: var(--ty-font-sm);\nline-height: var(--ty-leading-sm);\nletter-spacing: var(--ty-tracking-sm);\npadding: var(--ty-spacing-2) var(--ty-spacing-3);\nborder-radius: var(--ty-radius-md);\n}\n:host([cloned]) {\ndisplay: block;\nmin-width: 0;\noverflow: hidden;\n}\n:host([cloned]) .option-content {\ndisplay: block;\npadding: 0px;\nbackground: transparent;\nmin-width: 0;\noverflow: hidden;\nwhite-space: nowrap;\ntext-overflow: ellipsis;\nfont-size: var(--ty-field-font, var(--ty-font-sm));\nline-height: var(--ty-field-leading, var(--ty-leading-sm));\nletter-spacing: var(--ty-field-tracking, var(--ty-tracking-sm));\n}\n.option-content:hover {\nbackground: var(--ty-bg-neutral-soft);\n}\n.option-content[highlighted] {\nbackground: var(--ty-bg-neutral-soft);\ncolor: var(--ty-text-strong);\nfont-weight: var(--ty-font-semibold);\n}\n.option-content[selected] {\nbackground: transparent;\ncolor: var(--ty-text-bold);\n}\n.option-check {\ndisplay: none;\nflex-shrink: 0;\nwidth: 14px;\nheight: 14px;\nmargin-left: auto;\ncolor: var(--ty-color-primary);\n}\n.option-content[selected] .option-check {\ndisplay: block;\n}\n:host([cloned]) .option-check {\ndisplay: none;\n}\n.option-content[selected]:hover {\nbackground: var(--ty-bg-neutral-soft);\n}\n.option-content[disabled] {\nopacity: 0.5;\ncursor: not-allowed;\n}\n.option-content[hidden] {}\n.option-content * {\npointer-events: none;\n}\n",id:"ty-option"}),this.render()}static get observedAttributes(){return["value","disabled","selected","highlighted","hidden"]}connectedCallback(){const t=Object.getOwnPropertyDescriptor(this,"value");t&&(this.O=t.value,delete this.value),this.render()}attributeChangedCallback(t,n,e){if(n!==e){switch(t){case"value":this.O=e||void 0;break;case"selected":this.H=null!==e;break;case"disabled":this.N=null!==e;break;case"highlighted":this.P=null!==e;break;case"hidden":this.W=null!==e}this.render()}}getOptionValue(){if(void 0!==this.O)return this.O;const t=this.getAttribute("value");return null!==t?t:this.textContent?.trim()||""}get value(){return this.getOptionValue()}set value(t){this.O!==t&&(this.O=t,void 0!==t?this.setAttribute("value",t):this.removeAttribute("value"),this.render())}get selected(){return this.H}set selected(t){this.H!==t&&(this.H=t,t?this.setAttribute("selected",""):this.removeAttribute("selected"),this.render())}get disabled(){return this.N}set disabled(t){this.N!==t&&(this.N=t,t?this.setAttribute("disabled",""):this.removeAttribute("disabled"),this.render())}get highlighted(){return this.P}set highlighted(t){this.P!==t&&(this.P=t,t?this.setAttribute("highlighted",""):this.removeAttribute("highlighted"),this.render())}get hidden(){return this.W}set hidden(t){this.W!==t&&(this.W=t,t?this.setAttribute("hidden",""):this.removeAttribute("hidden"),this.render())}render(){const t=this.shadowRoot;t.querySelector(".option-content")||(t.innerHTML='<div class="option-content"><slot></slot>\n<svg class="option-check" viewBox="0 0 24 24" fill="none" stroke="currentColor"\nstroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true">\n<path d="M20 6 9 17l-5-5" />\n</svg>\n</div>');const n=t.querySelector(".option-content");n&&(this.N?n.setAttribute("disabled",""):n.removeAttribute("disabled"),this.H?n.setAttribute("selected",""):n.removeAttribute("selected"),this.P?n.setAttribute("highlighted",""):n.removeAttribute("highlighted"),this.W?n.setAttribute("hidden",""):n.removeAttribute("hidden"))}}customElements.get("ty-option")||customElements.define("ty-option",TyOption);const K='\n:host {\n--ty-field-height: var(--ty-size-sm, 2rem);\n--ty-field-pad-x: 10px;\n--ty-field-font: var(--ty-font-sm);\n--ty-field-leading: 20px;\n--ty-field-tracking: var(--ty-tracking-sm);\n--ty-field-label-font: var(--ty-font-xs);\n--ty-field-label-leading: var(--ty-leading-xs);\n--ty-field-label-gap: 5px;\n--ty-field-outer-pad-x: calc(var(--ty-field-pad-x) + 1px);\n--ty-field-control: 24px;\n--ty-field-icon: 16px;\n}\n:host([size="xs"]) {\n--ty-field-height: var(--ty-size-xs, 1.75rem);\n--ty-field-pad-x: 8px;\n--ty-field-font: var(--ty-font-xs);\n--ty-field-leading: 16px;\n--ty-field-tracking: var(--ty-tracking-xs);\n--ty-field-label-font: var(--ty-font-xs);\n--ty-field-label-leading: var(--ty-leading-xs);\n--ty-field-label-gap: 4px;\n--ty-field-control: 20px;\n--ty-field-icon: 14px;\n}\n:host([size="md"]) {\n--ty-field-height: var(--ty-size-md, 2.25rem);\n--ty-field-pad-x: 12px;\n--ty-field-font: var(--ty-font-sm);\n--ty-field-leading: 20px;\n--ty-field-tracking: var(--ty-tracking-sm);\n--ty-field-label-font: var(--ty-font-sm);\n--ty-field-label-leading: var(--ty-leading-sm);\n--ty-field-label-gap: 6px;\n--ty-field-control: 28px;\n--ty-field-icon: 18px;\n}\n:host([size="lg"]) {\n--ty-field-height: var(--ty-size-lg, 2.5rem);\n--ty-field-pad-x: 14px;\n--ty-field-font: var(--ty-font-base);\n--ty-field-leading: 24px;\n--ty-field-tracking: var(--ty-tracking-base);\n--ty-field-label-font: var(--ty-font-sm);\n--ty-field-label-leading: var(--ty-leading-sm);\n--ty-field-label-gap: 6px;\n--ty-field-control: 32px;\n--ty-field-icon: 20px;\n}\n:host([size="xl"]) {\n--ty-field-height: var(--ty-size-xl, 2.75rem);\n--ty-field-pad-x: 16px;\n--ty-field-font: var(--ty-font-lg);\n--ty-field-leading: 28px;\n--ty-field-tracking: var(--ty-tracking-base);\n--ty-field-label-font: var(--ty-font-base);\n--ty-field-label-leading: var(--ty-leading-base);\n--ty-field-label-gap: 8px;\n--ty-field-control: 36px;\n--ty-field-icon: 22px;\n}\n@media (max-width: 640px) {\n:host([size="lg"]) {\n--ty-field-height: var(--ty-size-md, 2.25rem);\n--ty-field-pad-x: 12px;\n--ty-field-font: var(--ty-font-sm);\n--ty-field-leading: 20px;\n--ty-field-control: 28px;\n--ty-field-icon: 18px;\n}\n:host([size="xl"]) {\n--ty-field-height: var(--ty-size-lg, 2.5rem);\n--ty-field-pad-x: 14px;\n--ty-field-font: var(--ty-font-base);\n--ty-field-leading: 24px;\n--ty-field-control: 32px;\n--ty-field-icon: 20px;\n}\n}\n@media (max-width: 480px) {\n:host([size="xl"]) {\n--ty-field-height: var(--ty-size-md, 2.25rem);\n--ty-field-pad-x: 12px;\n--ty-field-font: var(--ty-font-sm);\n--ty-field-leading: 20px;\n--ty-field-control: 28px;\n--ty-field-icon: 18px;\n}\n}\n',Z=(t,n)=>{const e=e=>n?e?`var(--ty-color-${t}${e}, var(--ty-color-${t}, var(--ty-color-${n}${e})))`:`var(--ty-color-${t}, var(--ty-color-${n}))`:e?`var(--ty-color-${t}${e}, var(--ty-color-${t}))`:`var(--ty-color-${t})`;return`\n:host([flavor="${t}"]) {\n--input-accent: var(--ty-input-${t}-border, ${e("-soft")});\n--input-accent-bold: ${e("")};\n--input-ring: color-mix(in oklab, ${e("")} 15%, transparent);\n}\n:host([flavor="${t}+"]) {\n--input-accent: ${e("")};\n--input-accent-bold: ${e("-strong")};\n--input-ring: color-mix(in oklab, ${e("-strong")} 15%, transparent);\n}\n:host([flavor="${t}-"]) {\n--input-accent: ${e("-faint")};\n--input-accent-bold: ${e("-soft")};\n--input-ring: color-mix(in oklab, ${e("-soft")} 15%, transparent);\n}\n`},J=`\n${K}\n:host {\ndisplay: block;\nfont-family: inherit;\nwidth: 100%;\n}\n.input-container {\ndisplay: flex;\nflex-direction: column;\nwidth: 100%;\nbox-sizing: border-box;\n}\n.ty-field-label {\nfont-size: var(--ty-field-label-font);\nline-height: var(--ty-field-label-leading);\nletter-spacing: var(--ty-tracking-sm);\nfont-weight: var(--ty-font-medium);\ncolor: var(--ty-label-color);\nmargin-bottom: var(--ty-field-label-gap);\npadding-left: var(--ty-field-outer-pad-x);\ndisplay: flex;\nalign-items: center;\n}\n.required-icon {\ndisplay: inline-flex;\nalign-items: center;\ncolor: var(--ty-color-danger);\nwidth: 12px;\nheight: 12px;\nmargin-left: 4px;\nvertical-align: middle;\n}\n.required-icon svg {\nwidth: 100%;\nheight: 100%;\n}\n.input-wrapper {\ndisplay: flex;\nalign-items: center;\ngap: 0.5rem;\nwidth: 100%;\nbox-sizing: border-box;\nborder: 1px solid var(--input-accent, var(--input-border, var(--ty-input-border)));\nborder-radius: var(--ty-radius-base);\nbackground: var(--input-bg, var(--input-bg, var(--ty-input-bg)));\ntransition: var(--ty-local-transition, all 0.15s ease-in-out);\nmin-height: var(--ty-field-height);\npadding: 0 var(--ty-field-pad-x);\n}\n.input-wrapper:hover:not(.disabled):not(.focused) {\nborder-color: var(--input-accent-bold, var(--input-border-hover, var(--ty-input-border-hover)));\n}\n.input-wrapper.focused {\nborder-color: var(--input-accent-bold, var(--input-border-focus, var(--ty-input-border-focus)));\nbox-shadow: 0 0 0 3px var(--input-ring, var(--input-shadow-focus, var(--ty-input-shadow-focus)));\n}\n.input-wrapper.disabled {\ncursor: not-allowed;\nopacity: 0.5;\nbackground: var(--input-disabled-bg, var(--ty-input-disabled-bg));\nborder-color: var(--input-disabled-border, var(--ty-input-disabled-border));\n}\n::slotted([slot="start"]),\n::slotted([slot="end"]) {\ndisplay: flex;\nalign-items: center;\njustify-content: center;\nflex-shrink: 0;\ncolor: var(--ty-color-text-soft);\n}\n.password-toggle {\ndisplay: flex;\nalign-items: center;\njustify-content: center;\nflex-shrink: 0;\nwidth: 1.25rem;\nheight: 1.25rem;\npadding: 0;\nborder: none;\nbackground: none;\ncursor: pointer;\ncolor: var(--input-placeholder, var(--ty-input-placeholder));\ntransition: var(--ty-local-transition, color 0.15s ease-in-out);\n}\n.password-toggle:hover {\ncolor: var(--input-color, var(--ty-input-color));\n}\n.password-toggle:focus-visible {\noutline: 2px solid var(--input-accent, var(--ty-color-primary));\noutline-offset: 2px;\nborder-radius: 2px;\n}\n.password-toggle svg {\nwidth: 1rem;\nheight: 1rem;\n}\n::slotted(ty-icon) {\nwidth: 1em;\nheight: 1em;\nflex-shrink: 0;\n}\n.error-message {\nfont-size: var(--ty-font-xs);\nline-height: var(--ty-leading-xs);\nletter-spacing: var(--ty-tracking-xs);\ncolor: var(--ty-color-danger);\nmargin-top: 4px;\npadding-left: var(--ty-field-outer-pad-x);\n}\n.input-wrapper.error {\nborder-color: var(--ty-color-danger);\nbackground: var(--ty-bg-danger-soft);\n}\n.input-wrapper.error.focused {\nborder-color: var(--ty-color-danger-bold);\nbox-shadow: 0 0 0 3px var(--input-shadow-focus, var(--ty-input-shadow-focus));\n}\ninput {\nflex: 1;\nmin-width: 0;\nbox-sizing: border-box;\nborder: none;\noutline: none;\nbackground: transparent;\ncolor: var(--input-color, var(--ty-input-color));\nfont-family: inherit;\nfont-size: var(--ty-field-font);\nline-height: var(--ty-field-leading);\nletter-spacing: var(--ty-field-tracking);\nfont-weight: var(--ty-font-normal);\npadding: 0;\nmargin: 0;\n}\ninput[type="number"]::-webkit-outer-spin-button,\ninput[type="number"]::-webkit-inner-spin-button {\n-webkit-appearance: none;\nmargin: 0;\n}\ninput[type="number"] {\n-moz-appearance: textfield;\n}\ninput:disabled {\ncursor: not-allowed;\ncolor: var(--input-disabled-color, var(--ty-input-disabled-color));\n}\ninput::placeholder {\ncolor: var(--input-placeholder, var(--ty-input-placeholder));\nfont-weight: 400;\n}\n${n.filter(t=>"neutral"!==t).map(t=>Z(t)).join("")}\ninput:focus-visible {\noutline: none;\n}\n@media (prefers-contrast: high) {\n.input-wrapper {\nborder-width: 2px;\n}\n}\n@media (prefers-reduced-motion: reduce) {\n.input-wrapper {\ntransition: none;\n}\n}\n`;function G(t){return["number","currency","percent","compact"].includes(t)}function Q(t,n){if(n)return n;const e=t.closest("[lang]");if(e){const t=e.getAttribute("lang");if(t)return t}return document.documentElement.lang?document.documentElement.lang:navigator.language?navigator.language:"en-US"}function tt(t,n){let e=Q(t);const i=new MutationObserver(i=>{for(const o of i)if("attributes"===o.type&&"lang"===o.attributeName){const i=Q(t);i!==e&&(e=i,n(i))}});return i.observe(document.documentElement,{attributes:!0,attributeFilter:["lang"],subtree:!0}),()=>i.disconnect()}const nt='<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M12 6v12"/><path d="M17.196 9 6.804 15"/><path d="m6.804 9 10.392 6"/></svg>',et='<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M2.062 12.348a1 1 0 0 1 0-.696 10.75 10.75 0 0 1 19.876 0 1 1 0 0 1 0 .696 10.75 10.75 0 0 1-19.876 0"/><circle cx="12" cy="12" r="3"/></svg>',it=class extends s{constructor(){super(),this.B=null,this.R=!1,this.Y=!1,this.U=!1,this.A=null,this.X=null,this.K=null,this.Z=null,this.J=null,this.G=null,this.tt=null,a(this.shadowRoot,{css:J,id:"ty-input"})}onConnect(){this.initializeShadowValue(),this.nt=tt(this,()=>{this.render()}),this.j()}j(){this.A=v(this.shadowRoot,this.A,this.flavor,({base:t})=>(t=>Z(t,"neutral"))(t))}onDisconnect(){this.removeEventListeners(),this.nt&&(this.nt(),this.nt=void 0),null!==this.G&&(clearTimeout(this.G),this.G=null),null!==this.tt&&(clearTimeout(this.tt),this.tt=null)}onPropertiesChanged(t){for(const{name:n,newValue:e}of t)switch(n){case"flavor":this.j();break;case"value":this.B=this.parseShadowValue(e||"");break;case"type":const t=this.getProperty("value")||"";this.B=this.parseShadowValue(t);break;case"error":e?"neutral"===this.getProperty("flavor")&&(this.setProperty("flavor","danger"),this.U=!0):this.U&&("danger"===this.getProperty("flavor")&&this.setProperty("flavor","neutral"),this.U=!1)}}onFormReset(){this.B=null,this.initializeShadowValue(),this.R=!1,null!==this.G&&(clearTimeout(this.G),this.G=null),null!==this.tt&&(clearTimeout(this.tt),this.tt=null),this.render()}getFormValue(){return null!==this.B?this.B+"":null}initializeShadowValue(){const t=this.getProperty("value");t&&(this.B=this.parseShadowValue(t),this.$.setFormValue(null!==this.B?this.B+"":null))}parseShadowValue(t){if(!t||"string"!=typeof t||""===t.trim())return null;if(G(this.type)){const n=function(t){if(!t||""===t.trim())return null;let n=t.replace(/[^\d.,-]/g,"").trim();if(""===n||"-"===n)return null;const e=n.lastIndexOf(","),i=n.lastIndexOf("."),o=Math.max(e,i);if(-1===o){const t=parseFloat(n);return isNaN(t)?null:t}const s=n[o],r=n.slice(0,o),a=n.slice(o+1);if(r.includes(s)){const t=parseFloat(n.replace(/[.,]/g,""));return isNaN(t)?null:t}const l=r.replace(/[.,]/g,""),c=parseFloat(l+"."+a);return isNaN(c)?null:c}(t);return null!==n&&0===this.precision?Math.round(n):n}return t}shouldFormat(){return G(this.type)&&!this.R&&null!==this.B&&"number"==typeof this.B}getFormatConfig(){return{type:this.type,locale:this.locale,currency:this.currency,precision:this.precision}}getDisplayValue(){if(this.shouldFormat()){let t=this.B;return"percent"===this.type&&(t/=100),function(t,n){const{type:e,locale:i="en-US",currency:o="USD",precision:s}=n,r={};switch(void 0!==s&&(r.minimumFractionDigits=s,r.maximumFractionDigits=s),e){case"currency":r.style="currency",r.currency=o;break;case"percent":r.style="percent";break;case"compact":r.notation="compact",r.compactDisplay="short";break;default:r.style="decimal"}return new Intl.NumberFormat(i,r).format(t).replace(/\u202F/g," ").replace(/\u2009/g," ")}(t,this.getFormatConfig())}return null!==this.B?this.B+"":""}get type(){return this.getProperty("type")}set type(t){this.setProperty("type",t)}get value(){return null!==this.B?this.B+"":""}set value(t){this.setProperty("value",t)}get name(){return this.getProperty("name")}set name(t){this.setProperty("name",t)}get placeholder(){return this.getProperty("placeholder")}set placeholder(t){this.setProperty("placeholder",t)}get label(){return this.getProperty("label")}set label(t){this.setProperty("label",t)}get disabled(){return this.getProperty("disabled")}set disabled(t){this.setProperty("disabled",t)}get required(){return this.getProperty("required")}set required(t){this.setProperty("required",t)}get error(){return this.getProperty("error")}set error(t){this.setProperty("error",t)}get size(){return this.getProperty("size")}set size(t){this.setProperty("size",t)}get flavor(){return this.getProperty("flavor")}set flavor(t){this.setProperty("flavor",t)}get currency(){return this.getProperty("currency")}set currency(t){this.setProperty("currency",t)}get locale(){return Q(this,this.getProperty("locale"))}set locale(t){this.setProperty("locale",t)}get precision(){return this.getProperty("precision")}set precision(t){this.setProperty("precision",t)}get debounce(){return this.getProperty("debounce")}set debounce(t){this.setProperty("debounce",t)}get form(){return this.$.form}buildClassList(){const t=[];return this.disabled&&t.push("disabled"),this.required&&t.push("required"),this.error&&t.push("error"),t.join(" ")}dispatchInputEvent(t,n){this.dispatchEvent(new CustomEvent("input",{detail:{value:this.B,formattedValue:this.shouldFormat()?this.getDisplayValue():null,rawValue:t,originalEvent:n},bubbles:!0,composed:!0}))}dispatchChangeEvent(t,n){this.dispatchEvent(new CustomEvent("change",{detail:{value:this.B,formattedValue:this.shouldFormat()?this.getDisplayValue():null,rawValue:t,originalEvent:n},bubbles:!0,composed:!0}))}removeEventListeners(){if(!this.Y)return;const t=this.shadowRoot;if(!t)return;const n=t.querySelector("input");n&&(this.X&&(n.removeEventListener("input",this.X),this.X=null),this.K&&(n.removeEventListener("change",this.K),this.K=null),this.Z&&(n.removeEventListener("focus",this.Z),this.Z=null),this.J&&(n.removeEventListener("blur",this.J),this.J=null),this.Y=!1)}setupEventListeners(){if(this.Y)return;const t=this.shadowRoot,n=t.querySelector("input"),e=t.querySelector(".input-wrapper");n&&e&&(this.X=t=>{t.stopPropagation(),t.stopImmediatePropagation();const e=t.target.value;this.B=this.parseShadowValue(e),this.$.setFormValue(null!==this.B?this.B+"":null),this.updateValidity(),null!==this.G&&clearTimeout(this.G),this.debounce>0?this.G=window.setTimeout(()=>{this.dispatchInputEvent(n.value,t),this.G=null},this.debounce):this.dispatchInputEvent(e,t)},this.K=t=>{t.stopPropagation(),t.stopImmediatePropagation();const e=t.target.value;this.B=this.parseShadowValue(e),this.$.setFormValue(null!==this.B?this.B+"":null),this.updateValidity(),null!==this.tt&&clearTimeout(this.tt),this.debounce>0?this.tt=window.setTimeout(()=>{this.dispatchChangeEvent(n.value,t),this.tt=null},this.debounce):this.dispatchChangeEvent(e,t)},this.Z=t=>{this.R=!0,e.classList.add("focused"),G(this.type)&&null!==this.B&&(n.value=this.B+""),this.dispatchEvent(new CustomEvent("focus",{detail:{originalEvent:t},bubbles:!0,composed:!0}))},this.J=t=>{const i=t.target.value;null!==this.G&&(clearTimeout(this.G),this.G=null,this.dispatchInputEvent(i,t)),null!==this.tt&&(clearTimeout(this.tt),this.tt=null,this.dispatchChangeEvent(i,t)),this.R=!1,e.classList.remove("focused"),this.shouldFormat()&&(n.value=this.getDisplayValue()),this.dispatchEvent(new CustomEvent("blur",{detail:{originalEvent:t},bubbles:!0,composed:!0}))},n.addEventListener("input",this.X),n.addEventListener("change",this.K),n.addEventListener("focus",this.Z),n.addEventListener("blur",this.J),this.Y=!0)}render(){const t=this.shadowRoot,n=t.querySelector("input"),e=t.querySelector(".input-wrapper"),i=t.querySelector(".ty-field-label"),o=t.querySelector(".error-message"),s=this.buildClassList(),r=["password","email","tel","url"].includes(this.type)?this.type:"text",a=G(this.type)?"decimal":"email"===this.type?"email":"tel"===this.type?"tel":"url"===this.type?"url":void 0,l=this.getDisplayValue();if(n&&e){if(n.type=r,n.value=l,n.placeholder=this.placeholder,n.name=this.name,a?n.inputMode=a:n.removeAttribute("inputmode"),e.className="input-wrapper "+s,n.disabled=this.disabled,this.disabled?n.setAttribute("disabled",""):n.removeAttribute("disabled"),n.required=this.required,this.required?n.setAttribute("required",""):n.removeAttribute("required"),this.label?n.setAttribute("aria-label",this.label):n.removeAttribute("aria-label"),this.label)if(i)i.innerHTML=`${this.label}${this.required?`<span class="required-icon">${nt}</span>`:""}`,i.style.display="flex";else{const n=document.createElement("label");n.className="ty-field-label",n.innerHTML=`${this.label}${this.required?`<span class="required-icon">${nt}</span>`:""}`;const i=t.querySelector(".input-container");i&&i.insertBefore(n,e)}else i&&(i.style.display="none");if(this.error)if(o)o.textContent=this.error;else{const n=document.createElement("div");n.className="error-message",n.textContent=this.error,t.querySelector(".input-container")?.appendChild(n)}else o&&o.remove()}else{t.innerHTML=`\n<div class="input-container">\n${this.label?`\n<label class="ty-field-label">\n${this.label}\n${this.required?`<span class="required-icon">${nt}</span>`:""}\n</label>\n`:""}\n<div class="input-wrapper ${s}">\n<slot name="start"></slot>\n<input\ntype="${r}"\nvalue="${l}"\nplaceholder="${this.placeholder}"\nname="${this.name}"\n${a?`inputmode="${a}"`:""}\n/>\n<slot name="end"></slot>\n${"password"===r?`\n<button class="password-toggle" type="button"\naria-label="Show password" aria-pressed="false">\n${et}\n</button>`:""}\n</div>\n${this.error?`\n<div class="error-message">${this.error}</div>\n`:""}\n</div>\n`;const n=t.querySelector("input");n.disabled=this.disabled,n.required=this.required,this.label&&n.setAttribute("aria-label",this.label),this.setupPasswordToggle(),this.setupEventListeners()}this.updateValidity()}setupPasswordToggle(){const t=this.shadowRoot,n=t.querySelector(".password-toggle"),e=t.querySelector("input");n&&e&&(n.addEventListener("mousedown",t=>t.preventDefault()),n.addEventListener("click",()=>{const t="password"===e.type;e.type=t?"text":"password",n.innerHTML=t?'<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M10.733 5.076a10.744 10.744 0 0 1 11.205 6.575 1 1 0 0 1 0 .696 10.747 10.747 0 0 1-1.444 2.49"/><path d="M14.084 14.158a3 3 0 0 1-4.242-4.242"/><path d="M17.479 17.499a10.75 10.75 0 0 1-15.417-5.151 1 1 0 0 1 0-.696 10.75 10.75 0 0 1 4.446-5.143"/><path d="m2 2 20 20"/></svg>':et,n.setAttribute("aria-label",t?"Hide password":"Show password"),n.setAttribute("aria-pressed",t+"")}))}updateValidity(){const t=this.shadowRoot?.querySelector("input");if(this.disabled)return void this.$.setValidity({});const n=t?t.value:(this.getProperty("value")??"")+"";this.required&&""===n.trim()?this.$.setValidity({valueMissing:!0},"Please fill out this field",t??void 0):this.$.setValidity({})}};it.formAssociated=!0,it.properties={type:{type:"string",visual:!0,default:"text",validate:t=>["text","email","password","number","tel","url","currency","percent","compact"].includes(t),coerce:t=>["text","email","password","number","tel","url","currency","percent","compact"].includes(t)?t:"text"},value:{type:"string",visual:!0,formValue:!0,emitChange:!0,default:""},name:{type:"string",default:""},placeholder:{type:"string",visual:!0,default:""},label:{type:"string",visual:!0,default:""},disabled:{type:"boolean",visual:!0,default:!1},required:{type:"boolean",visual:!0,default:!1},error:{type:"string",visual:!0,default:""},size:{type:"string",visual:!0,default:e,validate:t=>["xs","sm","md","lg","xl"].includes(t),coerce:t=>["xs","sm","md","lg","xl"].includes(t)?t:e},flavor:{type:"string",visual:!0,default:"neutral"},currency:{type:"string",visual:!0,default:"USD"},locale:{type:"string",visual:!0,default:"en-US"},precision:{type:"number",visual:!0,default:void 0,validate:t=>null==t||"number"==typeof t&&t>=0&&10>=t,coerce:t=>{if(null==t)return;const n=+t;return isNaN(n)?void 0:Math.max(0,Math.min(10,Math.floor(n)))}},debounce:{type:"number",default:0,validate:t=>{const n=+t;return!isNaN(n)&&n>=0&&5e3>=n},coerce:t=>{const n=+t;return isNaN(n)?0:Math.max(0,Math.min(5e3,Math.floor(n)))}}};let ot=it;customElements.get("ty-input")||customElements.define("ty-input",ot);const st=(t,n)=>{const e=e=>n?`var(--ty-color-${t}${e}, var(--ty-color-${n}${e}))`:`var(--ty-color-${t}${e})`;return`\n:host([flavor="${t}"]) { --checkbox-color: ${e("")}; --checkbox-color-off: ${e("-soft")}; --checkbox-ring: color-mix(in oklab, ${e("")} 25%, transparent); }\n:host([flavor="${t}+"]) { --checkbox-color: ${e("-strong")}; --checkbox-color-off: ${e("-soft")}; --checkbox-ring: color-mix(in oklab, ${e("-strong")} 25%, transparent); }\n:host([flavor="${t}-"]) { --checkbox-color: ${e("-soft")}; --checkbox-color-off: ${e("-faint")}; --checkbox-ring: color-mix(in oklab, ${e("-soft")} 25%, transparent); }\n`},rt=`\n:host {\ndisplay: inline-flex;\nwidth: auto;\nvertical-align: middle;\n}\n.checkbox-container {\ndisplay: inline-flex;\nalign-items: center;\noutline: none;\ntransition: var(--ty-local-transition, all 0.15s ease-in-out);\nuser-select: none;\ncursor: pointer;\nborder-radius: 6px;\ngap: var(--ty-spacing-1);\ncolor: var(--checkbox-color-off, var(--ty-color-neutral-soft));\n}\n.checkbox-container[aria-checked="true"] {\ncolor: var(--checkbox-color, var(--ty-color-neutral));\n}\n.checkbox-container.focused,\n.checkbox-container:focus-visible {\nbox-shadow: 0 0 0 3px var(--checkbox-ring, color-mix(in oklab, var(--ty-color-primary) 25%, transparent));\n}\n.checkbox-icon {\ndisplay: flex;\nalign-items: center;\njustify-content: center;\ncolor: inherit;\ntransition: var(--ty-local-transition, color 0.15s ease-in-out);\npointer-events: none;\n}\n.checkbox-container svg {\nwidth: 16px;\nheight: 16px;\n}\n.checkbox-container.xs svg {\nwidth: 12px;\nheight: 12px;\n}\n.checkbox-container.sm svg {\nwidth: 14px;\nheight: 14px;\n}\n.checkbox-container.lg svg {\nwidth: 20px;\nheight: 20px;\n}\n.checkbox-container.xl svg {\nwidth: 24px;\nheight: 24px;\n}\n${n.map(t=>st(t)).join("")}\n.checkbox-container:not([aria-checked="true"]) {\nopacity: 0.35;\n}\n.checkbox-container[aria-checked="mixed"] {\nopacity: 0.7;\n}\n.checkbox-container.disabled {\npointer-events: none;\ncursor: not-allowed;\nopacity: 0.5;\nfilter: grayscale(1);\n}\n.checkbox-container.disabled:not([aria-checked="true"]) {\nopacity: 0.2;\n}\n.checkbox-container.error .checkbox-icon {\ncolor: var(--ty-color-danger);\n}\n.checkbox-container.error:focus {\nbox-shadow: 0 0 0 3px color-mix(in oklab, var(--ty-color-danger) 15%, transparent);\n}\n`,at=class extends s{constructor(){super(),this.A=null,this.Y=!1,this.et=null,this.it=null,this.Z=null,this.J=null,a(this.shadowRoot,{css:rt,id:"ty-checkbox"})}onConnect(){this.setupEventListeners(),this.j()}j(){this.A=v(this.shadowRoot,this.A,this.flavor,({base:t})=>(t=>st(t,"neutral"))(t))}onDisconnect(){this.removeEventListeners()}onPropertiesChanged(t){t.some(t=>"flavor"===t.name)&&this.j()}getFormValue(){return this.checked?this.value:null}buildClassList(){const t=[this.size];return this.disabled&&t.push("disabled"),this.required&&t.push("required"),t.join(" ")}handleCheckboxClick(t){if(this.disabled)return;if(this.isDuplicateActivationClick())return;const n=!!this.indeterminate||!this.checked;this.indeterminate&&(this.indeterminate=!1),this.checked=n,setTimeout(()=>{const e={value:n,checked:n,formValue:n?this.value:null,originalEvent:t};this.dispatchEvent(new CustomEvent("input",{detail:e,bubbles:!0,composed:!0})),this.dispatchEvent(new CustomEvent("change",{detail:e,bubbles:!0,composed:!0}))},0)}handleCheckboxKeydown(t){this.disabled||["Space"," ","Enter"].includes(t.key)&&(t.preventDefault(),t.stopPropagation(),this.handleCheckboxClick(t))}removeEventListeners(){if(!this.Y)return;this.et&&(this.removeEventListener("click",this.et),this.et=null);const t=this.shadowRoot;if(!t)return;const n=t.querySelector(".checkbox-container");n?(this.it&&(n.removeEventListener("keydown",this.it),this.it=null),this.Z&&(n.removeEventListener("focus",this.Z),this.Z=null),this.J&&(n.removeEventListener("blur",this.J),this.J=null),this.Y=!1):this.Y=!1}setupEventListeners(){if(this.Y)return;const t=this.shadowRoot.querySelector(".checkbox-container");t&&(this.et=t=>{this.handleCheckboxClick(t)},this.it=t=>{this.handleCheckboxKeydown(t)},this.Z=()=>{t.classList.add("focused")},this.J=()=>{t.classList.remove("focused")},this.addEventListener("click",this.et),t.addEventListener("keydown",this.it),t.addEventListener("focus",this.Z),t.addEventListener("blur",this.J),this.Y=!0)}render(){const t=this.shadowRoot;let n=t.querySelector(".checkbox-container");const e=this.buildClassList(),i=this.indeterminate?"mixed":this.checked+"";if(n)n.className="checkbox-container "+e,n.tabIndex=this.disabled?-1:0,n.setAttribute("aria-checked",i),n.setAttribute("aria-disabled",this.disabled+""),n.setAttribute("aria-required",this.required+"");else{n=document.createElement("div"),n.className="checkbox-container "+e,n.tabIndex=this.disabled?-1:0,n.setAttribute("role","checkbox"),n.setAttribute("aria-checked",i),n.setAttribute("aria-disabled",this.disabled+""),n.setAttribute("aria-required",this.required+"");const o=document.createElement("div");o.className="checkbox-icon",n.appendChild(o),t.appendChild(n)}n.querySelector(".checkbox-icon").innerHTML=this.indeterminate?'<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="3" stroke-linecap="round" stroke-linejoin="round"><path d="M5 12h14"/></svg>':'<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="3" stroke-linecap="round" stroke-linejoin="round"><path d="M20 6 9 17l-5-5"/></svg>',this.setupEventListeners(),this.applyLabelName(n),this.updateValidity()}updateValidity(){const t=this.shadowRoot?.querySelector(".checkbox-container");this.disabled?this.$.setValidity({}):this.required&&!this.checked?this.$.setValidity({valueMissing:!0},"Please check this box",t??void 0):this.$.setValidity({})}get checked(){return this.getProperty("checked")}set checked(t){this.setProperty("checked",t)}get indeterminate(){return this.getProperty("indeterminate")}set indeterminate(t){this.setProperty("indeterminate",t)}get value(){return this.getProperty("value")}set value(t){this.setProperty("value",t)}get name(){return this.getProperty("name")}set name(t){this.setProperty("name",t)}get disabled(){return this.getProperty("disabled")}set disabled(t){this.setProperty("disabled",t)}get required(){return this.getProperty("required")}set required(t){this.setProperty("required",t)}get size(){return this.getProperty("size")}set size(t){this.setProperty("size",t)}get flavor(){return this.getProperty("flavor")}set flavor(t){this.setProperty("flavor",t)}get form(){return this.$.form}};at.formAssociated=!0,at.properties={checked:{type:"boolean",visual:!0,formValue:!0,emitChange:!0,default:!1},indeterminate:{type:"boolean",visual:!0,default:!1},value:{type:"string",default:"on"},name:{type:"string",default:""},disabled:{type:"boolean",visual:!0,default:!1},required:{type:"boolean",visual:!0,default:!1},size:{type:"string",visual:!0,default:e,validate:t=>["xs","sm","md","lg","xl"].includes(t),coerce:t=>["xs","sm","md","lg","xl"].includes(t)?t:e},flavor:{type:"string",visual:!0,default:"neutral"}};let lt=at;customElements.get("ty-checkbox")||customElements.define("ty-checkbox",lt);const ct=(t,n)=>{const e=e=>n?`var(--ty-color-${t}${e}, var(--ty-color-${n}${e}))`:`var(--ty-color-${t}${e})`;return`\n:host([flavor="${t}"]) { --switch-track: ${e("")}; }\n:host([flavor="${t}+"]) { --switch-track: ${e("-strong")}; }\n:host([flavor="${t}-"]) { --switch-track: ${e("-soft")}; }\n`},dt=`\n${J}\n:host {\ndisplay: inline-flex;\nwidth: auto;\nvertical-align: middle;\n}\n.switch-container {\ndisplay: inline-block;\ncursor: pointer;\nuser-select: none;\noutline: none;\nvertical-align: middle;\n}\n.switch-container.disabled {\ncursor: not-allowed;\nopacity: 0.55;\n}\n.switch-container:focus-visible .switch-track,\n.switch-container.focused .switch-track {\nbox-shadow: 0 0 0 3px var(--ty-input-shadow-focus);\n}\n.switch-track {\nposition: relative;\nflex-shrink: 0;\nwidth: 36px;\nheight: 20px;\nborder-radius: 999px;\nbackground: var(--ty-color-neutral-soft, var(--ty-input-border));\ntransition: var(--ty-local-transition, background-color 0.18s ease-in-out);\nbox-sizing: border-box;\n}\n.switch-thumb {\nposition: absolute;\ntop: 2px;\nleft: 2px;\nwidth: 16px;\nheight: 16px;\nborder-radius: 50%;\nbackground: white;\nbox-shadow: 0 1px 3px rgba(0, 0, 0, 0.2);\ntransition: var(--ty-local-transition, transform 0.18s ease-in-out, background-color 0.18s ease-in-out);\n}\n.switch-container[aria-checked="true"] .switch-track {\nbackground: var(--switch-track, var(--ty-color-primary));\n}\n.switch-container[aria-checked="true"] .switch-thumb {\ntransform: translateX(16px);\n}\n.switch-container.xs .switch-track { width: 26px; height: 14px; }\n.switch-container.xs .switch-thumb { width: 10px; height: 10px; }\n.switch-container.xs[aria-checked="true"] .switch-thumb { transform: translateX(12px); }\n.switch-container.sm .switch-track { width: 30px; height: 16px; }\n.switch-container.sm .switch-thumb { width: 12px; height: 12px; }\n.switch-container.sm[aria-checked="true"] .switch-thumb { transform: translateX(14px); }\n.switch-container.lg .switch-track { width: 44px; height: 24px; }\n.switch-container.lg .switch-thumb { width: 20px; height: 20px; }\n.switch-container.lg[aria-checked="true"] .switch-thumb { transform: translateX(20px); }\n.switch-container.xl .switch-track { width: 52px; height: 28px; }\n.switch-container.xl .switch-thumb { width: 24px; height: 24px; }\n.switch-container.xl[aria-checked="true"] .switch-thumb { transform: translateX(24px); }\n${n.map(t=>ct(t)).join("")}\n`,ht=class extends s{constructor(){super(),this.A=null,this.Y=!1,this.et=null,this.it=null,this.Z=null,this.J=null,a(this.shadowRoot,{css:dt,id:"ty-switch"})}onConnect(){this.setupEventListeners(),this.j()}onDisconnect(){this.removeEventListeners()}onPropertiesChanged(t){t.some(t=>"flavor"===t.name)&&this.j()}j(){this.A=v(this.shadowRoot,this.A,this.flavor,({base:t})=>(t=>ct(t,"neutral"))(t))}getFormValue(){return this.checked?this.value:null}buildClassList(){const t=[this.size];return this.disabled&&t.push("disabled"),this.required&&t.push("required"),t.join(" ")}handleSwitchClick(t){if(this.disabled)return;if(this.isDuplicateActivationClick())return;const n=!this.checked;this.checked=n,setTimeout(()=>{const e={value:n,checked:n,formValue:n?this.value:null,originalEvent:t};this.dispatchEvent(new CustomEvent("input",{detail:e,bubbles:!0,composed:!0})),this.dispatchEvent(new CustomEvent("change",{detail:e,bubbles:!0,composed:!0}))},0)}handleSwitchKeydown(t){this.disabled||["Space"," ","Enter"].includes(t.key)&&(t.preventDefault(),t.stopPropagation(),this.handleSwitchClick(t))}removeEventListeners(){if(!this.Y)return;this.et&&(this.removeEventListener("click",this.et),this.et=null);const t=this.shadowRoot;if(!t)return;const n=t.querySelector(".switch-container");n?(this.it&&(n.removeEventListener("keydown",this.it),this.it=null),this.Z&&(n.removeEventListener("focus",this.Z),this.Z=null),this.J&&(n.removeEventListener("blur",this.J),this.J=null),this.Y=!1):this.Y=!1}setupEventListeners(){if(this.Y)return;const t=this.shadowRoot.querySelector(".switch-container");t&&(this.et=t=>this.handleSwitchClick(t),this.it=t=>this.handleSwitchKeydown(t),this.Z=()=>t.classList.add("focused"),this.J=()=>t.classList.remove("focused"),this.addEventListener("click",this.et),t.addEventListener("keydown",this.it),t.addEventListener("focus",this.Z),t.addEventListener("blur",this.J),this.Y=!0)}render(){const t=this.shadowRoot;let n=t.querySelector(".switch-container");const e=this.buildClassList();if(n)n.className="switch-container "+e,n.tabIndex=this.disabled?-1:0,n.setAttribute("aria-checked",this.checked?"true":"false"),n.setAttribute("aria-disabled",this.disabled?"true":"false"),n.setAttribute("aria-required",this.required?"true":"false");else{n=document.createElement("div"),n.className="switch-container "+e,n.tabIndex=this.disabled?-1:0,n.setAttribute("role","switch"),n.setAttribute("aria-checked",this.checked?"true":"false"),n.setAttribute("aria-disabled",this.disabled?"true":"false"),n.setAttribute("aria-required",this.required?"true":"false");const i=document.createElement("div");i.className="switch-track";const o=document.createElement("div");o.className="switch-thumb",i.appendChild(o),n.appendChild(i),t.appendChild(n)}this.setupEventListeners(),this.applyLabelName(n),this.updateValidity()}updateValidity(){const t=this.shadowRoot?.querySelector(".switch-container");this.disabled?this.$.setValidity({}):this.required&&!this.checked?this.$.setValidity({valueMissing:!0},"Please turn this on",t??void 0):this.$.setValidity({})}get checked(){return this.getProperty("checked")}set checked(t){this.setProperty("checked",t)}get value(){return this.getProperty("value")}set value(t){this.setProperty("value",t)}get name(){return this.getProperty("name")}set name(t){this.setProperty("name",t)}get disabled(){return this.getProperty("disabled")}set disabled(t){this.setProperty("disabled",t)}get required(){return this.getProperty("required")}set required(t){this.setProperty("required",t)}get size(){return this.getProperty("size")}set size(t){this.setProperty("size",t)}get flavor(){return this.getProperty("flavor")}set flavor(t){this.setProperty("flavor",t)}get form(){return this.$.form}};ht.formAssociated=!0,ht.properties={checked:{type:"boolean",visual:!0,formValue:!0,emitChange:!0,default:!1},value:{type:"string",default:"on"},name:{type:"string",default:""},disabled:{type:"boolean",visual:!0,default:!1},required:{type:"boolean",visual:!0,default:!1},size:{type:"string",visual:!0,default:e,validate:t=>["xs","sm","md","lg","xl"].includes(t),coerce:t=>["xs","sm","md","lg","xl"].includes(t)?t:e},flavor:{type:"string",visual:!0,default:"primary"}};let ut=ht;customElements.get("ty-switch")||customElements.define("ty-switch",ut);const pt=(t,n)=>{const e=e=>n?`var(--ty-color-${t}${e}, var(--ty-color-${n}${e}))`:`var(--ty-color-${t}${e})`;return`\n:host([flavor="${t}"]) { --radio-color: ${e("")}; }\n:host([flavor="${t}+"]) { --radio-color: ${e("-strong")}; }\n:host([flavor="${t}-"]) { --radio-color: ${e("-soft")}; }\n`},bt=`\n${J}\n:host(ty-radio) {\ndisplay: inline-flex;\nwidth: auto;\nvertical-align: middle;\n}\n:host(ty-radio-group) {\ndisplay: block;\nwidth: 100%;\n}\n.radio-group-container {\ndisplay: flex;\nflex-direction: column;\ngap: 0.4rem;\nfont-family: inherit;\ncolor: var(--ty-color-text);\n}\n.radio-group-label {\nfont-size: var(--ty-font-sm);\nline-height: var(--ty-leading-sm);\nfont-weight: var(--ty-font-medium);\ncolor: var(--ty-color-text);\ndisplay: flex;\nalign-items: center;\ngap: 0.25rem;\n}\n.radio-group-list {\ndisplay: flex;\ngap: 0.6rem;\nalign-items: flex-start;\n}\n.radio-group-list.vertical {\nflex-direction: column;\nalign-items: flex-start;\n}\n.radio-group-list.horizontal {\nflex-direction: row;\nflex-wrap: wrap;\nalign-items: center;\n}\n.radio-group-error {\nfont-size: var(--ty-font-xs);\nline-height: var(--ty-leading-xs);\ncolor: var(--ty-color-danger);\n}\n.radio-group-container .required-icon {\nwidth: 0.65em;\nheight: 0.65em;\ncolor: var(--ty-color-danger);\n}\n.radio-group-container .required-icon svg {\nwidth: 100%;\nheight: 100%;\n}\n.radio-container {\ndisplay: inline-block;\ncursor: pointer;\nuser-select: none;\noutline: none;\nvertical-align: middle;\n}\n.radio-container.disabled {\ncursor: not-allowed;\nopacity: 0.55;\n}\n.radio-container:focus-visible .radio-circle,\n.radio-container.focused .radio-circle {\nbox-shadow: 0 0 0 3px var(--ty-input-shadow-focus);\n}\n.radio-circle {\nposition: relative;\nflex-shrink: 0;\nwidth: 18px;\nheight: 18px;\nborder-radius: 50%;\nborder: 2px solid var(--ty-input-border);\nbackground: var(--ty-input-bg);\nbox-sizing: border-box;\ntransition: var(--ty-local-transition, border-color 0.15s ease-in-out);\n}\n.radio-circle::after {\ncontent: "";\nposition: absolute;\ntop: 50%;\nleft: 50%;\nwidth: 8px;\nheight: 8px;\nborder-radius: 50%;\nbackground: var(--radio-color, var(--ty-color-primary));\ntransform: translate(-50%, -50%) scale(0);\ntransition: transform 0.15s ease-in-out;\n}\n.radio-container[aria-checked="true"] .radio-circle {\nborder-color: var(--radio-color, var(--ty-color-primary));\n}\n.radio-container[aria-checked="true"] .radio-circle::after {\ntransform: translate(-50%, -50%) scale(1);\n}\n.radio-container.xs .radio-circle { width: 14px; height: 14px; }\n.radio-container.xs .radio-circle::after { width: 6px; height: 6px; }\n.radio-container.sm .radio-circle { width: 16px; height: 16px; }\n.radio-container.sm .radio-circle::after { width: 7px; height: 7px; }\n.radio-container.lg .radio-circle { width: 22px; height: 22px; }\n.radio-container.lg .radio-circle::after { width: 10px; height: 10px; }\n.radio-container.xl .radio-circle { width: 26px; height: 26px; }\n.radio-container.xl .radio-circle::after { width: 12px; height: 12px; }\n${n.map(t=>pt(t)).join("")}\n`,vt=class extends s{constructor(){super(),this.A=null,this.Y=!1,this.et=null,this.Z=null,this.J=null,a(this.shadowRoot,{css:bt,id:"ty-radio"})}onConnect(){this.setupEventListeners(),this.dispatchEvent(new CustomEvent("ty-radio-connected",{bubbles:!0})),this.j()}onDisconnect(){this.removeEventListeners()}onPropertiesChanged(t){t.some(t=>"flavor"===t.name)&&this.j()}j(){this.A=v(this.shadowRoot,this.A,this.flavor,({base:t})=>(t=>pt(t,"neutral"))(t))}buildClassList(){const t=[this.size];return this.disabled&&t.push("disabled"),t.join(" ")}handleClick(t){this.disabled||(t.stopPropagation(),this.dispatchEvent(new CustomEvent("ty-radio-select",{detail:{value:this.value},bubbles:!0,composed:!0})))}removeEventListeners(){if(!this.Y)return;this.et&&(this.removeEventListener("click",this.et),this.et=null);const t=this.shadowRoot?.querySelector(".radio-container");t?(this.Z&&(t.removeEventListener("focus",this.Z),this.Z=null),this.J&&(t.removeEventListener("blur",this.J),this.J=null),this.Y=!1):this.Y=!1}setupEventListeners(){if(this.Y)return;const t=this.shadowRoot.querySelector(".radio-container");t&&(this.et=t=>this.handleClick(t),this.Z=()=>t.classList.add("focused"),this.J=()=>t.classList.remove("focused"),this.addEventListener("click",this.et),t.addEventListener("focus",this.Z),t.addEventListener("blur",this.J),this.Y=!0)}render(){const t=this.shadowRoot;let n=t.querySelector(".radio-container");const e=this.buildClassList();if(n)n.className="radio-container "+e,n.tabIndex=this.disabled?-1:0,n.setAttribute("aria-checked",this.checked+""),n.setAttribute("aria-disabled",this.disabled+"");else{n=document.createElement("div"),n.className="radio-container "+e,n.tabIndex=this.disabled?-1:0,n.setAttribute("role","radio"),n.setAttribute("aria-checked",this.checked+""),n.setAttribute("aria-disabled",this.disabled+"");const i=document.createElement("div");i.className="radio-circle",n.appendChild(i),t.appendChild(n)}this.setupEventListeners(),this.applyLabelName(n)}get value(){return this.getProperty("value")}set value(t){this.setProperty("value",t)}get checked(){return this.getProperty("checked")}set checked(t){this.setProperty("checked",t)}get disabled(){return this.getProperty("disabled")}set disabled(t){this.setProperty("disabled",t)}get size(){return this.getProperty("size")}set size(t){this.setProperty("size",t)}get flavor(){return this.getProperty("flavor")}set flavor(t){this.setProperty("flavor",t)}};vt.properties={value:{type:"string",default:""},checked:{type:"boolean",visual:!0,default:!1},disabled:{type:"boolean",visual:!0,default:!1},size:{type:"string",visual:!0,default:e},flavor:{type:"string",visual:!0,default:"primary"}};let gt=vt;customElements.get("ty-radio")||customElements.define("ty-radio",gt);const mt=class extends s{constructor(){super(),this.Y=!1,this.ot=null,this.it=null,this.st=null,a(this.shadowRoot,{css:bt,id:"ty-radio-group"})}onConnect(){this.setupEventListeners(),queueMicrotask(()=>this.syncChildren())}onDisconnect(){this.removeEventListeners()}onPropertiesChanged(t){t.some(t=>"value"===t.name||"size"===t.name||"flavor"===t.name||"disabled"===t.name)&&this.syncChildren()}getFormValue(){return this.value||null}getRadios(){return Array.from(this.querySelectorAll("ty-radio"))}syncChildren(){const t=this.getRadios();for(const n of t)n.checked=n.value===this.value,this.disabled?n.disabled||(n.disabled=!0,n.dataset.tyGroupDisabled=""):"tyGroupDisabled"in n.dataset&&(n.disabled=!1,delete n.dataset.tyGroupDisabled),n.size=this.size,n.flavor=this.flavor}handleRadioSelect(t){if(this.disabled)return;const n=t.detail,e=n?.value;"string"==typeof e&&e!==this.value&&(this.value=e,this.syncChildren(),setTimeout(()=>{const n={value:e,formValue:e,originalEvent:t};this.dispatchEvent(new CustomEvent("input",{detail:n,bubbles:!0,composed:!0})),this.dispatchEvent(new CustomEvent("change",{detail:n,bubbles:!0,composed:!0}))},0))}handleKeydown(t){if(this.disabled)return;const n=this.getRadios().filter(t=>!t.disabled);if(0===n.length)return;const e=document.activeElement,i=n.find(t=>t===e||t.contains(e));let o=-1;if(["ArrowDown","ArrowRight"].includes(t.key))t.preventDefault(),o=i?(n.indexOf(i)+1)%n.length:0;else{if(!["ArrowUp","ArrowLeft"].includes(t.key)){if(["Space"," ","Enter"].includes(t.key)){if(i){t.preventDefault(),this.value=i.value,this.syncChildren();const n={value:i.value,formValue:i.value,originalEvent:t};setTimeout(()=>{this.dispatchEvent(new CustomEvent("change",{detail:n,bubbles:!0,composed:!0}))},0)}return}return}t.preventDefault(),o=i?(n.indexOf(i)-1+n.length)%n.length:n.length-1}const s=n[o];if(s){s.focus(),this.value=s.value,this.syncChildren();const n={value:s.value,formValue:s.value,originalEvent:t};setTimeout(()=>{this.dispatchEvent(new CustomEvent("change",{detail:n,bubbles:!0,composed:!0}))},0)}}removeEventListeners(){this.Y&&(this.ot&&(this.removeEventListener("ty-radio-select",this.ot),this.ot=null),this.it&&(this.removeEventListener("keydown",this.it),this.it=null),this.st&&(this.removeEventListener("ty-radio-connected",this.st),this.st=null),this.Y=!1)}setupEventListeners(){this.Y||(this.ot=t=>this.handleRadioSelect(t),this.it=t=>this.handleKeydown(t),this.st=()=>this.syncChildren(),this.addEventListener("ty-radio-select",this.ot),this.addEventListener("keydown",this.it),this.addEventListener("ty-radio-connected",this.st),this.Y=!0)}render(){const t=this.shadowRoot;let n=t.querySelector(".radio-group-container");if(n){let t=n.querySelector(".radio-group-label");if(this.label)if(t||(t=document.createElement("div"),t.className="radio-group-label",n.insertBefore(t,n.firstChild)),t.textContent=this.label,this.required&&!t.querySelector(".required-icon")){const n=document.createElement("span");n.className="required-icon",n.innerHTML=nt,t.appendChild(n)}else this.required||t.querySelector(".required-icon")?.remove();else t&&t.remove();const e=n.querySelector(".radio-group-list");e&&(e.className="radio-group-list "+this.orientation);let i=n.querySelector(".radio-group-error");this.error?(i||(i=document.createElement("div"),i.className="radio-group-error",n.appendChild(i)),i.textContent=this.error):i&&i.remove(),n.setAttribute("aria-disabled",this.disabled+"")}else{if(n=document.createElement("div"),n.className="radio-group-container",n.setAttribute("role","radiogroup"),n.setAttribute("aria-disabled",this.disabled+""),this.label){const t=document.createElement("div");if(t.className="radio-group-label",t.textContent=this.label,this.required){const n=document.createElement("span");n.className="required-icon",n.innerHTML=nt,t.appendChild(n)}n.appendChild(t)}const e=document.createElement("div");e.className="radio-group-list "+this.orientation;const i=document.createElement("slot");if(e.appendChild(i),n.appendChild(e),this.error){const t=document.createElement("div");t.className="radio-group-error",t.textContent=this.error,n.appendChild(t)}t.appendChild(n),this.setupEventListeners()}this.syncChildren()}get value(){return this.getProperty("value")}set value(t){this.setProperty("value",t)}get name(){return this.getProperty("name")}set name(t){this.setProperty("name",t)}get label(){return this.getProperty("label")}set label(t){this.setProperty("label",t)}get disabled(){return this.getProperty("disabled")}set disabled(t){this.setProperty("disabled",t)}get required(){return this.getProperty("required")}set required(t){this.setProperty("required",t)}get error(){return this.getProperty("error")}set error(t){this.setProperty("error",t)}get orientation(){return this.getProperty("orientation")}set orientation(t){this.setProperty("orientation",t)}get size(){return this.getProperty("size")}set size(t){this.setProperty("size",t)}get flavor(){return this.getProperty("flavor")}set flavor(t){this.setProperty("flavor",t)}get form(){return this.$.form}};mt.formAssociated=!0,mt.properties={value:{type:"string",visual:!0,formValue:!0,emitChange:!0,default:""},name:{type:"string",default:""},label:{type:"string",visual:!0,default:""},disabled:{type:"boolean",visual:!0,default:!1},required:{type:"boolean",visual:!0,default:!1},error:{type:"string",visual:!0,default:""},orientation:{type:"string",visual:!0,default:"vertical"},size:{type:"string",visual:!0,default:e},flavor:{type:"string",visual:!0,default:"primary"}};let yt=mt;customElements.get("ty-radio-group")||customElements.define("ty-radio-group",yt);const ft=(t,n)=>{const e=e=>n?`var(--ty-color-${t}${e}, var(--ty-color-${n}${e}))`:`var(--ty-color-${t}${e})`,i=e=>n?`var(--ty-bg-${t}${e}, var(--ty-bg-${n}${e}))`:`var(--ty-bg-${t}${e})`;return`\n:host([flavor="${t}"]) { --copy-color: ${e("")}; --copy-color-hover: ${e("-strong")}; --copy-bg-hover: ${i("-soft")}; }\n:host([flavor="${t}+"]) { --copy-color: ${e("-strong")}; --copy-color-hover: ${e("-strong")}; --copy-bg-hover: ${i("-soft")}; }\n:host([flavor="${t}-"]) { --copy-color: ${e("-soft")}; --copy-color-hover: ${e("")}; --copy-bg-hover: ${i("-soft")}; }\n`},wt=`\n.copy-field-value {\nflex: 1;\nfont-size: var(--ty-field-font);\nline-height: var(--ty-field-leading);\nletter-spacing: var(--ty-field-tracking);\noverflow: hidden;\ntext-overflow: ellipsis;\nwhite-space: nowrap;\nuser-select: none;\npadding: 0;\nmargin: 0;\nbackground: transparent;\nborder: none;\ncolor: inherit;\nfont-family: inherit;\n}\n.copy-field-value.multiline {\nwhite-space: pre-wrap;\nword-break: break-word;\nmax-height: 200px;\noverflow-y: auto;\n}\n.input-wrapper:has(.copy-field-value.multiline) {\nalign-items: flex-start;\npadding-top: 8px;\npadding-bottom: 8px;\n}\n.copy-field-value.horizontal-scroll {\noverflow-x: auto;\noverflow-y: hidden;\ntext-overflow: clip;\nwhite-space: nowrap;\n}\n.copy-field-value.multiline.horizontal-scroll {\nwhite-space: pre;\nword-break: normal;\noverflow-y: auto;\n}\n.copy-field-value.multiline,\n.copy-field-value.horizontal-scroll {\nscrollbar-width: none; \n}\n.copy-field-value.multiline::-webkit-scrollbar,\n.copy-field-value.horizontal-scroll::-webkit-scrollbar {\ndisplay: none; \n}\n.input-wrapper:not(.disabled):hover {\nbackground: var(--copy-bg-hover, var(--ty-bg-primary-soft));\ntransition: var(--ty-local-transition, background 0.2s ease);\n}\n.copy-button {\nflex-shrink: 0;\ndisplay: flex;\nalign-items: center;\njustify-content: center;\nwidth: var(--ty-field-control);\nheight: var(--ty-field-control);\ncursor: pointer;\nborder: none;\nbackground: transparent;\ncolor: var(--copy-color, var(--ty-text-soft));\ntransition: var(--ty-local-transition, color 0.2s ease, transform 0.2s ease);\npadding: 0;\nmargin: 0;\n}\n.copy-button:hover:not(.disabled) {\ncolor: var(--copy-color-hover, var(--ty-text));\ntransform: scale(1.1);\n}\n.copy-button.success {\ncolor: var(--ty-color-success);\nanimation: copy-feedback 0.3s ease;\n}\n.copy-button.error {\ncolor: var(--ty-color-danger);\nanimation: copy-feedback 0.3s ease;\n}\n@keyframes copy-feedback {\n0%, 100% { transform: scale(1); }\n50% { transform: scale(1.2); }\n}\n.copy-button svg {\nwidth: var(--ty-field-icon);\nheight: var(--ty-field-icon);\n}\n.input-wrapper.disabled .copy-button {\ncursor: not-allowed;\nopacity: 0.5;\n}\n.input-wrapper.disabled {\ncursor: not-allowed;\n}\n${n.map(t=>ft(t)).join("")}\n`,xt='<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><rect width="14" height="14" x="8" y="8" rx="2" ry="2"/><path d="M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2"/></svg>',kt='<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><polyline points="20 6 9 17 4 12"/></svg>',$t=class extends s{constructor(){super(),this.rt=null,this.lt=!1,this.A=null,a(this.shadowRoot,{css:J,id:"ty-input"}),a(this.shadowRoot,{css:wt,id:"ty-copy"})}onConnect(){this.j()}j(){this.A=v(this.shadowRoot,this.A,this.flavor,({base:t})=>(t=>ft(t,"neutral"))(t))}onDisconnect(){null!==this.rt&&(clearTimeout(this.rt),this.rt=null)}onPropertiesChanged(t){t.some(t=>"flavor"===t.name)&&this.j()}buildClassList(){const t=[];return this.disabled&&t.push("disabled"),this.required&&t.push("required"),t.join(" ")}async copyToClipboard(){if(this.disabled||!this.value)return;const t=this.value;try{await navigator.clipboard.writeText(t),this.dispatchEvent(new CustomEvent("copy-success",{detail:{value:t},bubbles:!0,composed:!0}))}catch(n){try{const n=document.createElement("textarea");n.value=t,n.style.position="fixed",n.style.opacity="0",document.body.appendChild(n),n.select(),document.execCommand("copy"),document.body.removeChild(n),this.dispatchEvent(new CustomEvent("copy-success",{detail:{value:t},bubbles:!0,composed:!0}))}catch(e){return this.dispatchEvent(new CustomEvent("copy-error",{detail:{error:e},bubbles:!0,composed:!0})),void this.showCopyError()}}this.showCopySuccess()}showCopySuccess(){null!==this.rt&&clearTimeout(this.rt),this.lt=!0;const t=this.shadowRoot.querySelector(".copy-button");t&&(t.classList.add("success"),t.innerHTML=kt,t.setAttribute("aria-label","Copied!")),this.rt=window.setTimeout(()=>{this.lt=!1;const t=this.shadowRoot.querySelector(".copy-button");t&&(t.classList.remove("success"),t.innerHTML=xt,t.setAttribute("aria-label","Copy to clipboard")),this.rt=null},2e3)}showCopyError(){null!==this.rt&&clearTimeout(this.rt),this.lt=!1;const t=this.shadowRoot.querySelector(".copy-button");t&&(t.classList.add("error"),t.innerHTML='<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M18 6 6 18"/><path d="m6 6 12 12"/></svg>',t.setAttribute("aria-label","Copy failed")),this.rt=window.setTimeout(()=>{const t=this.shadowRoot.querySelector(".copy-button");t&&(t.classList.remove("error"),t.innerHTML=xt,t.setAttribute("aria-label","Copy to clipboard")),this.rt=null},2e3)}setupEventListeners(){const t=this.shadowRoot,n=t.querySelector(".input-wrapper"),e=t.querySelector(".copy-button");if(n&&!this.disabled){const t=n;t.addEventListener("click",t=>{t.target===e||t.target.closest(".copy-button")||this.copyToClipboard()}),t.style.cursor="pointer"}e&&e.addEventListener("click",()=>{this.copyToClipboard()})}render(){const t=this.shadowRoot,n=this.buildClassList(),e=["copy-field-value",this.multiline?"multiline":"",this.horizontalScroll?"horizontal-scroll":""].filter(Boolean).join(" ");t.innerHTML=`\n<div class="input-container">\n${this.label?`\n<label class="ty-field-label">\n${this.label}\n${this.required?`<span class="required-icon">${nt}</span>`:""}\n</label>\n`:""}\n<div class="input-wrapper ${n}">\n${"code"===this.format?`<code class="${e}">${this.value||""}</code>`:`<div class="${e}">${this.value||""}</div>`}\n<button class="copy-button${this.lt?" success":""}" type="button" aria-label="${this.lt?"Copied!":"Copy to clipboard"}" ${this.disabled?"disabled":""}>\n${this.lt?kt:xt}\n</button>\n</div>\n</div>\n`,this.setupEventListeners()}get value(){return this.getProperty("value")}set value(t){this.setProperty("value",t)}get label(){return this.getProperty("label")}set label(t){this.setProperty("label",t)}get size(){return this.getProperty("size")}set size(t){this.setProperty("size",t)}get flavor(){return this.getProperty("flavor")}set flavor(t){this.setProperty("flavor",t)}get format(){return this.getProperty("format")}set format(t){this.setProperty("format",t)}get multiline(){return this.getProperty("multiline")}set multiline(t){this.setProperty("multiline",t)}get horizontalScroll(){return this.getProperty("horizontalScroll")}set horizontalScroll(t){this.setProperty("horizontalScroll",t)}get disabled(){return this.getProperty("disabled")}set disabled(t){this.setProperty("disabled",t)}get required(){return this.getProperty("required")}set required(t){this.setProperty("required",t)}};$t.formAssociated=!0,$t.properties={value:{type:"string",visual:!0,formValue:!0,default:""},label:{type:"string",visual:!0,default:""},size:{type:"string",visual:!0,default:e,validate:t=>["xs","sm","md","lg","xl"].includes(t),coerce:t=>["xs","sm","md","lg","xl"].includes(t)?t:e},flavor:{type:"string",visual:!0,default:"neutral"},format:{type:"string",visual:!0,default:"text",coerce:t=>"code"===t?"code":"text"},multiline:{type:"boolean",visual:!0,default:!1},horizontalScroll:{type:"boolean",visual:!0,default:!1},disabled:{type:"boolean",visual:!0,default:!1},required:{type:"boolean",visual:!0,default:!1}};let zt=$t;function Ct(t){return 1024>t?t+" B":1048576>t?(t/1024).toFixed(1)+" KB":1073741824>t?(t/1024/1024).toFixed(1)+" MB":(t/1024/1024/1024).toFixed(1)+" GB"}customElements.get("ty-copy")||customElements.define("ty-copy",zt),customElements.get("ty-copy-field")||customElements.define("ty-copy-field",class extends zt{});const Et=class extends s{constructor(){super(),this.ct=[],this.dt=!1,this.Y=!1,this.ht=null,this.ut=null,this.bt=null,this.vt=null,this.gt=null,this.yt=null,this.ft=null,this.wt=null,a(this.shadowRoot,{css:"\n:host {\ndisplay: block;\nfont-family: inherit;\nwidth: 100%;\n}\n.file-upload-container {\ndisplay: flex;\nflex-direction: column;\nwidth: 100%;\nbox-sizing: border-box;\n}\n.upload-label {\nfont-size: var(--ty-font-sm);\nline-height: var(--ty-leading-sm);\nletter-spacing: var(--ty-tracking-sm);\nfont-weight: var(--ty-font-medium);\ncolor: var(--ty-label-color);\nmargin-bottom: 6px;\npadding-left: 4px;\ndisplay: flex;\nalign-items: center;\n}\n.required-icon {\ncolor: var(--ty-color-danger);\nmargin-left: 4px;\nfont-size: 0.75rem;\nline-height: 1;\n}\n.drop-zone {\nborder: 2px dashed var(--ty-border);\nborder-radius: var(--ty-radius-base);\npadding: 2rem 1.5rem;\ntext-align: center;\ncursor: pointer;\ntransition: var(--ty-local-transition, border-color 0.15s ease, background-color 0.15s ease, box-shadow 0.15s ease);\noutline: none;\ndisplay: flex;\nflex-direction: column;\nalign-items: center;\njustify-content: center;\ngap: 0.5rem;\nmin-height: 140px;\nuser-select: none;\n}\n.drop-zone:hover:not(.disabled) {\nborder-color: var(--ty-input-border-hover);\nbackground: var(--ty-surface-content);\n}\n.drop-zone.focused {\nborder-color: var(--ty-input-border-focus);\nbox-shadow: 0 0 0 3px var(--ty-input-shadow-focus);\n}\n.drop-zone.drag-active {\nborder-color: var(--ty-color-primary);\nborder-style: solid;\nbackground: var(--ty-bg-primary-);\n}\n.drop-zone.drag-active .upload-icon {\ncolor: var(--ty-color-primary);\ntransform: translateY(-2px);\n}\n.drop-zone.has-files {\nmin-height: 80px;\npadding: 1.25rem 1.5rem;\n}\n.drop-zone.disabled {\nopacity: 0.5;\ncursor: not-allowed;\npointer-events: none;\n}\n.drop-zone.error {\nborder-color: var(--ty-color-danger);\n}\n.drop-zone.error:not(.disabled) {\nbackground: var(--ty-bg-danger-);\n}\n.upload-icon {\ncolor: var(--ty-text-faint);\nwidth: 2.5rem;\nheight: 2.5rem;\ndisplay: flex;\nalign-items: center;\njustify-content: center;\ntransition: var(--ty-local-transition, color 0.15s ease, transform 0.15s ease);\npointer-events: none;\n}\n.upload-icon svg {\nwidth: 100%;\nheight: 100%;\n}\n.upload-hint {\ncolor: var(--ty-text-soft);\nfont-size: var(--ty-font-sm);\nline-height: var(--ty-leading-sm);\npointer-events: none;\n}\n.browse-link {\ncolor: var(--ty-color-primary);\nfont-weight: var(--ty-font-medium);\n}\n.upload-sub-hint {\ncolor: var(--ty-text-faint);\nfont-size: var(--ty-font-xs);\nline-height: var(--ty-leading-xs);\npointer-events: none;\n}\n.file-list {\ndisplay: flex;\nflex-direction: column;\ngap: 0.375rem;\nmargin-top: 0.5rem;\n}\n.file-item {\ndisplay: flex;\nalign-items: center;\ngap: 0.5rem;\npadding: 0.5rem 0.75rem;\nborder-radius: var(--ty-radius-base);\nbackground: var(--ty-surface-content);\nborder: 1px solid var(--ty-border-soft);\n}\n.file-icon {\ncolor: var(--ty-text-faint);\nflex-shrink: 0;\nwidth: 1rem;\nheight: 1rem;\ndisplay: flex;\nalign-items: center;\n}\n.file-icon svg {\nwidth: 100%;\nheight: 100%;\n}\n.file-name {\nflex: 1;\nfont-size: var(--ty-font-sm);\ncolor: var(--ty-text);\nwhite-space: nowrap;\noverflow: hidden;\ntext-overflow: ellipsis;\nmin-width: 0;\n}\n.file-size {\nfont-size: var(--ty-font-xs);\ncolor: var(--ty-text-faint);\nflex-shrink: 0;\nfont-variant-numeric: tabular-nums;\n}\n.file-remove {\nflex-shrink: 0;\ncursor: pointer;\ncolor: var(--ty-text-faint);\nwidth: 1.25rem;\nheight: 1.25rem;\ndisplay: flex;\nalign-items: center;\njustify-content: center;\nborder-radius: 50%;\ntransition: var(--ty-local-transition, color 0.15s ease, background-color 0.15s ease);\nborder: none;\nbackground: none;\npadding: 0;\noutline: none;\n}\n.file-remove:hover {\ncolor: var(--ty-color-danger);\nbackground: var(--ty-bg-danger-);\n}\n.file-remove:focus-visible {\nbox-shadow: 0 0 0 2px var(--ty-color-danger);\n}\n.file-remove svg {\nwidth: 12px;\nheight: 12px;\n}\n.error-message {\nfont-size: var(--ty-font-xs);\nline-height: var(--ty-leading-xs);\ncolor: var(--ty-color-danger);\nmargin-top: 4px;\npadding-left: 4px;\n}\n@media (prefers-reduced-motion: reduce) {\n.drop-zone,\n.upload-icon,\n.file-remove {\ntransition: none;\n}\n}\n@media (prefers-contrast: high) {\n.drop-zone {\nborder-width: 3px;\n}\n}\n",id:"ty-file-upload"})}onConnect(){}onDisconnect(){this.removeEventListeners()}onPropertiesChanged(t){}onFormReset(){this.ct=[],this.updateFormValue(),this.p&&this.render();const t=this.shadowRoot?.querySelector(".file-input");t&&(t.value="")}getFormValue(){if(0===this.ct.length||!this.name)return null;const t=new FormData;for(const n of this.ct)t.append(this.name,n);return t}matchesAccept(t){const n=this.accept?.trim();return!n||n.split(",").some(n=>{const e=n.trim().toLowerCase();if(!e)return!1;if(e.startsWith("."))return t.name.toLowerCase().endsWith(e);const i=t.type.toLowerCase();return e.endsWith("/*")?i.startsWith(e.slice(0,-1)):i===e})}get files(){return[...this.ct]}get multiple(){return this.getProperty("multiple")}set multiple(t){this.setProperty("multiple",t)}get accept(){return this.getProperty("accept")}set accept(t){this.setProperty("accept",t)}get name(){return this.getProperty("name")}set name(t){this.setProperty("name",t)}get disabled(){return this.getProperty("disabled")}set disabled(t){this.setProperty("disabled",t)}get required(){return this.getProperty("required")}set required(t){this.setProperty("required",t)}get label(){return this.getProperty("label")}set label(t){this.setProperty("label",t)}get placeholder(){return this.getProperty("placeholder")}set placeholder(t){this.setProperty("placeholder",t)}get error(){return this.getProperty("error")}set error(t){this.setProperty("error",t)}get form(){return this.$.form}setFiles(t){this.ct=this.multiple?t:t.slice(0,1),this.updateFormValue(),this.render();const n={value:this.ct,files:this.ct,names:this.ct.map(t=>t.name)};setTimeout(()=>{this.dispatchEvent(new CustomEvent("change",{detail:n,bubbles:!0,composed:!0}))},0)}removeFile(t){const n=[...this.ct];n.splice(t,1),this.setFiles(n);const e=this.shadowRoot?.querySelector(".file-input");e&&(e.value="")}setupEventListeners(){if(this.Y)return;const t=this.shadowRoot,n=t.querySelector(".drop-zone"),e=t.querySelector(".file-input");this.ht=t=>{this.disabled||t.target.closest(".file-remove")||e.click()},this.ut=t=>{this.disabled||"Enter"!==t.key&&" "!==t.key||(t.preventDefault(),e.click())},this.bt=()=>{n.classList.add("focused")},this.vt=()=>{n.classList.remove("focused")},this.gt=t=>{this.disabled||(t.preventDefault(),t.stopPropagation(),this.dt||(this.dt=!0,n.classList.add("drag-active")))},this.yt=t=>{n.contains(t.relatedTarget)||(this.dt=!1,n.classList.remove("drag-active"))},this.ft=t=>{if(this.disabled)return;t.preventDefault(),t.stopPropagation(),this.dt=!1,n.classList.remove("drag-active");const e=Array.from(t.dataTransfer?.files??[]).filter(t=>this.matchesAccept(t));e.length>0&&this.setFiles(e)},this.wt=t=>{const n=t.target;n.files&&n.files.length>0&&this.setFiles(Array.from(n.files))},n.addEventListener("click",this.ht),n.addEventListener("keydown",this.ut),n.addEventListener("focus",this.bt),n.addEventListener("blur",this.vt),n.addEventListener("dragover",this.gt),n.addEventListener("dragleave",this.yt),n.addEventListener("drop",this.ft),e.addEventListener("change",this.wt),this.Y=!0}removeEventListeners(){if(!this.Y)return;const t=this.shadowRoot;if(!t)return;const n=t.querySelector(".drop-zone"),e=t.querySelector(".file-input");n&&e&&(this.ht&&n.removeEventListener("click",this.ht),this.ut&&n.removeEventListener("keydown",this.ut),this.bt&&n.removeEventListener("focus",this.bt),this.vt&&n.removeEventListener("blur",this.vt),this.gt&&n.removeEventListener("dragover",this.gt),this.yt&&n.removeEventListener("dragleave",this.yt),this.ft&&n.removeEventListener("drop",this.ft),this.wt&&e.removeEventListener("change",this.wt),this.Y=!1)}buildDropZoneClasses(){const t=["drop-zone"];return this.dt&&t.push("drag-active"),this.ct.length>0&&t.push("has-files"),this.disabled&&t.push("disabled"),this.error&&t.push("error"),t.join(" ")}renderFileList(t){t.innerHTML="";for(let n=0;this.ct.length>n;n++){const e=this.ct[n],i=document.createElement("div");i.className="file-item";const o=document.createElement("span");o.className="file-icon",o.innerHTML='<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z"/><polyline points="14 2 14 8 20 8"/></svg>';const s=document.createElement("span");s.className="file-name",s.textContent=e.name,s.title=e.name;const r=document.createElement("span");r.className="file-size",r.textContent=Ct(e.size);const a=document.createElement("button");a.className="file-remove",a.type="button",a.innerHTML='<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><line x1="18" y1="6" x2="6" y2="18"/><line x1="6" y1="6" x2="18" y2="18"/></svg>',a.setAttribute("aria-label","Remove "+e.name);const l=n;a.addEventListener("click",t=>{t.stopPropagation(),this.removeFile(l)}),i.appendChild(o),i.appendChild(s),i.appendChild(r),i.appendChild(a),t.appendChild(i)}}render(){const t=this.shadowRoot;let n=t.querySelector(".file-upload-container");if(!n){n=document.createElement("div"),n.className="file-upload-container";const e=document.createElement("div");e.className="upload-label",n.appendChild(e);const i=document.createElement("div");i.className="drop-zone",i.setAttribute("role","button");const o=document.createElement("input");o.type="file",o.className="file-input",o.style.display="none",i.appendChild(o);const s=document.createElement("div");s.className="upload-icon",s.innerHTML='<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4"/><polyline points="17 8 12 3 7 8"/><line x1="12" y1="3" x2="12" y2="15"/></svg>',i.appendChild(s);const r=document.createElement("div");r.className="upload-hint",i.appendChild(r);const a=document.createElement("div");a.className="upload-sub-hint",i.appendChild(a),n.appendChild(i);const l=document.createElement("div");l.className="file-list",n.appendChild(l);const c=document.createElement("div");c.className="error-message",n.appendChild(c),t.appendChild(n),this.setupEventListeners()}const e=n.querySelector(".upload-label");if(this.label){if(e.style.display="",e.innerHTML="",e.appendChild(document.createTextNode(this.label)),this.required){const t=document.createElement("span");t.className="required-icon",t.textContent="*",t.setAttribute("aria-hidden","true"),e.appendChild(t)}}else e.style.display="none";const i=n.querySelector(".drop-zone");i.className=this.buildDropZoneClasses(),i.tabIndex=this.disabled?-1:0,i.setAttribute("aria-disabled",this.disabled+""),i.setAttribute("aria-label",this.placeholder||"Upload files");const o=n.querySelector(".file-input");o.multiple=this.multiple,o.accept=this.accept,o.disabled=this.disabled,n.querySelector(".upload-icon").style.display=this.ct.length>0?"none":"",n.querySelector(".upload-hint").innerHTML=this.ct.length>0?`<strong>${this.ct.length} file${1!==this.ct.length?"s":""} selected</strong>`:'Drop files here or <span class="browse-link">click to browse</span>';const s=n.querySelector(".upload-sub-hint");this.accept&&0===this.ct.length?(s.textContent="Accepted: "+this.accept,s.style.display=""):s.style.display="none";const r=n.querySelector(".file-list");this.renderFileList(r);const a=n.querySelector(".error-message");a.textContent=this.error,a.style.display=this.error?"":"none"}};Et.formAssociated=!0,Et.properties={multiple:{type:"boolean",visual:!0,default:!1},accept:{type:"string",visual:!0,default:""},name:{type:"string",default:""},disabled:{type:"boolean",visual:!0,default:!1},required:{type:"boolean",visual:!0,default:!1},label:{type:"string",visual:!0,default:""},placeholder:{type:"string",visual:!0,default:"Drop files here or click to browse"},error:{type:"string",visual:!0,default:""}};let Tt=Et;customElements.get("ty-file-upload")||customElements.define("ty-file-upload",Tt);const St=`\n${K}\n:host {\ndisplay: block;\nfont-family: inherit;\nwidth: 100%;\n}\n.textarea-container {\ndisplay: flex;\nflex-direction: column;\nwidth: 100%;\nbox-sizing: border-box;\nposition: relative;\n}\n.textarea-wrapper {\nposition: relative;\nwidth: 100%;\ndisplay: flex;\nflex-direction: column;\nbox-sizing: border-box;\nborder: 1px solid var(--input-border, var(--ty-input-border));\nborder-radius: var(--ty-radius-base);\nbackground: var(--input-bg, var(--ty-input-bg));\ntransition: var(--ty-local-transition, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out);\n}\n.textarea-wrapper:has(textarea:focus) {\nborder-color: var(--input-border-focus, var(--ty-input-border-focus));\nbox-shadow: 0 0 0 3px var(--input-shadow-focus, var(--ty-input-shadow-focus));\n}\n.textarea-wrapper:has(textarea.error) {\nborder-color: var(--ty-color-danger);\nbackground: var(--ty-bg-danger-soft);\n}\n.textarea-wrapper:has(textarea.error):has(textarea:focus) {\nborder-color: var(--ty-color-danger-bold);\n}\n.textarea-wrapper:has(textarea:disabled) {\nopacity: 0.5;\nbackground: var(--input-disabled-bg, var(--ty-input-disabled-bg));\nborder-color: var(--input-disabled-border, var(--ty-input-disabled-border));\n}\n.textarea-scroll {\nposition: relative;\nflex: 1 1 auto;\nmin-height: 0;\ndisplay: flex;\n}\n.textarea-scroll .ty-scrollbar-track-y {\ntop: 2px;\nright: 2px;\nbottom: 2px;\nborder-radius: 0 4px 4px 0;\n}\n.textarea-header,\n.textarea-footer {\ndisplay: flex;\nalign-items: center;\ngap: 0.5rem;\n}\n.textarea-footer { justify-content: space-between; }\n.textarea-header.has-content {\npadding: 6px 10px;\nborder-bottom: 1px solid var(--ty-textarea-divider, var(--input-border, var(--ty-input-border)));\n}\n.textarea-footer.has-content {\npadding: 6px 10px;\nborder-top: 1px solid var(--ty-textarea-divider, var(--input-border, var(--ty-input-border)));\n}\n.ty-field-label {\nfont-size: var(--ty-field-label-font);\nline-height: var(--ty-field-label-leading);\nletter-spacing: var(--ty-tracking-sm);\nfont-weight: var(--ty-font-medium);\ncolor: var(--ty-label-color);\nmargin-bottom: var(--ty-field-label-gap);\npadding-left: var(--ty-field-outer-pad-x);\n}\n.required-icon {\ndisplay: inline-flex;\nalign-items: center;\ncolor: var(--ty-color-danger);\nwidth: 12px;\nheight: 12px;\nvertical-align: middle;\n}\n.error-message {\nfont-size: var(--ty-font-xs);\nline-height: var(--ty-leading-xs);\nletter-spacing: var(--ty-tracking-xs);\ncolor: var(--ty-color-danger);\nmargin-top: 4px;\npadding-left: var(--ty-field-outer-pad-x);\n}\ntextarea {\nfont-family: inherit;\nbox-sizing: border-box;\nwidth: 100%;\nflex: 1 1 auto;\nborder: none;\nbackground: transparent;\ncolor: var(--input-color, var(--ty-input-color));\nfont-family: inherit;\nfont-size: var(--ty-font-sm);\nline-height: var(--ty-leading-sm);\nletter-spacing: var(--ty-tracking-sm);\nfont-weight: var(--ty-font-normal);\noutline: none;\nmin-height: 80px;\npadding: 12px 12px;\noverflow: hidden;\nresize: none;\nwhite-space: pre-wrap;\nword-wrap: break-word;\n}\n:host([data-custom-scroll]) textarea::-webkit-scrollbar {\ndisplay: none;\n}\ntextarea:disabled {\ncursor: not-allowed;\ncolor: var(--input-disabled-color, var(--ty-input-disabled-color));\n}\ntextarea::placeholder {\ncolor: var(--input-placeholder, var(--ty-input-placeholder));\nfont-weight: 400;\n}\ntextarea.resize-both {\nresize: both;\n}\ntextarea.resize-horizontal {\nresize: horizontal;\n}\ntextarea.resize-vertical {\nresize: vertical;\n}\ntextarea.resize-none {\nresize: none;\n}\ntextarea:not(.resize-both):not(.resize-horizontal):not(.resize-vertical) {\nresize: none;\n}\n.textarea-dummy {\nposition: absolute !important;\ntop: 0 !important;\nleft: 0 !important;\nvisibility: hidden !important;\nwhite-space: pre-wrap !important;\nword-break: break-word !important;\nbox-sizing: border-box !important;\noverflow: hidden !important;\npointer-events: none !important;\nz-index: -1 !important;\nword-wrap: break-word !important;\noverflow-wrap: break-word !important;\n}\ntextarea.xs {\nmin-height: 64px;\npadding: 8px var(--ty-field-pad-x);\nfont-size: var(--ty-font-xs);\nline-height: var(--ty-leading-xs);\nletter-spacing: var(--ty-tracking-xs);\n}\ntextarea.sm {\nmin-height: 72px;\npadding: 10px var(--ty-field-pad-x);\nfont-size: var(--ty-font-sm);\nline-height: var(--ty-leading-sm);\nletter-spacing: var(--ty-tracking-sm);\n}\ntextarea.md {\nmin-height: 80px;\npadding: 12px var(--ty-field-pad-x);\nfont-size: var(--ty-font-sm);\nline-height: var(--ty-leading-sm);\nletter-spacing: var(--ty-tracking-sm);\n}\ntextarea.lg {\nmin-height: 96px;\npadding: 14px var(--ty-field-pad-x);\nfont-size: var(--ty-font-base);\nline-height: var(--ty-leading-base);\nletter-spacing: var(--ty-tracking-base);\n}\ntextarea.xl {\nmin-height: 112px;\npadding: 16px var(--ty-field-pad-x);\nfont-size: var(--ty-font-lg);\nline-height: var(--ty-leading-lg);\nletter-spacing: var(--ty-tracking-lg);\n}\ntextarea:focus-visible {\noutline: none;\n}\n@media (prefers-contrast: high) {\ntextarea {\nborder-width: 2px;\n}\n}\n@media (prefers-reduced-motion: reduce) {\ntextarea {\ntransition: none;\n}\n.textarea-dummy {\ntransition: none;\n}\n}\n@container (max-width: 480px) {\ntextarea.lg {\nfont-size: var(--ty-font-sm);\nline-height: var(--ty-leading-sm);\nletter-spacing: var(--ty-tracking-sm);\npadding: 12px var(--ty-field-pad-x);\nmin-height: 80px;\n}\ntextarea.xl {\nfont-size: var(--ty-font-base);\nline-height: var(--ty-leading-base);\nletter-spacing: var(--ty-tracking-base);\npadding: 14px var(--ty-field-pad-x);\nmin-height: 96px;\n}\n}\n@container (max-width: 320px) {\ntextarea.xl {\nfont-size: var(--ty-font-sm);\nline-height: var(--ty-leading-sm);\nletter-spacing: var(--ty-tracking-sm);\npadding: 12px var(--ty-field-pad-x);\nmin-height: 80px;\n}\n}\n@media (max-width: 640px) {\ntextarea.lg {\nfont-size: var(--ty-font-sm);\nline-height: var(--ty-leading-sm);\nletter-spacing: var(--ty-tracking-sm);\npadding: 12px var(--ty-field-pad-x);\nmin-height: 80px;\n}\ntextarea.xl {\nfont-size: var(--ty-font-base);\nline-height: var(--ty-leading-base);\nletter-spacing: var(--ty-tracking-base);\npadding: 14px var(--ty-field-pad-x);\nmin-height: 96px;\n}\n}\n@media (max-width: 480px) {\ntextarea.xl {\nfont-size: var(--ty-font-sm);\nline-height: var(--ty-leading-sm);\nletter-spacing: var(--ty-tracking-sm);\npadding: 12px var(--ty-field-pad-x);\nmin-height: 80px;\n}\n}\ntextarea {\ntransition: var(--ty-local-transition,\nborder-color 0.15s ease-in-out,\nbox-shadow 0.15s ease-in-out,\nbackground-color 0.15s ease-in-out,\nheight 0.1s ease-out);\n}\ntextarea:focus {\ntransition: var(--ty-local-transition,\nborder-color 0.15s ease-in-out,\nbox-shadow 0.15s ease-in-out,\nbackground-color 0.15s ease-in-out);\n}\n@media (prefers-reduced-motion: reduce) {\ntextarea {\ntransition: none;\n}\n}\n`;function Mt(){return"native"!==document.documentElement.getAttribute("data-ty-scrollbar")}class _t{constructor(t,n={}){this.trackY=null,this.thumbY=null,this.trackX=null,this.thumbX=null,this.dt=!1,this.xt="y",this.kt=0,this.$t=0,this.zt=null,this.Ct=null,this.Et=null,this.Tt=t,this.St=!1!==n.vertical,this.Mt=n.horizontal??!1,this._t=n.autoHideDelay??1e3,this.Dt=this.qt.bind(this),this.At=this.jt.bind(this),this.It=this.Lt.bind(this),this.Vt=this.Ft.bind(this),this.Ot=this.Ht.bind(this),this.Nt=this.Pt.bind(this),this.Wt=this.Bt.bind(this),this.St&&(this.trackY=this.Rt("y"),this.thumbY=this.Yt("y"),this.trackY.appendChild(this.thumbY)),this.Mt&&(this.trackX=this.Rt("x"),this.thumbX=this.Yt("x"),this.trackX.appendChild(this.thumbX)),this.Tt.addEventListener("scroll",this.Dt,{passive:!0}),this.thumbY&&this.thumbY.addEventListener("pointerdown",this.At),this.trackY&&this.trackY.addEventListener("pointerdown",this.Vt),this.thumbX&&this.thumbX.addEventListener("pointerdown",this.It),this.trackX&&this.trackX.addEventListener("pointerdown",this.Ot),this.Et=new ResizeObserver(()=>this.update()),this.Et.observe(this.Tt),this.update()}Rt(t){const n=document.createElement("div");return n.className="ty-scrollbar-track-"+t,n}Yt(t){const n=document.createElement("div");return n.className="ty-scrollbar-thumb-"+t,n}update(){this.Ut(),this.Xt()}scrollToTop(t=!1){this.Tt.scrollTo({top:0,behavior:t?"smooth":"auto"})}scrollToBottom(t=!1){this.Tt.scrollTo({top:this.Tt.scrollHeight,behavior:t?"smooth":"auto"})}scrollToLeft(t=!1){this.Tt.scrollTo({left:0,behavior:t?"smooth":"auto"})}scrollToRight(t=!1){this.Tt.scrollTo({left:this.Tt.scrollWidth,behavior:t?"smooth":"auto"})}destroy(){this.Tt.removeEventListener("scroll",this.Dt),this.thumbY&&this.thumbY.removeEventListener("pointerdown",this.At),this.trackY&&this.trackY.removeEventListener("pointerdown",this.Vt),this.thumbX&&this.thumbX.removeEventListener("pointerdown",this.It),this.trackX&&this.trackX.removeEventListener("pointerdown",this.Ot),this.Et&&(this.Et.disconnect(),this.Et=null),null!==this.zt&&(cancelAnimationFrame(this.zt),this.zt=null),null!==this.Ct&&(clearTimeout(this.Ct),this.Ct=null)}qt(){null===this.zt&&(this.zt=requestAnimationFrame(()=>{this.zt=null,this.Kt(),this.Zt()}))}Ut(){if(!this.trackY||!this.thumbY)return;const{scrollHeight:t,clientHeight:n}=this.Tt,e=t>n+2;this.trackY.classList.toggle("has-overflow",e),e&&(this.thumbY.style.height=Math.max(n/t*100,0)+"%"),this.Jt()}Xt(){if(!this.trackX||!this.thumbX)return;const{scrollWidth:t,clientWidth:n}=this.Tt,e=t>n+2;this.trackX.classList.toggle("has-overflow",e),e&&(this.thumbX.style.width=Math.max(n/t*100,0)+"%"),this.Gt()}Kt(){this.Jt(),this.Gt()}Jt(){if(!this.trackY||!this.thumbY)return;const{scrollTop:t,scrollHeight:n,clientHeight:e}=this.Tt,i=n-e;i>0&&(this.thumbY.style.top=t/i*(this.trackY.clientHeight-this.thumbY.offsetHeight)+"px")}Gt(){if(!this.trackX||!this.thumbX)return;const{scrollLeft:t,scrollWidth:n,clientWidth:e}=this.Tt,i=n-e;i>0&&(this.thumbX.style.left=t/i*(this.trackX.clientWidth-this.thumbX.offsetWidth)+"px")}Zt(){this.dt||(this.trackY?.classList.add("scrolling"),this.trackX?.classList.add("scrolling"),null!==this.Ct&&clearTimeout(this.Ct),this.Ct=setTimeout(()=>{this.trackY?.classList.remove("scrolling"),this.trackX?.classList.remove("scrolling"),this.Ct=null},this._t))}jt(t){0===t.button&&(t.preventDefault(),t.stopPropagation(),this.dt=!0,this.xt="y",this.kt=t.clientY,this.$t=this.Tt.scrollTop,this.thumbY.setPointerCapture(t.pointerId),this.trackY?.classList.add("dragging"),this.thumbY.addEventListener("pointermove",this.Nt),this.thumbY.addEventListener("pointerup",this.Wt),this.thumbY.addEventListener("pointercancel",this.Wt))}Lt(t){0===t.button&&(t.preventDefault(),t.stopPropagation(),this.dt=!0,this.xt="x",this.kt=t.clientX,this.$t=this.Tt.scrollLeft,this.thumbX.setPointerCapture(t.pointerId),this.trackX?.classList.add("dragging"),this.thumbX.addEventListener("pointermove",this.Nt),this.thumbX.addEventListener("pointerup",this.Wt),this.thumbX.addEventListener("pointercancel",this.Wt))}Pt(t){if(this.dt)if("y"===this.xt){const n=t.clientY-this.kt,{scrollHeight:e,clientHeight:i}=this.Tt,o=this.trackY.clientHeight-this.thumbY.offsetHeight;if(0>=o)return;this.Tt.scrollTop=this.$t+n*((e-i)/o)}else{const n=t.clientX-this.kt,{scrollWidth:e,clientWidth:i}=this.Tt,o=this.trackX.clientWidth-this.thumbX.offsetWidth;if(0>=o)return;this.Tt.scrollLeft=this.$t+n*((e-i)/o)}}Bt(t){const n="y"===this.xt?this.thumbY:this.thumbX,e="y"===this.xt?this.trackY:this.trackX;this.dt=!1,n.releasePointerCapture(t.pointerId),e?.classList.remove("dragging"),n.removeEventListener("pointermove",this.Nt),n.removeEventListener("pointerup",this.Wt),n.removeEventListener("pointercancel",this.Wt),this.Zt()}Ft(t){if(t.target===this.thumbY||0!==t.button)return;t.preventDefault();const n=this.trackY.getBoundingClientRect(),e=(t.clientY-n.top)/n.height,{scrollHeight:i,clientHeight:o}=this.Tt;this.Tt.scrollTo({top:e*(i-o),behavior:"smooth"})}Ht(t){if(t.target===this.thumbX||0!==t.button)return;t.preventDefault();const n=this.trackX.getBoundingClientRect(),e=(t.clientX-n.left)/n.width,{scrollWidth:i,clientWidth:o}=this.Tt;this.Tt.scrollTo({left:e*(i-o),behavior:"smooth"})}}const Dt="\n.ty-scrollbar-track-y {\nposition: absolute;\ntop: 0;\nright: 0;\nbottom: 0;\nwidth: var(--ty-scrollbar-width, 8px);\nz-index: 3;\nopacity: 0;\npointer-events: none;\ntransition: opacity 0.25s ease-out;\ncursor: pointer;\n}\n.ty-scrollbar-track-y.has-overflow {\npointer-events: auto;\n}\n.ty-scrollbar-track-y.has-overflow:hover,\n.ty-scrollbar-track-y.has-overflow.scrolling,\n.ty-scrollbar-track-y.dragging {\nopacity: 1;\n}\n.ty-scrollbar-track-y::before {\ncontent: '';\nposition: absolute;\ninset: 0;\nbackground: var(--ty-scrollbar-track, transparent);\nborder-radius: var(--ty-scrollbar-radius, 4px);\nopacity: 0;\ntransition: opacity 0.15s ease-out;\n}\n.ty-scrollbar-track-y:hover::before,\n.ty-scrollbar-track-y.dragging::before {\nopacity: 1;\nbackground: var(--ty-scrollbar-track-hover, color-mix(in oklab, var(--ty-color-neutral-bold) 8%, transparent));\n}\n.ty-scrollbar-thumb-y {\nposition: absolute;\nright: 0;\nwidth: 100%;\nmin-height: var(--ty-scrollbar-thumb-min-height, 30px);\nbackground: var(--ty-scrollbar-thumb, color-mix(in oklab, var(--ty-color-neutral-bold) 40%, transparent));\nborder-radius: var(--ty-scrollbar-radius, 4px);\ntransition: var(--ty-local-transition, background 0.15s ease-out);\nbox-sizing: border-box;\nborder: 1px solid transparent;\n}\n.ty-scrollbar-thumb-y:hover,\n.ty-scrollbar-track-y.dragging .ty-scrollbar-thumb-y {\nbackground: var(--ty-scrollbar-thumb-hover, color-mix(in oklab, var(--ty-color-neutral-bold) 55%, transparent));\n}\n.ty-scrollbar-thumb-y:active,\n.ty-scrollbar-track-y.dragging .ty-scrollbar-thumb-y {\nbackground: var(--ty-scrollbar-thumb-active, color-mix(in oklab, var(--ty-color-neutral-bold) 70%, transparent));\n}\n.ty-scrollbar-track-x {\nposition: absolute;\nbottom: 0;\nleft: 0;\nright: 0;\nheight: var(--ty-scrollbar-width, 8px);\nz-index: 3;\nopacity: 0;\npointer-events: none;\ntransition: opacity 0.25s ease-out;\ncursor: pointer;\n}\n.ty-scrollbar-track-x.has-overflow {\npointer-events: auto;\n}\n.ty-scrollbar-track-x.has-overflow:hover,\n.ty-scrollbar-track-x.has-overflow.scrolling,\n.ty-scrollbar-track-x.dragging {\nopacity: 1;\n}\n.ty-scrollbar-track-x::before {\ncontent: '';\nposition: absolute;\ninset: 0;\nbackground: var(--ty-scrollbar-track, transparent);\nborder-radius: var(--ty-scrollbar-radius, 4px);\nopacity: 0;\ntransition: opacity 0.15s ease-out;\n}\n.ty-scrollbar-track-x:hover::before,\n.ty-scrollbar-track-x.dragging::before {\nopacity: 1;\nbackground: var(--ty-scrollbar-track-hover, color-mix(in oklab, var(--ty-color-neutral-bold) 8%, transparent));\n}\n.ty-scrollbar-thumb-x {\nposition: absolute;\nbottom: 0;\nheight: 100%;\nmin-width: var(--ty-scrollbar-thumb-min-height, 30px);\nbackground: var(--ty-scrollbar-thumb, color-mix(in oklab, var(--ty-color-neutral-bold) 40%, transparent));\nborder-radius: var(--ty-scrollbar-radius, 4px);\ntransition: var(--ty-local-transition, background 0.15s ease-out);\nbox-sizing: border-box;\nborder: 1px solid transparent;\n}\n.ty-scrollbar-thumb-x:hover,\n.ty-scrollbar-track-x.dragging .ty-scrollbar-thumb-x {\nbackground: var(--ty-scrollbar-thumb-hover, color-mix(in oklab, var(--ty-color-neutral-bold) 55%, transparent));\n}\n.ty-scrollbar-thumb-x:active,\n.ty-scrollbar-track-x.dragging .ty-scrollbar-thumb-x {\nbackground: var(--ty-scrollbar-thumb-active, color-mix(in oklab, var(--ty-color-neutral-bold) 70%, transparent));\n}\n@media (pointer: coarse) and (hover: none) {\n.ty-scrollbar-track-y,\n.ty-scrollbar-track-x {\ndisplay: none !important;\n}\n}\n@media (prefers-reduced-motion: reduce) {\n.ty-scrollbar-track-y,\n.ty-scrollbar-track-x,\n.ty-scrollbar-thumb-y,\n.ty-scrollbar-thumb-x {\ntransition-duration: 0ms !important;\n}\n}\n",qt='<svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="12" r="10"></circle><line x1="12" y1="8" x2="12" y2="12"></line><line x1="12" y1="16" x2="12.01" y2="16"></line></svg>',At=class extends s{constructor(){super(),this.Qt=null,this.tn=null,this.nn=null,this.R=!1,this.handleInputEvent=t=>{this.value=t.target.value,this.Qt&&this.tn&&this.resizeTextarea(this.Qt,this.tn),this.emitValueEvents(t)},this.handleFocusEvent=()=>{this.R=!0},this.handleBlurEvent=()=>{this.R=!1};const t=this.shadowRoot;a(t,{css:St,id:"ty-textarea"}),Mt()&&a(t,{css:Dt,id:"ty-custom-scrollbar"})}onConnect(){}onDisconnect(){if(this.en(),this.Qt){const t=this.Qt.cloneNode(!0);this.Qt.parentNode?.replaceChild(t,this.Qt),this.Qt=null}this.tn=null}onPropertiesChanged(t){}getFormValue(){return this.getProperty("value")||null}get value(){return this.getProperty("value")}set value(t){this.setProperty("value",t)}get name(){return this.getProperty("name")}set name(t){this.setProperty("name",t)}get placeholder(){return this.getProperty("placeholder")}set placeholder(t){this.setProperty("placeholder",t)}get label(){return this.getProperty("label")}set label(t){this.setProperty("label",t)}get disabled(){return this.getProperty("disabled")}set disabled(t){this.setProperty("disabled",t)}get required(){return this.getProperty("required")}set required(t){this.setProperty("required",t)}get error(){return this.getProperty("error")}set error(t){this.setProperty("error",t)}get size(){return this.getProperty("size")}set size(t){this.setProperty("size",t)}get rows(){return this.getProperty("rows")}set rows(t){this.setProperty("rows",t)}get cols(){return this.getProperty("cols")}set cols(t){this.setProperty("cols",t)}get resize(){return this.getProperty("resize")}set resize(t){this.setProperty("resize",t)}get minHeight(){return this.getProperty("minHeight")}set minHeight(t){this.setProperty("minHeight",t)}get maxHeight(){return this.getProperty("maxHeight")}set maxHeight(t){this.setProperty("maxHeight",t)}getFontStyle(t){const n=window.getComputedStyle(t);return{fontFamily:n.fontFamily,fontSize:n.fontSize,fontWeight:n.fontWeight,lineHeight:n.lineHeight,letterSpacing:n.letterSpacing,fontStyle:n.fontStyle}}getSpacingStyle(t){const n=window.getComputedStyle(t);return{padding:n.padding,paddingTop:n.paddingTop,paddingRight:n.paddingRight,paddingBottom:n.paddingBottom,paddingLeft:n.paddingLeft,margin:n.margin,borderWidth:n.borderWidth}}setupDummyElement(t){const n=this.shadowRoot,e=n.querySelector(".textarea-dummy");e&&e.remove();const i=document.createElement("pre"),o=this.getFontStyle(t),s=this.getSpacingStyle(t);i.className="textarea-dummy";const r=i.style;return r.position="absolute",r.top="0",r.left="0",r.visibility="hidden",r.whiteSpace="pre-wrap",r.wordBreak="break-word",r.boxSizing="border-box",r.overflow="hidden",r.pointerEvents="none",Object.entries(o).forEach(([t,n])=>{r[t]=n}),Object.entries(s).forEach(([t,n])=>{r[t]=n}),n.appendChild(i),this.tn=i,i}resizeTextarea(t,n){if(!t||!n)return;const e=this.value,i=this.placeholder,o=t.clientHeight;n.textContent=""===e&&i?i:e+" ",n.style.width=t.clientWidth+"px";const s=n.scrollHeight,r=this.minHeight?parseInt(this.minHeight.replace("px",""),10):null,a=this.maxHeight?parseInt(this.maxHeight.replace("px",""),10):null;let l=s;null!==r&&(l=Math.max(l,r)),null!==a&&(l=Math.min(l,a)),Math.abs(l-o)>2&&(t.style.height=l+"px",null===a||a>s?(t.style.overflowY="hidden",this.en()):(t.style.overflowY="auto",this.sn(t))),this.nn?.update()}sn(t){if(this.nn||!Mt())return;t.style.scrollbarWidth="none",this.setAttribute("data-custom-scroll",""),this.nn=new _t(t,{vertical:!0,horizontal:!1});const n=this.shadowRoot.querySelector(".textarea-scroll");n&&this.nn.trackY&&n.appendChild(this.nn.trackY)}en(){this.nn&&(this.nn.trackY?.remove(),this.nn.destroy(),this.nn=null,this.removeAttribute("data-custom-scroll"),this.Qt&&(this.Qt.style.scrollbarWidth=""))}emitValueEvents(t){const n=this.value;this.$.setFormValue(n||""),this.updateValidity();const e={bubbles:!0,composed:!0,detail:{value:n,originalEvent:t}};setTimeout(()=>{this.dispatchEvent(new CustomEvent("input",e)),this.dispatchEvent(new CustomEvent("change",e))},0)}buildClassList(){const t=[this.size];this.disabled&&t.push("disabled"),this.required&&t.push("required"),this.error&&t.push("error"),"none"!==this.resize&&t.push("resize-"+this.resize);const n=this.getAttribute("class");return n&&t.push(n),t.join(" ")}applyHeightConstraints(t){this.minHeight&&(t.style.minHeight=this.minHeight),this.maxHeight&&(t.style.maxHeight=this.maxHeight)}setupTextareaEvents(t){t.addEventListener("input",this.handleInputEvent),t.addEventListener("change",this.handleInputEvent),t.addEventListener("focus",this.handleFocusEvent),t.addEventListener("blur",this.handleBlurEvent)}render(){const t=this.shadowRoot,n=t.querySelector(".textarea-container"),e=t.querySelector("label"),i=t.querySelector("textarea"),o=t.querySelector(".error-message");if(n&&i){if(this.label?e&&(e.innerHTML=this.label+(this.required?` <span class="required-icon">${qt}</span>`:""),e.style.display="block"):e&&(e.style.display="none"),i.value=this.value||"",i.placeholder=this.placeholder||"",i.disabled=this.disabled,i.required=this.required,i.className=this.buildClassList(),this.label?i.setAttribute("aria-label",this.label):i.removeAttribute("aria-label"),this.name?i.setAttribute("name",this.name):i.removeAttribute("name"),this.rows&&i.setAttribute("rows",this.rows),this.cols&&i.setAttribute("cols",this.cols),this.applyHeightConstraints(i),this.error){if(!o){const t=document.createElement("div");t.className="error-message",n.appendChild(t)}const e=t.querySelector(".error-message");e&&(e.textContent=this.error)}else o&&o.remove();const s=this.setupDummyElement(i);setTimeout(()=>this.resizeTextarea(i,s),0),this.Qt=i}else{const n=document.createElement("div");n.className="textarea-container";const e=document.createElement("label");e.className="ty-field-label",this.label?(e.innerHTML=this.label+(this.required?` <span class="required-icon">${qt}</span>`:""),e.style.display="block"):e.style.display="none";const i=document.createElement("textarea");i.value=this.value||"",i.placeholder=this.placeholder||"",i.disabled=this.disabled,i.required=this.required,i.className=this.buildClassList(),this.label&&i.setAttribute("aria-label",this.label),this.name&&i.setAttribute("name",this.name),i.setAttribute("rows",this.rows||"3"),this.cols&&i.setAttribute("cols",this.cols),this.applyHeightConstraints(i),this.setupTextareaEvents(i);const o=document.createElement("div");o.className="textarea-wrapper";const s=document.createElement("div");s.className="textarea-header";const r=document.createElement("slot");r.setAttribute("name","header"),s.appendChild(r);const a=document.createElement("div");a.className="textarea-scroll",a.appendChild(i);const l=document.createElement("div");l.className="textarea-footer";const c=document.createElement("slot");c.setAttribute("name","footer"),l.appendChild(c),o.appendChild(s),o.appendChild(a),o.appendChild(l);const d=(t,n)=>{const e=()=>n.classList.toggle("has-content",t.assignedNodes({flatten:!0}).length>0);t.addEventListener("slotchange",e),e()};if(d(r,s),d(c,l),n.appendChild(e),n.appendChild(o),this.error){const t=document.createElement("div");t.className="error-message",t.textContent=this.error,n.appendChild(t)}t.appendChild(n);const h=this.setupDummyElement(i);setTimeout(()=>this.resizeTextarea(i,h),0),this.Qt=i}this.updateValidity()}updateValidity(){const t=this.shadowRoot?.querySelector("textarea");this.disabled?this.$.setValidity({}):this.required&&""===(t?t.value:(this.value??"")+"").trim()?this.$.setValidity({valueMissing:!0},"Please fill out this field",t??void 0):this.$.setValidity({})}};At.formAssociated=!0,At.properties={value:{type:"string",visual:!0,formValue:!0,emitChange:!0,default:""},name:{type:"string",default:""},placeholder:{type:"string",visual:!0,default:""},label:{type:"string",visual:!0,default:""},disabled:{type:"boolean",visual:!0,default:!1},required:{type:"boolean",visual:!0,default:!1},error:{type:"string",visual:!0,default:""},size:{type:"string",visual:!0,default:e,validate:t=>["xs","sm","md","lg","xl"].includes(t),coerce:t=>["xs","sm","md","lg","xl"].includes(t)?t:e},rows:{type:"string",visual:!0,default:"3",coerce:t=>t+""},cols:{type:"string",visual:!0,default:"",coerce:t=>t?t+"":""},resize:{type:"string",visual:!0,default:"none",validate:t=>["none","both","horizontal","vertical"].includes(t),coerce:t=>["none","both","horizontal","vertical"].includes(t)?t:"none"},minHeight:{type:"string",visual:!0,default:""},maxHeight:{type:"string",visual:!0,default:""}};let jt=At;customElements.get("ty-textarea")||customElements.define("ty-textarea",jt);const It={"top-start":{vertical:"top",horizontal:"start"},top:{vertical:"top",horizontal:"center"},"top-end":{vertical:"top",horizontal:"end"},"right-start":{vertical:"start",horizontal:"end",orientation:"vertical"},right:{vertical:"center",horizontal:"end",orientation:"vertical"},"right-end":{vertical:"end",horizontal:"end",orientation:"vertical"},"bottom-start":{vertical:"bottom",horizontal:"start"},bottom:{vertical:"bottom",horizontal:"center"},"bottom-end":{vertical:"bottom",horizontal:"end"},"left-start":{vertical:"start",horizontal:"start",orientation:"vertical"},left:{vertical:"center",horizontal:"start",orientation:"vertical"},"left-end":{vertical:"end",horizontal:"start",orientation:"vertical"}},Lt={default:["bottom-start","bottom-end","top-start","top-end","bottom","top","left","right"]},Vt={top:"bottom",bottom:"top",left:"right",right:"left"};function Ft(t){const[n,e]=t.split("-");return{side:n,align:e}}function Ot(t){const{side:n,align:e}=Ft(t),i=Vt[n],o="top"===n||"bottom"===n?["right","left"]:["bottom","top"],s=t=>e?`${t}-${e}`:t,r=t=>e?[t,`${t}-${"start"===e?"end":"start"}`]:[t+"-start",t+"-end"];return[s(n),s(i),...r(n),...r(i),...o.flatMap(t=>[s(t),...r(t)])]}function Ht(t){if(!t)return{side:"auto",align:"start"};const{side:n,align:e}=Ft(t);return{side:"top"===n||"bottom"===n?n:"auto",align:e??"start"}}function Nt(t){const n=t.getBoundingClientRect();return{top:n.top,left:n.left,right:n.right,bottom:n.bottom,width:n.width,height:n.height,centerX:n.left+n.width/2,centerY:n.top+n.height/2}}function Pt(t){const{targetEl:n,floatingEl:e,preferences:i=Lt.default,offset:o=8,padding:s=8,containerPadding:r=0}=t,a=Nt(n),l=Nt(e),c=i.map(t=>function(t){const{targetRect:n,floatingRect:e,placement:i,offset:o,padding:s,scrollbarWidth:r,containerPadding:a}=t,l=It[i],{vertical:c,horizontal:d,orientation:h}=l,u=window.innerWidth,p=window.innerHeight;let b,v;window,window,b="vertical"===h?"start"===d?n.left-e.width-o+a:n.right+o-a:"start"===d?n.left-a:"center"===d?n.centerX-e.width/2:n.right-e.width+a,v="vertical"===h?"center"===c?n.centerY-e.height/2:"end"===c?n.bottom-e.height+a:n.top-a:"top"===c?n.top-e.height-o+a:n.bottom+o-a;const g={top:Math.min(0,v-s),left:Math.min(0,b-s),bottom:Math.min(0,p-(v+e.height+s)),right:Math.min(0,u-(b+e.width+s+r))},m=Object.values(g).reduce((t,n)=>t+Math.abs(n),0);return{x:Math.round(b),y:Math.round(v),placement:i,overflow:g,overflowAmount:m,fits:0===m}}({targetRect:a,floatingRect:l,placement:t,offset:o,padding:s,containerPadding:r,scrollbarWidth:15})),d=c.find(t=>t.fits)||c.reduce((t,n)=>t.overflowAmount>n.overflowAmount?n:t);return 0>d.overflow.right&&(d.x+=d.overflow.right),d}function Wt(t){const n=t.gap??4,e=t.padding??8,i=window.innerWidth,o=window.innerHeight,s=o-t.anchorRect.bottom,r=t.anchorRect.top,a=t.popupHeight+n+e,l=s>=a,c=r>=a,d=t.side??"auto",h="bottom"===d?!(!l&&c):"top"===d?!(c||!l):l||s>=r;return{x:Math.max(e,Math.min("end"===t.align?t.anchorRect.right-t.popupWidth:"center"===t.align?t.anchorRect.left+(t.anchorRect.width-t.popupWidth)/2:t.anchorRect.left,i-t.popupWidth-e)),topY:t.anchorRect.bottom+n,bottomY:o-t.anchorRect.top+n,below:h}}const Bt={id:"ty-tooltip",css:"\n:host {\ndisplay: contents;\n}\n"},Rt=new WeakMap,Yt=new WeakMap,Ut=new WeakMap,Xt=new WeakMap,Kt=new WeakMap;function Zt(t){const n=t||"dark",e=n.replace(/[+-]$/,"");return/^[A-Za-z][A-Za-z0-9_-]*$/.test(e)?n:"dark"}function Jt(t){let n=Ut.get(t);return n||(n={showTimeout:null,hideTimeout:null},Ut.set(t,n)),n}function Gt(t,n){return t.hasAttribute(n)}function Qt(t,n,e){const i=t.getAttribute(n);if(null===i)return e;const o=parseInt(i,10);return isNaN(o)?e:o}function tn(t){return{placement:t.getAttribute("placement")||"top",offset:Qt(t,"offset",8),delay:Qt(t,"delay",600),disabled:Gt(t,"disabled"),flavor:Zt(t.getAttribute("flavor"))}}function nn(t){return t.parentElement}function en(t){!function(){if(document.getElementById("ty-tooltip-motion"))return;const t=document.createElement("style");t.id="ty-tooltip-motion",t.textContent='\n.ty-tooltip-popover:popover-open {\ntransition:\nopacity var(--ty-tooltip-duration, 120ms) ease-out,\ntranslate var(--ty-tooltip-duration, 120ms) ease-out;\n}\n@starting-style {\n.ty-tooltip-popover:popover-open { opacity: 0; translate: 0 4px; }\n.ty-tooltip-popover:popover-open[data-side="bottom"] { translate: 0 -4px; }\n.ty-tooltip-popover:popover-open[data-side="left"] { translate: 4px 0; }\n.ty-tooltip-popover:popover-open[data-side="right"] { translate: -4px 0; }\n}\n',document.head.appendChild(t)}();let n=Xt.get(t);if(!n){n=document.createElement("div"),n.id="ty-tooltip-"+Math.random().toString(36).slice(2,11),n.setAttribute("popover","manual"),n.setAttribute("role","tooltip"),n.className="ty-tooltip-popover",n.style.cssText="\nposition: fixed;\nmargin: 0;\npadding: 8px 12px;\nbackground: var(--ty-tooltip-bg, #262626);\ncolor: var(--ty-tooltip-color, #f5f5f5);\nborder: none;\nborder-radius: 6px;\nfont-size: var(--ty-font-xs, 12px);\nfont-weight: var(--ty-font-semibold, 600);\nline-height: 1.5;\nmax-width: 250px;\ntext-align: center;\nbox-shadow: 0 10px 15px -3px rgba(0, 0, 0, 0.2), 0 4px 6px -4px rgba(0, 0, 0, 0.1);\nuser-select: none;\npointer-events: none;\n",document.body.appendChild(n),Xt.set(t,n);const e=Kt.get(t);e&&function(t,n){const e=(t.getAttribute("aria-describedby")||"").split(/\s+/).filter(Boolean);e.includes(n)||(e.push(n),t.setAttribute("aria-describedby",e.join(" ")))}(e,n.id)}const{flavor:e}=tn(t);return n.setAttribute("data-flavor",e),n.innerHTML=t.innerHTML,on(n,e),n}function on(t,n){switch(t.style.removeProperty("background"),t.style.removeProperty("color"),t.style.removeProperty("border-color"),n){case"dark":t.style.background="var(--ty-tooltip-bg, #262626)",t.style.color="var(--ty-tooltip-color, #f5f5f5)",t.style.borderColor="var(--ty-tooltip-border, #404040)";break;case"light":t.style.background="var(--ty-surface-elevated, #ffffff)",t.style.color="var(--ty-text-strong, #111827)",t.style.borderColor="var(--ty-border, #e5e7eb)";break;case"info":t.style.background="var(--ty-bg-info, #06b6d4)",t.style.color="var(--ty-text-strong, #f0f9ff)",t.style.borderColor="var(--ty-border-info, #22d3ee)";break;default:{const e=n.replace(/[+-]$/,""),i=n.slice(e.length);t.style.background=`var(--ty-bg-${e}${"+"===i?"-bold":"-"===i?"-soft":""}, var(--ty-bg-neutral))`,t.style.color=`var(--ty-color-${e}-strong, var(--ty-color-neutral-strong))`,t.style.borderColor=`var(--ty-border-${e}, var(--ty-color-${e}))`;break}}}function sn(t){const{placement:n,offset:e}=tn(t),i=nn(t),o=Xt.get(t);if(!i||!o)return;const s=Pt({targetEl:i,floatingEl:o,preferences:Ot(n),offset:e});o.style.left=s.x+"px",o.style.top=s.y+"px",o.dataset.side=s.placement.split("-")[0]}function rn(t){const n=Rt.get(t);n&&(n(),Rt.delete(t))}function an(t){const n=Jt(t);null!==n.showTimeout&&(clearTimeout(n.showTimeout),n.showTimeout=null),null!==n.hideTimeout&&(clearTimeout(n.hideTimeout),n.hideTimeout=null)}function ln(t){const n=Xt.get(t);if(n)try{n.hidePopover(),t.rn=!1,rn(t)}catch(e){}}function cn(t){const n=Jt(t),{delay:e}=tn(t);an(t),n.showTimeout=window.setTimeout(()=>function(t){const{disabled:n}=tn(t);if(n)return;const e=en(t);try{e.showPopover(),t.rn=!0,sn(t),function(t){const n=nn(t),e=Xt.get(t);if(!n||!e)return;let i=null;const o=()=>{null!==i&&clearTimeout(i),i=window.setTimeout(()=>{i=null,sn(t)},10)},s=new ResizeObserver(o);s.observe(n),s.observe(e);let r=null;const a=()=>{null===r&&(r=requestAnimationFrame(()=>{r=null,sn(t)}))};window.addEventListener("scroll",a,!0),window.addEventListener("resize",o),Rt.set(t,()=>{s.disconnect(),window.removeEventListener("scroll",a,!0),window.removeEventListener("resize",o),null!==i&&clearTimeout(i),null!==r&&cancelAnimationFrame(r)})}(t)}catch(i){}}(t),e)}function dn(t){const n=Jt(t);an(t),n.hideTimeout=window.setTimeout(()=>ln(t),200)}class TyTooltip extends HTMLElement{constructor(){super(),this.rn=!1,this.attachShadow({mode:"open"})}static get observedAttributes(){return["placement","offset","delay","disabled","flavor"]}connectedCallback(){this.rn=!1,a(this.shadowRoot,Bt),function(t){const n=nn(t);if(!n)return;Kt.set(t,n);const e=()=>cn(t),i=()=>dn(t),o=()=>cn(t),s=()=>dn(t);n.addEventListener("mouseenter",e),n.addEventListener("mouseleave",i),n.addEventListener("focusin",o),n.addEventListener("focusout",s),Yt.set(t,()=>{n.removeEventListener("mouseenter",e),n.removeEventListener("mouseleave",i),n.removeEventListener("focusin",o),n.removeEventListener("focusout",s)})}(this),en(this)}disconnectedCallback(){!function(t){an(t),rn(t);const n=Yt.get(t);n&&(n(),Yt.delete(t));const e=Xt.get(t),i=Kt.get(t);e&&i&&function(t,n){const e=(t.getAttribute("aria-describedby")||"").split(/\s+/).filter(t=>t&&t!==n);e.length>0?t.setAttribute("aria-describedby",e.join(" ")):t.removeAttribute("aria-describedby")}(i,e.id),e&&(e.remove(),Xt.delete(t)),Kt.delete(t),Ut.delete(t)}(this)}attributeChangedCallback(t,n,e){if("flavor"===t){const t=Xt.get(this);t&&on(t,Zt(e))}"disabled"===t&&null!==e&&ln(this)}}customElements.get("ty-tooltip")||customElements.define("ty-tooltip",TyTooltip);const hn={locked:!1,scrollY:0,activeLocks:new Set};function un(){return document.documentElement}function pn(){if(!hn.locked)return;const t=un();window,t.classList.remove("ty-scroll-locked"),t.style.overflow="",t.style.paddingRight="",hn.locked=!1}function bn(t){hn.activeLocks.has(t)||(hn.activeLocks.add(t),1===hn.activeLocks.size&&function(){if(hn.locked)return;const t=window.innerWidth-un().clientWidth,n=un();window,hn.scrollY=window.scrollY||un().scrollTop||0,hn.locked=!0,n.style.overflow="hidden",t>0&&(n.style.paddingRight=t+"px"),n.classList.add("ty-scroll-locked")}())}function vn(t){hn.activeLocks.has(t)&&(hn.activeLocks.delete(t),0===hn.activeLocks.size&&pn())}const gn=new WeakMap,mn=new WeakMap,yn=new WeakMap,fn=new WeakMap,wn=new WeakMap,xn=new WeakMap;function kn(t,n){return t.hasAttribute(n)}function $n(t,n,e){const i=t.getAttribute(n);if(null===i)return e;const o=parseInt(i,10);return isNaN(o)?e:o}function zn(t){return{manual:kn(t,"manual"),disableClose:kn(t,"disable-close"),placement:t.getAttribute("placement")||"bottom",offset:$n(t,"offset",8)}}function Cn(t){return t.parentElement}function En(t){return t.querySelector(".popup-dialog")}function Tn(t){let n=xn.get(t);return n||(n="popup-"+(t.id||Math.random().toString(36).substr(2,9)),xn.set(t,n)),n}function Sn(t,n=!1){const{disableClose:e}=zn(t);if(!n&&e)return;const i=t.shadowRoot,o=i?En(i):null;if(!o)return;o.classList.remove("open"),o.classList.remove("preparing-animation");const s=Cn(t);s?.hasAttribute("aria-haspopup")&&s.setAttribute("aria-expanded","false"),setTimeout(()=>{o.classList.remove("position-calculated"),o.close()},200)}function Mn(t){bn(Tn(t));const n=t.shadowRoot,e=n?En(n):null;if(!e)return;e.showModal();const i=Cn(t);i?.hasAttribute("aria-haspopup")&&i.setAttribute("aria-expanded","true"),requestAnimationFrame(()=>{!function(t){const{placement:n,offset:e}=zn(t),i=t.shadowRoot,o=Cn(t),s=i?En(i):null;if(!o||!s)return;const r=Pt({targetEl:o,floatingEl:s,preferences:Ot(n),offset:e,padding:8,containerPadding:16});t.style.setProperty("--popup-x",r.x+"px"),t.style.setProperty("--popup-y",r.y+"px"),s.dataset.side=r.placement.split("-")[0],s.classList.add("position-calculated")}(t),e.classList.add("preparing-animation"),requestAnimationFrame(()=>{e.classList.add("open"),t.dispatchEvent(new CustomEvent("open"))})})}function _n(t){const n=t.shadowRoot,e=n?En(n):null;e&&(e.classList.contains("open")?Sn(t):Mn(t))}function Dn(t,n){n.preventDefault(),n.stopPropagation(),_n(t)}function qn(t){const{manual:n}=zn(t),e=Cn(t);if(!e||n)return;e.setAttribute("aria-haspopup","dialog"),e.hasAttribute("aria-expanded")||e.setAttribute("aria-expanded","false");const i=gn.get(t);i&&e.removeEventListener("pointerdown",i);const o=mn.get(t);o&&e.removeEventListener("click",o);const s=n=>Dn(t,n);gn.set(t,s),e.addEventListener("pointerdown",s);const r=n=>{0===n.detail&&Dn(t,n)};mn.set(t,r),e.addEventListener("click",r)}function An(t){const n=Cn(t),e=gn.get(t);n&&e&&(n.removeEventListener("pointerdown",e),gn.delete(t));const i=mn.get(t);n&&i&&(n.removeEventListener("click",i),mn.delete(t)),n?.removeAttribute("aria-haspopup"),n?.removeAttribute("aria-expanded")}function jn(t){const n=t.shadowRoot;if(!n)return;const e=En(n);if(a(n,{css:'\n.popup-dialog {\nposition: fixed;\ntop: 0;\nleft: 0;\nmargin: 0;\nborder: none;\nbackground: transparent;\nmax-width: none;\nmax-height: none;\npadding: var(--popup-padding, 16px);\nvisibility: hidden;\nopacity: 0;\ntransition:\nopacity var(--ty-popup-duration, 180ms) var(--ty-popup-ease, cubic-bezier(0.34, 1.56, 0.64, 1)),\nvisibility var(--ty-popup-duration, 180ms) var(--ty-popup-ease, cubic-bezier(0.34, 1.56, 0.64, 1)),\ntransform var(--ty-popup-duration, 180ms) var(--ty-popup-ease, cubic-bezier(0.34, 1.56, 0.64, 1));\npointer-events: none;\n}\n.popup-dialog.position-calculated {\ntop: var(--popup-y, 0px);\nleft: var(--popup-x, 0px);\n}\n.popup-dialog.preparing-animation {\ntransform: scale(0.96);\n}\n.popup-dialog[data-side="bottom"].preparing-animation:not(.open) {\ntransform: translateY(-6px) scale(0.96);\n}\n.popup-dialog[data-side="top"].preparing-animation:not(.open) {\ntransform: translateY(6px) scale(0.96);\n}\n.popup-dialog[data-side="left"].preparing-animation:not(.open) {\ntransform: translateX(6px) scale(0.96);\n}\n.popup-dialog[data-side="right"].preparing-animation:not(.open) {\ntransform: translateX(-6px) scale(0.96);\n}\n.popup-dialog.open {\nvisibility: visible;\nopacity: 1;\ntransform: scale(1);\npointer-events: auto;\n}\n.popup-dialog::backdrop {\nbackground: transparent;\n}\n.popup-container {\ndisplay: contents;\n}\n#popup-content {\ndisplay: contents;\n}\n#popup-content ::slotted(*) {\nposition: relative;\nmax-width: min(400px, 90vw);\nmax-height: min(500px, 80vh);\noverflow: auto;\n}\n',id:"ty-popup"}),!e){const e=document.createElement("dialog"),i=document.createElement("div"),o=document.createElement("slot");e.className="popup-dialog",i.className="popup-container",o.id="popup-content",n.appendChild(e),e.appendChild(i),i.appendChild(o),t.style.setProperty("--popup-x","0px"),t.style.setProperty("--popup-y","0px");const s=n=>function(t,n){n.stopPropagation();const e=t.shadowRoot,i=e?En(e):null;i&&n.target===i&&(n.preventDefault(),Sn(t))}(t,n);yn.set(t,s),e.addEventListener("pointerdown",s);const r=n=>function(t,n){if(n.stopPropagation(),"Escape"===n.key){const{disableClose:e}=zn(t);e?n.preventDefault():Sn(t)}}(t,n);fn.set(t,r),t.addEventListener("keydown",r),e.addEventListener("close",()=>{vn(Tn(t)),e.classList.remove("open"),e.classList.remove("preparing-animation"),t.dispatchEvent(new CustomEvent("close"))})}t.closePopup=()=>Sn(t,!0),t.openPopup=()=>Mn(t),t.togglePopup=()=>_n(t);const i=n=>function(t,n){n.stopPropagation(),Sn(t,!0)}(t,n);wn.set(t,i),t.addEventListener("ty:close-popup",i),qn(t)}class TyPopup extends HTMLElement{static get observedAttributes(){return["manual","disable-close","placement","offset"]}constructor(){super(),this.attachShadow({mode:"open"})}connectedCallback(){jn(this)}disconnectedCallback(){!function(t){const n=xn.get(t);n&&(vn(n),xn.delete(t)),An(t);const e=t.shadowRoot,i=e?En(e):null;if(i){const n=yn.get(t);n&&(i.removeEventListener("pointerdown",n),yn.delete(t))}const o=fn.get(t);o&&(t.removeEventListener("keydown",o),fn.delete(t));const s=wn.get(t);s&&(t.removeEventListener("ty:close-popup",s),wn.delete(t))}(this)}attributeChangedCallback(t,n,e){switch(jn(this),t){case"placement":case"offset":jn(this);break;case"manual":case"disable-close":An(this),qn(this)}}}customElements.get("ty-popup")||customElements.define("ty-popup",TyPopup);const In=new WeakMap,Ln=new WeakMap,Vn=new WeakMap,Fn=new WeakMap,On=new WeakMap,Hn=new WeakMap,Nn=new WeakMap;function Pn(t,n){if(!t.hasAttribute(n))return!1;const e=t.getAttribute(n);return null===e||"false"!==e.toLowerCase()}function Wn(t){return{open:Pn(t,"open"),backdrop:!t.hasAttribute("backdrop")||Pn(t,"backdrop"),closeOnOutsideClick:!Pn(t,"prevent-outside-click")&&(!t.hasAttribute("close-on-outside-click")||Pn(t,"close-on-outside-click")),closeOnEscape:!Pn(t,"prevent-escape")&&(!t.hasAttribute("close-on-escape")||Pn(t,"close-on-escape"))}}function Bn(t){return t.querySelector(".ty-modal-dialog")}function Rn(t,n,e){const i=new CustomEvent(n,{detail:e,cancelable:!0});t.dispatchEvent(i)}function Yn(t,n="programmatic",e){const i=t.shadowRoot,o=i?Bn(i):null;if(o&&o.open){if(!e?.force){const e=new CustomEvent("beforeclose",{detail:{reason:n},cancelable:!0});if(t.dispatchEvent(e),e.defaultPrevented)return}Nn.set(t,n),t.removeAttribute("open")}}function Un(t){const n=t.shadowRoot;if(!n)return;const e=Wn(t),i=function(t){let n=Bn(t);if(!n){n=document.createElement("dialog");const e=document.createElement("button"),i=document.createElement("div"),o=document.createElement("slot");n.className="ty-modal-dialog",e.className="close-button",e.type="button",e.setAttribute("aria-label","Close modal"),e.innerHTML='<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-x-icon lucide-x"><path d="M18 6 6 18"/><path d="m6 6 12 12"/></svg>',i.className="modal-content",i.appendChild(o),n.appendChild(e),n.appendChild(i),t.appendChild(n)}return n}(n),o=function(t){let n=Hn.get(t);return n||(n="modal-"+(t.id||Math.random().toString(36).slice(2,11)),Hn.set(t,n)),n}(t);a(n,{css:"\n:host {\ndisplay: contents;\n}\n.close-button {\nposition: absolute;\ntop: -8px;\nright: -8px;\nbackground: transparent;\nborder: none;\ncursor: pointer;\npadding: 4px;\nborder-radius: 4px;\ntransition: var(--ty-transition-colors);\nz-index: 1;\ncolor: #d8d8d8;\noutline: none;\nbox-shadow: none;\n-webkit-appearance: none;\n-moz-appearance: none;\nappearance: none;\n-webkit-tap-highlight-color: transparent;\n-webkit-touch-callout: none;\n-webkit-user-select: none;\n-moz-user-select: none;\n-ms-user-select: none;\nuser-select: none;\n}\n.close-button:hover {\ncolor: white;\n}\n.close-button:focus,\n.close-button:focus-visible,\n.close-button:focus-within,\n.close-button:active {\noutline: none !important;\nbox-shadow: none !important;\nborder: none !important;\nbackground: transparent !important;\n}\n.close-button:hover,\n.close-button:focus:hover,\n.close-button:active:hover {\ncolor: white;\n}\n.close-button.hide {\nvisibility: hidden;\n}\n.ty-modal-dialog {\npadding: 18px;\nborder: none;\nmargin: 0;\nbackground: transparent;\nposition: fixed;\ntop: 50%;\nleft: 50%;\ntransform: translate(-50%, -50%);\nz-index: 1000;\noverflow: hidden;\nmax-width: 85vw;\nmax-height: 90vh;\noutline: none;\n}\n.ty-modal-dialog[open] {\nanimation: ty-modal-enter var(--ty-modal-duration, 200ms) ease-out;\n}\n@keyframes ty-modal-enter {\nfrom {\nopacity: 0;\ntransform: translate(-50%, -50%) scale(0.93);\n}\nto {\nopacity: 1;\ntransform: translate(-50%, -50%) scale(1);\n}\n}\n.ty-modal-dialog::backdrop {\nbackground: var(--ty-modal-backdrop, rgba(0, 0, 0, 0.5));\nbackdrop-filter: var(--ty-modal-backdrop-blur, blur(2px));\nanimation: ty-modal-backdrop-enter var(--ty-modal-duration, 200ms) ease-out;\n}\n.ty-modal-dialog:not([data-backdrop])::backdrop {\nbackground: transparent;\nbackdrop-filter: none;\n}\n.modal-content {\ncolor: var(--ty-text);\n}\n@keyframes ty-modal-backdrop-enter {\nfrom {\nopacity: 0;\n}\nto {\nopacity: 1;\n}\n}\n",id:"ty-modal"}),i.className="ty-modal-dialog",e.backdrop?i.setAttribute("data-backdrop","true"):i.removeAttribute("data-backdrop");const s=t.getAttribute("label");if(s?i.setAttribute("aria-label",s):i.removeAttribute("aria-label"),function(t,n,e){const i=In.get(t);if(i&&(n.removeEventListener("click",i),In.delete(t)),e){const e=n=>function(t,n){n.stopPropagation();const e=t.shadowRoot,i=e?Bn(e):null;i&&n.target===i&&(n.preventDefault(),Yn(t,"backdrop"))}(t,n);In.set(t,e),n.addEventListener("click",e)}}(t,i,e.closeOnOutsideClick),function(t,n,e){const i=Ln.get(t);if(i&&(n.removeEventListener("keydown",i),Ln.delete(t)),e){const e=n=>function(t,n){n.stopPropagation(),"Escape"===n.key&&(n.preventDefault(),Yn(t,"escape"))}(t,n);Ln.set(t,e),n.addEventListener("keydown",e)}else{const e=t=>{"Escape"===t.key&&t.preventDefault()};Ln.set(t,e),n.addEventListener("keydown",e)}}(t,i,e.closeOnEscape),i.oncancel=n=>{n.preventDefault(),Wn(t).closeOnEscape&&Yn(t,"escape")},function(t,n,e){const i=n.querySelector(".close-button");if(!i)return;i.style.display=e?"":"none";const o=Vn.get(t);if(o&&(i.removeEventListener("click",o),Vn.delete(t)),e){const n=n=>function(t,n){n.preventDefault(),n.stopPropagation(),Yn(t,"close-button")}(t,n);Vn.set(t,n),i.addEventListener("click",n)}}(t,i,e.closeOnOutsideClick),function(t,n){const e=n.querySelector(".modal-content");if(!e)return;const i=Fn.get(t),o=On.get(t);if(i&&(e.removeEventListener("mouseenter",i),Fn.delete(t)),o&&(e.removeEventListener("mouseleave",o),On.delete(t)),window.innerWidth>=768&&0>=navigator.maxTouchPoints){const n=t=>function(t,n){const e=n.currentTarget.closest(".ty-modal-dialog");if(e){const t=e.querySelector(".close-button");t&&t.classList.add("hide")}}(0,t),i=t=>function(t,n){const e=n.currentTarget.closest(".ty-modal-dialog");if(e){const t=e.querySelector(".close-button");t&&t.classList.remove("hide")}}(0,t);Fn.set(t,n),On.set(t,i),e.addEventListener("mouseenter",n),e.addEventListener("mouseleave",i)}}(t,i),e.open)i.open||(bn(o),e.backdrop?i.showModal():i.show(),Xn(),Rn(t,"open",{}));else if(i.open){vn(o),i.close(),Xn();const n=Nn.get(t)??"programmatic";Nn.delete(t),Rn(t,"close",{reason:n})}i.onclose=n=>{n.target===i&&(vn(o),t.hasAttribute("open")&&(t.removeAttribute("open"),Rn(t,"close",{reason:"native",returnValue:i.returnValue||void 0})),Xn())}}function Xn(){const t=Array.from(document.querySelectorAll("ty-modal[open][backdrop-zoom], ty-dialog[open][backdrop-zoom]")).some(t=>{const n=t.getAttribute("backdrop-zoom").toLowerCase().trim();return"false"!==n&&"0"!==n});document.documentElement.classList.toggle("ty-modal-zoom",t)}class TyModal extends HTMLElement{static get observedAttributes(){return["open","backdrop","close-on-outside-click","close-on-escape","prevent-outside-click","prevent-escape","label"]}get open(){return Pn(this,"open")}set open(t){t?this.setAttribute("open","true"):this.removeAttribute("open")}get backdrop(){return Wn(this).backdrop}set backdrop(t){this.setAttribute("backdrop",!!t+"")}get closeOnOutsideClick(){return Wn(this).closeOnOutsideClick}set closeOnOutsideClick(t){this.setAttribute("close-on-outside-click",!!t+"")}get closeOnEscape(){return Wn(this).closeOnEscape}set closeOnEscape(t){this.setAttribute("close-on-escape",!!t+"")}get preventOutsideClick(){return Pn(this,"prevent-outside-click")}set preventOutsideClick(t){t?this.setAttribute("prevent-outside-click",""):this.removeAttribute("prevent-outside-click")}get preventEscape(){return Pn(this,"prevent-escape")}set preventEscape(t){t?this.setAttribute("prevent-escape",""):this.removeAttribute("prevent-escape")}constructor(){super(),this.attachShadow({mode:"open"})}connectedCallback(){Un(this),this.show=()=>{this.setAttribute("open","true")},this.hide=t=>Yn(this,"programmatic",t)}disconnectedCallback(){!function(t){const n=Hn.get(t),e=t.shadowRoot,i=e?Bn(e):null;if(n&&(vn(n),Hn.delete(t)),Xn(),!i)return;const o=In.get(t);o&&(i.removeEventListener("click",o),In.delete(t));const s=Ln.get(t);s&&(i.removeEventListener("keydown",s),Ln.delete(t));const r=i.querySelector(".close-button");if(r){const n=Vn.get(t);n&&(r.removeEventListener("click",n),Vn.delete(t))}const a=i.querySelector(".modal-content");if(a){const n=Fn.get(t),e=On.get(t);n&&(a.removeEventListener("mouseenter",n),Fn.delete(t)),e&&(a.removeEventListener("mouseleave",e),On.delete(t))}}(this)}attributeChangedCallback(t,n,e){this.isConnected&&Un(this)}}customElements.get("ty-modal")||customElements.define("ty-modal",TyModal),customElements.get("ty-dialog")||customElements.define("ty-dialog",class extends TyModal{});const Kn=(t,n)=>{const e=e=>n?e?`var(--ty-color-${t}${e}, var(--ty-color-${t}, var(--ty-color-${n}${e})))`:`var(--ty-color-${t}, var(--ty-color-${n}))`:e?`var(--ty-color-${t}${e}, var(--ty-color-${t}))`:`var(--ty-color-${t})`;return`\n:host([flavor="${t}"]) {\n--select-accent: var(--ty-input-${t}-border, ${e("-soft")});\n--select-accent-bold: ${e("")};\n--select-ring: color-mix(in oklab, ${e("")} 15%, transparent);\n}\n:host([flavor="${t}+"]) {\n--select-accent: ${e("")};\n--select-accent-bold: ${e("-strong")};\n--select-ring: color-mix(in oklab, ${e("-strong")} 15%, transparent);\n}\n:host([flavor="${t}-"]) {\n--select-accent: ${e("-faint")};\n--select-accent-bold: ${e("-soft")};\n--select-ring: color-mix(in oklab, ${e("-soft")} 15%, transparent);\n}\n`},Zn=`\n${K}\n:host {\ndisplay: block;\nwidth: 100%;\nfont-family: inherit;\n--mobile-border-color: var(--ty-border, #5858587d);\n}\n:host([compact]) {\ndisplay: inline-block;\nwidth: auto;\n}\n:host([has-trigger]) {\ndisplay: inline-block;\nwidth: auto;\n}\n.dropdown-dialog {\nposition: fixed;\nwidth: var(--dropdown-width, 200px);\nmax-width: 100vw;\nmargin: 0;\npadding: 0;\nborder: none;\nbackground: transparent;\nbox-sizing: border-box;\npadding: var(--dropdown-padding, 20px);\nopacity: 0;\nscale: 0.96;\ntranslate: 0 -6px;\ntransform-origin: top center;\ntransition:\nopacity var(--ty-popup-duration, 180ms) var(--ty-popup-ease, cubic-bezier(0.34, 1.56, 0.64, 1)),\nscale var(--ty-popup-duration, 180ms) var(--ty-popup-ease, cubic-bezier(0.34, 1.56, 0.64, 1)),\ntranslate var(--ty-popup-duration, 180ms) var(--ty-popup-ease, cubic-bezier(0.34, 1.56, 0.64, 1));\ntransform: translate(var(--dropdown-offset-x, 0px), var(--dropdown-offset-y, 0px));\ntop: -1000px;\nleft: -1000px;\n}\n.dropdown-dialog[open] {\ndisplay: flex;\nflex-direction: column;\n}\n.dropdown-dialog.position-below {\nleft: var(--dropdown-x);\ntop: var(--dropdown-y);\n}\n.dropdown-dialog.position-above {\nleft: var(--dropdown-x);\nbottom: var(--dropdown-y);\ntop: auto;\nflex-direction: column-reverse;\ntranslate: 0 6px;\ntransform-origin: bottom center;\n}\n.dropdown-dialog.position-above .dropdown-header {\nmargin-top: 4px;\n}\n.dropdown-dialog.position-below .dropdown-header {\nmargin-bottom: 4px;\n}\n.dropdown-dialog.position-below .dropdown-options {\nbox-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -2px rgba(0, 0, 0, 0.1), var(--ty-shadow-md);\n}\n.dropdown-dialog.position-above .dropdown-options {\ntransform: translateY(6px) scale(0.96);\ntransform-origin: bottom center;\n}\n.dropdown-dialog.open {\nopacity: 1;\nscale: 1;\ntranslate: 0 0;\n}\n.dropdown-dialog.open .dropdown-options {\nopacity: 1;\ntransform: translateY(0) scale(1);\n}\n@starting-style {\n.dropdown-dialog.open {\nopacity: 0;\nscale: 0.96;\ntranslate: 0 -6px;\n}\n.dropdown-dialog.open.position-above {\ntranslate: 0 6px;\n}\n.dropdown-dialog.open .dropdown-options {\nopacity: 0;\ntransform: translateY(-6px) scale(0.96);\n}\n.dropdown-dialog.open.position-above .dropdown-options {\ntransform: translateY(6px) scale(0.96);\n}\n}\n.dropdown-dialog::backdrop {\nbackground: transparent;\n}\n.dropdown-header {\ndisplay: flex;\nalign-items: center;\ngap: var(--ty-spacing-2);\nposition: relative;\n}\n.dropdown-search-input {\nfont-family: inherit;\nwidth: 100%;\nmin-width: 0;\nbox-sizing: border-box;\nbackground: var(--input-bg, var(--ty-input-bg));\ncolor: var(--input-color, var(--ty-input-color));\nborder: 1px solid var(--input-border, var(--ty-input-border));\nborder-radius: var(--ty-radius-md);\nfont-family: inherit;\nfont-size: var(--ty-font-sm);\nline-height: var(--ty-leading-sm);\nletter-spacing: var(--ty-tracking-sm);\nfont-weight: var(--ty-font-normal);\nmin-height: var(--ty-size-md);\npadding: var(--ty-spacing-2) var(--ty-spacing-3);\npadding-right: calc(var(--ty-spacing-3) + 1rem + var(--ty-spacing-2));\ntransition: var(--ty-transition-all);\noutline: none;\n}\n.dropdown-search-input:focus {\nborder-color: var(--input-border-focus, var(--ty-input-border-focus));\nbox-shadow: 0 0 0 3px var(--input-shadow-focus, var(--ty-input-shadow-focus));\n}\n.dropdown-search-input:disabled {\nbackground-color: var(--input-disabled-bg, var(--ty-input-disabled-bg));\ncolor: var(--input-disabled-color, var(--ty-input-disabled-color));\ncursor: not-allowed;\nopacity: 0.6;\n}\n.dropdown-search-input::placeholder {\ncolor: var(--input-placeholder, var(--ty-input-placeholder));\n}\n.dropdown-search-chevron {\nposition: absolute;\ntop: 50%;\nright: var(--ty-spacing-3);\ntransform: translateY(-50%);\nwidth: 1rem;\nheight: 1rem;\ncolor: var(--input-placeholder, var(--ty-input-placeholder));\ntransition: var(--ty-transition-transform);\npointer-events: none;\n}\n.dropdown-search-chevron.open {\ntransform: translateY(-50%) rotate(180deg);\n}\n.dropdown-search-chevron svg {\nwidth: 100%;\nheight: 100%;\n}\n.select-stub {\nmin-height: var(--ty-size-md);\ndisplay: flex;\nflex-wrap: wrap;\ngap: 0.25rem;\nalign-items: center;\npadding: 0 2.5rem 0 0.75rem;\ntransition: var(--ty-transition-all), opacity 0.2s ease;\noutline: none;\nbackground: var(--input-bg, var(--ty-input-bg));\ncolor: var(--input-color, var(--ty-input-color));\nborder: 1px solid var(--select-accent, var(--input-border, var(--ty-input-border)));\nborder-radius: var(--ty-radius-md);\nfont-family: inherit;\nfont-size: var(--ty-field-font);\nline-height: var(--ty-field-leading);\nletter-spacing: var(--ty-field-tracking);\ncursor: pointer;\nposition: relative;\nwidth: 100%;\nbox-sizing: border-box;\n}\n.select-stub {\nmin-height: var(--ty-field-height);\npadding: 0 2.5rem 0 var(--ty-field-pad-x);\n}\n.select-stub:hover {\nborder-color: var(--select-accent-bold, var(--input-border-hover, var(--ty-input-border-hover)));\n}\n.select-stub[disabled] {\nbackground-color: var(--input-disabled-bg, var(--ty-input-disabled-bg));\ncolor: var(--input-disabled-color, var(--ty-input-disabled-color));\ncursor: not-allowed;\nopacity: 0.6;\n}\n.dropdown-wrapper:has(.dropdown-chevron.open) .select-stub {\nopacity: 0;\npointer-events: none;\n}\n.dropdown-wrapper:has(.dropdown-chevron.open):not(:has(.dropdown-search-input:focus)) .select-stub:not(.custom-trigger),\n.select-stub:focus,\n.select-stub:focus-visible {\nborder-color: var(--select-accent-bold, var(--input-border-focus, var(--ty-input-border-focus)));\nbox-shadow: 0 0 0 3px var(--select-ring, var(--input-shadow-focus, var(--ty-input-shadow-focus)));\n}\n.select-stub.custom-trigger {\nmin-height: 0;\npadding: 0;\nborder: none;\nbackground: transparent;\n}\n.select-stub.custom-trigger:hover,\n.dropdown-wrapper:has(.dropdown-chevron.open) .select-stub.custom-trigger,\n.select-stub.custom-trigger:focus,\n.select-stub.custom-trigger:focus-visible {\nborder-color: transparent;\nbox-shadow: none;\n}\n.dropdown-mode-mobile .dropdown-wrapper:has(.mobile-dialog[open]) .select-chips {\ndisplay: none;\n}\n.select-stub.has-tags {\npadding: 0.25rem 2.5rem 0.25rem 0.5rem;\nwidth: 100%;\n}\n.select-stub.has-tags slot[name="selected"] {\ndisplay: flex;\nflex-wrap: wrap;\ngap: 0.25rem;\n}\n.dropdown-chevron {\nposition: absolute;\ntop: 50%;\nright: var(--ty-spacing-3);\ntransform: translateY(-50%);\nwidth: 1rem;\nheight: 1rem;\ncolor: var(--input-placeholder, var(--ty-input-placeholder));\ntransition: var(--ty-transition-transform);\npointer-events: none;\n}\n.dropdown-chevron.open {\ntransform: translateY(-50%) rotate(180deg);\n}\n.dropdown-chevron svg {\nwidth: 100%;\nheight: 100%;\n}\n.select-chips {\ndisplay: flex;\nflex-wrap: wrap;\ngap: 0.5rem;\nalign-items: center;\nmin-width: 0;\n}\n.dropdown-placeholder {\ncolor: var(--input-placeholder, var(--ty-input-placeholder, #9ca3af));\nfont-size: var(--ty-field-font);\nline-height: var(--ty-field-leading);\nletter-spacing: var(--ty-field-tracking);\nfont-weight: var(--ty-font-light);\nfont-style: italic;\n}\n.dropdown-placeholder.hidden {\ndisplay: none;\n}\n.dropdown-options {\nopacity: 0;\nbackground: var(--ty-surface-floating);\nborder: 1px solid var(--ty-floating-border);\nborder-radius: var(--ty-radius-lg);\nmax-height: 16rem;\nwidth: 100%;\nmax-width: 100%;\noverflow-x: hidden;\noverflow-y: auto;\nscroll-behavior: smooth;\nbox-sizing: border-box;\nposition: relative;\nbox-shadow:\n0 20px 25px -5px rgba(0, 0, 0, 0.1),\n0 10px 10px -5px rgba(0, 0, 0, 0.04);\ntransform: translateY(-6px) scale(0.96);\ntransform-origin: top center;\ntransition:\nopacity var(--ty-popup-duration, 180ms) var(--ty-popup-ease, cubic-bezier(0.34, 1.56, 0.64, 1)),\ntransform var(--ty-popup-duration, 180ms) var(--ty-popup-ease, cubic-bezier(0.34, 1.56, 0.64, 1));\ndisplay: flex;\nflex-wrap: wrap;\npadding: 0.5rem;\ngap: 0.5rem;\n}\n.dropdown-options.ty-custom-scroll {\nscrollbar-width: none;\n-ms-overflow-style: none;\n}\n.dropdown-options.ty-custom-scroll::-webkit-scrollbar {\ndisplay: none;\n}\n.dropdown-options-wrapper {\nposition: relative;\n}\n.dropdown-options-wrapper:hover .ty-scrollbar-track-y.has-overflow {\nopacity: 1;\n}\n.dropdown-options ty-tag {\nuser-select: none;\ntransition: transform 0.1s ease;\n}\n.dropdown-options ty-tag:hover {\ntransform: scale(1.02);\n}\n.dropdown-options ty-tag:active {\ntransform: scale(0.98);\n}\n.dropdown-options ty-tag[selected] {\nopacity: 0.5;\n}\n.select-chips ty-tag {\nmax-width: 150px;\n}\n@media (max-width: 640px) {\n.select-chips ty-tag {\nmax-width: 100px;\n}\n}\n.select-container {\ndisplay: flex;\nflex-direction: column;\n}\n.dropdown-wrapper {\nposition: relative;\ndisplay: block;\nwidth: 100%;\n}\n.ty-field-label {\nfont-size: var(--ty-field-label-font);\nline-height: var(--ty-field-label-leading);\nletter-spacing: var(--ty-tracking-sm);\nfont-weight: var(--ty-font-medium);\ncolor: var(--ty-label-color);\nmargin-bottom: var(--ty-field-label-gap);\npadding-left: var(--ty-field-outer-pad-x);\ndisplay: flex;\nalign-items: center;\n}\n.required-icon {\ndisplay: inline-flex;\nalign-items: center;\ncolor: #ef4444;\nwidth: 12px;\nheight: 12px;\nvertical-align: middle;\nmargin-left: 4px;\n}\n.required-icon svg {\nwidth: 100%;\nheight: 100%;\n}\n:host([disabled]) .select-container {\npointer-events: none;\n}\n.dropdown-mode-mobile .mobile-dialog {\nposition: fixed;\ntop: 0;\nleft: 0;\nright: 0;\nbottom: 0;\nwidth: 100vw;\nheight: 100dvh; \nmax-width: 100vw;\nmax-height: 100dvh;\nmargin: 0;\npadding: 0;\npadding-top: 6dvh; \nborder: none;\nbackground: transparent; \nalign-items: flex-start;\njustify-content: center;\nopacity: 0;\ntransition: opacity 300ms ease;\n}\n.dropdown-mode-mobile .mobile-dialog[open] {\ndisplay: flex;\n}\n.dropdown-mode-mobile .mobile-dialog.open {\nopacity: 1;\n}\n.dropdown-mode-mobile .mobile-dialog::backdrop {\nbackground: rgba(0, 0, 0, 0.65); \nbackdrop-filter: blur(8px);\n-webkit-backdrop-filter: blur(8px);\n}\n.dropdown-mode-mobile .mobile-dialog-content {\nposition: relative;\ndisplay: flex;\nflex-direction: column;\nwidth: calc(100% - 32px); \nmax-width: 400px;\nmin-height: 200px;\nmax-height: 90dvh; \nopacity: 0;\ntransform: scale(0.95);\ntransition: \nopacity 300ms cubic-bezier(0.16, 1, 0.3, 1),\ntransform 300ms cubic-bezier(0.16, 1, 0.3, 1);\n}\n.dropdown-mode-mobile .mobile-dialog.open .mobile-dialog-content {\nopacity: 1;\ntransform: scale(1);\n}\n.dropdown-mode-mobile .mobile-search-input:focus {\nborder-color: var(--ty-border);\n}\n.dropdown-mode-mobile .mobile-search-header {\nflex-shrink: 0;\ndisplay: flex;\nflex-direction: column;\nmargin-bottom: 16px;\npadding: 0;\nbackground: transparent;\nposition: relative;\n}\n.dropdown-mode-mobile .mobile-header-content {\ndisplay: flex;\nalign-items: center;\ngap: 12px;\nwidth: 100%;\njustify-content: flex-end;\n}\n.dropdown-mode-mobile .mobile-header-label {\nposition: absolute;\nbottom: 100%;\nleft: 2px;\nmargin-bottom: 8px; \nfont-size: var(--ty-font-base); \nline-height: var(--ty-leading-base);\nletter-spacing: var(--ty-tracking-base);\nfont-weight: 600; \ncolor: #ffffff;\npointer-events: none;\n}\n.dropdown-mode-mobile .mobile-close-button {\nflex-shrink: 0;\nwidth: 32px;\nheight: 32px;\ndisplay: flex;\nalign-items: center;\njustify-content: center;\nbackground: transparent;\nborder: none;\nborder-radius: 50%;\ncolor: #ffffff;\ncursor: pointer;\ntransition: var(--ty-transition-all);\npadding: 0;\n}\n.dropdown-mode-mobile .mobile-close-button:hover {\nbackground: rgba(255, 255, 255, 0.15);\ncolor: #ffffff;\n}\n.dropdown-mode-mobile .mobile-close-button:active {\ntransform: scale(0.9);\nbackground: rgba(255, 255, 255, 0.25);\n}\n.dropdown-mode-mobile .mobile-close-button svg {\nwidth: 18px;\nheight: 18px;\n}\n.dropdown-mode-mobile .mobile-search-input {\nfont-family: inherit;\nflex: 1;\nmin-width: 0;\nbox-sizing: border-box;\nbackground: var(--ty-surface-floating);\ncolor: var(--ty-text);\nborder: 2px solid;\nborder-color: var(--mobile-border-color);\nborder-radius: var(--ty-radius-md);\nfont-family: inherit;\nfont-size: var(--ty-font-sm);\nline-height: var(--ty-leading-sm);\nletter-spacing: var(--ty-tracking-sm);\nfont-weight: var(--ty-font-normal);\npadding: var(--ty-spacing-2) var(--ty-spacing-3);\nheight: 40px;\ntransition: var(--ty-transition-all);\noutline: none;\n}\n.dropdown-mode-mobile .mobile-search-input::placeholder {\ncolor: var(--ty-text-faint);\n}\n.dropdown-mode-mobile .mobile-search-input:focus {\nborder-color: var(--ty-border);\n}\n.dropdown-mode-mobile .mobile-body {\nposition: relative;\ndisplay: flex;\nflex-direction: column;\nheight: var(--body-height, 350px);\nmax-height: 350px;\noverflow: hidden;\nbackground: var(--ty-surface-floating);\nborder-radius: var(--ty-radius-lg);\nbox-shadow: \n0 20px 25px -5px rgba(0, 0, 0, 0.1),\n0 10px 10px -5px rgba(0, 0, 0, 0.04);\nborder: 2px solid;\nborder-color: var(--mobile-border-color);\n}\n.dropdown-mode-mobile .section-header {\ndisplay: flex;\nalign-items: center;\njustify-content: space-between;\nheight: 36px;\nflex-shrink: 0;\npadding: 0 16px;\nfont-size: 11px;\nfont-weight: 600;\ntext-transform: uppercase;\nletter-spacing: 0.06em;\ncolor: var(--ty-text-bold);\nbackground: transparent;\ncursor: default;\nuser-select: none;\n}\n.dropdown-mode-mobile .section-header .section-title {\nflex: 1;\n}\n.dropdown-mode-mobile .section-header .section-count {\nfont-weight: 500;\ncolor: var(--ty-text-faint);\nmargin-left: 0.25rem;\n}\n.dropdown-mode-mobile .mobile-body .section-header {\nheight: 36px;\nflex: 0 0 36px;\n}\n.dropdown-mode-mobile .mobile-selected-section,\n.dropdown-mode-mobile .mobile-available-section {\ndisplay: flex;\nflex-direction: column;\nbackground: var(--ty-input-bg);\noverflow: hidden;\nmin-height: 36px;\nflex: 0 1 36px;\ntransition: flex-grow 220ms cubic-bezier(0.4, 0, 0.2, 1);\n}\n.dropdown-mode-mobile .mobile-body[data-expanded="selected"] .mobile-selected-section,\n.dropdown-mode-mobile .mobile-body[data-expanded="available"] .mobile-available-section {\nflex-grow: 1;\n}\n.dropdown-mode-mobile .mobile-selected-section[data-empty="true"] {\nflex-grow: 0;\n}\n.dropdown-mode-mobile .mobile-selected-section .section-content {\nflex: 1;\nmin-height: 0;\noverflow-y: auto;\noverscroll-behavior: contain;\npadding: 0.75rem 1rem;\ndisplay: flex;\nflex-wrap: wrap;\ngap: 0.5rem;\nalign-content: flex-start;\n-webkit-mask-image: linear-gradient(to bottom, black calc(100% - 12px), transparent);\nmask-image: linear-gradient(to bottom, black calc(100% - 12px), transparent);\n}\n.dropdown-mode-mobile .mobile-available-section .section-content {\nflex: 1;\nmin-height: 0;\noverflow-y: auto;\noverscroll-behavior: contain;\npadding: 0.75rem 1rem;\ndisplay: flex;\nflex-wrap: wrap;\ngap: 0.5rem;\nalign-content: flex-start;\n}\n@media (prefers-reduced-motion: reduce) {\n.dropdown-mode-mobile .mobile-selected-section,\n.dropdown-mode-mobile .mobile-available-section {\ntransition: none;\n}\n}\n.dropdown-mode-mobile .mobile-body .section-header {\ndisplay: flex;\nalign-items: center;\njustify-content: space-between;\nwidth: 100%;\nborder: none;\nbackground: transparent;\nfont: inherit;\ntext-align: left;\ncursor: pointer;\n-webkit-tap-highlight-color: transparent;\n}\n.dropdown-mode-mobile .mobile-body .section-header svg {\nwidth: 1rem;\nheight: 1rem;\nflex-shrink: 0;\nopacity: 0.5;\ntransition: transform 180ms ease;\n}\n.dropdown-mode-mobile .mobile-body .section-header[aria-expanded="true"] svg {\ntransform: rotate(180deg);\n}\n.dropdown-mode-mobile .mobile-selected-section[data-empty="true"] .section-header {\ncursor: default;\n}\n.dropdown-mode-mobile .mobile-selected-section[data-empty="true"] .section-header svg {\ndisplay: none;\n}\n.dropdown-mode-mobile .mobile-selected-chip {\ndisplay: inline-flex;\nalign-items: center;\ngap: 0.375rem;\npadding: 0.25rem 0.5rem 0.25rem 0.625rem;\nborder: 1px solid var(--ty-border);\nborder-radius: 9999px;\nbackground: var(--ty-surface-content);\ncolor: var(--ty-text);\nfont: inherit;\nfont-size: var(--ty-font-sm);\nline-height: var(--ty-leading-sm);\ncursor: pointer;\ntransition: transform 0.1s ease, border-color 0.15s ease;\nanimation: ty-select-tag-enter 180ms cubic-bezier(0.16, 1, 0.3, 1);\n}\n.dropdown-mode-mobile .mobile-selected-chip svg {\nwidth: 0.875rem;\nheight: 0.875rem;\nflex-shrink: 0;\nopacity: 0.6;\n}\n@media (hover: hover) {\n.dropdown-mode-mobile .mobile-selected-chip:hover {\nborder-color: var(--ty-text-soft);\n}\n.dropdown-mode-mobile .mobile-selected-chip:hover svg {\nopacity: 1;\n}\n}\n.dropdown-mode-mobile .mobile-selected-chip:active {\ntransform: scale(0.96);\n}\n.dropdown-mode-mobile .empty-state {\ndisplay: none;\nwidth: 100%;\npadding: 2rem 1rem;\ntext-align: center;\ncolor: var(--ty-text-faint);\nfont-size: var(--ty-font-sm);\nline-height: var(--ty-leading-sm);\nletter-spacing: var(--ty-tracking-sm);\nfont-style: italic;\n}\n.dropdown-mode-mobile .mobile-available-section[data-empty="true"] .empty-state {\ndisplay: block;\n}\n.dropdown-mode-mobile .mobile-selected-section[data-empty="true"] .section-content,\n.dropdown-mode-mobile .mobile-available-section[data-empty="true"] slot {\ndisplay: none;\n}\n.dropdown-mode-mobile .section-content ::slotted(ty-tag) {\ncursor: pointer;\nuser-select: none;\ntransition: transform 0.1s ease;\nmargin: 2px 0;\nanimation: ty-select-tag-enter 180ms cubic-bezier(0.16, 1, 0.3, 1);\n}\n@media (hover: hover) {\n.dropdown-mode-mobile .section-content ::slotted(ty-tag:hover) {\ntransform: scale(1.02);\n}\n}\n.dropdown-mode-mobile .section-content ::slotted(ty-tag:active) {\ntransform: scale(0.96);\n}\n.dropdown-mode-mobile .section-content ::slotted(ty-tag[hidden]) {\ndisplay: none !important;\n}\n@keyframes ty-select-tag-enter {\nfrom { opacity: 0; transform: scale(0.85); }\nto { opacity: 1; transform: scale(1); }\n}\n@media (prefers-reduced-motion: reduce) {\n.dropdown-mode-mobile .section-content ::slotted(ty-tag) {\nanimation: none;\n}\n}\n.dropdown-loading {\ndisplay: none;\nalign-items: center;\njustify-content: center;\ngap: var(--ty-spacing-2);\npadding: var(--ty-spacing-4) var(--ty-spacing-3);\ncolor: var(--ty-text-soft);\nfont-size: var(--ty-font-sm);\nmin-height: 4rem;\nbackground: var(--ty-loader-bg, var(--ty-surface-floating));\nborder: 1px solid var(--ty-loader-border, var(--ty-floating-border));\nborder-radius: var(--ty-loader-radius, var(--ty-radius-lg));\nbox-shadow: var(--ty-loader-shadow, 0 20px 25px -5px rgba(0, 0, 0, 0.1), 0 10px 10px -5px rgba(0, 0, 0, 0.04));\nbox-sizing: border-box;\n}\n.dropdown-options-wrapper.loading .dropdown-loading {\ndisplay: flex;\n}\n.dropdown-loading > slot[name="loading"] {\ndisplay: contents;\n}\n.dropdown-mode-mobile .dropdown-loading {\nbackground: transparent;\nborder: none;\nbox-shadow: none;\nflex: 1;\nflex-direction: column;\ngap: var(--ty-spacing-3);\npadding: var(--ty-spacing-8) var(--ty-spacing-4);\nmin-height: 12rem;\n}\n.dropdown-mode-mobile .dropdown-loading-spinner {\nwidth: 2rem;\nheight: 2rem;\n}\n.dropdown-mode-mobile .dropdown-loading-text {\nfont-size: var(--ty-font-base);\n}\n.dropdown-options-wrapper.loading .dropdown-options,\n.dropdown-options-wrapper.loading > slot#options-slot,\n.dropdown-options-wrapper.loading .empty-state {\ndisplay: none;\n}\n.dropdown-loading-spinner {\ndisplay: inline-flex;\nalign-items: center;\njustify-content: center;\nwidth: 1.125rem;\nheight: 1.125rem;\nflex-shrink: 0;\nanimation: ty-select-spin 0.7s linear infinite;\ncolor: var(--select-accent-bold, var(--ty-color-primary));\n}\n.dropdown-loading-spinner svg {\nwidth: 100%;\nheight: 100%;\n}\n.dropdown-loading-text {\ncolor: var(--ty-text-soft);\n}\n@keyframes ty-select-spin {\nto { transform: rotate(360deg); }\n}\n@media (prefers-reduced-motion: reduce) {\n.dropdown-loading-spinner {\nanimation-duration: 1.6s;\n}\n}\n${Dt}\n${n.filter(t=>"neutral"!==t).map(t=>Kn(t)).join("")}\n`;function Jn(t=768){return window.matchMedia(`(pointer: coarse) and (max-width: ${t}px)`).matches}let Gn=0;const Qn=new WeakMap;function te(t){let n=Qn.get(t);return void 0===n&&(n=++Gn,Qn.set(t,n)),n}const ne='<svg viewBox="0 0 20 20" fill="currentColor">\n<path fill-rule="evenodd" d="M5.293 7.293a1 1 0 011.414 0L10 10.586l3.293-3.293a1 1 0 111.414 1.414l-4 4a1 1 0 01-1.414 0l-4-4a1 1 0 010-1.414z" clip-rule="evenodd" />\n</svg>',ee='<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">\n<circle cx="11" cy="11" r="8"/><path d="m21 21-4.3-4.3"/>\n</svg>',ie='<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">\n<line x1="18" y1="6" x2="6" y2="18"></line>\n<line x1="6" y1="6" x2="18" y2="18"></line>\n</svg>',oe=class extends s{constructor(){super(),this.an="",this.ln=!1,this.cn=!1,this.dn="Select...",this.hn="",this.N=!1,this.un=!1,this.pn=!1,this.bn=!0,this.vn=!1,this.gn=!1,this.mn="none",this.yn=!1,this.fn=!1,this.wn=null,this.xn=e,this.kn="Available",this.$n="Selected",this.zn="No options available",this.Cn={open:!1,search:"",highlightedIndex:-1,filteredTags:[],selectedValues:[],mode:"desktop"},this.En=null,this.Tn=null,this.Sn=null,this.Mn=null,this._n=null,this.Dn=0,this.qn=null,this.An=null,this.jn=null,this.In=null,this.A=null;const t=this.shadowRoot;a(t,{css:Zn,id:"ty-select-base"}),a(t,{css:'\n.select-stub.compact {\ndisplay: inline-flex;\nflex-wrap: nowrap;\nwidth: auto;\ngap: 0.5rem;\npadding: 0.5rem 2.25rem 0.5rem 0.875rem;\n}\n.select-stub.custom-trigger {\ndisplay: inline-block;\nwidth: auto;\nborder: none;\nbackground: none;\npadding: 0;\nmin-height: 0;\nborder-radius: 0;\n}\n.select-stub.custom-trigger:hover {\nborder: none;\n}\n.select-count {\nflex-shrink: 0;\ndisplay: inline-flex;\nalign-items: center;\njustify-content: center;\nmin-width: 1.25rem;\nheight: 1.25rem;\npadding: 0 0.375rem;\nborder-radius: 9999px;\nbackground: color-mix(in oklab, var(--select-accent, var(--ty-color-primary)) 15%, transparent);\ncolor: var(--select-accent-bold, var(--ty-color-primary-strong));\nfont-size: var(--ty-font-xs);\nfont-weight: var(--ty-font-semibold);\nfont-style: normal;\n}\n.select-count[hidden] {\ndisplay: none;\n}\n.select-clear {\nflex-shrink: 0;\ndisplay: inline-flex;\nalign-items: center;\njustify-content: center;\nwidth: 1rem;\nheight: 1rem;\npadding: 0;\nborder: none;\nbackground: none;\ncolor: var(--input-placeholder, var(--ty-input-placeholder));\ncursor: pointer;\nborder-radius: var(--ty-radius-sm);\ntransition: var(--ty-local-transition, all 0.15s ease);\n}\n.select-clear[hidden] {\ndisplay: none;\n}\n.select-clear:hover {\ncolor: var(--ty-color-danger);\nbackground-color: var(--ty-bg-danger-soft);\n}\n.select-clear svg {\nwidth: 100%;\nheight: 100%;\n}\n.select-stub .dropdown-placeholder {\nfont-style: normal;\nflex: 1 1 0%;\nmin-width: 0;\noverflow: hidden;\ntext-overflow: ellipsis;\nwhite-space: nowrap;\ncolor: var(--input-color, var(--ty-input-color));\n}\n.select-stub .dropdown-placeholder.placeholder-shown {\ncolor: var(--input-placeholder, var(--ty-input-placeholder));\n}\n.select-stub .dropdown-placeholder[hidden] {\ndisplay: none;\n}\n.select-stub slot[name="selected"] {\ndisplay: none;\n}\n.select-stub.has-clone slot[name="selected"] {\ndisplay: block;\nflex: 1 1 0%;\nmin-width: 0;\noverflow: hidden;\n}\n.select-stub.compact.has-clone slot[name="selected"] {\nflex: 0 1 auto;\n}\n.select-stub ::slotted([slot="start"]),\n.select-stub ::slotted([slot="end"]) {\nflex-shrink: 0;\ncolor: var(--ty-text-soft);\n}\n.select-stub.compact .dropdown-placeholder {\nflex: 0 1 auto;\ncolor: var(--ty-text);\n}\n.dropdown-wrapper:has(.dropdown-chevron.open) .select-stub {\nopacity: 1;\npointer-events: auto;\n}\n.dropdown-dialog.open {\nfilter: drop-shadow(0 12px 24px rgba(0, 0, 0, 0.14)) drop-shadow(0 2px 6px rgba(0, 0, 0, 0.08));\n}\n.dropdown-header {\nbackground: var(--ty-surface-floating);\nborder: 1px solid var(--ty-floating-border);\nborder-bottom: none;\nborder-radius: var(--ty-radius-lg) var(--ty-radius-lg) 0 0;\npadding: var(--ty-spacing-2) var(--ty-spacing-2) var(--ty-spacing-1);\n}\n.dropdown-dialog.position-below .dropdown-header {\nmargin-bottom: 0;\n}\n.dropdown-dialog.position-above .dropdown-header {\nmargin-top: 0;\nborder-top: none;\nborder-bottom: 1px solid var(--ty-floating-border);\nborder-radius: 0 0 var(--ty-radius-lg) var(--ty-radius-lg);\npadding: var(--ty-spacing-1) var(--ty-spacing-2) var(--ty-spacing-2);\n}\n.dropdown-search-icon {\nposition: absolute;\ntop: 50%;\nleft: calc(var(--ty-spacing-2) + var(--ty-spacing-3));\ntransform: translateY(-50%);\nwidth: 1rem;\nheight: 1rem;\ncolor: var(--input-placeholder, var(--ty-input-placeholder));\npointer-events: none;\n}\n.dropdown-search-icon svg {\nwidth: 100%;\nheight: 100%;\n}\n.dropdown-mode-mobile .mobile-header-content .dropdown-search-icon {\nposition: static;\ntransform: none;\nflex-shrink: 0;\ndisplay: flex;\nalign-items: center;\njustify-content: center;\nwidth: 32px;\nheight: 32px;\ncolor: #ffffff;\n}\n.dropdown-mode-mobile .mobile-header-content .dropdown-search-icon svg {\nwidth: 18px;\nheight: 18px;\n}\n.dropdown-search-input {\nmin-height: 2.25rem;\npadding-right: var(--ty-spacing-2);\npadding-left: calc(var(--ty-spacing-3) + 1rem + var(--ty-spacing-2));\n}\n.dropdown-search-chevron {\ndisplay: none;\n}\n.dropdown-dialog:focus,\n.dropdown-dialog:focus-visible {\noutline: none;\n}\n.dropdown-header[hidden] {\ndisplay: none;\n}\n.dropdown-header[hidden] ~ .dropdown-options-wrapper .dropdown-options {\nborder-top: 1px solid var(--ty-floating-border);\nborder-radius: var(--ty-radius-lg);\n}\n.mobile-search-input[hidden],\n.mobile-header-content .dropdown-search-icon[hidden] {\ndisplay: none;\n}\n.dropdown-options {\nflex-direction: column;\nflex-wrap: nowrap;\nalign-items: stretch;\ngap: 0;\npadding: var(--ty-spacing-1);\nborder-top: none;\nborder-radius: 0 0 var(--ty-radius-lg) var(--ty-radius-lg);\nbox-shadow: none;\ntransform: none;\ntransition: none;\nmax-height: 24rem;\n}\n.dropdown-dialog.position-below .dropdown-options {\nbox-shadow: none;\n}\n.dropdown-dialog.position-above .dropdown-options {\nborder-top: 1px solid var(--ty-floating-border);\nborder-bottom: none;\nborder-radius: var(--ty-radius-lg) var(--ty-radius-lg) 0 0;\n}\n.dropdown-loading {\nborder-top: none;\nborder-radius: 0 0 var(--ty-radius-lg) var(--ty-radius-lg);\nbox-shadow: none;\n}\n.dropdown-dialog.position-above .dropdown-loading {\nborder-top: 1px solid var(--ty-floating-border);\nborder-bottom: none;\nborder-radius: var(--ty-radius-lg) var(--ty-radius-lg) 0 0;\n}\n.dropdown-mode-mobile .section-content ::slotted(ty-option) {\ndisplay: block;\nwidth: 100%;\n}\n',id:"ty-select"})}onConnect(){this.shadowRoot.querySelectorAll("dialog").forEach(t=>{t.open&&t.close()}),this.render(),this.initializeState(),this.jn=new MutationObserver(()=>{this.ensureOptionRoles(),this.Cn.selectedValues.length>0&&this.syncSelectedTags(this.Cn.selectedValues),this.updateSearchVisibility(),this.updateSelectionDisplay(),this.updateMobileSelectedState()}),this.jn.observe(this,{childList:!0}),this.ensureOptionRoles(),this.j()}j(){this.A=v(this.shadowRoot,this.A,this.getProperty("flavor"),({base:t})=>(t=>Kn(t,"neutral"))(t))}onDisconnect(){this.shadowRoot.querySelectorAll("dialog").forEach(t=>{t.open&&t.close()}),this._n&&(document.removeEventListener("keydown",this._n),this._n=null),null!==this.qn&&(clearTimeout(this.qn),this.qn=null),this.Ln(),this.jn&&(this.jn.disconnect(),this.jn=null)}onPropertiesChanged(t){for(const{name:n,newValue:e}of t)switch(n){case"value":const t=this.parseValue(e);this.Cn.selectedValues=t,this.isConnected&&this.shadowRoot&&(this.syncSelectedTags(t),this.updateSelectionDisplay(),this.updateMobileSelectedState());break;case"name":this.an=e||"";break;case"flavor":this.j();break;case"multiple":this.ln=e,!e&&this.Cn.selectedValues.length>1&&this.updateComponentValue([this.Cn.selectedValues[0]],!1,"set",null);break;case"compact":this.cn=e;break;case"placeholder":this.dn=e||"Select...",this.isConnected&&this.shadowRoot&&this.updateSelectionDisplay();break;case"label":this.hn=e||"";break;case"disabled":this.N=e;break;case"readonly":this.un=e;break;case"required":this.pn=e;break;case"clearable":this.bn=e,this.isConnected&&this.shadowRoot&&this.updateSelectionDisplay();break;case"externalSearch":this.vn=e;break;case"notSearchable":this.yn=e,this.isConnected&&this.shadowRoot&&this.updateSearchVisibility();break;case"allowCreate":this.gn=e,this.isConnected&&this.shadowRoot&&this.updateSearchVisibility();break;case"createTransform":this.mn=e;break;case"size":this.xn=e;break;case"debounce":this.Dn=e;break;case"available-label":this.kn=e||"Available";break;case"selected-label":this.$n=e||"Selected";break;case"no-options-message":this.zn=e||"No options available";break;case"loading":this.fn=e,this.applyLoadingState()}}applyLoadingState(){const t=this.shadowRoot;if(!t)return;const n=this.fn?y():null;t.querySelectorAll(".dropdown-options-wrapper").forEach(t=>{if(t.classList.toggle("loading",this.fn),this.fn){t.setAttribute("aria-busy","true");const e=t.querySelector(".dropdown-loading-spinner");e&&n&&(e.innerHTML=n)}else t.removeAttribute("aria-busy")})}getFormValue(){const t=this.Cn.selectedValues;if(this.an&&t.length>0){if(!this.ln)return t[0];const n=new FormData;return t.forEach(t=>{n.append(this.an,t)}),n}return null}parseValue(t){return t&&"string"==typeof t&&""!==t.trim()?t.split(",").map(t=>t.trim()).filter(t=>""!==t):[]}initializeState(){const t=this.getProperty("value")||"";if(t){const n=this.parseValue(t);this.Cn.selectedValues=n,this.syncSelectedTags(n),this.updateSelectionDisplay(),this.updateMobileSelectedState()}else this.resolveDeclarativeSelection()}resolveDeclarativeSelection(){if(this.getAttribute("value")||this.Cn.selectedValues.length>0)return;const t=this.getTagElements().filter(t=>t.hasAttribute("selected")).map(t=>this.getTagData(t).value);t.length>0?this.updateComponentValue(t,!1):"loading"===document.readyState&&document.addEventListener("DOMContentLoaded",()=>{this.isConnected&&this.resolveDeclarativeSelection()},{once:!0})}getTagElements(){return Array.from(this.querySelectorAll("ty-option:not([cloned]), ty-tag:not([cloned])"))}getTagData(t){return{value:t.value||t.getAttribute("value")||t.textContent||"",text:t.getAttribute("label")||t.textContent||"",element:t}}selectTag(t){t.setAttribute("selected","")}deselectTag(t){t.removeAttribute("selected")}getSelectedValues(){return[...this.Cn.selectedValues]}syncSelectedTags(t){const n=new Set(t);this.getTagElements().forEach(t=>{const e=this.getTagData(t).value,i=n.has(e),o=t.hasAttribute("selected");i&&!o?this.selectTag(t):!i&&o&&this.deselectTag(t),t.setAttribute("aria-selected",i+"")})}ensureOptionRoles(){this.getTagElements().forEach(t=>{t.hasAttribute("role")||t.setAttribute("role","option"),t.hasAttribute("aria-selected")||t.setAttribute("aria-selected","false")})}updateComponentValue(t,n=!1,e="set",i=null){const o=this.getSelectedValues(),s=t.join(",");JSON.stringify(t.sort())!==JSON.stringify(o.sort())&&(this.setProperty("value",s),this.updateValidity(),n&&this.dispatchChangeEvent({value:this.ln?[...t]:t[0]??null,values:t,items:this.getSelectedItems(t),action:e,item:i}))}getSelectedItems(t){const n=new Map(this.getTagElements().map(t=>[this.getTagData(t).value,t]));return t.map(t=>{const e=n.get(t);return{value:t,label:e?.getAttribute("label")||e?.textContent?.trim()||t,flavor:e?.getAttribute("flavor")??null}})}calculatePosition(){const t=this.shadowRoot,n=t.querySelector(".select-stub"),e=t.querySelector(".dropdown-dialog");if(!n||!e)return;const i=n.getBoundingClientRect(),o=e.getBoundingClientRect(),s=Math.min(o.height||200,440),r=parseFloat(getComputedStyle(this).getPropertyValue("--ty-select-popup-width")),a=isNaN(r)?Math.max(i.width,320):r,l=this.getProperty("placement"),c=l?Ht(l):{side:"auto",align:this.getProperty("align")},d=Wt({anchorRect:i,popupWidth:a,popupHeight:s,align:c.align,side:c.side,gap:8}),h=d.below,u=(h?d.topY:d.bottomY)-20,p=a+20+20;this.style.setProperty("--dropdown-x",d.x-20+"px"),this.style.setProperty("--dropdown-y",u+"px"),this.style.setProperty("--dropdown-width",p+"px"),this.style.setProperty("--dropdown-offset-x","0px"),this.style.setProperty("--dropdown-offset-y","0px"),this.style.setProperty("--dropdown-padding","20px"),h?(e.classList.add("position-below"),e.classList.remove("position-above")):(e.classList.add("position-above"),e.classList.remove("position-below")),this.style.setProperty("--dropdown-direction",h?"below":"above")}Vn(){if(!Mt())return;const t=this.shadowRoot,n=t.querySelector(".dropdown-options"),e=t.querySelector(".dropdown-options-wrapper");n&&e&&(this.Ln(),n.classList.add("ty-custom-scroll"),this.An=new _t(n,{vertical:!0}),this.An.trackY&&e.appendChild(this.An.trackY))}Ln(){this.An&&(this.An.trackY?.remove(),this.An.destroy(),this.An=null)}openDropdown(){const t=this.shadowRoot,n=t.querySelector(".dropdown-dialog");if(!n)return;const e=t.querySelector(".select-stub");e&&e.setAttribute("aria-expanded","true");const i=`select-${this.id||"anon"}-${te(this)}`;this.wn=i,bn(i),n.showModal(),this.calculatePosition(),n.classList.add("open"),this.Cn.open=!0;const o=t.querySelector(".dropdown-chevron");o&&o.classList.add("open");const s=t.querySelector(".dropdown-search-chevron");s&&s.classList.add("open");const r=this.getTagElements().map(t=>this.getTagData(t));this.Cn.filteredTags=r,this.Cn.highlightedIndex=-1,this.updateOptionsVisibility(!0),this.Vn();const a=t.querySelector(".dropdown-search-input");a&&this.shouldShowSearch()&&setTimeout(()=>a.focus(),100),this.fireOpenEvent()}closeDropdown(){const t=this.shadowRoot,n=t.querySelector(".dropdown-dialog");if(!n)return;const e=t.querySelector(".select-stub");e&&e.setAttribute("aria-expanded","false"),this.Ln(),n.classList.remove("open"),n.classList.remove("position-above"),n.classList.remove("position-below"),n.close(),this.wn&&(vn(this.wn),this.wn=null),this.Cn.open=!1,this.Cn.highlightedIndex=-1;const i=t.querySelector(".dropdown-chevron");i&&i.classList.remove("open");const o=t.querySelector(".dropdown-search-chevron");o&&o.classList.remove("open");const s=""!==this.Cn.search;this.Cn.search="";const r=t.querySelector(".dropdown-search-input");if(r&&(r.value=""),this.vn)s&&(null!==this.qn&&(clearTimeout(this.qn),this.qn=null),this.fireSearchEvent(""));else{const t=this.getTagElements().map(t=>this.getTagData(t));this.Cn.filteredTags=t,this.updateTagVisibility(t,t),this.clearHighlights(t)}this.fireCloseEvent()}openMobileModal(){const t=this.shadowRoot,n=t.querySelector(".mobile-dialog");if(!n)return;const e=t.querySelector(".select-stub");e&&e.setAttribute("aria-expanded","true");const i=`select-${this.id||"anon"}-${te(this)}`;this.wn=i,bn(i),n.showModal(),n.getBoundingClientRect(),n.classList.add("open"),this.Cn.open=!0;const o=this.getTagElements().map(t=>this.getTagData(t));this.Cn.filteredTags=o,this.updateTagVisibility(o,o),requestAnimationFrame(()=>{this.updateMobileSelectedState()}),this.fireOpenEvent()}closeMobileModal(){const t=this.shadowRoot,n=t.querySelector(".mobile-dialog");if(!n)return;const e=t.querySelector(".select-stub");e&&e.setAttribute("aria-expanded","false"),n.classList.remove("open"),n.close(),this.wn&&(vn(this.wn),this.wn=null),this.Cn.open=!1,this.Cn.highlightedIndex=-1;const i=""!==this.Cn.search;this.Cn.search="";const o=t.querySelector(".mobile-search-input");o&&(o.value=""),this.vn?i&&(null!==this.qn&&(clearTimeout(this.qn),this.qn=null),this.fireSearchEvent("")):this.getTagElements().forEach(t=>t.removeAttribute("hidden")),this.fireCloseEvent()}handleStubClick(t){t.preventDefault(),t.stopPropagation(),this.N||this.un||this.openDropdown()}handleClearClick(t){t.preventDefault(),t.stopPropagation(),this.N||this.un||this.clear()}handleStubKeydown(t){this.N||this.un||this.Cn.open||"Enter"!==t.key&&" "!==t.key&&"ArrowDown"!==t.key||(t.preventDefault(),this.openDropdown())}handleTagClick(t){const n=t.target.closest("ty-option, ty-tag");n&&!n.hasAttribute("disabled")&&(t.preventDefault(),t.stopPropagation(),this.selectByTag(n))}selectByTag(t){const n=this.getTagData(t).value,e=this.getSelectedValues();if(!this.ln)return this.updateComponentValue([n],!0,"set",n),void("mobile"===this.Cn.mode?this.closeMobileModal():this.closeDropdown());if(e.includes(n)){const t=e.filter(t=>t!==n);this.updateComponentValue(t,!0,"remove",n)}else this.updateComponentValue([...e,n],!0,"add",n)}tryCreateFromSearch(){if(!this.gn)return!1;const t=(this.Cn.search||"").trim();if(!t)return!1;const n=t.toLowerCase(),e=this.getTagElements().map(t=>this.getTagData(t)).find(t=>t.value.toLowerCase()===n||t.text.toLowerCase()===n);if(e)return this.selectByTag(e.element),!0;const i=t,o="slug"===this.mn?i.trim().toLowerCase().replace(/\s+/g,"_").replace(/[^a-z0-9_]/g,"").replace(/_+/g,"_").replace(/^_|_$/g,""):i;if(!o)return!0;const s={value:o,label:i},r=new CustomEvent("create",{detail:s,bubbles:!0,composed:!0,cancelable:!0});if(this.dispatchEvent(r),r.defaultPrevented)return!0;const a=s.value,l=document.createElement("ty-option");if(l.setAttribute("value",a),l.textContent=i,this.appendChild(l),!this.ln)return this.updateComponentValue([a],!0,"create",a),"mobile"===this.Cn.mode?this.closeMobileModal():this.closeDropdown(),!0;const c=this.getSelectedValues();return this.updateComponentValue([...c,a],!0,"create",a),this.clearSearchAfterCreate(),!0}clearSearchAfterCreate(){this.Cn.search="",this.Cn.highlightedIndex=-1;const t=this.shadowRoot;if(!t)return;const n=t.querySelector(".dropdown-search-input"),e=t.querySelector(".mobile-search-input");n&&(n.value=""),e&&(e.value="");const i=this.getTagElements().map(t=>this.getTagData(t));this.Cn.filteredTags=i,this.updateTagVisibility(i,i),this.updateOptionsVisibility(!0),this.clearHighlights(i),this.updateMobileSelectedState(),(n??e)?.focus()}blockSearchClick(t){t.stopPropagation(),t.preventDefault()}handleSearchInput(t){"mobile"===this.Cn.mode&&this.expandMobileSection("available");const n=t.target.value;if(this.Cn.search=n,this.vn)return void this.dispatchSearchEvent(n);const e=this.getTagElements().map(t=>this.getTagData(t)),i=this.filterTags(e,n);this.Cn.filteredTags=i,this.Cn.highlightedIndex=-1,this.updateTagVisibility(i,e),this.updateOptionsVisibility(i.length>0),this.updateMobileSelectedState(),this.clearHighlights(e)}handleKeyboard(t){if(!this.Cn.open)return;const n=this.shadowRoot.querySelector(".dropdown-search-input");if(t.target!==n&&document.activeElement===n)return;const e=this.Cn.filteredTags,i=e.length,o=this.Cn.highlightedIndex;switch(t.key){case"Escape":t.preventDefault(),t.stopPropagation(),"mobile"===this.Cn.mode?this.closeMobileModal():this.closeDropdown();break;case"Enter":t.preventDefault(),t.stopPropagation(),o>=0&&i>o?this.selectByTag(e[o].element):this.tryCreateFromSearch();break;case"ArrowUp":t.preventDefault(),t.stopPropagation();const n=this.nextEnabledTagIndex(e,o,-1);this.Cn.highlightedIndex=n,this.highlightTag(e,n);break;case"ArrowDown":t.preventDefault(),t.stopPropagation();const s=this.nextEnabledTagIndex(e,o,1);this.Cn.highlightedIndex=s,this.highlightTag(e,s)}}nextEnabledTagIndex(t,n,e){const i=t.length;if(0===i)return-1;let o=-1===n?1===e?0:i-1:(n+e+i)%i;for(let s=0;i>s;s++){if(!t[o].element.hasAttribute("disabled"))return o;o=(o+e+i)%i}return-1}filterTags(t,n){if(!n||""===n.trim())return t;const e=n.toLowerCase();return t.filter(({text:t})=>t.toLowerCase().includes(e))}updateTagVisibility(t,n){const e=new Set(t.map(t=>t.value));n.forEach(({value:t,element:n})=>{e.has(t)?n.removeAttribute("hidden"):n.setAttribute("hidden","")})}updateOptionsVisibility(t){const n=this.shadowRoot.querySelector(".dropdown-options");n&&(n.style.display=t?"":"none")}clearHighlights(t){t.forEach(({element:t})=>{t.removeAttribute("highlighted")})}highlightTag(t,n){if(this.clearHighlights(t),n>=0&&t.length>n){const{element:e}=t[n];e.setAttribute("highlighted",""),e.scrollIntoView({behavior:"smooth",block:"nearest",inline:"nearest"})}}dispatchSearchEvent(t){null!==this.qn&&(clearTimeout(this.qn),this.qn=null),this.Dn>0?this.qn=window.setTimeout(()=>{this.fireSearchEvent(t),this.qn=null},this.Dn):this.fireSearchEvent(t)}fireSearchEvent(t){this.dispatchEvent(new CustomEvent("search",{detail:{query:t,element:this},bubbles:!0,composed:!0}))}fireOpenEvent(){this.dispatchEvent(new CustomEvent("open",{detail:{mode:this.Cn.mode,element:this}})),this.vn&&this.fireSearchEvent("")}fireCloseEvent(){this.dispatchEvent(new CustomEvent("close",{detail:{mode:this.Cn.mode,element:this}}))}dispatchChangeEvent(t){this.dispatchEvent(new CustomEvent("change",{detail:t,bubbles:!0,cancelable:!0}))}render(){this.Cn.mode=Jn()?"mobile":"desktop","mobile"===this.Cn.mode?this.renderMobile():this.renderDesktop(),this.updateSearchVisibility(),this.applyLoadingState(),this.updateValidity()}updateValidity(){if(this.disabled)this.$.setValidity({});else if(this.required&&0===this.getSelectedValues().length){const t=this.shadowRoot?.querySelector(".select-stub");this.$.setValidity({valueMissing:!0},"Please select a value",t??void 0)}else this.$.setValidity({})}setupTriggerSlot(){const t=this.shadowRoot,n=t.querySelector(".select-stub"),e=t.querySelector('slot[name="trigger"]');if(!n||!e)return;const i=()=>{const t=e.assignedElements().length>0;n.classList.toggle("custom-trigger",t),this.toggleAttribute("has-trigger",t)};e.addEventListener("slotchange",i),i()}setupEventListeners(){const t=this.shadowRoot,n=t.querySelector(".select-stub"),e=t.querySelector("#options-slot"),i=t.querySelector(".dropdown-search-input");n&&(this.En=this.handleStubClick.bind(this),n.addEventListener("click",this.En),n.addEventListener("keydown",this.handleStubKeydown.bind(this)));const o=t.querySelector(".select-clear");o?.addEventListener("click",this.handleClearClick.bind(this)),this.setupTriggerSlot(),e&&(this.Tn=this.handleTagClick.bind(this),e.addEventListener("click",this.Tn)),i&&(this.Sn=this.handleSearchInput.bind(this),this.Mn=this.blockSearchClick.bind(this),i.addEventListener("input",this.Sn),i.addEventListener("click",this.Mn));const s=t.querySelector(".dropdown-dialog");s&&s.addEventListener("click",t=>{t.target===s&&this.closeDropdown()}),this._n=this.handleKeyboard.bind(this),document.addEventListener("keydown",this._n)}buildStubClasses(){const t=[];return this.N&&t.push("disabled"),this.cn&&t.push("compact"),t.join(" ")}renderDesktop(){const t=this.shadowRoot;if(!t.querySelector(".select-container")){const n=this.buildStubClasses(),e="select-listbox-"+te(this),i="select-label-"+te(this);t.innerHTML=`\n<div class="select-container dropdown-mode-desktop">\n${this.hn?`\n<label class="ty-field-label" id="${i}">\n${this.hn}\n${this.pn?`<span class="required-icon">${nt}</span>`:""}\n</label>\n`:""}\n<div class="dropdown-wrapper">\n<div class="dropdown-stub select-stub ${n}"\nrole="combobox"\naria-haspopup="listbox"\naria-expanded="false"\naria-controls="${e}"\n${this.hn?`aria-labelledby="${i}"`:""}\ntabindex="${this.N?"-1":"0"}"\n${this.N?'disabled aria-disabled="true"':""}>\n<slot name="trigger">\n<slot name="start"></slot>\n<slot name="selected"></slot>\n<span class="dropdown-placeholder">${this.dn}</span>\n<span class="select-count" hidden></span>\n<slot name="end"></slot>\n<button class="select-clear" type="button" aria-label="Clear selection" hidden>\n${ie}\n</button>\n<div class="dropdown-chevron">\n${ne}\n</div>\n</slot>\n</div>\n<dialog class="dropdown-dialog">\n<div class="dropdown-header">\n<div class="dropdown-search-icon" aria-hidden="true">\n${ee}\n</div>\n<input\nclass="dropdown-search-input"\ntype="text"\nplaceholder="Search..."\n${this.N?"disabled":""}\n/>\n<div class="dropdown-search-chevron">\n${ne}\n</div>\n</div>\n<div class="dropdown-options-wrapper">\n<div class="dropdown-options" id="${e}" role="listbox" ${this.ln?'aria-multiselectable="true"':""}>\n<slot id="options-slot"></slot>\n</div>\n<div class="dropdown-loading" aria-hidden="true">\n<slot name="loading">\n<span class="dropdown-loading-spinner"></span>\n<span class="dropdown-loading-text">Searching…</span>\n</slot>\n</div>\n</div>\n</dialog>\n</div>\n</div>\n`,this.setupEventListeners()}this.updateSelectionDisplay()}renderMobile(){const t=this.shadowRoot;if(!t.querySelector(".select-container")){const n=this.buildStubClasses(),e="select-listbox-"+te(this),i="select-label-"+te(this);t.innerHTML=`\n<div class="select-container dropdown-mode-mobile">\n${this.hn?`\n<label class="ty-field-label" id="${i}">\n${this.hn}\n${this.pn?`<span class="required-icon">${nt}</span>`:""}\n</label>\n`:""}\n<div class="dropdown-wrapper">\n<div class="dropdown-stub select-stub ${n}"\nrole="combobox"\naria-haspopup="listbox"\naria-expanded="false"\naria-controls="${e}"\n${this.hn?`aria-labelledby="${i}"`:""}\ntabindex="${this.N?"-1":"0"}"\n${this.N?'disabled aria-disabled="true"':""}>\n<slot name="trigger">\n<slot name="start"></slot>\n<slot name="selected"></slot>\n<span class="dropdown-placeholder">${this.dn}</span>\n<span class="select-count" hidden></span>\n<slot name="end"></slot>\n<button class="select-clear" type="button" aria-label="Clear selection" hidden>\n${ie}\n</button>\n<div class="dropdown-chevron">\n${ne}\n</div>\n</slot>\n</div>\n<dialog class="mobile-dialog">\n<div class="mobile-dialog-content">\n\x3c!-- HEADER (matches dropdown.ts) --\x3e\n\n<div class="mobile-search-header">\n${this.hn?`<span class="mobile-header-label">${this.hn}</span>`:""}\n<div class="mobile-header-content">\n<div class="dropdown-search-icon" aria-hidden="true">\n${ee}\n</div>\n<input\nclass="mobile-search-input"\ntype="text"\nplaceholder="${this.hn?`Search ${this.hn}...`:"Search..."}"\nautofocus\n${this.N?"disabled":""}\n/>\n<button class="mobile-close-button" type="button" aria-label="Close">\n<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">\n<line x1="18" y1="6" x2="6" y2="18"></line>\n<line x1="6" y1="6" x2="18" y2="18"></line>\n</svg>\n</button>\n</div>\n</div>\n\n\x3c!-- BODY: options list with toggleable selected state --\x3e\n<div class="mobile-body" data-expanded="available">\n\x3c!-- SELECTED STRIP (pinned above the list, collapses when empty) --\x3e\n<div class="mobile-selected-section" data-empty="true">\n<button class="section-header" type="button" data-section="selected" aria-expanded="false">\n<span class="section-title">${this.$n} <span class="section-count">(0)</span></span>\n${ne}\n</button>\n<div class="section-content mobile-selected-chips"></div>\n</div>\n\x3c!-- AVAILABLE LIST (always visible, takes remaining space) --\x3e\n<div class="mobile-available-section" data-empty="false">\n<button class="section-header" type="button" data-section="available" aria-expanded="true">\n<span class="section-title">${this.kn}</span>\n${ne}\n</button>\n<div class="section-content dropdown-options-wrapper" id="${e}" role="listbox" ${this.ln?'aria-multiselectable="true"':""}>\n<slot id="options-slot"></slot>\n<div class="empty-state">${this.zn}</div>\n<div class="dropdown-loading" aria-hidden="true">\n<slot name="loading">\n<span class="dropdown-loading-spinner"></span>\n<span class="dropdown-loading-text">Searching…</span>\n</slot>\n</div>\n</div>\n</div>\n</div>\n</div>\n</dialog>\n</div>\n</div>\n`,this.setupMobileEventListeners()}this.updateSelectionDisplay()}setupMobileEventListeners(){this._n||(this._n=this.handleKeyboard.bind(this),document.addEventListener("keydown",this._n));const t=this.shadowRoot,n=t.querySelector(".select-stub"),e=t.querySelector("#options-slot"),i=t.querySelector(".mobile-search-input"),o=t.querySelector(".mobile-close-button"),s=t.querySelector(".mobile-dialog");n&&(n.addEventListener("click",t=>this.handleMobileStubClick(t)),n.addEventListener("keydown",t=>this.handleMobileStubKeydown(t)));const r=t.querySelector(".select-clear");r?.addEventListener("click",this.handleClearClick.bind(this)),this.setupTriggerSlot(),e&&e.addEventListener("click",t=>this.handleMobileTagClick(t)),i&&i.addEventListener("input",t=>this.handleSearchInput(t)),t.querySelectorAll(".mobile-body .section-header").forEach(t=>{t.addEventListener("click",()=>this.expandMobileSection("selected"===t.dataset.section?"selected":"available"))}),o&&o.addEventListener("click",()=>this.closeMobileModal()),s&&(s.addEventListener("click",t=>{t.target===s&&this.closeMobileModal()}),s.addEventListener("cancel",t=>{t.preventDefault(),this.closeMobileModal()}))}handleMobileStubClick(t){t.preventDefault(),t.stopPropagation(),this.N||this.un||this.openMobileModal()}handleMobileStubKeydown(t){this.N||this.un||this.Cn.open||"Enter"!==t.key&&" "!==t.key&&"ArrowDown"!==t.key||(t.preventDefault(),this.openMobileModal())}handleMobileTagClick(t){this.handleTagClick(t)}updateMobileSelectedState(){if("mobile"!==this.Cn.mode)return;const t=this.shadowRoot;this.renderMobileSelectedChips();const n=t.querySelector(".mobile-available-section");if(n){const e=this.getTagElements().filter(t=>!t.hasAttribute("hidden")&&!t.hasAttribute("selected")).length;n.setAttribute("data-empty",(0===e)+"");const i=t.querySelector(".mobile-available-section .section-title");i&&(i.textContent=`${this.kn} (${e})`)}}expandMobileSection(t){const n=this.shadowRoot,e=n?.querySelector(".mobile-body");e&&("selected"===t&&0===this.Cn.selectedValues.length||(e.dataset.expanded=t,n.querySelectorAll(".mobile-body .section-header").forEach(n=>{n.setAttribute("aria-expanded",(n.dataset.section===t)+"")})))}renderMobileSelectedChips(){const t=this.shadowRoot,n=t.querySelector(".mobile-selected-section"),e=t.querySelector(".mobile-selected-chips");if(!n||!e)return;const i=this.Cn.selectedValues;n.setAttribute("data-empty",(0===i.length)+"");const o=n.querySelector(".section-count");o&&(o.textContent=`(${i.length})`),0===i.length&&this.expandMobileSection("available");const s=t=>{const n=this.getTagElements().find(n=>this.getTagData(n).value===t);return n?this.getTagData(n).text:t};e.textContent="";for(const r of i){const t=document.createElement("button");t.type="button",t.className="mobile-selected-chip",t.dataset.value=r,t.setAttribute("aria-label","Remove "+s(r)),t.innerHTML='<span class="chip-label"></span>'+ie,t.querySelector(".chip-label").textContent=s(r),t.addEventListener("click",t=>{t.preventDefault(),t.stopPropagation(),this.deselectValue(r)}),e.appendChild(t)}}shouldShowSearch(){return!!this.vn||!!this.gn||!this.yn&&this.getTagElements().length>7}updateSearchVisibility(){const t=this.shadowRoot;if(!t)return;const n=this.shouldShowSearch(),e=t.querySelector(".dropdown-header");e&&(e.hidden=!n);const i=t.querySelector(".mobile-search-input");i&&(i.hidden=!n);const o=t.querySelector(".mobile-header-content .dropdown-search-icon");o&&(o.hidden=!n)}updateSelectionDisplay(){const t=this.shadowRoot.querySelector(".select-stub");if(!t)return;const n=this.Cn.selectedValues,e=n.length;t.classList.toggle("has-selection",e>0),t.classList.toggle("compact",this.cn);const i=t.querySelector(".select-count");i&&(i.textContent=e+"",i.hidden=0===e||!this.ln||!this.cn);const o=t.querySelector(".select-clear");o&&(o.hidden=!(e>0&&this.bn&&!this.N&&!this.un));const s=!this.ln&&e>0?n[0]:null;this.syncSelectedClone(s);const r=null!==this.In;t.classList.toggle("has-clone",r);const a=t.querySelector(".dropdown-placeholder");a&&(a.hidden=r,e>0&&this.ln&&!this.cn?(a.textContent=this.getSelectedItems(n).map(t=>t.label).join(", "),a.classList.remove("placeholder-shown")):null!==s?(a.textContent=n.join(", "),a.classList.remove("placeholder-shown")):(a.textContent=this.dn,a.classList.add("placeholder-shown")))}syncSelectedClone(t){const n=this.querySelector(':scope > [cloned][slot="selected"]');if(n?.getAttribute("value")===t&&(null===t||0!==n.childNodes.length||0>=(this.getTagElements().find(n=>this.getTagData(n).value===t)?.childNodes.length??0)))return void(this.In=n);if(n?.remove(),null===t)return void(this.In=null);const e=this.getTagElements().find(n=>this.getTagData(n).value===t);if(e){const t=e.cloneNode(!0);t.removeAttribute("selected"),t.setAttribute("slot","selected"),t.setAttribute("cloned","true"),this.appendChild(t),this.In=t,0===e.childNodes.length&&"loading"===document.readyState&&document.addEventListener("DOMContentLoaded",()=>{this.isConnected&&this.updateSelectionDisplay()},{once:!0})}else if(this.In?.getAttribute("value")===t){const t=this.In.cloneNode(!0);this.appendChild(t),this.In=t}}deselectValue(t){const n=this.getSelectedValues();n.includes(t)&&this.updateComponentValue(n.filter(n=>n!==t),!0,"remove",t)}clear(){this.updateComponentValue([],!0,"clear",null)}get value(){return this.getSelectedValues().join(",")}set value(t){this.setProperty("value",t)}get name(){return this.getProperty("name")}set name(t){this.setProperty("name",t)}get multiple(){return this.getProperty("multiple")}set multiple(t){this.setProperty("multiple",t)}get compact(){return this.getProperty("compact")}set compact(t){this.setProperty("compact",t)}get placeholder(){return this.getProperty("placeholder")}set placeholder(t){this.setProperty("placeholder",t)}get label(){return this.getProperty("label")}set label(t){this.setProperty("label",t)}get disabled(){return this.getProperty("disabled")}set disabled(t){this.setProperty("disabled",t)}get loading(){return this.getProperty("loading")}set loading(t){this.setProperty("loading",t)}get readonly(){return this.getProperty("readonly")}set readonly(t){this.setProperty("readonly",t)}get clearable(){return this.getProperty("clearable")}set clearable(t){this.setProperty("clearable",t)}get required(){return this.getProperty("required")}set required(t){this.setProperty("required",t)}get notSearchable(){return this.getProperty("notSearchable")}set notSearchable(t){this.setProperty("notSearchable",t)}get externalSearch(){return this.getProperty("externalSearch")}set externalSearch(t){this.setProperty("externalSearch",t)}get debounce(){return this.getProperty("debounce")}set debounce(t){this.setProperty("debounce","string"==typeof t?parseInt(t,10):t)}get size(){return this.getProperty("size")}set size(t){this.setProperty("size",t)}get align(){return this.getProperty("align")}set align(t){this.setProperty("align",t)}get placement(){return this.getProperty("placement")}set placement(t){this.setProperty("placement",t)}get flavor(){return this.getProperty("flavor")}set flavor(t){this.setProperty("flavor",t)}get form(){return this.$.form}};oe.properties={value:{type:"string",visual:!0,formValue:!0,emitChange:!1,default:"",coerce:t=>Array.isArray(t)?t.join(","):null==t?"":t+""},name:{type:"string",default:""},multiple:{type:"boolean",visual:!0,default:!1},compact:{type:"boolean",visual:!0,default:!1},placeholder:{type:"string",visual:!0,default:"Select..."},label:{type:"string",visual:!0,default:""},disabled:{type:"boolean",visual:!0,default:!1},readonly:{type:"boolean",visual:!0,default:!1},required:{type:"boolean",visual:!0,default:!1},clearable:{type:"boolean",visual:!0,default:!0,aliases:{"not-clearable":!1}},externalSearch:{type:"boolean",visual:!0,default:!1,aliases:{"external-search":!0}},allowCreate:{type:"boolean",visual:!0,default:!1,aliases:{"allow-create":!0}},createTransform:{type:"string",visual:!1,default:"none",aliases:{"create-transform":!0},coerce:t=>"slug"===t?"slug":"none"},notSearchable:{type:"boolean",visual:!0,default:!1},align:{type:"string",visual:!0,default:"start",validate:t=>["start","center","end"].includes(t),coerce:t=>"end"===t?"end":"center"===t?"center":"start"},placement:{type:"string",visual:!0,default:""},size:{type:"string",visual:!0,default:e,validate:t=>["xs","sm","md","lg","xl"].includes(t),coerce:t=>["xs","sm","md","lg","xl"].includes(t)?t:e},debounce:{type:"number",default:0,validate:t=>t>=0&&5e3>=t,coerce:t=>{const n=+t;return isNaN(n)?0:Math.max(0,Math.min(5e3,n))}},"available-label":{type:"string",visual:!0,default:"Available"},"selected-label":{type:"string",visual:!0,default:"Selected"},"no-options-message":{type:"string",visual:!0,default:"No options available"},loading:{type:"boolean",visual:!0,default:!1},flavor:{type:"string",visual:!0,default:"neutral"}};let se=oe;function re(t,n){return t.replace(/\{([\w-]+)\}/g,(t,e)=>n[e]??t)}customElements.get("ty-select")||customElements.define("ty-select",se);class TySelectedOptions extends HTMLElement{constructor(){super(...arguments),this.Fn=null,this.On=()=>this.renderChips(),this.jn=null,this.Hn=null,this.Nn=null,this.Pn=!1,this.Wn=()=>{this.Pn=!0},this.Bn=()=>{this.Pn=!1,this.renderChips()}}static get observedAttributes(){return["for"]}connectedCallback(){this.style.display||(this.style.display="contents"),this.bind(),this.renderChips(),"loading"===document.readyState&&document.addEventListener("DOMContentLoaded",()=>{this.isConnected&&this.renderChips()},{once:!0}),this.jn=new MutationObserver(()=>{this.template()!==this.Nn&&this.renderChips()}),this.jn.observe(this,{childList:!0})}disconnectedCallback(){this.unbind(),this.jn?.disconnect(),this.jn=null}attributeChangedCallback(){this.isConnected&&(this.bind(),this.renderChips())}resolvePicker(){const t=this.getAttribute("for");return(t?document.getElementById(t):this.previousElementSibling)??null}bind(){const t=this.resolvePicker();t!==this.Fn&&(this.unbind(),this.Fn=t,this.Fn?.addEventListener("change",this.On),this.Fn?.addEventListener("open",this.Wn),this.Fn?.addEventListener("close",this.Bn),this.Fn&&(this.Hn=new MutationObserver(()=>this.renderChips()),this.Hn.observe(this.Fn,{childList:!0,subtree:!0,attributes:!0,attributeFilter:["selected"]})))}unbind(){this.Fn?.removeEventListener("change",this.On),this.Fn?.removeEventListener("open",this.Wn),this.Fn?.removeEventListener("close",this.Bn),this.Hn?.disconnect(),this.Hn=null,this.Fn=null,this.Pn=!1}values(){return(this.Fn?.value??"").split(",").map(t=>t.trim()).filter(Boolean)}template(){return this.querySelector(":scope > template")}context(t){const n=this.Fn?.querySelector(`[value="${CSS.escape(t)}"]`),e={value:t,label:n?.getAttribute("label")||n?.textContent?.trim()||t,flavor:n?.getAttribute("flavor")??""};if(n)for(const i of Array.from(n.attributes))i.name.startsWith("data-")&&(e[i.name]=i.value);return e}templateSource(t){if(t.content.hasChildNodes())return t.content;const n=document.createDocumentFragment();return t.childNodes.forEach(t=>n.appendChild(t.cloneNode(!0))),n}stampTemplate(t,n){const e=this.context(n),i=this.templateSource(t).cloneNode(!0),o=document.createTreeWalker(i,NodeFilter.SHOW_ELEMENT|NodeFilter.SHOW_TEXT);for(let s=o.nextNode();s;s=o.nextNode())if(s.nodeType===Node.TEXT_NODE)s.textContent?.includes("{")&&(s.textContent=re(s.textContent,e));else{const t=s;for(const n of Array.from(t.attributes)){if(!n.value.includes("{"))continue;const i=re(n.value,e);!/^\{[\w-]+\}$/.test(n.value)||""!==i&&i!==n.value?t.setAttribute(n.name,i):t.removeAttribute(n.name)}}for(const s of Array.from(i.children))s.addEventListener("dismiss",t=>{t.stopPropagation(),this.deselect(n)});return i}defaultChip(t){const n=this.context(t),e=document.createElement("ty-tag");return e.setAttribute("value",t),e.setAttribute("dismissible","true"),n.flavor&&e.setAttribute("flavor",n.flavor),e.textContent=n.label,e.addEventListener("dismiss",()=>this.deselect(t)),e}renderChips(){if(this.Pn)return;const t=this.template();if(this.Nn=t,!this.Fn)return void this.replaceChildren(...t?[t]:[]);const n=document.createDocumentFragment();t&&n.appendChild(t);for(const e of this.values())n.appendChild(t?this.stampTemplate(t,e):this.defaultChip(e));this.replaceChildren(n)}deselect(t){if(!this.Fn)return;const n=this.Fn;"function"==typeof n.deselectValue?n.deselectValue(t):(n.value=this.values().filter(n=>n!==t).join(","),this.renderChips())}}customElements.get("ty-selected-options")||customElements.define("ty-selected-options",TySelectedOptions),customElements.get("ty-selected-tags")||customElements.define("ty-selected-tags",class extends TySelectedOptions{});const ae=new WeakMap,le=new WeakMap,ce=new WeakSet;function de(t){return{width:t.getAttribute("width")||"100%",height:t.getAttribute("height")||"400px",active:t.getAttribute("active"),placement:t.getAttribute("placement")||"top",fixed:t.hasAttribute("fixed")}}function he(t){return Array.from(t.querySelectorAll("ty-tab"))}function ue(t){return t.getAttribute("id")}function pe(t,n){return t.querySelector(`:scope > [slot='label-${n}']`)}function be(t,n){const e=ue(n);return e&&function(t,n){return null!==pe(t,n)}(t,e)?"slot":"text"}function ve(t){return t.hasAttribute("disabled")}function ge(t,n){const e=t.findIndex(t=>ue(t)===n);return 0>e?void 0:e}function me(t){const n=he(t),e=ye(t,n);return{id:e,index:(e?ge(n,e):void 0)??0}}function ye(t,n){const e=t.getAttribute("active");return e&&void 0!==ge(n,e)?e:n.length>0?ue(n[0]):null}function fe(t,n){t.setAttribute("active",n)}function we(t,n,e){e.preventDefault(),e.stopPropagation(),fe(t,n)}function xe(t){const n=ae.get(t);if(!n)return;const e=t.shadowRoot;e&&(n.tabClickHandlers.forEach((t,n)=>{const i=e.querySelector(`[data-tab-id='${n}']`);i&&i.removeEventListener("pointerdown",t)}),n.tabKeyClickHandlers.forEach((t,n)=>{const i=e.querySelector(`[data-tab-id='${n}']`);i&&i.removeEventListener("click",t)}),n.tabClickHandlers.clear(),n.tabKeyClickHandlers.clear())}function ke(t,n,e){xe(t);const i={tabClickHandlers:new Map,tabKeyClickHandlers:new Map};e.forEach(e=>{const o=ue(e);if(!o)return;const s=n.querySelector(`[data-tab-id='${o}']`);if(s){const n=n=>we(t,o,n),e=n=>{0===n.detail&&we(t,o,n)};s.addEventListener("pointerdown",n),s.addEventListener("click",e),i.tabClickHandlers.set(o,n),i.tabKeyClickHandlers.set(o,e)}}),ae.set(t,i)}function $e(t,n){const e=t.shadowRoot;if(!e)return;const i=e.querySelector(".panels-wrapper");i&&(i.style.transform=`translateX(-${n*t.offsetWidth}px)`)}function ze(t,n,e){he(t).forEach(i=>{const o=ue(i);if(!o)return;const s=n.querySelector(`[data-tab-id='${o}']`),r=o===e;if(s){s.setAttribute("aria-selected",r+""),s.setAttribute("tabindex",r?"0":"-1"),s.setAttribute("data-active",r+"");const n=pe(t,o);n&&n.setAttribute("data-active",r+"")}})}function Ce(t,n){he(t).forEach(t=>{const e=ue(t);if(!e)return;const i=e===n;t.setAttribute("data-active",i+""),i?(t.style.pointerEvents="auto",t.style.opacity="1"):(t.style.pointerEvents="none",t.style.opacity="0")})}function Ee(t,n,e=!1){const i=t.shadowRoot;if(!i)return;const o=i.querySelector(".marker-wrapper");if(!o)return;const s=function(t,n,e){const i=n.querySelector(`[data-tab-id='${e}']`),o=n.querySelector(".tab-buttons");return i&&o?{left:i.offsetLeft,top:i.offsetTop,width:i.offsetWidth,height:i.offsetHeight}:null}(0,i,n);if(!s)return;const r=e||!o.style.left||0===o.offsetWidth;r&&(o.style.transition="none"),o.style.left=s.left+"px",o.style.top=s.top+"px",o.style.width=s.width+"px",o.style.height=s.height+"px",r&&(o.style.transition="")}function Te(t){t.querySelector(".tab-overflow-trigger")?.remove()}function Se(t){const n=t.shadowRoot;if(!n)return;const e=n.querySelector(".tab-buttons"),i=n.querySelector(".tab-strip");if(!e||!i)return;if(de(t).fixed)return Te(n),i.classList.add("unclipped"),i.style.removeProperty("--fade-left"),void i.style.removeProperty("--fade-right");const o=i.scrollLeft;if(Te(n),0>=i.clientWidth)return;const s=i.querySelectorAll(".tab-button"),r=s[s.length-1],a=(r?r.offsetLeft+r.offsetWidth:0)-i.clientWidth;if(i.classList.toggle("unclipped",1>=a),1>=a)return i.scrollLeft=o,void Me(i);!function(t,n,e){const i=ye(t,e),o=document.createElement("button");o.className="tab-overflow-trigger",o.type="button",o.setAttribute("aria-label",e.length+" tabs"),o.textContent="⋯";const s=document.createElement("ty-popup");s.setAttribute("placement","bottom");const r=document.createElement("div");r.className="tab-overflow-menu",r.setAttribute("role","menu"),e.forEach(n=>{const e=ue(n);if(!e)return;const o=document.createElement("button");o.type="button",o.className="tab-overflow-item",o.setAttribute("role","menuitem"),o.setAttribute("data-tab-id",e),o.setAttribute("data-active",(e===i)+""),o.textContent=function(t,n){const e=ue(n);if(e&&"slot"===be(t,n)){const n=pe(t,e);return n?.textContent?.trim()||e}return n.getAttribute("label")||"Tab"}(t,n),ve(n)?o.disabled=!0:o.addEventListener("click",()=>{fe(t,e),s.closePopup?.()}),r.appendChild(o)}),s.appendChild(r),o.appendChild(s),n.appendChild(o)}(t,e,he(t)),a>e.clientWidth-i.clientWidth||Te(n),i.scrollLeft=o,Me(i)}function Me(t){const n=t.scrollWidth-t.clientWidth,e=t=>(t>1?Math.min(28,t):0)+"px";t.style.setProperty("--fade-left",e(t.scrollLeft)),t.style.setProperty("--fade-right",e(n-t.scrollLeft))}function _e(t,n,e){const i=t.shadowRoot;if(!i)return;const o=i.querySelector(".tab-strip"),s=i.querySelector(`[data-tab-id='${n}']`);if(!o||!s||0>=o.clientWidth)return;const r=Math.max(0,Math.min(s.offsetLeft+s.offsetWidth/2-o.clientWidth/2,o.scrollWidth-o.clientWidth));if(Math.round(r)!==Math.round(o.scrollLeft)){const t=window.matchMedia("(prefers-reduced-motion: reduce)").matches;o.scrollTo({left:r,behavior:e&&!t?"smooth":"auto"})}}function De(t){const n=t.shadowRoot;if(!n)return;const{width:e,height:i,placement:o,fixed:s}=de(t),r=he(t),l=ye(t,r),c=l?ge(r,l)??0:0;r.forEach(t=>{const n=ue(t);n&&(t.setAttribute("role","tabpanel"),t.setAttribute("aria-labelledby","tab-"+n),t.setAttribute("tabindex","0"))});const d=n.querySelector(".tabs-container"),h=n.querySelector(".tab-buttons"),u=n.querySelector(".tab-strip"),p=n.querySelector(".panels-viewport");if(a(n,{css:'\n:host {\ndisplay: block;\nwidth: var(--tabs-width, 100%);\nheight: var(--tabs-height, 400px);\nbox-sizing: border-box;\n}\n.tabs-container {\nwidth: 100%;\nheight: 100%;\ndisplay: flex;\nflex-direction: column;\nposition: relative;\nbox-sizing: border-box;\n}\n.tabs-container[data-placement="bottom"] {\nflex-direction: column-reverse;\n}\n.tab-buttons {\ndisplay: flex;\ngap: 0;\nflex-shrink: 0;\nposition: relative;\nbackground: transparent;\n}\n.tab-buttons::after {\ncontent: "";\nposition: absolute;\nleft: 0;\nright: 0;\nbottom: 0;\nheight: 1px;\nbackground: var(--ty-tabs-separator, var(--ty-border));\npointer-events: none;\n}\n.tabs-container[data-placement="bottom"] .tab-buttons::after {\nbottom: auto;\ntop: 0;\n}\n.tab-strip {\ndisplay: flex;\nflex: 1 1 auto;\nmin-width: 0;\nposition: relative;\nz-index: 1;\noverflow-x: auto;\nscrollbar-width: none;\n--fade-left: 0px;\n--fade-right: 0px;\n-webkit-mask-image: linear-gradient(to right,\ntransparent, black var(--fade-left),\nblack calc(100% - var(--fade-right)), transparent);\nmask-image: linear-gradient(to right,\ntransparent, black var(--fade-left),\nblack calc(100% - var(--fade-right)), transparent);\n}\n.tab-strip::-webkit-scrollbar {\ndisplay: none;\n}\n.tab-strip.unclipped {\noverflow: visible;\n-webkit-mask-image: none;\nmask-image: none;\n}\n.marker-wrapper {\nposition: absolute;\nz-index: 0;\npointer-events: none;\ntransition: left var(--ty-tabs-transition-duration, 300ms) var(--ty-tabs-transition-easing, ease-in-out),\nwidth var(--ty-tabs-transition-duration, 300ms) var(--ty-tabs-transition-easing, ease-in-out),\nheight var(--ty-tabs-transition-duration, 300ms) var(--ty-tabs-transition-easing, ease-in-out),\ntop var(--ty-tabs-transition-duration, 300ms) var(--ty-tabs-transition-easing, ease-in-out);\n}\n.default-marker {\nposition: absolute;\nbottom: 0;\nleft: 0;\nheight: 3px;\nwidth: 100%;\nbackground: var(--ty-color-primary);\npointer-events: none;\n}\n.tabs-container[data-placement="bottom"] .default-marker {\nbottom: auto;\ntop: 0;\n}\n::slotted([slot="marker"]) {\ndisplay: block;\nwidth: 100%;\nheight: 100%;\nbox-sizing: border-box;\n}\n.tab-button {\nmin-width: var(--ty-tab-min-width, 72px);\nflex-shrink: 0;\npadding: 6px 12px;\nborder: none;\nbackground: transparent;\ncursor: pointer;\nfont: inherit;\ncolor: var(--ty-text-soft);\ntransition: var(--ty-local-transition, color 200ms, background-color 200ms);\nwhite-space: nowrap;\ndisplay: inline-flex;\nalign-items: center;\njustify-content: center;\ngap: 8px;\nfont-weight: var(--ty-font-bold);\nfont-size: var(--ty-font-sm);\nposition: relative;\nz-index: 10;\n}\n.tabs-container[data-fixed] .tab-button {\nflex: 1 1 0;\nmin-width: 0;\n}\n.tabs-container[data-fixed] .tab-label {\noverflow: hidden;\ntext-overflow: ellipsis;\nwhite-space: nowrap;\n}\n.tab-button[aria-selected=true] {\ncolor: var(--ty-text-strong);\n}\n.tab-button[disabled] {\nopacity: 0.5;\ncursor: not-allowed;\npointer-events: none;\n}\n.tab-button:focus-visible {\noutline: 2px solid var(--ty-color-primary);\noutline-offset: -2px;\n}\n.tab-overflow-trigger {\nflex-shrink: 0;\nalign-self: center;\nmin-width: 36px;\nheight: 24px;\nmargin: 0 8px;\npadding: 0 10px;\nborder: 1px solid var(--ty-border);\nborder-radius: 9999px;\nbackground: transparent;\ncursor: pointer;\ncolor: var(--ty-text-soft);\nfont-size: 16px;\nline-height: 1;\ndisplay: inline-flex;\nalign-items: center;\njustify-content: center;\nposition: relative;\nz-index: 10;\ntransition: color 200ms, border-color 200ms;\n}\n.tab-overflow-trigger:hover {\ncolor: var(--ty-text-strong);\nborder-color: var(--ty-text-soft);\n}\n.tab-overflow-trigger:focus-visible {\noutline: 2px solid var(--ty-color-primary);\noutline-offset: -2px;\n}\n.tab-overflow-menu {\ndisplay: flex;\nflex-direction: column;\nmin-width: 160px;\nmax-height: 300px;\noverflow-y: auto;\npadding: var(--ty-spacing-2, 4px);\nbackground: var(--ty-surface-floating);\nborder-radius: var(--ty-radius-md);\nbox-shadow: var(--ty-shadow-md, 0 1px 3px 0 rgba(0, 0, 0, 0.1), 0 1px 2px -1px rgba(0, 0, 0, 0.1));\n}\n.tab-overflow-item {\npadding: var(--ty-spacing-2, 6px) var(--ty-spacing-3, 12px);\nborder: none;\nbackground: transparent;\ntext-align: left;\ncursor: pointer;\nborder-radius: var(--ty-radius-md);\ncolor: var(--ty-text);\nfont: inherit;\nfont-size: var(--ty-font-sm);\nwhite-space: nowrap;\n}\n.tab-overflow-item:hover {\nbackground: var(--ty-bg-neutral-soft);\ncolor: var(--ty-text-strong);\n}\n.tab-overflow-item[data-active="true"] {\ncolor: var(--ty-color-primary);\nfont-weight: var(--ty-font-bold);\n}\n.tab-overflow-item[disabled] {\nopacity: 0.5;\ncursor: not-allowed;\n}\n.panels-viewport {\nposition: relative;\nflex: 1;\noverflow: hidden;\nmin-height: 0;\n}\n.panels-wrapper {\ndisplay: flex;\nheight: 100%;\ntransition: transform var(--ty-tabs-transition-duration, 300ms) var(--ty-tabs-transition-easing, ease-in-out);\n}\n@media (prefers-reduced-motion: reduce) {\n.panels-wrapper {\ntransition-duration: 0ms !important;\n}\n.marker-wrapper {\ntransition-duration: 0ms !important;\n}\n}\n::slotted(ty-tab) {\nwidth: var(--tabs-page-width, var(--tabs-width, 100%));\nheight: 100%;\nflex-shrink: 0;\n}\n',id:"ty-tabs"}),t.style.setProperty("--tabs-width",e.includes("%")?"100%":e),t.style.setProperty("--tabs-height",i),t.style.setProperty("--active-index",c+""),d&&h&&u&&p){d.setAttribute("data-placement",o),d.toggleAttribute("data-fixed",s);const e=u.scrollLeft;h.querySelector(".tab-overflow-trigger")?.remove(),u.querySelectorAll(".tab-button").forEach(t=>t.remove());const i=function(t,n,e){return n.map(n=>{const i=ue(n);if(!i)return"";const o=be(t,n),s="text"===o?n.getAttribute("label")||"Tab":"",r=ve(n),a=i===e;return`<button\nclass="tab-button"\nrole="tab"\ndata-tab-id="${i}"\nid="tab-${i}"\naria-selected="${a}"\ntabindex="${a?"0":"-1"}"\ndata-active="${a}"\n${r?'disabled aria-disabled="true"':""}\n>\n${"slot"===o?`<slot name="label-${i}"></slot>`:`<span class="tab-label">${s}</span>`}\n</button>`}).join("")}(t,r,l),a=document.createElement("div");a.innerHTML=i,Array.from(a.children).forEach(t=>{u.appendChild(t)}),u.scrollLeft=e,ke(t,n,r),ze(t,n,l||""),requestAnimationFrame(()=>{const e=n.querySelector(".tab-buttons");e&&t.style.setProperty("--buttons-height",e.offsetHeight+"px");const i=me(t);$e(t,i.index),Se(t),i.id&&(Ee(t,i.id),_e(t,i.id,!0))}),l&&Ce(t,l)}else{ce.add(t),n.innerHTML=`\n<div class="tabs-container" data-placement="${o}"${s?" data-fixed":""}>\n${function(t,n,e){const i=n.map(n=>{const i=ue(n);if(!i)return"";const o=be(t,n),s="text"===o?n.getAttribute("label")||"Tab":"",r=ve(n),a=i===e;return`<button\nclass="tab-button"\nrole="tab"\ndata-tab-id="${i}"\nid="tab-${i}"\naria-selected="${a}"\ntabindex="${a?"0":"-1"}"\ndata-active="${a}"\n${r?'disabled aria-disabled="true"':""}\n>\n${"slot"===o?`<slot name="label-${i}"></slot>`:`<span class="tab-label">${s}</span>`}\n</button>`}).join("");return`\n<div class="tab-buttons" role="tablist" part="buttons-container">\n<div class="tab-strip" part="strip">\n<div class="marker-wrapper" part="marker-wrapper">\n${o=t,null===o.querySelector('[slot="marker"]')?'<div class="default-marker"></div>':""}\n<slot name="marker"></slot>\n</div>\n${i}\n</div>\n</div>\n`;var o}(t,r,l)}\n<div class="panels-viewport" part="panels-container">\n<div class="panels-wrapper">\n<slot></slot>\n</div>\n</div>\n</div>\n`,requestAnimationFrame(()=>{const e=n.querySelector(".tab-buttons");e&&t.style.setProperty("--buttons-height",e.offsetHeight+"px");const i=me(t);$e(t,i.index),Se(t),i.id&&(Ee(t,i.id),_e(t,i.id,!1))}),ke(t,n,r),ze(t,n,l||""),function(t){const n=le.get(t);n&&n.disconnect();const e=new ResizeObserver(n=>{const e=n[0],{width:i}=de(t),o=he(t),s=ye(t,o),r=s?ge(o,s):0;i.includes("%")&&t.style.setProperty("--tabs-page-width",e.contentRect.width+"px"),void 0!==r&&$e(t,r),Se(t),s&&(Ee(t,s),_e(t,s,!1))});e.observe(t),le.set(t,e)}(t);const e=n.querySelector(".tab-strip");e?.addEventListener("scroll",()=>Me(e),{passive:!0}),l&&Ce(t,l);const i=n.querySelector('slot[name="marker"]');if(i){const t=()=>{const t=n.querySelector(".default-marker");if(t){const n=i.assignedElements().length>0;t.style.display=n?"none":""}};i.addEventListener("slotchange",t),t()}}}class TyTabs extends HTMLElement{constructor(){super(),this.jn=null,this.Rn=!1,this.attachShadow({mode:"open"})}static get observedAttributes(){return["width","height","active","placement","fixed"]}connectedCallback(){De(this),this.jn=new MutationObserver(()=>{this.Rn||(this.Rn=!0,queueMicrotask(()=>{this.Rn=!1,this.isConnected&&De(this)}))}),this.jn.observe(this,{childList:!0})}disconnectedCallback(){this.jn?.disconnect(),this.jn=null,xe(this),function(t){const n=le.get(t);n&&(n.disconnect(),le.delete(t))}(this)}attributeChangedCallback(t,n,e){if("active"===t){if(!e)return;if(!this.shadowRoot?.querySelector(`[data-tab-id='${e}']`))return void De(this);(function(t,n,e){const i=he(t),o=t.shadowRoot;if(!o)return;const s=e?ge(i,e):void 0,r=ge(i,n);if(e===n||void 0===r)return;t.style.setProperty("--active-index",r+""),$e(t,r),ze(t,o,n),Ce(t,n),Ee(t,n,ce.delete(t)),o.querySelectorAll(".tab-overflow-item").forEach(t=>{t.setAttribute("data-active",(t.dataset.tabId===n)+"")});const a=i[r];a?.resetScroll&&a.resetScroll(),function(t,n,e,i,o){const s=new CustomEvent("ty-tab-change",{detail:{activeId:n,activeIndex:e,previousId:i,previousIndex:o},bubbles:!0,cancelable:!1});t.dispatchEvent(s)}(t,n,r,e,s??null)})(this,e,n),_e(this,e,!0)}else De(this)}}customElements.get("ty-tabs")||customElements.define("ty-tabs",TyTabs);const qe=`\n:host {\nwidth: var(--tabs-width, 100%);\nheight: calc(var(--tabs-height, 400px) - var(--buttons-height, 48px));\ndisplay: block;\nbox-sizing: border-box;\nflex-shrink: 0;\ntransition: opacity var(--ty-tabs-transition-duration, 400ms) var(--ty-tabs-transition-easing, ease-in-out);\n}\n@media (prefers-reduced-motion: reduce) {\n:host {\ntransition-duration: 0ms !important;\n}\n}\n.tab-wrapper {\nwidth: 100%;\nheight: 100%;\nposition: relative;\noverflow: hidden;\n}\n.tab-panel {\nwidth: 100%;\nheight: 100%;\noverflow: auto;\nbox-sizing: border-box;\n}\n.tab-panel.ty-custom-scroll {\nscrollbar-width: none;\n-ms-overflow-style: none;\n}\n.tab-panel.ty-custom-scroll::-webkit-scrollbar {\ndisplay: none;\n}\n.tab-wrapper:hover .ty-scrollbar-track-y.has-overflow {\nopacity: 1;\n}\n${Dt}\n`;class TyTab extends HTMLElement{constructor(){super(),this.nn=null,this.attachShadow({mode:"open"})}static get observedAttributes(){return["id","label","disabled"]}connectedCallback(){this.Yn()}disconnectedCallback(){this.en()}attributeChangedCallback(t,n,e){this.Yn()}Yn(){const t=this.shadowRoot;if(!t)return;const n=this.getAttribute("id");t.querySelector(".tab-wrapper")||(a(t,{css:qe,id:"ty-tab"}),t.innerHTML=`\n<div class="tab-wrapper"\nrole="tabpanel"\n${n?`id="panel-${n}"`:""}\n${n?`aria-labelledby="tab-${n}"`:""}\n>\n<div class="tab-panel">\n<slot></slot>\n</div>\n</div>\n`,this.sn())}sn(){const t=this.shadowRoot?.querySelector(".tab-panel"),n=this.shadowRoot?.querySelector(".tab-wrapper");t&&n&&Mt()&&(t.classList.add("ty-custom-scroll"),this.nn=new _t(t,{vertical:!0}),this.nn.trackY&&n.appendChild(this.nn.trackY))}en(){this.nn&&(this.nn.trackY?.remove(),this.nn.destroy(),this.nn=null)}resetScroll(){this.nn?.scrollToTop(!1)}}customElements.get("ty-tab")||customElements.define("ty-tab",TyTab);const Ae=new WeakMap,je=new WeakMap;function Ie(t){return{width:t.getAttribute("width")||"100%",height:t.getAttribute("height")||"700px",active:t.getAttribute("active"),completed:t.getAttribute("completed")||"",orientation:t.getAttribute("orientation")||"horizontal"}}function Le(t){return Array.from(t.querySelectorAll("ty-step"))}function Ve(t){return t.getAttribute("id")}function Fe(t){const n=t.getAttribute("completed")||"";return n.trim()?new Set(n.split(",").map(t=>t.trim()).filter(Boolean)):new Set}function Oe(t,n){const e=t.findIndex(t=>Ve(t)===n);return 0>e?void 0:e}function He(t,n){const e=t.getAttribute("active");return e&&void 0!==Oe(n,e)?e:n.length>0?Ve(n[0]):null}function Ne(t,n){return t.length>1&&n?t.findIndex(t=>Ve(t)===n)/(t.length-1)*100:0}function Pe(t){const n=Ae.get(t);if(!n)return;const e=t.shadowRoot;e&&(n.stepClickHandlers.forEach((t,n)=>{const i=e.querySelector(`[data-step-id='${n}']`);i&&i.removeEventListener("pointerdown",t)}),n.stepClickHandlers.clear())}function We(t,n,e){Pe(t);const i={stepClickHandlers:new Map};e.forEach(e=>{const o=Ve(e);if(!o)return;const s=n.querySelector(`[data-step-id='${o}']`);if(s){const n=n=>function(t,n,e){e.preventDefault(),e.stopPropagation();const i=Le(t),o=i.findIndex(t=>Ve(t)===n);if(0>o)return;const s=He(t,i),r=s?Oe(i,s)??null:null,a=new CustomEvent("ty-wizard-step-change",{detail:{activeId:n,activeIndex:o,previousId:s,previousIndex:r,direction:null===r?"none":o>r?"forward":r>o?"backward":"none"},bubbles:!0,cancelable:!1});t.dispatchEvent(a)}(t,o,n);s.addEventListener("pointerdown",n),i.stepClickHandlers.set(o,n)}}),Ae.set(t,i)}function Be(t,n){const e=t.shadowRoot;if(!e)return;const i=e.querySelector(".panels-wrapper");i&&(i.style.transform=`translateX(-${n*t.offsetWidth}px)`)}function Re(t){const n=t.shadowRoot;if(!n)return;const e=n.querySelector(".progress-overlay");if(!e)return;const i=Le(t),o=He(t,i);Fe(t);const s=Ne(i,o);e.style.width=s+"%"}function Ye(t,n,e){const i=Le(t),o=Fe(t);e&&i.findIndex(t=>Ve(t)===e),i.forEach(i=>{const s=Ve(i);if(!s)return;const r=n.querySelector(`[data-step-id='${s}']`),a=n.querySelector(`[data-step-id='${s}'] .step-circle`),l=s===e;if(r&&(r.setAttribute("aria-selected",l+""),r.setAttribute("tabindex",l?"0":"-1"),r.setAttribute("data-active",l+"")),a){const t=Xe(i,s,e,o);a.setAttribute("data-state",t)}const c=t.querySelector(`[slot='indicator-${s}']`);c&&c.setAttribute("data-active",l+"")})}function Ue(t,n){Le(t).forEach(t=>{const e=Ve(t);if(!e)return;const i=e===n;t.setAttribute("data-active",i+""),i?(t.style.pointerEvents="auto",t.style.opacity="1"):(t.style.pointerEvents="none",t.style.opacity="0")})}function Xe(t,n,e,i){const o=t.getAttribute("status");if(o&&["completed","active","pending","error"].includes(o))return o;const s=n===e;return i.has(n)?"completed":s?"active":"pending"}function Ke(t,n,e,i){e&&n.findIndex(t=>Ve(t)===e);const o=n.map((n,o)=>{const s=Ve(n);if(!s)return"";const r=n.getAttribute("label")||"Step "+(o+1),a=n.getAttribute("description")||"",l=function(t){return t.hasAttribute("disabled")}(n),c=s===e,d=function(t,n){return null!==t.querySelector(`[slot='indicator-${n}']`)}(t,s),h=Xe(n,s,e,i);let u="";return u=d?`<slot name="indicator-${s}"></slot>`:"completed"===h?'<svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="3" stroke-linecap="round" stroke-linejoin="round"><polyline points="20 6 9 17 4 12"></polyline></svg>':"error"===h?'<svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="3" stroke-linecap="round" stroke-linejoin="round"><line x1="18" y1="6" x2="6" y2="18"></line><line x1="6" y1="6" x2="18" y2="18"></line></svg>':`<span style="font-size: 12px; font-weight: 700;">${o+1}</span>`,`<button\nclass="step-indicator"\nrole="tab"\ndata-step-id="${s}"\nid="step-${s}"\naria-selected="${c}"\ntabindex="${c?"0":"-1"}"\ndata-active="${c}"\n${l?'disabled aria-disabled="true"':""}\n>\n<div class="step-circle" data-state="${h}" part="step-circle">\n${u}\n</div>\n<div class="step-text">\n<span class="step-label">${r}</span>\n${a?`<span class="step-description">${a}</span>`:""}\n</div>\n</button>`}).join(""),s=Ne(n,e);return`\n<div class="step-indicators-wrapper" part="indicators-wrapper">\n<div class="step-indicators" style="--ty-wizard-step-count: ${n.length}">\n<div class="progress-line" part="progress-line" role="progressbar" aria-label="Wizard progress" aria-valuenow="${Math.round(s)}" aria-valuemin="0" aria-valuemax="100">\n<div class="progress-overlay" style="width: ${s}%"></div>\n</div>\n<div class="step-tablist" role="tablist" style="display: contents;">\n${o}\n</div>\n</div>\n</div>\n`}function Ze(t){const n=t.shadowRoot;if(!n)return;const{width:e,height:i}=Ie(t),o=Le(t),s=He(t,o),r=s?Oe(o,s)??0:0,l=Fe(t);o.forEach(t=>{const n=Ve(t);n&&(t.setAttribute("role","tabpanel"),t.setAttribute("aria-labelledby","step-"+n),t.setAttribute("tabindex","0"))});const c=n.querySelector(".wizard-container"),d=n.querySelector(".step-indicators-wrapper"),h=n.querySelector(".panels-viewport");if(a(n,{css:'\n:host {\ndisplay: block;\nwidth: var(--ty-wizard-width, 100%); \nheight: var(--ty-wizard-height, 700px); \nbox-sizing: border-box;\n--ty-wizard-active-accent: var(--ty-color-primary);\n--ty-wizard-completed-accent: var(--ty-color-success);\n--ty-wizard-error-accent: var(--ty-color-danger);\n--ty-wizard-pending-accent: var(--ty-color-neutral);\n--ty-wizard-bg: var(--ty-surface-floating);\n--ty-wizard-border: var(--ty-border);\n--ty-wizard-radius: var(--ty-radius-lg, 12px);\n--ty-wizard-shadow: var(--ty-shadow-md, 0 1px 3px 0 rgba(0, 0, 0, 0.1), 0 1px 2px -1px rgba(0, 0, 0, 0.1));\n--ty-wizard-header-bg: var(--ty-surface-content);\n--ty-wizard-header-border: var(--ty-border-soft, var(--ty-border));\n--ty-wizard-header-padding: 24px 24px 16px;\n--ty-wizard-progress-track: var(--ty-border);\n--ty-wizard-progress-fill: var(--ty-wizard-completed-accent);\n--ty-wizard-progress-height: 2px;\n--ty-wizard-transition-duration: var(--ty-transition-duration, 300ms);\n--ty-wizard-transition-easing: var(--ty-transition-easing, ease-in-out);\n--ty-wizard-circle-size: 32px;\n--ty-wizard-circle-border-width: 2px;\n--ty-wizard-panels-bg: var(--ty-surface-elevated);\n--ty-wizard-focus-outline: var(--ty-wizard-active-accent);\n}\n.wizard-container {\nwidth: 100%;\nheight: 100%;\ndisplay: flex;\nflex-direction: column;\nposition: relative;\nbox-sizing: border-box;\nborder-radius: var(--ty-wizard-radius);\nborder: 1px solid var(--ty-wizard-border);\nbackground: var(--ty-wizard-bg);\nbox-shadow: var(--ty-wizard-shadow);\noverflow: hidden;\n}\n.step-indicators-wrapper {\ndisplay: flex;\nflex-direction: column;\nflex-shrink: 0;\nposition: relative;\npadding: var(--ty-wizard-header-padding);\nborder-bottom: 1px solid var(--ty-wizard-header-border);\nbackground: var(--ty-wizard-header-bg);\n}\n.progress-line {\nposition: absolute;\nleft: calc(50% / var(--ty-wizard-step-count, 4));\nright: calc(50% / var(--ty-wizard-step-count, 4));\ntop: calc(var(--ty-wizard-circle-size, 32px) / 2 - 1px);\nheight: var(--ty-wizard-progress-height);\nbackground: var(--ty-wizard-progress-track);\nz-index: 0;\npointer-events: none;\ntransition: opacity var(--ty-wizard-transition-duration) var(--ty-wizard-transition-easing);\n}\n.progress-overlay {\nposition: absolute;\nleft: 0;\ntop: 0;\nheight: 100%;\nbackground: var(--ty-wizard-progress-fill);\ntransition: width var(--ty-wizard-transition-duration) var(--ty-wizard-transition-easing);\nwill-change: width;\n}\n.step-indicators {\ndisplay: flex;\nalign-items: flex-start;\nposition: relative;\n}\n.step-indicator {\ndisplay: flex;\nflex-direction: column;\nalign-items: center;\ngap: 8px;\ncursor: pointer;\nbackground: transparent;\nborder: none;\npadding: 0;\nfont: inherit;\ntransition: opacity 200ms;\nflex: 1;\nmin-width: 0;\n}\n.step-indicator[aria-disabled="true"] {\nopacity: 0.4;\ncursor: not-allowed;\npointer-events: none;\n}\n.step-indicator:focus-visible {\noutline: 2px solid var(--ty-wizard-focus-outline);\noutline-offset: 4px;\nborder-radius: 50%;\n}\n.step-circle {\nwidth: var(--ty-wizard-circle-size);\nheight: var(--ty-wizard-circle-size);\nborder-radius: 50%;\nborder: var(--ty-wizard-circle-border-width) solid;\ndisplay: flex;\nalign-items: center;\njustify-content: center;\nposition: relative;\nz-index: 10;\ntransition: var(--ty-local-transition, all var(--ty-wizard-transition-duration) var(--ty-wizard-transition-easing));\nbox-sizing: border-box;\nflex-shrink: 0;\n}\n.step-circle[data-state="completed"] {\nbackground: var(--ty-wizard-completed-accent);\nborder-color: var(--ty-color-success-strong);\ncolor: oklch(\nfrom var(--ty-wizard-completed-accent)\nclamp(0, (var(--ty-solid-fg-threshold, 0.57) - l) * 1000, 1) 0 0\n);\nbox-shadow: 0 0 0 4px color-mix(in oklab, var(--ty-wizard-completed-accent) 12%, transparent);\n}\n.step-circle[data-state="active"] {\nbackground: var(--ty-wizard-active-accent);\nborder-color: var(--ty-color-primary-strong);\ncolor: oklch(\nfrom var(--ty-wizard-active-accent)\nclamp(0, (var(--ty-solid-fg-threshold, 0.57) - l) * 1000, 1) 0 0\n);\nbox-shadow: 0 0 0 4px color-mix(in oklab, var(--ty-wizard-active-accent) 12%, transparent);\n}\n.step-circle[data-state="pending"] {\nbackground: var(--ty-surface-elevated);\nborder-color: var(--ty-border);\ncolor: var(--ty-color-neutral);\n}\n.step-circle[data-state="error"] {\nbackground: var(--ty-wizard-error-accent);\nborder-color: var(--ty-color-danger-strong);\ncolor: oklch(\nfrom var(--ty-wizard-error-accent)\nclamp(0, (var(--ty-solid-fg-threshold, 0.57) - l) * 1000, 1) 0 0\n);\nbox-shadow: 0 0 0 4px color-mix(in oklab, var(--ty-wizard-error-accent) 12%, transparent);\n}\n.step-text {\ndisplay: flex;\nflex-direction: column;\ngap: 2px;\nalign-items: center;\n}\n.step-label {\nfont-size: var(--ty-font-sm, 14px);\nfont-weight: var(--ty-font-semibold, 600);\ncolor: var(--ty-color-neutral);\ntransition: var(--ty-local-transition, color 200ms);\n}\n.step-indicator[aria-selected="true"] .step-label {\ncolor: var(--ty-color-neutral-strong);\n}\n.step-indicator[aria-selected="false"] .step-label {\ncolor: var(--ty-color-neutral);\n}\n.step-description {\nfont-size: var(--ty-font-xs, 12px);\nfont-weight: var(--ty-font-normal, 400);\ncolor: var(--ty-color-neutral);\ntransition: var(--ty-local-transition, color 200ms);\ntext-align: center;\nmax-width: 120px;\n}\n.step-indicator[aria-selected="true"] .step-description {\ncolor: var(--ty-color-neutral-bold);\n}\n::slotted([slot^="indicator-"]) {\ndisplay: flex;\nalign-items: center;\njustify-content: center;\nwidth: 100%;\nheight: 100%;\n}\n.panels-viewport {\nposition: relative;\nflex: 1;\noverflow: hidden;\nmin-height: 0;\nbackground: var(--ty-wizard-panels-bg);\n}\n.panels-wrapper {\ndisplay: flex;\nheight: 100%;\ntransition: transform var(--ty-wizard-transition-duration) var(--ty-wizard-transition-easing);\nwill-change: transform;\n}\n::slotted(ty-step) {\nwidth: var(--ty-wizard-width, 100%);\nheight: 100%;\nflex-shrink: 0;\n}\n@media (prefers-reduced-motion: reduce) {\n.panels-wrapper {\ntransition-duration: 0ms !important;\n}\n.progress-overlay {\ntransition-duration: 0ms !important;\n}\n.step-circle {\ntransition-duration: 0ms !important;\n}\n.progress-line {\ntransition-duration: 0ms !important;\n}\n}\n.sr-only {\nposition: absolute;\nwidth: 1px;\nheight: 1px;\npadding: 0;\nmargin: -1px;\noverflow: hidden;\nclip: rect(0, 0, 0, 0);\nwhite-space: nowrap;\nborder-width: 0;\n}\n',id:"ty-wizard"}),t.style.setProperty("--ty-wizard-width",e.includes("%")?"100%":e),t.style.setProperty("--ty-wizard-height",i),t.style.setProperty("--ty-wizard-active-index",r+""),t.style.setProperty("--ty-wizard-step-count",o.length+""),c&&d&&h){d.remove();const e=Ke(t,o,s,l),i=document.createElement("div");i.innerHTML=e,c.insertBefore(i.firstElementChild,h),We(t,n,o),Ye(t,n,s||""),requestAnimationFrame(()=>{const e=n.querySelector(".step-indicators-wrapper");e&&t.style.setProperty("--ty-wizard-indicators-height",e.offsetHeight+"px"),Be(t,r),Re(t)}),s&&Ue(t,s)}else n.innerHTML=`\n<div class="wizard-container">\n${Ke(t,o,s,l)}\n<div class="panels-viewport" part="panels-container">\n<div class="panels-wrapper">\n<slot></slot>\n</div>\n</div>\n</div>\n`,requestAnimationFrame(()=>{const e=n.querySelector(".step-indicators-wrapper");e&&t.style.setProperty("--ty-wizard-indicators-height",e.offsetHeight+"px"),Be(t,r),Re(t)}),We(t,n,o),Ye(t,n,s||""),function(t){const n=je.get(t);n&&n.disconnect();const{width:e}=Ie(t);if(e.includes("%")){const n=new ResizeObserver(n=>{const e=n[0].contentRect.width,i=Le(t),o=He(t,i),s=o?Oe(i,o):0;t.style.setProperty("--ty-wizard-width",e+"px"),void 0!==s&&Be(t,s)});n.observe(t),je.set(t,n)}}(t),s&&Ue(t,s)}class TyWizard extends HTMLElement{constructor(){super(),this.jn=null,this.Rn=!1,this.attachShadow({mode:"open"})}static get observedAttributes(){return["width","height","active","completed","orientation"]}connectedCallback(){Ze(this),this.jn=new MutationObserver(()=>{this.Rn||(this.Rn=!0,queueMicrotask(()=>{this.Rn=!1,this.isConnected&&Ze(this)}))}),this.jn.observe(this,{childList:!0})}disconnectedCallback(){this.jn?.disconnect(),this.jn=null,Pe(this),function(t){const n=je.get(t);n&&(n.disconnect(),je.delete(t))}(this)}attributeChangedCallback(t,n,e){"active"===t?(e&&function(t,n){const e=Le(t),i=t.shadowRoot;if(!i)return;const o=He(t,e),s=o?Oe(e,o):void 0,r=Oe(e,n);if(o===n||void 0===r)return;t.style.setProperty("--ty-wizard-active-index",r+""),Be(t,r),Ye(t,i,n),Re(t),Ue(t,n);const a=e[r];a?.resetScroll&&a.resetScroll(),function(t,n,e,i,o){const s=new CustomEvent("ty-wizard-step-change",{detail:{activeId:n,activeIndex:e,previousId:i,previousIndex:o,direction:null===o?"none":e>o?"forward":o>e?"backward":"none"},bubbles:!0,cancelable:!1});t.dispatchEvent(s)}(t,n,r,o,s??null)}(this,e),Ze(this)):Ze(this)}}customElements.get("ty-wizard")||customElements.define("ty-wizard",TyWizard);const Je=`\n:host {\nwidth: var(--ty-wizard-width, 100%);\nheight: calc(var(--ty-wizard-height, 700px) - var(--ty-wizard-indicators-height, 120px));\ndisplay: block;\nbox-sizing: border-box;\nflex-shrink: 0;\ntransition: opacity var(--ty-wizard-transition-duration, 400ms) var(--ty-wizard-transition-easing, ease-in-out);\n}\n@media (prefers-reduced-motion: reduce) {\n:host {\ntransition-duration: 0ms !important;\n}\n}\n.step-wrapper {\nwidth: 100%;\nheight: 100%;\nposition: relative;\noverflow: hidden;\n}\n.step-panel {\nwidth: 100%;\nheight: 100%;\noverflow: auto;\nbox-sizing: border-box;\n}\n.step-panel.ty-custom-scroll {\nscrollbar-width: none;\n-ms-overflow-style: none;\n}\n.step-panel.ty-custom-scroll::-webkit-scrollbar {\ndisplay: none;\n}\n.step-wrapper:hover .ty-scrollbar-track-y.has-overflow {\nopacity: 1;\n}\n${Dt}\n`;class TyStep extends HTMLElement{constructor(){super(),this.nn=null,this.attachShadow({mode:"open"})}static get observedAttributes(){return["id","label","description","disabled","status"]}connectedCallback(){this.Yn()}disconnectedCallback(){this.en()}attributeChangedCallback(t,n,e){this.Yn()}Yn(){const t=this.shadowRoot;if(!t)return;const n=this.getAttribute("id");t.querySelector(".step-wrapper")||(a(t,{css:Je,id:"ty-step"}),t.innerHTML=`\n<div class="step-wrapper"\nrole="tabpanel"\n${n?`id="panel-${n}"`:""}\n${n?`aria-labelledby="step-${n}"`:""}\n>\n<div class="step-panel">\n<slot></slot>\n</div>\n</div>\n`,this.sn())}sn(){const t=this.shadowRoot?.querySelector(".step-panel"),n=this.shadowRoot?.querySelector(".step-wrapper");t&&n&&Mt()&&(t.classList.add("ty-custom-scroll"),this.nn=new _t(t,{vertical:!0}),this.nn.trackY&&n.appendChild(this.nn.trackY))}en(){this.nn&&(this.nn.trackY?.remove(),this.nn.destroy(),this.nn=null)}resetScroll(){this.nn?.scrollToTop(!1)}}customElements.get("ty-step")||customElements.define("ty-step",TyStep);const Ge=(t,n)=>{const e=e=>n?`var(--ty-color-${t}${e}, var(--ty-color-${n}${e}))`:`var(--ty-color-${t}${e})`,i=e=>n?`var(--ty-bg-${t}${e}, var(--ty-bg-${n}${e}))`:`var(--ty-bg-${t}${e})`;return`\n:host([flavor="${t}"]) {\n--calendar-month-accent: ${e("")};\n--calendar-month-selected-bg: ${i("")};\n--calendar-month-selected-color: ${e("-strong")};\n--calendar-month-selected-hover-bg: ${i("-bold")};\n}\n:host([flavor="${t}+"]) {\n--calendar-month-accent: ${e("-strong")};\n--calendar-month-selected-bg: ${i("-bold")};\n--calendar-month-selected-color: ${e("-strong")};\n--calendar-month-selected-hover-bg: ${i("-bold")};\n}\n:host([flavor="${t}-"]) {\n--calendar-month-accent: ${e("-soft")};\n--calendar-month-selected-bg: ${i("-soft")};\n--calendar-month-selected-color: ${e("")};\n--calendar-month-selected-hover-bg: ${i("")};\n}\n`},Qe=`\n.calendar-flex-container {\ndisplay: flex;\nflex-direction: column;\nbox-sizing: border-box;\ngap: 0;\npadding: 0.75rem;\nborder-radius: var(--ty-radius-md);\nfont-family: inherit;\nuser-select: none;\nwidth: var(--calendar-width, fit-content);\nmin-width: var(--ty-calendar-width, 280px);\nmax-width: var(--calendar-max-width, none);\n}\n.calendar-row {\ndisplay: flex;\nflex: 1;\nmin-height: 0;\n}\n.calendar-header-row {\nflex: 0 0 auto;\ncolor: var(--ty-calendar-header-color, var(--ty-color-neutral-soft));\n}\n.calendar-day-row {\nflex: 1;\nmin-height: 2rem;\nmargin-bottom: 0.125rem;\n}\n.calendar-cell {\nflex: 1;\ndisplay: flex;\nalign-items: center;\njustify-content: center;\nmin-width: 0;\nposition: relative;\nbox-sizing: border-box;\n}\n.calendar-header-cell {\ntext-align: center;\nfont-weight: 500;\ntext-transform: uppercase;\npadding: 0.25rem;\nletter-spacing: 0.05em;\n}\n.calendar-day-cell {\naspect-ratio: 1;\ndisplay: flex;\nalign-items: center;\njustify-content: center;\nflex-direction: column;\nmargin: 0.125rem;\nborder-radius: var(--ty-calendar-day-radius, 0.5rem);\nborder: 1px solid var(--ty-calendar-day-border, transparent);\nbackground-color: var(--ty-calendar-day-bg, transparent);\ncolor: var(--ty-calendar-day-color, var(--ty-calendar-muted, var(--ty-text)));\ncursor: pointer;\ntransition: var(--ty-local-transition, background-color 0.15s ease, color 0.15s ease);\nfont-weight: 400;\nfont-variant-numeric: tabular-nums;\n}\n.calendar-day-cell:hover {\ncolor: var(--ty-calendar-day-hover-color, var(--ty-text-strong));\nbackground-color: var(--ty-calendar-day-hover-bg, var(--ty-bg-neutral-soft));\nborder-color: var(--ty-calendar-day-hover-border, transparent);\n}\n.calendar-day-cell:focus-visible {\noutline: none;\nbox-shadow: 0 0 0 2px var(--calendar-month-accent, var(--ty-color-primary));\n}\n.calendar-day-cell.today {\nbackground-color: var(--ty-calendar-today-bg, transparent);\ncolor: var(--ty-calendar-today-color, var(--ty-calendar-today-accent, var(--calendar-month-accent, var(--ty-color-primary))));\nborder-color: var(--ty-calendar-today-border, transparent);\nfont-weight: 600;\n}\n.calendar-day-cell.weekend {\ncolor: var(--ty-calendar-weekend-color, var(--ty-calendar-day-color, var(--ty-text)));\n}\n.calendar-day-cell.other-month {\ncolor: var(--ty-calendar-other-month-color, #6b7280);\n}\n.calendar-day-cell.other-month:hover { \ncolor: var(--ty-calendar-day-hover-color, var(--ty-color-neutral-strong));\nbackground-color: var(--ty-calendar-day-hover-bg, var(--ty-bg-neutral-soft));\nopacity: 0.7;\n}\n.calendar-day-cell.disabled {\ncolor: var(--ty-calendar-disabled-color, var(--ty-color-neutral-faint));\nopacity: var(--ty-calendar-disabled-opacity, 0.35);\ncursor: default;\npointer-events: none;\n}\n.calendar-day-cell.selected {\nbackground-color: var(--ty-calendar-selected-bg, var(--calendar-month-selected-bg, var(--ty-bg-primary)));\ncolor: var(--ty-calendar-selected-color, var(--calendar-month-selected-color, var(--ty-color-primary-strong)));\nborder-color: var(--ty-calendar-selected-border, var(--ty-calendar-accent, var(--calendar-month-accent, transparent)));\nfont-weight: 600;\n}\n.calendar-day-cell.selected:hover {\nbackground-color: var(--ty-calendar-selected-hover-bg, var(--calendar-month-selected-hover-bg, var(--ty-bg-primary-bold)));\nborder-color: var(--ty-calendar-selected-hover-border, transparent);\n}\n.calendar-day-cell.selected.other-month {\nopacity: 0.7;\n}\n.calendar-size-sm {\npadding: 0.5rem;\nmin-width: var(--ty-calendar-width, 240px);\n}\n.calendar-size-sm .calendar-header-cell {\nfont-size: 0.625rem;\npadding: 0.125rem;\n}\n.calendar-size-sm .calendar-day-cell {\nfont-size: 0.75rem;\nmargin: 0.0625rem;\n}\n.calendar-size-sm .calendar-day-row {\nmin-height: 1.5rem;\n}\n.calendar-size-md {\npadding: 0.75rem;\nmin-width: var(--ty-calendar-width, 280px);\n}\n.calendar-size-md .calendar-header-cell {\nfont-size: 0.6875rem;\npadding: 0.25rem;\n}\n.calendar-size-md .calendar-day-cell {\nfont-size: 0.8125rem;\nmargin: 0.125rem;\n}\n.calendar-size-md .calendar-day-row {\nmin-height: 2rem;\n}\n.calendar-size-lg {\npadding: 1rem;\nmin-width: var(--ty-calendar-width, 360px);\n}\n.calendar-size-lg .calendar-header-cell {\nfont-size: 0.75rem;\npadding: 0.375rem;\n}\n.calendar-size-lg .calendar-day-cell {\nfont-size: 0.875rem;\nmargin: 0.1875rem;\n}\n.calendar-size-lg .calendar-day-row {\nmin-height: 2.5rem;\n}\n.calendar-day {\nwidth: 100%;\nheight: 100%;\ndisplay: flex;\nflex-direction: column;\nalign-items: center;\njustify-content: center;\nbox-sizing: border-box;\n}\n${n.map(t=>Ge(t)).join("")}\n`;function ti(t){if(!Number.isInteger(t)||1>t||t>12)throw new RangeError(`Invalid month: ${t}. Must be an integer between 1 and 12.`)}function ni(t,n,e,i){const o=t.getFullYear(),s=t.getMonth()+1,r=t.getDate(),a=t.getDay(),l=o!==n||s!==e;let c=!1,d=!1;l&&(n>o||o===n&&e>s?c=!0:d=!0);const h=(p=function(){const t=new Date;return new Date(t.getFullYear(),t.getMonth(),t.getDate(),0,0,0,0)}(),(u=t).getFullYear()===p.getFullYear()&&u.getMonth()===p.getMonth()&&u.getDate()===p.getDate());var u,p;const b=i?.year===o&&i?.month===s&&i?.day===r;return{value:Date.UTC(o,s-1,r,0,0,0,0),localValue:t.getTime(),year:o,month:s,dayInMonth:r,weekend:0===a||6===a,otherMonth:l,prevMonth:c,nextMonth:d,today:h,isSelected:b,selectedYear:i?.year,selectedMonth:i?.month,selectedDay:i?.day}}function ei(t,n){const e=new Date(t);return e.setDate(e.getDate()+n),e}function ii(t){const n=t.match(/^(\d{4})-(\d{2})-(\d{2})$/);if(!n)return null;const e=parseInt(n[1],10),i=parseInt(n[2],10),o=parseInt(n[3],10);if(1>e||e>9999)return null;if(1>i||i>12)return null;if(1>o||o>31)return null;const s=new Date(e,i-1,o);return s.getFullYear()!==e||s.getMonth()!==i-1||s.getDate()!==o?null:{year:e,month:i,day:o}}function oi(t){return t instanceof HTMLElement}function si(t){if(!t)return null;const n=ii(t);return n?Date.UTC(n.year,n.month-1,n.day):null}function ri(t){if(!t||""===t)return null;const n=t+"";return/^\d+(\.\d+)?$/.test(n)?n+"px":n}class TyCalendarMonth extends HTMLElement{constructor(){super(),this.Un="en-US",this.xn="md",this.A=null,this.Xn=null,this.Kn=[];const t=new Date;this.Zn=t.getFullYear(),this.Jn=t.getMonth()+1,this.attachShadow({mode:"open"})}static get observedAttributes(){return["display-year","display-month","locale","size","min","max","flavor"]}connectedCallback(){this.Jn||(this.Jn=(new Date).getMonth()+1),this.Zn||(this.Zn=(new Date).getFullYear()),this.Un||(this.Un=this.getAttribute("locale")||"en-US");const t=this.getAttribute("size");!t||"sm"!==t&&"md"!==t&&"lg"!==t||(this.xn=t);const n=this.dayContentFn;n&&!this.Gn&&(this.Gn=n,delete this.dayContentFn);const e=this.customCSS;e&&!this.Qn&&(this.Qn=e,delete this.customCSS),this.nt=tt(this,()=>{this.render()}),this.j(),this.render()}disconnectedCallback(){this.nt&&(this.nt(),this.nt=void 0)}attributeChangedCallback(t,n,e){if("display-year"===t||"display-month"===t){const n=+e;Number.isInteger(n)&&("display-year"===t?n>0:n>=1&&12>=n)&&("display-year"===t?this.displayYear=n:this.displayMonth=n)}else"locale"===t?(this.Un=e||"en-US",this.render()):"size"===t?"sm"!==e&&"md"!==e&&"lg"!==e||(this.xn=e,this.render()):"min"===t||"max"===t?(this["min"===t?"te":"ne"]=e??void 0,this.render()):"flavor"===t&&this.j()}j(){this.A=v(this.shadowRoot,this.A,this.getAttribute("flavor"),({base:t})=>(t=>Ge(t,"neutral"))(t))}get displayYear(){return this.Zn}set displayYear(t){this.Zn!==t&&(this.Zn=t,this.Xn=null,this.render())}get displayMonth(){return this.Jn}set displayMonth(t){this.Jn!==t&&(this.Jn=t,this.Xn=null,this.render())}get locale(){return Q(this,this.getAttribute("locale"))}set locale(t){this.Un!==t&&(this.Un=t,this.render())}get size(){return this.xn}set size(t){this.xn!==t&&(this.xn=t,this.render())}get flavor(){return this.getAttribute("flavor")||"primary"}set flavor(t){t?this.setAttribute("flavor",t):this.removeAttribute("flavor")}get width(){return this.ee}set width(t){this.ee!==t&&(this.ee=t,this.applyWidthProperties())}get minWidth(){return this.ie}set minWidth(t){this.ie!==t&&(this.ie=t,this.applyWidthProperties())}get maxWidth(){return this.oe}set maxWidth(t){this.oe!==t&&(this.oe=t,this.applyWidthProperties())}get dayContentFn(){return this.Gn}set dayContentFn(t){this.Gn!==t&&(this.Gn=t,this.render())}get customCSS(){return this.Qn}set customCSS(t){this.Qn!==t&&(this.Qn=t,this.applyCustomCSS())}get min(){return this.te}set min(t){this.te!==t&&(this.te=t,this.render())}get max(){return this.ne}set max(t){this.ne!==t&&(this.ne=t,this.render())}get value(){return this.O}set value(t){const n=t??void 0;this.O!==n&&(this.O=n,this.render())}applyWidthProperties(){const t=ri(this.ee),n=ri(this.ie),e=ri(this.oe);t?this.style.setProperty("--calendar-width",t):this.style.removeProperty("--calendar-width"),n?this.style.setProperty("--calendar-min-width",n):this.style.removeProperty("--calendar-min-width"),e?this.style.setProperty("--calendar-max-width",e):this.style.removeProperty("--calendar-max-width")}applyCustomCSS(){if(!this.Qn||!this.shadowRoot)return;const t=this.shadowRoot.adoptedStyleSheets;t.includes(this.Qn)||(this.shadowRoot.adoptedStyleSheets=[...t,this.Qn])}refresh(){this.render()}dispatchDayClick(t,n){const e={dayContext:t,value:t.value,year:t.year,month:t.month,day:t.dayInMonth,isHoliday:t.holiday,isToday:t.today,isWeekend:t.weekend,isOtherMonth:t.otherMonth};for(const i of["day-click","day-select"]){const t=new CustomEvent(i,{detail:e,bubbles:!0,cancelable:!0});this.dispatchEvent(t)}}renderDayCell(t,n,e){const i=document.createElement("div"),o=this.Gn?this.Gn(t):function(t){return""+t.dayInMonth}(t);if(this.Gn&&o&&!oi(o)&&"string"!=typeof o)throw Error(`Custom dayContentFn must return a DOM element or string, got: ${typeof o}. Use document.createElement() to create DOM elements.`);const s=function(t){const n=["calendar-day"];return t.today&&n.push("today"),t.weekend&&n.push("weekend"),t.otherMonth&&n.push("other-month"),t.isSelected&&n.push("selected"),n}(t);return n&&s.push("disabled"),i.className=s.join(" "),"string"==typeof o?i.textContent=o:oi(o)&&i.appendChild(o),i.setAttribute("role","gridcell"),i.setAttribute("aria-label",new Intl.DateTimeFormat(this.Un,{weekday:"long",year:"numeric",month:"long",day:"numeric"}).format(new Date(t.localValue))),i.setAttribute("aria-selected",!!t.isSelected+""),t.today&&i.setAttribute("aria-current","date"),n?(i.setAttribute("aria-disabled","true"),i.setAttribute("tabindex","-1")):(i.setAttribute("tabindex",e?"0":"-1"),i.addEventListener("pointerdown",n=>{n.preventDefault(),this.dispatchDayClick(t,n)}),i.addEventListener("keydown",n=>{"Enter"!==n.key&&" "!==n.key||(n.preventDefault(),this.dispatchDayClick(t,n))})),i}render(){const t=this.shadowRoot;if(!t)return;let n;if(a(t,{css:Qe,id:"ty-calendar-month"}),this.applyCustomCSS(),this.applyWidthProperties(),this.O){const t=new Date(this.O);n={year:t.getFullYear(),month:t.getMonth()+1,day:t.getDate()}}const e=function(t,n,e){return function(t){if(!Number.isInteger(t)||1>t||t>9999)throw new RangeError(`Invalid year: ${t}. Must be an integer between 1 and 9999.`)}(t),ti(n),function(t,n,e,i,o){const s=[];for(let r=0;42>r;r++){const n=ei(t,r);s.push(ni(n,e,i,o))}return s}(function(t,n){const e=function(t,n){return new Date(t,n-1,1,0,0,0,0)}(t,n);return function(t){const n=t.getDay(),e=0===n?6:n-1,i=new Date(t);return i.setDate(t.getDate()-e),i.setHours(0,0,0,0),i}(e)}(t,n),0,t,n,e)}(this.Zn,this.Jn,n),i=function(t,n="short"){const e=new Intl.DateTimeFormat(t,{weekday:n}),i=new Date(2024,0,7),o=Array.from({length:7},(t,n)=>{const o=ei(i,n);return e.format(o)}),[s,...r]=o;return[...r,s]}(this.Un,"short");t.innerHTML="";const o=document.createElement("div");o.className="calendar-flex-container calendar-size-"+this.xn,o.setAttribute("role","grid"),o.setAttribute("aria-label",new Intl.DateTimeFormat(this.Un,{month:"long",year:"numeric"}).format(new Date(this.Zn,this.Jn-1,1)));const s=document.createElement("div");s.className="calendar-row calendar-header-row",s.setAttribute("role","row"),i.forEach(t=>{const n=document.createElement("div");n.className="calendar-cell calendar-header-cell",n.setAttribute("role","columnheader"),n.textContent=t,s.appendChild(n)}),o.appendChild(s);const r=[];for(let a=0;42>a;a+=7)r.push(e.slice(a,a+7));const l=si(this.te),c=si(this.ne),d=t=>{const n=e[t].value;return null!==l&&l>n||null!==c&&n>c},h=t=>{for(let n=0;42>n;n++)if(t(n)&&!d(n))return n;return-1};let u=h(t=>!!e[t].isSelected),p=!1;-1===u&&(u=h(t=>!!e[t].today)),-1===u&&(u=h(()=>!0),p=!0),-1===u&&(u=0),(null===this.Xn||0>this.Xn||this.Xn>41||d(this.Xn))&&(this.Xn=p?null:u);const b=this.Xn??u;this.Kn=[];let v=0;r.forEach(t=>{const n=document.createElement("div");n.className="calendar-row calendar-day-row",n.setAttribute("role","row"),t.forEach(t=>{const e=this.renderDayCell(t,null!==l&&l>t.value||null!==c&&t.value>c,v===b);e.className=e.className+" calendar-cell calendar-day-cell",n.appendChild(e),this.Kn[v]=e,v++}),o.appendChild(n)}),o.addEventListener("keydown",t=>{const n=t,e="ArrowLeft"===n.key?-1:"ArrowRight"===n.key?1:"ArrowUp"===n.key?-7:"ArrowDown"===n.key?7:0;if(0===e)return;const i=this.Xn??u,o=i+e;if(0>o||o>41||d(o))return;n.preventDefault(),this.Kn[i]?.setAttribute("tabindex","-1"),this.Xn=o;const s=this.Kn[o];s&&(s.setAttribute("tabindex","0"),s.focus())}),t.appendChild(o)}}customElements.get("ty-calendar-month")||customElements.define("ty-calendar-month",TyCalendarMonth);const ai='\n:host([data-size="md"]) {\n--nav-btn-size: 2rem;\n--nav-btn-icon-size: 1.25rem;\n--nav-font-size: 0.875rem;\n--nav-padding: 0.5rem 0.75rem;\n--nav-default-width: 280px;\n}\n:host([data-size="sm"]) {\n--nav-btn-size: 1.5rem;\n--nav-btn-icon-size: 1rem;\n--nav-font-size: 0.875rem;\n--nav-padding: 0.375rem 0.5rem;\n--nav-default-width: 240px;\n}\n:host([data-size="lg"]) {\n--nav-btn-size: 2.5rem;\n--nav-btn-icon-size: 1.5rem;\n--nav-font-size: 0.875rem;\n--nav-padding: 0.625rem 1rem;\n--nav-default-width: 360px;\n}\n.calendar-navigation-header {\ndisplay: flex;\nalign-items: center;\njustify-content: space-between;\npadding: var(--nav-padding);\nfont-family: inherit;\nuser-select: none;\nwidth: var(--nav-width, var(--ty-calendar-width, var(--nav-default-width)));\nbox-sizing: border-box;\n}\n.nav-group {\ndisplay: flex;\nalign-items: center;\ngap: 0.25rem;\n}\n.nav-group-left,\n.nav-group-right {\nflex: 0 0 auto;\n}\n.nav-group-center {\nflex: 1;\njustify-content: center;\nmin-width: 0;\n}\n.nav-btn {\ndisplay: inline-flex;\nalign-items: center;\njustify-content: center;\nwidth: var(--nav-btn-size);\nheight: var(--nav-btn-size);\npadding: 0;\nborder: none;\nborder-radius: var(--ty-radius-base);\nbackground-color: transparent;\ncolor: var(--ty-calendar-nav-color, var(--ty-color-neutral));\ncursor: pointer;\ntransition: var(--ty-local-transition, all 0.15s ease);\noutline: none;\n}\n.nav-btn:hover {\nbackground-color: var(--ty-calendar-nav-hover-bg, var(--ty-bg-neutral-soft));\ncolor: var(--ty-calendar-nav-hover-color, var(--ty-color-neutral-strong));\n}\n.nav-btn:active {\nbackground-color: var(--ty-calendar-nav-active-bg, var(--ty-bg-neutral));\ntransform: scale(0.95);\n}\n.nav-btn:disabled {\nopacity: 0.35;\ncursor: default;\npointer-events: none;\n}\n.nav-btn:focus-visible {\noutline: 2px solid var(--ty-calendar-nav-focus-outline, var(--ty-calendar-accent, var(--ty-color-primary)));\noutline-offset: 2px;\n}\n.nav-btn svg {\nwidth: var(--nav-btn-icon-size);\nheight: var(--nav-btn-icon-size);\ndisplay: block;\n}\n.month-year-display {\nfont-size: var(--nav-font-size);\nfont-weight: 600;\ncolor: var(--ty-calendar-nav-title-color, var(--ty-color-neutral-strong));\ntext-align: center;\nwhite-space: nowrap;\ntext-transform: uppercase;\nletter-spacing: 0.04em;\noverflow: hidden;\ntext-overflow: ellipsis;\n}\n',li=class t extends s{constructor(){super();const t=new Date;this.Cn={displayMonth:t.getMonth()+1,displayYear:t.getFullYear()},a(this.shadowRoot,{css:ai,id:"ty-calendar-navigation"})}onConnect(){this.Cn.displayMonth=this.displayMonth,this.Cn.displayYear=this.displayYear,this.nt=tt(this,()=>{this.render()}),this.render()}onDisconnect(){this.nt&&(this.nt(),this.nt=void 0)}onPropertiesChanged(t){for(const{name:n,newValue:e}of t)switch(n){case"display-month":this.Cn.displayMonth=e;break;case"display-year":this.Cn.displayYear=e}}get displayMonth(){return this.getProperty("display-month")}set displayMonth(t){this.setProperty("display-month",t)}get displayYear(){return this.getProperty("display-year")}set displayYear(t){this.setProperty("display-year",t)}get locale(){return Q(this,this.getProperty("locale"))}set locale(t){this.setProperty("locale",t)}get size(){return this.getProperty("size")}set size(t){this.setProperty("size",t)}get width(){return this.getProperty("width")}set width(t){this.setProperty("width",t)}get min(){return this.getProperty("min")}set min(t){this.setProperty("min",t??"")}get max(){return this.getProperty("max")}set max(t){this.setProperty("max",t??"")}emitChangeEvent(t,n){const e=new CustomEvent("change",{detail:{month:t,year:n},bubbles:!0,cancelable:!0});this.dispatchEvent(e)}static monthIndex(t,n){return 12*t+(n-1)}boundIndices(){const n=ii(this.min),e=ii(this.max);return{minIdx:n?t.monthIndex(n.year,n.month):null,maxIdx:e?t.monthIndex(e.year,e.month):null}}clampIndex(t){const{minIdx:n,maxIdx:e}=this.boundIndices();return null!==n&&n>t?n:null!==e&&t>e?e:t}navigateBy(n){const e=t.monthIndex(this.Cn.displayYear,this.Cn.displayMonth),i=this.clampIndex(e+n);i!==e&&this.emitChangeEvent(i%12+1,Math.floor(i/12))}isNavDisabled(n){const e=t.monthIndex(this.Cn.displayYear,this.Cn.displayMonth);return this.clampIndex(e+n)===e}createButton(t,n,e,i,o=!1){const s=document.createElement("button");return s.className=t,s.title=n,s.innerHTML=e,s.disabled=o,s.addEventListener("click",i),s}render(){const t=this.shadowRoot;if(!t)return;a(t,{css:ai,id:"ty-calendar-navigation"}),this.setAttribute("data-size",this.size);const n=this.width;n?this.style.setProperty("--nav-width",n):this.style.removeProperty("--nav-width");const e=function(t,n="en-US",e="long"){ti(t);const i=new Date(2024,t-1,1);return new Intl.DateTimeFormat(n,{month:e}).format(i)}(this.Cn.displayMonth,this.locale,"long");t.innerHTML="";const i=document.createElement("div");i.className="calendar-navigation-header";const o=document.createElement("div");o.className="nav-group nav-group-left",o.appendChild(this.createButton("nav-btn nav-year-prev","Previous year","<?xml version='1.0' encoding='UTF-8'?>\n<svg width='24' viewBox='0 0 24 24' height='24' enable-background='new 0 0 24 24' xmlns='http://www.w3.org/2000/svg' stroke-width='0' stroke='currentColor' fill='currentColor'>\n<g>\n<rect width='24' height='24' fill='none'/>\n</g>\n<g>\n<g>\n<polygon points='17.59,18 19,16.59 14.42,12 19,7.41 17.59,6 11.59,12'/>\n<polygon points='11,18 12.41,16.59 7.83,12 12.41,7.41 11,6 5,12'/>\n</g>\n</g>\n</svg>",()=>this.navigateBy(-12),this.isNavDisabled(-12))),o.appendChild(this.createButton("nav-btn nav-month-prev","Previous month","<?xml version='1.0' encoding='UTF-8'?>\n<svg width='24' viewBox='0 0 24 24' height='24' xmlns='http://www.w3.org/2000/svg' stroke-width='0' stroke='currentColor' fill='currentColor'>\n<path fill='none' d='M0 0h24v24H0V0z'/>\n<path d='M15.41 16.59L10.83 12l4.58-4.59L14 6l-6 6 6 6 1.41-1.41z'/>\n</svg>",()=>this.navigateBy(-1),this.isNavDisabled(-1)));const s=document.createElement("div");s.className="nav-group nav-group-center";const r=document.createElement("div");r.className="month-year-display",r.textContent=`${e} ${this.Cn.displayYear}`,s.appendChild(r);const l=document.createElement("div");l.className="nav-group nav-group-right",l.appendChild(this.createButton("nav-btn nav-month-next","Next month","<?xml version='1.0' encoding='UTF-8'?>\n<svg width='24' viewBox='0 0 24 24' height='24' xmlns='http://www.w3.org/2000/svg' stroke-width='0' stroke='currentColor' fill='currentColor'>\n<path fill='none' d='M0 0h24v24H0V0z'/>\n<path d='M8.59 16.59L13.17 12 8.59 7.41 10 6l6 6-6 6-1.41-1.41z'/>\n</svg>",()=>this.navigateBy(1),this.isNavDisabled(1))),l.appendChild(this.createButton("nav-btn nav-year-next","Next year","<?xml version='1.0' encoding='UTF-8'?>\n<svg width='24' viewBox='0 0 24 24' height='24' enable-background='new 0 0 24 24' xmlns='http://www.w3.org/2000/svg' stroke-width='0' stroke='currentColor' fill='currentColor'>\n<g>\n<rect width='24' height='24' fill='none'/>\n</g>\n<g>\n<g>\n<polygon points='6.41,6 5,7.41 9.58,12 5,16.59 6.41,18 12.41,12'/>\n<polygon points='13,6 11.59,7.41 16.17,12 11.59,16.59 13,18 19,12'/>\n</g>\n</g>\n</svg>",()=>this.navigateBy(12),this.isNavDisabled(12))),i.appendChild(o),i.appendChild(s),i.appendChild(l),t.appendChild(i)}};li.properties={"display-month":{type:"number",visual:!0,default:()=>(new Date).getMonth()+1,validate:t=>{const n=+t;return Number.isInteger(n)&&n>=1&&12>=n},coerce:t=>{const n=+t;return isNaN(n)||1>n||n>12?(new Date).getMonth()+1:n}},"display-year":{type:"number",visual:!0,default:()=>(new Date).getFullYear(),validate:t=>{const n=+t;return Number.isInteger(n)&&n>=1&&9999>=n},coerce:t=>{const n=+t;return isNaN(n)||1>n||n>9999?(new Date).getFullYear():n}},locale:{type:"string",visual:!0,default:"en-US"},size:{type:"string",visual:!0,default:"md",validate:t=>["sm","md","lg"].includes(t),coerce:t=>["sm","md","lg"].includes(t)?t:"md"},width:{type:"string",visual:!0,default:""},min:{type:"string",visual:!0,default:""},max:{type:"string",visual:!0,default:""}};let ci=li;function di(t){return t&&/^\d{4}$/.test(t)?parseInt(t,10):null}function hi(t){if(!t||!/^\d{1,2}$/.test(t))return null;const n=parseInt(t,10);return 1>n||n>12?null:n}function ui(t,n,e){if(!t||!/^\d{1,2}$/.test(t))return null;const i=parseInt(t,10),o=new Date(n,e,0).getDate();return 1>i||i>o?null:i}function pi(t,n,e){return`${t}-${(""+n).padStart(2,"0")}-${(""+e).padStart(2,"0")}`}customElements.get("ty-calendar-navigation")||customElements.define("ty-calendar-navigation",ci);const bi=class extends HTMLElement{constructor(){super(),this.se=!1,this.re=!1,this.xn="md",this.ae="primary",this.le="";const t=function(){const t=new Date;return{year:t.getFullYear(),month:t.getMonth()+1,day:t.getDate()}}();this.Cn={displayYear:t.year,displayMonth:t.month},this.attachShadow({mode:"open"}),"attachInternals"in this&&(this.$=this.attachInternals())}static get observedAttributes(){return["value","year","month","day","hide-navigation","stateless","locale","name","size","width","min","max","flavor"]}connectedCallback(){this.initializeFromAttributes();const t=this.dayContentFn;t&&!this.Gn&&(this.Gn=t,delete this.dayContentFn);const n=this.customCSS;n&&!this.Qn&&(this.Qn=n,delete this.customCSS);const e=this.value;if(e&&"string"==typeof e&&e!==this.value){const t=e.match(/^(\d{4})-(\d{2})-(\d{2})$/);if(t){const n=parseInt(t[1],10),e=parseInt(t[2],10),i=parseInt(t[3],10);this.Cn.selectedYear=n,this.Cn.selectedMonth=e,this.Cn.selectedDay=i,this.Cn.displayYear=n,this.Cn.displayMonth=e,this.re||(this.setAttribute("year",""+n),this.setAttribute("month",""+e),this.setAttribute("day",""+i))}delete this.value}this.render(),this.updateFormValue(),this.nt=tt(this,()=>{this.render()})}disconnectedCallback(){this.nt&&(this.nt(),this.nt=void 0),this.ce=void 0,this.de=void 0}attributeChangedCallback(t,n,e){if(n!==e)switch(t){case"value":this.value=e||"";break;case"year":case"month":case"day":this.syncStateFromAttributes(),this.syncChildComponents(),this.updateFormValue();break;case"hide-navigation":this.se=null!==e,this.render();break;case"stateless":this.re=null!==e&&"false"!==e;break;case"locale":this.syncChildComponents();break;case"size":"sm"!==e&&"md"!==e&&"lg"!==e||(this.xn=e,this.ee=void 0,this.removeAttribute("width"),this.syncChildComponents());break;case"width":this.ee=e||void 0,e&&(this.xn="md",this.removeAttribute("size")),this.syncChildComponents();break;case"name":this.updateFormValue();break;case"min":case"max":this["min"===t?"te":"ne"]=e||void 0,this.syncChildComponents(),this.updateValidity();break;case"flavor":this.ae=e||"primary",this.syncChildComponents()}}get min(){return this.te}set min(t){t?this.setAttribute("min",t):this.removeAttribute("min")}get max(){return this.ne}set max(t){t?this.setAttribute("max",t):this.removeAttribute("max")}get flavor(){return this.ae}set flavor(t){t?this.setAttribute("flavor",t):this.removeAttribute("flavor")}get year(){return this.Cn.selectedYear}set year(t){void 0!==t?this.re?(this.Cn.displayYear=t,this.setAttribute("year",""+t)):(this.Cn.selectedYear=t,this.Cn.displayYear=t,this.setAttribute("year",""+t)):(this.re||delete this.Cn.selectedYear,this.removeAttribute("year")),this.syncChildComponents(),this.re||this.updateFormValue()}get month(){return this.Cn.selectedMonth}set month(t){void 0!==t?this.re?(this.Cn.displayMonth=t,this.setAttribute("month",""+t)):(this.Cn.selectedMonth=t,this.Cn.displayMonth=t,this.setAttribute("month",""+t)):(this.re||delete this.Cn.selectedMonth,this.removeAttribute("month")),this.syncChildComponents(),this.re||this.updateFormValue()}get day(){return this.Cn.selectedDay}set day(t){void 0!==t?(this.Cn.selectedDay=t,this.setAttribute("day",""+t)):(delete this.Cn.selectedDay,this.removeAttribute("day")),this.syncChildComponents(),this.updateFormValue()}get locale(){return Q(this,this.getAttribute("locale"))}set locale(t){this.setAttribute("locale",t)}get hideNavigation(){return this.se}set hideNavigation(t){this.se=t,t?this.setAttribute("hide-navigation",""):this.removeAttribute("hide-navigation")}get stateless(){return this.re}set stateless(t){this.re=t,t?this.setAttribute("stateless",""):this.removeAttribute("stateless")}get size(){return this.xn}set size(t){this.xn!==t&&(this.xn=t,this.ee=void 0,this.removeAttribute("width"),this.setAttribute("size",t),this.syncChildComponents())}get width(){return this.ee}set width(t){this.ee!==t&&(this.ee=t,t?(this.xn="md",this.removeAttribute("size"),this.setAttribute("width",t)):this.removeAttribute("width"),this.syncChildComponents())}get dayContentFn(){return this.Gn}set dayContentFn(t){this.Gn=t,this.syncChildComponents()}get customCSS(){return this.Qn}set customCSS(t){this.Qn=t,this.syncChildComponents()}get value(){const{selectedYear:t,selectedMonth:n,selectedDay:e}=this.Cn;return t&&n&&e?pi(t,n,e):""}set value(t){if(t){const n=t.match(/^(\d{4})-(\d{2})-(\d{2})$/);if(n){const t=parseInt(n[1],10),e=parseInt(n[2],10),i=parseInt(n[3],10);this.Cn.selectedYear=t,this.Cn.selectedMonth=e,this.Cn.selectedDay=i,this.Cn.displayYear=t,this.Cn.displayMonth=e,this.re||(this.setAttribute("year",""+t),this.setAttribute("month",""+e),this.setAttribute("day",""+i))}}else delete this.Cn.selectedYear,delete this.Cn.selectedMonth,delete this.Cn.selectedDay,this.re||(this.removeAttribute("year"),this.removeAttribute("month"),this.removeAttribute("day"));this.syncChildComponents(),this.re||this.updateFormValue()}initializeFromAttributes(){const t=this.getAttribute("year"),n=this.getAttribute("month"),e=this.getAttribute("day"),i=this.hasAttribute("hide-navigation"),o=this.getAttribute("stateless"),s=this.getAttribute("size"),r=this.getAttribute("width");this.te=this.getAttribute("min")||void 0,this.ne=this.getAttribute("max")||void 0;const a=di(t);a&&(this.Cn.displayYear=a);const l=hi(n);if(l&&(this.Cn.displayMonth=l),a&&l){const t=ui(e,a,l);t&&(this.Cn.selectedYear=a,this.Cn.selectedMonth=l,this.Cn.selectedDay=t)}this.se=i,null!==o&&(this.re="false"!==o),!s||"sm"!==s&&"md"!==s&&"lg"!==s||(this.xn=s),r&&(this.ee=r),this.le=this.value}formResetCallback(){this.value=this.le}syncStateFromAttributes(){const t=this.getAttribute("year"),n=this.getAttribute("month"),e=this.getAttribute("day"),i=di(t),o=hi(n);if(i&&(this.Cn.displayYear=i),o&&(this.Cn.displayMonth=o),i&&o){const t=ui(e,i,o);t?(this.Cn.selectedYear=i,this.Cn.selectedMonth=o,this.Cn.selectedDay=t):(delete this.Cn.selectedYear,delete this.Cn.selectedMonth,delete this.Cn.selectedDay)}else delete this.Cn.selectedYear,delete this.Cn.selectedMonth,delete this.Cn.selectedDay}syncChildComponents(){if(this.ce&&(this.ce.displayMonth=this.Cn.displayMonth,this.ce.displayYear=this.Cn.displayYear,this.ce.locale=this.locale,this.ce.size=this.xn,this.ce.min=this.te??"",this.ce.max=this.ne??"",this.ce.width=this.ee),this.de){this.de.displayMonth=this.Cn.displayMonth,this.de.displayYear=this.Cn.displayYear,this.de.locale=this.locale,this.de.size=this.xn,this.de.min=this.te,this.de.max=this.ne,this.de.flavor=this.ae,this.de.width=this.ee,this.Gn&&(this.de.dayContentFn=this.Gn),this.Qn&&(this.de.customCSS=this.Qn);const{selectedYear:t,selectedMonth:n,selectedDay:e}=this.Cn;this.de.value=t&&n&&e?new Date(t,n-1,e).getTime():null}}updateFormValue(){if(this.re)return;if(!this.$)return;const t=this.getAttribute("name"),{selectedYear:n,selectedMonth:e,selectedDay:i}=this.Cn;if(t&&n&&e&&i){const t=pi(n,e,i);this.$.setFormValue(t)}else this.$.setFormValue("");this.updateValidity()}updateValidity(){if(!this.$)return;const{selectedYear:t,selectedMonth:n,selectedDay:e}=this.Cn;if(t&&n&&e){const i=Date.UTC(t,n-1,e),o=this.te?ii(this.te):null,s=this.ne?ii(this.ne):null;if(o&&i<Date.UTC(o.year,o.month-1,o.day))return void this.$.setValidity({rangeUnderflow:!0},`Date must be ${this.te} or later`);if(s&&i>Date.UTC(s.year,s.month-1,s.day))return void this.$.setValidity({rangeOverflow:!0},`Date must be ${this.ne} or earlier`)}this.$.setValidity({})}handleNavigationChange(t){t.preventDefault(),t.stopPropagation();const{month:n,year:e}=t.detail;this.Cn.displayMonth=n,this.Cn.displayYear=e,this.syncChildComponents(),this.dispatchEvent(new CustomEvent("navigate",{detail:{month:n,year:e,action:"navigate",source:"navigation"},bubbles:!0,composed:!0,cancelable:!1}))}handleDayClick(t){t.preventDefault(),t.stopPropagation();const{dayContext:n,year:e,month:i,day:o}=t.detail;this.re?this.dispatchEvent(new CustomEvent("day-click",{detail:t.detail,bubbles:!0,composed:!0,cancelable:!0})):(this.Cn.selectedYear=e,this.Cn.selectedMonth=i,this.Cn.selectedDay=o,this.Cn.displayYear=e,this.Cn.displayMonth=i,this.setAttribute("year",""+e),this.setAttribute("month",""+i),this.setAttribute("day",""+o),this.updateFormValue(),this.syncChildComponents(),this.dispatchEvent(new CustomEvent("change",{detail:{year:e,month:i,day:o,action:"select",source:"day-click",dayContext:n},bubbles:!0,composed:!0,cancelable:!1})))}refresh(){this.syncChildComponents(),this.de&&"function"==typeof this.de.refresh&&this.de.refresh()}createNavigation(){const t=document.createElement("ty-calendar-navigation");return t.displayMonth=this.Cn.displayMonth,t.displayYear=this.Cn.displayYear,t.locale=this.locale,t.size=this.xn,t.min=this.te??"",t.max=this.ne??"",this.ee&&(t.width=this.ee),t.addEventListener("change",t=>this.handleNavigationChange(t)),this.ce=t,t}createMonthDisplay(){const t=document.createElement("ty-calendar-month");t.displayMonth=this.Cn.displayMonth,t.displayYear=this.Cn.displayYear,t.locale=this.locale,t.size=this.xn,t.min=this.te,t.max=this.ne,t.flavor=this.ae,this.ee&&(t.width=this.ee);const{selectedYear:n,selectedMonth:e,selectedDay:i}=this.Cn;return n&&e&&i&&(t.value=new Date(n,e-1,i).getTime()),this.Gn&&(t.dayContentFn=this.Gn),this.Qn&&(t.customCSS=this.Qn),t.addEventListener("day-click",t=>this.handleDayClick(t)),this.de=t,t}render(){const t=this.shadowRoot;if(!t)return;a(t,{css:"\n.calendar-container {\ndisplay: flex;\nflex-direction: column;\ngap: 0.125rem;\nbox-sizing: border-box;\nfont-family: inherit;\nalign-items: center;\n}\n@media (max-width: 320px) {\n.calendar-container {\ngap: 0.375rem;\n}\n}\n",id:"ty-calendar"}),t.innerHTML="";const n=document.createElement("div");if(n.className="calendar-container",!this.se){const t=this.createNavigation();n.appendChild(t)}const e=this.createMonthDisplay();n.appendChild(e),t.appendChild(n)}};bi.formAssociated=!0;let vi=bi;customElements.get("ty-calendar")||customElements.define("ty-calendar",vi);const gi=(t,n)=>{const e=e=>n?e?`var(--ty-color-${t}${e}, var(--ty-color-${t}, var(--ty-color-${n}${e})))`:`var(--ty-color-${t}, var(--ty-color-${n}))`:e?`var(--ty-color-${t}${e}, var(--ty-color-${t}))`:`var(--ty-color-${t})`;return`\n:host([flavor="${t}"]) {\n--date-picker-accent: var(--ty-input-${t}-border, ${e("-soft")});\n--date-picker-accent-bold: ${e("")};\n--date-picker-ring: color-mix(in oklab, ${e("")} 15%, transparent);\n}\n:host([flavor="${t}+"]) {\n--date-picker-accent: ${e("")};\n--date-picker-accent-bold: ${e("-strong")};\n--date-picker-ring: color-mix(in oklab, ${e("-strong")} 15%, transparent);\n}\n:host([flavor="${t}-"]) {\n--date-picker-accent: ${e("-faint")};\n--date-picker-accent-bold: ${e("-soft")};\n--date-picker-ring: color-mix(in oklab, ${e("-soft")} 15%, transparent);\n}\n`},mi=`\n${K}\n:host {\ndisplay: block;\nwidth: auto;\nmin-width: 200px;\nfont-family: inherit;\n--ty-date-picker-bg: var(--ty-input-bg);\n--ty-date-picker-color: var(--ty-input-color);\n--ty-date-picker-placeholder: var(--ty-input-placeholder);\n--ty-date-picker-border: var(--ty-input-border);\n--ty-date-picker-border-hover: var(--ty-input-border-hover);\n--ty-date-picker-border-focus: var(--ty-input-border-focus);\n--ty-date-picker-shadow-focus: var(--ty-input-shadow-focus);\n--ty-date-picker-disabled-bg: var(--ty-input-disabled-bg);\n--ty-date-picker-disabled-color: var(--ty-input-disabled-color);\n--ty-date-picker-radius: var(--ty-radius-md);\n--ty-calendar-surface-bg: var(--ty-surface-floating);\n--ty-calendar-surface-border: var(--ty-input-border);\n--ty-calendar-surface-shadow: var(--ty-shadow-lg, 0 4px 20px rgba(0, 0, 0, 0.08), 0 1px 3px rgba(0, 0, 0, 0.1));\n--ty-calendar-surface-radius: var(--ty-radius-lg);\n--ty-calendar-time-bg: transparent;\n--ty-calendar-time-border: var(--ty-border-faint);\n--ty-calendar-time-label-color: var(--ty-color-neutral);\n--ty-calendar-time-input-color: var(--ty-input-color);\n--ty-calendar-time-placeholder-color: var(--ty-input-placeholder);\n--ty-calendar-time-icon-color: var(--ty-color-neutral-soft);\n}\n.dropdown-container {\ndisplay: flex;\nflex-direction: column;\nwidth: 100%;\nbox-sizing: border-box;\n}\n.ty-field-label {\nfont-size: var(--ty-field-label-font);\nline-height: var(--ty-field-label-leading);\nletter-spacing: var(--ty-tracking-sm);\nfont-weight: var(--ty-font-medium);\ncolor: var(--ty-label-color);\nmargin-bottom: var(--ty-field-label-gap);\npadding-left: var(--ty-field-outer-pad-x);\ndisplay: flex;\nalign-items: center;\n}\n.required-icon {\ndisplay: inline-flex;\nalign-items: center;\ncolor: #ef4444;\nwidth: 12px;\nheight: 12px;\nvertical-align: middle;\nmargin-left: 4px;\n}\n.dropdown-wrapper {\nposition: relative;\ndisplay: block;\nwidth: 100%;\n}\n.date-picker-stub ::slotted([slot="start"]) {\ndisplay: flex;\nalign-items: center;\njustify-content: center;\nflex-shrink: 0;\nmargin-right: 0.5rem;\ncolor: var(--ty-color-text-soft);\n}\n.date-picker-stub ::slotted(ty-icon[slot="start"]) {\nwidth: 1em;\nheight: 1em;\n}\n.date-picker-stub {\nwidth: 100%;\ncursor: pointer;\nbox-sizing: border-box;\nposition: relative;\ndisplay: flex;\nalign-items: center;\nbackground: var(--ty-date-picker-bg);\ncolor: var(--ty-date-picker-color);\nborder: 1px solid var(--date-picker-accent, var(--ty-date-picker-border));\nborder-radius: var(--ty-date-picker-radius);\nfont-family: inherit;\nfont-size: var(--ty-field-font);\nfont-weight: var(--ty-font-normal);\nline-height: var(--ty-field-leading);\nmin-height: var(--ty-field-height);\npadding: 0 var(--ty-field-pad-x);\npadding-right: calc(var(--ty-field-pad-x) + 1rem + var(--ty-field-pad-x));\ntransition: var(--ty-transition-all), opacity 0.2s ease;\noutline: none;\n}\n.date-picker-stub:hover:not([disabled]):not(.open) {\nborder-color: var(--date-picker-accent-bold, var(--ty-date-picker-border-hover));\n}\n.date-picker-stub[disabled] {\nbackground-color: var(--ty-date-picker-disabled-bg);\ncolor: var(--ty-date-picker-disabled-color);\ncursor: not-allowed;\nopacity: 0.6;\n}\n.date-picker-stub:focus,\n.date-picker-stub.open {\nborder-color: var(--date-picker-accent-bold, var(--ty-date-picker-border-focus));\nbox-shadow: 0 0 0 3px var(--date-picker-ring, var(--ty-date-picker-shadow-focus));\n}\n${n.filter(t=>"neutral"!==t).map(t=>gi(t)).join("")}\n.stub-text {\nflex: 1;\nwhite-space: nowrap;\noverflow: hidden;\ntext-overflow: ellipsis;\nuser-select: none;\ncolor: inherit;\npointer-events: none;\n}\n.stub-text.placeholder {\ncolor: var(--ty-date-picker-placeholder);\n}\n.stub-icons {\ndisplay: flex;\nalign-items: center;\ngap: var(--ty-spacing-1);\nposition: absolute;\nright: var(--ty-spacing-3);\ntop: 50%;\ntransform: translateY(-50%);\nheight: 1rem;\npointer-events: none;\nz-index: 2;\n}\n.stub-clear {\ndisplay: flex;\nalign-items: center;\njustify-content: center;\nwidth: 1rem;\nheight: 1rem;\npadding: 0;\nborder: none;\nbackground: none;\ncolor: var(--ty-color-neutral-soft);\ncursor: pointer;\nborder-radius: var(--ty-radius-sm);\ntransition: var(--ty-local-transition, all 0.15s ease);\npointer-events: auto;\n}\n.stub-clear:hover {\ncolor: var(--ty-color-danger);\nbackground-color: var(--ty-bg-danger-soft);\n}\n.stub-arrow {\ndisplay: flex;\nalign-items: center;\njustify-content: center;\nwidth: 1rem;\nheight: 1rem;\ncolor: var(--date-picker-accent, var(--ty-color-neutral-soft));\n}\n.date-picker-stub:hover .stub-arrow {\ncolor: var(--date-picker-accent-bold, var(--ty-color-neutral));\n}\n.date-picker-stub:focus .stub-arrow,\n.date-picker-stub.open .stub-arrow {\ncolor: var(--date-picker-accent-bold, var(--ty-date-picker-border-focus));\n}\n.calendar-dialog {\nposition: fixed;\nflex-direction: column;\nmax-width: 90vw;\nmargin: 0;\npadding: 0;\nborder: none;\nbackground: transparent;\nbox-sizing: border-box;\npadding: var(--calendar-padding, 8px);\nopacity: 0;\nscale: 0.96;\ntranslate: 0 -6px;\ntransform-origin: top center;\ntransition:\nopacity var(--ty-popup-duration, 180ms) var(--ty-popup-ease, cubic-bezier(0.34, 1.56, 0.64, 1)),\nscale var(--ty-popup-duration, 180ms) var(--ty-popup-ease, cubic-bezier(0.34, 1.56, 0.64, 1)),\ntranslate var(--ty-popup-duration, 180ms) var(--ty-popup-ease, cubic-bezier(0.34, 1.56, 0.64, 1));\ntransform: translate(var(--calendar-offset-x, 0px), var(--calendar-offset-y, 0px));\ntop: -1000px;\nleft: -1000px;\n}\n.calendar-dialog.position-below {\nleft: var(--calendar-x);\ntop: var(--calendar-y);\n}\n.calendar-dialog.position-above {\nleft: var(--calendar-x);\nbottom: var(--calendar-y);\ntop: auto;\nflex-direction: column-reverse;\ntranslate: 0 6px;\ntransform-origin: bottom center;\n}\n.calendar-dialog.open {\nopacity: 1;\nscale: 1;\ntranslate: 0 0;\n}\n@starting-style {\n.calendar-dialog.open {\nopacity: 0;\nscale: 0.96;\ntranslate: 0 -6px;\n}\n.calendar-dialog.open.position-above {\ntranslate: 0 6px;\n}\n}\n.calendar-dialog::backdrop {\nbackground: transparent\n}\n.calendar-content {\nbackground-color: var(--ty-calendar-surface-bg);\nborder: 1px solid var(--ty-calendar-surface-border);\nborder-radius: var(--ty-calendar-surface-radius);\nbox-shadow: var(--ty-calendar-surface-shadow);\noverflow: hidden;\ndisplay: flex;\nflex-direction: column;\nalign-items: center;\n}\n.native-date-input {\nposition: absolute;\ninset: 0;\nopacity: 0;\nwidth: 100%;\nheight: 100%;\nmargin: 0;\npadding: 0;\nborder: none;\ncursor: pointer;\nz-index: 1;\n}\n.native-date-input::-webkit-calendar-picker-indicator {\nposition: absolute;\ninset: 0;\nwidth: 100%;\nheight: 100%;\nmargin: 0;\npadding: 0;\ncursor: pointer;\n}\n.time-section {\ndisplay: flex;\nmin-height: 2.5rem;\nalign-items: center;\njustify-content: center;\ngap: 0.5rem;\npadding: 0.5rem 1rem;\nborder-top: 1px solid var(--ty-calendar-time-border);\nbackground-color: var(--ty-calendar-time-bg);\nwidth: 100%;\nbox-sizing: border-box;\nposition: relative;\n}\n.time-label {\nfont-size: var(--ty-font-sm);\nfont-weight: 500;\ncolor: var(--ty-calendar-time-label-color);\nflex-shrink: 0;\n}\n.time-input {\nwidth: 3.5rem;\nborder: 1px solid var(--ty-input-border);\nborder-radius: var(--ty-radius-sm);\nbackground: var(--ty-input-bg);\ncolor: var(--ty-calendar-time-input-color);\nfont-family: inherit;\nfont-size: var(--ty-font-sm);\nfont-variant-numeric: tabular-nums;\ntext-align: center;\npadding: 0.25rem 0.375rem;\noutline: none;\ntransition: var(--ty-transition-all);\n}\n.time-input:focus {\nborder-color: var(--ty-input-border-focus);\nbox-shadow: 0 0 0 3px var(--ty-input-shadow-focus);\n}\n.time-input::placeholder {\ncolor: var(--ty-calendar-time-placeholder-color);\n}\n.time-icon {\ndisplay: flex;\nalign-items: center;\ncolor: var(--ty-calendar-time-icon-color);\nwidth: 1rem;\nheight: 1rem;\nflex-shrink: 0;\n}\n`,yi="<svg stroke='currentColor' fill='none' stroke-width='2' viewBox='0 0 24 24' width='16' height='16' xmlns='http://www.w3.org/2000/svg'><rect x='3' y='4' width='18' height='18' rx='2' ry='2'></rect><line x1='16' y1='2' x2='16' y2='6'></line><line x1='8' y1='2' x2='8' y2='6'></line><line x1='3' y1='10' x2='21' y2='10'></line></svg>",fi="<svg stroke='currentColor' fill='none' stroke-width='2' viewBox='0 0 24 24' width='14' height='14' xmlns='http://www.w3.org/2000/svg'><line x1='18' y1='6' x2='6' y2='18'></line><line x1='6' y1='6' x2='18' y2='18'></line></svg>",wi=new WeakMap;let xi=0;function ki(t){let n=wi.get(t);return void 0===n&&(n=++xi,wi.set(t,n)),n}function $i(t,n){if(!t)return null;let e=null;if("string"==typeof t)if(/^\d{4}-\d{2}-\d{2}$/.test(t)){const[n,i,o]=t.split("-");e=new Date(parseInt(n,10),parseInt(i,10)-1,parseInt(o,10),0,0,0,0)}else e=new Date(t);else"number"==typeof t&&(e=new Date(t));return!e||isNaN(e.getTime())?null:{year:e.getFullYear(),month:e.getMonth()+1,day:e.getDate(),hour:n?e.getHours():0,minute:n?e.getMinutes():0}}function zi(t){const{year:n,month:e,day:i,hour:o,minute:s}=t;return n&&e&&i?new Date(n,e-1,i,o||0,s||0,0,0):null}function Ci(t){if(!t.year||!t.month||!t.day)return null;const n=zi(t);return n?n.toISOString():null}function Ei(t,n){if(!t.year||!t.month||!t.day)return null;const e=(""+t.year).padStart(4,"0"),i=(""+t.month).padStart(2,"0"),o=(""+t.day).padStart(2,"0");return n?`${e}-${i}-${o}T${(""+(t.hour||0)).padStart(2,"0")}:${(""+(t.minute||0)).padStart(2,"0")}`:`${e}-${i}-${o}`}function Ti(t,n){return`${(""+t).padStart(2,"0")}:${(""+n).padStart(2,"0")}`}function Si(t){switch(t){case 0:return 1;case 1:return 3;case 3:return 4;case 4:case 5:return 5;default:return t}}class Mi{constructor(t,n,e=0,i=0){this.element=t,this.datePickerElement=n;const o=Ti(e,i);this.state={hour:e,minute:i,caretPosition:0,displayValue:o,rawDigits:(""+e).padStart(2,"0")+(""+i).padStart(2,"0")},this.element.value=o,this.setupEventListeners()}setupEventListeners(){this.element.addEventListener("keydown",t=>this.handleKeyDown(t)),this.element.addEventListener("input",t=>this.handleInput(t)),this.element.addEventListener("click",()=>this.handleClick()),this.element.addEventListener("focus",()=>this.handleFocus())}handleKeyDown(t){const n=t.key;switch(n){case"ArrowRight":this.handleArrowRight(t);break;case"ArrowLeft":this.handleArrowLeft(t);break;case"Backspace":this.handleBackspace(t);break;case"Delete":this.handleDelete(t);break;case"Home":t.preventDefault(),this.updateState({caretPosition:0});break;case"End":t.preventDefault(),this.updateState({caretPosition:5});break;case"Tab":break;default:/^\d$/.test(n)&&this.handleDigitInput(t,parseInt(n,10))}}handleInput(t){t.preventDefault()}handleClick(){this.updateState({caretPosition:0})}handleFocus(){this.updateState({caretPosition:0})}handleArrowRight(t){t.preventDefault();const n=Si(this.state.caretPosition);this.updateState({caretPosition:n})}handleArrowLeft(t){t.preventDefault();const n=function(t){switch(t){case 5:return 4;case 4:return 3;case 3:return 1;case 1:case 0:return 0;default:return t}}(this.state.caretPosition);this.updateState({caretPosition:n})}handleDigitInput(t,n){t.preventDefault();const e=this.state.caretPosition;if(![0,1,3,4].includes(e))return;if(!function(t,n,e){switch(n){case 0:return 2>=t;case 1:return 2!==parseInt(e[0],10)||3>=t;case 3:return 5>=t;case 4:return!0;default:return!1}}(n,e,this.state.rawDigits))return;const i=this.replaceDigitAtPosition(e,n);if(!i)return;const o=Si(e);this.updateState({...i,caretPosition:o}),this.notifyTimeChange()}handleBackspace(t){t.preventDefault();const n=this.state.caretPosition;if(0===n)return;const e=1===n?0:3===n?1:4===n?3:5===n?4:0,i=this.zeroDigitAtPosition(e);i&&(this.updateState({...i,caretPosition:e}),this.notifyTimeChange())}handleDelete(t){t.preventDefault();const n=this.state.caretPosition;if(![0,1,3,4].includes(n))return;const e=this.zeroDigitAtPosition(n);e&&(this.updateState({...e,caretPosition:n}),this.notifyTimeChange())}replaceDigitAtPosition(t,n){const e=function(t){switch(t){case 0:default:return 0;case 1:return 1;case 3:return 2;case 4:return 3}}(t),i=this.state.rawDigits.split("");i[e]=""+n;const o=i.join(""),s=function(t){if(!t||4!==t.length)return null;const n=t.substring(0,2),e=t.substring(2,4),i=parseInt(n,10),o=parseInt(e,10);return 0>i||i>23||0>o||o>59?null:{hour:i,minute:o}}(o);return s?{rawDigits:o,hour:s.hour,minute:s.minute,displayValue:Ti(s.hour,s.minute)}:null}zeroDigitAtPosition(t){return this.replaceDigitAtPosition(t,0)}updateState(t){this.state={...this.state,...t},this.element.value=this.state.displayValue;const n=this.state.caretPosition,e=0===n?0:1===n?1:2===n||3===n?3:4===n?4:5===n?5:n;this.element.setSelectionRange(e,e)}notifyTimeChange(){this.datePickerElement.handleTimeInputChange(this.state.hour,this.state.minute)}getTime(){return{hour:this.state.hour,minute:this.state.minute}}setTime(t,n){const e=Ti(t,n);this.state={...this.state,hour:t,minute:n,displayValue:e,rawDigits:(""+t).padStart(2,"0")+(""+n).padStart(2,"0")},this.element.value=e}}const _i=class extends s{constructor(){super(),this.Cn={withTime:!1,open:!1},this.he=0,this.A=null,a(this.shadowRoot,{css:mi,id:"ty-date-picker"})}onConnect(){this.initializeState(),this.render(),this.nt=tt(this,()=>{this.render()}),this.j()}j(){this.A=v(this.shadowRoot,this.A,"default"===this.flavor?"neutral":this.flavor,({base:t})=>(t=>gi(t,"neutral"))(t))}onDisconnect(){this.nt&&(this.nt(),this.nt=void 0),this.cleanup()}onPropertiesChanged(t){for(const{name:n,newValue:e}of t)switch(n){case"flavor":this.j();break;case"size":case"label":case"placeholder":case"required":case"disabled":case"clearable":case"format":case"locale":break;case"value":{const t=$i(e,this.Cn.withTime);if(null===t){(void 0!==this.Cn.year||void 0!==this.Cn.month||void 0!==this.Cn.day)&&(this.Cn={withTime:this.Cn.withTime,open:this.Cn.open}),this.syncFormValue();break}const n={year:this.Cn.year,month:this.Cn.month,day:this.Cn.day,hour:this.Cn.hour,minute:this.Cn.minute};(t?.year!==n.year||t?.month!==n.month||t?.day!==n.day||t?.hour!==n.hour||t?.minute!==n.minute)&&(this.Cn={...this.Cn,...t},this.syncFormValue());break}case"with-time":e!==this.Cn.withTime&&(this.Cn.withTime=e,void 0!==this.Cn.year&&void 0!==this.Cn.month&&void 0!==this.Cn.day&&this.syncFormValue())}}getFormValue(){return Ci(this.getComponents())}getComponents(){return{year:this.Cn.year,month:this.Cn.month,day:this.Cn.day,hour:this.Cn.hour,minute:this.Cn.minute}}hasDate(){return!!(this.Cn.year&&this.Cn.month&&this.Cn.day)}getFormattedValue(t){const n=t||this.getComponents();return n.year&&n.month&&n.day?function(t,n,e,i){if(!t.year||!t.month||!t.day)return null;const o=zi(t);if(!o)return null;const s={dateStyle:n};return i&&(s.timeStyle="short"),new Intl.DateTimeFormat(e,s).format(o)}(n,this.getProperty("format")||"long",Q(this,this.getProperty("locale")),this.Cn.withTime):null}initializeState(){const t=this.getProperty("value"),n=this.getProperty("with-time"),e=$i(t,n);this.Cn=null===e?{withTime:n,open:!1}:{...e,withTime:n,open:!1},this.syncFormValue()}updateState(t,n=!1){this.Cn={...this.Cn,...t},(n||!this.Cn.open||!this.Cn.withTime)&&this.syncFormValue()}syncFormValue(){const t=this.getFormValue();t!==this.getProperty("value")&&this.setProperty("value",t||null)}updateValidity(){this.disabled?this.$.setValidity({}):this.required&&!this.value?this.$.setValidity({valueMissing:!0},"Please fill out this field"):this.$.setValidity({})}handleTimeInputChange(t,n){if(!this.hasDate())return;const e={...this.getComponents(),hour:t,minute:n};this.updateState(e,!0),this.emitChangeEvent(e,"time-change")}emitChangeEvent(t,n){const e=t?Ci(t):null,i=t?Ei(t,this.Cn.withTime):null,o=t?zi(t)?.getTime()??null:null,s=t?this.getFormattedValue(t):null,r=new CustomEvent("change",{detail:{value:e,localValue:i,milliseconds:o,formatted:s,source:n},bubbles:!0,cancelable:!0});this.dispatchEvent(r)}get size(){return this.getProperty("size")}set size(t){this.setProperty("size",t)}get placement(){return this.getProperty("placement")}set placement(t){this.setProperty("placement",t)}get flavor(){return this.getProperty("flavor")}set flavor(t){this.setProperty("flavor",t)}get label(){return this.getProperty("label")}set label(t){this.setProperty("label",t)}get placeholder(){return this.getProperty("placeholder")}set placeholder(t){this.setProperty("placeholder",t)}get name(){return this.getProperty("name")}set name(t){this.setProperty("name",t)}get format(){return this.getProperty("format")}set format(t){this.setProperty("format",t)}get locale(){return this.getProperty("locale")}set locale(t){this.setProperty("locale",t)}get required(){return this.getProperty("required")}set required(t){this.setProperty("required",t)}get disabled(){return this.getProperty("disabled")}set disabled(t){this.setProperty("disabled",t)}get clearable(){return this.getProperty("clearable")}set clearable(t){this.setProperty("clearable",t)}get min(){return this.getProperty("min")}set min(t){this.setProperty("min",t??"")}get max(){return this.getProperty("max")}set max(t){this.setProperty("max",t??"")}get withTime(){return this.getProperty("with-time")}set withTime(t){this.setProperty("with-time",t)}get value(){return this.getProperty("value")||null}set value(t){if(null==t||""===t)this.setProperty("value",null);else{const n=t instanceof Date?t.toISOString():t;this.setProperty("value",n)}}clear(){this.clearValue()}buildStubClasses(){const t=["date-picker-stub"];return this.getProperty("disabled")&&t.push("disabled"),this.getProperty("required")&&t.push("required"),this.Cn.open&&t.push("open"),t.join(" ")}renderStub(){const t=document.createElement("div");t.className=this.buildStubClasses();const n=this.getProperty("disabled");n&&t.setAttribute("disabled","true"),t.setAttribute("role","button"),t.setAttribute("aria-haspopup","dialog"),t.setAttribute("aria-expanded",this.Cn.open+""),t.setAttribute("tabindex",n?"-1":"0"),n&&t.setAttribute("aria-disabled","true"),this.getProperty("label")&&t.setAttribute("aria-labelledby","date-picker-label-"+ki(this)),t.addEventListener("keydown",t=>{this.Cn.open||"Enter"!==t.key&&" "!==t.key||(t.preventDefault(),this.handleStubClick(t))});const e=document.createElement("slot");e.name="start";const i=document.createElement("span");i.className="stub-text";const o=this.getFormattedValue(),s=this.getProperty("placeholder")||"Select date...";i.textContent=o||s,o||i.classList.add("placeholder");const r=document.createElement("div");if(r.className="stub-icons",this.getProperty("clearable")&&o&&!n){const t=document.createElement("button");t.className="stub-clear",t.type="button",t.innerHTML=fi,t.addEventListener("click",t=>this.handleClearClick(t)),r.appendChild(t)}const a=document.createElement("span");return a.className="stub-arrow",a.innerHTML=yi,r.appendChild(a),t.addEventListener("click",t=>this.handleStubClick(t)),t.appendChild(e),t.appendChild(i),t.appendChild(r),t}createTimeInputElement(){const t=document.createElement("input");return t.type="text",t.className="time-input",t.placeholder="HH:mm",t.autocomplete="off",t.maxLength=5,t}renderTimeSection(){const t=document.createElement("div");t.className="time-section";const n=document.createElement("label");n.className="time-label",n.textContent="Time:";const e=this.createTimeInputElement();this.ue=new Mi(e,this,this.Cn.hour||0,this.Cn.minute||0);const i=document.createElement("span");return i.className="time-icon",i.innerHTML="<svg stroke='currentColor' fill='none' stroke-width='2' viewBox='0 0 24 24' width='16' height='16' xmlns='http://www.w3.org/2000/svg'><circle cx='12' cy='12' r='10'></circle><polyline points='12,6 12,12 16,14'></polyline></svg>",t.appendChild(n),t.appendChild(e),t.appendChild(i),t}renderCalendarDropdown(){const t=document.createElement("dialog");t.className="calendar-dialog";const n=document.createElement("div");n.className="calendar-content";const e=document.createElement("ty-calendar");this.Cn.year&&this.Cn.month&&this.Cn.day&&(e.setAttribute("year",""+this.Cn.year),e.setAttribute("month",""+this.Cn.month),e.setAttribute("day",""+this.Cn.day));const i=Q(this,this.getProperty("locale"));i&&e.setAttribute("locale",i);const o=this.getProperty("min"),s=this.getProperty("max");o&&e.setAttribute("min",o),s&&e.setAttribute("max",s);const r=this.getProperty("flavor");return r&&"default"!==r&&e.setAttribute("flavor",r),e.addEventListener("change",t=>this.handleCalendarChange(t)),n.appendChild(e),this.Cn.withTime&&n.appendChild(this.renderTimeSection()),t.appendChild(n),t.addEventListener("close",()=>{this.updateState({open:!1})}),t}renderNativeInput(){const t=document.createElement("div");t.className="dropdown-wrapper";const n=document.createElement("div");n.className=this.buildStubClasses();const e=this.getProperty("disabled");e&&n.setAttribute("disabled","true");const i=document.createElement("input");i.className="native-date-input",i.type=this.Cn.withTime?"datetime-local":"date",e&&(i.disabled=!0),this.getProperty("required")&&(i.required=!0);const o=this.getProperty("min"),s=this.getProperty("max");o&&(i.min=this.Cn.withTime?o+"T00:00":o),s&&(i.max=this.Cn.withTime?s+"T23:59":s);const r=Ei(this.getComponents(),this.Cn.withTime);r&&(i.value=r);const a=this.getProperty("placeholder")||"Select date...",l=this.getFormattedValue(),c=document.createElement("span");c.className="stub-text"+(l?"":" placeholder"),c.textContent=l||a,i.addEventListener("change",()=>{if(!i.value)return void this.clearValue();const t=$i(i.value,this.Cn.withTime);t&&(this.updateState(t,!0),this.emitChangeEvent(t,"selection"))});const d=document.createElement("slot");d.name="start",n.appendChild(d),n.appendChild(i),n.appendChild(c);const h=document.createElement("div");if(h.className="stub-icons",this.getProperty("clearable")&&r&&!e){const t=document.createElement("button");t.className="stub-clear",t.type="button",t.innerHTML=fi,t.addEventListener("click",t=>this.handleClearClick(t)),h.appendChild(t)}const u=document.createElement("span");return u.className="stub-arrow",u.innerHTML=yi,h.appendChild(u),n.appendChild(h),t.appendChild(n),t}calculateCalendarPosition(){if(!this.shadowRoot)return;if(Jn())return;const t=this.shadowRoot.querySelector(".date-picker-stub"),n=this.shadowRoot.querySelector(".calendar-dialog");if(!t||!n)return;const e=t.getBoundingClientRect(),i=n.getBoundingClientRect(),o=i.height||400,s=i.width||320,r=Ht(this.getProperty("placement")),a=Wt({anchorRect:e,popupWidth:s,popupHeight:o,gap:0,align:r.align,side:r.side}),l=a.below,c=l?a.topY:a.bottomY;this.style.setProperty("--calendar-x",a.x-8+"px"),this.style.setProperty("--calendar-y",c+"px"),this.style.setProperty("--calendar-offset-x","0px"),this.style.setProperty("--calendar-offset-y","0px"),l?(n.classList.add("position-below"),n.classList.remove("position-above")):(n.classList.add("position-above"),n.classList.remove("position-below"))}renderContainer(){const t=document.createElement("div");t.className="dropdown-container";const n=this.getProperty("label");if(n){const e=document.createElement("label");e.className="ty-field-label",e.id="date-picker-label-"+ki(this),e.innerHTML=n+(this.getProperty("required")?'<span class="required-icon">*</span>':""),t.appendChild(e)}return t}render(){if(!this.shadowRoot)return;if(this.updateValidity(),a(this.shadowRoot,{css:mi,id:"ty-date-picker"}),Jn()){if(this.shadowRoot.querySelector(".native-date-input"))return void this.updateDisplay();this.shadowRoot.innerHTML="";const t=this.renderContainer();return t.appendChild(this.renderNativeInput()),void this.shadowRoot.appendChild(t)}const t=this.shadowRoot.querySelector(".calendar-dialog");if(t&&t.open&&this.Cn.open)return this.updateDisplay(),void this.calculateCalendarPosition();this.shadowRoot.innerHTML="";const n=this.renderContainer(),e=document.createElement("div");e.className="dropdown-wrapper",e.appendChild(this.renderStub()),e.appendChild(this.renderCalendarDropdown()),n.appendChild(e),this.shadowRoot.appendChild(n),this.setupEventListeners()}updateDisplay(){if(!this.shadowRoot)return;const t=this.getFormattedValue(),n=this.getProperty("placeholder")||"Select date...",e=this.hasDate(),i=this.getProperty("clearable"),o=this.getProperty("disabled"),s=this.shadowRoot.querySelector(".stub-text");s&&(s.textContent=t||n,s.classList.toggle("placeholder",!t));const r=this.shadowRoot.querySelector(".stub-clear");if(r&&(r.style.display=i&&e&&!o?"":"none"),Jn()){const t=this.shadowRoot.querySelector(".native-date-input");if(t){const n=Ei(this.getComponents(),this.Cn.withTime);t.value=n||""}return}const a=this.shadowRoot.querySelector("ty-calendar");if(a&&e&&(a.setAttribute("year",""+this.Cn.year),a.setAttribute("month",""+this.Cn.month),a.setAttribute("day",""+this.Cn.day)),a){const t=this.getProperty("flavor");t&&"default"!==t?a.setAttribute("flavor",t):a.removeAttribute("flavor");const n=this.getProperty("min"),e=this.getProperty("max");n?a.setAttribute("min",n):a.removeAttribute("min"),e?a.setAttribute("max",e):a.removeAttribute("max")}this.ue&&void 0!==this.Cn.hour&&void 0!==this.Cn.minute&&this.ue.setTime(this.Cn.hour,this.Cn.minute)}setupEventListeners(){this.pe&&document.removeEventListener("click",this.pe),this.be&&document.removeEventListener("keydown",this.be),this.pe=t=>this.handleOutsideClick(t),this.be=t=>this.handleEscapeKey(t),document.addEventListener("click",this.pe),document.addEventListener("keydown",this.be);const t=this.shadowRoot?.querySelector(".calendar-dialog");t&&(this.ve=t=>this.handleDialogClick(t),t.addEventListener("click",this.ve))}handleStubClick(t){t.preventDefault();const n=this.shadowRoot?.querySelector(".calendar-dialog");!this.Cn.open||n&&n.open||(this.updateState({open:!1},!0),vn("date-picker-"+(this.id||""+this))),!this.getProperty("disabled")&&Date.now()-this.he>300&&this.openDropdown()}clearValue(){this.updateState({year:void 0,month:void 0,day:void 0,hour:void 0,minute:void 0},!0),this.value=null,this.emitChangeEvent(null,"clear"),this.render()}handleClearClick(t){t.preventDefault(),t.stopPropagation(),this.clearValue()}handleCalendarChange(t){t.preventDefault(),t.stopPropagation();const n=t.detail.dayContext;if(!n)return;const e={year:n.year,month:n.month,day:n.dayInMonth,hour:this.Cn.hour,minute:this.Cn.minute};this.updateState(e,!0),this.emitChangeEvent(e,"selection"),this.Cn.withTime?requestAnimationFrame(()=>{if(!this.shadowRoot)return;const t=this.shadowRoot.querySelector(".time-input");t&&t.focus()}):this.closeDropdown()}handleDialogClick(t){if(!this.shadowRoot)return;const n=this.shadowRoot.querySelector(".calendar-dialog"),e=this.shadowRoot.querySelector(".calendar-content");t.target===n&&this.Cn.open&&e&&!e.contains(t.target)&&(t.preventDefault(),t.stopPropagation(),this.closeDropdown())}handleOutsideClick(t){if(!this.shadowRoot)return;const n=t.target,e=this.shadowRoot.querySelector(".calendar-dialog");this.Cn.open&&e&&!this.contains(n)&&!e.contains(n)&&this.closeDropdown()}handleEscapeKey(t){"Escape"===t.key&&this.Cn.open&&(t.preventDefault(),this.closeDropdown())}openDropdown(){this.Cn.open||Jn()||(this.updateState({open:!0}),this.dispatchEvent(new CustomEvent("open")),this.render(),requestAnimationFrame(()=>{if(!this.shadowRoot)return;const t=this.shadowRoot.querySelector(".calendar-dialog");if(t){bn("date-picker-"+(this.id||""+this)),t.showModal(),this.calculateCalendarPosition(),t.classList.add("open");const n=this.shadowRoot.querySelector(".date-picker-stub");n&&n.setAttribute("aria-expanded","true");const e=this.shadowRoot.activeElement;e&&e.blur()}}))}closeDropdown(){if(!this.Cn.open)return;this.he=Date.now();const t="date-picker-"+(this.id||""+this);if(this.updateState({open:!1},!0),vn(t),this.shadowRoot){const t=this.shadowRoot.querySelector(".calendar-dialog");t&&(t.classList.remove("position-above","position-below","open"),t.close());const n=this.shadowRoot.querySelector(".date-picker-stub");n&&n.setAttribute("aria-expanded","false")}this.dispatchEvent(new CustomEvent("close")),this.render()}cleanup(){if(this.pe&&document.removeEventListener("click",this.pe),this.be&&document.removeEventListener("keydown",this.be),this.ve&&this.shadowRoot){const t=this.shadowRoot.querySelector(".calendar-dialog");t&&t.removeEventListener("click",this.ve)}this.Cn.open&&vn("date-picker-"+(this.id||""+this)),this.pe=void 0,this.be=void 0,this.ve=void 0,this.ue=void 0}};_i.properties={placement:{type:"string",visual:!0,default:""},size:{type:"string",visual:!0,default:e,validate:t=>["xs","sm","md","lg","xl"].includes(t),coerce:t=>["xs","sm","md","lg","xl"].includes(t)?t:e},flavor:{type:"string",visual:!0,default:"default"},label:{type:"string",visual:!0,default:""},placeholder:{type:"string",visual:!0,default:"Select date..."},name:{type:"string",visual:!1,default:""},min:{type:"string",visual:!0,default:""},max:{type:"string",visual:!0,default:""},required:{type:"boolean",visual:!0,default:!1},disabled:{type:"boolean",visual:!0,default:!1},clearable:{type:"boolean",visual:!0,default:!0,aliases:{"not-clearable":!1}},format:{type:"string",visual:!0,default:"long",validate:t=>["short","medium","long","full"].includes(t),coerce:t=>["short","medium","long","full"].includes(t)?t:"long"},locale:{type:"string",visual:!0,default:""},value:{type:"string",visual:!0,formValue:!0,emitChange:!1,default:null},"with-time":{type:"boolean",visual:!0,default:!1}},_i.formAssociated=!0;let Di=_i;customElements.get("ty-date-picker")||customElements.define("ty-date-picker",Di);const qi=new Map,Ai=new Map;function ji(t){return qi.get(t)}function Ii(t,n){Ai.has(t)||Ai.set(t,new Set),Ai.get(t).add(n);const e=qi.get(t);return e&&n(e),()=>{Ai.get(t)?.delete(n),0===Ai.get(t)?.size&&Ai.delete(t)}}function Li(){return Object.fromEntries(qi)}function Vi(t,n,e){qi.set(t,{width:n,height:e});const i=Ai.get(t);if(i){const t={width:n,height:e};i.forEach(n=>n(t))}}function Fi(t){qi.delete(t),Ai.delete(t)}class TyResizeObserver extends HTMLElement{constructor(){super(),this.Et=null,this.ge=null;const t=this.attachShadow({mode:"open"});a(t,{css:"\n:host {\ndisplay: block;\nposition: relative;\n}\n::slotted(*) {\n}\n",id:"ty-resize-observer"}),t.innerHTML="<slot></slot>"}static get observedAttributes(){return["id","debounce"]}get debounce(){return parseInt(this.getAttribute("debounce")||"0")}set debounce(t){this.setAttribute("debounce",t+"")}connectedCallback(){this.setupObserver()}attributeChangedCallback(t,n,e){if("id"===t&&n&&n!==e&&(Fi(n),e&&this.isConnected)){const{width:t,height:n}=this.getBoundingClientRect();Vi(e,t,n)}}disconnectedCallback(){this.cleanup()}setupObserver(){this.Et=new ResizeObserver(t=>{this.debounce>0?(this.ge&&clearTimeout(this.ge),this.ge=window.setTimeout(()=>{this.handleResize(t)},this.debounce)):this.handleResize(t)}),this.Et.observe(this)}handleResize(t){const{width:n,height:e}=t[0].contentRect;this.id&&Vi(this.id,n,e)}cleanup(){this.Et&&(this.Et.disconnect(),this.Et=null),this.ge&&(clearTimeout(this.ge),this.ge=null),this.id&&Fi(this.id)}}customElements.get("ty-resize-observer")||customElements.define("ty-resize-observer",TyResizeObserver);const Oi=`\n:host {\ndisplay: block;\nposition: relative;\noverflow: hidden;\n}\n.scroll-wrapper {\nwidth: 100%;\nheight: 100%;\noverflow-y: auto;\noverflow-x: hidden;\n}\n:host([overflow-x]) .scroll-wrapper {\noverflow-x: auto;\n}\n:host([max-height]) .scroll-wrapper {\nmax-height: var(--scroll-max-height);\n}\n:host([hide-scrollbar]) .scroll-wrapper {\nscrollbar-width: none;\n-ms-overflow-style: none;\n}\n:host([hide-scrollbar]) .scroll-wrapper::-webkit-scrollbar {\ndisplay: none;\n}\n:host([scroll-anchoring]) .scroll-wrapper {\noverflow-anchor: none;\n}\n:host([custom-scrollbar]) .scroll-wrapper {\nscrollbar-width: none;\n-ms-overflow-style: none;\n}\n:host([custom-scrollbar]) .scroll-wrapper::-webkit-scrollbar {\ndisplay: none;\n}\n:host([custom-scrollbar]:hover) .ty-scrollbar-track-y.has-overflow,\n:host([custom-scrollbar]:hover) .ty-scrollbar-track-x.has-overflow {\nopacity: 1;\n}\n:host([custom-scrollbar][overflow-x]) .ty-scrollbar-track-y {\nbottom: var(--ty-scrollbar-width, 8px);\n}\n:host([custom-scrollbar]) .ty-scrollbar-track-x {\nright: var(--ty-scrollbar-width, 8px);\n}\n.shadow-overlay {\nposition: absolute;\ninset: 0;\npointer-events: none;\nz-index: 2;\n}\n.shadow-top,\n.shadow-bottom,\n.shadow-left,\n.shadow-right {\nposition: absolute;\nopacity: 0;\ntransition: var(--ty-scroll-shadow-transition, opacity 0.2s ease-out);\npointer-events: none;\n}\n.shadow-top {\ntop: -40px;\nleft: 0;\nright: 0;\nheight: 80px;\nbackground: var(--ty-scroll-shadow-top, radial-gradient(\nellipse 100% 30% at center,\ncolor-mix(in oklab, var(--ty-color-neutral-bold) 12%, transparent),\ntransparent,\ntransparent\n));\nclip-path: inset(50% 0 0 0);\n}\n.shadow-bottom {\nbottom: -30px;\nleft: 0;\nright: 0;\nheight: 60px;\nbackground: var(--ty-scroll-shadow-bottom, radial-gradient(\nellipse 100% 20% at center,\ncolor-mix(in oklab, var(--ty-color-neutral-bold) 18%, transparent),\ntransparent,\ntransparent\n));\nclip-path: inset(0 0 50% 0);\n}\n.shadow-left {\nleft: -30px;\ntop: 0;\nbottom: 0;\nwidth: 60px;\nbackground: var(--ty-scroll-shadow-left, radial-gradient(\nellipse 30% 100% at center,\ncolor-mix(in oklab, var(--ty-color-neutral-bold) 12%, transparent),\ntransparent,\ntransparent\n));\nclip-path: inset(0 0 0 50%);\n}\n.shadow-right {\nright: -30px;\ntop: 0;\nbottom: 0;\nwidth: 60px;\nbackground: var(--ty-scroll-shadow-right, radial-gradient(\nellipse 30% 100% at center,\ncolor-mix(in oklab, var(--ty-color-neutral-bold) 12%, transparent),\ntransparent,\ntransparent\n));\nclip-path: inset(0 50% 0 0);\n}\n.shadow-left,\n.shadow-right {\ndisplay: none;\n}\n:host([overflow-x]) .shadow-left,\n:host([overflow-x]) .shadow-right {\ndisplay: block;\n}\n.shadow-top.visible,\n.shadow-bottom.visible,\n.shadow-left.visible,\n.shadow-right.visible {\nopacity: 1;\n}\n:host([shadow="false"]) .shadow-overlay {\ndisplay: none;\n}\n@media (pointer: coarse) and (hover: none) {\n:host([custom-scrollbar]) .scroll-wrapper {\nscrollbar-width: thin;\nscrollbar-color: var(--ty-border, color-mix(in oklab, var(--ty-color-neutral-bold) 25%, transparent)) transparent;\n}\n:host([custom-scrollbar]) .scroll-wrapper::-webkit-scrollbar {\ndisplay: block;\nwidth: 4px;\nheight: 4px;\n}\n:host([custom-scrollbar]) .scroll-wrapper::-webkit-scrollbar-thumb {\nbackground: var(--ty-border, color-mix(in oklab, var(--ty-color-neutral-bold) 25%, transparent));\nborder-radius: 2px;\n}\n}\n@media (prefers-reduced-motion: reduce) {\n.shadow-top,\n.shadow-bottom,\n.shadow-left,\n.shadow-right {\ntransition-duration: 0ms !important;\n}\n}\n${Dt}\n`;class TyScrollContainer extends HTMLElement{constructor(){super(),this.me=null,this.ye=null,this.fe=null,this.we=null,this.xe=null,this.nn=null,this.Et=null,this.ke=null,this.zt=null,this.$e=!1,this.ze=!1,this.Dt=()=>{null===this.zt&&(this.zt=requestAnimationFrame(()=>{this.zt=null,this.Ce()}))},this.Ee=()=>{this.nn?.update(),this.Ce()};const t=this.attachShadow({mode:"open"});a(t,{css:Oi,id:"ty-scroll-container"}),t.innerHTML='\n<div class="scroll-wrapper">\n<slot></slot>\n</div>\n<div class="shadow-overlay">\n<div class="shadow-top"></div>\n<div class="shadow-bottom"></div>\n<div class="shadow-left"></div>\n<div class="shadow-right"></div>\n</div>\n',this.me=t.querySelector(".scroll-wrapper"),this.ye=t.querySelector(".shadow-top"),this.fe=t.querySelector(".shadow-bottom"),this.we=t.querySelector(".shadow-left"),this.xe=t.querySelector(".shadow-right")}static get observedAttributes(){return["shadow","max-height","hide-scrollbar","custom-scrollbar","overflow-x","scroll-anchoring"]}get shadow(){return"false"!==this.getAttribute("shadow")}set shadow(t){t?this.removeAttribute("shadow"):this.setAttribute("shadow","false")}get maxHeight(){return this.getAttribute("max-height")}set maxHeight(t){t?this.setAttribute("max-height",t):this.removeAttribute("max-height"),this.Te()}get hideScrollbar(){return this.hasAttribute("hide-scrollbar")}set hideScrollbar(t){t?this.setAttribute("hide-scrollbar",""):this.removeAttribute("hide-scrollbar")}get customScrollbar(){return this.hasAttribute("custom-scrollbar")}set customScrollbar(t){t?this.setAttribute("custom-scrollbar",""):this.removeAttribute("custom-scrollbar")}get overflowX(){return this.hasAttribute("overflow-x")}set overflowX(t){t?this.setAttribute("overflow-x",""):this.removeAttribute("overflow-x")}get nearEdgeThreshold(){const t=parseInt(this.getAttribute("near-edge-threshold")||"",10);return Number.isFinite(t)?t:100}set nearEdgeThreshold(t){null==t?this.removeAttribute("near-edge-threshold"):this.setAttribute("near-edge-threshold",t+"")}get scrollAnchoring(){return this.hasAttribute("scroll-anchoring")}set scrollAnchoring(t){t?this.setAttribute("scroll-anchoring",""):this.removeAttribute("scroll-anchoring")}connectedCallback(){if(this.me?.addEventListener("scroll",this.Dt,{passive:!0}),this.Et=new ResizeObserver(()=>{this.nn?.update(),this.Ce()}),this.me){this.Et.observe(this.me);const t=this.me.querySelector("slot");t&&t.addEventListener("slotchange",this.Ee)}this.Te(),this.Ce(),this.sn(),this.Se()}disconnectedCallback(){this.me?.removeEventListener("scroll",this.Dt),this.en(),this.Me(),this.Et&&(this.Et.disconnect(),this.Et=null),null!==this.zt&&(cancelAnimationFrame(this.zt),this.zt=null)}attributeChangedCallback(t,n,e){n!==e&&("max-height"===t&&(this.Te(),this.Ce(),this.nn?.update()),"custom-scrollbar"!==t&&"overflow-x"!==t||(this.en(),this.sn(),this.Ce()),"scroll-anchoring"===t&&(this.Me(),this.Se()))}Se(){!this.ke&&this.scrollAnchoring&&(this.ke=new MutationObserver(t=>{const n=this.me;if(!n)return;const e=new Set;for(const o of t)o.addedNodes.forEach(t=>e.add(t));if(0===e.size)return;let i=0;for(const o of Array.from(this.children)){if(!e.has(o))break;i+=o.offsetHeight}i>0&&(n.scrollTop+=i,this.nn?.update())}),this.ke.observe(this,{childList:!0}))}Me(){this.ke?.disconnect(),this.ke=null}sn(){if(this.nn)return;if(!this.me||!this.customScrollbar)return;this.nn=new _t(this.me,{vertical:!0,horizontal:this.overflowX});const t=this.shadowRoot;this.nn.trackY&&t.appendChild(this.nn.trackY),this.nn.trackX&&t.appendChild(this.nn.trackX)}en(){this.nn&&(this.nn.trackY?.remove(),this.nn.trackX?.remove(),this.nn.destroy(),this.nn=null)}Te(){if(this.me){const t=this.maxHeight;t?(this.me.style.setProperty("--scroll-max-height",t),this.me.style.maxHeight=t):(this.me.style.removeProperty("--scroll-max-height"),this.me.style.maxHeight="")}}Ce(){if(!this.me)return;const{scrollTop:t,scrollLeft:n,scrollHeight:e,scrollWidth:i,clientHeight:o,clientWidth:s}=this.me;this.ye&&this.ye.classList.toggle("visible",t>2),this.fe&&this.fe.classList.toggle("visible",e-2>t+o),this.overflowX&&(this.we&&this.we.classList.toggle("visible",n>2),this.xe&&this.xe.classList.toggle("visible",i-2>n+s));const r=e-o;if(r>0){const n=this.nearEdgeThreshold,i=r-t;this.ze=this._e("nearend",i,n,this.ze,{distance:i,scrollTop:t,scrollHeight:e,clientHeight:o}),this.$e=this._e("nearstart",t,n,this.$e,{distance:t,scrollTop:t,scrollHeight:e,clientHeight:o})}else this.$e=!1,this.ze=!1}_e(t,n,e,i,o){return e>=n&&(i||this.dispatchEvent(new CustomEvent(t,{detail:o,bubbles:!0,composed:!0})),!0)}updateShadows(){this.Ce(),this.nn?.update()}scrollToTop(t=!0){this.me?.scrollTo({top:0,behavior:t?"smooth":"auto"})}scrollToBottom(t=!0){this.me&&this.me.scrollTo({top:this.me.scrollHeight,behavior:t?"smooth":"auto"})}scrollToLeft(t=!0){this.me?.scrollTo({left:0,behavior:t?"smooth":"auto"})}scrollToRight(t=!0){this.me&&this.me.scrollTo({left:this.me.scrollWidth,behavior:t?"smooth":"auto"})}scrollToElement(t,n=!0){const e="string"==typeof t?this.querySelector(t):t;e?.scrollIntoView({behavior:n?"smooth":"auto",block:"nearest"})}get scrollElement(){return this.me}}customElements.define("ty-scroll-container",TyScrollContainer),"undefined"!=typeof window&&(window.tyVersion=k,window.tyIcons={register:t=>{q(t)},get:t=>A(t),has:t=>j(t),list:()=>O(),cacheInfo:()=>H(),clearCache:()=>I()},window.tyResizeObserver={getSize:t=>ji(t),onResize:(t,n)=>Ii(t,n),get sizes(){return Li()}},window.tyLoader={set:t=>m(t),get:()=>y(),reset:()=>f()}),t.IconRegistry=N,t.TyButton=x,t.TyCalendar=vi,t.TyCalendarMonth=TyCalendarMonth,t.TyCalendarNavigation=ci,t.TyCheckbox=lt,t.TyCopy=zt,t.TyDatePicker=Di,t.TyFileUpload=Tt,t.TyIcon=R,t.TyInput=ot,t.TyModal=TyModal,t.TyOption=TyOption,t.TyPopup=TyPopup,t.TyRadio=gt,t.TyRadioGroup=yt,t.TyResizeObserver=TyResizeObserver,t.TyScrollContainer=TyScrollContainer,t.TySelect=se,t.TySelectedOptions=TySelectedOptions,t.TySelectedTags=TySelectedOptions,t.TyStep=TyStep,t.TySwitch=ut,t.TyTab=TyTab,t.TyTabs=TyTabs,t.TyTag=X,t.TyTextarea=jt,t.TyTooltip=TyTooltip,t.TyWizard=TyWizard,t.disableScrollLockDebug=function(){window.tyScrollDebug=!1},t.enableScrollLockDebug=function(){window.tyScrollDebug=!0},t.forceUnlockAll=function(){hn.activeLocks.clear(),pn()},t.getActiveLocks=function(){return new Set(hn.activeLocks)},t.getAllSizes=Li,t.getLoaderSvg=y,t.getLockState=function(){return{locked:hn.locked,scrollY:hn.scrollY,activeLocks:Array.from(hn.activeLocks)}},t.getSize=ji,t.isLocked=function(){return hn.locked},t.isLockedBy=function(t){return hn.activeLocks.has(t)},t.lockScroll=bn,t.onResize=Ii,t.resetLoaderSvg=f,t.setLoaderSvg=m,t.unlockScroll=vn,Object.defineProperty(t,Symbol.toStringTag,{value:"Module"})});
|
|
2
|
+
!function(t,n){"object"==typeof exports&&"undefined"!=typeof module?n(exports):"function"==typeof define&&define.amd?define(["exports"],n):n((t="undefined"!=typeof globalThis?globalThis:t||self).Tyrell={})}(this,function(t){"use strict";const n=["primary","success","danger","warning","neutral"],e="sm";function i(t){if("string"==typeof t){const n=t.toLowerCase().trim();return"false"!==n&&"0"!==n}return!!t}function o(t){return"function"==typeof t.default?t.default():t.default}class r{constructor(t){this.t=new Map,this.i=t,this.o()}o(){for(const[t,n]of Object.entries(this.i))void 0!==n.default&&this.t.set(t,o(n))}hasConfig(t){return t in this.i}updateProperty(t,n,e="property"){const i=this.i[t];if(!i)return null;const o=this.t.get(t),r=this.l(t,n,i);return this.h(t,r,i)?this.u(o,r)?null:(this.t.set(t,r),{name:t,oldValue:o,newValue:r,source:e}):null}l(t,n,e){if(e.coerce)return e.coerce(n);if(null==n)return o(e)??null;switch(e.type){case"boolean":if("string"==typeof n){if(""===n)return!0;const t=n.toLowerCase().trim();return"false"!==t&&"0"!==t}return!!n;case"number":const t=+n;return isNaN(t)?o(e)??0:t;case"string":return n+"";case"object":case"array":if("string"==typeof n)try{return JSON.parse(n)}catch{return o(e)??("array"===e.type?[]:{})}return n;default:return n}}h(t,n,e){return!e.validate||e.validate(n)}u(t,n){if("object"!=typeof t||"object"!=typeof n)return t===n;if(null===t||null===n)return t===n;try{return JSON.stringify(t)===JSON.stringify(n)}catch{return!1}}get(t){return this.t.get(t)}getAll(){return Object.fromEntries(this.t)}getConfig(t){return this.i[t]}isVisual(t){return this.i[t]?.visual??!1}isFormValue(t){return this.i[t]?.formValue??!1}shouldEmitChange(t){return this.i[t]?.emitChange??!1}handleAlias(t,n){for(const[e,i]of Object.entries(this.i))if(i.aliases&&t in i.aliases)return this.updateProperty(e,null===n?o(i):i.aliases[t],"attribute");return null}}let s=!1,a=!1;const l=new Set;let c=!1;class d{constructor(t,n){this.host=t,this.internals=n,this.own={flags:{}},this.custom="",this.errorFromReport=!1,function(){if(c)return;c=!0;const t=()=>{s=!0,setTimeout(()=>{s=!1})};document.addEventListener("click",n=>{const e=n.target?.closest?.("button:not([type=button]):not([type=reset]), input[type=submit], input[type=image], ty-button:not([type=button]):not([type=reset])");e&&t()},!0),document.addEventListener("keydown",n=>{"Enter"===n.key&&t()},!0),document.addEventListener("pointerdown",()=>{a=!0},!0);const n=()=>{if(a=!1,0===l.size)return;const t=[...l];l.clear(),setTimeout(()=>t.forEach(t=>t.reveal()))};document.addEventListener("pointerup",n,!0),document.addEventListener("pointercancel",n,!0)}(),t.addEventListener("invalid",n=>{if(!("error"in t))return;if(n.preventDefault(),this.showError(),!s)return;const e=this.internals.form;e&&function(t){return Array.from(t.elements).find(t=>{const n=t.validity;return n&&!n.valid&&!t.disabled})}(e)!==t||t.focus()})}reveal(){a?l.add(this):"error"in this.host&&!this.internals.validity.valid&&this.showError()}showError(){this.host.setAttribute("error",this.internals.validationMessage),this.errorFromReport=!0}set(t,n,e){this.own={flags:t,message:n,anchor:e},this.sync()}setCustom(t){this.custom=t||"",this.sync()}report(){return!!this.internals.checkValidity()||("error"in this.host?(this.showError(),this.host.focus()):this.internals.reportValidity(),!1)}sync(){const{flags:t,message:n,anchor:e}=this.own,i=Object.values(t).some(Boolean);this.custom?this.internals.setValidity({...t,customError:!0},this.custom,e):i?this.internals.setValidity(t,n||"Invalid value",e):this.internals.setValidity({}),this.errorFromReport&&(this.internals.validity.valid?(this.host.removeAttribute("error"),this.errorFromReport=!1):this.host.getAttribute("error")!==this.internals.validationMessage&&this.host.setAttribute("error",this.internals.validationMessage))}}const h=class extends HTMLElement{constructor(){super(),this.p=!1,this.v=!1,this.m=!1,this.k=null,this.props=new r(this.constructor.properties),this.$=this.attachInternals(),this.C=new d(this,this.$),this.shadowRoot||this.attachShadow({mode:"open"})}static get observedAttributes(){const t=[];for(const[n,e]of Object.entries(this.properties))if(t.push(n.replace(/([a-z])([A-Z])/g,"$1-$2").toLowerCase()),e.aliases)for(const i of Object.keys(e.aliases))t.push(i);return t}setProperty(t,n){const e=this.props.updateProperty(t,n,"property");e&&(this.M(e),this.S([e]))}getProperty(t){return this.props.get(t)}M(t){const{name:n,newValue:e}=t,i=this.props.getConfig(n);if(!i)return;const o=this.T(n);"boolean"===i.type?e?this.setAttribute(o,""):this.removeAttribute(o):null==e?this.removeAttribute(o):this.setAttribute(o,"object"==typeof e?JSON.stringify(e):e+"")}T(t){return t.replace(/([a-z])([A-Z])/g,"$1-$2").toLowerCase()}_(t){return t.replace(/-([a-z])/g,(t,n)=>n.toUpperCase())}attributeChangedCallback(t,n,e){if(n===e)return;let i=this.props.handleAlias(t,e);if(!i){const n=this._(t),o=this.props.hasConfig(t)?t:n;i=this.props.updateProperty(o,e,"attribute")}i&&this.S([i])}connectedCallback(){if(this.p=!0,!this.k){this.k=new Map;const t=this.constructor;for(const[n,e]of Object.entries(t.properties)){if(!e.formValue)continue;const t=this.getAttribute(this.T(n));this.k.set(n,t??("function"==typeof e.default?e.default():e.default)??null)}}const t=this.q();t.length>0&&this.S(t),this.onConnect(),this.v||(this.render(),this.v=!0)}disconnectedCallback(){this.p=!1,this.onDisconnect()}q(){const t=[],n=this.constructor;for(const e of Object.keys(n.properties)){const n=Object.getOwnPropertyDescriptor(this,e);if(n&&void 0!==n.value){const i=this.props.updateProperty(e,n.value,"property");i&&t.push(i)}}return t}S(t){0!==t.length&&(this.onPropertiesChanged(t),t.some(t=>this.props.isFormValue(t.name))&&this.updateFormValue(),t.some(t=>this.props.isVisual(t.name))&&this.p&&this.render(),this.D(t))}D(t){for(const n of t)this.props.shouldEmitChange(n.name)&&this.dispatchEvent(new CustomEvent("prop:change",{detail:{property:n.name,oldValue:n.oldValue,newValue:n.newValue},bubbles:!0,composed:!0}))}updateFormValue(){const t=this.getFormValue();this.$.setFormValue(t)}getFormValue(){return this.props.get("value")??null}onPropertiesChanged(t){}onConnect(){}onDisconnect(){}get form(){return this.$.form}get A(){return!0===this.constructor.formAssociated}applyValidity(t,n,e){this.C.set(t,n,e)}revealValidity(){this.A&&this.C.reveal()}get validity(){return this.A?this.$.validity:void 0}get validationMessage(){return this.A?this.$.validationMessage:""}get willValidate(){return!!this.A&&this.$.willValidate}checkValidity(){return!this.A||this.$.checkValidity()}reportValidity(){return!this.A||this.C.report()}setCustomValidity(t){this.A&&this.C.setCustom(t)}applyLabelName(t){let n=Array.from(this.$.labels??[]).map(t=>t.textContent?.trim()).filter(Boolean).join(" ");if(!n){const t=this.closest("label");if(t){const e=t.cloneNode(!0);e.querySelectorAll(this.tagName.toLowerCase()).forEach(t=>t.remove()),n=e.textContent?.trim()??""}}n?t.setAttribute("aria-label",n):t.removeAttribute("aria-label")}isDuplicateActivationClick(){return!!this.m||(this.m=!0,queueMicrotask(()=>{this.m=!1}),!1)}formResetCallback(){for(const[t,n]of this.k??[])this.setProperty(t,n);this.onFormReset()}onFormReset(){}};h.formAssociated=!0,h.properties={};let u=h;const p=new Map;function b(t,n){const{css:e,id:i}=n;let o;i&&p.has(i)?o=p.get(i):(o=new CSSStyleSheet,o.replaceSync(e),i&&p.set(i,o));const r=t.adoptedStyleSheets||[];r.includes(o)||(t.adoptedStyleSheets=[...r,o])}const v=(t,n,e,i)=>i?`var(${t}-${n}${e}, var(${t}-${i}${e}))`:`var(${t}-${n}${e})`,m=(t,n)=>`oklch(from ${t} calc(l + var(--ty-${n})) c h)`,g=(t,n)=>`oklch(from ${t} calc(l + sign(0.5 - l) * abs(var(--ty-${n}))) c h)`,y=(t,n)=>{const e=e=>v("--ty-solid",t,e,n),i="neutral"===t?" --_border-l: var(--ty-button-border-l-neutral, var(--ty-button-border-l, -0.15));":" --_border-l: var(--_muted-border-l, var(--ty-button-border-l, -0.15));",o="neutral"===t?g:m;return`\nbutton.solid.${t} { --_ring: ${v("--ty-color",t,"",n)}; --_solid-bg: var(--ty-button-bg, var(--_muted-solid-bg, ${e("")})); --_solid-rest: var(--ty-button-bg, var(--_muted-solid-bg, ${e("")}));${i} color: var(--ty-button-color, var(--_muted-solid-fg, ${e("-fg")})); }\nbutton.solid.${t}.tone-plus { --_solid-bg: var(--ty-button-bg, var(--_muted-solid-bg, ${e("-strong")})); --_solid-rest: var(--ty-button-bg, var(--_muted-solid-bg, ${e("-strong")})); color: var(--ty-button-color, var(--_muted-solid-fg, ${e("-strong-fg")})); }\nbutton.solid.${t}.tone-minus { --_solid-bg: var(--ty-button-bg, var(--_muted-solid-bg, ${e("-soft")})); --_solid-rest: var(--ty-button-bg, var(--_muted-solid-bg, ${e("-soft")})); color: var(--ty-button-color, var(--_muted-solid-fg, ${e("-soft-fg")})); }\nbutton.solid.${t}:hover:not(:disabled) { --_solid-bg: var(--ty-button-bg-hover, ${e("-hover")}); }\nbutton.solid.${t}:active:not(:disabled) { --_solid-bg: ${e("-active")}; }\nbutton.solid.${t}.tone-plus:hover:not(:disabled) { --_solid-bg: var(--ty-button-bg-hover, ${o(e("-strong"),"solid-hover-l")}); }\nbutton.solid.${t}.tone-plus:active:not(:disabled) { --_solid-bg: ${o(e("-strong"),"solid-active-l")}; }\nbutton.solid.${t}.tone-minus:hover:not(:disabled) { --_solid-bg: var(--ty-button-bg-hover, ${m(e("-soft"),"solid-hover-l")}); }\nbutton.solid.${t}.tone-minus:active:not(:disabled) { --_solid-bg: ${m(e("-soft"),"solid-active-l")}; }\n`},f=(t,n)=>{const e=e=>"neutral"===t&&"-strong"===e?`var(--ty-solid-neutral${e})`:(e=>v("--ty-color",t,e,n))(e);return`\nbutton.outlined.${t} {\ncolor: var(--ty-button-color, var(--_muted-outlined-line, ${e("")}));\nborder-color: var(--ty-button-border, var(--_muted-outlined-line, ${e("")}));\n}\nbutton.outlined.${t}.tone-plus {\ncolor: var(--ty-button-color, var(--_muted-outlined-line, ${e("-strong")}));\nborder-color: var(--ty-button-border, var(--_muted-outlined-line, ${e("-strong")}));\n}\nbutton.outlined.${t}.tone-minus {\ncolor: var(--ty-button-color, var(--_muted-outlined-line, ${e("-soft")}));\nborder-color: var(--ty-button-border, var(--_muted-outlined-line, ${e("-soft")}));\n}\nbutton.outlined.${t}:hover:not(:disabled) {\nbackground: var(--ty-button-bg-hover, ${v("--ty-bg",t,"-soft",n)});\n}\nbutton.outlined.${t}:not(.muted):hover:not(:disabled),\nbutton.outlined.${t}:active:not(:disabled),\nbutton.outlined.${t}:focus-visible {\ncolor: var(--ty-button-color, ${e("-strong")});\nborder-color: var(--ty-button-border, ${e("-strong")});\n}\n`},w=(t,n)=>{const e=e=>"neutral"===t&&"-strong"===e?`var(--ty-solid-neutral${e})`:(e=>v("--ty-color",t,e,n))(e);return`\nbutton.ghost.${t} { color: var(--ty-button-color, var(--_muted-ghost-fg, ${e("")})); }\nbutton.ghost.${t}.tone-plus { color: var(--ty-button-color, var(--_muted-ghost-fg, ${e("-strong")})); }\nbutton.ghost.${t}.tone-minus { color: var(--ty-button-color, var(--_muted-ghost-fg, ${e("-soft")})); }\nbutton.ghost.${t}:hover:not(:disabled) {\nbackground: var(--ty-button-bg-hover, ${v("--ty-bg",t,"-soft",n)});\n}\nbutton.ghost.${t}:not(.muted):hover:not(:disabled),\nbutton.ghost.${t}:active:not(:disabled),\nbutton.ghost.${t}:focus-visible {\ncolor: var(--ty-button-color, ${e("-strong")});\n}\n`},x=`\n:host {\ndisplay: inline-block;\nfont-family: inherit;\n}\n:host([wide]) {\ndisplay: flex;\nflex-grow: 1;\n}\n:host {\n--ty-button-height: 1.75rem; \n--ty-button-min-width: 4rem;\n--ty-button-pad-x: var(--ty-spacing-2);\n--ty-button-pad-y: 0px;\n--ty-button-font: var(--ty-font-xs);\n--ty-button-leading: var(--ty-leading-xs);\n--ty-button-tracking: var(--ty-tracking-xs);\n--ty-button-gap: var(--ty-spacing-1);\n--ty-button-action-size: 1.5rem;\n--ty-button-action-icon: 0.875rem;\n}\n:host([size="xs"]) {\n--ty-button-height: 1.5rem; \n--ty-button-pad-x: var(--ty-spacing-2);\n--ty-button-pad-y: 0px;\n--ty-button-font: var(--ty-font-xs);\n--ty-button-leading: var(--ty-leading-xs);\n--ty-button-tracking: var(--ty-tracking-xs);\n--ty-button-gap: var(--ty-spacing-1);\n--ty-button-action-size: 1.375rem;\n--ty-button-action-icon: 0.75rem;\n}\n:host([size="md"]) {\n--ty-button-height: 2rem; \n--ty-button-pad-x: var(--ty-spacing-3);\n--ty-button-pad-y: 0.375rem;\n--ty-button-font: var(--ty-font-sm);\n--ty-button-leading: var(--ty-leading-sm);\n--ty-button-tracking: var(--ty-tracking-sm);\n--ty-button-gap: var(--ty-spacing-2);\n--ty-button-action-size: 2rem;\n--ty-button-action-icon: 1rem;\n}\n:host([size="lg"]) {\n--ty-button-height: 2.25rem; \n--ty-button-pad-x: var(--ty-spacing-4);\n--ty-button-pad-y: 0.375rem;\n--ty-button-font: var(--ty-font-sm);\n--ty-button-leading: var(--ty-leading-sm);\n--ty-button-tracking: var(--ty-tracking-sm);\n--ty-button-gap: var(--ty-spacing-2);\n--ty-button-action-size: 2.25rem;\n--ty-button-action-icon: 1.125rem;\n}\n:host([size="xl"]) {\n--ty-button-height: 2.5rem; \n--ty-button-pad-x: var(--ty-spacing-6);\n--ty-button-pad-y: var(--ty-spacing-2);\n--ty-button-font: var(--ty-font-base);\n--ty-button-leading: var(--ty-leading-base);\n--ty-button-tracking: var(--ty-tracking-base);\n--ty-button-gap: var(--ty-spacing-2);\n--ty-button-action-size: 2.5rem;\n--ty-button-action-icon: 1.25rem;\n}\nbutton {\nfont-family: inherit;\nposition: relative;\ndisplay: flex;\nalign-items: center;\njustify-content: center;\ngap: var(--ty-button-gap);\nheight: var(--ty-button-height);\npadding: var(--ty-button-pad-y) var(--ty-button-pad-x);\nfont-size: var(--ty-button-font);\nline-height: var(--ty-button-leading);\nletter-spacing: var(--ty-button-tracking);\nfont-weight: var(--ty-weight-action, var(--ty-font-medium));\nwhite-space: nowrap;\ncursor: pointer;\nuser-select: none;\ntransition: var(--ty-local-transition, background-color 0.2s ease, color 0.2s ease, border-color 0.2s ease, box-shadow 0.2s ease);\nbackground: transparent;\ncolor: var(--ty-color-neutral);\nborder: 1px solid transparent;\n}\nbutton:not(.action) {\nmin-width: var(--ty-button-min-width);\n}\nbutton:not(.pill) {\nborder-radius: var(--ty-radius-md);\n}\nbutton.xs:not(.pill) { border-radius: var(--ty-button-radius-xs, var(--ty-radius-md)); }\nbutton.sm:not(.pill) { border-radius: var(--ty-button-radius-sm, var(--ty-radius-md)); }\nbutton.md:not(.pill) { border-radius: var(--ty-button-radius-md, var(--ty-radius-md)); }\nbutton.lg:not(.pill) { border-radius: var(--ty-button-radius-lg, var(--ty-radius-md)); }\nbutton.xl:not(.pill) { border-radius: var(--ty-button-radius-xl, var(--ty-radius-md)); }\nbutton:focus-visible {\noutline: none;\n}\nbutton:disabled {\ncursor: not-allowed;\nopacity: 0.6;\n}\n.loader-icon {\ndisplay: none;\nalign-items: center;\njustify-content: center;\nflex-shrink: 0;\nwidth: 1em;\nheight: 1em;\ncolor: currentColor;\n}\n.loader-icon svg {\nwidth: 100%;\nheight: 100%;\n}\nbutton.loading {\ncursor: wait;\n}\nbutton.loading > *:not(.loader-icon) {\nvisibility: hidden;\n}\nbutton.loading > .loader-icon {\ndisplay: inline-flex;\nposition: absolute;\ntop: 50%;\nleft: 50%;\ntransform: translate(-50%, -50%);\nanimation: ty-button-spin 0.7s linear infinite;\n}\n@keyframes ty-button-spin {\nto { transform: translate(-50%, -50%) rotate(360deg); }\n}\n@media (prefers-reduced-motion: reduce) {\nbutton.loading > .loader-icon {\nanimation-duration: 1.6s;\n}\n}\n::slotted(*) {\ndisplay: inline-flex;\nalign-items: center;\njustify-content: center;\n}\n::slotted(ty-icon) {\nflex-shrink: 0;\n}\n:host([wide]) button {\nflex-grow: 1;\n}\nbutton.action {\ngap: 0px !important;\nheight: var(--ty-button-action-size);\nwidth: var(--ty-button-action-size);\npadding: 0px !important;\n}\nbutton.action ::slotted(ty-icon) {\nheight: var(--ty-button-action-icon);\nwidth: var(--ty-button-action-icon);\n}\nbutton.muted {\n--_muted-solid-bg: var(--ty-solid-neutral);\n--_muted-solid-fg: var(--ty-solid-neutral-fg);\n--_muted-outlined-line: var(--ty-color-neutral);\n--_muted-ghost-fg: var(--ty-color-neutral);\n--_muted-border-l: var(--ty-button-border-l-neutral, var(--ty-button-border-l, -0.15));\n}\nbutton.muted.tone-plus {\n--_muted-solid-bg: var(--ty-solid-neutral-strong);\n--_muted-solid-fg: var(--ty-solid-neutral-strong-fg);\n--_muted-outlined-line: var(--ty-solid-neutral-strong);\n--_muted-ghost-fg: var(--ty-solid-neutral-strong);\n}\nbutton.muted.tone-minus {\n--_muted-solid-bg: var(--ty-solid-neutral-soft);\n--_muted-solid-fg: var(--ty-solid-neutral-soft-fg);\n--_muted-outlined-line: var(--ty-color-neutral-soft);\n--_muted-ghost-fg: var(--ty-color-neutral-soft);\n}\n@media (hover: hover) and (pointer: fine) {\nbutton.muted:hover:not(:disabled) {\n--_muted-solid-bg: unset;\n--_muted-solid-fg: unset;\n--_muted-outlined-line: unset;\n--_muted-ghost-fg: unset;\n--_muted-border-l: unset;\n}\n}\nbutton.muted:active:not(:disabled),\nbutton.muted:focus-visible:not(:disabled) {\n--_muted-solid-bg: unset;\n--_muted-solid-fg: unset;\n--_muted-outlined-line: unset;\n--_muted-ghost-fg: unset;\n--_muted-border-l: unset;\n}\nbutton.pill {\nborder-radius: 9999px;\npadding-left: 1.25em;\npadding-right: 1.25em;\n}\nbutton.pill.xs { padding-left: 1em; padding-right: 1em; }\nbutton.pill.sm { padding-left: 1.125em; padding-right: 1.125em; }\nbutton.pill.lg { padding-left: 1.5em; padding-right: 1.5em; }\nbutton.pill.xl { padding-left: 1.75em; padding-right: 1.75em; }\nbutton.pill:has(ty-icon:only-child),\nbutton.pill:has(slot[name="start"]:only-child),\nbutton.pill:has(slot[name="end"]:only-child) {\npadding: 0;\naspect-ratio: 1;\nmin-width: var(--ty-size-md);\n}\nbutton.pill.xs:has(ty-icon:only-child) { min-width: 1.375rem; min-height: 1.375rem; }\nbutton.pill.sm:has(ty-icon:only-child) { min-width: 1.5rem; min-height: 1.5rem; }\nbutton.pill.md:has(ty-icon:only-child) { min-width: 2rem; min-height: 2rem; }\nbutton.pill.lg:has(ty-icon:only-child) { min-width: 2.25rem; min-height: 2.25rem; }\nbutton.pill.xl:has(ty-icon:only-child) { min-width: 2.5rem; min-height: 2.5rem; }\nbutton.solid {\n--_ring: var(--ty-color-neutral);\n--_solid-bg: var(--ty-button-bg, var(--ty-solid-neutral));\n--_solid-rest: var(--ty-button-bg, var(--ty-solid-neutral));\n--_border-l: var(--ty-button-border-l-neutral, var(--ty-button-border-l, -0.15));\nbackground: var(--_solid-bg);\ncolor: var(--ty-button-color, var(--ty-solid-neutral-fg));\nborder: var(--ty-solid-border-width, 1px) solid\nvar(--ty-solid-border-color,\noklch(from var(--_solid-rest, var(--_solid-bg)) calc(l + var(--_border-l, -0.15) * var(--ty-button-depth, 0.35)) c h));\nbox-shadow: 0 1px 2px oklch(0 0 0 / calc(0.4 * var(--ty-button-depth, 0.35)));\n}\nbutton.solid.tone-plus { --_solid-bg: var(--ty-button-bg, var(--ty-solid-neutral-strong)); --_solid-rest: var(--ty-button-bg, var(--ty-solid-neutral-strong)); color: var(--ty-button-color, var(--ty-solid-neutral-strong-fg)); }\nbutton.solid.tone-minus { --_solid-bg: var(--ty-button-bg, var(--ty-solid-neutral-soft)); --_solid-rest: var(--ty-button-bg, var(--ty-solid-neutral-soft)); color: var(--ty-button-color, var(--ty-solid-neutral-soft-fg)); }\nbutton.solid:hover:not(:disabled) { --_solid-bg: var(--ty-button-bg-hover, var(--ty-solid-neutral-hover)); }\nbutton.solid:active:not(:disabled) { --_solid-bg: var(--ty-solid-neutral-active); }\nbutton.solid.tone-plus:hover:not(:disabled) {\n--_solid-bg: var(--ty-button-bg-hover, oklch(from var(--ty-solid-neutral-strong) calc(l + sign(0.5 - l) * abs(var(--ty-solid-hover-l))) c h));\n}\nbutton.solid.tone-plus:active:not(:disabled) {\n--_solid-bg: oklch(from var(--ty-solid-neutral-strong) calc(l + sign(0.5 - l) * abs(var(--ty-solid-active-l))) c h);\n}\nbutton.solid.tone-minus:hover:not(:disabled) {\n--_solid-bg: var(--ty-button-bg-hover, oklch(from var(--ty-solid-neutral-soft) calc(l + var(--ty-solid-hover-l)) c h));\n}\nbutton.solid.tone-minus:active:not(:disabled) {\n--_solid-bg: oklch(from var(--ty-solid-neutral-soft) calc(l + var(--ty-solid-active-l)) c h);\n}\n${n.map(t=>y(t)).join("")}\nbutton.solid:focus-visible {\nbox-shadow: 0 0 0 2px var(--ty-focus-ring-gap), 0 0 0 4px var(--_ring);\n}\nbutton.outlined {\nbackground: transparent;\ncolor: var(--ty-button-border, var(--ty-button-color, var(--ty-color-neutral)));\nborder-color: var(--ty-button-border, var(--ty-button-color, var(--ty-color-neutral)));\n}\nbutton.outlined:hover:not(:disabled) {\nbackground: var(--ty-button-bg-hover, var(--ty-bg-neutral-soft));\n}\n${n.map(t=>f(t)).join("")}\nbutton.ghost {\nbackground: transparent;\nborder: none;\ncolor: var(--ty-button-color, var(--ty-color-neutral));\n}\nbutton.ghost:hover:not(:disabled) {\nbackground: var(--ty-button-bg-hover, var(--ty-bg-neutral-soft));\n}\n${n.map(t=>w(t)).join("")}`;function k(t,e,i,o){const r=(i||"")+"",s=r.replace(/[+-]$/,"");return n.includes(s)||!/^[A-Za-z][A-Za-z0-9_-]*$/.test(s)?(e&&(t.adoptedStyleSheets=t.adoptedStyleSheets.filter(t=>t!==e)),null):(e||(e=new CSSStyleSheet,t.adoptedStyleSheets=[...t.adoptedStyleSheets,e]),e.replaceSync(o({flavor:r,base:s,shade:r.slice(s.length)})),e)}let z=null;function $(t){z=t&&t.trim()?t:null}function C(){return z??'<svg viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg" aria-hidden="true"><circle cx="12" cy="12" r="10" stroke="currentColor" stroke-width="3" stroke-opacity="0.25"/><path d="M22 12a10 10 0 0 1-10 10" stroke="currentColor" stroke-width="3" stroke-linecap="round"/></svg>'}function E(){z=null}const M=class extends u{constructor(){super(),this.L=!1,this.j=null,b(this.shadowRoot,{css:x,id:"ty-button"})}onConnect(){this.F()}onDisconnect(){}onPropertiesChanged(t){t.some(t=>"flavor"===t.name)&&this.F()}F(){const{base:t}=this.parseFlavor();this.j=k(this.shadowRoot,this.j,t,()=>(t=>y(t,"neutral")+f(t,"neutral")+w(t,"neutral"))(t))}get flavor(){return this.getProperty("flavor")}set flavor(t){this.setProperty("flavor",t)}get size(){return this.getProperty("size")}set size(t){this.setProperty("size",t)}get appearance(){return this.getProperty("appearance")}set appearance(t){this.setProperty("appearance",t)}get disabled(){return this.getProperty("disabled")}set disabled(t){this.setProperty("disabled",t)}get loading(){return this.getProperty("loading")}set loading(t){this.setProperty("loading",t)}get type(){return this.getProperty("type")}set type(t){this.setProperty("type",t)}get pill(){return this.getProperty("pill")}set pill(t){this.setProperty("pill",t)}get action(){return this.getProperty("action")}set action(t){this.setProperty("action",t)}get muted(){return this.getProperty("muted")}set muted(t){this.setProperty("muted",t)}get wide(){return this.getProperty("wide")}set wide(t){this.setProperty("wide",t)}get name(){return this.getProperty("name")}set name(t){this.setProperty("name",t)}get value(){return this.getProperty("value")}set value(t){this.setProperty("value",t)}parseFlavor(){const t=this.flavor||"";return t.length>1&&t.endsWith("+")?{base:t.slice(0,-1),tone:"+"}:t.length>1&&t.endsWith("-")?{base:t.slice(0,-1),tone:"-"}:{base:t,tone:""}}buildClasses(){const{base:t,tone:n}=this.parseFlavor();return function(...t){return t.filter(Boolean).join(" ")}(t,this.size,this.appearance,this.pill&&"pill",this.action&&"action",this.muted&&"muted","+"===n&&"tone-plus","-"===n&&"tone-minus")}handleFormAction(){const t=this.$.form;if(t)switch(this.type){case"submit":this.name&&this.value&&this.$.setFormValue(this.value);try{t.requestSubmit()}finally{this.name&&this.value&&this.$.setFormValue(null)}break;case"reset":t.reset()}}initializeButtonStructure(){const t=this.shadowRoot,n=this.buildClasses(),e=document.createElement("button");e.disabled=this.disabled,e.className=n,e.setAttribute("part","button");const i=document.createElement("span");i.className="loader-icon",i.setAttribute("aria-hidden","true"),i.innerHTML=C();const o=document.createElement("slot");o.name="start",o.className="start";const r=document.createElement("slot"),s=document.createElement("slot");s.name="end",s.className="end",e.appendChild(i),e.appendChild(o),e.appendChild(r),e.appendChild(s),e.addEventListener("click",t=>{this.disabled||this.loading||(t.stopPropagation(),this.handleFormAction(),this.dispatchEvent(new CustomEvent("click",{bubbles:!0,composed:!0,detail:{originalEvent:t}})))}),this.applyLoadingState(e),t.appendChild(e),this.L=!0}applyLoadingState(t){const n=this.loading;if(t.classList.toggle("loading",n),n){t.setAttribute("aria-busy","true");const n=t.querySelector(".loader-icon");n&&(n.innerHTML=C())}else t.removeAttribute("aria-busy")}render(){const t=this.shadowRoot;if(!this.L)return void this.initializeButtonStructure();const n=this.buildClasses(),e=t.querySelector("button");e&&(e.disabled=this.disabled,e.className=n,this.applyLoadingState(e))}};M.formAssociated=!0,M.properties={flavor:{type:"string",visual:!0,default:"neutral"},size:{type:"string",visual:!0,default:e,validate:t=>["xs","sm","md","lg","xl"].includes(t),coerce:t=>["xs","sm","md","lg","xl"].includes(t)?t:e},appearance:{type:"string",visual:!0,default:"solid",validate:t=>["solid","outlined","ghost"].includes(t),coerce:t=>["solid","outlined","ghost"].includes(t)?t:"solid"},disabled:{type:"boolean",visual:!0,default:!1},loading:{type:"boolean",visual:!0,default:!1},type:{type:"string",visual:!1,default:"submit"},pill:{type:"boolean",visual:!0,default:!1},action:{type:"boolean",visual:!0,default:!1},muted:{type:"boolean",visual:!0,default:!1},wide:{type:"boolean",visual:!1,default:!1},name:{type:"string",default:""},value:{type:"string",default:""}};let S=M;customElements.get("ty-button")||customElements.define("ty-button",S);const T="1.0.0-TC57",_=new Map,q=new Map,D=new Map;let A=null,L=null;const j="ty-icons-v"+T,F="https://ty-icons.local/",V=new Map;let I=!1;function O(t){const n=new Set;Object.entries(t).forEach(([t,e])=>{_.set(t,e),n.add(t)}),n.size>0&&R(n)}function H(t){return _.get(t)}function N(t){return _.has(t)}async function B(){const t=new Set(_.keys());if(_.clear(),"caches"in window)try{await caches.delete(j),I=!1}catch(n){}R(t)}function P(t,n,e){q.set(t,e),n&&D.set(t,n)}function W(t){q.delete(t),D.delete(t)}function R(t){A||(A=new Set),t.forEach(t=>A.add(t)),null!==L&&clearTimeout(L);const n="undefined"!=typeof requestIdleCallback?requestIdleCallback:t=>setTimeout(t,0);L=n(()=>{const t=A;A=null,L=null,t&&t.size>0&&function(t){q.forEach((n,e)=>{const i=D.get(e);i?t.has(i)&&n(new Set([i])):n(t)})}(t)})}function Y(){return Array.from(_.keys())}async function U(){const t={version:T,cacheName:j,available:"caches"in window};if(!t.available)return t;try{const n=await caches.open(j),e=(await n.keys()).filter(t=>t.url.startsWith(F));return{...t,iconCount:e.length}}catch(n){return t}}const X=Object.freeze(Object.defineProperty({__proto__:null,addWatcher:P,clearIcons:B,getCacheInfo:U,getCachedIcon:async function(t){const n=V.get(t);if(n)return n;const e=(async()=>{try{await async function(){if(!I&&"caches"in window){I=!0;try{const t=(await caches.keys()).filter(t=>t.startsWith("ty-icons-v")&&t!==j);await Promise.all(t.map(t=>caches.delete(t)))}catch(t){}}}();const n=await caches.open(j),e=await n.match(`${F}${t}`);if(e)return await e.text()}catch(n){}return null})();return V.set(t,e),e.finally(()=>{V.delete(t)}),e},getIcon:H,getIconNames:Y,hasIcon:N,registerIcons:O,removeWatcher:W},Symbol.toStringTag,{value:"Module"}));let K=0;const Z='<svg xmlns="http://www.w3.org/2000/svg"\nviewBox="0 0 512 512"\nfill="currentColor"\nopacity="0.2">\n<path d="M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512z"/>\n</svg>',J=class extends u{constructor(){super(),this.V=null,this.I="",this.O=null,b(this.shadowRoot,{css:"\n:host {\ndisplay: flex;\nalign-items: center;\njustify-content: center;\nline-height: 0;\nwidth: var(--ty-icon-size, 1em);\nheight: var(--ty-icon-size, 1em);\naspect-ratio: 1 / 1;\ncolor: inherit;\ntransition: color 150ms cubic-bezier(0.4, 0, 0.2, 1);\nflex-shrink: 0;\nvisibility: visible !important;\nopacity: 1;\nwill-change: contents;\ntransform: translateZ(0);\n-webkit-font-smoothing: antialiased;\n}\n:host svg {\nwidth: 100%;\nheight: 100%;\ndisplay: block;\nwill-change: auto;\ntransform: translateZ(0);\n}\n::slotted(svg),\n::slotted(img) {\nwidth: 100%;\nheight: 100%;\ndisplay: block;\n}\n:host([slot]) {\ndisplay: inline-flex;\n}\n:host(.icon-xs) {\nwidth: 0.75em;\nheight: 0.75em;\n}\n:host(.icon-sm) {\nwidth: 0.875em;\nheight: 0.875em;\n}\n:host(.icon-md) {\nwidth: 1em;\nheight: 1em;\n}\n:host(.icon-lg) {\nwidth: 1.25em;\nheight: 1.25em;\n}\n:host(.icon-xl) {\nwidth: 1.5em;\nheight: 1.5em;\n}\n:host(.icon-2xl) {\nwidth: 2em;\nheight: 2em;\n}\n:host(.icon-12) {\nwidth: 12px;\nheight: 12px;\n}\n:host(.icon-14) {\nwidth: 14px;\nheight: 14px;\n}\n:host(.icon-16) {\nwidth: 16px;\nheight: 16px;\n}\n:host(.icon-18) {\nwidth: 18px;\nheight: 18px;\n}\n:host(.icon-20) {\nwidth: 20px;\nheight: 20px;\n}\n:host(.icon-24) {\nwidth: 24px;\nheight: 24px;\n}\n:host(.icon-32) {\nwidth: 32px;\nheight: 32px;\n}\n:host(.icon-48) {\nwidth: 48px;\nheight: 48px;\n}\n:host(.icon-64) {\nwidth: 64px;\nheight: 64px;\n}\n:host(.icon-80) {\nwidth: 80px;\nheight: 80px;\n}\n:host(.icon-96) {\nwidth: 96px;\nheight: 96px;\n}\n:host(.icon-spin) {\nanimation: icon-spin 1s linear infinite;\n}\n:host(.icon-spin.icon-tempo-slow) {\nanimation: icon-spin 2s linear infinite;\n}\n:host(.icon-spin.icon-tempo-fast) {\nanimation: icon-spin 0.5s linear infinite;\n}\n@keyframes icon-spin {\nfrom {\ntransform: rotate(0deg);\n}\nto {\ntransform: rotate(360deg);\n}\n}\n:host(.icon-pulse) {\nanimation: icon-pulse 2s cubic-bezier(0.4, 0, 0.6, 1) infinite;\n}\n:host(.icon-pulse.icon-tempo-slow) {\nanimation: icon-pulse 3s cubic-bezier(0.4, 0, 0.6, 1) infinite;\n}\n:host(.icon-pulse.icon-tempo-fast) {\nanimation: icon-pulse 1s cubic-bezier(0.4, 0, 0.6, 1) infinite;\n}\n@keyframes icon-pulse {\n0%,\n100% {\nopacity: 1;\n}\n50% {\nopacity: 0.5;\n}\n}\n:host {\n-webkit-user-select: none;\nuser-select: none;\n}\n:host(:not(.icon-clickable)) {\npointer-events: none;\n}\n:host(.icon-clickable) {\ncursor: pointer;\npointer-events: auto;\ntransition: color 150ms cubic-bezier(0.4, 0, 0.2, 1), transform 150ms cubic-bezier(0.4, 0, 0.2, 1);\n}\n:host(.icon-clickable:hover) {\ntransform: scale(1.1);\n}\n:host(.icon-clickable:active) {\ntransform: scale(0.95);\n}\n:host(.icon-disabled) {\nopacity: 0.5;\ncursor: not-allowed;\n}\n:host(.icon-block) {\ndisplay: block;\n}\n",id:"ty-icon"}),this.O=document.createElement("slot"),this.O.innerHTML=Z,this.I=Z,this.shadowRoot.appendChild(this.O)}onConnect(){this.V="ty-icon-"+ ++K,this.name&&P(this.V,this.name,t=>{this.name&&t.has(this.name)&&this.render()}),this.updateClasses()}onDisconnect(){this.V&&(W(this.V),this.V=null)}onPropertiesChanged(t){for(const n of t)if("name"===n.name){this.V&&W(this.V);const t=n.newValue||"";t&&this.isConnected&&(this.V="ty-icon-"+ ++K,P(this.V,t,t=>{this.name&&t.has(this.name)&&this.render()}))}this.updateClasses()}get name(){return this.getProperty("name")}set name(t){this.setProperty("name",t)}get size(){return this.getProperty("size")||void 0}set size(t){this.setProperty("size",t||"")}get spin(){return this.getProperty("spin")}set spin(t){this.setProperty("spin",t)}get pulse(){return this.getProperty("pulse")}set pulse(t){this.setProperty("pulse",t)}get tempo(){return this.getProperty("tempo")||void 0}set tempo(t){this.setProperty("tempo",t||"")}buildClasses(){const t=[],n=this.getProperty("size");n&&t.push("icon-"+n),this.getProperty("spin")&&t.push("icon-spin"),this.getProperty("pulse")&&t.push("icon-pulse");const e=this.getProperty("tempo");e&&(this.getProperty("spin")||this.getProperty("pulse"))&&t.push("icon-tempo-"+e);const i=this.className.split(/\s+/).filter(t=>t&&!t.startsWith("icon-")&&"icon-spin"!==t&&"icon-pulse"!==t);return[...t,...i]}updateClasses(){const t=this.buildClasses().join(" ");this.className!==t&&(this.className=t)}render(){const t=this.getProperty("name");if(!t)return void this.renderSvg(Z);const n=H(t);this.renderSvg(n||Z)}renderSvg(t){this.I!==t&&this.O&&(this.O.innerHTML=t,this.I=t)}};J.formAssociated=!1,J.properties={name:{type:"string",visual:!0,default:""},size:{type:"string",visual:!0,default:""},spin:{type:"boolean",visual:!0,default:!1},pulse:{type:"boolean",visual:!0,default:!1},tempo:{type:"string",visual:!0,default:""}};let G=J;customElements.get("ty-icon")||customElements.define("ty-icon",G);const Q=`\n:host([hidden]) {\ndisplay: none !important;\n}\n.tag-container {\ndisplay: flex;\nalign-items: center;\njustify-content: center;\ngap: var(--ty-spacing-1);\nborder-radius: var(--ty-radius-full);\nfont-weight: var(--ty-weight-label, 440);\ntext-align: center;\nwhite-space: nowrap;\nuser-select: none;\nbox-sizing: border-box;\npadding: 0 0.625rem; \nfont-size: var(--ty-font-xs); \nline-height: var(--ty-leading-xs); \nletter-spacing: var(--ty-tracking-xs); \nmin-height: 28px;\ntransition: var(--ty-transition-all);\nbackground: var(--tag-bg, transparent);\ncolor: var(--tag-color, var(--ty-text));\nborder: 1px solid;\nborder-color: var(--tag-border-color, var(--ty-border));\n}\n:host([no-pill]) .tag-container {\nborder-radius: var(--ty-radius-md);\n}\n:host([value]:not([selected])) .tag-container:not([aria-disabled="true"]) {\ncursor: pointer;\n}\n:host([selected]) .tag-container:not([aria-disabled="true"]) {\ncursor: initial;\n}\n.tag-container[tabindex]:not([aria-disabled="true"]):hover {\nbackground: var(--ty-bg-neutral-soft);\ntransform: translateY(-1px);\nbox-shadow: var(--ty-shadow-sm);\n}\n.tag-container[tabindex]:not([aria-disabled="true"]):active {\ntransform: translateY(0);\nbox-shadow: var(--ty-shadow-sm);\n}\n.tag-container[tabindex]:focus {\noutline: none;\n}\n.tag-container[aria-disabled="true"] {\nopacity: 0.6;\ncursor: not-allowed;\npointer-events: none;\n}\n.tag-start,\n.tag-content,\n.tag-end {\ndisplay: flex;\nalign-items: center;\njustify-content: center;\nflex-shrink: 0;\n}\n.tag-content {\nflex: 1;\nmin-width: 0;\n}\n.tag-dismiss {\ndisplay: inline-flex;\nalign-items: center;\njustify-content: center;\npadding: 0;\nbackground: none;\nborder: none;\ncolor: currentColor;\ncursor: pointer;\nborder-radius: var(--ty-radius-full);\ntransition: var(--ty-transition-all);\nopacity: 0.7;\nflex-shrink: 0;\nwidth: var(--ty-spacing-4);\nheight: var(--ty-spacing-4);\n}\n.tag-dismiss:hover {\nopacity: 1;\nbackground: rgba(0, 0, 0, 0.1);\n}\n.tag-dismiss svg {\nwidth: 100%;\nheight: 100%;\n}\n:host([size="xs"]) .tag-container {\npadding: 0 0.375rem; \nfont-size: var(--ty-font-xs); \nline-height: var(--ty-leading-xs);\nletter-spacing: var(--ty-tracking-xs);\nmin-height: 20px;\n}\n:host([size="xs"]) .tag-dismiss {\nwidth: var(--ty-spacing-3);\nheight: var(--ty-spacing-3);\nmargin-left: var(--ty-spacing-2);\n}\n:host([size="sm"]) .tag-container {\npadding: 0 var(--ty-spacing-2); \nfont-size: var(--ty-font-xs); \nline-height: var(--ty-leading-xs);\nletter-spacing: var(--ty-tracking-xs);\nmin-height: 24px;\n}\n:host([size="sm"]) .tag-dismiss {\nwidth: var(--ty-spacing-3);\nheight: var(--ty-spacing-3);\nmargin-left: var(--ty-spacing-2);\n}\n:host([size="lg"]) .tag-container {\npadding: 0 var(--ty-spacing-3); \nfont-size: var(--ty-font-sm); \nline-height: var(--ty-leading-sm); \nletter-spacing: var(--ty-tracking-sm); \nmin-height: 32px;\n}\n:host([size="lg"]) .tag-dismiss {\nwidth: var(--ty-spacing-5);\nheight: var(--ty-spacing-5);\nmargin-left: var(--ty-spacing-4);\n}\n:host([size="xl"]) .tag-container {\npadding: 0 0.875rem; \nfont-size: var(--ty-font-sm); \nline-height: var(--ty-leading-sm); \nletter-spacing: var(--ty-tracking-sm); \nmin-height: 36px;\n}\n:host([size="xl"]) .tag-dismiss {\nwidth: var(--ty-spacing-5);\nheight: var(--ty-spacing-5);\nmargin-left: var(--ty-spacing-4);\n}\n${n.filter(t=>"neutral"!==t).map(t=>`\n:host([flavor="${t}"]) {\n--tag-bg: var(--ty-bg-${t});\n--tag-color: var(--ty-color-${t});\n--tag-border-color: var(--ty-border-${t});\n}\n:host([flavor="${t}+"]) {\n--tag-bg: var(--ty-bg-${t}-bold);\n--tag-color: var(--ty-color-${t}-strong);\n--tag-border-color: var(--ty-color-${t});\n}\n:host([flavor="${t}-"]) {\n--tag-bg: var(--ty-bg-${t}-soft);\n--tag-color: var(--ty-color-${t});\n--tag-border-color: var(--ty-border-${t});\n}\n:host([flavor="${t}"]) .tag-container[tabindex]:hover,\n:host([flavor="${t}+"]) .tag-container[tabindex]:hover,\n:host([flavor="${t}-"]) .tag-container[tabindex]:hover {\nbackground: var(--ty-bg-${t}-bold);\n}\n:host([flavor="${t}"]) .tag-container[tabindex]:focus,\n:host([flavor="${t}+"]) .tag-container[tabindex]:focus,\n:host([flavor="${t}-"]) .tag-container[tabindex]:focus {\nbox-shadow: 0 0 0 3px var(--ty-color-${t}-faint);\n}\n`).join("")}\n:host([flavor="neutral"]) {\n--tag-color: var(--ty-text-bold);\n--tag-bg: var(--ty-bg-neutral-soft);\n--tag-border-color: var(--ty-border-bold);\n}\n:host([flavor="neutral+"]) {\n--tag-bg: var(--ty-bg-neutral-bold);\n--tag-color: var(--ty-text-bold);\n--tag-border-color: var(--ty-border-strong);\n}\n:host([flavor="neutral-"]) {\n--tag-bg: var(--ty-bg-neutral-soft);\n--tag-color: var(--ty-text-soft);\n--tag-border-color: var(--ty-border);\n}\n:host([flavor="neutral"]) .tag-container[tabindex]:hover,\n:host([flavor="neutral+"]) .tag-container[tabindex]:hover,\n:host([flavor="neutral-"]) .tag-container[tabindex]:hover {\nbackground: var(--ty-bg-neutral-soft);\n}\n:host([flavor="neutral"]) .tag-container[tabindex]:focus,\n:host([flavor="neutral+"]) .tag-container[tabindex]:focus,\n:host([flavor="neutral-"]) .tag-container[tabindex]:focus {\nbox-shadow: 0 0 0 3px var(--ty-border-soft);\n}\n.tag-start ::slotted(*),\n.tag-content ::slotted(*),\n.tag-end ::slotted(*) {\ndisplay: flex;\nalign-items: center;\n}\n.tag-start ::slotted(ty-icon),\n.tag-end ::slotted(ty-icon) {\nwidth: 1em;\nheight: 1em;\nflex-shrink: 0;\n}\n.tag-end ::slotted(.count) {\ndisplay: inline-flex;\nalign-items: center;\njustify-content: center;\nmin-width: var(--ty-spacing-6);\nheight: var(--ty-spacing-5);\npadding: 0 var(--ty-spacing-2);\nbackground: rgba(0, 0, 0, 0.1);\nborder-radius: var(--ty-radius-full);\nfont-size: var(--ty-font-xs);\nfont-weight: var(--ty-font-semibold);\nline-height: var(--ty-line-height-none);\nflex-shrink: 0;\n}\n.tag-content {\noverflow: hidden;\ntext-overflow: ellipsis;\n}\n:host([data-type="user"]) .tag-container {\nmin-width: var(--ty-spacing-20);\n}\n`,tt=class extends u{constructor(){super(),this.H=null,this.j=null,this.handleClick=t=>{this.clickable&&!this.disabled&&(t.preventDefault(),t.stopPropagation(),this.dispatchTagEvent("click",{target:this}),this.dispatchTagEvent("pointerdown",{target:this}))},this.handleDismiss=t=>{this.dismissible&&!this.disabled&&(t.preventDefault(),t.stopPropagation(),this.dispatchTagEvent("dismiss",{target:this}))},this.handleKeydown=t=>{const n=t;if(!this.disabled)switch(n.keyCode){case 13:case 32:this.clickable&&(n.preventDefault(),this.dispatchTagEvent("click",{target:this}));break;case 8:case 46:this.dismissible&&(n.preventDefault(),this.dispatchTagEvent("dismiss",{target:this}))}},b(this.shadowRoot,{css:Q,id:"ty-tag"})}onConnect(){this.F(),queueMicrotask(()=>{this.setupEventListeners()})}F(){this.j=k(this.shadowRoot,this.j,this.flavor,({flavor:t,base:n,shade:e})=>`\n:host([flavor="${t}"]) {\n--tag-bg: var(${"+"===e?`--ty-bg-${n}-bold`:"-"===e?`--ty-bg-${n}-soft`:"--ty-bg-"+n});\n--tag-color: var(${"+"===e?`--ty-color-${n}-strong`:"--ty-color-"+n});\n--tag-border-color: var(--ty-border-${n}, var(--ty-color-${n}));\n}\n:host([flavor="${t}"]) .tag-container[tabindex]:hover {\nbackground: var(--ty-bg-${n}-bold, var(--tag-bg));\n}\n:host([flavor="${t}"]) .tag-container[tabindex]:focus {\nbox-shadow: 0 0 0 3px var(--ty-color-${n}-faint, var(--tag-color));\n}`)}onDisconnect(){this.cleanupEventListeners()}onPropertiesChanged(t){t.some(t=>"flavor"===t.name)&&this.F()}dispatchTagEvent(t,n){this.dispatchEvent(new CustomEvent(t,{detail:n,bubbles:!0,composed:!0,cancelable:!0}))}cleanupEventListeners(){this.H&&(this.H(),this.H=null)}setupEventListeners(){this.cleanupEventListeners();const t=this.shadowRoot,n=t.querySelector(".tag-container"),e=t.querySelector(".tag-dismiss");n&&(n.addEventListener("click",this.handleClick),n.addEventListener("keydown",this.handleKeydown),e&&e.addEventListener("click",this.handleDismiss),this.H=()=>{n.removeEventListener("click",this.handleClick),n.removeEventListener("keydown",this.handleKeydown),e&&e.removeEventListener("click",this.handleDismiss)})}render(){this.shadowRoot.innerHTML=`\n<div class="tag-container" part="container"${this.clickable?' tabindex="0"':""}${this.disabled?' aria-disabled="true"':""}${this.value?` data-value="${this.value}"`:""}>\n<div class="tag-start">\n<slot name="start" class="tag-start"></slot>\n</div>\n<div class="tag-content">\n<slot></slot>\n</div>\n<div class="tag-end">\n<slot name="end"></slot>\n${this.dismissible?'\n<button class="tag-dismiss" type="button" aria-label="Remove tag">\n<svg viewBox="0 0 20 20" fill="currentColor">\n<path fill-rule="evenodd" d="M4.293 4.293a1 1 0 011.414 0L10 8.586l4.293-4.293a1 1 0 111.414 1.414L11.414 10l4.293 4.293a1 1 0 01-1.414 1.414L10 11.414l-4.293 4.293a1 1 0 01-1.414-1.414L8.586 10 4.293 5.707a1 1 0 010-1.414z" clip-rule="evenodd" />\n</svg>\n</button>\n':""}\n</div>\n</div>\n`,this.p&&this.setupEventListeners()}get flavor(){return this.getProperty("flavor")}set flavor(t){this.setProperty("flavor",t)}get size(){return this.getProperty("size")}set size(t){this.setProperty("size",t)}get value(){return this.getProperty("value")}set value(t){this.setProperty("value",t)}get selected(){return this.getProperty("selected")}set selected(t){this.setProperty("selected",t)}get noPill(){return this.getProperty("noPill")}set noPill(t){this.setProperty("noPill",t)}get clickable(){return this.getProperty("clickable")}set clickable(t){this.setProperty("clickable",t)}get dismissible(){return this.getProperty("dismissible")}set dismissible(t){this.setProperty("dismissible",t)}get disabled(){return this.getProperty("disabled")}set disabled(t){this.setProperty("disabled",t)}};tt.formAssociated=!0,tt.properties={flavor:{type:"string",visual:!0,default:"neutral"},size:{type:"string",visual:!0,default:e,validate:t=>["xs","sm","md","lg","xl"].includes(t),coerce:t=>["xs","sm","md","lg","xl"].includes(t)?t:e},value:{type:"string",visual:!0,default:""},selected:{type:"boolean",visual:!0,default:!1},noPill:{type:"boolean",visual:!0,default:!1},clickable:{type:"boolean",visual:!0,default:!1},dismissible:{type:"boolean",visual:!0,default:!1},disabled:{type:"boolean",visual:!0,default:!1}};let nt=tt;customElements.get("ty-tag")||customElements.define("ty-tag",nt);class TyOption extends HTMLElement{constructor(){super(),this.N=void 0,this.B=!1,this.P=!1,this.W=!1,this.R=!1,b(this.attachShadow({mode:"open"}),{css:"\n.option-content {\ndisplay: flex;\nalign-items: center;\njustify-content: space-between;\ngap: var(--ty-spacing-2);\nbox-sizing: border-box;\nwidth: 100%;\ncursor: pointer;\nuser-select: none;\ntransition: var(--ty-transition-all);\ncolor: var(--ty-text);\nfont-family: inherit;\nfont-size: var(--ty-font-sm);\nline-height: var(--ty-leading-sm);\nletter-spacing: var(--ty-tracking-sm);\npadding: var(--ty-spacing-2) var(--ty-spacing-3);\nborder-radius: var(--ty-radius-md);\n}\n:host([cloned]) {\ndisplay: block;\nmin-width: 0;\noverflow: hidden;\n}\n:host([cloned]) .option-content {\ndisplay: block;\npadding: 0px;\nbackground: transparent;\nmin-width: 0;\noverflow: hidden;\nwhite-space: nowrap;\ntext-overflow: ellipsis;\nfont-size: var(--ty-field-font, var(--ty-font-sm));\nline-height: var(--ty-field-leading, var(--ty-leading-sm));\nletter-spacing: var(--ty-field-tracking, var(--ty-tracking-sm));\n}\n.option-content:hover {\nbackground: var(--ty-bg-neutral-soft);\n}\n.option-content[highlighted] {\nbackground: var(--ty-bg-neutral-soft);\ncolor: var(--ty-text-strong);\n}\n.option-content[selected] {\nbackground: transparent;\ncolor: var(--ty-text-bold);\n}\n.option-check {\ndisplay: block;\nvisibility: hidden;\nflex-shrink: 0;\nwidth: 14px;\nheight: 14px;\nmargin-left: auto;\ncolor: var(--ty-color-primary);\n}\n.option-content[selected] .option-check {\nvisibility: visible;\n}\n:host([cloned]) .option-check {\ndisplay: none;\n}\n.option-content[selected]:hover {\nbackground: var(--ty-bg-neutral-soft);\n}\n.option-content[disabled] {\nopacity: 0.5;\ncursor: not-allowed;\n}\n.option-content[hidden] {}\n.option-content * {\npointer-events: none;\n}\n",id:"ty-option"}),this.render()}static get observedAttributes(){return["value","disabled","selected","highlighted","hidden"]}connectedCallback(){const t=Object.getOwnPropertyDescriptor(this,"value");t&&(this.N=t.value,delete this.value),this.render()}attributeChangedCallback(t,n,e){if(n!==e){switch(t){case"value":this.N=e||void 0;break;case"selected":this.B=null!==e;break;case"disabled":this.P=null!==e;break;case"highlighted":this.W=null!==e;break;case"hidden":this.R=null!==e}this.render()}}getOptionValue(){if(void 0!==this.N)return this.N;const t=this.getAttribute("value");return null!==t?t:this.textContent?.trim()||""}get value(){return this.getOptionValue()}set value(t){this.N!==t&&(this.N=t,void 0!==t?this.setAttribute("value",t):this.removeAttribute("value"),this.render())}get selected(){return this.B}set selected(t){t=i(t),this.B!==t&&(this.B=t,t?this.setAttribute("selected",""):this.removeAttribute("selected"),this.render())}get disabled(){return this.P}set disabled(t){t=i(t),this.P!==t&&(this.P=t,t?this.setAttribute("disabled",""):this.removeAttribute("disabled"),this.render())}get highlighted(){return this.W}set highlighted(t){t=i(t),this.W!==t&&(this.W=t,t?this.setAttribute("highlighted",""):this.removeAttribute("highlighted"),this.render())}get hidden(){return this.R}set hidden(t){t=i(t),this.R!==t&&(this.R=t,t?this.setAttribute("hidden",""):this.removeAttribute("hidden"),this.render())}render(){const t=this.shadowRoot;t.querySelector(".option-content")||(t.innerHTML='<div class="option-content"><slot></slot>\n<svg class="option-check" viewBox="0 0 24 24" fill="none" stroke="currentColor"\nstroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true">\n<path d="M20 6 9 17l-5-5" />\n</svg>\n</div>');const n=t.querySelector(".option-content");n&&(this.P?n.setAttribute("disabled",""):n.removeAttribute("disabled"),this.B?n.setAttribute("selected",""):n.removeAttribute("selected"),this.W?n.setAttribute("highlighted",""):n.removeAttribute("highlighted"),this.R?n.setAttribute("hidden",""):n.removeAttribute("hidden"))}}customElements.get("ty-option")||customElements.define("ty-option",TyOption);const et='\n:host {\n--ty-field-height: var(--ty-size-sm, 2rem);\n--ty-field-pad-x: 10px;\n--ty-field-font: var(--ty-font-sm);\n--ty-field-leading: 20px;\n--ty-field-tracking: var(--ty-tracking-sm);\n--ty-field-label-font: var(--ty-font-xs);\n--ty-field-label-leading: var(--ty-leading-xs);\n--ty-field-label-gap: 5px;\n--ty-field-outer-pad-x: calc(var(--ty-field-pad-x) + 1px);\n--ty-field-control: 24px;\n--ty-field-icon: 16px;\n}\n:host([size="xs"]) {\n--ty-field-height: var(--ty-size-xs, 1.75rem);\n--ty-field-pad-x: 8px;\n--ty-field-font: var(--ty-font-xs);\n--ty-field-leading: 16px;\n--ty-field-tracking: var(--ty-tracking-xs);\n--ty-field-label-font: var(--ty-font-xs);\n--ty-field-label-leading: var(--ty-leading-xs);\n--ty-field-label-gap: 4px;\n--ty-field-control: 20px;\n--ty-field-icon: 14px;\n}\n:host([size="md"]) {\n--ty-field-height: var(--ty-size-md, 2.25rem);\n--ty-field-pad-x: 12px;\n--ty-field-font: var(--ty-font-sm);\n--ty-field-leading: 20px;\n--ty-field-tracking: var(--ty-tracking-sm);\n--ty-field-label-font: var(--ty-font-sm);\n--ty-field-label-leading: var(--ty-leading-sm);\n--ty-field-label-gap: 6px;\n--ty-field-control: 28px;\n--ty-field-icon: 18px;\n}\n:host([size="lg"]) {\n--ty-field-height: var(--ty-size-lg, 2.5rem);\n--ty-field-pad-x: 14px;\n--ty-field-font: var(--ty-font-base);\n--ty-field-leading: 24px;\n--ty-field-tracking: var(--ty-tracking-base);\n--ty-field-label-font: var(--ty-font-sm);\n--ty-field-label-leading: var(--ty-leading-sm);\n--ty-field-label-gap: 6px;\n--ty-field-control: 32px;\n--ty-field-icon: 20px;\n}\n:host([size="xl"]) {\n--ty-field-height: var(--ty-size-xl, 2.75rem);\n--ty-field-pad-x: 16px;\n--ty-field-font: var(--ty-font-lg);\n--ty-field-leading: 28px;\n--ty-field-tracking: var(--ty-tracking-base);\n--ty-field-label-font: var(--ty-font-base);\n--ty-field-label-leading: var(--ty-leading-base);\n--ty-field-label-gap: 8px;\n--ty-field-control: 36px;\n--ty-field-icon: 22px;\n}\n@media (max-width: 640px) {\n:host([size="lg"]) {\n--ty-field-height: var(--ty-size-md, 2.25rem);\n--ty-field-pad-x: 12px;\n--ty-field-font: var(--ty-font-sm);\n--ty-field-leading: 20px;\n--ty-field-control: 28px;\n--ty-field-icon: 18px;\n}\n:host([size="xl"]) {\n--ty-field-height: var(--ty-size-lg, 2.5rem);\n--ty-field-pad-x: 14px;\n--ty-field-font: var(--ty-font-base);\n--ty-field-leading: 24px;\n--ty-field-control: 32px;\n--ty-field-icon: 20px;\n}\n}\n@media (max-width: 480px) {\n:host([size="xl"]) {\n--ty-field-height: var(--ty-size-md, 2.25rem);\n--ty-field-pad-x: 12px;\n--ty-field-font: var(--ty-font-sm);\n--ty-field-leading: 20px;\n--ty-field-control: 28px;\n--ty-field-icon: 18px;\n}\n}\n',it=(t,n)=>{const e=e=>n?e?`var(--ty-color-${t}${e}, var(--ty-color-${t}, var(--ty-color-${n}${e})))`:`var(--ty-color-${t}, var(--ty-color-${n}))`:e?`var(--ty-color-${t}${e}, var(--ty-color-${t}))`:`var(--ty-color-${t})`;return`\n:host([flavor="${t}"]) {\n--input-accent: var(--ty-input-${t}-border, ${e("-soft")});\n--input-accent-bold: ${e("")};\n--input-ring: color-mix(in oklab, ${e("")} 15%, transparent);\n}\n:host([flavor="${t}+"]) {\n--input-accent: ${e("")};\n--input-accent-bold: ${e("-strong")};\n--input-ring: color-mix(in oklab, ${e("-strong")} 15%, transparent);\n}\n:host([flavor="${t}-"]) {\n--input-accent: ${e("-faint")};\n--input-accent-bold: ${e("-soft")};\n--input-ring: color-mix(in oklab, ${e("-soft")} 15%, transparent);\n}\n`},ot=`\n${et}\n:host {\ndisplay: block;\nfont-family: inherit;\nwidth: 100%;\n}\n.input-container {\ndisplay: flex;\nflex-direction: column;\nwidth: 100%;\nbox-sizing: border-box;\n}\n.ty-field-label {\nfont-size: var(--ty-field-label-font);\nline-height: var(--ty-field-label-leading);\nletter-spacing: var(--ty-tracking-sm);\nfont-weight: var(--ty-font-medium);\ncolor: var(--ty-label-color);\nmargin-bottom: var(--ty-field-label-gap);\npadding-left: var(--ty-field-outer-pad-x);\ndisplay: flex;\nalign-items: center;\n}\n.required-icon {\ndisplay: inline-flex;\nalign-items: center;\ncolor: var(--ty-color-danger);\nwidth: 12px;\nheight: 12px;\nmargin-left: 4px;\nvertical-align: middle;\n}\n.required-icon svg {\nwidth: 100%;\nheight: 100%;\n}\n.input-wrapper {\ndisplay: flex;\nalign-items: center;\ngap: 0.5rem;\nwidth: 100%;\nbox-sizing: border-box;\nborder: 1px solid var(--input-accent, var(--input-border, var(--ty-input-border)));\nborder-radius: var(--ty-radius-base);\nbackground: var(--input-bg, var(--input-bg, var(--ty-input-bg)));\ntransition: var(--ty-local-transition, all 0.15s ease-in-out);\nmin-height: var(--ty-field-height);\npadding: 0 var(--ty-field-pad-x);\n}\n.input-wrapper:hover:not(.disabled):not(.focused) {\nborder-color: var(--input-accent-bold, var(--input-border-hover, var(--ty-input-border-hover)));\n}\n.input-wrapper.focused {\nborder-color: var(--input-accent-bold, var(--input-border-focus, var(--ty-input-border-focus)));\nbox-shadow: 0 0 0 3px var(--input-ring, var(--input-shadow-focus, var(--ty-input-shadow-focus)));\n}\n.input-wrapper.disabled {\ncursor: not-allowed;\nopacity: 0.5;\nbackground: var(--input-disabled-bg, var(--ty-input-disabled-bg));\nborder-color: var(--input-disabled-border, var(--ty-input-disabled-border));\n}\n::slotted([slot="start"]),\n::slotted([slot="end"]) {\ndisplay: flex;\nalign-items: center;\njustify-content: center;\nflex-shrink: 0;\ncolor: var(--ty-text-soft);\n}\n.password-toggle {\ndisplay: flex;\nalign-items: center;\njustify-content: center;\nflex-shrink: 0;\nwidth: 1.25rem;\nheight: 1.25rem;\npadding: 0;\nborder: none;\nbackground: none;\ncursor: pointer;\ncolor: var(--input-placeholder, var(--ty-input-placeholder));\ntransition: var(--ty-local-transition, color 0.15s ease-in-out);\n}\n.password-toggle:hover {\ncolor: var(--input-color, var(--ty-input-color));\n}\n.password-toggle:focus-visible {\noutline: 2px solid var(--input-accent, var(--ty-color-primary));\noutline-offset: 2px;\nborder-radius: 2px;\n}\n.password-toggle svg {\nwidth: 1rem;\nheight: 1rem;\n}\n::slotted(ty-icon) {\nwidth: 1em;\nheight: 1em;\nflex-shrink: 0;\n}\n.error-message {\nfont-size: var(--ty-font-xs);\nline-height: var(--ty-leading-xs);\nletter-spacing: var(--ty-tracking-xs);\ncolor: var(--ty-color-danger);\nmargin-top: 4px;\npadding-left: var(--ty-field-outer-pad-x);\n}\n.input-wrapper.error {\nborder-color: var(--ty-color-danger);\nbackground: var(--ty-bg-danger-soft);\n}\n.input-wrapper.error.focused {\nborder-color: var(--ty-color-danger-bold);\nbox-shadow: 0 0 0 3px var(--input-shadow-focus, var(--ty-input-shadow-focus));\n}\ninput {\nflex: 1;\nmin-width: 0;\nbox-sizing: border-box;\nborder: none;\noutline: none;\nbackground: transparent;\ncolor: var(--input-color, var(--ty-input-color));\nfont-family: inherit;\nfont-size: var(--ty-field-font);\nline-height: var(--ty-field-leading);\nletter-spacing: var(--ty-field-tracking);\nfont-weight: var(--ty-font-normal);\npadding: 0;\nmargin: 0;\n}\ninput[type="number"]::-webkit-outer-spin-button,\ninput[type="number"]::-webkit-inner-spin-button {\n-webkit-appearance: none;\nmargin: 0;\n}\ninput[type="number"] {\n-moz-appearance: textfield;\n}\ninput:disabled {\ncursor: not-allowed;\ncolor: var(--input-disabled-color, var(--ty-input-disabled-color));\n}\ninput::placeholder {\ncolor: var(--input-placeholder, var(--ty-input-placeholder));\nfont-weight: 400;\n}\n${n.filter(t=>"neutral"!==t).map(t=>it(t)).join("")}\ninput:focus-visible {\noutline: none;\n}\n@media (prefers-contrast: high) {\n.input-wrapper {\nborder-width: 2px;\n}\n}\n@media (prefers-reduced-motion: reduce) {\n.input-wrapper {\ntransition: none;\n}\n}\n`;function rt(t){return["number","currency","percent","compact"].includes(t)}function st(t,n){if(n)return n;const e=t.closest("[lang]");if(e){const t=e.getAttribute("lang");if(t)return t}return document.documentElement.lang?document.documentElement.lang:navigator.language?navigator.language:"en-US"}function at(t,n){let e=st(t);const i=new MutationObserver(i=>{for(const o of i)if("attributes"===o.type&&"lang"===o.attributeName){const i=st(t);i!==e&&(e=i,n(i))}});return i.observe(document.documentElement,{attributes:!0,attributeFilter:["lang"],subtree:!0}),()=>i.disconnect()}const lt='<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M12 6v12"/><path d="M17.196 9 6.804 15"/><path d="m6.804 9 10.392 6"/></svg>',ct='<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M2.062 12.348a1 1 0 0 1 0-.696 10.75 10.75 0 0 1 19.876 0 1 1 0 0 1 0 .696 10.75 10.75 0 0 1-19.876 0"/><circle cx="12" cy="12" r="3"/></svg>',dt=class extends u{constructor(){super(),this.Y=null,this.U=!1,this.X=!1,this.K=!1,this.Z=!1,this.j=null,this.J=null,this.G=null,this.tt=null,this.nt=null,this.et=null,this.it=null,this.ot=t=>{if("Enter"!==t.key||t.isComposing||t.defaultPrevented)return;const n=this.$.form;if(!n)return;const e=Array.from(n.elements),i=e.find(t=>t instanceof HTMLButtonElement&&"submit"===t.type||t instanceof HTMLInputElement&&("submit"===t.type||"image"===t.type)||"TY-BUTTON"===t.tagName&&!["button","reset"].includes(t.getAttribute("type")??""));if(i){if(i.disabled||i.hasAttribute("disabled"))return;return t.preventDefault(),void("TY-BUTTON"===i.tagName?i.shadowRoot?.querySelector("button")??i:i).click()}1===e.filter(t=>"TY-INPUT"===t.tagName||t instanceof HTMLInputElement&&!["button","checkbox","radio","file","hidden","image","reset","submit","range","color"].includes(t.type)).length&&(t.preventDefault(),n.requestSubmit())},b(this.shadowRoot,{css:ot,id:"ty-input"})}onConnect(){this.initializeShadowValue(),this.rt=at(this,()=>{this.render()}),this.F()}F(){this.j=k(this.shadowRoot,this.j,this.flavor,({base:t})=>(t=>it(t,"neutral"))(t))}onDisconnect(){this.removeEventListeners(),this.rt&&(this.rt(),this.rt=void 0),null!==this.et&&(clearTimeout(this.et),this.et=null),null!==this.it&&(clearTimeout(this.it),this.it=null)}onPropertiesChanged(t){for(const{name:n,newValue:e}of t)switch(n){case"flavor":this.F();break;case"value":this.Y=this.parseShadowValue(e||"");break;case"type":const t=this.getProperty("value")||"";this.Y=this.parseShadowValue(t);break;case"error":e?"neutral"===this.getProperty("flavor")&&(this.setProperty("flavor","danger"),this.Z=!0):this.Z&&("danger"===this.getProperty("flavor")&&this.setProperty("flavor","neutral"),this.Z=!1)}}onFormReset(){this.Y=null,this.initializeShadowValue(),this.U=!1,null!==this.et&&(clearTimeout(this.et),this.et=null),null!==this.it&&(clearTimeout(this.it),this.it=null),this.render()}getFormValue(){return null!==this.Y?this.Y+"":""}initializeShadowValue(){const t=this.getProperty("value");t?(this.Y=this.parseShadowValue(t),this.$.setFormValue(null!==this.Y?this.Y+"":"")):this.$.setFormValue("")}parseShadowValue(t){if(!t||"string"!=typeof t||""===t.trim())return null;if(rt(this.type)){const n=function(t){if(!t||""===t.trim())return null;let n=t.replace(/[^\d.,-]/g,"").trim();if(""===n||"-"===n)return null;const e=n.lastIndexOf(","),i=n.lastIndexOf("."),o=Math.max(e,i);if(-1===o){const t=parseFloat(n);return isNaN(t)?null:t}const r=n[o],s=n.slice(0,o),a=n.slice(o+1);if(s.includes(r)){const t=parseFloat(n.replace(/[.,]/g,""));return isNaN(t)?null:t}const l=s.replace(/[.,]/g,""),c=parseFloat(l+"."+a);return isNaN(c)?null:c}(t);return null!==n&&0===this.precision?Math.round(n):n}return t}shouldFormat(){return rt(this.type)&&!this.U&&null!==this.Y&&"number"==typeof this.Y}getFormatConfig(){return{type:this.type,locale:this.locale,currency:this.currency,precision:this.precision}}getDisplayValue(){if(this.shouldFormat()){let t=this.Y;return"percent"===this.type&&(t/=100),function(t,n){const{type:e,locale:i="en-US",currency:o="USD",precision:r}=n,s={};switch(void 0!==r&&(s.minimumFractionDigits=r,s.maximumFractionDigits=r),e){case"currency":s.style="currency",s.currency=o;break;case"percent":s.style="percent";break;case"compact":s.notation="compact",s.compactDisplay="short";break;default:s.style="decimal"}return new Intl.NumberFormat(i,s).format(t).replace(/\u202F/g," ").replace(/\u2009/g," ")}(t,this.getFormatConfig())}return null!==this.Y?this.Y+"":""}get type(){return this.getProperty("type")}set type(t){this.setProperty("type",t)}get value(){return null!==this.Y?this.Y+"":""}set value(t){this.setProperty("value",t)}get name(){return this.getProperty("name")}set name(t){this.setProperty("name",t)}get placeholder(){return this.getProperty("placeholder")}set placeholder(t){this.setProperty("placeholder",t)}get label(){return this.getProperty("label")}set label(t){this.setProperty("label",t)}get disabled(){return this.getProperty("disabled")}set disabled(t){this.setProperty("disabled",t)}focus(t){this.shadowRoot?.querySelector("input")?.focus(t)}get required(){return this.getProperty("required")}set required(t){this.setProperty("required",t)}get pattern(){return this.getProperty("pattern")}set pattern(t){this.setProperty("pattern",t??"")}get minLength(){return vt(this.getProperty("minlength"))??-1}set minLength(t){this.setProperty("minlength",null==t||0>t?"":t+"")}get maxLength(){return vt(this.getProperty("maxlength"))??-1}set maxLength(t){this.setProperty("maxlength",null==t||0>t?"":t+"")}get min(){return this.getProperty("min")}set min(t){this.setProperty("min",null==t?"":t+"")}get max(){return this.getProperty("max")}set max(t){this.setProperty("max",null==t?"":t+"")}get tooShortMessage(){return this.getProperty("tooShortMessage")}set tooShortMessage(t){this.setProperty("tooShortMessage",t??"")}get tooLongMessage(){return this.getProperty("tooLongMessage")}set tooLongMessage(t){this.setProperty("tooLongMessage",t??"")}get error(){return this.getProperty("error")}set error(t){this.setProperty("error",t)}get size(){return this.getProperty("size")}set size(t){this.setProperty("size",t)}get flavor(){return this.getProperty("flavor")}set flavor(t){this.setProperty("flavor",t)}get currency(){return this.getProperty("currency")}set currency(t){this.setProperty("currency",t)}get locale(){return st(this,this.getProperty("locale"))}set locale(t){this.setProperty("locale",t)}get precision(){return this.getProperty("precision")}set precision(t){this.setProperty("precision",t)}get debounce(){return this.getProperty("debounce")}set debounce(t){this.setProperty("debounce",t)}get form(){return this.$.form}buildClassList(){const t=[];return this.disabled&&t.push("disabled"),this.required&&t.push("required"),this.error&&t.push("error"),t.join(" ")}dispatchInputEvent(t,n){this.dispatchEvent(new CustomEvent("input",{detail:{value:this.Y,formattedValue:this.shouldFormat()?this.getDisplayValue():null,rawValue:t,originalEvent:n},bubbles:!0,composed:!0}))}dispatchChangeEvent(t,n){this.dispatchEvent(new CustomEvent("change",{detail:{value:this.Y,formattedValue:this.shouldFormat()?this.getDisplayValue():null,rawValue:t,originalEvent:n},bubbles:!0,composed:!0}))}removeEventListeners(){if(!this.K)return;const t=this.shadowRoot;if(!t)return;const n=t.querySelector("input");n&&(this.J&&(n.removeEventListener("input",this.J),this.J=null),this.G&&(n.removeEventListener("change",this.G),this.G=null),this.tt&&(n.removeEventListener("focus",this.tt),this.tt=null),this.nt&&(n.removeEventListener("blur",this.nt),this.nt=null),n.removeEventListener("keydown",this.ot),this.K=!1)}setupEventListeners(){if(this.K)return;const t=this.shadowRoot,n=t.querySelector("input"),e=t.querySelector(".input-wrapper");n&&e&&(this.J=t=>{this.X=!0,t.stopPropagation(),t.stopImmediatePropagation();const e=t.target.value;this.Y=this.parseShadowValue(e),this.$.setFormValue(null!==this.Y?this.Y+"":""),this.updateValidity(),null!==this.et&&clearTimeout(this.et),this.debounce>0?this.et=window.setTimeout(()=>{this.dispatchInputEvent(n.value,t),this.et=null},this.debounce):this.dispatchInputEvent(e,t)},this.G=t=>{t.stopPropagation(),t.stopImmediatePropagation();const e=t.target.value;this.Y=this.parseShadowValue(e),this.$.setFormValue(null!==this.Y?this.Y+"":""),this.updateValidity(),null!==this.it&&clearTimeout(this.it),this.debounce>0?this.it=window.setTimeout(()=>{this.dispatchChangeEvent(n.value,t),this.it=null},this.debounce):this.dispatchChangeEvent(e,t)},this.tt=t=>{this.U=!0,e.classList.add("focused"),rt(this.type)&&null!==this.Y&&(n.value=this.Y+""),this.dispatchEvent(new CustomEvent("focus",{detail:{originalEvent:t},bubbles:!0,composed:!0}))},this.nt=t=>{const i=t.target.value;null!==this.et&&(clearTimeout(this.et),this.et=null,this.dispatchInputEvent(i,t)),null!==this.it&&(clearTimeout(this.it),this.it=null,this.dispatchChangeEvent(i,t)),this.U=!1,e.classList.remove("focused"),this.X&&this.revealValidity(),this.shouldFormat()&&(n.value=this.getDisplayValue()),this.dispatchEvent(new CustomEvent("blur",{detail:{originalEvent:t},bubbles:!0,composed:!0}))},n.addEventListener("input",this.J),n.addEventListener("change",this.G),n.addEventListener("focus",this.tt),n.addEventListener("blur",this.nt),n.addEventListener("keydown",this.ot),this.K=!0)}render(){const t=this.shadowRoot,n=t.querySelector("input"),e=t.querySelector(".input-wrapper"),i=t.querySelector(".ty-field-label"),o=t.querySelector(".error-message"),r=this.buildClassList(),s=["password","email","tel","url"].includes(this.type)?this.type:"text",a=rt(this.type)?"decimal":"email"===this.type?"email":"tel"===this.type?"tel":"url"===this.type?"url":void 0,l=this.getDisplayValue();if(n&&e){if(n.type=s,n.value=l,n.placeholder=this.placeholder,n.name=this.name,a?n.inputMode=a:n.removeAttribute("inputmode"),e.className="input-wrapper "+r,n.disabled=this.disabled,this.disabled?n.setAttribute("disabled",""):n.removeAttribute("disabled"),n.required=this.required,this.required?n.setAttribute("required",""):n.removeAttribute("required"),this.syncConstraintAttributes(n),this.label?n.setAttribute("aria-label",this.label):n.removeAttribute("aria-label"),this.label)if(i)i.innerHTML=`${this.label}${this.required?`<span class="required-icon">${lt}</span>`:""}`,i.style.display="flex";else{const n=document.createElement("label");n.className="ty-field-label",n.innerHTML=`${this.label}${this.required?`<span class="required-icon">${lt}</span>`:""}`;const i=t.querySelector(".input-container");i&&i.insertBefore(n,e)}else i&&(i.style.display="none");if(this.error)if(o)o.textContent=this.error;else{const n=document.createElement("div");n.className="error-message",n.textContent=this.error,t.querySelector(".input-container")?.appendChild(n)}else o&&o.remove()}else{t.innerHTML=`\n<div class="input-container">\n${this.label?`\n<label class="ty-field-label">\n${this.label}\n${this.required?`<span class="required-icon">${lt}</span>`:""}\n</label>\n`:""}\n<div class="input-wrapper ${r}">\n<slot name="start"></slot>\n<input\ntype="${s}"\nvalue="${l}"\nplaceholder="${this.placeholder}"\nname="${this.name}"\n${a?`inputmode="${a}"`:""}\n/>\n<slot name="end"></slot>\n${"password"===s?`\n<button class="password-toggle" type="button"\naria-label="Show password" aria-pressed="false">\n${ct}\n</button>`:""}\n</div>\n${this.error?`\n<div class="error-message">${this.error}</div>\n`:""}\n</div>\n`;const n=t.querySelector("input");n.disabled=this.disabled,n.required=this.required,this.syncConstraintAttributes(n),this.label&&n.setAttribute("aria-label",this.label),this.setupPasswordToggle(),this.setupEventListeners()}this.updateValidity()}setupPasswordToggle(){const t=this.shadowRoot,n=t.querySelector(".password-toggle"),e=t.querySelector("input");n&&e&&(n.addEventListener("mousedown",t=>t.preventDefault()),n.addEventListener("click",()=>{const t="password"===e.type;e.type=t?"text":"password",n.innerHTML=t?'<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M10.733 5.076a10.744 10.744 0 0 1 11.205 6.575 1 1 0 0 1 0 .696 10.747 10.747 0 0 1-1.444 2.49"/><path d="M14.084 14.158a3 3 0 0 1-4.242-4.242"/><path d="M17.479 17.499a10.75 10.75 0 0 1-15.417-5.151 1 1 0 0 1 0-.696 10.75 10.75 0 0 1 4.446-5.143"/><path d="m2 2 20 20"/></svg>':ct,n.setAttribute("aria-label",t?"Hide password":"Show password"),n.setAttribute("aria-pressed",t+"")}))}syncConstraintAttributes(t){const n=!rt(this.type),e=(e,i)=>n&&""!==i?t.setAttribute(e,i):t.removeAttribute(e);e("pattern",this.pattern),e("maxlength",null!=vt(this.getProperty("maxlength"))?this.maxLength+"":"")}updateValidity(){const t=this.shadowRoot?.querySelector("input");if(this.disabled)return void this.applyValidity({});const n=t?t.value:(this.getProperty("value")??"")+"";if(""===n.trim())return void(this.required?this.applyValidity({valueMissing:!0},pt("text",{required:""},""),t??void 0):this.applyValidity({}));const e={},i=[],o=(t,n)=>{e[t]=!0,i.push(n)};if(rt(this.type)){const t="number"==typeof this.Y?this.Y:null,n=mt(this.min),e=mt(this.max),i=n=>o(n,pt("number",{step:"any",min:this.min,max:this.max},t+""));null!==t&&null!==n&&n>t&&i("rangeUnderflow"),null!==t&&null!==e&&t>e&&i("rangeOverflow")}else{t?.validity.typeMismatch&&o("typeMismatch",t.validationMessage),t?.validity.patternMismatch&&o("patternMismatch",t.validationMessage);const e=n.length,i=vt(this.getProperty("minlength")),r=vt(this.getProperty("maxlength")),s={minlength:i,maxlength:r,length:e};null!==i&&i>e&&o("tooShort",bt(this.tooShortMessage||"Use at least {minlength} characters (now {length})",s)),null!==r&&e>r&&o("tooLong",bt(this.tooLongMessage||"Use at most {maxlength} characters (now {length})",s))}this.applyValidity(e,i[0],t??void 0)}};dt.formAssociated=!0,dt.properties={type:{type:"string",visual:!0,default:"text",validate:t=>["text","email","password","number","tel","url","currency","percent","compact"].includes(t),coerce:t=>["text","email","password","number","tel","url","currency","percent","compact"].includes(t)?t:"text"},value:{type:"string",visual:!0,formValue:!0,emitChange:!0,default:""},name:{type:"string",default:""},placeholder:{type:"string",visual:!0,default:""},label:{type:"string",visual:!0,default:""},disabled:{type:"boolean",visual:!0,default:!1},required:{type:"boolean",visual:!0,default:!1},pattern:{type:"string",visual:!0,default:""},minlength:{type:"string",visual:!0,default:""},maxlength:{type:"string",visual:!0,default:""},min:{type:"string",visual:!0,default:""},max:{type:"string",visual:!0,default:""},tooShortMessage:{type:"string",visual:!0,default:""},tooLongMessage:{type:"string",visual:!0,default:""},error:{type:"string",visual:!0,default:""},size:{type:"string",visual:!0,default:e,validate:t=>["xs","sm","md","lg","xl"].includes(t),coerce:t=>["xs","sm","md","lg","xl"].includes(t)?t:e},flavor:{type:"string",visual:!0,default:"neutral"},currency:{type:"string",visual:!0,default:"USD"},locale:{type:"string",visual:!0,default:"en-US"},precision:{type:"number",visual:!0,default:void 0,validate:t=>null==t||"number"==typeof t&&t>=0&&10>=t,coerce:t=>{if(null==t)return;const n=+t;return isNaN(n)?void 0:Math.max(0,Math.min(10,Math.floor(n)))}},debounce:{type:"number",default:0,validate:t=>{const n=+t;return!isNaN(n)&&n>=0&&5e3>=n},coerce:t=>{const n=+t;return isNaN(n)?0:Math.max(0,Math.min(5e3,Math.floor(n)))}}};let ht=dt,ut=null;function pt(t,n,e){ut??(ut=document.createElement("input"));for(const i of Array.from(ut.getAttributeNames()))ut.removeAttribute(i);ut.type=t;for(const[i,o]of Object.entries(n))""===o&&"required"!==i||ut.setAttribute(i,o);return ut.value=e,ut.validationMessage}function bt(t,n){return t.replace(/\{(\w+)\}/g,(t,e)=>null!=n[e]?n[e]+"":t)}function vt(t){if(null==t||""===(t+"").trim())return null;const n=+t;return Number.isInteger(n)&&n>=0?n:null}function mt(t){if(null==t||""===(t+"").trim())return null;const n=+t;return Number.isFinite(n)?n:null}customElements.get("ty-input")||customElements.define("ty-input",ht);const gt=(t,n)=>{const e=e=>n?`var(--ty-color-${t}${e}, var(--ty-color-${n}${e}))`:`var(--ty-color-${t}${e})`;return`\n:host([flavor="${t}"]) { --checkbox-color: ${e("-strong")}; --checkbox-ring: color-mix(in oklab, ${e("")} 25%, transparent); }\n:host([flavor="${t}+"]) { --checkbox-color: ${e("-strong")}; --checkbox-ring: color-mix(in oklab, ${e("-strong")} 25%, transparent); }\n:host([flavor="${t}-"]) { --checkbox-color: ${e("")}; --checkbox-ring: color-mix(in oklab, ${e("")} 25%, transparent); }\n`},yt=`\n:host {\ndisplay: inline-flex;\nwidth: auto;\nvertical-align: middle;\n}\n.checkbox-container {\ndisplay: inline-flex;\nalign-items: center;\njustify-content: center;\nmin-height: 1.25em;\nmin-height: 1lh;\noutline: none;\ntransition: var(--ty-local-transition, all 0.15s ease-in-out);\nuser-select: none;\ncursor: pointer;\nborder-radius: 6px;\ngap: var(--ty-spacing-1);\ncolor: var(--checkbox-color-off, color-mix(in oklab, var(--ty-text) 30%, transparent));\nbox-sizing: border-box;\npadding: 2px;\nborder-radius: 5px;\n}\n.checkbox-container:hover {\nbackground: var(--checkbox-hover-bg, color-mix(in oklab, var(--ty-text) 8%, transparent));\n}\n.checkbox-container:not([aria-checked="true"]):not([aria-checked="mixed"]):hover {\ncolor: var(--checkbox-color-off-hover, color-mix(in oklab, var(--ty-text) 50%, transparent));\n}\n.checkbox-container[aria-checked="true"] {\ncolor: var(--checkbox-color, var(--ty-text));\n}\n.checkbox-container.focused,\n.checkbox-container:focus-visible {\nbox-shadow: 0 0 0 3px var(--checkbox-ring, color-mix(in oklab, var(--ty-color-primary) 25%, transparent));\n}\n.checkbox-icon {\ndisplay: flex;\nalign-items: center;\njustify-content: center;\ncolor: inherit;\ntransition: var(--ty-local-transition, color 0.15s ease-in-out);\npointer-events: none;\n}\n.checkbox-container svg {\nwidth: 16px;\nheight: 16px;\n}\n.checkbox-container.xs svg {\nwidth: 12px;\nheight: 12px;\n}\n.checkbox-container.sm svg {\nwidth: 14px;\nheight: 14px;\n}\n.checkbox-container.lg svg {\nwidth: 20px;\nheight: 20px;\n}\n.checkbox-container.xl svg {\nwidth: 24px;\nheight: 24px;\n}\n${n.map(t=>gt(t)).join("")}\n.checkbox-container[aria-checked="mixed"] {\ncolor: var(--checkbox-color, var(--ty-text));\n}\n.checkbox-container.disabled {\npointer-events: none;\ncursor: not-allowed;\nopacity: 0.5;\nfilter: grayscale(1);\n}\n.checkbox-container.disabled:not([aria-checked="true"]) {\nopacity: 0.45;\n}\n.checkbox-container.disabled:hover {\nbackground: none;\n}\n.checkbox-container.error .checkbox-icon {\ncolor: var(--ty-color-danger);\n}\n.checkbox-container.error:focus {\nbox-shadow: 0 0 0 3px color-mix(in oklab, var(--ty-color-danger) 15%, transparent);\n}\n`,ft=class extends u{constructor(){super(),this.j=null,this.K=!1,this.st=null,this.lt=null,this.tt=null,this.nt=null,b(this.shadowRoot,{css:yt,id:"ty-checkbox"})}onConnect(){this.setupEventListeners(),this.F()}F(){this.j=k(this.shadowRoot,this.j,this.flavor,({base:t})=>(t=>gt(t,"neutral"))(t))}onDisconnect(){this.removeEventListeners()}onPropertiesChanged(t){t.some(t=>"flavor"===t.name)&&this.F()}getFormValue(){return this.checked?this.value:null}buildClassList(){const t=[this.size];return this.disabled&&t.push("disabled"),this.required&&t.push("required"),t.join(" ")}handleCheckboxClick(t){if(this.disabled)return;if(this.isDuplicateActivationClick())return;const n=!!this.indeterminate||!this.checked;this.indeterminate&&(this.indeterminate=!1),this.checked=n,setTimeout(()=>{const e={value:n,checked:n,formValue:n?this.value:null,originalEvent:t};this.dispatchEvent(new CustomEvent("input",{detail:e,bubbles:!0,composed:!0})),this.dispatchEvent(new CustomEvent("change",{detail:e,bubbles:!0,composed:!0}))},0)}handleCheckboxKeydown(t){this.disabled||["Space"," ","Enter"].includes(t.key)&&(t.preventDefault(),t.stopPropagation(),this.handleCheckboxClick(t))}removeEventListeners(){if(!this.K)return;this.st&&(this.removeEventListener("click",this.st),this.st=null);const t=this.shadowRoot;if(!t)return;const n=t.querySelector(".checkbox-container");n?(this.lt&&(n.removeEventListener("keydown",this.lt),this.lt=null),this.tt&&(n.removeEventListener("focus",this.tt),this.tt=null),this.nt&&(n.removeEventListener("blur",this.nt),this.nt=null),this.K=!1):this.K=!1}setupEventListeners(){if(this.K)return;const t=this.shadowRoot.querySelector(".checkbox-container");t&&(this.st=t=>{this.handleCheckboxClick(t)},this.lt=t=>{this.handleCheckboxKeydown(t)},this.tt=()=>{t.classList.add("focused")},this.nt=()=>{t.classList.remove("focused")},this.addEventListener("click",this.st),t.addEventListener("keydown",this.lt),t.addEventListener("focus",this.tt),t.addEventListener("blur",this.nt),this.K=!0)}render(){const t=this.shadowRoot;let n=t.querySelector(".checkbox-container");const e=this.buildClassList(),i=this.indeterminate?"mixed":this.checked+"";if(n)n.className="checkbox-container "+e,n.tabIndex=this.disabled?-1:0,n.setAttribute("aria-checked",i),n.setAttribute("aria-disabled",this.disabled+""),n.setAttribute("aria-required",this.required+"");else{n=document.createElement("div"),n.className="checkbox-container "+e,n.tabIndex=this.disabled?-1:0,n.setAttribute("role","checkbox"),n.setAttribute("aria-checked",i),n.setAttribute("aria-disabled",this.disabled+""),n.setAttribute("aria-required",this.required+"");const o=document.createElement("div");o.className="checkbox-icon",n.appendChild(o),t.appendChild(n)}n.querySelector(".checkbox-icon").innerHTML=this.indeterminate?'<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="3" stroke-linecap="round" stroke-linejoin="round"><path d="M5 12h14"/></svg>':'<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="3" stroke-linecap="round" stroke-linejoin="round"><path d="M20 6 9 17l-5-5"/></svg>',this.setupEventListeners(),this.applyLabelName(n),this.updateValidity()}focus(t){const n=this.shadowRoot?.querySelector(".checkbox-container");n?n.focus(t):super.focus(t)}updateValidity(){const t=this.shadowRoot?.querySelector(".checkbox-container");this.disabled?this.applyValidity({}):this.required&&!this.checked?this.applyValidity({valueMissing:!0},"Please check this box",t??void 0):this.applyValidity({})}get checked(){return this.getProperty("checked")}set checked(t){this.setProperty("checked",t)}get indeterminate(){return this.getProperty("indeterminate")}set indeterminate(t){this.setProperty("indeterminate",t)}get value(){return this.getProperty("value")}set value(t){this.setProperty("value",t)}get name(){return this.getProperty("name")}set name(t){this.setProperty("name",t)}get disabled(){return this.getProperty("disabled")}set disabled(t){this.setProperty("disabled",t)}get required(){return this.getProperty("required")}set required(t){this.setProperty("required",t)}get size(){return this.getProperty("size")}set size(t){this.setProperty("size",t)}get flavor(){return this.getProperty("flavor")}set flavor(t){this.setProperty("flavor",t)}get form(){return this.$.form}};ft.formAssociated=!0,ft.properties={checked:{type:"boolean",visual:!0,formValue:!0,emitChange:!0,default:!1},indeterminate:{type:"boolean",visual:!0,default:!1},value:{type:"string",default:"on"},name:{type:"string",default:""},disabled:{type:"boolean",visual:!0,default:!1},required:{type:"boolean",visual:!0,default:!1},size:{type:"string",visual:!0,default:e,validate:t=>["xs","sm","md","lg","xl"].includes(t),coerce:t=>["xs","sm","md","lg","xl"].includes(t)?t:e},flavor:{type:"string",visual:!0,default:"neutral"}};let wt=ft;customElements.get("ty-checkbox")||customElements.define("ty-checkbox",wt);const xt=(t,n)=>{const e=e=>n?`var(--ty-color-${t}${e}, var(--ty-color-${n}${e}))`:`var(--ty-color-${t}${e})`;return`\n:host([flavor="${t}"]) { --switch-track: ${e("")}; }\n:host([flavor="${t}+"]) { --switch-track: ${e("-strong")}; }\n:host([flavor="${t}-"]) { --switch-track: ${e("-soft")}; }\n`},kt=`\n${ot}\n:host {\ndisplay: inline-flex;\nwidth: auto;\nvertical-align: middle;\n}\n.switch-container {\ndisplay: inline-flex;\nalign-items: center;\nmin-height: 1.25em;\nmin-height: 1lh;\ncursor: pointer;\nuser-select: none;\noutline: none;\nvertical-align: middle;\n}\n.switch-container.disabled {\ncursor: not-allowed;\nopacity: 0.55;\n}\n.switch-container:focus-visible .switch-track,\n.switch-container.focused .switch-track {\nbox-shadow: 0 0 0 3px var(--ty-input-shadow-focus);\n}\n.switch-track {\nposition: relative;\nflex-shrink: 0;\nwidth: 36px;\nheight: 20px;\nborder-radius: var(--ty-radius-full, 999px);\nbackground: var(--ty-color-neutral-soft, var(--ty-input-border));\ntransition: var(--ty-local-transition, background-color 0.18s ease-in-out);\nbox-sizing: border-box;\n}\n.switch-thumb {\nposition: absolute;\ntop: 2px;\nleft: 2px;\nwidth: 16px;\nheight: 16px;\nborder-radius: min(50%, var(--ty-radius-full, 50%));\nbackground: white;\nbox-shadow: 0 1px 3px rgba(0, 0, 0, 0.2);\ntransition: var(--ty-local-transition, transform 0.18s ease-in-out, background-color 0.18s ease-in-out);\n}\n.switch-container[aria-checked="true"] .switch-track {\nbackground: var(--switch-track, var(--ty-color-primary));\n}\n.switch-container[aria-checked="true"] .switch-thumb {\ntransform: translateX(16px);\n}\n.switch-container.xs .switch-track { width: 26px; height: 14px; }\n.switch-container.xs .switch-thumb { width: 10px; height: 10px; }\n.switch-container.xs[aria-checked="true"] .switch-thumb { transform: translateX(12px); }\n.switch-container.sm .switch-track { width: 30px; height: 16px; }\n.switch-container.sm .switch-thumb { width: 12px; height: 12px; }\n.switch-container.sm[aria-checked="true"] .switch-thumb { transform: translateX(14px); }\n.switch-container.lg .switch-track { width: 44px; height: 24px; }\n.switch-container.lg .switch-thumb { width: 20px; height: 20px; }\n.switch-container.lg[aria-checked="true"] .switch-thumb { transform: translateX(20px); }\n.switch-container.xl .switch-track { width: 52px; height: 28px; }\n.switch-container.xl .switch-thumb { width: 24px; height: 24px; }\n.switch-container.xl[aria-checked="true"] .switch-thumb { transform: translateX(24px); }\n${n.map(t=>xt(t)).join("")}\n`,zt=class extends u{constructor(){super(),this.j=null,this.K=!1,this.st=null,this.lt=null,this.tt=null,this.nt=null,b(this.shadowRoot,{css:kt,id:"ty-switch"})}onConnect(){this.setupEventListeners(),this.F()}onDisconnect(){this.removeEventListeners()}onPropertiesChanged(t){t.some(t=>"flavor"===t.name)&&this.F()}F(){this.j=k(this.shadowRoot,this.j,this.flavor,({base:t})=>(t=>xt(t,"neutral"))(t))}getFormValue(){return this.checked?this.value:null}buildClassList(){const t=[this.size];return this.disabled&&t.push("disabled"),this.required&&t.push("required"),t.join(" ")}handleSwitchClick(t){if(this.disabled)return;if(this.isDuplicateActivationClick())return;const n=!this.checked;this.checked=n,setTimeout(()=>{const e={value:n,checked:n,formValue:n?this.value:null,originalEvent:t};this.dispatchEvent(new CustomEvent("input",{detail:e,bubbles:!0,composed:!0})),this.dispatchEvent(new CustomEvent("change",{detail:e,bubbles:!0,composed:!0}))},0)}handleSwitchKeydown(t){this.disabled||["Space"," ","Enter"].includes(t.key)&&(t.preventDefault(),t.stopPropagation(),this.handleSwitchClick(t))}removeEventListeners(){if(!this.K)return;this.st&&(this.removeEventListener("click",this.st),this.st=null);const t=this.shadowRoot;if(!t)return;const n=t.querySelector(".switch-container");n?(this.lt&&(n.removeEventListener("keydown",this.lt),this.lt=null),this.tt&&(n.removeEventListener("focus",this.tt),this.tt=null),this.nt&&(n.removeEventListener("blur",this.nt),this.nt=null),this.K=!1):this.K=!1}setupEventListeners(){if(this.K)return;const t=this.shadowRoot.querySelector(".switch-container");t&&(this.st=t=>this.handleSwitchClick(t),this.lt=t=>this.handleSwitchKeydown(t),this.tt=()=>t.classList.add("focused"),this.nt=()=>t.classList.remove("focused"),this.addEventListener("click",this.st),t.addEventListener("keydown",this.lt),t.addEventListener("focus",this.tt),t.addEventListener("blur",this.nt),this.K=!0)}render(){const t=this.shadowRoot;let n=t.querySelector(".switch-container");const e=this.buildClassList();if(n)n.className="switch-container "+e,n.tabIndex=this.disabled?-1:0,n.setAttribute("aria-checked",this.checked?"true":"false"),n.setAttribute("aria-disabled",this.disabled?"true":"false"),n.setAttribute("aria-required",this.required?"true":"false");else{n=document.createElement("div"),n.className="switch-container "+e,n.tabIndex=this.disabled?-1:0,n.setAttribute("role","switch"),n.setAttribute("aria-checked",this.checked?"true":"false"),n.setAttribute("aria-disabled",this.disabled?"true":"false"),n.setAttribute("aria-required",this.required?"true":"false");const i=document.createElement("div");i.className="switch-track";const o=document.createElement("div");o.className="switch-thumb",i.appendChild(o),n.appendChild(i),t.appendChild(n)}this.setupEventListeners(),this.applyLabelName(n),this.updateValidity()}focus(t){const n=this.shadowRoot?.querySelector(".switch-container");n?n.focus(t):super.focus(t)}updateValidity(){const t=this.shadowRoot?.querySelector(".switch-container");this.disabled?this.applyValidity({}):this.required&&!this.checked?this.applyValidity({valueMissing:!0},"Please turn this on",t??void 0):this.applyValidity({})}get checked(){return this.getProperty("checked")}set checked(t){this.setProperty("checked",t)}get value(){return this.getProperty("value")}set value(t){this.setProperty("value",t)}get name(){return this.getProperty("name")}set name(t){this.setProperty("name",t)}get disabled(){return this.getProperty("disabled")}set disabled(t){this.setProperty("disabled",t)}get required(){return this.getProperty("required")}set required(t){this.setProperty("required",t)}get size(){return this.getProperty("size")}set size(t){this.setProperty("size",t)}get flavor(){return this.getProperty("flavor")}set flavor(t){this.setProperty("flavor",t)}get form(){return this.$.form}};zt.formAssociated=!0,zt.properties={checked:{type:"boolean",visual:!0,formValue:!0,emitChange:!0,default:!1},value:{type:"string",default:"on"},name:{type:"string",default:""},disabled:{type:"boolean",visual:!0,default:!1},required:{type:"boolean",visual:!0,default:!1},size:{type:"string",visual:!0,default:e,validate:t=>["xs","sm","md","lg","xl"].includes(t),coerce:t=>["xs","sm","md","lg","xl"].includes(t)?t:e},flavor:{type:"string",visual:!0,default:"primary"}};let $t=zt;customElements.get("ty-switch")||customElements.define("ty-switch",$t);const Ct=(t,n)=>{const e=e=>n?`var(--ty-color-${t}${e}, var(--ty-color-${n}${e}))`:`var(--ty-color-${t}${e})`;return`\n:host([flavor="${t}"]) { --radio-color: ${e("")}; }\n:host([flavor="${t}+"]) { --radio-color: ${e("-strong")}; }\n:host([flavor="${t}-"]) { --radio-color: ${e("-soft")}; }\n`},Et=`\n${ot}\n:host(ty-radio) {\ndisplay: inline-flex;\nwidth: auto;\nvertical-align: middle;\n}\n:host(ty-radio-group) {\ndisplay: block;\nwidth: 100%;\n}\n.radio-group-container {\ndisplay: flex;\nflex-direction: column;\ngap: 0.4rem;\nfont-family: inherit;\ncolor: var(--ty-text);\n}\n.radio-group-label {\nfont-size: var(--ty-font-sm);\nline-height: var(--ty-leading-sm);\nfont-weight: var(--ty-font-medium);\ncolor: var(--ty-text);\ndisplay: flex;\nalign-items: center;\ngap: 0.25rem;\n}\n.radio-group-list {\ndisplay: flex;\ngap: 0.6rem;\nalign-items: flex-start;\n}\n.radio-group-list.vertical {\nflex-direction: column;\nalign-items: flex-start;\n}\n.radio-group-list.horizontal {\nflex-direction: row;\nflex-wrap: wrap;\nalign-items: center;\n}\n.radio-group-error {\nfont-size: var(--ty-font-xs);\nline-height: var(--ty-leading-xs);\ncolor: var(--ty-color-danger);\n}\n.radio-group-container .required-icon {\nwidth: 0.65em;\nheight: 0.65em;\ncolor: var(--ty-color-danger);\n}\n.radio-group-container .required-icon svg {\nwidth: 100%;\nheight: 100%;\n}\n.radio-container {\ndisplay: inline-flex;\nalign-items: center;\nmin-height: 1.25em;\nmin-height: 1lh;\ncursor: pointer;\nuser-select: none;\noutline: none;\nvertical-align: middle;\n}\n.radio-container:not(.disabled):not([aria-checked="true"]):hover .radio-circle {\nborder-color: var(--radio-ring-off-hover, color-mix(in oklab, var(--ty-text) 80%, transparent));\n}\n.radio-container.disabled {\ncursor: not-allowed;\nopacity: 0.55;\n}\n.radio-container:focus-visible .radio-circle,\n.radio-container.focused .radio-circle {\nbox-shadow: 0 0 0 3px var(--ty-input-shadow-focus);\n}\n.radio-circle {\nposition: relative;\nflex-shrink: 0;\nwidth: 18px;\nheight: 18px;\nborder-radius: 50%;\nborder: 2px solid var(--radio-ring-off, color-mix(in oklab, var(--ty-text) 45%, transparent));\nbackground: var(--ty-input-bg);\nbox-sizing: border-box;\ntransition: var(--ty-local-transition, border-color 0.15s ease-in-out);\n}\n.radio-circle::after {\ncontent: "";\nposition: absolute;\ntop: 50%;\nleft: 50%;\nwidth: 8px;\nheight: 8px;\nborder-radius: 50%;\nbackground: var(--radio-color, var(--ty-color-primary));\ntransform: translate(-50%, -50%) scale(0);\ntransition: transform 0.15s ease-in-out;\n}\n.radio-container[aria-checked="true"] .radio-circle {\nborder-color: var(--radio-color, var(--ty-color-primary));\n}\n.radio-container[aria-checked="true"] .radio-circle::after {\ntransform: translate(-50%, -50%) scale(1);\n}\n.radio-container.xs .radio-circle { width: 14px; height: 14px; }\n.radio-container.xs .radio-circle::after { width: 6px; height: 6px; }\n.radio-container.sm .radio-circle { width: 16px; height: 16px; }\n.radio-container.sm .radio-circle::after { width: 7px; height: 7px; }\n.radio-container.lg .radio-circle { width: 22px; height: 22px; }\n.radio-container.lg .radio-circle::after { width: 10px; height: 10px; }\n.radio-container.xl .radio-circle { width: 26px; height: 26px; }\n.radio-container.xl .radio-circle::after { width: 12px; height: 12px; }\n${n.map(t=>Ct(t)).join("")}\n`,Mt=class extends u{constructor(){super(),this.j=null,this.K=!1,this.st=null,this.tt=null,this.nt=null,this.ct=!0,b(this.shadowRoot,{css:Et,id:"ty-radio"})}setTabStop(t){this.ct=t;const n=this.shadowRoot?.querySelector(".radio-container");n&&(n.tabIndex=this.disabled||!t?-1:0)}focus(t){const n=this.shadowRoot?.querySelector(".radio-container");n?n.focus(t):super.focus(t)}onConnect(){this.setupEventListeners(),this.dispatchEvent(new CustomEvent("ty-radio-connected",{bubbles:!0})),this.F()}onDisconnect(){this.removeEventListeners()}onPropertiesChanged(t){t.some(t=>"flavor"===t.name)&&this.F()}F(){this.j=k(this.shadowRoot,this.j,this.flavor,({base:t})=>(t=>Ct(t,"neutral"))(t))}buildClassList(){const t=[this.size];return this.disabled&&t.push("disabled"),t.join(" ")}handleClick(t){this.disabled||(t.stopPropagation(),this.dispatchEvent(new CustomEvent("ty-radio-select",{detail:{value:this.value},bubbles:!0,composed:!0})))}removeEventListeners(){if(!this.K)return;this.st&&(this.removeEventListener("click",this.st),this.st=null);const t=this.shadowRoot?.querySelector(".radio-container");t?(this.tt&&(t.removeEventListener("focus",this.tt),this.tt=null),this.nt&&(t.removeEventListener("blur",this.nt),this.nt=null),this.K=!1):this.K=!1}setupEventListeners(){if(this.K)return;const t=this.shadowRoot.querySelector(".radio-container");t&&(this.st=t=>this.handleClick(t),this.tt=()=>t.classList.add("focused"),this.nt=()=>t.classList.remove("focused"),this.addEventListener("click",this.st),t.addEventListener("focus",this.tt),t.addEventListener("blur",this.nt),this.K=!0)}render(){const t=this.shadowRoot;let n=t.querySelector(".radio-container");const e=this.buildClassList();if(n)n.className="radio-container "+e,n.tabIndex=this.disabled||!this.ct?-1:0,n.setAttribute("aria-checked",this.checked+""),n.setAttribute("aria-disabled",this.disabled+"");else{n=document.createElement("div"),n.className="radio-container "+e,n.tabIndex=this.disabled||!this.ct?-1:0,n.setAttribute("role","radio"),n.setAttribute("aria-checked",this.checked+""),n.setAttribute("aria-disabled",this.disabled+"");const i=document.createElement("div");i.className="radio-circle",n.appendChild(i),t.appendChild(n)}this.setupEventListeners(),this.applyLabelName(n)}get value(){return this.getProperty("value")}set value(t){this.setProperty("value",t)}get checked(){return this.getProperty("checked")}set checked(t){this.setProperty("checked",t)}get disabled(){return this.getProperty("disabled")}set disabled(t){this.setProperty("disabled",t)}get size(){return this.getProperty("size")}set size(t){this.setProperty("size",t)}get flavor(){return this.getProperty("flavor")}set flavor(t){this.setProperty("flavor",t)}};Mt.properties={value:{type:"string",default:""},checked:{type:"boolean",visual:!0,default:!1},disabled:{type:"boolean",visual:!0,default:!1},size:{type:"string",visual:!0,default:e},flavor:{type:"string",visual:!0,default:"primary"}};let St=Mt;customElements.get("ty-radio")||customElements.define("ty-radio",St);const Tt=class extends u{constructor(){super(),this.K=!1,this.dt=null,this.lt=null,this.ht=null,b(this.shadowRoot,{css:Et,id:"ty-radio-group"})}onConnect(){this.setupEventListeners(),queueMicrotask(()=>this.syncChildren())}onDisconnect(){this.removeEventListeners()}onPropertiesChanged(t){t.some(t=>"value"===t.name||"size"===t.name||"flavor"===t.name||"disabled"===t.name||"required"===t.name)&&this.syncChildren()}getFormValue(){return this.value||null}focus(t){const n=this.getRadios().filter(t=>!t.disabled),e=n.find(t=>t.checked)??n[0];e?e.focus(t):super.focus(t)}getRadios(){return Array.from(this.querySelectorAll("ty-radio")).filter(t=>"function"==typeof t.setTabStop)}syncChildren(){const t=this.getRadios();for(const i of t)i.checked=i.value===this.value,this.disabled?i.disabled||(i.disabled=!0,i.dataset.tyGroupDisabled=""):"tyGroupDisabled"in i.dataset&&(i.disabled=!1,delete i.dataset.tyGroupDisabled),i.size=this.size,i.flavor=this.flavor;const n=t.filter(t=>!t.disabled),e=n.find(t=>t.checked)??n[0];for(const i of t)i.setTabStop(i===e);this.updateValidity()}updateValidity(){if(!this.required||this.disabled||this.value)this.applyValidity({});else{const t=this.getRadios().find(t=>!t.disabled),n=t?.shadowRoot?.querySelector(".radio-container");this.applyValidity({valueMissing:!0},"Please select an option",n??void 0)}}handleRadioSelect(t){if(this.disabled)return;const n=t.detail,e=n?.value;"string"==typeof e&&e!==this.value&&(this.value=e,this.syncChildren(),setTimeout(()=>{const n={value:e,formValue:e,originalEvent:t};this.dispatchEvent(new CustomEvent("input",{detail:n,bubbles:!0,composed:!0})),this.dispatchEvent(new CustomEvent("change",{detail:n,bubbles:!0,composed:!0}))},0))}handleKeydown(t){if(this.disabled)return;const n=this.getRadios().filter(t=>!t.disabled);if(0===n.length)return;const e=document.activeElement,i=n.find(t=>t===e||t.contains(e));let o=-1;if(["ArrowDown","ArrowRight"].includes(t.key))t.preventDefault(),o=i?(n.indexOf(i)+1)%n.length:0;else{if(!["ArrowUp","ArrowLeft"].includes(t.key)){if(["Space"," ","Enter"].includes(t.key)){if(i){t.preventDefault(),this.value=i.value,this.syncChildren();const n={value:i.value,formValue:i.value,originalEvent:t};setTimeout(()=>{this.dispatchEvent(new CustomEvent("change",{detail:n,bubbles:!0,composed:!0}))},0)}return}return}t.preventDefault(),o=i?(n.indexOf(i)-1+n.length)%n.length:n.length-1}const r=n[o];if(r){r.focus(),this.value=r.value,this.syncChildren();const n={value:r.value,formValue:r.value,originalEvent:t};setTimeout(()=>{this.dispatchEvent(new CustomEvent("change",{detail:n,bubbles:!0,composed:!0}))},0)}}removeEventListeners(){this.K&&(this.dt&&(this.removeEventListener("ty-radio-select",this.dt),this.dt=null),this.lt&&(this.removeEventListener("keydown",this.lt),this.lt=null),this.ht&&(this.removeEventListener("ty-radio-connected",this.ht),this.ht=null),this.K=!1)}setupEventListeners(){this.K||(this.dt=t=>this.handleRadioSelect(t),this.lt=t=>this.handleKeydown(t),this.ht=()=>this.syncChildren(),this.addEventListener("ty-radio-select",this.dt),this.addEventListener("keydown",this.lt),this.addEventListener("ty-radio-connected",this.ht),this.K=!0)}render(){const t=this.shadowRoot;let n=t.querySelector(".radio-group-container");if(n){let t=n.querySelector(".radio-group-label");if(this.label)if(t||(t=document.createElement("div"),t.className="radio-group-label",n.insertBefore(t,n.firstChild)),t.textContent=this.label,this.required&&!t.querySelector(".required-icon")){const n=document.createElement("span");n.className="required-icon",n.innerHTML=lt,t.appendChild(n)}else this.required||t.querySelector(".required-icon")?.remove();else t&&t.remove();const e=n.querySelector(".radio-group-list");e&&(e.className="radio-group-list "+this.orientation);let i=n.querySelector(".radio-group-error");this.error?(i||(i=document.createElement("div"),i.className="radio-group-error",n.appendChild(i)),i.textContent=this.error):i&&i.remove(),n.setAttribute("aria-disabled",this.disabled+"")}else{if(n=document.createElement("div"),n.className="radio-group-container",n.setAttribute("role","radiogroup"),n.setAttribute("aria-disabled",this.disabled+""),this.label){const t=document.createElement("div");if(t.className="radio-group-label",t.textContent=this.label,this.required){const n=document.createElement("span");n.className="required-icon",n.innerHTML=lt,t.appendChild(n)}n.appendChild(t)}const e=document.createElement("div");e.className="radio-group-list "+this.orientation;const i=document.createElement("slot");if(e.appendChild(i),n.appendChild(e),this.error){const t=document.createElement("div");t.className="radio-group-error",t.textContent=this.error,n.appendChild(t)}t.appendChild(n),this.setupEventListeners()}this.syncChildren()}get value(){return this.getProperty("value")}set value(t){this.setProperty("value",t)}get name(){return this.getProperty("name")}set name(t){this.setProperty("name",t)}get label(){return this.getProperty("label")}set label(t){this.setProperty("label",t)}get disabled(){return this.getProperty("disabled")}set disabled(t){this.setProperty("disabled",t)}get required(){return this.getProperty("required")}set required(t){this.setProperty("required",t)}get error(){return this.getProperty("error")}set error(t){this.setProperty("error",t)}get orientation(){return this.getProperty("orientation")}set orientation(t){this.setProperty("orientation",t)}get size(){return this.getProperty("size")}set size(t){this.setProperty("size",t)}get flavor(){return this.getProperty("flavor")}set flavor(t){this.setProperty("flavor",t)}get form(){return this.$.form}};Tt.formAssociated=!0,Tt.properties={value:{type:"string",visual:!0,formValue:!0,emitChange:!0,default:""},name:{type:"string",default:""},label:{type:"string",visual:!0,default:""},disabled:{type:"boolean",visual:!0,default:!1},required:{type:"boolean",visual:!0,default:!1},error:{type:"string",visual:!0,default:""},orientation:{type:"string",visual:!0,default:"vertical"},size:{type:"string",visual:!0,default:e},flavor:{type:"string",visual:!0,default:"primary"}};let _t=Tt;customElements.get("ty-radio-group")||customElements.define("ty-radio-group",_t);const qt=(t,n)=>{const e=e=>n?`var(--ty-color-${t}${e}, var(--ty-color-${n}${e}))`:`var(--ty-color-${t}${e})`,i=e=>n?`var(--ty-bg-${t}${e}, var(--ty-bg-${n}${e}))`:`var(--ty-bg-${t}${e})`;return`\n:host([flavor="${t}"]) { --copy-color: ${e("")}; --copy-color-hover: ${e("-strong")}; --copy-bg-hover: ${i("-soft")}; }\n:host([flavor="${t}+"]) { --copy-color: ${e("-strong")}; --copy-color-hover: ${e("-strong")}; --copy-bg-hover: ${i("-soft")}; }\n:host([flavor="${t}-"]) { --copy-color: ${e("-soft")}; --copy-color-hover: ${e("")}; --copy-bg-hover: ${i("-soft")}; }\n`},Dt=`\n.copy-field-value {\nflex: 1;\nfont-size: var(--ty-field-font);\nline-height: var(--ty-field-leading);\nletter-spacing: var(--ty-field-tracking);\noverflow: hidden;\ntext-overflow: ellipsis;\nwhite-space: nowrap;\nuser-select: none;\npadding: 0;\nmargin: 0;\nbackground: transparent;\nborder: none;\ncolor: var(--input-color, var(--ty-input-color));\nfont-family: inherit;\n}\ncode.copy-field-value {\nfont-family: var(--ty-font-mono, ui-monospace, SFMono-Regular, Menlo, Consolas, monospace);\nfont-size: calc(var(--ty-field-font) * 0.93);\n}\n.copy-field-value.multiline {\nwhite-space: pre-wrap;\nword-break: break-word;\nmax-height: 200px;\noverflow-y: auto;\n}\n.input-wrapper:has(.copy-field-value.multiline) {\nalign-items: flex-start;\npadding-top: 8px;\npadding-bottom: 8px;\n}\n.copy-field-value.horizontal-scroll {\noverflow-x: auto;\noverflow-y: hidden;\ntext-overflow: clip;\nwhite-space: nowrap;\n}\n.copy-field-value.multiline.horizontal-scroll {\nwhite-space: pre;\nword-break: normal;\noverflow-y: auto;\n}\n.copy-field-value.multiline,\n.copy-field-value.horizontal-scroll {\nscrollbar-width: none; \n}\n.copy-field-value.multiline::-webkit-scrollbar,\n.copy-field-value.horizontal-scroll::-webkit-scrollbar {\ndisplay: none; \n}\n.input-wrapper:not(.disabled):hover {\nbackground: var(--copy-bg-hover, var(--ty-bg-primary-soft));\ntransition: var(--ty-local-transition, background 0.2s ease);\n}\n.copy-button {\nflex-shrink: 0;\ndisplay: flex;\nalign-items: center;\njustify-content: center;\nwidth: var(--ty-field-control);\nheight: var(--ty-field-control);\ncursor: pointer;\nborder: none;\nbackground: transparent;\ncolor: var(--copy-color, var(--ty-text-soft));\ntransition: var(--ty-local-transition, color 0.2s ease, transform 0.2s ease);\npadding: 0;\nmargin: 0;\n}\n.copy-button:hover:not(.disabled) {\ncolor: var(--copy-color-hover, var(--ty-text));\ntransform: scale(1.1);\n}\n.copy-button.success {\ncolor: var(--ty-color-success);\nanimation: copy-feedback 0.3s ease;\n}\n.copy-button.error {\ncolor: var(--ty-color-danger);\nanimation: copy-feedback 0.3s ease;\n}\n@keyframes copy-feedback {\n0%, 100% { transform: scale(1); }\n50% { transform: scale(1.2); }\n}\n.copy-button svg {\nwidth: var(--ty-field-icon);\nheight: var(--ty-field-icon);\n}\n.input-wrapper.disabled .copy-button {\ncursor: not-allowed;\nopacity: 0.5;\n}\n.input-wrapper.disabled {\ncursor: not-allowed;\n}\n${n.map(t=>qt(t)).join("")}\n`,At='<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><rect width="14" height="14" x="8" y="8" rx="2" ry="2"/><path d="M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2"/></svg>',Lt='<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><polyline points="20 6 9 17 4 12"/></svg>',jt=class extends u{constructor(){super(),this.ut=null,this.bt=!1,this.j=null,b(this.shadowRoot,{css:ot,id:"ty-input"}),b(this.shadowRoot,{css:Dt,id:"ty-copy"})}onConnect(){this.F()}F(){this.j=k(this.shadowRoot,this.j,this.flavor,({base:t})=>(t=>qt(t,"neutral"))(t))}onDisconnect(){null!==this.ut&&(clearTimeout(this.ut),this.ut=null)}onPropertiesChanged(t){t.some(t=>"flavor"===t.name)&&this.F()}buildClassList(){const t=[];return this.disabled&&t.push("disabled"),this.required&&t.push("required"),t.join(" ")}async copyToClipboard(){if(this.disabled||!this.value)return;const t=this.value;try{await navigator.clipboard.writeText(t),this.dispatchEvent(new CustomEvent("copy-success",{detail:{value:t},bubbles:!0,composed:!0}))}catch(n){try{const n=document.createElement("textarea");n.value=t,n.style.position="fixed",n.style.opacity="0",document.body.appendChild(n),n.select(),document.execCommand("copy"),document.body.removeChild(n),this.dispatchEvent(new CustomEvent("copy-success",{detail:{value:t},bubbles:!0,composed:!0}))}catch(e){return this.dispatchEvent(new CustomEvent("copy-error",{detail:{error:e},bubbles:!0,composed:!0})),void this.showCopyError()}}this.showCopySuccess()}showCopySuccess(){null!==this.ut&&clearTimeout(this.ut),this.bt=!0;const t=this.shadowRoot.querySelector(".copy-button");t&&(t.classList.add("success"),t.innerHTML=Lt,t.setAttribute("aria-label","Copied!")),this.ut=window.setTimeout(()=>{this.bt=!1;const t=this.shadowRoot.querySelector(".copy-button");t&&(t.classList.remove("success"),t.innerHTML=At,t.setAttribute("aria-label","Copy to clipboard")),this.ut=null},2e3)}showCopyError(){null!==this.ut&&clearTimeout(this.ut),this.bt=!1;const t=this.shadowRoot.querySelector(".copy-button");t&&(t.classList.add("error"),t.innerHTML='<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M18 6 6 18"/><path d="m6 6 12 12"/></svg>',t.setAttribute("aria-label","Copy failed")),this.ut=window.setTimeout(()=>{const t=this.shadowRoot.querySelector(".copy-button");t&&(t.classList.remove("error"),t.innerHTML=At,t.setAttribute("aria-label","Copy to clipboard")),this.ut=null},2e3)}setupEventListeners(){const t=this.shadowRoot,n=t.querySelector(".input-wrapper"),e=t.querySelector(".copy-button");if(n&&!this.disabled){const t=n;t.addEventListener("click",t=>{t.target===e||t.target.closest(".copy-button")||this.copyToClipboard()}),t.style.cursor="pointer"}e&&e.addEventListener("click",()=>{this.copyToClipboard()})}render(){const t=this.shadowRoot,n=this.buildClassList(),e=["copy-field-value",this.multiline?"multiline":"",this.horizontalScroll?"horizontal-scroll":""].filter(Boolean).join(" "),i=(this.value||"").replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">");t.innerHTML=`\n<div class="input-container">\n${this.label?`\n<label class="ty-field-label">\n${this.label}\n${this.required?`<span class="required-icon">${lt}</span>`:""}\n</label>\n`:""}\n<div class="input-wrapper ${n}">\n${"code"===this.format?`<code class="${e}">${i}</code>`:`<div class="${e}">${i}</div>`}\n<button class="copy-button${this.bt?" success":""}" type="button" aria-label="${this.bt?"Copied!":"Copy to clipboard"}" ${this.disabled?"disabled":""}>\n${this.bt?Lt:At}\n</button>\n</div>\n</div>\n`,this.setupEventListeners()}get value(){return this.getProperty("value")}set value(t){this.setProperty("value",t)}get label(){return this.getProperty("label")}set label(t){this.setProperty("label",t)}get size(){return this.getProperty("size")}set size(t){this.setProperty("size",t)}get flavor(){return this.getProperty("flavor")}set flavor(t){this.setProperty("flavor",t)}get format(){return this.getProperty("format")}set format(t){this.setProperty("format",t)}get multiline(){return this.getProperty("multiline")}set multiline(t){this.setProperty("multiline",t)}get horizontalScroll(){return this.getProperty("horizontalScroll")}set horizontalScroll(t){this.setProperty("horizontalScroll",t)}get disabled(){return this.getProperty("disabled")}set disabled(t){this.setProperty("disabled",t)}get required(){return this.getProperty("required")}set required(t){this.setProperty("required",t)}};jt.formAssociated=!0,jt.properties={value:{type:"string",visual:!0,formValue:!0,default:""},label:{type:"string",visual:!0,default:""},size:{type:"string",visual:!0,default:e,validate:t=>["xs","sm","md","lg","xl"].includes(t),coerce:t=>["xs","sm","md","lg","xl"].includes(t)?t:e},flavor:{type:"string",visual:!0,default:"neutral"},format:{type:"string",visual:!0,default:"text",coerce:t=>"code"===t?"code":"text"},multiline:{type:"boolean",visual:!0,default:!1},horizontalScroll:{type:"boolean",visual:!0,default:!1},disabled:{type:"boolean",visual:!0,default:!1},required:{type:"boolean",visual:!0,default:!1}};let Ft=jt;function Vt(t){return 1024>t?t+" B":1048576>t?(t/1024).toFixed(1)+" KB":1073741824>t?(t/1024/1024).toFixed(1)+" MB":(t/1024/1024/1024).toFixed(1)+" GB"}customElements.get("ty-copy")||customElements.define("ty-copy",Ft),customElements.get("ty-copy-field")||customElements.define("ty-copy-field",class extends Ft{});const It=class extends u{constructor(){super(),this.vt=[],this.gt=!1,this.K=!1,this.yt=null,this.ft=null,this.wt=null,this.xt=null,this.kt=null,this.zt=null,this.$t=null,this.Ct=null,b(this.shadowRoot,{css:"\n:host {\ndisplay: block;\nfont-family: inherit;\nwidth: 100%;\n}\n.file-upload-container {\ndisplay: flex;\nflex-direction: column;\nwidth: 100%;\nbox-sizing: border-box;\n}\n.upload-label {\nfont-size: var(--ty-font-sm);\nline-height: var(--ty-leading-sm);\nletter-spacing: var(--ty-tracking-sm);\nfont-weight: var(--ty-font-medium);\ncolor: var(--ty-label-color);\nmargin-bottom: 6px;\npadding-left: 4px;\ndisplay: flex;\nalign-items: center;\n}\n.required-icon {\ncolor: var(--ty-color-danger);\nmargin-left: 4px;\nfont-size: 0.75rem;\nline-height: 1;\n}\n.drop-zone {\nborder: 2px dashed var(--ty-border);\nborder-radius: var(--ty-radius-base);\npadding: 2rem 1.5rem;\ntext-align: center;\ncursor: pointer;\ntransition: var(--ty-local-transition, border-color 0.15s ease, background-color 0.15s ease, box-shadow 0.15s ease);\noutline: none;\ndisplay: flex;\nflex-direction: column;\nalign-items: center;\njustify-content: center;\ngap: 0.5rem;\nmin-height: 140px;\nuser-select: none;\n}\n.drop-zone:hover:not(.disabled) {\nborder-color: var(--ty-input-border-hover);\nbackground: var(--ty-surface-content);\n}\n.drop-zone.focused {\nborder-color: var(--ty-input-border-focus);\nbox-shadow: 0 0 0 3px var(--ty-input-shadow-focus);\n}\n.drop-zone.drag-active {\nborder-color: var(--ty-color-primary);\nborder-style: solid;\nbackground: var(--ty-bg-primary-soft);\n}\n.drop-zone.drag-active .upload-icon {\ncolor: var(--ty-color-primary);\ntransform: translateY(-2px);\n}\n.drop-zone.has-files {\nmin-height: 80px;\npadding: 1.25rem 1.5rem;\n}\n.drop-zone.disabled {\nopacity: 0.5;\ncursor: not-allowed;\npointer-events: none;\n}\n.drop-zone.error {\nborder-color: var(--ty-color-danger);\n}\n.drop-zone.error:not(.disabled) {\nbackground: var(--ty-bg-danger-soft);\n}\n.upload-icon {\ncolor: var(--ty-text-faint);\nwidth: 2.5rem;\nheight: 2.5rem;\ndisplay: flex;\nalign-items: center;\njustify-content: center;\ntransition: var(--ty-local-transition, color 0.15s ease, transform 0.15s ease);\npointer-events: none;\n}\n.upload-icon svg {\nwidth: 100%;\nheight: 100%;\n}\n.upload-hint {\ncolor: var(--ty-text-soft);\nfont-size: var(--ty-font-sm);\nline-height: var(--ty-leading-sm);\npointer-events: none;\n}\n.browse-link {\ncolor: var(--ty-color-primary);\nfont-weight: var(--ty-font-medium);\n}\n.upload-sub-hint {\ncolor: var(--ty-text-faint);\nfont-size: var(--ty-font-xs);\nline-height: var(--ty-leading-xs);\npointer-events: none;\n}\n.file-list {\ndisplay: flex;\nflex-direction: column;\ngap: 0.375rem;\nmargin-top: 0.5rem;\n}\n.file-item {\ndisplay: flex;\nalign-items: center;\ngap: 0.5rem;\npadding: 0.5rem 0.75rem;\nborder-radius: var(--ty-radius-base);\nbackground: var(--ty-surface-content);\nborder: 1px solid var(--ty-border-soft);\n}\n.file-icon {\ncolor: var(--ty-text-faint);\nflex-shrink: 0;\nwidth: 1rem;\nheight: 1rem;\ndisplay: flex;\nalign-items: center;\n}\n.file-icon svg {\nwidth: 100%;\nheight: 100%;\n}\n.file-name {\nflex: 1;\nfont-size: var(--ty-font-sm);\ncolor: var(--ty-text);\nwhite-space: nowrap;\noverflow: hidden;\ntext-overflow: ellipsis;\nmin-width: 0;\n}\n.file-size {\nfont-size: var(--ty-font-xs);\ncolor: var(--ty-text-faint);\nflex-shrink: 0;\nfont-variant-numeric: tabular-nums;\n}\n.file-remove {\nflex-shrink: 0;\ncursor: pointer;\ncolor: var(--ty-text-faint);\nwidth: 1.25rem;\nheight: 1.25rem;\ndisplay: flex;\nalign-items: center;\njustify-content: center;\nborder-radius: 50%;\ntransition: var(--ty-local-transition, color 0.15s ease, background-color 0.15s ease);\nborder: none;\nbackground: none;\npadding: 0;\noutline: none;\n}\n.file-remove:hover {\ncolor: var(--ty-color-danger);\nbackground: var(--ty-bg-danger-soft);\n}\n.file-remove:focus-visible {\nbox-shadow: 0 0 0 2px var(--ty-color-danger);\n}\n.file-remove svg {\nwidth: 12px;\nheight: 12px;\n}\n.error-message {\nfont-size: var(--ty-font-xs);\nline-height: var(--ty-leading-xs);\ncolor: var(--ty-color-danger);\nmargin-top: 4px;\npadding-left: 4px;\n}\n@media (prefers-reduced-motion: reduce) {\n.drop-zone,\n.upload-icon,\n.file-remove {\ntransition: none;\n}\n}\n@media (prefers-contrast: high) {\n.drop-zone {\nborder-width: 3px;\n}\n}\n",id:"ty-file-upload"})}onConnect(){this.updateFormValue()}onDisconnect(){this.removeEventListeners()}onPropertiesChanged(t){}onFormReset(){this.vt=[],this.updateFormValue(),this.p&&this.render();const t=this.shadowRoot?.querySelector(".file-input");t&&(t.value="")}updateFormValue(){super.updateFormValue(),this.updateValidity()}updateValidity(){if(this.required&&!this.disabled&&0===this.vt.length){const t=this.shadowRoot?.querySelector(".drop-zone");this.applyValidity({valueMissing:!0},"Please select a file",t??void 0)}else this.applyValidity({})}getFormValue(){if(!this.name)return null;const t=new FormData;0===this.vt.length&&t.append(this.name,new File([],"",{type:"application/octet-stream"}));for(const n of this.vt)t.append(this.name,n);return t}focus(t){const n=this.shadowRoot?.querySelector(".drop-zone");n?n.focus(t):super.focus(t)}matchesAccept(t){const n=this.accept?.trim();return!n||n.split(",").some(n=>{const e=n.trim().toLowerCase();if(!e)return!1;if(e.startsWith("."))return t.name.toLowerCase().endsWith(e);const i=t.type.toLowerCase();return e.endsWith("/*")?i.startsWith(e.slice(0,-1)):i===e})}get files(){return[...this.vt]}get multiple(){return this.getProperty("multiple")}set multiple(t){this.setProperty("multiple",t)}get accept(){return this.getProperty("accept")}set accept(t){this.setProperty("accept",t)}get name(){return this.getProperty("name")}set name(t){this.setProperty("name",t)}get disabled(){return this.getProperty("disabled")}set disabled(t){this.setProperty("disabled",t)}get required(){return this.getProperty("required")}set required(t){this.setProperty("required",t)}get label(){return this.getProperty("label")}set label(t){this.setProperty("label",t)}get placeholder(){return this.getProperty("placeholder")}set placeholder(t){this.setProperty("placeholder",t)}get error(){return this.getProperty("error")}set error(t){this.setProperty("error",t)}get form(){return this.$.form}setFiles(t){this.vt=this.multiple?t:t.slice(0,1),this.updateFormValue(),this.render();const n={value:this.vt,files:this.vt,names:this.vt.map(t=>t.name)};setTimeout(()=>{this.dispatchEvent(new CustomEvent("change",{detail:n,bubbles:!0,composed:!0})),this.revealValidity()},0)}removeFile(t){const n=[...this.vt];n.splice(t,1),this.setFiles(n);const e=this.shadowRoot?.querySelector(".file-input");e&&(e.value="")}setupEventListeners(){if(this.K)return;const t=this.shadowRoot,n=t.querySelector(".drop-zone"),e=t.querySelector(".file-input");this.yt=t=>{this.disabled||t.target.closest(".file-remove")||e.click()},this.ft=t=>{this.disabled||"Enter"!==t.key&&" "!==t.key||(t.preventDefault(),e.click())},this.wt=()=>{n.classList.add("focused")},this.xt=()=>{n.classList.remove("focused")},this.kt=t=>{this.disabled||(t.preventDefault(),t.stopPropagation(),this.gt||(this.gt=!0,n.classList.add("drag-active")))},this.zt=t=>{n.contains(t.relatedTarget)||(this.gt=!1,n.classList.remove("drag-active"))},this.$t=t=>{if(this.disabled)return;t.preventDefault(),t.stopPropagation(),this.gt=!1,n.classList.remove("drag-active");const e=Array.from(t.dataTransfer?.files??[]).filter(t=>this.matchesAccept(t));e.length>0&&this.setFiles(e)},this.Ct=t=>{const n=t.target;n.files&&n.files.length>0&&this.setFiles(Array.from(n.files))},n.addEventListener("click",this.yt),n.addEventListener("keydown",this.ft),n.addEventListener("focus",this.wt),n.addEventListener("blur",this.xt),n.addEventListener("dragover",this.kt),n.addEventListener("dragleave",this.zt),n.addEventListener("drop",this.$t),e.addEventListener("change",this.Ct),this.K=!0}removeEventListeners(){if(!this.K)return;const t=this.shadowRoot;if(!t)return;const n=t.querySelector(".drop-zone"),e=t.querySelector(".file-input");n&&e&&(this.yt&&n.removeEventListener("click",this.yt),this.ft&&n.removeEventListener("keydown",this.ft),this.wt&&n.removeEventListener("focus",this.wt),this.xt&&n.removeEventListener("blur",this.xt),this.kt&&n.removeEventListener("dragover",this.kt),this.zt&&n.removeEventListener("dragleave",this.zt),this.$t&&n.removeEventListener("drop",this.$t),this.Ct&&e.removeEventListener("change",this.Ct),this.K=!1)}buildDropZoneClasses(){const t=["drop-zone"];return this.gt&&t.push("drag-active"),this.vt.length>0&&t.push("has-files"),this.disabled&&t.push("disabled"),this.error&&t.push("error"),t.join(" ")}renderFileList(t){t.innerHTML="";for(let n=0;this.vt.length>n;n++){const e=this.vt[n],i=document.createElement("div");i.className="file-item";const o=document.createElement("span");o.className="file-icon",o.innerHTML='<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z"/><polyline points="14 2 14 8 20 8"/></svg>';const r=document.createElement("span");r.className="file-name",r.textContent=e.name,r.title=e.name;const s=document.createElement("span");s.className="file-size",s.textContent=Vt(e.size);const a=document.createElement("button");a.className="file-remove",a.type="button",a.innerHTML='<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><line x1="18" y1="6" x2="6" y2="18"/><line x1="6" y1="6" x2="18" y2="18"/></svg>',a.setAttribute("aria-label","Remove "+e.name);const l=n;a.addEventListener("click",t=>{t.stopPropagation(),this.removeFile(l)}),i.appendChild(o),i.appendChild(r),i.appendChild(s),i.appendChild(a),t.appendChild(i)}}render(){const t=this.shadowRoot;let n=t.querySelector(".file-upload-container");if(!n){n=document.createElement("div"),n.className="file-upload-container";const e=document.createElement("div");e.className="upload-label",n.appendChild(e);const i=document.createElement("div");i.className="drop-zone",i.setAttribute("role","button");const o=document.createElement("input");o.type="file",o.className="file-input",o.style.display="none",i.appendChild(o);const r=document.createElement("div");r.className="upload-icon",r.innerHTML='<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4"/><polyline points="17 8 12 3 7 8"/><line x1="12" y1="3" x2="12" y2="15"/></svg>',i.appendChild(r);const s=document.createElement("div");s.className="upload-hint",i.appendChild(s);const a=document.createElement("div");a.className="upload-sub-hint",i.appendChild(a),n.appendChild(i);const l=document.createElement("div");l.className="file-list",n.appendChild(l);const c=document.createElement("div");c.className="error-message",n.appendChild(c),t.appendChild(n),this.setupEventListeners()}const e=n.querySelector(".upload-label");if(this.label){if(e.style.display="",e.innerHTML="",e.appendChild(document.createTextNode(this.label)),this.required){const t=document.createElement("span");t.className="required-icon",t.textContent="*",t.setAttribute("aria-hidden","true"),e.appendChild(t)}}else e.style.display="none";const i=n.querySelector(".drop-zone");i.className=this.buildDropZoneClasses(),i.tabIndex=this.disabled?-1:0,i.setAttribute("aria-disabled",this.disabled+""),i.setAttribute("aria-label",this.placeholder||"Upload files");const o=n.querySelector(".file-input");o.multiple=this.multiple,o.accept=this.accept,o.disabled=this.disabled,n.querySelector(".upload-icon").style.display=this.vt.length>0?"none":"",n.querySelector(".upload-hint").innerHTML=this.vt.length>0?`<strong>${this.vt.length} file${1!==this.vt.length?"s":""} selected</strong>`:'Drop files here or <span class="browse-link">click to browse</span>';const r=n.querySelector(".upload-sub-hint");this.accept&&0===this.vt.length?(r.textContent="Accepted: "+this.accept,r.style.display=""):r.style.display="none";const s=n.querySelector(".file-list");this.renderFileList(s);const a=n.querySelector(".error-message");a.textContent=this.error,a.style.display=this.error?"":"none",this.updateValidity()}};It.formAssociated=!0,It.properties={multiple:{type:"boolean",visual:!0,default:!1},accept:{type:"string",visual:!0,default:""},name:{type:"string",default:""},disabled:{type:"boolean",visual:!0,default:!1},required:{type:"boolean",visual:!0,default:!1},label:{type:"string",visual:!0,default:""},placeholder:{type:"string",visual:!0,default:"Drop files here or click to browse"},error:{type:"string",visual:!0,default:""}};let Ot=It;customElements.get("ty-file-upload")||customElements.define("ty-file-upload",Ot);const Ht=`\n${et}\n:host {\ndisplay: block;\nfont-family: inherit;\nwidth: 100%;\n}\n.textarea-container {\ndisplay: flex;\nflex-direction: column;\nwidth: 100%;\nbox-sizing: border-box;\nposition: relative;\n}\n.textarea-wrapper {\nposition: relative;\nwidth: 100%;\ndisplay: flex;\nflex-direction: column;\nbox-sizing: border-box;\nborder: 1px solid var(--input-border, var(--ty-input-border));\nborder-radius: var(--ty-radius-base);\nbackground: var(--input-bg, var(--ty-input-bg));\ntransition: var(--ty-local-transition, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out);\n}\n.textarea-wrapper:has(textarea:focus) {\nborder-color: var(--input-border-focus, var(--ty-input-border-focus));\nbox-shadow: 0 0 0 3px var(--input-shadow-focus, var(--ty-input-shadow-focus));\n}\n.textarea-wrapper:has(textarea.error) {\nborder-color: var(--ty-color-danger);\nbackground: var(--ty-bg-danger-soft);\n}\n.textarea-wrapper:has(textarea.error):has(textarea:focus) {\nborder-color: var(--ty-color-danger-bold);\n}\n.textarea-wrapper:has(textarea:disabled) {\nopacity: 0.5;\nbackground: var(--input-disabled-bg, var(--ty-input-disabled-bg));\nborder-color: var(--input-disabled-border, var(--ty-input-disabled-border));\n}\n.textarea-scroll {\nposition: relative;\nflex: 1 1 auto;\nmin-height: 0;\ndisplay: flex;\n}\n.textarea-scroll .ty-scrollbar-track-y {\ntop: 2px;\nright: 2px;\nbottom: 2px;\nborder-radius: 0 4px 4px 0;\n}\n.textarea-header,\n.textarea-footer {\ndisplay: flex;\nalign-items: center;\ngap: 0.5rem;\n}\n.textarea-footer { justify-content: space-between; }\n.textarea-header.has-content {\npadding: 6px 10px;\nborder-bottom: 1px solid var(--ty-textarea-divider, var(--input-border, var(--ty-input-border)));\n}\n.textarea-footer.has-content {\npadding: 6px 10px;\nborder-top: 1px solid var(--ty-textarea-divider, var(--input-border, var(--ty-input-border)));\n}\n.ty-field-label {\nfont-size: var(--ty-field-label-font);\nline-height: var(--ty-field-label-leading);\nletter-spacing: var(--ty-tracking-sm);\nfont-weight: var(--ty-font-medium);\ncolor: var(--ty-label-color);\nmargin-bottom: var(--ty-field-label-gap);\npadding-left: var(--ty-field-outer-pad-x);\n}\n.required-icon {\ndisplay: inline-flex;\nalign-items: center;\ncolor: var(--ty-color-danger);\nwidth: 12px;\nheight: 12px;\nvertical-align: middle;\n}\n.error-message {\nfont-size: var(--ty-font-xs);\nline-height: var(--ty-leading-xs);\nletter-spacing: var(--ty-tracking-xs);\ncolor: var(--ty-color-danger);\nmargin-top: 4px;\npadding-left: var(--ty-field-outer-pad-x);\n}\ntextarea {\nfont-family: inherit;\nbox-sizing: border-box;\nwidth: 100%;\nflex: 1 1 auto;\nborder: none;\nbackground: transparent;\ncolor: var(--input-color, var(--ty-input-color));\nfont-family: inherit;\nfont-size: var(--ty-font-sm);\nline-height: var(--ty-leading-sm);\nletter-spacing: var(--ty-tracking-sm);\nfont-weight: var(--ty-font-normal);\noutline: none;\nmin-height: 80px;\npadding: 12px 12px;\noverflow: hidden;\nresize: none;\nwhite-space: pre-wrap;\nword-wrap: break-word;\n}\n:host([data-custom-scroll]) textarea::-webkit-scrollbar {\ndisplay: none;\n}\ntextarea:disabled {\ncursor: not-allowed;\ncolor: var(--input-disabled-color, var(--ty-input-disabled-color));\n}\ntextarea::placeholder {\ncolor: var(--input-placeholder, var(--ty-input-placeholder));\nfont-weight: 400;\n}\ntextarea.resize-both {\nresize: both;\n}\ntextarea.resize-horizontal {\nresize: horizontal;\n}\ntextarea.resize-vertical {\nresize: vertical;\n}\ntextarea.resize-none {\nresize: none;\n}\ntextarea:not(.resize-both):not(.resize-horizontal):not(.resize-vertical) {\nresize: none;\n}\n.textarea-dummy {\nposition: absolute !important;\ntop: 0 !important;\nleft: 0 !important;\nvisibility: hidden !important;\nwhite-space: pre-wrap !important;\nword-break: break-word !important;\nbox-sizing: border-box !important;\noverflow: hidden !important;\npointer-events: none !important;\nz-index: -1 !important;\nword-wrap: break-word !important;\noverflow-wrap: break-word !important;\n}\ntextarea.xs {\nmin-height: 64px;\npadding: 8px var(--ty-field-pad-x);\nfont-size: var(--ty-font-xs);\nline-height: var(--ty-leading-xs);\nletter-spacing: var(--ty-tracking-xs);\n}\ntextarea.sm {\nmin-height: 72px;\npadding: 10px var(--ty-field-pad-x);\nfont-size: var(--ty-font-sm);\nline-height: var(--ty-leading-sm);\nletter-spacing: var(--ty-tracking-sm);\n}\ntextarea.md {\nmin-height: 80px;\npadding: 12px var(--ty-field-pad-x);\nfont-size: var(--ty-font-sm);\nline-height: var(--ty-leading-sm);\nletter-spacing: var(--ty-tracking-sm);\n}\ntextarea.lg {\nmin-height: 96px;\npadding: 14px var(--ty-field-pad-x);\nfont-size: var(--ty-font-base);\nline-height: var(--ty-leading-base);\nletter-spacing: var(--ty-tracking-base);\n}\ntextarea.xl {\nmin-height: 112px;\npadding: 16px var(--ty-field-pad-x);\nfont-size: var(--ty-font-lg);\nline-height: var(--ty-leading-lg);\nletter-spacing: var(--ty-tracking-lg);\n}\ntextarea:focus-visible {\noutline: none;\n}\n@media (prefers-contrast: high) {\ntextarea {\nborder-width: 2px;\n}\n}\n@media (prefers-reduced-motion: reduce) {\ntextarea {\ntransition: none;\n}\n.textarea-dummy {\ntransition: none;\n}\n}\n@container (max-width: 480px) {\ntextarea.lg {\nfont-size: var(--ty-font-sm);\nline-height: var(--ty-leading-sm);\nletter-spacing: var(--ty-tracking-sm);\npadding: 12px var(--ty-field-pad-x);\nmin-height: 80px;\n}\ntextarea.xl {\nfont-size: var(--ty-font-base);\nline-height: var(--ty-leading-base);\nletter-spacing: var(--ty-tracking-base);\npadding: 14px var(--ty-field-pad-x);\nmin-height: 96px;\n}\n}\n@container (max-width: 320px) {\ntextarea.xl {\nfont-size: var(--ty-font-sm);\nline-height: var(--ty-leading-sm);\nletter-spacing: var(--ty-tracking-sm);\npadding: 12px var(--ty-field-pad-x);\nmin-height: 80px;\n}\n}\n@media (max-width: 640px) {\ntextarea.lg {\nfont-size: var(--ty-font-sm);\nline-height: var(--ty-leading-sm);\nletter-spacing: var(--ty-tracking-sm);\npadding: 12px var(--ty-field-pad-x);\nmin-height: 80px;\n}\ntextarea.xl {\nfont-size: var(--ty-font-base);\nline-height: var(--ty-leading-base);\nletter-spacing: var(--ty-tracking-base);\npadding: 14px var(--ty-field-pad-x);\nmin-height: 96px;\n}\n}\n@media (max-width: 480px) {\ntextarea.xl {\nfont-size: var(--ty-font-sm);\nline-height: var(--ty-leading-sm);\nletter-spacing: var(--ty-tracking-sm);\npadding: 12px var(--ty-field-pad-x);\nmin-height: 80px;\n}\n}\ntextarea {\ntransition: var(--ty-local-transition,\nborder-color 0.15s ease-in-out,\nbox-shadow 0.15s ease-in-out,\nbackground-color 0.15s ease-in-out,\nheight 0.1s ease-out);\n}\ntextarea:focus {\ntransition: var(--ty-local-transition,\nborder-color 0.15s ease-in-out,\nbox-shadow 0.15s ease-in-out,\nbackground-color 0.15s ease-in-out);\n}\n@media (prefers-reduced-motion: reduce) {\ntextarea {\ntransition: none;\n}\n}\n`;function Nt(){return"native"!==document.documentElement.getAttribute("data-ty-scrollbar")}class Bt{constructor(t,n={}){this.trackY=null,this.thumbY=null,this.trackX=null,this.thumbX=null,this.gt=!1,this.Et="y",this.Mt=0,this.St=0,this.Tt=null,this._t=null,this.qt=null,this.Dt=t,this.At=!1!==n.vertical,this.Lt=n.horizontal??!1,this.jt=n.autoHideDelay??1e3,this.Ft=this.Vt.bind(this),this.It=this.Ot.bind(this),this.Ht=this.Nt.bind(this),this.Bt=this.Pt.bind(this),this.Wt=this.Rt.bind(this),this.Yt=this.Ut.bind(this),this.Xt=this.Kt.bind(this),this.At&&(this.trackY=this.Zt("y"),this.thumbY=this.Jt("y"),this.trackY.appendChild(this.thumbY)),this.Lt&&(this.trackX=this.Zt("x"),this.thumbX=this.Jt("x"),this.trackX.appendChild(this.thumbX)),this.Dt.addEventListener("scroll",this.Ft,{passive:!0}),this.thumbY&&this.thumbY.addEventListener("pointerdown",this.It),this.trackY&&this.trackY.addEventListener("pointerdown",this.Bt),this.thumbX&&this.thumbX.addEventListener("pointerdown",this.Ht),this.trackX&&this.trackX.addEventListener("pointerdown",this.Wt),this.qt=new ResizeObserver(()=>this.update()),this.qt.observe(this.Dt),this.update()}Zt(t){const n=document.createElement("div");return n.className="ty-scrollbar-track-"+t,n}Jt(t){const n=document.createElement("div");return n.className="ty-scrollbar-thumb-"+t,n}update(){this.Gt(),this.Qt()}scrollToTop(t=!1){this.Dt.scrollTo({top:0,behavior:t?"smooth":"auto"})}scrollToBottom(t=!1){this.Dt.scrollTo({top:this.Dt.scrollHeight,behavior:t?"smooth":"auto"})}scrollToLeft(t=!1){this.Dt.scrollTo({left:0,behavior:t?"smooth":"auto"})}scrollToRight(t=!1){this.Dt.scrollTo({left:this.Dt.scrollWidth,behavior:t?"smooth":"auto"})}destroy(){this.Dt.removeEventListener("scroll",this.Ft),this.thumbY&&this.thumbY.removeEventListener("pointerdown",this.It),this.trackY&&this.trackY.removeEventListener("pointerdown",this.Bt),this.thumbX&&this.thumbX.removeEventListener("pointerdown",this.Ht),this.trackX&&this.trackX.removeEventListener("pointerdown",this.Wt),this.qt&&(this.qt.disconnect(),this.qt=null),null!==this.Tt&&(cancelAnimationFrame(this.Tt),this.Tt=null),null!==this._t&&(clearTimeout(this._t),this._t=null)}Vt(){null===this.Tt&&(this.Tt=requestAnimationFrame(()=>{this.Tt=null,this.tn(),this.nn()}))}Gt(){if(!this.trackY||!this.thumbY)return;const{scrollHeight:t,clientHeight:n}=this.Dt,e=t>n+2;this.trackY.classList.toggle("has-overflow",e),e&&(this.thumbY.style.height=Math.max(n/t*100,0)+"%"),this.en()}Qt(){if(!this.trackX||!this.thumbX)return;const{scrollWidth:t,clientWidth:n}=this.Dt,e=t>n+2;this.trackX.classList.toggle("has-overflow",e),e&&(this.thumbX.style.width=Math.max(n/t*100,0)+"%"),this.rn()}tn(){this.en(),this.rn()}en(){if(!this.trackY||!this.thumbY)return;const{scrollTop:t,scrollHeight:n,clientHeight:e}=this.Dt,i=n-e;i>0&&(this.thumbY.style.top=t/i*(this.trackY.clientHeight-this.thumbY.offsetHeight)+"px")}rn(){if(!this.trackX||!this.thumbX)return;const{scrollLeft:t,scrollWidth:n,clientWidth:e}=this.Dt,i=n-e;i>0&&(this.thumbX.style.left=t/i*(this.trackX.clientWidth-this.thumbX.offsetWidth)+"px")}nn(){this.gt||(this.trackY?.classList.add("scrolling"),this.trackX?.classList.add("scrolling"),null!==this._t&&clearTimeout(this._t),this._t=setTimeout(()=>{this.trackY?.classList.remove("scrolling"),this.trackX?.classList.remove("scrolling"),this._t=null},this.jt))}Ot(t){0===t.button&&(t.preventDefault(),t.stopPropagation(),this.gt=!0,this.Et="y",this.Mt=t.clientY,this.St=this.Dt.scrollTop,this.thumbY.setPointerCapture(t.pointerId),this.trackY?.classList.add("dragging"),this.thumbY.addEventListener("pointermove",this.Yt),this.thumbY.addEventListener("pointerup",this.Xt),this.thumbY.addEventListener("pointercancel",this.Xt))}Nt(t){0===t.button&&(t.preventDefault(),t.stopPropagation(),this.gt=!0,this.Et="x",this.Mt=t.clientX,this.St=this.Dt.scrollLeft,this.thumbX.setPointerCapture(t.pointerId),this.trackX?.classList.add("dragging"),this.thumbX.addEventListener("pointermove",this.Yt),this.thumbX.addEventListener("pointerup",this.Xt),this.thumbX.addEventListener("pointercancel",this.Xt))}Ut(t){if(this.gt)if("y"===this.Et){const n=t.clientY-this.Mt,{scrollHeight:e,clientHeight:i}=this.Dt,o=this.trackY.clientHeight-this.thumbY.offsetHeight;if(0>=o)return;this.Dt.scrollTop=this.St+n*((e-i)/o)}else{const n=t.clientX-this.Mt,{scrollWidth:e,clientWidth:i}=this.Dt,o=this.trackX.clientWidth-this.thumbX.offsetWidth;if(0>=o)return;this.Dt.scrollLeft=this.St+n*((e-i)/o)}}Kt(t){const n="y"===this.Et?this.thumbY:this.thumbX,e="y"===this.Et?this.trackY:this.trackX;this.gt=!1,n.releasePointerCapture(t.pointerId),e?.classList.remove("dragging"),n.removeEventListener("pointermove",this.Yt),n.removeEventListener("pointerup",this.Xt),n.removeEventListener("pointercancel",this.Xt),this.nn()}Pt(t){if(t.target===this.thumbY||0!==t.button)return;t.preventDefault();const n=this.trackY.getBoundingClientRect(),e=(t.clientY-n.top)/n.height,{scrollHeight:i,clientHeight:o}=this.Dt;this.Dt.scrollTo({top:e*(i-o),behavior:"smooth"})}Rt(t){if(t.target===this.thumbX||0!==t.button)return;t.preventDefault();const n=this.trackX.getBoundingClientRect(),e=(t.clientX-n.left)/n.width,{scrollWidth:i,clientWidth:o}=this.Dt;this.Dt.scrollTo({left:e*(i-o),behavior:"smooth"})}}const Pt="\n.ty-scrollbar-track-y {\nposition: absolute;\ntop: 0;\nright: 0;\nbottom: 0;\nwidth: var(--ty-scrollbar-width, 8px);\nz-index: 3;\nopacity: 0;\npointer-events: none;\ntransition: opacity 0.25s ease-out;\ncursor: pointer;\n}\n.ty-scrollbar-track-y.has-overflow {\npointer-events: auto;\n}\n.ty-scrollbar-track-y.has-overflow:hover,\n.ty-scrollbar-track-y.has-overflow.scrolling,\n.ty-scrollbar-track-y.dragging {\nopacity: 1;\n}\n.ty-scrollbar-track-y::before {\ncontent: '';\nposition: absolute;\ninset: 0;\nbackground: var(--ty-scrollbar-track, transparent);\nborder-radius: var(--ty-scrollbar-radius, 4px);\nopacity: 0;\ntransition: opacity 0.15s ease-out;\n}\n.ty-scrollbar-track-y:hover::before,\n.ty-scrollbar-track-y.dragging::before {\nopacity: 1;\nbackground: var(--ty-scrollbar-track-hover, color-mix(in oklab, var(--ty-color-neutral-bold) 8%, transparent));\n}\n.ty-scrollbar-thumb-y {\nposition: absolute;\nright: 0;\nwidth: 100%;\nmin-height: var(--ty-scrollbar-thumb-min-height, 30px);\nbackground: var(--ty-scrollbar-thumb, color-mix(in oklab, var(--ty-color-neutral-bold) 40%, transparent));\nborder-radius: var(--ty-scrollbar-radius, 4px);\ntransition: var(--ty-local-transition, background 0.15s ease-out);\nbox-sizing: border-box;\nborder: 1px solid transparent;\n}\n.ty-scrollbar-thumb-y:hover,\n.ty-scrollbar-track-y.dragging .ty-scrollbar-thumb-y {\nbackground: var(--ty-scrollbar-thumb-hover, color-mix(in oklab, var(--ty-color-neutral-bold) 55%, transparent));\n}\n.ty-scrollbar-thumb-y:active,\n.ty-scrollbar-track-y.dragging .ty-scrollbar-thumb-y {\nbackground: var(--ty-scrollbar-thumb-active, color-mix(in oklab, var(--ty-color-neutral-bold) 70%, transparent));\n}\n.ty-scrollbar-track-x {\nposition: absolute;\nbottom: 0;\nleft: 0;\nright: 0;\nheight: var(--ty-scrollbar-width, 8px);\nz-index: 3;\nopacity: 0;\npointer-events: none;\ntransition: opacity 0.25s ease-out;\ncursor: pointer;\n}\n.ty-scrollbar-track-x.has-overflow {\npointer-events: auto;\n}\n.ty-scrollbar-track-x.has-overflow:hover,\n.ty-scrollbar-track-x.has-overflow.scrolling,\n.ty-scrollbar-track-x.dragging {\nopacity: 1;\n}\n.ty-scrollbar-track-x::before {\ncontent: '';\nposition: absolute;\ninset: 0;\nbackground: var(--ty-scrollbar-track, transparent);\nborder-radius: var(--ty-scrollbar-radius, 4px);\nopacity: 0;\ntransition: opacity 0.15s ease-out;\n}\n.ty-scrollbar-track-x:hover::before,\n.ty-scrollbar-track-x.dragging::before {\nopacity: 1;\nbackground: var(--ty-scrollbar-track-hover, color-mix(in oklab, var(--ty-color-neutral-bold) 8%, transparent));\n}\n.ty-scrollbar-thumb-x {\nposition: absolute;\nbottom: 0;\nheight: 100%;\nmin-width: var(--ty-scrollbar-thumb-min-height, 30px);\nbackground: var(--ty-scrollbar-thumb, color-mix(in oklab, var(--ty-color-neutral-bold) 40%, transparent));\nborder-radius: var(--ty-scrollbar-radius, 4px);\ntransition: var(--ty-local-transition, background 0.15s ease-out);\nbox-sizing: border-box;\nborder: 1px solid transparent;\n}\n.ty-scrollbar-thumb-x:hover,\n.ty-scrollbar-track-x.dragging .ty-scrollbar-thumb-x {\nbackground: var(--ty-scrollbar-thumb-hover, color-mix(in oklab, var(--ty-color-neutral-bold) 55%, transparent));\n}\n.ty-scrollbar-thumb-x:active,\n.ty-scrollbar-track-x.dragging .ty-scrollbar-thumb-x {\nbackground: var(--ty-scrollbar-thumb-active, color-mix(in oklab, var(--ty-color-neutral-bold) 70%, transparent));\n}\n@media (pointer: coarse) and (hover: none) {\n.ty-scrollbar-track-y,\n.ty-scrollbar-track-x {\ndisplay: none !important;\n}\n}\n@media (prefers-reduced-motion: reduce) {\n.ty-scrollbar-track-y,\n.ty-scrollbar-track-x,\n.ty-scrollbar-thumb-y,\n.ty-scrollbar-thumb-x {\ntransition-duration: 0ms !important;\n}\n}\n",Wt='<svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="12" r="10"></circle><line x1="12" y1="8" x2="12" y2="12"></line><line x1="12" y1="16" x2="12.01" y2="16"></line></svg>',Rt=class extends u{constructor(){super(),this.sn=null,this.an=null,this.ln=null,this.U=!1,this.handleInputEvent=t=>{this.X=!0,this.value=t.target.value,this.sn&&this.an&&this.resizeTextarea(this.sn,this.an),this.$.setFormValue(this.value||""),this.updateValidity(),this.emitValueEvent("input",t)},this.X=!1,this.cn=null,this.handleFocusEvent=()=>{this.U=!0,this.cn=this.value},this.handleBlurEvent=t=>{this.U=!1,this.X&&this.revealValidity(),null!==this.cn&&this.value!==this.cn&&this.emitValueEvent("change",t),this.cn=null};const t=this.shadowRoot;b(t,{css:Ht,id:"ty-textarea"}),Nt()&&b(t,{css:Pt,id:"ty-custom-scrollbar"})}onConnect(){}onDisconnect(){if(this.dn(),this.sn){const t=this.sn.cloneNode(!0);this.sn.parentNode?.replaceChild(t,this.sn),this.sn=null}this.an=null}onPropertiesChanged(t){}getFormValue(){return this.getProperty("value")||null}get value(){return this.getProperty("value")}set value(t){this.setProperty("value",t)}get name(){return this.getProperty("name")}set name(t){this.setProperty("name",t)}get placeholder(){return this.getProperty("placeholder")}set placeholder(t){this.setProperty("placeholder",t)}get label(){return this.getProperty("label")}set label(t){this.setProperty("label",t)}get disabled(){return this.getProperty("disabled")}set disabled(t){this.setProperty("disabled",t)}focus(t){this.shadowRoot?.querySelector("textarea")?.focus(t)}get required(){return this.getProperty("required")}set required(t){this.setProperty("required",t)}get error(){return this.getProperty("error")}set error(t){this.setProperty("error",t)}get size(){return this.getProperty("size")}set size(t){this.setProperty("size",t)}get rows(){return this.getProperty("rows")}set rows(t){this.setProperty("rows",t)}get cols(){return this.getProperty("cols")}set cols(t){this.setProperty("cols",t)}get resize(){return this.getProperty("resize")}set resize(t){this.setProperty("resize",t)}get minHeight(){return this.getProperty("minHeight")}set minHeight(t){this.setProperty("minHeight",t)}get maxHeight(){return this.getProperty("maxHeight")}set maxHeight(t){this.setProperty("maxHeight",t)}getFontStyle(t){const n=window.getComputedStyle(t);return{fontFamily:n.fontFamily,fontSize:n.fontSize,fontWeight:n.fontWeight,lineHeight:n.lineHeight,letterSpacing:n.letterSpacing,fontStyle:n.fontStyle}}getSpacingStyle(t){const n=window.getComputedStyle(t);return{padding:n.padding,paddingTop:n.paddingTop,paddingRight:n.paddingRight,paddingBottom:n.paddingBottom,paddingLeft:n.paddingLeft,margin:n.margin,borderWidth:n.borderWidth}}setupDummyElement(t){const n=this.shadowRoot,e=n.querySelector(".textarea-dummy");e&&e.remove();const i=document.createElement("pre"),o=this.getFontStyle(t),r=this.getSpacingStyle(t);i.className="textarea-dummy";const s=i.style;return s.position="absolute",s.top="0",s.left="0",s.visibility="hidden",s.whiteSpace="pre-wrap",s.wordBreak="break-word",s.boxSizing="border-box",s.overflow="hidden",s.pointerEvents="none",Object.entries(o).forEach(([t,n])=>{s[t]=n}),Object.entries(r).forEach(([t,n])=>{s[t]=n}),n.appendChild(i),this.an=i,i}resizeTextarea(t,n){if(!t||!n)return;const e=this.value,i=this.placeholder,o=t.clientHeight;n.textContent=""===e&&i?i:e+" ",n.style.width=t.clientWidth+"px";const r=n.scrollHeight,s=this.minHeight?parseInt(this.minHeight.replace("px",""),10):null,a=this.maxHeight?parseInt(this.maxHeight.replace("px",""),10):null;let l=r;null!==s&&(l=Math.max(l,s)),null!==a&&(l=Math.min(l,a)),Math.abs(l-o)>2&&(t.style.height=l+"px",null===a||a>r?(t.style.overflowY="hidden",this.dn()):(t.style.overflowY="auto",this.hn(t))),this.ln?.update()}hn(t){if(this.ln||!Nt())return;t.style.scrollbarWidth="none",this.setAttribute("data-custom-scroll",""),this.ln=new Bt(t,{vertical:!0,horizontal:!1});const n=this.shadowRoot.querySelector(".textarea-scroll");n&&this.ln.trackY&&n.appendChild(this.ln.trackY)}dn(){this.ln&&(this.ln.trackY?.remove(),this.ln.destroy(),this.ln=null,this.removeAttribute("data-custom-scroll"),this.sn&&(this.sn.style.scrollbarWidth=""))}emitValueEvent(t,n){const e={bubbles:!0,composed:!0,detail:{value:this.value,originalEvent:n}};setTimeout(()=>this.dispatchEvent(new CustomEvent(t,e)),0)}buildClassList(){const t=[this.size];this.disabled&&t.push("disabled"),this.required&&t.push("required"),this.error&&t.push("error"),"none"!==this.resize&&t.push("resize-"+this.resize);const n=this.getAttribute("class");return n&&t.push(n),t.join(" ")}applyHeightConstraints(t){this.minHeight&&(t.style.minHeight=this.minHeight),this.maxHeight&&(t.style.maxHeight=this.maxHeight)}setupTextareaEvents(t){t.addEventListener("input",this.handleInputEvent),t.addEventListener("focus",this.handleFocusEvent),t.addEventListener("blur",this.handleBlurEvent)}render(){const t=this.shadowRoot,n=t.querySelector(".textarea-container"),e=t.querySelector("label"),i=t.querySelector("textarea"),o=t.querySelector(".error-message");if(n&&i){if(this.label?e&&(e.innerHTML=this.label+(this.required?` <span class="required-icon">${Wt}</span>`:""),e.style.display="block"):e&&(e.style.display="none"),i.value=this.value||"",i.placeholder=this.placeholder||"",i.disabled=this.disabled,i.required=this.required,i.className=this.buildClassList(),this.label?i.setAttribute("aria-label",this.label):i.removeAttribute("aria-label"),this.name?i.setAttribute("name",this.name):i.removeAttribute("name"),this.rows&&i.setAttribute("rows",this.rows),this.cols&&i.setAttribute("cols",this.cols),this.applyHeightConstraints(i),this.error){if(!o){const t=document.createElement("div");t.className="error-message",n.appendChild(t)}const e=t.querySelector(".error-message");e&&(e.textContent=this.error)}else o&&o.remove();const r=this.setupDummyElement(i);setTimeout(()=>this.resizeTextarea(i,r),0),this.sn=i}else{const n=document.createElement("div");n.className="textarea-container";const e=document.createElement("label");e.className="ty-field-label",this.label?(e.innerHTML=this.label+(this.required?` <span class="required-icon">${Wt}</span>`:""),e.style.display="block"):e.style.display="none";const i=document.createElement("textarea");i.value=this.value||"",i.placeholder=this.placeholder||"",i.disabled=this.disabled,i.required=this.required,i.className=this.buildClassList(),this.label&&i.setAttribute("aria-label",this.label),this.name&&i.setAttribute("name",this.name),i.setAttribute("rows",this.rows||"3"),this.cols&&i.setAttribute("cols",this.cols),this.applyHeightConstraints(i),this.setupTextareaEvents(i);const o=document.createElement("div");o.className="textarea-wrapper";const r=document.createElement("div");r.className="textarea-header";const s=document.createElement("slot");s.setAttribute("name","header"),r.appendChild(s);const a=document.createElement("div");a.className="textarea-scroll",a.appendChild(i);const l=document.createElement("div");l.className="textarea-footer";const c=document.createElement("slot");c.setAttribute("name","footer"),l.appendChild(c),o.appendChild(r),o.appendChild(a),o.appendChild(l);const d=(t,n)=>{const e=()=>n.classList.toggle("has-content",t.assignedNodes({flatten:!0}).length>0);t.addEventListener("slotchange",e),e()};if(d(s,r),d(c,l),n.appendChild(e),n.appendChild(o),this.error){const t=document.createElement("div");t.className="error-message",t.textContent=this.error,n.appendChild(t)}t.appendChild(n);const h=this.setupDummyElement(i);setTimeout(()=>this.resizeTextarea(i,h),0),this.sn=i}this.updateValidity()}updateValidity(){const t=this.shadowRoot?.querySelector("textarea");this.disabled?this.applyValidity({}):this.required&&""===(t?t.value:(this.value??"")+"").trim()?this.applyValidity({valueMissing:!0},"Please fill out this field",t??void 0):this.applyValidity({})}};Rt.formAssociated=!0,Rt.properties={value:{type:"string",visual:!0,formValue:!0,emitChange:!0,default:""},name:{type:"string",default:""},placeholder:{type:"string",visual:!0,default:""},label:{type:"string",visual:!0,default:""},disabled:{type:"boolean",visual:!0,default:!1},required:{type:"boolean",visual:!0,default:!1},error:{type:"string",visual:!0,default:""},size:{type:"string",visual:!0,default:e,validate:t=>["xs","sm","md","lg","xl"].includes(t),coerce:t=>["xs","sm","md","lg","xl"].includes(t)?t:e},rows:{type:"string",visual:!0,default:"3",coerce:t=>t+""},cols:{type:"string",visual:!0,default:"",coerce:t=>t?t+"":""},resize:{type:"string",visual:!0,default:"none",validate:t=>["none","both","horizontal","vertical"].includes(t),coerce:t=>["none","both","horizontal","vertical"].includes(t)?t:"none"},minHeight:{type:"string",visual:!0,default:""},maxHeight:{type:"string",visual:!0,default:""}};let Yt=Rt;customElements.get("ty-textarea")||customElements.define("ty-textarea",Yt);const Ut={"top-start":{vertical:"top",horizontal:"start"},top:{vertical:"top",horizontal:"center"},"top-end":{vertical:"top",horizontal:"end"},"right-start":{vertical:"start",horizontal:"end",orientation:"vertical"},right:{vertical:"center",horizontal:"end",orientation:"vertical"},"right-end":{vertical:"end",horizontal:"end",orientation:"vertical"},"bottom-start":{vertical:"bottom",horizontal:"start"},bottom:{vertical:"bottom",horizontal:"center"},"bottom-end":{vertical:"bottom",horizontal:"end"},"left-start":{vertical:"start",horizontal:"start",orientation:"vertical"},left:{vertical:"center",horizontal:"start",orientation:"vertical"},"left-end":{vertical:"end",horizontal:"start",orientation:"vertical"}},Xt={default:["bottom-start","bottom-end","top-start","top-end","bottom","top","left","right"]},Kt={top:"bottom",bottom:"top",left:"right",right:"left"};function Zt(t){const[n,e]=t.split("-");return{side:n,align:e}}function Jt(t){const{side:n,align:e}=Zt(t),i=Kt[n],o="top"===n||"bottom"===n?["right","left"]:["bottom","top"],r=t=>e?`${t}-${e}`:t,s=t=>e?[t,`${t}-${"start"===e?"end":"start"}`]:[t+"-start",t+"-end"];return[r(n),r(i),...s(n),...s(i),...o.flatMap(t=>[r(t),...s(t)])]}function Gt(t){if(!t)return{side:"auto",align:"start"};const{side:n,align:e}=Zt(t);return{side:"top"===n||"bottom"===n?n:"auto",align:e??"start"}}function Qt(t){const n=t.getBoundingClientRect();return{top:n.top,left:n.left,right:n.right,bottom:n.bottom,width:n.width,height:n.height,centerX:n.left+n.width/2,centerY:n.top+n.height/2}}function tn(t){const{targetEl:n,floatingEl:e,preferences:i=Xt.default,offset:o=8,padding:r=8,containerPadding:s=0}=t,a=Qt(n),l=Qt(e),c=i.map(t=>function(t){const{targetRect:n,floatingRect:e,placement:i,offset:o,padding:r,scrollbarWidth:s,containerPadding:a}=t,l=Ut[i],{vertical:c,horizontal:d,orientation:h}=l,u=window.innerWidth,p=window.innerHeight;let b,v;window,window,b="vertical"===h?"start"===d?n.left-e.width-o+a:n.right+o-a:"start"===d?n.left-a:"center"===d?n.centerX-e.width/2:n.right-e.width+a,v="vertical"===h?"center"===c?n.centerY-e.height/2:"end"===c?n.bottom-e.height+a:n.top-a:"top"===c?n.top-e.height-o+a:n.bottom+o-a;const m={top:Math.min(0,v-r),left:Math.min(0,b-r),bottom:Math.min(0,p-(v+e.height+r)),right:Math.min(0,u-(b+e.width+r+s))},g=Object.values(m).reduce((t,n)=>t+Math.abs(n),0);return{x:Math.round(b),y:Math.round(v),placement:i,overflow:m,overflowAmount:g,fits:0===g}}({targetRect:a,floatingRect:l,placement:t,offset:o,padding:r,containerPadding:s,scrollbarWidth:15})),d=c.find(t=>t.fits)||c.reduce((t,n)=>t.overflowAmount>n.overflowAmount?n:t);return 0>d.overflow.right&&(d.x+=d.overflow.right),d}function nn(t){const n=t.gap??4,e=t.padding??8,i=window.innerWidth,o=window.innerHeight,r=o-t.anchorRect.bottom,s=t.anchorRect.top,a=t.popupHeight+n+e,l=r>=a,c=s>=a,d=t.side??"auto",h="bottom"===d?!(!l&&c):"top"===d?!(c||!l):l||r>=s;return{x:Math.max(e,Math.min("end"===t.align?t.anchorRect.right-t.popupWidth:"center"===t.align?t.anchorRect.left+(t.anchorRect.width-t.popupWidth)/2:t.anchorRect.left,i-t.popupWidth-e)),topY:t.anchorRect.bottom+n,bottomY:o-t.anchorRect.top+n,below:h}}const en={id:"ty-tooltip",css:"\n:host {\ndisplay: contents;\n}\n"},on=new WeakMap,rn=new WeakMap,sn=new WeakMap,an=new WeakMap,ln=new WeakMap;function cn(t){const n=t||"neutral",e=n.replace(/[+-]$/,"");return/^[A-Za-z][A-Za-z0-9_-]*$/.test(e)?n:"neutral"}function dn(t){let n=sn.get(t);return n||(n={showTimeout:null,hideTimeout:null},sn.set(t,n)),n}function hn(t,n){return t.hasAttribute(n)}function un(t,n,e){const i=t.getAttribute(n);if(null===i)return e;const o=parseInt(i,10);return isNaN(o)?e:o}function pn(t){return{placement:t.getAttribute("placement")||"top",offset:un(t,"offset",8),delay:un(t,"delay",600),disabled:hn(t,"disabled"),flavor:cn(t.getAttribute("flavor"))}}function bn(t){return t.parentElement}function vn(t){!function(){if(document.getElementById("ty-tooltip-motion"))return;const t=document.createElement("style");t.id="ty-tooltip-motion",t.textContent='\n.ty-tooltip-popover:popover-open {\ntransition:\nopacity var(--ty-tooltip-duration, 120ms) ease-out,\ntranslate var(--ty-tooltip-duration, 120ms) ease-out;\n}\n@starting-style {\n.ty-tooltip-popover:popover-open { opacity: 0; translate: 0 4px; }\n.ty-tooltip-popover:popover-open[data-side="bottom"] { translate: 0 -4px; }\n.ty-tooltip-popover:popover-open[data-side="left"] { translate: 4px 0; }\n.ty-tooltip-popover:popover-open[data-side="right"] { translate: -4px 0; }\n}\n',document.head.appendChild(t)}();let n=an.get(t);if(!n){n=document.createElement("div"),n.id="ty-tooltip-"+Math.random().toString(36).slice(2,11),n.setAttribute("popover","manual"),n.setAttribute("role","tooltip"),n.className="ty-tooltip-popover",n.style.cssText="\nposition: fixed;\nmargin: 0;\npadding: 8px 12px;\nbackground: var(--ty-tooltip-bg, #262626);\ncolor: var(--ty-tooltip-color, #f5f5f5);\nborder: none;\nborder-radius: 6px;\nfont-size: var(--ty-font-xs, 12px);\nfont-weight: var(--ty-font-semibold, 600);\nline-height: 1.5;\nmax-width: 250px;\ntext-align: center;\nbox-shadow: 0 10px 15px -3px rgba(0, 0, 0, 0.2), 0 4px 6px -4px rgba(0, 0, 0, 0.1);\nuser-select: none;\npointer-events: none;\n",document.body.appendChild(n),an.set(t,n);const e=ln.get(t);e&&function(t,n){const e=(t.getAttribute("aria-describedby")||"").split(/\s+/).filter(Boolean);e.includes(n)||(e.push(n),t.setAttribute("aria-describedby",e.join(" ")))}(e,n.id)}const{flavor:e}=pn(t);return n.setAttribute("data-flavor",e),n.innerHTML=t.innerHTML,mn(n,e),n}function mn(t,n){t.style.removeProperty("background"),t.style.removeProperty("color"),t.style.removeProperty("border-color");const e=n.replace(/[+-]$/,""),i=n.slice(e.length);if(("neutral"===e||"dark"===e)&&""===i)return t.style.background="var(--ty-tooltip-bg, #262626)",t.style.color="var(--ty-tooltip-color, #f5f5f5)",void(t.style.borderColor="var(--ty-tooltip-border, #404040)");const o="dark"===e?"neutral":e,r="+"===i?"-strong":"-"===i?"-soft":"";t.style.background=`var(--ty-solid-${o}${r}, var(--ty-tooltip-bg, #262626))`,t.style.color=`var(--ty-solid-${o}${r}-fg, var(--ty-solid-${o}-fg, var(--ty-tooltip-color, #f5f5f5)))`,t.style.borderColor="transparent"}function gn(t){const{placement:n,offset:e}=pn(t),i=bn(t),o=an.get(t);if(!i||!o)return;const r=tn({targetEl:i,floatingEl:o,preferences:Jt(n),offset:e});o.style.left=r.x+"px",o.style.top=r.y+"px",o.dataset.side=r.placement.split("-")[0]}function yn(t){const n=on.get(t);n&&(n(),on.delete(t))}function fn(t){const n=dn(t);null!==n.showTimeout&&(clearTimeout(n.showTimeout),n.showTimeout=null),null!==n.hideTimeout&&(clearTimeout(n.hideTimeout),n.hideTimeout=null)}const wn=new WeakMap;function xn(t){const n=wn.get(t);n&&(document.removeEventListener("keydown",n,!0),wn.delete(t))}function kn(t){xn(t);const n=an.get(t);if(n)try{n.hidePopover(),t.un=!1,yn(t)}catch(e){}}function zn(t){const n=dn(t),{delay:e}=pn(t);fn(t),n.showTimeout=window.setTimeout(()=>function(t){const{disabled:n}=pn(t);if(n)return;const e=vn(t);try{e.showPopover(),t.un=!0,gn(t),function(t){const n=bn(t),e=an.get(t);if(!n||!e)return;let i=null;const o=()=>{null!==i&&clearTimeout(i),i=window.setTimeout(()=>{i=null,gn(t)},10)},r=new ResizeObserver(o);r.observe(n),r.observe(e);let s=null;const a=()=>{null===s&&(s=requestAnimationFrame(()=>{s=null,gn(t)}))};window.addEventListener("scroll",a,!0),window.addEventListener("resize",o),on.set(t,()=>{r.disconnect(),window.removeEventListener("scroll",a,!0),window.removeEventListener("resize",o),null!==i&&clearTimeout(i),null!==s&&cancelAnimationFrame(s)})}(t),function(t){if(wn.has(t))return;const n=n=>{"Escape"===n.key&&(fn(t),kn(t))};wn.set(t,n),document.addEventListener("keydown",n,!0)}(t)}catch(i){}}(t),e)}function $n(t){const n=dn(t);fn(t),n.hideTimeout=window.setTimeout(()=>kn(t),200)}class TyTooltip extends HTMLElement{constructor(){super(),this.un=!1,this.attachShadow({mode:"open"})}static get observedAttributes(){return["placement","offset","delay","disabled","flavor"]}connectedCallback(){this.un=!1,b(this.shadowRoot,en),function(t){const n=bn(t);if(!n)return;ln.set(t,n);const e=()=>zn(t),i=()=>$n(t),o=()=>zn(t),r=()=>$n(t);n.addEventListener("mouseenter",e),n.addEventListener("mouseleave",i),n.addEventListener("focusin",o),n.addEventListener("focusout",r),rn.set(t,()=>{n.removeEventListener("mouseenter",e),n.removeEventListener("mouseleave",i),n.removeEventListener("focusin",o),n.removeEventListener("focusout",r)})}(this),vn(this)}disconnectedCallback(){!function(t){fn(t),yn(t),xn(t);const n=rn.get(t);n&&(n(),rn.delete(t));const e=an.get(t),i=ln.get(t);e&&i&&function(t,n){const e=(t.getAttribute("aria-describedby")||"").split(/\s+/).filter(t=>t&&t!==n);e.length>0?t.setAttribute("aria-describedby",e.join(" ")):t.removeAttribute("aria-describedby")}(i,e.id),e&&(e.remove(),an.delete(t)),ln.delete(t),sn.delete(t)}(this)}attributeChangedCallback(t,n,e){if("flavor"===t){const t=an.get(this);t&&mn(t,cn(e))}"disabled"===t&&null!==e&&kn(this)}}customElements.get("ty-tooltip")||customElements.define("ty-tooltip",TyTooltip);const Cn={locked:!1,scrollY:0,activeLocks:new Set};function En(){return document.documentElement}function Mn(){if(!Cn.locked)return;const t=En();window,t.classList.remove("ty-scroll-locked"),t.style.overflow="",t.style.paddingRight="",Cn.locked=!1}function Sn(t){Cn.activeLocks.has(t)||(Cn.activeLocks.add(t),1===Cn.activeLocks.size&&function(){if(Cn.locked)return;const t=window.innerWidth-En().clientWidth,n=En();window,Cn.scrollY=window.scrollY||En().scrollTop||0,Cn.locked=!0,n.style.overflow="hidden",t>0&&(n.style.paddingRight=t+"px"),n.classList.add("ty-scroll-locked")}())}function Tn(t){Cn.activeLocks.has(t)&&(Cn.activeLocks.delete(t),0===Cn.activeLocks.size&&Mn())}const _n=new WeakMap,qn=new WeakMap,Dn=new WeakMap,An=new WeakMap,Ln=new WeakMap,jn=new WeakMap,Fn=new WeakMap;function Vn(t,n){return t.hasAttribute(n)}function In(t,n,e){const i=t.getAttribute(n);if(null===i)return e;const o=parseInt(i,10);return isNaN(o)?e:o}function On(t){return{manual:Vn(t,"manual"),disableClose:Vn(t,"disable-close"),placement:t.getAttribute("placement")||"bottom",offset:In(t,"offset",8)}}function Hn(t){return t.parentElement}function Nn(t){return t.querySelector(".popup-dialog")}function Bn(t){let n=Fn.get(t);return n||(n="popup-"+(t.id||Math.random().toString(36).substr(2,9)),Fn.set(t,n)),n}function Pn(t,n=!1){const{disableClose:e}=On(t);if(!n&&e)return;const i=t.shadowRoot,o=i?Nn(i):null;if(!o)return;o.classList.remove("open"),o.classList.remove("preparing-animation");const r=Hn(t);r?.hasAttribute("aria-haspopup")&&r.setAttribute("aria-expanded","false");const s=Math.max(0,...getComputedStyle(o).transitionDuration.split(",").map(t=>parseFloat(t)*(t.trim().endsWith("ms")?1:1e3)));clearTimeout(An.get(t)),An.set(t,setTimeout(()=>{An.delete(t),o.classList.remove("position-calculated"),o.close()},s+20))}function Wn(t){const n=t.shadowRoot,e=n?Nn(n):null;if(!e)return;if(e.open){const n=An.get(t);return void(void 0!==n&&(clearTimeout(n),An.delete(t),e.classList.add("open")))}Sn(Bn(t)),e.showModal();const i=Hn(t);i?.hasAttribute("aria-haspopup")&&i.setAttribute("aria-expanded","true"),requestAnimationFrame(()=>{!function(t){const{placement:n,offset:e}=On(t),i=t.shadowRoot,o=Hn(t),r=i?Nn(i):null;if(!o||!r)return;const s=tn({targetEl:o,floatingEl:r,preferences:Jt(n),offset:e,padding:8,containerPadding:16});t.style.setProperty("--popup-x",s.x+"px"),t.style.setProperty("--popup-y",s.y+"px"),r.dataset.side=s.placement.split("-")[0],r.classList.add("position-calculated")}(t),e.classList.add("preparing-animation"),requestAnimationFrame(()=>{e.classList.add("open"),t.dispatchEvent(new CustomEvent("open"))})})}function Rn(t){const n=t.shadowRoot,e=n?Nn(n):null;e&&(e.classList.contains("open")?Pn(t):Wn(t))}function Yn(t,n){n.preventDefault(),n.stopPropagation(),Rn(t)}function Un(t){const{manual:n}=On(t),e=Hn(t);if(!e||n)return;e.setAttribute("aria-haspopup","dialog"),e.hasAttribute("aria-expanded")||e.setAttribute("aria-expanded","false");const i=_n.get(t);i&&e.removeEventListener("pointerdown",i);const o=qn.get(t);o&&e.removeEventListener("click",o);const r=n=>Yn(t,n);_n.set(t,r),e.addEventListener("pointerdown",r);const s=n=>{0===n.detail&&Yn(t,n)};qn.set(t,s),e.addEventListener("click",s)}function Xn(t){const n=Hn(t),e=_n.get(t);n&&e&&(n.removeEventListener("pointerdown",e),_n.delete(t));const i=qn.get(t);n&&i&&(n.removeEventListener("click",i),qn.delete(t)),n?.removeAttribute("aria-haspopup"),n?.removeAttribute("aria-expanded")}function Kn(t){const n=t.shadowRoot;if(!n)return;const e=Nn(n);if(b(n,{css:'\n.popup-dialog {\nposition: fixed;\ntop: 0;\nleft: 0;\nmargin: 0;\nborder: none;\nbackground: transparent;\nmax-width: none;\nmax-height: none;\npadding: var(--popup-padding, 16px);\nvisibility: hidden;\nopacity: 0;\ntransition:\nopacity var(--ty-popup-duration, 180ms) var(--ty-popup-ease, cubic-bezier(0.34, 1.56, 0.64, 1)),\nvisibility var(--ty-popup-duration, 180ms) var(--ty-popup-ease, cubic-bezier(0.34, 1.56, 0.64, 1)),\ntransform var(--ty-popup-duration, 180ms) var(--ty-popup-ease, cubic-bezier(0.34, 1.56, 0.64, 1));\npointer-events: none;\n}\n.popup-dialog.position-calculated {\ntop: var(--popup-y, 0px);\nleft: var(--popup-x, 0px);\n}\n.popup-dialog.preparing-animation {\ntransform: scale(var(--ty-popup-scale, 0.96));\n}\n.popup-dialog.preparing-animation:not(.open) {\ntransition: none;\n}\n.popup-dialog[data-side="bottom"].preparing-animation:not(.open) {\ntransform: translateY(-6px) scale(var(--ty-popup-scale, 0.96));\n}\n.popup-dialog[data-side="top"].preparing-animation:not(.open) {\ntransform: translateY(6px) scale(var(--ty-popup-scale, 0.96));\n}\n.popup-dialog[data-side="left"].preparing-animation:not(.open) {\ntransform: translateX(6px) scale(var(--ty-popup-scale, 0.96));\n}\n.popup-dialog[data-side="right"].preparing-animation:not(.open) {\ntransform: translateX(-6px) scale(var(--ty-popup-scale, 0.96));\n}\n.popup-dialog.open {\nvisibility: visible;\nopacity: 1;\ntransform: scale(1);\npointer-events: auto;\n}\n.popup-dialog::backdrop {\nbackground: transparent;\n}\n.popup-container {\ndisplay: contents;\n}\n#popup-content {\ndisplay: contents;\n}\n#popup-content ::slotted(*) {\nposition: relative;\nmax-width: min(400px, 90vw);\nmax-height: min(500px, 80vh);\noverflow: auto;\n}\n',id:"ty-popup"}),!e){const e=document.createElement("dialog"),i=document.createElement("div"),o=document.createElement("slot");e.className="popup-dialog",i.className="popup-container",o.id="popup-content",n.appendChild(e),e.appendChild(i),i.appendChild(o),t.style.setProperty("--popup-x","0px"),t.style.setProperty("--popup-y","0px");const r=n=>function(t,n){n.stopPropagation();const e=t.shadowRoot,i=e?Nn(e):null;i&&n.target===i&&(n.preventDefault(),Pn(t))}(t,n);Dn.set(t,r),e.addEventListener("pointerdown",r);const s=n=>function(t,n){if(n.stopPropagation(),"Escape"===n.key){const{disableClose:e}=On(t);e?n.preventDefault():Pn(t)}}(t,n);Ln.set(t,s),t.addEventListener("keydown",s),e.addEventListener("close",()=>{Tn(Bn(t)),e.classList.remove("open"),e.classList.remove("preparing-animation"),t.dispatchEvent(new CustomEvent("close"))})}t.closePopup=()=>Pn(t,!0),t.openPopup=()=>Wn(t),t.togglePopup=()=>Rn(t);const i=n=>function(t,n){n.stopPropagation(),Pn(t,!0)}(t,n);jn.set(t,i),t.addEventListener("ty:close-popup",i),Un(t)}class TyPopup extends HTMLElement{static get observedAttributes(){return["manual","disable-close","placement","offset"]}constructor(){super(),this.attachShadow({mode:"open"})}connectedCallback(){Kn(this)}disconnectedCallback(){!function(t){const n=Fn.get(t);n&&(Tn(n),Fn.delete(t)),Xn(t);const e=t.shadowRoot,i=e?Nn(e):null;if(i){const n=Dn.get(t);n&&(i.removeEventListener("pointerdown",n),Dn.delete(t))}const o=Ln.get(t);o&&(t.removeEventListener("keydown",o),Ln.delete(t));const r=jn.get(t);r&&(t.removeEventListener("ty:close-popup",r),jn.delete(t))}(this)}attributeChangedCallback(t,n,e){switch(Kn(this),t){case"placement":case"offset":Kn(this);break;case"manual":case"disable-close":Xn(this),Un(this)}}}customElements.get("ty-popup")||customElements.define("ty-popup",TyPopup);const Zn=new WeakMap,Jn=new WeakMap,Gn=new WeakMap,Qn=new WeakMap,te=new WeakMap,ne=new WeakMap,ee=new WeakMap;function ie(t,n){if(!t.hasAttribute(n))return!1;const e=t.getAttribute(n);return null===e||"false"!==e.toLowerCase()}function oe(t){return{open:ie(t,"open"),backdrop:!ie(t,"no-backdrop"),closeOnOutsideClick:!ie(t,"prevent-outside-click"),closeOnEscape:!ie(t,"prevent-escape")}}function re(t){return t.querySelector(".ty-modal-dialog")}function se(t,n,e){const i=new CustomEvent(n,{detail:e,cancelable:!0});t.dispatchEvent(i)}function ae(t,n="programmatic",e){const i=t.shadowRoot,o=i?re(i):null;if(o&&o.open){if(!e?.force){const e=new CustomEvent("beforeclose",{detail:{reason:n},cancelable:!0});if(t.dispatchEvent(e),e.defaultPrevented)return}ee.set(t,n),t.removeAttribute("open")}}function le(t){const n=t.shadowRoot;if(!n)return;const e=oe(t),i=function(t){let n=re(t);if(!n){n=document.createElement("dialog");const e=document.createElement("button"),i=document.createElement("div"),o=document.createElement("slot");n.className="ty-modal-dialog",e.className="close-button",e.type="button",e.setAttribute("aria-label","Close modal"),e.innerHTML='<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-x-icon lucide-x"><path d="M18 6 6 18"/><path d="m6 6 12 12"/></svg>',i.className="modal-content",i.appendChild(o),n.appendChild(e),n.appendChild(i),t.appendChild(n)}return n}(n),o=function(t){let n=ne.get(t);return n||(n="modal-"+(t.id||Math.random().toString(36).slice(2,11)),ne.set(t,n)),n}(t);b(n,{css:"\n:host {\ndisplay: contents;\n}\n.close-button {\nposition: absolute;\ntop: -8px;\nright: -8px;\nbackground: transparent;\nborder: none;\ncursor: pointer;\npadding: 4px;\nborder-radius: 4px;\ntransition: var(--ty-transition-colors);\nz-index: 1;\ncolor: #d8d8d8;\noutline: none;\nbox-shadow: none;\n-webkit-appearance: none;\n-moz-appearance: none;\nappearance: none;\n-webkit-tap-highlight-color: transparent;\n-webkit-touch-callout: none;\n-webkit-user-select: none;\n-moz-user-select: none;\n-ms-user-select: none;\nuser-select: none;\n}\n.close-button:hover {\ncolor: white;\n}\n.close-button:focus,\n.close-button:focus-visible,\n.close-button:focus-within,\n.close-button:active {\noutline: none !important;\nbox-shadow: none !important;\nborder: none !important;\nbackground: transparent !important;\n}\n.close-button:hover,\n.close-button:focus:hover,\n.close-button:active:hover {\ncolor: white;\n}\n.close-button.hide {\nvisibility: hidden;\n}\n.ty-modal-dialog {\npadding: 18px;\nborder: none;\nmargin: 0;\nbackground: transparent;\nposition: fixed;\ntop: 50%;\nleft: 50%;\ntransform: translate(-50%, -50%);\nz-index: 1000;\noverflow: hidden;\nmax-width: 85vw;\nmax-height: 90vh;\noutline: none;\n}\n.ty-modal-dialog[open] {\nanimation: ty-modal-enter var(--ty-modal-duration, 200ms) ease-out;\n}\n@keyframes ty-modal-enter {\nfrom {\nopacity: 0;\ntransform: translate(-50%, -50%) scale(0.93);\n}\nto {\nopacity: 1;\ntransform: translate(-50%, -50%) scale(1);\n}\n}\n.ty-modal-dialog::backdrop {\nbackground: var(--ty-modal-backdrop, rgba(0, 0, 0, 0.5));\nbackdrop-filter: var(--ty-modal-backdrop-blur, blur(2px));\nanimation: ty-modal-backdrop-enter var(--ty-modal-duration, 200ms) ease-out;\n}\n.ty-modal-dialog:not([data-backdrop])::backdrop {\nbackground: transparent;\nbackdrop-filter: none;\n}\n.modal-content {\ncolor: var(--ty-text);\n}\n@keyframes ty-modal-backdrop-enter {\nfrom {\nopacity: 0;\n}\nto {\nopacity: 1;\n}\n}\n",id:"ty-modal"}),i.className="ty-modal-dialog",e.backdrop?i.setAttribute("data-backdrop","true"):i.removeAttribute("data-backdrop");const r=t.getAttribute("label");if(r?i.setAttribute("aria-label",r):i.removeAttribute("aria-label"),function(t,n,e){const i=Zn.get(t);if(i&&(n.removeEventListener("click",i),Zn.delete(t)),e){const e=n=>function(t,n){n.stopPropagation();const e=t.shadowRoot,i=e?re(e):null;i&&n.target===i&&(n.preventDefault(),ae(t,"backdrop"))}(t,n);Zn.set(t,e),n.addEventListener("click",e)}}(t,i,e.closeOnOutsideClick),function(t,n,e){const i=Jn.get(t);if(i&&(n.removeEventListener("keydown",i),Jn.delete(t)),e){const e=n=>function(t,n){n.stopPropagation(),"Escape"===n.key&&(n.preventDefault(),ae(t,"escape"))}(t,n);Jn.set(t,e),n.addEventListener("keydown",e)}else{const e=t=>{"Escape"===t.key&&t.preventDefault()};Jn.set(t,e),n.addEventListener("keydown",e)}}(t,i,e.closeOnEscape),i.oncancel=n=>{n.preventDefault(),oe(t).closeOnEscape&&ae(t,"escape")},function(t,n,e){const i=n.querySelector(".close-button");if(!i)return;i.style.display=e?"":"none";const o=Gn.get(t);if(o&&(i.removeEventListener("click",o),Gn.delete(t)),e){const n=n=>function(t,n){n.preventDefault(),n.stopPropagation(),ae(t,"close-button")}(t,n);Gn.set(t,n),i.addEventListener("click",n)}}(t,i,e.closeOnOutsideClick),function(t,n){const e=n.querySelector(".modal-content");if(!e)return;const i=Qn.get(t),o=te.get(t);if(i&&(e.removeEventListener("mouseenter",i),Qn.delete(t)),o&&(e.removeEventListener("mouseleave",o),te.delete(t)),window.innerWidth>=768&&0>=navigator.maxTouchPoints){const n=t=>function(t,n){const e=n.currentTarget.closest(".ty-modal-dialog");if(e){const t=e.querySelector(".close-button");t&&t.classList.add("hide")}}(0,t),i=t=>function(t,n){const e=n.currentTarget.closest(".ty-modal-dialog");if(e){const t=e.querySelector(".close-button");t&&t.classList.remove("hide")}}(0,t);Qn.set(t,n),te.set(t,i),e.addEventListener("mouseenter",n),e.addEventListener("mouseleave",i)}}(t,i),e.open)i.open||(Sn(o),e.backdrop?i.showModal():i.show(),ce(),se(t,"open",{}));else if(i.open){Tn(o),i.close(),ce();const n=ee.get(t)??"programmatic";ee.delete(t),se(t,"close",{reason:n})}ce(),i.onclose=n=>{n.target===i&&(Tn(o),t.hasAttribute("open")&&(t.removeAttribute("open"),se(t,"close",{reason:"native",returnValue:i.returnValue||void 0})),ce())}}function ce(){const t=Array.from(document.querySelectorAll("ty-modal[open], ty-dialog[open]")).some(t=>ie(t,"open")&&!ie(t,"no-zoom"));document.documentElement.classList.toggle("ty-modal-zoom",t)}class TyModal extends HTMLElement{static get observedAttributes(){return["open","no-backdrop","no-zoom","prevent-outside-click","prevent-escape","label"]}get open(){return ie(this,"open")}set open(t){i(t)?this.setAttribute("open","true"):this.removeAttribute("open")}get noBackdrop(){return ie(this,"no-backdrop")}set noBackdrop(t){i(t)?this.setAttribute("no-backdrop",""):this.removeAttribute("no-backdrop")}get noZoom(){return ie(this,"no-zoom")}set noZoom(t){i(t)?this.setAttribute("no-zoom",""):this.removeAttribute("no-zoom")}get preventOutsideClick(){return ie(this,"prevent-outside-click")}set preventOutsideClick(t){i(t)?this.setAttribute("prevent-outside-click",""):this.removeAttribute("prevent-outside-click")}get preventEscape(){return ie(this,"prevent-escape")}set preventEscape(t){i(t)?this.setAttribute("prevent-escape",""):this.removeAttribute("prevent-escape")}constructor(){super(),this.attachShadow({mode:"open"})}connectedCallback(){le(this),this.show=()=>{this.setAttribute("open","true")},this.hide=t=>ae(this,"programmatic",t)}disconnectedCallback(){!function(t){const n=ne.get(t),e=t.shadowRoot,i=e?re(e):null;if(n&&(Tn(n),ne.delete(t)),ce(),!i)return;const o=Zn.get(t);o&&(i.removeEventListener("click",o),Zn.delete(t));const r=Jn.get(t);r&&(i.removeEventListener("keydown",r),Jn.delete(t));const s=i.querySelector(".close-button");if(s){const n=Gn.get(t);n&&(s.removeEventListener("click",n),Gn.delete(t))}const a=i.querySelector(".modal-content");if(a){const n=Qn.get(t),e=te.get(t);n&&(a.removeEventListener("mouseenter",n),Qn.delete(t)),e&&(a.removeEventListener("mouseleave",e),te.delete(t))}}(this)}attributeChangedCallback(t,n,e){this.isConnected&&le(this)}}customElements.get("ty-modal")||customElements.define("ty-modal",TyModal),customElements.get("ty-dialog")||customElements.define("ty-dialog",class extends TyModal{});const de=(t,n)=>{const e=e=>n?e?`var(--ty-color-${t}${e}, var(--ty-color-${t}, var(--ty-color-${n}${e})))`:`var(--ty-color-${t}, var(--ty-color-${n}))`:e?`var(--ty-color-${t}${e}, var(--ty-color-${t}))`:`var(--ty-color-${t})`;return`\n:host([flavor="${t}"]) {\n--select-accent: var(--ty-input-${t}-border, ${e("-soft")});\n--select-accent-bold: ${e("")};\n--select-ring: color-mix(in oklab, ${e("")} 15%, transparent);\n}\n:host([flavor="${t}+"]) {\n--select-accent: ${e("")};\n--select-accent-bold: ${e("-strong")};\n--select-ring: color-mix(in oklab, ${e("-strong")} 15%, transparent);\n}\n:host([flavor="${t}-"]) {\n--select-accent: ${e("-faint")};\n--select-accent-bold: ${e("-soft")};\n--select-ring: color-mix(in oklab, ${e("-soft")} 15%, transparent);\n}\n`},he=`\n${et}\n:host {\ndisplay: block;\nwidth: 100%;\nfont-family: inherit;\n--mobile-border-color: var(--ty-border, #5858587d);\n}\n:host([compact]) {\ndisplay: inline-block;\nwidth: auto;\n}\n:host([has-trigger]) {\ndisplay: inline-block;\nwidth: auto;\n}\n.dropdown-dialog {\nposition: fixed;\nwidth: var(--dropdown-width, 200px);\nmax-width: 100vw;\nmargin: 0;\npadding: 0;\nborder: none;\nbackground: transparent;\nbox-sizing: border-box;\npadding: var(--dropdown-padding, 20px);\nopacity: 0;\nscale: 0.96;\ntranslate: 0 -6px;\ntransform-origin: top center;\ntransition:\nopacity var(--ty-popup-duration, 180ms) var(--ty-popup-ease, cubic-bezier(0.34, 1.56, 0.64, 1)),\nscale var(--ty-popup-duration, 180ms) var(--ty-popup-ease, cubic-bezier(0.34, 1.56, 0.64, 1)),\ntranslate var(--ty-popup-duration, 180ms) var(--ty-popup-ease, cubic-bezier(0.34, 1.56, 0.64, 1));\ntransform: translate(var(--dropdown-offset-x, 0px), var(--dropdown-offset-y, 0px));\ntop: -1000px;\nleft: -1000px;\n}\n.dropdown-dialog[open] {\ndisplay: flex;\nflex-direction: column;\n}\n.dropdown-dialog.position-below {\nleft: var(--dropdown-x);\ntop: var(--dropdown-y);\n}\n.dropdown-dialog.position-above {\nleft: var(--dropdown-x);\nbottom: var(--dropdown-y);\ntop: auto;\nflex-direction: column-reverse;\ntranslate: 0 6px;\ntransform-origin: bottom center;\n}\n.dropdown-dialog.position-above .dropdown-header {\nmargin-top: 4px;\n}\n.dropdown-dialog.position-below .dropdown-header {\nmargin-bottom: 4px;\n}\n.dropdown-dialog.position-below .dropdown-options {\nbox-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -2px rgba(0, 0, 0, 0.1), var(--ty-shadow-md);\n}\n.dropdown-dialog.position-above .dropdown-options {\ntransform: translateY(6px) scale(0.96);\ntransform-origin: bottom center;\n}\n.dropdown-dialog.open {\nopacity: 1;\nscale: 1;\ntranslate: 0 0;\n}\n.dropdown-dialog.open .dropdown-options {\nopacity: 1;\ntransform: translateY(0) scale(1);\n}\n@starting-style {\n.dropdown-dialog.open {\nopacity: 0;\nscale: 0.96;\ntranslate: 0 -6px;\n}\n.dropdown-dialog.open.position-above {\ntranslate: 0 6px;\n}\n.dropdown-dialog.open .dropdown-options {\nopacity: 0;\ntransform: translateY(-6px) scale(0.96);\n}\n.dropdown-dialog.open.position-above .dropdown-options {\ntransform: translateY(6px) scale(0.96);\n}\n}\n.dropdown-dialog::backdrop {\nbackground: transparent;\n}\n.dropdown-header {\ndisplay: flex;\nalign-items: center;\ngap: var(--ty-spacing-2);\nposition: relative;\n}\n.dropdown-search-input {\nfont-family: inherit;\nwidth: 100%;\nmin-width: 0;\nbox-sizing: border-box;\nbackground: var(--input-bg, var(--ty-input-bg));\ncolor: var(--input-color, var(--ty-input-color));\nborder: 1px solid var(--input-border, var(--ty-input-border));\nborder-radius: var(--ty-radius-md);\nfont-family: inherit;\nfont-size: var(--ty-font-sm);\nline-height: var(--ty-leading-sm);\nletter-spacing: var(--ty-tracking-sm);\nfont-weight: var(--ty-font-normal);\nmin-height: var(--ty-size-md);\npadding: var(--ty-spacing-2) var(--ty-spacing-3);\npadding-right: calc(var(--ty-spacing-3) + 1rem + var(--ty-spacing-2));\ntransition: var(--ty-transition-all);\noutline: none;\n}\n.dropdown-search-input:focus {\nborder-color: var(--input-border-focus, var(--ty-input-border-focus));\nbox-shadow: 0 0 0 3px var(--input-shadow-focus, var(--ty-input-shadow-focus));\n}\n.dropdown-search-input:disabled {\nbackground-color: var(--input-disabled-bg, var(--ty-input-disabled-bg));\ncolor: var(--input-disabled-color, var(--ty-input-disabled-color));\ncursor: not-allowed;\nopacity: 0.6;\n}\n.dropdown-search-input::placeholder {\ncolor: var(--input-placeholder, var(--ty-input-placeholder));\n}\n.dropdown-search-chevron {\nposition: absolute;\ntop: 50%;\nright: var(--ty-spacing-3);\ntransform: translateY(-50%);\nwidth: 1rem;\nheight: 1rem;\ncolor: var(--input-placeholder, var(--ty-input-placeholder));\ntransition: var(--ty-transition-transform);\npointer-events: none;\n}\n.dropdown-search-chevron.open {\ntransform: translateY(-50%) rotate(180deg);\n}\n.dropdown-search-chevron svg {\nwidth: 100%;\nheight: 100%;\n}\n.select-stub {\nmin-height: var(--ty-size-md);\ndisplay: flex;\nflex-wrap: wrap;\ngap: 0.25rem;\nalign-items: center;\npadding: 0 2.5rem 0 0.75rem;\ntransition: var(--ty-transition-all), opacity 0.2s ease;\noutline: none;\nbackground: var(--input-bg, var(--ty-input-bg));\ncolor: var(--input-color, var(--ty-input-color));\nborder: 1px solid var(--select-accent, var(--input-border, var(--ty-input-border)));\nborder-radius: var(--ty-radius-md);\nfont-family: inherit;\nfont-size: var(--ty-field-font);\nline-height: var(--ty-field-leading);\nletter-spacing: var(--ty-field-tracking);\ncursor: pointer;\nposition: relative;\nwidth: 100%;\nbox-sizing: border-box;\n}\n.select-stub {\nmin-height: var(--ty-field-height);\npadding: 0 2.5rem 0 var(--ty-field-pad-x);\n}\n.select-stub:hover {\nborder-color: var(--select-accent-bold, var(--input-border-hover, var(--ty-input-border-hover)));\n}\n.select-stub[disabled] {\nbackground-color: var(--input-disabled-bg, var(--ty-input-disabled-bg));\ncolor: var(--input-disabled-color, var(--ty-input-disabled-color));\ncursor: not-allowed;\nopacity: 0.6;\n}\n.dropdown-wrapper:has(.dropdown-chevron.open) .select-stub {\nopacity: 0;\npointer-events: none;\n}\n.dropdown-wrapper:has(.dropdown-chevron.open):not(:has(.dropdown-search-input:focus)) .select-stub:not(.custom-trigger),\n.select-stub:focus,\n.select-stub:focus-visible {\nborder-color: var(--select-accent-bold, var(--input-border-focus, var(--ty-input-border-focus)));\nbox-shadow: 0 0 0 3px var(--select-ring, var(--input-shadow-focus, var(--ty-input-shadow-focus)));\n}\n.select-stub.custom-trigger {\nmin-height: 0;\npadding: 0;\nborder: none;\nbackground: transparent;\n}\n.select-stub.custom-trigger:hover,\n.dropdown-wrapper:has(.dropdown-chevron.open) .select-stub.custom-trigger,\n.select-stub.custom-trigger:focus,\n.select-stub.custom-trigger:focus-visible {\nborder-color: transparent;\nbox-shadow: none;\n}\n.dropdown-mode-mobile .dropdown-wrapper:has(.mobile-dialog[open]) .select-chips {\ndisplay: none;\n}\n.select-stub.has-tags {\npadding: 0.25rem 2.5rem 0.25rem 0.5rem;\nwidth: 100%;\n}\n.select-stub.has-tags slot[name="selected"] {\ndisplay: flex;\nflex-wrap: wrap;\ngap: 0.25rem;\n}\n.dropdown-chevron {\nposition: absolute;\ntop: 50%;\nright: var(--ty-spacing-3);\ntransform: translateY(-50%);\nwidth: 1rem;\nheight: 1rem;\ncolor: var(--input-placeholder, var(--ty-input-placeholder));\ntransition: var(--ty-transition-transform);\npointer-events: none;\n}\n.dropdown-chevron.open {\ntransform: translateY(-50%) rotate(180deg);\n}\n.dropdown-chevron svg {\nwidth: 100%;\nheight: 100%;\n}\n.select-chips {\ndisplay: flex;\nflex-wrap: wrap;\ngap: 0.5rem;\nalign-items: center;\nmin-width: 0;\n}\n.dropdown-placeholder {\ncolor: var(--input-placeholder, var(--ty-input-placeholder, #9ca3af));\nfont-size: var(--ty-field-font);\nline-height: var(--ty-field-leading);\nletter-spacing: var(--ty-field-tracking);\nfont-weight: var(--ty-font-light);\nfont-style: italic;\n}\n.dropdown-placeholder.hidden {\ndisplay: none;\n}\n.dropdown-options {\nopacity: 0;\nbackground: var(--ty-surface-floating);\nborder: 1px solid var(--ty-floating-border);\nborder-radius: var(--ty-radius-lg);\nmax-height: 16rem;\nwidth: 100%;\nmax-width: 100%;\noverflow-x: hidden;\noverflow-y: auto;\nscroll-behavior: smooth;\nbox-sizing: border-box;\nposition: relative;\nbox-shadow:\n0 20px 25px -5px rgba(0, 0, 0, 0.1),\n0 10px 10px -5px rgba(0, 0, 0, 0.04);\ntransform: translateY(-6px) scale(0.96);\ntransform-origin: top center;\ntransition:\nopacity var(--ty-popup-duration, 180ms) var(--ty-popup-ease, cubic-bezier(0.34, 1.56, 0.64, 1)),\ntransform var(--ty-popup-duration, 180ms) var(--ty-popup-ease, cubic-bezier(0.34, 1.56, 0.64, 1));\ndisplay: flex;\nflex-wrap: wrap;\npadding: 0.5rem;\ngap: 0.5rem;\n}\n.dropdown-options.ty-custom-scroll {\nscrollbar-width: none;\n-ms-overflow-style: none;\n}\n.dropdown-options.ty-custom-scroll::-webkit-scrollbar {\ndisplay: none;\n}\n.dropdown-options-wrapper {\nposition: relative;\n}\n.dropdown-options-wrapper:hover .ty-scrollbar-track-y.has-overflow {\nopacity: 1;\n}\n.dropdown-options ty-tag {\nuser-select: none;\ntransition: transform 0.1s ease;\n}\n.dropdown-options ty-tag:hover {\ntransform: scale(1.02);\n}\n.dropdown-options ty-tag:active {\ntransform: scale(0.98);\n}\n.dropdown-options ty-tag[selected] {\nopacity: 0.5;\n}\n.select-chips ty-tag {\nmax-width: 150px;\n}\n@media (max-width: 640px) {\n.select-chips ty-tag {\nmax-width: 100px;\n}\n}\n.select-container {\ndisplay: flex;\nflex-direction: column;\n}\n.dropdown-wrapper {\nposition: relative;\ndisplay: block;\nwidth: 100%;\n}\n.ty-field-label {\nfont-size: var(--ty-field-label-font);\nline-height: var(--ty-field-label-leading);\nletter-spacing: var(--ty-tracking-sm);\nfont-weight: var(--ty-font-medium);\ncolor: var(--ty-label-color);\nmargin-bottom: var(--ty-field-label-gap);\npadding-left: var(--ty-field-outer-pad-x);\ndisplay: flex;\nalign-items: center;\n}\n.required-icon {\ndisplay: inline-flex;\nalign-items: center;\ncolor: #ef4444;\nwidth: 12px;\nheight: 12px;\nvertical-align: middle;\nmargin-left: 4px;\n}\n.required-icon svg {\nwidth: 100%;\nheight: 100%;\n}\n:host([disabled]) .select-container {\npointer-events: none;\n}\n.dropdown-mode-mobile .mobile-dialog {\nposition: fixed;\ntop: 0;\nleft: 0;\nright: 0;\nbottom: 0;\nwidth: 100vw;\nheight: 100dvh; \nmax-width: 100vw;\nmax-height: 100dvh;\nmargin: 0;\npadding: 0;\npadding-top: 6dvh; \nborder: none;\nbackground: transparent; \nalign-items: flex-start;\njustify-content: center;\nopacity: 0;\ntransition: opacity 300ms ease;\n}\n.dropdown-mode-mobile .mobile-dialog[open] {\ndisplay: flex;\n}\n.dropdown-mode-mobile .mobile-dialog.open {\nopacity: 1;\n}\n.dropdown-mode-mobile .mobile-dialog::backdrop {\nbackground: rgba(0, 0, 0, 0.65); \nbackdrop-filter: blur(8px);\n-webkit-backdrop-filter: blur(8px);\n}\n.dropdown-mode-mobile .mobile-dialog-content {\nposition: relative;\ndisplay: flex;\nflex-direction: column;\nwidth: calc(100% - 32px); \nmax-width: 400px;\nmin-height: 200px;\nmax-height: 90dvh; \nopacity: 0;\ntransform: scale(0.95);\ntransition: \nopacity 300ms cubic-bezier(0.16, 1, 0.3, 1),\ntransform 300ms cubic-bezier(0.16, 1, 0.3, 1);\n}\n.dropdown-mode-mobile .mobile-dialog.open .mobile-dialog-content {\nopacity: 1;\ntransform: scale(1);\n}\n.dropdown-mode-mobile .mobile-search-input:focus {\nborder-color: var(--ty-border);\n}\n.dropdown-mode-mobile .mobile-search-header {\nflex-shrink: 0;\ndisplay: flex;\nflex-direction: column;\nmargin-bottom: 16px;\npadding: 0;\nbackground: transparent;\nposition: relative;\n}\n.dropdown-mode-mobile .mobile-header-content {\ndisplay: flex;\nalign-items: center;\ngap: 12px;\nwidth: 100%;\njustify-content: flex-end;\n}\n.dropdown-mode-mobile .mobile-header-label {\nposition: absolute;\nbottom: 100%;\nleft: 2px;\nmargin-bottom: 8px; \nfont-size: var(--ty-font-base); \nline-height: var(--ty-leading-base);\nletter-spacing: var(--ty-tracking-base);\nfont-weight: 600; \ncolor: #ffffff;\npointer-events: none;\n}\n.dropdown-mode-mobile .mobile-close-button {\nflex-shrink: 0;\nwidth: 32px;\nheight: 32px;\ndisplay: flex;\nalign-items: center;\njustify-content: center;\nbackground: transparent;\nborder: none;\nborder-radius: 50%;\ncolor: #ffffff;\ncursor: pointer;\ntransition: var(--ty-transition-all);\npadding: 0;\n}\n.dropdown-mode-mobile .mobile-close-button:hover {\nbackground: rgba(255, 255, 255, 0.15);\ncolor: #ffffff;\n}\n.dropdown-mode-mobile .mobile-close-button:active {\ntransform: scale(0.9);\nbackground: rgba(255, 255, 255, 0.25);\n}\n.dropdown-mode-mobile .mobile-close-button svg {\nwidth: 18px;\nheight: 18px;\n}\n.dropdown-mode-mobile .mobile-search-input {\nfont-family: inherit;\nflex: 1;\nmin-width: 0;\nbox-sizing: border-box;\nbackground: var(--ty-surface-floating);\ncolor: var(--ty-text);\nborder: 2px solid;\nborder-color: var(--mobile-border-color);\nborder-radius: var(--ty-radius-md);\nfont-family: inherit;\nfont-size: var(--ty-font-sm);\nline-height: var(--ty-leading-sm);\nletter-spacing: var(--ty-tracking-sm);\nfont-weight: var(--ty-font-normal);\npadding: var(--ty-spacing-2) var(--ty-spacing-3);\nheight: 40px;\ntransition: var(--ty-transition-all);\noutline: none;\n}\n.dropdown-mode-mobile .mobile-search-input::placeholder {\ncolor: var(--ty-text-faint);\n}\n.dropdown-mode-mobile .mobile-search-input:focus {\nborder-color: var(--ty-border);\n}\n.dropdown-mode-mobile .mobile-body {\nposition: relative;\ndisplay: flex;\nflex-direction: column;\nheight: var(--body-height, 350px);\nmax-height: 350px;\noverflow: hidden;\nbackground: var(--ty-surface-floating);\nborder-radius: var(--ty-radius-lg);\nbox-shadow: \n0 20px 25px -5px rgba(0, 0, 0, 0.1),\n0 10px 10px -5px rgba(0, 0, 0, 0.04);\nborder: 2px solid;\nborder-color: var(--mobile-border-color);\n}\n.dropdown-mode-mobile .section-header {\ndisplay: flex;\nalign-items: center;\njustify-content: space-between;\nheight: 36px;\nflex-shrink: 0;\npadding: 0 16px;\nfont-size: 11px;\nfont-weight: 600;\ntext-transform: uppercase;\nletter-spacing: 0.06em;\ncolor: var(--ty-text-bold);\nbackground: transparent;\ncursor: default;\nuser-select: none;\n}\n.dropdown-mode-mobile .section-header .section-title {\nflex: 1;\n}\n.dropdown-mode-mobile .section-header .section-count {\nfont-weight: 500;\ncolor: var(--ty-text-faint);\nmargin-left: 0.25rem;\n}\n.dropdown-mode-mobile .mobile-body .section-header {\nheight: 36px;\nflex: 0 0 36px;\n}\n.dropdown-mode-mobile .mobile-selected-section,\n.dropdown-mode-mobile .mobile-available-section {\ndisplay: flex;\nflex-direction: column;\nbackground: var(--ty-input-bg);\noverflow: hidden;\nmin-height: 36px;\nflex: 0 1 36px;\ntransition: flex-grow 220ms cubic-bezier(0.4, 0, 0.2, 1);\n}\n.dropdown-mode-mobile .mobile-body[data-expanded="selected"] .mobile-selected-section,\n.dropdown-mode-mobile .mobile-body[data-expanded="available"] .mobile-available-section {\nflex-grow: 1;\n}\n.dropdown-mode-mobile .mobile-selected-section[data-empty="true"] {\nflex-grow: 0;\n}\n.dropdown-mode-mobile .mobile-selected-section .section-content {\nflex: 1;\nmin-height: 0;\noverflow-y: auto;\noverscroll-behavior: contain;\npadding: 0.75rem 1rem;\ndisplay: flex;\nflex-wrap: wrap;\ngap: 0.5rem;\nalign-content: flex-start;\n-webkit-mask-image: linear-gradient(to bottom, black calc(100% - 12px), transparent);\nmask-image: linear-gradient(to bottom, black calc(100% - 12px), transparent);\n}\n.dropdown-mode-mobile .mobile-available-section .section-content {\nflex: 1;\nmin-height: 0;\noverflow-y: auto;\noverscroll-behavior: contain;\npadding: 0.75rem 1rem;\ndisplay: flex;\nflex-wrap: wrap;\ngap: 0.5rem;\nalign-content: flex-start;\n}\n@media (prefers-reduced-motion: reduce) {\n.dropdown-mode-mobile .mobile-selected-section,\n.dropdown-mode-mobile .mobile-available-section {\ntransition: none;\n}\n}\n.dropdown-mode-mobile .mobile-body .section-header {\ndisplay: flex;\nalign-items: center;\njustify-content: space-between;\nwidth: 100%;\nborder: none;\nbackground: transparent;\nfont: inherit;\ntext-align: left;\ncursor: pointer;\n-webkit-tap-highlight-color: transparent;\n}\n.dropdown-mode-mobile .mobile-body .section-header svg {\nwidth: 1rem;\nheight: 1rem;\nflex-shrink: 0;\nopacity: 0.5;\ntransition: transform 180ms ease;\n}\n.dropdown-mode-mobile .mobile-body .section-header[aria-expanded="true"] svg {\ntransform: rotate(180deg);\n}\n.dropdown-mode-mobile .mobile-selected-section[data-empty="true"] .section-header {\ncursor: default;\n}\n.dropdown-mode-mobile .mobile-selected-section[data-empty="true"] .section-header svg {\ndisplay: none;\n}\n.dropdown-mode-mobile .mobile-selected-chip {\ndisplay: inline-flex;\nalign-items: center;\ngap: 0.375rem;\npadding: 0.25rem 0.5rem 0.25rem 0.625rem;\nborder: 1px solid var(--ty-border);\nborder-radius: 9999px;\nbackground: var(--ty-surface-content);\ncolor: var(--ty-text);\nfont: inherit;\nfont-size: var(--ty-font-sm);\nline-height: var(--ty-leading-sm);\ncursor: pointer;\ntransition: transform 0.1s ease, border-color 0.15s ease;\nanimation: ty-select-tag-enter 180ms cubic-bezier(0.16, 1, 0.3, 1);\n}\n.dropdown-mode-mobile .mobile-selected-chip svg {\nwidth: 0.875rem;\nheight: 0.875rem;\nflex-shrink: 0;\nopacity: 0.6;\n}\n@media (hover: hover) {\n.dropdown-mode-mobile .mobile-selected-chip:hover {\nborder-color: var(--ty-text-soft);\n}\n.dropdown-mode-mobile .mobile-selected-chip:hover svg {\nopacity: 1;\n}\n}\n.dropdown-mode-mobile .mobile-selected-chip:active {\ntransform: scale(0.96);\n}\n.dropdown-mode-mobile .empty-state {\ndisplay: none;\nwidth: 100%;\npadding: 2rem 1rem;\ntext-align: center;\ncolor: var(--ty-text-faint);\nfont-size: var(--ty-font-sm);\nline-height: var(--ty-leading-sm);\nletter-spacing: var(--ty-tracking-sm);\nfont-style: italic;\n}\n.dropdown-mode-mobile .mobile-available-section[data-empty="true"] .empty-state {\ndisplay: block;\n}\n.dropdown-mode-mobile .mobile-selected-section[data-empty="true"] .section-content,\n.dropdown-mode-mobile .mobile-available-section[data-empty="true"] slot {\ndisplay: none;\n}\n.dropdown-mode-mobile .section-content ::slotted(ty-tag) {\ncursor: pointer;\nuser-select: none;\ntransition: transform 0.1s ease;\nmargin: 2px 0;\nanimation: ty-select-tag-enter 180ms cubic-bezier(0.16, 1, 0.3, 1);\n}\n@media (hover: hover) {\n.dropdown-mode-mobile .section-content ::slotted(ty-tag:hover) {\ntransform: scale(1.02);\n}\n}\n.dropdown-mode-mobile .section-content ::slotted(ty-tag:active) {\ntransform: scale(0.96);\n}\n.dropdown-mode-mobile .section-content ::slotted(ty-tag[hidden]) {\ndisplay: none !important;\n}\n@keyframes ty-select-tag-enter {\nfrom { opacity: 0; transform: scale(0.85); }\nto { opacity: 1; transform: scale(1); }\n}\n@media (prefers-reduced-motion: reduce) {\n.dropdown-mode-mobile .section-content ::slotted(ty-tag) {\nanimation: none;\n}\n}\n.dropdown-loading {\ndisplay: none;\nalign-items: center;\njustify-content: center;\ngap: var(--ty-spacing-2);\npadding: var(--ty-spacing-4) var(--ty-spacing-3);\ncolor: var(--ty-text-soft);\nfont-size: var(--ty-font-sm);\nmin-height: 4rem;\nbackground: var(--ty-loader-bg, var(--ty-surface-floating));\nborder: 1px solid var(--ty-loader-border, var(--ty-floating-border));\nborder-radius: var(--ty-loader-radius, var(--ty-radius-lg));\nbox-shadow: var(--ty-loader-shadow, 0 20px 25px -5px rgba(0, 0, 0, 0.1), 0 10px 10px -5px rgba(0, 0, 0, 0.04));\nbox-sizing: border-box;\n}\n.dropdown-options-wrapper.loading .dropdown-loading {\ndisplay: flex;\n}\n.dropdown-loading > slot[name="loading"] {\ndisplay: contents;\n}\n.dropdown-mode-mobile .dropdown-loading {\nbackground: transparent;\nborder: none;\nbox-shadow: none;\nflex: 1;\nflex-direction: column;\ngap: var(--ty-spacing-3);\npadding: var(--ty-spacing-8) var(--ty-spacing-4);\nmin-height: 12rem;\n}\n.dropdown-mode-mobile .dropdown-loading-spinner {\nwidth: 2rem;\nheight: 2rem;\n}\n.dropdown-mode-mobile .dropdown-loading-text {\nfont-size: var(--ty-font-base);\n}\n.dropdown-options-wrapper.loading .dropdown-options,\n.dropdown-options-wrapper.loading > slot#options-slot,\n.dropdown-options-wrapper.loading .empty-state {\ndisplay: none;\n}\n.dropdown-loading-spinner {\ndisplay: inline-flex;\nalign-items: center;\njustify-content: center;\nwidth: 1.125rem;\nheight: 1.125rem;\nflex-shrink: 0;\nanimation: ty-select-spin 0.7s linear infinite;\ncolor: var(--select-accent-bold, var(--ty-color-primary));\n}\n.dropdown-loading-spinner svg {\nwidth: 100%;\nheight: 100%;\n}\n.dropdown-loading-text {\ncolor: var(--ty-text-soft);\n}\n@keyframes ty-select-spin {\nto { transform: rotate(360deg); }\n}\n@media (prefers-reduced-motion: reduce) {\n.dropdown-loading-spinner {\nanimation-duration: 1.6s;\n}\n}\n${Pt}\n${n.filter(t=>"neutral"!==t).map(t=>de(t)).join("")}\n`;function ue(t=768){return window.matchMedia(`(pointer: coarse) and (max-width: ${t}px)`).matches}let pe=0;const be=new WeakMap;function ve(t){let n=be.get(t);return void 0===n&&(n=++pe,be.set(t,n)),n}const me='<svg viewBox="0 0 20 20" fill="currentColor">\n<path fill-rule="evenodd" d="M5.293 7.293a1 1 0 011.414 0L10 10.586l3.293-3.293a1 1 0 111.414 1.414l-4 4a1 1 0 01-1.414 0l-4-4a1 1 0 010-1.414z" clip-rule="evenodd" />\n</svg>',ge='<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">\n<circle cx="11" cy="11" r="8"/><path d="m21 21-4.3-4.3"/>\n</svg>',ye='<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">\n<line x1="18" y1="6" x2="6" y2="18"></line>\n<line x1="6" y1="6" x2="18" y2="18"></line>\n</svg>',fe=class extends u{constructor(){super(),this.pn="",this.bn=!1,this.vn=!1,this.mn="Select...",this.gn="",this.P=!1,this.yn=!1,this.fn=!1,this.wn=!0,this.xn=!1,this.kn=!1,this.zn="none",this.$n=!1,this.Cn=!1,this.En=null,this.Mn=e,this.Sn="Available",this.Tn="Selected",this._n="No options available",this.qn={open:!1,search:"",highlightedIndex:-1,filteredTags:[],selectedValues:[],mode:"desktop"},this.Dn=null,this.An=null,this.Ln=null,this.jn=null,this.Fn=null,this.Vn=0,this.In=null,this.On=null,this.Hn=null,this.Nn=null,this.j=null;const t=this.shadowRoot;b(t,{css:he,id:"ty-select-base"}),b(t,{css:'\n.select-stub.compact {\ndisplay: inline-flex;\nflex-wrap: nowrap;\nwidth: auto;\ngap: 0.5rem;\npadding: 0.5rem 2.25rem 0.5rem 0.875rem;\n}\n.select-stub.custom-trigger {\ndisplay: inline-block;\nwidth: auto;\nborder: none;\nbackground: none;\npadding: 0;\nmin-height: 0;\nborder-radius: 0;\n}\n.select-stub.custom-trigger:hover {\nborder: none;\n}\n.select-count {\nflex-shrink: 0;\ndisplay: inline-flex;\nalign-items: center;\njustify-content: center;\nmin-width: 1.25rem;\nheight: 1.25rem;\npadding: 0 0.375rem;\nborder-radius: 9999px;\nbackground: color-mix(in oklab, var(--select-accent, var(--ty-color-primary)) 15%, transparent);\ncolor: var(--select-accent-bold, var(--ty-color-primary-strong));\nfont-size: var(--ty-font-xs);\nfont-weight: var(--ty-font-semibold);\nfont-style: normal;\n}\n.select-count[hidden] {\ndisplay: none;\n}\n.select-clear {\nflex-shrink: 0;\ndisplay: inline-flex;\nalign-items: center;\njustify-content: center;\nwidth: 1rem;\nheight: 1rem;\npadding: 0;\nborder: none;\nbackground: none;\ncolor: var(--input-placeholder, var(--ty-input-placeholder));\ncursor: pointer;\nborder-radius: var(--ty-radius-sm);\ntransition: var(--ty-local-transition, all 0.15s ease);\n}\n.select-stub .select-clear {\nmargin-right: -0.375rem;\n}\n.select-stub.compact .select-clear {\nmargin-right: -0.125rem;\n}\n.select-clear[hidden] {\ndisplay: none;\n}\n.select-clear:hover {\ncolor: var(--ty-color-danger);\nbackground-color: var(--ty-bg-danger-soft);\n}\n.select-clear svg {\nwidth: 100%;\nheight: 100%;\n}\n.select-stub .dropdown-placeholder {\nfont-style: normal;\nflex: 1 1 0%;\nmin-width: 0;\noverflow: hidden;\ntext-overflow: ellipsis;\nwhite-space: nowrap;\ncolor: var(--input-color, var(--ty-input-color));\n}\n.select-stub .dropdown-placeholder.placeholder-shown {\ncolor: var(--input-placeholder, var(--ty-input-placeholder));\n}\n.select-stub .dropdown-placeholder[hidden] {\ndisplay: none;\n}\n.select-stub slot[name="selected"] {\ndisplay: none;\n}\n.select-stub.has-clone slot[name="selected"] {\ndisplay: block;\nflex: 1 1 0%;\nmin-width: 0;\noverflow: hidden;\n}\n.select-stub.compact.has-clone slot[name="selected"] {\nflex: 0 1 auto;\n}\n.select-stub ::slotted([slot="start"]),\n.select-stub ::slotted([slot="end"]) {\nflex-shrink: 0;\ncolor: var(--ty-text-soft);\n}\n.select-stub.compact .dropdown-placeholder {\nflex: 0 1 auto;\ncolor: var(--ty-text);\n}\n.dropdown-wrapper:has(.dropdown-chevron.open) .select-stub {\nopacity: 1;\npointer-events: auto;\n}\n.dropdown-dialog.open {\nfilter: drop-shadow(0 12px 24px rgba(0, 0, 0, 0.14)) drop-shadow(0 2px 6px rgba(0, 0, 0, 0.08));\n}\n.dropdown-header {\nbackground: var(--ty-surface-floating);\nborder: 1px solid var(--ty-floating-border);\nborder-bottom: none;\nborder-radius: var(--ty-radius-lg) var(--ty-radius-lg) 0 0;\npadding: var(--ty-spacing-2) var(--ty-spacing-2) var(--ty-spacing-1);\n}\n.dropdown-dialog.position-below .dropdown-header {\nmargin-bottom: 0;\n}\n.dropdown-dialog.position-above .dropdown-header {\nmargin-top: 0;\nborder-top: none;\nborder-bottom: 1px solid var(--ty-floating-border);\nborder-radius: 0 0 var(--ty-radius-lg) var(--ty-radius-lg);\npadding: var(--ty-spacing-1) var(--ty-spacing-2) var(--ty-spacing-2);\n}\n.dropdown-search-icon {\nposition: absolute;\ntop: 50%;\nleft: calc(var(--ty-spacing-2) + var(--ty-spacing-3));\ntransform: translateY(-50%);\nwidth: 1rem;\nheight: 1rem;\ncolor: var(--input-placeholder, var(--ty-input-placeholder));\npointer-events: none;\n}\n.dropdown-search-icon svg {\nwidth: 100%;\nheight: 100%;\n}\n.dropdown-mode-mobile .mobile-header-content .dropdown-search-icon {\nposition: static;\ntransform: none;\nflex-shrink: 0;\ndisplay: flex;\nalign-items: center;\njustify-content: center;\nwidth: 32px;\nheight: 32px;\ncolor: #ffffff;\n}\n.dropdown-mode-mobile .mobile-header-content .dropdown-search-icon svg {\nwidth: 18px;\nheight: 18px;\n}\n.dropdown-search-input {\nmin-height: 2.25rem;\npadding-right: var(--ty-spacing-2);\npadding-left: calc(var(--ty-spacing-3) + 1rem + var(--ty-spacing-2));\n}\n.dropdown-search-chevron {\ndisplay: none;\n}\n.dropdown-dialog:focus,\n.dropdown-dialog:focus-visible {\noutline: none;\n}\n.dropdown-header[hidden] {\ndisplay: none;\n}\n.dropdown-header[hidden] ~ .dropdown-options-wrapper .dropdown-options {\nborder-top: 1px solid var(--ty-floating-border);\nborder-radius: var(--ty-radius-lg);\n}\n.mobile-search-input[hidden],\n.mobile-header-content .dropdown-search-icon[hidden] {\ndisplay: none;\n}\n.dropdown-options {\nflex-direction: column;\nflex-wrap: nowrap;\nalign-items: stretch;\ngap: 0;\npadding: var(--ty-spacing-1);\nborder-top: none;\nborder-radius: 0 0 var(--ty-radius-lg) var(--ty-radius-lg);\nbox-shadow: none;\ntransform: none;\ntransition: none;\nmax-height: 24rem;\n}\n.dropdown-dialog.position-below .dropdown-options {\nbox-shadow: none;\n}\n.dropdown-dialog.position-above .dropdown-options {\nborder-top: 1px solid var(--ty-floating-border);\nborder-bottom: none;\nborder-radius: var(--ty-radius-lg) var(--ty-radius-lg) 0 0;\n}\n.dropdown-loading {\nborder-top: none;\nborder-radius: 0 0 var(--ty-radius-lg) var(--ty-radius-lg);\nbox-shadow: none;\n}\n.dropdown-dialog.position-above .dropdown-loading {\nborder-top: 1px solid var(--ty-floating-border);\nborder-bottom: none;\nborder-radius: var(--ty-radius-lg) var(--ty-radius-lg) 0 0;\n}\n.dropdown-mode-mobile .section-content ::slotted(ty-option) {\ndisplay: block;\nwidth: 100%;\n}\n',id:"ty-select"})}onConnect(){this.shadowRoot.querySelectorAll("dialog").forEach(t=>{t.open&&t.close()}),this.render(),this.initializeState(),this.updateFormValue(),this.Hn=new MutationObserver(()=>{this.ensureOptionRoles(),this.qn.selectedValues.length>0&&this.syncSelectedTags(this.qn.selectedValues),this.updateSearchVisibility(),this.updateSelectionDisplay(),this.updateMobileSelectedState()}),this.Hn.observe(this,{childList:!0}),this.ensureOptionRoles(),this.F()}F(){this.j=k(this.shadowRoot,this.j,this.getProperty("flavor"),({base:t})=>(t=>de(t,"neutral"))(t))}onDisconnect(){this.shadowRoot.querySelectorAll("dialog").forEach(t=>{t.open&&t.close()}),this.Fn&&(document.removeEventListener("keydown",this.Fn),this.Fn=null),null!==this.In&&(clearTimeout(this.In),this.In=null),this.Bn(),this.Hn&&(this.Hn.disconnect(),this.Hn=null)}onPropertiesChanged(t){for(const{name:n,newValue:e}of t)switch(n){case"value":const t=this.parseValue(e);this.qn.selectedValues=t,this.isConnected&&this.shadowRoot&&(this.syncSelectedTags(t),this.updateSelectionDisplay(),this.updateMobileSelectedState());break;case"name":this.pn=e||"";break;case"flavor":this.F();break;case"multiple":this.bn=e,!e&&this.qn.selectedValues.length>1&&this.updateComponentValue([this.qn.selectedValues[0]],!1,"set",null);break;case"compact":this.vn=e;break;case"placeholder":this.mn=e||"Select...",this.isConnected&&this.shadowRoot&&this.updateSelectionDisplay();break;case"label":this.gn=e||"";break;case"disabled":this.P=e;break;case"readonly":this.yn=e;break;case"required":this.fn=e;break;case"noClear":this.wn=!e,this.isConnected&&this.shadowRoot&&this.updateSelectionDisplay();break;case"externalSearch":this.xn=e;break;case"notSearchable":this.$n=e,this.isConnected&&this.shadowRoot&&this.updateSearchVisibility();break;case"allowCreate":this.kn=e,this.isConnected&&this.shadowRoot&&this.updateSearchVisibility();break;case"createTransform":this.zn=e;break;case"size":this.Mn=e;break;case"debounce":this.Vn=e;break;case"available-label":this.Sn=e||"Available";break;case"selected-label":this.Tn=e||"Selected";break;case"no-options-message":this._n=e||"No options available";break;case"loading":this.Cn=e,this.applyLoadingState()}}applyLoadingState(){const t=this.shadowRoot;if(!t)return;const n=this.Cn?C():null;t.querySelectorAll(".dropdown-options-wrapper").forEach(t=>{if(t.classList.toggle("loading",this.Cn),this.Cn){t.setAttribute("aria-busy","true");const e=t.querySelector(".dropdown-loading-spinner");e&&n&&(e.innerHTML=n)}else t.removeAttribute("aria-busy")})}getFormValue(){const t=this.qn.selectedValues;if(this.pn&&t.length>0){if(!this.bn)return t[0];const n=new FormData;return t.forEach(t=>{n.append(this.pn,t)}),n}return this.pn&&!this.bn?"":null}focus(t){const n=this.querySelector(':scope > [slot="trigger"]'),e=this.shadowRoot?.querySelector(".select-stub"),i=n??e;i?i.focus(t):super.focus(t)}parseValue(t){return t&&"string"==typeof t&&""!==t.trim()?t.split(",").map(t=>t.trim()).filter(t=>""!==t):[]}initializeState(){const t=this.getProperty("value")||"";if(t){const n=this.parseValue(t);this.qn.selectedValues=n,this.syncSelectedTags(n),this.updateSelectionDisplay(),this.updateMobileSelectedState()}else this.resolveDeclarativeSelection()}resolveDeclarativeSelection(){if(this.getAttribute("value")||this.qn.selectedValues.length>0)return;const t=this.getTagElements().filter(t=>t.hasAttribute("selected")).map(t=>this.getTagData(t).value);t.length>0?this.updateComponentValue(t,!1):"loading"===document.readyState&&document.addEventListener("DOMContentLoaded",()=>{this.isConnected&&this.resolveDeclarativeSelection()},{once:!0})}getTagElements(){return Array.from(this.querySelectorAll("ty-option:not([cloned]), ty-tag:not([cloned])"))}getTagData(t){return{value:t.value||t.getAttribute("value")||t.textContent||"",text:t.getAttribute("label")||t.textContent||"",element:t}}selectTag(t){t.setAttribute("selected","")}deselectTag(t){t.removeAttribute("selected")}getSelectedValues(){return[...this.qn.selectedValues]}syncSelectedTags(t){const n=new Set(t);this.getTagElements().forEach(t=>{const e=this.getTagData(t).value,i=n.has(e),o=t.hasAttribute("selected");i&&!o?this.selectTag(t):!i&&o&&this.deselectTag(t),t.setAttribute("aria-selected",i+"")})}ensureOptionRoles(){this.getTagElements().forEach(t=>{t.hasAttribute("role")||t.setAttribute("role","option"),t.hasAttribute("aria-selected")||t.setAttribute("aria-selected","false")})}updateComponentValue(t,n=!1,e="set",i=null){const o=this.getSelectedValues(),r=t.join(",");JSON.stringify(t.sort())!==JSON.stringify(o.sort())&&(this.setProperty("value",r),this.updateValidity(),n&&this.dispatchChangeEvent({value:this.bn?[...t]:t[0]??null,values:t,items:this.getSelectedItems(t),action:e,item:i}))}getSelectedItems(t){const n=new Map(this.getTagElements().map(t=>[this.getTagData(t).value,t]));return t.map(t=>{const e=n.get(t);return{value:t,label:e?.getAttribute("label")||e?.textContent?.trim()||t,flavor:e?.getAttribute("flavor")??null}})}calculatePosition(){const t=this.shadowRoot,n=t.querySelector(".select-stub"),e=t.querySelector(".dropdown-dialog");if(!n||!e)return;const i=n.getBoundingClientRect(),o=e.getBoundingClientRect(),r=Math.min(o.height||200,440),s=parseFloat(getComputedStyle(this).getPropertyValue("--ty-select-popup-width")),a=isNaN(s)?Math.max(i.width,320):s,l=this.getProperty("placement"),c=l?Gt(l):{side:"auto",align:this.getProperty("align")},d=nn({anchorRect:i,popupWidth:a,popupHeight:r,align:c.align,side:c.side,gap:8}),h=d.below,u=(h?d.topY:d.bottomY)-20,p=a+20+20;this.style.setProperty("--dropdown-x",d.x-20+"px"),this.style.setProperty("--dropdown-y",u+"px"),this.style.setProperty("--dropdown-width",p+"px"),this.style.setProperty("--dropdown-offset-x","0px"),this.style.setProperty("--dropdown-offset-y","0px"),this.style.setProperty("--dropdown-padding","20px"),h?(e.classList.add("position-below"),e.classList.remove("position-above")):(e.classList.add("position-above"),e.classList.remove("position-below")),this.style.setProperty("--dropdown-direction",h?"below":"above")}Pn(){if(!Nt())return;const t=this.shadowRoot,n=t.querySelector(".dropdown-options"),e=t.querySelector(".dropdown-options-wrapper");n&&e&&(this.Bn(),n.classList.add("ty-custom-scroll"),this.On=new Bt(n,{vertical:!0}),this.On.trackY&&e.appendChild(this.On.trackY))}Bn(){this.On&&(this.On.trackY?.remove(),this.On.destroy(),this.On=null)}openDropdown(){const t=this.shadowRoot,n=t.querySelector(".dropdown-dialog");if(!n)return;const e=t.querySelector(".select-stub");e&&e.setAttribute("aria-expanded","true");const i=`select-${this.id||"anon"}-${ve(this)}`;this.En=i,Sn(i),n.showModal(),this.calculatePosition(),n.classList.add("open"),this.qn.open=!0;const o=t.querySelector(".dropdown-chevron");o&&o.classList.add("open");const r=t.querySelector(".dropdown-search-chevron");r&&r.classList.add("open");const s=this.getTagElements().map(t=>this.getTagData(t));this.qn.filteredTags=s,this.qn.highlightedIndex=-1,this.updateOptionsVisibility(!0),this.Pn();const a=t.querySelector(".dropdown-search-input");a&&this.shouldShowSearch()&&setTimeout(()=>a.focus(),100),this.fireOpenEvent()}closeDropdown(){const t=this.shadowRoot,n=t.querySelector(".dropdown-dialog");if(!n)return;const e=t.querySelector(".select-stub");e&&e.setAttribute("aria-expanded","false"),this.Bn(),n.classList.remove("open"),n.classList.remove("position-above"),n.classList.remove("position-below"),n.close(),this.En&&(Tn(this.En),this.En=null),this.qn.open=!1,this.qn.highlightedIndex=-1;const i=t.querySelector(".dropdown-chevron");i&&i.classList.remove("open");const o=t.querySelector(".dropdown-search-chevron");o&&o.classList.remove("open");const r=""!==this.qn.search;this.qn.search="";const s=t.querySelector(".dropdown-search-input");if(s&&(s.value=""),this.xn)r&&(null!==this.In&&(clearTimeout(this.In),this.In=null),this.fireSearchEvent(""));else{const t=this.getTagElements().map(t=>this.getTagData(t));this.qn.filteredTags=t,this.updateTagVisibility(t,t),this.clearHighlights(t)}this.fireCloseEvent()}openMobileModal(){const t=this.shadowRoot,n=t.querySelector(".mobile-dialog");if(!n)return;const e=t.querySelector(".select-stub");e&&e.setAttribute("aria-expanded","true");const i=`select-${this.id||"anon"}-${ve(this)}`;this.En=i,Sn(i),n.showModal(),n.getBoundingClientRect(),n.classList.add("open"),this.qn.open=!0;const o=this.getTagElements().map(t=>this.getTagData(t));this.qn.filteredTags=o,this.updateTagVisibility(o,o),requestAnimationFrame(()=>{this.updateMobileSelectedState()}),this.fireOpenEvent()}closeMobileModal(){const t=this.shadowRoot,n=t.querySelector(".mobile-dialog");if(!n)return;const e=t.querySelector(".select-stub");e&&e.setAttribute("aria-expanded","false"),n.classList.remove("open"),n.close(),this.En&&(Tn(this.En),this.En=null),this.qn.open=!1,this.qn.highlightedIndex=-1;const i=""!==this.qn.search;this.qn.search="";const o=t.querySelector(".mobile-search-input");o&&(o.value=""),this.xn?i&&(null!==this.In&&(clearTimeout(this.In),this.In=null),this.fireSearchEvent("")):this.getTagElements().forEach(t=>t.removeAttribute("hidden")),this.fireCloseEvent()}handleStubClick(t){t.preventDefault(),t.stopPropagation(),this.P||this.yn||this.openDropdown()}handleClearClick(t){t.preventDefault(),t.stopPropagation(),this.P||this.yn||this.clear()}handleStubKeydown(t){this.P||this.yn||this.qn.open||"Enter"!==t.key&&" "!==t.key&&"ArrowDown"!==t.key||(t.preventDefault(),this.openDropdown())}handleTagClick(t){const n=t.target.closest("ty-option, ty-tag");n&&!n.hasAttribute("disabled")&&(t.preventDefault(),t.stopPropagation(),this.selectByTag(n))}selectByTag(t){const n=this.getTagData(t).value,e=this.getSelectedValues();if(!this.bn)return this.updateComponentValue([n],!0,"set",n),void("mobile"===this.qn.mode?this.closeMobileModal():this.closeDropdown());if(e.includes(n)){const t=e.filter(t=>t!==n);this.updateComponentValue(t,!0,"remove",n)}else this.updateComponentValue([...e,n],!0,"add",n)}tryCreateFromSearch(){if(!this.kn)return!1;const t=(this.qn.search||"").trim();if(!t)return!1;const n=t.toLowerCase(),e=this.getTagElements().map(t=>this.getTagData(t)).find(t=>t.value.toLowerCase()===n||t.text.toLowerCase()===n);if(e)return this.selectByTag(e.element),!0;const i=t,o="slug"===this.zn?i.trim().toLowerCase().replace(/\s+/g,"_").replace(/[^a-z0-9_]/g,"").replace(/_+/g,"_").replace(/^_|_$/g,""):i;if(!o)return!0;const r={value:o,label:i},s=new CustomEvent("create",{detail:r,bubbles:!0,composed:!0,cancelable:!0});if(this.dispatchEvent(s),s.defaultPrevented)return!0;const a=r.value,l=document.createElement("ty-option");if(l.setAttribute("value",a),l.textContent=i,this.appendChild(l),!this.bn)return this.updateComponentValue([a],!0,"create",a),"mobile"===this.qn.mode?this.closeMobileModal():this.closeDropdown(),!0;const c=this.getSelectedValues();return this.updateComponentValue([...c,a],!0,"create",a),this.clearSearchAfterCreate(),!0}clearSearchAfterCreate(){this.qn.search="",this.qn.highlightedIndex=-1;const t=this.shadowRoot;if(!t)return;const n=t.querySelector(".dropdown-search-input"),e=t.querySelector(".mobile-search-input");n&&(n.value=""),e&&(e.value="");const i=this.getTagElements().map(t=>this.getTagData(t));this.qn.filteredTags=i,this.updateTagVisibility(i,i),this.updateOptionsVisibility(!0),this.clearHighlights(i),this.updateMobileSelectedState(),(n??e)?.focus()}blockSearchClick(t){t.stopPropagation(),t.preventDefault()}handleSearchInput(t){"mobile"===this.qn.mode&&this.expandMobileSection("available");const n=t.target.value;if(this.qn.search=n,this.xn)return void this.dispatchSearchEvent(n);const e=this.getTagElements().map(t=>this.getTagData(t)),i=this.filterTags(e,n);this.qn.filteredTags=i,this.qn.highlightedIndex=-1,this.updateTagVisibility(i,e),this.updateOptionsVisibility(i.length>0),this.updateMobileSelectedState(),this.clearHighlights(e)}handleKeyboard(t){if(!this.qn.open)return;const n=this.shadowRoot.querySelector(".dropdown-search-input");if(t.target!==n&&document.activeElement===n)return;const e=this.qn.filteredTags,i=e.length,o=this.qn.highlightedIndex;switch(t.key){case"Escape":t.preventDefault(),t.stopPropagation(),"mobile"===this.qn.mode?this.closeMobileModal():this.closeDropdown();break;case"Enter":t.preventDefault(),t.stopPropagation(),o>=0&&i>o?this.selectByTag(e[o].element):this.tryCreateFromSearch();break;case"ArrowUp":t.preventDefault(),t.stopPropagation();const n=this.nextEnabledTagIndex(e,o,-1);this.qn.highlightedIndex=n,this.highlightTag(e,n);break;case"ArrowDown":t.preventDefault(),t.stopPropagation();const r=this.nextEnabledTagIndex(e,o,1);this.qn.highlightedIndex=r,this.highlightTag(e,r)}}nextEnabledTagIndex(t,n,e){const i=t.length;if(0===i)return-1;let o=-1===n?1===e?0:i-1:(n+e+i)%i;for(let r=0;i>r;r++){if(!t[o].element.hasAttribute("disabled"))return o;o=(o+e+i)%i}return-1}filterTags(t,n){if(!n||""===n.trim())return t;const e=n.toLowerCase();return t.filter(({text:t})=>t.toLowerCase().includes(e))}updateTagVisibility(t,n){const e=new Set(t.map(t=>t.value));n.forEach(({value:t,element:n})=>{e.has(t)?n.removeAttribute("hidden"):n.setAttribute("hidden","")})}updateOptionsVisibility(t){const n=this.shadowRoot.querySelector(".dropdown-options");n&&(n.style.display=t?"":"none")}clearHighlights(t){t.forEach(({element:t})=>{t.removeAttribute("highlighted")})}highlightTag(t,n){if(this.clearHighlights(t),n>=0&&t.length>n){const{element:e}=t[n];e.setAttribute("highlighted",""),e.scrollIntoView({behavior:"smooth",block:"nearest",inline:"nearest"})}}dispatchSearchEvent(t){null!==this.In&&(clearTimeout(this.In),this.In=null),this.Vn>0?this.In=window.setTimeout(()=>{this.fireSearchEvent(t),this.In=null},this.Vn):this.fireSearchEvent(t)}fireSearchEvent(t){this.dispatchEvent(new CustomEvent("search",{detail:{query:t,element:this},bubbles:!0,composed:!0}))}fireOpenEvent(){this.dispatchEvent(new CustomEvent("open",{detail:{mode:this.qn.mode,element:this}})),this.xn&&this.fireSearchEvent("")}fireCloseEvent(){this.dispatchEvent(new CustomEvent("close",{detail:{mode:this.qn.mode,element:this}}))}dispatchChangeEvent(t){this.dispatchEvent(new CustomEvent("change",{detail:t,bubbles:!0,cancelable:!0}))}render(){this.qn.mode=ue()?"mobile":"desktop","mobile"===this.qn.mode?this.renderMobile():this.renderDesktop(),this.updateSearchVisibility(),this.applyLoadingState(),this.syncFieldChrome(),this.updateValidity()}syncFieldChrome(){const t=this.shadowRoot,n=t?.querySelector(".select-container");if(!t||!n)return;const e="select-label-"+ve(this);let i=n.querySelector(":scope > .ty-field-label");this.gn?(i||(i=document.createElement("label"),i.className="ty-field-label",i.id=e,n.prepend(i)),i.innerHTML=`${this.gn}${this.fn?`<span class="required-icon">${lt}</span>`:""}`):i?.remove();const o=t.querySelector(".select-stub");o&&(o.classList.toggle("disabled",this.P),o.classList.toggle("compact",this.vn),o.tabIndex=this.P?-1:0,o.toggleAttribute("disabled",this.P),this.P?o.setAttribute("aria-disabled","true"):o.removeAttribute("aria-disabled"),this.gn?o.setAttribute("aria-labelledby",e):o.removeAttribute("aria-labelledby")),t.querySelectorAll(".dropdown-search-input, .mobile-search-input").forEach(t=>t.disabled=this.P)}updateValidity(){if(this.disabled)this.applyValidity({});else if(this.required&&0===this.getSelectedValues().length){const t=this.shadowRoot?.querySelector(".select-stub");this.applyValidity({valueMissing:!0},"Please select a value",t??void 0)}else this.applyValidity({})}setupTriggerSlot(){const t=this.shadowRoot,n=t.querySelector(".select-stub"),e=t.querySelector('slot[name="trigger"]');if(!n||!e)return;const i=()=>{const t=e.assignedElements().length>0;n.classList.toggle("custom-trigger",t),this.toggleAttribute("has-trigger",t)};e.addEventListener("slotchange",i),i()}setupEventListeners(){const t=this.shadowRoot,n=t.querySelector(".select-stub"),e=t.querySelector("#options-slot"),i=t.querySelector(".dropdown-search-input");n&&(this.Dn=this.handleStubClick.bind(this),n.addEventListener("click",this.Dn),n.addEventListener("keydown",this.handleStubKeydown.bind(this)));const o=t.querySelector(".select-clear");o?.addEventListener("click",this.handleClearClick.bind(this)),this.setupTriggerSlot(),e&&(this.An=this.handleTagClick.bind(this),e.addEventListener("click",this.An)),i&&(this.Ln=this.handleSearchInput.bind(this),this.jn=this.blockSearchClick.bind(this),i.addEventListener("input",this.Ln),i.addEventListener("click",this.jn));const r=t.querySelector(".dropdown-dialog");r&&r.addEventListener("click",t=>{t.target===r&&this.closeDropdown()}),this.Fn=this.handleKeyboard.bind(this),document.addEventListener("keydown",this.Fn)}buildStubClasses(){const t=[];return this.P&&t.push("disabled"),this.vn&&t.push("compact"),t.join(" ")}renderDesktop(){const t=this.shadowRoot;if(!t.querySelector(".select-container")){const n=this.buildStubClasses(),e="select-listbox-"+ve(this),i="select-label-"+ve(this);t.innerHTML=`\n<div class="select-container dropdown-mode-desktop">\n${this.gn?`\n<label class="ty-field-label" id="${i}">\n${this.gn}\n${this.fn?`<span class="required-icon">${lt}</span>`:""}\n</label>\n`:""}\n<div class="dropdown-wrapper">\n<div class="dropdown-stub select-stub ${n}"\nrole="combobox"\naria-haspopup="listbox"\naria-expanded="false"\naria-controls="${e}"\n${this.gn?`aria-labelledby="${i}"`:""}\ntabindex="${this.P?"-1":"0"}"\n${this.P?'disabled aria-disabled="true"':""}>\n<slot name="trigger">\n<slot name="start"></slot>\n<slot name="selected"></slot>\n<span class="dropdown-placeholder">${this.mn}</span>\n<span class="select-count" hidden></span>\n<slot name="end"></slot>\n<button class="select-clear" type="button" aria-label="Clear selection" hidden>\n${ye}\n</button>\n<div class="dropdown-chevron">\n${me}\n</div>\n</slot>\n</div>\n<dialog class="dropdown-dialog">\n<div class="dropdown-header">\n<div class="dropdown-search-icon" aria-hidden="true">\n${ge}\n</div>\n<input\nclass="dropdown-search-input"\ntype="text"\nplaceholder="Search..."\n${this.P?"disabled":""}\n/>\n<div class="dropdown-search-chevron">\n${me}\n</div>\n</div>\n<div class="dropdown-options-wrapper">\n<div class="dropdown-options" id="${e}" role="listbox" ${this.bn?'aria-multiselectable="true"':""}>\n<slot id="options-slot"></slot>\n</div>\n<div class="dropdown-loading" aria-hidden="true">\n<slot name="loading">\n<span class="dropdown-loading-spinner"></span>\n<span class="dropdown-loading-text">Searching…</span>\n</slot>\n</div>\n</div>\n</dialog>\n</div>\n</div>\n`,this.setupEventListeners()}this.updateSelectionDisplay()}renderMobile(){const t=this.shadowRoot;if(!t.querySelector(".select-container")){const n=this.buildStubClasses(),e="select-listbox-"+ve(this),i="select-label-"+ve(this);t.innerHTML=`\n<div class="select-container dropdown-mode-mobile">\n${this.gn?`\n<label class="ty-field-label" id="${i}">\n${this.gn}\n${this.fn?`<span class="required-icon">${lt}</span>`:""}\n</label>\n`:""}\n<div class="dropdown-wrapper">\n<div class="dropdown-stub select-stub ${n}"\nrole="combobox"\naria-haspopup="listbox"\naria-expanded="false"\naria-controls="${e}"\n${this.gn?`aria-labelledby="${i}"`:""}\ntabindex="${this.P?"-1":"0"}"\n${this.P?'disabled aria-disabled="true"':""}>\n<slot name="trigger">\n<slot name="start"></slot>\n<slot name="selected"></slot>\n<span class="dropdown-placeholder">${this.mn}</span>\n<span class="select-count" hidden></span>\n<slot name="end"></slot>\n<button class="select-clear" type="button" aria-label="Clear selection" hidden>\n${ye}\n</button>\n<div class="dropdown-chevron">\n${me}\n</div>\n</slot>\n</div>\n<dialog class="mobile-dialog">\n<div class="mobile-dialog-content">\n\x3c!-- HEADER (matches dropdown.ts) --\x3e\n\n<div class="mobile-search-header">\n${this.gn?`<span class="mobile-header-label">${this.gn}</span>`:""}\n<div class="mobile-header-content">\n<div class="dropdown-search-icon" aria-hidden="true">\n${ge}\n</div>\n<input\nclass="mobile-search-input"\ntype="text"\nplaceholder="${this.gn?`Search ${this.gn}...`:"Search..."}"\nautofocus\n${this.P?"disabled":""}\n/>\n<button class="mobile-close-button" type="button" aria-label="Close">\n<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">\n<line x1="18" y1="6" x2="6" y2="18"></line>\n<line x1="6" y1="6" x2="18" y2="18"></line>\n</svg>\n</button>\n</div>\n</div>\n\n\x3c!-- BODY: options list with toggleable selected state --\x3e\n<div class="mobile-body" data-expanded="available">\n\x3c!-- SELECTED STRIP (pinned above the list, collapses when empty) --\x3e\n<div class="mobile-selected-section" data-empty="true">\n<button class="section-header" type="button" data-section="selected" aria-expanded="false">\n<span class="section-title">${this.Tn} <span class="section-count">(0)</span></span>\n${me}\n</button>\n<div class="section-content mobile-selected-chips"></div>\n</div>\n\x3c!-- AVAILABLE LIST (always visible, takes remaining space) --\x3e\n<div class="mobile-available-section" data-empty="false">\n<button class="section-header" type="button" data-section="available" aria-expanded="true">\n<span class="section-title">${this.Sn} <span class="section-count"></span></span>\n${me}\n</button>\n<div class="section-content dropdown-options-wrapper" id="${e}" role="listbox" ${this.bn?'aria-multiselectable="true"':""}>\n<slot id="options-slot"></slot>\n<div class="empty-state">${this._n}</div>\n<div class="dropdown-loading" aria-hidden="true">\n<slot name="loading">\n<span class="dropdown-loading-spinner"></span>\n<span class="dropdown-loading-text">Searching…</span>\n</slot>\n</div>\n</div>\n</div>\n</div>\n</div>\n</dialog>\n</div>\n</div>\n`,this.setupMobileEventListeners()}this.updateSelectionDisplay()}setupMobileEventListeners(){this.Fn||(this.Fn=this.handleKeyboard.bind(this),document.addEventListener("keydown",this.Fn));const t=this.shadowRoot,n=t.querySelector(".select-stub"),e=t.querySelector("#options-slot"),i=t.querySelector(".mobile-search-input"),o=t.querySelector(".mobile-close-button"),r=t.querySelector(".mobile-dialog");n&&(n.addEventListener("click",t=>this.handleMobileStubClick(t)),n.addEventListener("keydown",t=>this.handleMobileStubKeydown(t)));const s=t.querySelector(".select-clear");s?.addEventListener("click",this.handleClearClick.bind(this)),this.setupTriggerSlot(),e&&e.addEventListener("click",t=>this.handleMobileTagClick(t)),i&&i.addEventListener("input",t=>this.handleSearchInput(t)),t.querySelectorAll(".mobile-body .section-header").forEach(t=>{t.addEventListener("click",()=>this.expandMobileSection("selected"===t.dataset.section?"selected":"available"))}),o&&o.addEventListener("click",()=>this.closeMobileModal()),r&&(r.addEventListener("click",t=>{t.target===r&&this.closeMobileModal()}),r.addEventListener("cancel",t=>{t.preventDefault(),this.closeMobileModal()}))}handleMobileStubClick(t){t.preventDefault(),t.stopPropagation(),this.P||this.yn||this.openMobileModal()}handleMobileStubKeydown(t){this.P||this.yn||this.qn.open||"Enter"!==t.key&&" "!==t.key&&"ArrowDown"!==t.key||(t.preventDefault(),this.openMobileModal())}handleMobileTagClick(t){this.handleTagClick(t)}updateMobileSelectedState(){if("mobile"!==this.qn.mode)return;const t=this.shadowRoot;this.renderMobileSelectedChips();const n=t.querySelector(".mobile-available-section");if(n){const t=this.getTagElements().filter(t=>!t.hasAttribute("hidden")&&!t.hasAttribute("selected")).length;n.setAttribute("data-empty",(0===t)+""),this.setMobileSectionTitle(n,this.Sn,t)}}setMobileSectionTitle(t,n,e){const i=t.querySelector(".section-title");if(!i)return;const o=document.createElement("span");o.className="section-count",o.textContent=`(${e})`,i.replaceChildren(n+" ",o)}expandMobileSection(t){const n=this.shadowRoot,e=n?.querySelector(".mobile-body");e&&("selected"===t&&0===this.qn.selectedValues.length||(e.dataset.expanded=t,n.querySelectorAll(".mobile-body .section-header").forEach(n=>{n.setAttribute("aria-expanded",(n.dataset.section===t)+"")})))}renderMobileSelectedChips(){const t=this.shadowRoot,n=t.querySelector(".mobile-selected-section"),e=t.querySelector(".mobile-selected-chips");if(!n||!e)return;const i=this.qn.selectedValues;n.setAttribute("data-empty",(0===i.length)+""),this.setMobileSectionTitle(n,this.Tn,i.length),0===i.length&&this.expandMobileSection("available");const o=t=>{const n=this.getTagElements().find(n=>this.getTagData(n).value===t);return n?this.getTagData(n).text:t};e.textContent="";for(const r of i){const t=document.createElement("button");t.type="button",t.className="mobile-selected-chip",t.dataset.value=r,t.setAttribute("aria-label","Remove "+o(r)),t.innerHTML='<span class="chip-label"></span>'+ye,t.querySelector(".chip-label").textContent=o(r),t.addEventListener("click",t=>{t.preventDefault(),t.stopPropagation(),this.deselectValue(r)}),e.appendChild(t)}}shouldShowSearch(){return!!this.xn||!!this.kn||!this.$n&&this.getTagElements().length>7}updateSearchVisibility(){const t=this.shadowRoot;if(!t)return;const n=this.shouldShowSearch(),e=t.querySelector(".dropdown-header");e&&(e.hidden=!n);const i=t.querySelector(".mobile-search-input");i&&(i.hidden=!n);const o=t.querySelector(".mobile-header-content .dropdown-search-icon");o&&(o.hidden=!n)}updateSelectionDisplay(){const t=this.shadowRoot.querySelector(".select-stub");if(!t)return;const n=this.qn.selectedValues,e=n.length;t.classList.toggle("has-selection",e>0),t.classList.toggle("compact",this.vn);const i=t.querySelector(".select-count");i&&(i.textContent=e+"",i.hidden=0===e||!this.bn||!this.vn);const o=t.querySelector(".select-clear");o&&(o.hidden=!(e>0&&this.wn&&!this.P&&!this.yn));const r=!this.bn&&e>0?n[0]:null;this.syncSelectedClone(r);const s=null!==this.Nn;t.classList.toggle("has-clone",s);const a=t.querySelector(".dropdown-placeholder");a&&(a.hidden=s,e>0&&this.bn&&!this.vn?(a.textContent=this.getSelectedItems(n).map(t=>t.label).join(", "),a.classList.remove("placeholder-shown")):null!==r?(a.textContent=n.join(", "),a.classList.remove("placeholder-shown")):(a.textContent=this.mn,a.classList.add("placeholder-shown")))}syncSelectedClone(t){const n=this.querySelector(':scope > [cloned][slot="selected"]');if(n?.getAttribute("value")===t&&(null===t||0!==n.childNodes.length||0>=(this.getTagElements().find(n=>this.getTagData(n).value===t)?.childNodes.length??0)))return void(this.Nn=n);if(n?.remove(),null===t)return void(this.Nn=null);const e=this.getTagElements().find(n=>this.getTagData(n).value===t);if(e){const t=e.cloneNode(!0);t.removeAttribute("selected"),t.setAttribute("slot","selected"),t.setAttribute("cloned","true"),this.appendChild(t),this.Nn=t,0===e.childNodes.length&&"loading"===document.readyState&&document.addEventListener("DOMContentLoaded",()=>{this.isConnected&&this.updateSelectionDisplay()},{once:!0})}else if(this.Nn?.getAttribute("value")===t){const t=this.Nn.cloneNode(!0);this.appendChild(t),this.Nn=t}}deselectValue(t){const n=this.getSelectedValues();n.includes(t)&&this.updateComponentValue(n.filter(n=>n!==t),!0,"remove",t)}clear(){this.updateComponentValue([],!0,"clear",null)}get value(){return this.getSelectedValues().join(",")}set value(t){this.setProperty("value",t)}get name(){return this.getProperty("name")}set name(t){this.setProperty("name",t)}get multiple(){return this.getProperty("multiple")}set multiple(t){this.setProperty("multiple",t)}get compact(){return this.getProperty("compact")}set compact(t){this.setProperty("compact",t)}get placeholder(){return this.getProperty("placeholder")}set placeholder(t){this.setProperty("placeholder",t)}get label(){return this.getProperty("label")}set label(t){this.setProperty("label",t)}get disabled(){return this.getProperty("disabled")}set disabled(t){this.setProperty("disabled",t)}get loading(){return this.getProperty("loading")}set loading(t){this.setProperty("loading",t)}get readonly(){return this.getProperty("readonly")}set readonly(t){this.setProperty("readonly",t)}get noClear(){return this.getProperty("noClear")}set noClear(t){this.setProperty("noClear",t)}get required(){return this.getProperty("required")}set required(t){this.setProperty("required",t)}get notSearchable(){return this.getProperty("notSearchable")}set notSearchable(t){this.setProperty("notSearchable",t)}get externalSearch(){return this.getProperty("externalSearch")}set externalSearch(t){this.setProperty("externalSearch",t)}get debounce(){return this.getProperty("debounce")}set debounce(t){this.setProperty("debounce","string"==typeof t?parseInt(t,10):t)}get size(){return this.getProperty("size")}set size(t){this.setProperty("size",t)}get align(){return this.getProperty("align")}set align(t){this.setProperty("align",t)}get placement(){return this.getProperty("placement")}set placement(t){this.setProperty("placement",t)}get flavor(){return this.getProperty("flavor")}set flavor(t){this.setProperty("flavor",t)}get form(){return this.$.form}};fe.properties={value:{type:"string",visual:!0,formValue:!0,emitChange:!1,default:"",coerce:t=>Array.isArray(t)?t.join(","):null==t?"":t+""},name:{type:"string",default:""},multiple:{type:"boolean",visual:!0,default:!1},compact:{type:"boolean",visual:!0,default:!1},placeholder:{type:"string",visual:!0,default:"Select..."},label:{type:"string",visual:!0,default:""},disabled:{type:"boolean",visual:!0,default:!1},readonly:{type:"boolean",visual:!0,default:!1},required:{type:"boolean",visual:!0,default:!1},noClear:{type:"boolean",visual:!0,default:!1},externalSearch:{type:"boolean",visual:!0,default:!1,aliases:{"external-search":!0}},allowCreate:{type:"boolean",visual:!0,default:!1,aliases:{"allow-create":!0}},createTransform:{type:"string",visual:!1,default:"none",aliases:{"create-transform":!0},coerce:t=>"slug"===t?"slug":"none"},notSearchable:{type:"boolean",visual:!0,default:!1},align:{type:"string",visual:!0,default:"start",validate:t=>["start","center","end"].includes(t),coerce:t=>"end"===t?"end":"center"===t?"center":"start"},placement:{type:"string",visual:!0,default:""},size:{type:"string",visual:!0,default:e,validate:t=>["xs","sm","md","lg","xl"].includes(t),coerce:t=>["xs","sm","md","lg","xl"].includes(t)?t:e},debounce:{type:"number",default:0,validate:t=>t>=0&&5e3>=t,coerce:t=>{const n=+t;return isNaN(n)?0:Math.max(0,Math.min(5e3,n))}},"available-label":{type:"string",visual:!0,default:"Available"},"selected-label":{type:"string",visual:!0,default:"Selected"},"no-options-message":{type:"string",visual:!0,default:"No options available"},loading:{type:"boolean",visual:!0,default:!1},flavor:{type:"string",visual:!0,default:"neutral"}};let we=fe;function xe(t,n){return t.replace(/\{([\w-]+)\}/g,(t,e)=>n[e]??t)}customElements.get("ty-select")||customElements.define("ty-select",we);class TySelectedOptions extends HTMLElement{constructor(){super(...arguments),this.Wn=null,this.Rn=()=>this.renderChips(),this.Hn=null,this.Yn=null,this.Un=null,this.Xn=!1,this.Kn=()=>{this.Xn=!0},this.Zn=()=>{this.Xn=!1,this.renderChips()}}static get observedAttributes(){return["for"]}connectedCallback(){this.style.display||(this.style.display="contents"),this.bind(),this.renderChips(),"loading"===document.readyState&&document.addEventListener("DOMContentLoaded",()=>{this.isConnected&&this.renderChips()},{once:!0}),this.Hn=new MutationObserver(()=>{this.template()!==this.Un&&this.renderChips()}),this.Hn.observe(this,{childList:!0})}disconnectedCallback(){this.unbind(),this.Hn?.disconnect(),this.Hn=null}attributeChangedCallback(){this.isConnected&&(this.bind(),this.renderChips())}resolvePicker(){const t=this.getAttribute("for");return(t?document.getElementById(t):this.previousElementSibling)??null}bind(){const t=this.resolvePicker();t!==this.Wn&&(this.unbind(),this.Wn=t,this.Wn?.addEventListener("change",this.Rn),this.Wn?.addEventListener("open",this.Kn),this.Wn?.addEventListener("close",this.Zn),this.Wn&&(this.Yn=new MutationObserver(()=>this.renderChips()),this.Yn.observe(this.Wn,{childList:!0,subtree:!0,attributes:!0,attributeFilter:["selected"]})))}unbind(){this.Wn?.removeEventListener("change",this.Rn),this.Wn?.removeEventListener("open",this.Kn),this.Wn?.removeEventListener("close",this.Zn),this.Yn?.disconnect(),this.Yn=null,this.Wn=null,this.Xn=!1}values(){return(this.Wn?.value??"").split(",").map(t=>t.trim()).filter(Boolean)}template(){return this.querySelector(":scope > template")}option(t){return this.Wn?.querySelector(`[value="${CSS.escape(t)}"]:not([cloned])`)}context(t){const n=this.option(t),e={value:t,label:n?.getAttribute("label")||n?.textContent?.trim()||t,flavor:n?.getAttribute("flavor")??""};if(n)for(const i of Array.from(n.attributes))i.name.startsWith("data-")&&(e[i.name]=i.value);return e}templateSource(t){if(t.content.hasChildNodes())return t.content;const n=document.createDocumentFragment();return t.childNodes.forEach(t=>n.appendChild(t.cloneNode(!0))),n}stampTemplate(t,n){const e=this.context(n),i=this.templateSource(t).cloneNode(!0),o=document.createTreeWalker(i,NodeFilter.SHOW_ELEMENT|NodeFilter.SHOW_TEXT);for(let r=o.nextNode();r;r=o.nextNode())if(r.nodeType===Node.TEXT_NODE)r.textContent?.includes("{")&&(r.textContent=xe(r.textContent,e));else{const t=r;for(const n of Array.from(t.attributes)){if(!n.value.includes("{"))continue;const i=xe(n.value,e);!/^\{[\w-]+\}$/.test(n.value)||""!==i&&i!==n.value?t.setAttribute(n.name,i):t.removeAttribute(n.name)}}for(const r of Array.from(i.children))r.addEventListener("dismiss",t=>{t.stopPropagation(),this.deselect(n)});return i}defaultChip(t){const n=this.context(t),e=this.option(t),i=document.createElement("ty-tag");return i.setAttribute("value",t),i.setAttribute("dismissible","true"),n.flavor&&i.setAttribute("flavor",n.flavor),e&&!e.hasAttribute("label")&&e.hasChildNodes()?e.childNodes.forEach(t=>i.appendChild(t.cloneNode(!0))):i.textContent=n.label,i.addEventListener("dismiss",()=>this.deselect(t)),i}renderChips(){if(this.Xn)return;const t=this.template();if(this.Un=t,!this.Wn)return void this.replaceChildren(...t?[t]:[]);const n=document.createDocumentFragment();t&&n.appendChild(t);for(const e of this.values())n.appendChild(t?this.stampTemplate(t,e):this.defaultChip(e));this.replaceChildren(n)}deselect(t){if(!this.Wn)return;const n=this.Wn;"function"==typeof n.deselectValue?n.deselectValue(t):(n.value=this.values().filter(n=>n!==t).join(","),this.renderChips())}}customElements.get("ty-selected-options")||customElements.define("ty-selected-options",TySelectedOptions),customElements.get("ty-selected-tags")||customElements.define("ty-selected-tags",class extends TySelectedOptions{});const ke=new WeakMap,ze=new WeakMap,$e=new WeakMap,Ce=new WeakMap,Ee=new WeakMap;let Me=0;const Se=()=>{Me++};addEventListener("pointerdown",Se,{capture:!0,passive:!0}),addEventListener("keydown",Se,{capture:!0,passive:!0});const Te=new WeakMap;let _e=0;function qe(t){return{placement:t.getAttribute("placement")||"top",fixed:t.hasAttribute("fixed")}}function De(t){return Array.from(t.querySelectorAll(":scope > ty-tab"))}function Ae(t){return t.getAttribute("id")}function Le(t,n){return t.querySelector(`:scope > [slot='label-${n}']`)}function je(t,n){const e=Ae(n);return e&&function(t,n){return null!==Le(t,n)}(t,e)?"slot":"text"}function Fe(t){return t.hasAttribute("disabled")}function Ve(t,n){const e=t.findIndex(t=>Ae(t)===n);return 0>e?void 0:e}function Ie(t){return $e.get(t)??null}function Oe(t,n){const e=n.map(Ae).filter(t=>!!t),i=t.getAttribute("active");if(i&&e.includes(i))return i;const o=$e.get(t);return o&&e.includes(o)?o:e[0]??null}function He(t,n){t.setAttribute("active",n),Ze(t,!0)}function Ne(t,n,e){e.preventDefault(),e.stopPropagation(),He(t,n)}function Be(t){const n=ke.get(t);if(!n)return;const e=t.shadowRoot;e&&(n.tabClickHandlers.forEach((t,n)=>{const i=e.querySelector(`[data-tab-id='${n}']`);i&&i.removeEventListener("click",t)}),n.tabKeydownHandlers.forEach((t,n)=>{const i=e.querySelector(`[data-tab-id='${n}']`);i&&i.removeEventListener("keydown",t)}),n.tabClickHandlers.clear(),n.tabKeydownHandlers.clear())}function Pe(t,n,e){Be(t);const i={tabClickHandlers:new Map,tabKeydownHandlers:new Map};e.forEach(e=>{const o=Ae(e);if(!o)return;const r=n.querySelector(`[data-tab-id='${o}']`);if(r){const e=n=>Ne(t,o,n),s=e=>function(t,n,e,i){if(!["ArrowRight","ArrowLeft","Home","End"].includes(i.key))return;const o=Array.from(n.querySelectorAll(".tab-buttons [data-tab-id]:not([disabled])")).map(t=>t.getAttribute("data-tab-id")),r=o.indexOf(e);if(0>r||0===o.length)return;i.preventDefault();const s="Home"===i.key?o[0]:"End"===i.key?o[o.length-1]:"ArrowRight"===i.key?o[(r+1)%o.length]:o[(r-1+o.length)%o.length];s!==e&&(Ne(t,s,i),requestAnimationFrame(()=>{n.querySelector(`.tab-buttons [data-tab-id='${s}']`)?.focus()}))}(t,n,o,e);r.addEventListener("click",e),r.addEventListener("keydown",s),i.tabClickHandlers.set(o,e),i.tabKeydownHandlers.set(o,s)}}),ke.set(t,i)}function We(t){return`translateX(${-100*t}%)`}function Re(t){if(!t)return;const n=++_e+"";t.setAttribute("data-snap",n),requestAnimationFrame(()=>requestAnimationFrame(()=>{t.getAttribute("data-snap")===n&&t.removeAttribute("data-snap")}))}function Ye(t,n,e){t.getAttribute(n)!==e&&t.setAttribute(n,e)}function Ue(t,n,e){De(t).forEach(i=>{const o=Ae(i);if(!o)return;const r=n.querySelector(`[data-tab-id='${o}']`),s=o===e;if(r){r.setAttribute("aria-selected",s+""),r.setAttribute("tabindex",s?"0":"-1"),r.setAttribute("data-active",s+"");const n=Le(t,o);n&&Ye(n,"data-active",s+"")}})}function Xe(t,n){!function(t,n){const e=t.shadowRoot;if(!e)return;let i=Ce.get(t);if(!i){i=new CSSStyleSheet,i.replaceSync(":host {} ::slotted(ty-tab) {}");const n=i.cssRules[1].style;n.setProperty("opacity","0","important"),n.setProperty("visibility","hidden","important"),n.setProperty("pointer-events","none","important"),e.adoptedStyleSheets=[...e.adoptedStyleSheets,i],Ce.set(t,i)}const o=i.cssRules[0].style;for(const r of["width","height"]){const n=t.getAttribute(r);n?o.setProperty(r,n,"important"):o.removeProperty(r)}i.cssRules[1].selectorText=n?`::slotted(ty-tab:not(#${CSS.escape(n)}))`:"::slotted(ty-tab)"}(t,n),De(t).forEach(t=>{const e=Ae(t);t.setShown?.(!!e&&e===n),e&&Ye(t,"data-active",(e===n)+"")})}function Ke(t,n,e=!1){const i=t.shadowRoot;if(!i)return;const o=i.querySelector(".marker-wrapper");if(!o)return;const r=function(t,n,e){const i=n.querySelector(`[data-tab-id='${e}']`),o=n.querySelector(".tab-buttons");return i&&o?{left:i.offsetLeft,top:i.offsetTop,width:i.offsetWidth,height:i.offsetHeight}:null}(0,i,n);if(!r)return;const s=e||!o.style.left||0===o.offsetWidth;s&&(o.style.transition="none"),o.style.left=r.left+"px",o.style.top=r.top+"px",o.style.width=r.width+"px",o.style.height=r.height+"px",s&&(o.style.transition="")}function Ze(t,n=!1){const e=t.shadowRoot;if(!e)return;const i=De(t),o=$e.get(t)??null,r=Oe(t,i),s=(r?Ve(i,r):void 0)??0,a=e.querySelector(".tabs-container");if(r===o){const t=e.querySelector(".panels-wrapper");return void(t&&t.style.transform!==We(s)&&(Re(a),t.style.transform=We(s)))}$e.set(t,r);const l=null===o,c=!n&&null!==r&&Te.get(t)===r;Te.delete(t);const d=t.getAttribute("active");l&&d&&d!==r&&Te.set(t,d);const h=!n&&(l||c||Ee.get(t)===Me);if(l?Ee.set(t,Me):c||Ee.delete(t),h&&Re(a),function(t,n){const e=t.shadowRoot?.querySelector(".panels-wrapper");e&&(e.style.transform=We(n))}(t,s),Ue(t,e,r||""),Xe(t,r),!r||l)return;if(Ke(t,r,h),ni(t,r,!h),e.querySelectorAll(".tab-overflow-item").forEach(t=>{t.setAttribute("data-active",(t.dataset.tabId===r)+"")}),i[s]?.resetScroll?.(),c)return;const u=Ve(i,o);!function(t,n,e,i,o){const r=new CustomEvent("ty-tab-change",{detail:{activeId:n,activeIndex:e,previousId:i,previousIndex:o},bubbles:!0,cancelable:!1});t.dispatchEvent(r)}(t,r,s,void 0===u?null:o,u??null),i[s]?.Jn?.(s)}function Je(t,n){const e=Ae(n);if(e&&"slot"===je(t,n)){const n=Le(t,e);return n?.textContent?.trim()||e}return n.getAttribute("label")||"Tab"}function Ge(t){t.querySelector(".tab-overflow-trigger")?.remove()}function Qe(t){const n=t.shadowRoot;if(!n)return;const e=n.querySelector(".tab-buttons"),i=n.querySelector(".tab-strip");if(!e||!i)return;if(qe(t).fixed)return Ge(n),i.classList.add("unclipped"),i.style.removeProperty("--fade-left"),void i.style.removeProperty("--fade-right");const o=i.scrollLeft;if(Ge(n),0>=i.clientWidth)return;const r=i.querySelectorAll(".tab-button"),s=r[r.length-1],a=(s?s.offsetLeft+s.offsetWidth:0)-i.clientWidth;if(i.classList.toggle("unclipped",1>=a),1>=a)return i.scrollLeft=o,void ti(i);!function(t,n,e){const i=Oe(t,e),o=document.createElement("button");o.className="tab-overflow-trigger",o.type="button",o.setAttribute("aria-label",e.length+" tabs"),o.textContent="⋯";const r=document.createElement("ty-popup");r.setAttribute("placement","bottom");const s=document.createElement("div");s.className="tab-overflow-menu",s.setAttribute("role","menu"),e.forEach(n=>{const e=Ae(n);if(!e)return;const o=document.createElement("button");o.type="button",o.className="tab-overflow-item",o.setAttribute("role","menuitem"),o.setAttribute("data-tab-id",e),o.setAttribute("data-active",(e===i)+""),o.textContent=Je(t,n),Fe(n)?o.disabled=!0:o.addEventListener("click",()=>{He(t,e),r.closePopup?.()}),s.appendChild(o)}),r.appendChild(s),o.appendChild(r),n.appendChild(o)}(t,e,De(t)),a>e.clientWidth-i.clientWidth||Ge(n),i.scrollLeft=o,ti(i)}function ti(t){const n=t.scrollWidth-t.clientWidth,e=t=>(t>1?Math.min(28,t):0)+"px";t.style.setProperty("--fade-left",e(t.scrollLeft)),t.style.setProperty("--fade-right",e(n-t.scrollLeft))}function ni(t,n,e){const i=t.shadowRoot;if(!i)return;const o=i.querySelector(".tab-strip"),r=i.querySelector(`[data-tab-id='${n}']`);if(!o||!r||0>=o.clientWidth)return;const s=Math.max(0,Math.min(r.offsetLeft+r.offsetWidth/2-o.clientWidth/2,o.scrollWidth-o.clientWidth));if(Math.round(s)!==Math.round(o.scrollLeft)){const t=window.matchMedia("(prefers-reduced-motion: reduce)").matches;o.scrollTo({left:s,behavior:e&&!t?"smooth":"auto"})}}function ei(t){const n=t.shadowRoot;if(!n)return;const{placement:e,fixed:i}=qe(t),o=De(t),r=Oe(t,o),s=r?Ve(o,r)??0:0;o.forEach(n=>n.setPanelLabel?.(Je(t,n)));const a=n.querySelector(".tabs-container"),l=n.querySelector(".tab-buttons"),c=n.querySelector(".tab-strip"),d=n.querySelector(".panels-viewport");if(b(n,{css:'\n:host {\ndisplay: block;\nwidth: 100%;\nheight: 400px;\nbox-sizing: border-box;\n}\n.tabs-container {\nwidth: 100%;\nheight: 100%;\ndisplay: flex;\nflex-direction: column;\nposition: relative;\nbox-sizing: border-box;\n}\n.tabs-container[data-placement="bottom"] {\nflex-direction: column-reverse;\n}\n.tab-buttons {\ndisplay: flex;\ngap: 0;\nflex-shrink: 0;\nposition: relative;\nbackground: transparent;\n}\n.tab-buttons::after {\ncontent: "";\nposition: absolute;\nleft: 0;\nright: 0;\nbottom: 0;\nheight: 1px;\nbackground: var(--ty-tabs-separator, var(--ty-border));\npointer-events: none;\n}\n.tabs-container[data-placement="bottom"] .tab-buttons::after {\nbottom: auto;\ntop: 0;\n}\n.tab-strip {\ndisplay: flex;\nflex: 1 1 auto;\nmin-width: 0;\nposition: relative;\nz-index: 1;\noverflow-x: auto;\nscrollbar-width: none;\n--fade-left: 0px;\n--fade-right: 0px;\n-webkit-mask-image: linear-gradient(to right,\ntransparent, black var(--fade-left),\nblack calc(100% - var(--fade-right)), transparent);\nmask-image: linear-gradient(to right,\ntransparent, black var(--fade-left),\nblack calc(100% - var(--fade-right)), transparent);\n}\n.tab-strip::-webkit-scrollbar {\ndisplay: none;\n}\n.tab-strip.unclipped {\noverflow: visible;\n-webkit-mask-image: none;\nmask-image: none;\n}\n.marker-wrapper {\nposition: absolute;\nz-index: 0;\npointer-events: none;\ntransition: left var(--ty-tabs-transition-duration, 300ms) var(--ty-tabs-transition-easing, ease-in-out),\nwidth var(--ty-tabs-transition-duration, 300ms) var(--ty-tabs-transition-easing, ease-in-out),\nheight var(--ty-tabs-transition-duration, 300ms) var(--ty-tabs-transition-easing, ease-in-out),\ntop var(--ty-tabs-transition-duration, 300ms) var(--ty-tabs-transition-easing, ease-in-out);\n}\n.default-marker {\nposition: absolute;\nbottom: 0;\nleft: 0;\nheight: 3px;\nwidth: 100%;\nbackground: var(--ty-color-primary);\npointer-events: none;\n}\n.tabs-container[data-placement="bottom"] .default-marker {\nbottom: auto;\ntop: 0;\n}\n::slotted([slot="marker"]) {\ndisplay: block;\nwidth: 100%;\nheight: 100%;\nbox-sizing: border-box;\n}\n.tab-button {\nmin-width: var(--ty-tab-min-width, 72px);\nflex-shrink: 0;\npadding: 6px 12px;\nborder: none;\nbackground: transparent;\ncursor: pointer;\nfont: inherit;\ncolor: var(--ty-text-soft);\ntransition: var(--ty-local-transition, color 200ms, background-color 200ms);\nwhite-space: nowrap;\ndisplay: inline-flex;\nalign-items: center;\njustify-content: center;\ngap: 8px;\nfont-weight: var(--ty-font-bold);\nfont-size: var(--ty-font-sm);\nposition: relative;\nz-index: 10;\n}\n.tabs-container[data-fixed] .tab-button {\nflex: 1 1 0;\nmin-width: 0;\n}\n.tabs-container[data-fixed] .tab-label {\noverflow: hidden;\ntext-overflow: ellipsis;\nwhite-space: nowrap;\n}\n.tab-button[aria-selected=true] {\ncolor: var(--ty-text-strong);\n}\n.tab-button[disabled] {\nopacity: 0.5;\ncursor: not-allowed;\npointer-events: none;\n}\n.tab-button:focus-visible {\noutline: 2px solid var(--ty-color-primary);\noutline-offset: -2px;\n}\n.tab-overflow-trigger {\nflex-shrink: 0;\nalign-self: center;\nmin-width: 36px;\nheight: 24px;\nmargin: 0 8px;\npadding: 0 10px;\nborder: 1px solid var(--ty-border);\nborder-radius: 9999px;\nbackground: transparent;\ncursor: pointer;\ncolor: var(--ty-text-soft);\nfont-size: 16px;\nline-height: 1;\ndisplay: inline-flex;\nalign-items: center;\njustify-content: center;\nposition: relative;\nz-index: 10;\ntransition: color 200ms, border-color 200ms;\n}\n.tab-overflow-trigger:hover {\ncolor: var(--ty-text-strong);\nborder-color: var(--ty-text-soft);\n}\n.tab-overflow-trigger:focus-visible {\noutline: 2px solid var(--ty-color-primary);\noutline-offset: -2px;\n}\n.tab-overflow-menu {\ndisplay: flex;\nflex-direction: column;\nmin-width: 160px;\nmax-height: 300px;\noverflow-y: auto;\npadding: var(--ty-spacing-2, 4px);\nbackground: var(--ty-surface-floating);\nborder-radius: var(--ty-radius-md);\nbox-shadow: var(--ty-shadow-md, 0 1px 3px 0 rgba(0, 0, 0, 0.1), 0 1px 2px -1px rgba(0, 0, 0, 0.1));\n}\n.tab-overflow-item {\npadding: var(--ty-spacing-2, 6px) var(--ty-spacing-3, 12px);\nborder: none;\nbackground: transparent;\ntext-align: left;\ncursor: pointer;\nborder-radius: var(--ty-radius-md);\ncolor: var(--ty-text);\nfont: inherit;\nfont-size: var(--ty-font-sm);\nwhite-space: nowrap;\n}\n.tab-overflow-item:hover {\nbackground: var(--ty-bg-neutral-soft);\ncolor: var(--ty-text-strong);\n}\n.tab-overflow-item[data-active="true"] {\ncolor: var(--ty-color-primary);\nfont-weight: var(--ty-font-bold);\n}\n.tab-overflow-item[disabled] {\nopacity: 0.5;\ncursor: not-allowed;\n}\n.panels-viewport {\nposition: relative;\nflex: 1;\noverflow: hidden;\nmin-height: 0;\n}\n.panels-wrapper {\ndisplay: flex;\nheight: 100%;\ntransition: transform var(--ty-tabs-transition-duration, 300ms) var(--ty-tabs-transition-easing, ease-in-out);\n}\n@media (prefers-reduced-motion: reduce) {\n.panels-wrapper {\ntransition-duration: 0ms !important;\n}\n.marker-wrapper {\ntransition-duration: 0ms !important;\n}\n}\n::slotted(ty-tab) {\nwidth: 100%;\nheight: 100%;\nflex-shrink: 0;\n}\n.tabs-container[data-snap] .panels-wrapper,\n.tabs-container[data-snap] ::slotted(ty-tab) {\ntransition: none;\n}\n',id:"ty-tabs"}),a&&l&&c&&d){a.setAttribute("data-placement",e),a.toggleAttribute("data-fixed",i);const s=c.scrollLeft;l.querySelector(".tab-overflow-trigger")?.remove(),c.querySelectorAll(".tab-button").forEach(t=>t.remove());const d=function(t,n,e){return n.map(n=>{const i=Ae(n);if(!i)return"";const o=je(t,n),r="text"===o?n.getAttribute("label")||"Tab":"",s=Fe(n),a=i===e;return`<button\nclass="tab-button"\nrole="tab"\ndata-tab-id="${i}"\nid="tab-${i}"\naria-selected="${a}"\ntabindex="${a?"0":"-1"}"\ndata-active="${a}"\n${s?'disabled aria-disabled="true"':""}\n>\n${"slot"===o?`<slot name="label-${i}"></slot>`:`<span class="tab-label">${r}</span>`}\n</button>`}).join("")}(t,o,r),h=document.createElement("div");h.innerHTML=d,Array.from(h.children).forEach(t=>{c.appendChild(t)}),c.scrollLeft=s,Pe(t,n,o),Ue(t,n,r||"");const u=!$e.get(t);requestAnimationFrame(()=>{const n=Ie(t);Qe(t),n&&(Ke(t,n,u),ni(t,n,!u))}),Xe(t,r)}else{n.innerHTML=`\n<div class="tabs-container" data-placement="${e}"${i?" data-fixed":""}>\n${function(t,n,e){const i=n.map(n=>{const i=Ae(n);if(!i)return"";const o=je(t,n),r="text"===o?n.getAttribute("label")||"Tab":"",s=Fe(n),a=i===e;return`<button\nclass="tab-button"\nrole="tab"\ndata-tab-id="${i}"\nid="tab-${i}"\naria-selected="${a}"\ntabindex="${a?"0":"-1"}"\ndata-active="${a}"\n${s?'disabled aria-disabled="true"':""}\n>\n${"slot"===o?`<slot name="label-${i}"></slot>`:`<span class="tab-label">${r}</span>`}\n</button>`}).join("");return`\n<div class="tab-buttons" part="buttons-container">\n<div class="tab-strip" role="tablist" part="strip">\n<div class="marker-wrapper" part="marker-wrapper">\n${o=t,null===o.querySelector(':scope > [slot="marker"]')?'<div class="default-marker"></div>':""}\n<slot name="marker"></slot>\n</div>\n${i}\n</div>\n</div>\n`;var o}(t,o,r)}\n<div class="panels-viewport" part="panels-container">\n<div class="panels-wrapper" style="transform: ${We(s)}">\n<slot></slot>\n</div>\n</div>\n</div>\n`,requestAnimationFrame(()=>{const n=Ie(t);Qe(t),n&&(Ke(t,n),ni(t,n,!1))}),Pe(t,n,o),Ue(t,n,r||"");const a=n.querySelector(".tab-strip");a?.addEventListener("scroll",()=>ti(a),{passive:!0}),Xe(t,r);const l=n.querySelector('slot[name="marker"]');if(l){const t=()=>{const t=n.querySelector(".default-marker");if(t){const n=l.assignedElements().length>0;t.style.display=n?"none":""}};l.addEventListener("slotchange",t),t()}}}class TyTabs extends HTMLElement{constructor(){super(),this.Hn=null,this.Gn=!1,this.Qn=!1,this.attachShadow({mode:"open"})}static get observedAttributes(){return["width","height","active","placement","fixed"]}get activeTab(){return $e.get(this)??null}connectedCallback(){ei(this),Ze(this),function(t){const n=ze.get(t);n&&n.disconnect();const e=new ResizeObserver(()=>{const n=Ie(t);Qe(t),n&&(Ke(t,n),ni(t,n,!1))});e.observe(t),ze.set(t,e)}(this),this.Hn=new MutationObserver(()=>this.te(!0)),this.Hn.observe(this,{childList:!0})}disconnectedCallback(){this.Hn?.disconnect(),this.Hn=null,Be(this),function(t){const n=ze.get(t);n&&(n.disconnect(),ze.delete(t))}(this)}te(t){this.Qn||(this.Qn=t),this.Gn||(this.Gn=!0,queueMicrotask(()=>{this.Gn=!1,this.isConnected&&(this.Hn?.takeRecords().length&&(this.Qn=!0),this.Qn&&(this.Qn=!1,ei(this)),Ze(this))}))}attributeChangedCallback(t,n,e){this.isConnected&&("active"===t?(n!==e&&Te.delete(this),this.te(!1)):ei(this))}}customElements.get("ty-tabs")||customElements.define("ty-tabs",TyTabs);const ii=`\n:host {\nwidth: 100%;\nheight: 100%;\ndisplay: block;\nbox-sizing: border-box;\nflex-shrink: 0;\ntransition:\nopacity var(--ty-tabs-transition-duration, 400ms) var(--ty-tabs-transition-easing, ease-in-out),\nvisibility var(--ty-tabs-transition-duration, 400ms);\n}\n@media (prefers-reduced-motion: reduce) {\n:host {\ntransition-duration: 0ms !important;\n}\n}\n.tab-wrapper {\nwidth: 100%;\nheight: 100%;\nposition: relative;\noverflow: hidden;\n}\n.tab-panel {\nwidth: 100%;\nheight: 100%;\noverflow: auto;\nbox-sizing: border-box;\n}\n.tab-loading,\n.tab-error {\ndisplay: none;\nbox-sizing: border-box;\nmin-height: 100%;\nflex-direction: column;\nalign-items: center;\njustify-content: center;\ngap: 12px;\npadding: 24px;\ntext-align: center;\n}\n.tab-panel[data-load="loading"] .tab-loading,\n.tab-panel[data-load="failed"] .tab-error {\ndisplay: flex;\n}\n.tab-panel[data-load="loading"] .tab-loading {\nanimation: ty-tab-status-in 200ms ease-out 150ms both;\n}\n@keyframes ty-tab-status-in {\nfrom { opacity: 0; }\n}\n.tab-spinner {\ndisplay: inline-flex;\nwidth: 20px;\nheight: 20px;\ncolor: var(--ty-text-soft);\nanimation: var(--ty-loader-animation, ty-tab-spin 0.7s linear infinite);\n}\n.tab-spinner svg {\nwidth: 100%;\nheight: 100%;\n}\n@keyframes ty-tab-spin {\nto { transform: rotate(360deg); }\n}\n@media (prefers-reduced-motion: reduce) {\n.tab-spinner {\nanimation-duration: 1.6s;\n}\n}\n.tab-error {\ncolor: var(--ty-text-soft);\nfont-size: 14px;\n}\n.tab-retry {\nfont: inherit;\nfont-size: 13px;\npadding: 4px 14px;\nborder: 1px solid var(--ty-border);\nborder-radius: 9999px;\nbackground: transparent;\ncolor: var(--ty-text-strong);\ncursor: pointer;\n}\n.tab-retry:hover {\nborder-color: var(--ty-text-soft);\n}\n.tab-retry:focus-visible {\noutline: 2px solid var(--ty-color-primary);\noutline-offset: 2px;\n}\n.tab-panel.ty-custom-scroll {\nscrollbar-width: none;\n-ms-overflow-style: none;\n}\n.tab-panel.ty-custom-scroll::-webkit-scrollbar {\ndisplay: none;\n}\n.tab-wrapper:hover .ty-scrollbar-track-y.has-overflow {\nopacity: 1;\n}\n${Pt}\n`,oi=new Set(["loading","error"]),ri=new Set(["template","script","style"]);class TyTab extends HTMLElement{constructor(){super(),this.ln=null,this.ne=null,this.ee=!0,this.ie="idle",this.oe=null,this.re=!1,this.attachShadow({mode:"open"})}static get observedAttributes(){return["id","label","disabled","lazy"]}connectedCallback(){this.se(),this.ln||this.hn(),this.ae()}setPanelLabel(t){this.ne=t,this.le()}setShown(t){this.ee=t,this.le()}disconnectedCallback(){this.dn(),this.re=!!this.oe?.takeRecords().length,this.oe?.disconnect(),this.oe=null}Jn(t){this.oe?.takeRecords().length&&this.ce(!1),"empty"!==this.ie&&"failed"!==this.ie||this.de(t)}loadFailed(){"loading"!==this.ie&&"empty"!==this.ie||this.he("failed")}attributeChangedCallback(t,n,e){if(this.se(),"lazy"===t)return void(this.isConnected&&this.ae());const i=this.parentElement;n!==e&&this.isConnected&&"ty-tabs"===i?.localName&&i.te?.(!0)}se(){const t=this.shadowRoot;t&&(t.querySelector(".tab-wrapper")||(b(t,{css:ii,id:"ty-tab"}),t.innerHTML='\n<div class="tab-wrapper">\n<div class="tab-panel" role="tabpanel" tabindex="0">\n<slot></slot>\n</div>\n</div>\n'),this.le())}ae(){const t=this.hasAttribute("lazy");t&&!this.oe?(this.oe=new MutationObserver(()=>this.ce(!0)),this.oe.observe(this,{childList:!0,characterData:!0,subtree:!0})):!t&&this.oe&&(this.oe.disconnect(),this.oe=null);const n=this.re;this.re=!1,this.ce(n)}ue(){for(const t of Array.from(this.childNodes)){if(t.nodeType===Node.TEXT_NODE&&t.textContent.trim())return!0;if(t.nodeType!==Node.ELEMENT_NODE)continue;const n=t;if(!oi.has(n.getAttribute("slot")??"")&&!ri.has(n.localName))return!0}return!1}ce(t){this.hasAttribute("lazy")&&!this.ue()?"idle"===this.ie&&(this.he("empty"),t&&queueMicrotask(()=>{"empty"===this.ie&&this.ee&&"ty-tabs"===this.parentElement?.localName&&this.de()})):this.he("idle")}de(t){const n=this.parentElement;void 0===t&&(t="ty-tabs"===n?.localName?Array.from(n.querySelectorAll(":scope > ty-tab")).indexOf(this):0),this.he("loading"),this.dispatchEvent(new CustomEvent("ty-tab-load",{detail:{id:this.id,index:t}}))}pe(t){t.querySelector(".tab-loading")||(t.insertAdjacentHTML("beforeend",'\n<div class="tab-loading" part="loading">\n<slot name="loading"><span class="tab-spinner" part="spinner" aria-hidden="true"></span></slot>\n</div>\n<div class="tab-error" part="error" role="alert">\n<slot name="error">Couldn\'t load.</slot>\n<button type="button" class="tab-retry" part="retry">Retry</button>\n</div>\n'),t.querySelector(".tab-retry").addEventListener("click",()=>{t.focus({preventScroll:!0}),this.de()}))}he(t){if(t===this.ie)return;this.ie=t;const n=this.shadowRoot?.querySelector(".tab-panel");n&&("loading"===t||"failed"===t?(this.pe(n),n.dataset.load=t):delete n.dataset.load,"loading"===t?(n.setAttribute("aria-busy","true"),n.querySelector(".tab-spinner").innerHTML=C()):n.removeAttribute("aria-busy"))}le(){const t=this.shadowRoot?.querySelector(".tab-panel");if(!t)return;const n=this.parentElement,e=!this.ne&&this.id&&"ty-tabs"===n?.localName?n.querySelector(`:scope > [slot="label-${CSS.escape(this.id)}"]`):null,i=this.ne||e?.textContent?.trim()||this.getAttribute("label");i?t.setAttribute("aria-label",i):t.removeAttribute("aria-label"),t.parentElement.inert=!this.ee}hn(){const t=this.shadowRoot?.querySelector(".tab-panel"),n=this.shadowRoot?.querySelector(".tab-wrapper");t&&n&&Nt()&&(t.classList.add("ty-custom-scroll"),this.ln=new Bt(t,{vertical:!0}),this.ln.trackY&&n.appendChild(this.ln.trackY))}dn(){this.ln&&(this.ln.trackY?.remove(),this.ln.destroy(),this.ln=null)}resetScroll(){this.ln?.scrollToTop(!1)}}customElements.get("ty-tab")||customElements.define("ty-tab",TyTab);const si=new WeakMap;function ai(t){return Array.from(t.querySelectorAll("ty-step"))}function li(t){return t.getAttribute("id")}function ci(t){const n=t.getAttribute("completed")||"";return n.trim()?new Set(n.split(",").map(t=>t.trim()).filter(Boolean)):new Set}function di(t,n){const e=t.findIndex(t=>li(t)===n);return 0>e?void 0:e}function hi(t,n){const e=t.getAttribute("active");return e&&void 0!==di(n,e)?e:n.length>0?li(n[0]):null}function ui(t){const n=si.get(t);if(!n)return;const e=t.shadowRoot;e&&(n.stepClickHandlers.forEach((t,n)=>{const i=e.querySelector(`[data-step-id='${n}']`);i&&(i.removeEventListener("pointerdown",t),i.removeEventListener("click",t))}),n.stepClickHandlers.clear())}function pi(t,n,e){const i=ai(t),o=ci(t);i.forEach(i=>{const r=li(i);if(!r)return;const s=n.querySelector(`[data-step-id='${r}']`),a=n.querySelector(`[data-step-id='${r}'] .step-circle`),l=r===e;s&&(s.setAttribute("aria-selected",l+""),s.setAttribute("tabindex",l?"0":"-1"),s.setAttribute("data-active",l+""));const c=vi(i,r,e,o);s?.setAttribute("data-state",c),a?.setAttribute("data-state",c);const d=t.querySelector(`[slot='indicator-${r}']`);d&&d.setAttribute("data-active",l+"")})}function bi(t,n){ai(t).forEach(t=>{const e=li(t);e&&t.setAttribute("data-active",(e===n)+"")})}function vi(t,n,e,i){const o=t.getAttribute("status");if(o&&["completed","active","pending","error"].includes(o))return o;const r=n===e,s=i.has(n);return r?"active":s?"completed":"pending"}const mi={completed:"completed",active:"current",pending:"not started",error:"has an error"};function gi(t){const n=t.shadowRoot;if(!n)return;const{width:e,height:i}=function(t){return{width:t.getAttribute("width")||"100%",height:t.getAttribute("height")||"",active:t.getAttribute("active"),completed:t.getAttribute("completed")||"",orientation:t.getAttribute("orientation")||"horizontal"}}(t),o=ai(t),r=hi(t,o),s=ci(t);o.forEach(t=>{const n=li(t);n&&(t.setAttribute("role","tabpanel"),t.setAttribute("aria-labelledby","step-"+n),t.setAttribute("tabindex","0"))}),b(n,{css:'\n:host {\ndisplay: block;\nwidth: var(--ty-wizard-width, 100%); \nbox-sizing: border-box;\n--ty-wizard-active-accent: var(--ty-color-primary);\n--ty-wizard-completed-accent: var(--ty-text-strong, var(--ty-color-neutral-strong));\n--ty-wizard-error-accent: var(--ty-color-danger);\n--ty-wizard-pending-accent: color-mix(in oklab, var(--ty-text, currentColor) 35%, transparent);\n--ty-wizard-bg: var(--ty-surface-elevated);\n--ty-wizard-border: var(--ty-border);\n--ty-wizard-radius: var(--ty-radius-lg, 12px);\n--ty-wizard-shadow: none;\n--ty-wizard-header-bg: transparent;\n--ty-wizard-header-border: var(--ty-wizard-border);\n--ty-wizard-header-padding: 14px 20px;\n--ty-wizard-progress-track: var(--ty-border);\n--ty-wizard-progress-fill: var(--ty-wizard-completed-accent);\n--ty-wizard-progress-height: 1.5px;\n--ty-wizard-transition-duration: var(--ty-transition-duration, 300ms);\n--ty-wizard-transition-easing: var(--ty-transition-easing, ease-in-out);\n--ty-wizard-circle-size: 24px;\n--ty-wizard-circle-border-width: 1.5px;\n--ty-wizard-panels-bg: transparent;\n--ty-wizard-focus-outline: var(--ty-wizard-active-accent);\n}\n.wizard-container {\ndisplay: flex;\nflex-direction: column;\nposition: relative;\nbox-sizing: border-box;\nborder-radius: var(--ty-wizard-radius);\nborder: 1px solid var(--ty-wizard-border);\nbackground: var(--ty-wizard-bg);\nbox-shadow: var(--ty-wizard-shadow);\noverflow: hidden;\n}\n.step-indicators-wrapper {\nflex-shrink: 0;\npadding: var(--ty-wizard-header-padding);\nborder-bottom: 1px solid var(--ty-wizard-header-border);\nbackground: var(--ty-wizard-header-bg);\n}\n.step-indicators {\ndisplay: flex;\nalign-items: center;\ngap: 12px;\n}\n.step-indicator {\ndisplay: flex;\nalign-items: center;\ngap: 8px;\nflex: 1 1 auto;\nmin-width: 0;\ncursor: pointer;\nbackground: transparent;\nborder: none;\npadding: 0;\nfont: inherit;\ncolor: inherit;\ntext-align: left;\noutline: none;\n}\n.step-indicator:last-child {\nflex: 0 0 auto;\n}\n.step-indicator:not(:last-child)::after {\ncontent: "";\nflex: 1 1 auto;\nmin-width: 16px;\nheight: var(--ty-wizard-progress-height);\nborder-radius: 1px;\nmargin-left: 4px;\nbackground: var(--ty-wizard-progress-track);\ntransition: background var(--ty-wizard-transition-duration) var(--ty-wizard-transition-easing);\n}\n.step-indicator[data-done="true"]:not(:last-child)::after {\nbackground: var(--ty-wizard-progress-fill);\n}\n.step-indicator[aria-disabled="true"] {\nopacity: 0.45;\ncursor: not-allowed;\npointer-events: none;\n}\n.step-indicator:focus-visible .step-circle {\noutline: 2px solid var(--ty-wizard-focus-outline);\noutline-offset: 2px;\n}\n.step-circle {\nwidth: var(--ty-wizard-circle-size);\nheight: var(--ty-wizard-circle-size);\nborder-radius: 50%;\nborder: var(--ty-wizard-circle-border-width) solid;\ndisplay: flex;\nalign-items: center;\njustify-content: center;\nbox-sizing: border-box;\nflex-shrink: 0;\nfont-size: calc(var(--ty-wizard-circle-size) * 0.46);\nfont-weight: 600;\nfont-variant-numeric: tabular-nums;\nline-height: 1;\ntransition: var(--ty-local-transition, background-color var(--ty-wizard-transition-duration) var(--ty-wizard-transition-easing), border-color var(--ty-wizard-transition-duration) var(--ty-wizard-transition-easing), color var(--ty-wizard-transition-duration) var(--ty-wizard-transition-easing));\n}\n.step-circle svg {\nwidth: 58%;\nheight: 58%;\n}\n.step-circle[data-state="completed"] {\nbackground: var(--ty-wizard-completed-accent);\nborder-color: var(--ty-wizard-completed-accent);\ncolor: oklch(\nfrom var(--ty-wizard-completed-accent)\nclamp(0, (var(--ty-solid-fg-threshold, 0.57) - l) * 1000, 1) 0 0\n);\n}\n.step-circle[data-state="active"] {\nbackground: color-mix(in oklab, var(--ty-wizard-active-accent) 12%, var(--ty-wizard-bg));\nborder-color: var(--ty-wizard-active-accent);\ncolor: color-mix(in oklab, var(--ty-wizard-active-accent) 75%, var(--ty-text-strong, currentColor));\n}\n.step-circle[data-state="pending"] {\nbackground: transparent;\nborder-color: var(--ty-wizard-pending-accent);\ncolor: var(--ty-text-soft, var(--ty-color-neutral));\n}\n.step-circle[data-state="error"] {\nbackground: color-mix(in oklab, var(--ty-wizard-error-accent) 12%, var(--ty-wizard-bg));\nborder-color: var(--ty-wizard-error-accent);\ncolor: color-mix(in oklab, var(--ty-wizard-error-accent) 75%, var(--ty-text-strong, currentColor));\n}\n.step-text {\ndisplay: flex;\nflex-direction: column;\ngap: 0;\nmin-width: 0;\n}\n.step-label {\nfont-size: var(--ty-font-sm, 14px);\nfont-weight: 500;\nline-height: 1.3;\nwhite-space: nowrap;\noverflow: hidden;\ntext-overflow: ellipsis;\ncolor: var(--ty-text-soft, var(--ty-color-neutral));\ntransition: var(--ty-local-transition, color 200ms);\n}\n.step-indicator[data-state="completed"] .step-label,\n.step-indicator[data-state="active"] .step-label {\ncolor: var(--ty-text-strong, var(--ty-color-neutral-strong));\n}\n.step-indicator[aria-selected="true"] .step-label {\nfont-weight: 600;\n}\n.step-indicator[data-state="error"] .step-label {\ncolor: var(--ty-wizard-error-accent);\n}\n.step-description {\nheight: 0;\nvisibility: hidden;\nfont-size: var(--ty-font-xs, 12px);\nline-height: 1.3;\nwhite-space: nowrap;\noverflow: hidden;\ntext-overflow: ellipsis;\ncolor: var(--ty-text-soft, var(--ty-color-neutral));\n}\n.step-indicator[aria-selected="true"] .step-description,\n.step-indicator[data-state="error"] .step-description {\nheight: auto;\nvisibility: inherit;\n}\n.step-indicator:hover:not([aria-selected="true"]) .step-label {\ncolor: var(--ty-text-strong, var(--ty-color-neutral-strong));\n}\n::slotted([slot^="indicator-"]) {\ndisplay: flex;\nalign-items: center;\njustify-content: center;\n}\n.step-compact {\ndisplay: none;\nflex-direction: column;\ngap: 10px;\n}\n.compact-top {\ndisplay: flex;\nalign-items: baseline;\njustify-content: space-between;\ngap: 12px;\nmin-width: 0;\n}\n.compact-where {\ndisplay: flex;\nalign-items: baseline;\ngap: 6px;\nmin-width: 0;\nwhite-space: nowrap;\n}\n.compact-count {\nfont-size: var(--ty-font-xs, 12px);\ncolor: var(--ty-text-soft, var(--ty-color-neutral));\n}\n.compact-count::after {\ncontent: "·";\nmargin-left: 6px;\ncolor: var(--ty-text-faint, var(--ty-color-neutral));\n}\n.compact-label {\nfont-size: var(--ty-font-sm, 14px);\nfont-weight: 600;\ncolor: var(--ty-text-strong, var(--ty-color-neutral-strong));\noverflow: hidden;\ntext-overflow: ellipsis;\n}\n.compact-description {\nfont-size: var(--ty-font-xs, 12px);\ncolor: var(--ty-text-faint, var(--ty-color-neutral));\nwhite-space: nowrap;\noverflow: hidden;\ntext-overflow: ellipsis;\n}\n.compact-segments {\ndisplay: flex;\ngap: 4px;\n}\n.compact-segment {\nflex: 1;\nheight: 3px;\nborder-radius: 2px;\nbackground: var(--ty-wizard-progress-track);\ntransition: background var(--ty-wizard-transition-duration) var(--ty-wizard-transition-easing);\n}\n.compact-segment[data-state="completed"] { background: var(--ty-wizard-progress-fill); }\n.compact-segment[data-state="active"] { background: var(--ty-wizard-active-accent); }\n.compact-segment[data-state="error"] { background: var(--ty-wizard-error-accent); }\n.wizard-container.compact { flex-direction: column; }\n.wizard-container.compact .step-indicators {\nposition: absolute;\nvisibility: hidden;\npointer-events: none;\nwidth: max-content;\n}\n.wizard-container.compact .step-compact { display: flex; }\n.wizard-container.compact .step-indicators-wrapper {\npadding: var(--ty-wizard-header-padding);\nborder-right: none;\nborder-bottom: 1px solid var(--ty-wizard-header-border);\nmin-width: 0;\n}\n:host([orientation="vertical"]) .wizard-container:not(.compact) {\nflex-direction: row;\n}\n:host([orientation="vertical"]) .wizard-container:not(.compact) .step-indicators-wrapper {\nborder-bottom: none;\nborder-right: 1px solid var(--ty-wizard-header-border);\npadding: 20px 18px;\nmin-width: 170px;\nbox-sizing: border-box;\n}\n:host([orientation="vertical"]) .step-indicators {\nflex-direction: column;\nalign-items: stretch;\ngap: 0;\n}\n:host([orientation="vertical"]) .step-indicator {\nflex: 0 0 auto;\nalign-items: flex-start;\ngap: 10px;\nposition: relative;\npadding-bottom: 26px;\n}\n:host([orientation="vertical"]) .step-indicator:last-child {\npadding-bottom: 0;\n}\n:host([orientation="vertical"]) .step-text {\npadding-top: calc((var(--ty-wizard-circle-size) - var(--ty-font-sm, 14px) * 1.3) / 2);\n}\n:host([orientation="vertical"]) .step-indicator:not(:last-child)::after {\nposition: absolute;\nleft: calc(var(--ty-wizard-circle-size) / 2 - var(--ty-wizard-progress-height) / 2);\ntop: calc(var(--ty-wizard-circle-size) + 4px);\nbottom: 4px;\nwidth: var(--ty-wizard-progress-height);\nheight: auto;\nmin-width: 0;\nmargin: 0;\n}\n.panels-viewport {\nposition: relative;\nflex: 1;\nmin-width: 0;\nheight: var(--ty-wizard-panel-height, auto);\noverflow: hidden;\nbackground: var(--ty-wizard-panels-bg);\n}\n.panels-wrapper {\ndisplay: flex;\nheight: 100%;\ntransform: translateX(calc(var(--ty-wizard-active-index, 0) * -100%));\ntransition: transform var(--ty-wizard-transition-duration) var(--ty-wizard-transition-easing);\nwill-change: transform;\n}\n::slotted(ty-step) {\nflex: 0 0 100%;\nmin-width: 0;\ntransition: visibility 0s linear 0s;\n}\n::slotted(ty-step:not([data-active="true"])) {\nvisibility: hidden;\npointer-events: none;\ntransition: visibility 0s linear var(--ty-wizard-transition-duration);\n}\n@media (prefers-reduced-motion: reduce) {\n.panels-wrapper,\n::slotted(ty-step),\n::slotted(ty-step:not([data-active="true"])),\n.step-circle,\n.compact-segment,\n.step-indicator::after {\ntransition-duration: 0ms !important;\ntransition-delay: 0ms !important;\n}\n}\n.sr-only {\nposition: absolute;\nwidth: 1px;\nheight: 1px;\npadding: 0;\nmargin: -1px;\noverflow: hidden;\nclip: rect(0, 0, 0, 0);\nwhite-space: nowrap;\nborder-width: 0;\n}\n',id:"ty-wizard"}),t.style.setProperty("--ty-wizard-width",e),t.style.setProperty("--ty-wizard-active-index",Math.max(0,r?o.findIndex(t=>li(t)===r):0)+""),i?t.style.setProperty("--ty-wizard-panel-height",i):t.style.removeProperty("--ty-wizard-panel-height");let a=n.querySelector(".wizard-container"),l=n.querySelector(".panels-viewport");a&&l||(n.innerHTML='\n<div class="wizard-container">\n<div class="panels-viewport" part="panels-container">\n<div class="panels-wrapper">\n<slot></slot>\n</div>\n</div>\n</div>\n',a=n.querySelector(".wizard-container"),l=n.querySelector(".panels-viewport")),n.querySelector(".step-indicators-wrapper")?.remove();const c=document.createElement("div");if(c.innerHTML=function(t,n,e,i){const o=n.length,r=Math.max(0,e?n.findIndex(t=>li(t)===e):0),s=n.map((n,r)=>{const s=li(n);if(!s)return"";const a=n.getAttribute("label")||"Step "+(r+1),l=n.getAttribute("description")||"",c=function(t){return t.hasAttribute("disabled")}(n),d=s===e,h=vi(n,s,e,i),u=function(t,n){return null!==t.querySelector(`[slot='indicator-${n}']`)}(t,s)?`<slot name="indicator-${s}"></slot>`:"completed"===h?'<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="3" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><polyline points="20 6 9 17 4 12"></polyline></svg>':"error"===h?'<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="3" stroke-linecap="round" aria-hidden="true"><line x1="12" y1="5" x2="12" y2="13"></line><line x1="12" y1="18.5" x2="12" y2="18.6"></line></svg>':`<span aria-hidden="true">${r+1}</span>`;return`<button\nclass="step-indicator"\nrole="tab"\ntype="button"\ndata-step-id="${s}"\nid="step-${s}"\ndata-state="${h}"\ndata-done="${"completed"===h||"active"===h&&i.has(s)}"\naria-selected="${d}"\ntabindex="${d?"0":"-1"}"\ndata-active="${d}"\n${c?'disabled aria-disabled="true"':""}\n>\n<span class="step-circle" data-state="${h}" part="step-circle">${u}</span>\n<span class="step-text">\n<span class="step-label">${a}</span>\n${l?`<span class="step-description">${l}</span>`:""}\n<span class="sr-only">, step ${r+1} of ${o}, ${mi[h]??h}</span>\n</span>\n</button>`}).join(""),a=n[r],l=a?a.getAttribute("label")||"Step "+(r+1):"",c=a?.getAttribute("description")||"",d=n.map(t=>`<span class="compact-segment" data-state="${vi(t,li(t)||"",e,i)}"></span>`).join("");return`\n<div class="step-indicators-wrapper" part="indicators-wrapper">\n<div class="step-indicators" role="tablist" aria-label="Steps">\n${s}\n</div>\n<div class="step-compact">\n<div class="compact-top">\n<span class="compact-where">\n<span class="compact-count">Step ${o?r+1:0} of ${o}</span>\n<span class="compact-label">${l}</span>\n</span>\n${c?`<span class="compact-description">${c}</span>`:""}\n</div>\n<div class="compact-segments" part="progress">${d}</div>\n</div>\n</div>\n`}(t,o,r,s),a.insertBefore(c.firstElementChild,l),function(t,n,e){ui(t);const i={stepClickHandlers:new Map};e.forEach(e=>{const o=li(e);if(!o)return;const r=n.querySelector(`[data-step-id='${o}']`);if(r){const n=n=>{"click"===n.type&&0!==n.detail||function(t,n,e){e.preventDefault(),e.stopPropagation();const i=ai(t),o=i.findIndex(t=>li(t)===n);if(0>o)return;const r=hi(t,i),s=r?di(i,r)??null:null,a=new CustomEvent("ty-wizard-step-change",{detail:{activeId:n,activeIndex:o,previousId:r,previousIndex:s,direction:null===s?"none":o>s?"forward":s>o?"backward":"none"},bubbles:!0,cancelable:!1});t.dispatchEvent(a)}(t,o,n)};r.addEventListener("pointerdown",n),r.addEventListener("click",n),i.stepClickHandlers.set(o,n)}}),si.set(t,i)}(t,n,o),pi(t,n,r||""),r&&bi(t,r),!fi.has(t)){const n=new ResizeObserver(()=>yi(t));n.observe(t),fi.set(t,n),document.fonts?.ready.then(()=>t.isConnected&&yi(t))}yi(t)}function yi(t){const n=t.shadowRoot,e=n?.querySelector(".wizard-container"),i=n?.querySelector(".step-indicators-wrapper"),o=n?.querySelector(".step-indicators");if(!e||!i||!o)return;let r;if("vertical"===t.getAttribute("orientation"))r=360>t.clientWidth;else{const t=Array.from(o.querySelectorAll(".step-indicator")),n=t=>parseFloat(t)||0;let e=n(getComputedStyle(o).columnGap)*Math.max(0,t.length-1);t.forEach((i,o)=>{const r=i.querySelector(".step-circle"),s=Array.from(i.querySelectorAll(".step-label, .step-description"));if(e+=(r?.offsetWidth??0)+n(getComputedStyle(i).columnGap)+Math.max(0,...s.map(t=>t.scrollWidth)),t.length-1>o){const t=getComputedStyle(i,"::after");e+=n(getComputedStyle(i).columnGap)+n(t.minWidth)+n(t.marginLeft)}});const s=getComputedStyle(i);r=e>i.clientWidth-parseFloat(s.paddingLeft)-parseFloat(s.paddingRight)+.5}e.classList.toggle("compact",r)}const fi=new WeakMap;class TyWizard extends HTMLElement{constructor(){super(),this.Hn=null,this.be=!1,this.attachShadow({mode:"open"})}static get observedAttributes(){return["width","height","active","completed","orientation"]}connectedCallback(){gi(this),this.Hn=new MutationObserver(t=>{t.some(t=>"childList"===t.type&&t.target===this||"TY-STEP"===t.target.tagName&&t.target.parentElement===this)&&!this.be&&(this.be=!0,queueMicrotask(()=>{this.be=!1,this.isConnected&&gi(this)}))}),this.Hn.observe(this,{childList:!0,subtree:!0,attributes:!0,attributeFilter:["status","label","description","disabled"]})}disconnectedCallback(){this.Hn?.disconnect(),this.Hn=null,ui(this),fi.get(this)?.disconnect(),fi.delete(this)}attributeChangedCallback(t,n,e){"active"===t?(e&&function(t,n){const e=ai(t),i=t.shadowRoot;if(!i)return;const o=hi(t,e),r=o?di(e,o):void 0,s=di(e,n);if(o===n||void 0===s)return;t.style.setProperty("--ty-wizard-active-index",s+""),pi(t,i,n),bi(t,n);const a=e[s];a?.resetScroll&&a.resetScroll(),function(t,n,e,i,o){const r=new CustomEvent("ty-wizard-step-change",{detail:{activeId:n,activeIndex:e,previousId:i,previousIndex:o,direction:null===o?"none":e>o?"forward":o>e?"backward":"none"},bubbles:!0,cancelable:!1});t.dispatchEvent(r)}(t,n,s,o,r??null)}(this,e),gi(this)):gi(this)}}customElements.get("ty-wizard")||customElements.define("ty-wizard",TyWizard);const wi=`\n:host {\nheight: var(--ty-wizard-panel-height, auto);\ndisplay: block;\nbox-sizing: border-box;\n}\n.step-wrapper {\nwidth: 100%;\nheight: 100%;\nposition: relative;\noverflow: hidden;\n}\n.step-panel {\nwidth: 100%;\nheight: 100%;\noverflow: auto;\nbox-sizing: border-box;\n}\n.step-panel.ty-custom-scroll {\nscrollbar-width: none;\n-ms-overflow-style: none;\n}\n.step-panel.ty-custom-scroll::-webkit-scrollbar {\ndisplay: none;\n}\n.step-wrapper:hover .ty-scrollbar-track-y.has-overflow {\nopacity: 1;\n}\n${Pt}\n`;class TyStep extends HTMLElement{constructor(){super(),this.ln=null,this.attachShadow({mode:"open"})}static get observedAttributes(){return["id","label","description","disabled","status"]}connectedCallback(){this.se()}disconnectedCallback(){this.dn()}attributeChangedCallback(t,n,e){this.se()}se(){const t=this.shadowRoot;if(!t)return;const n=this.getAttribute("id");t.querySelector(".step-wrapper")||(b(t,{css:wi,id:"ty-step"}),t.innerHTML=`\n<div class="step-wrapper"\nrole="tabpanel"\n${n?`id="panel-${n}"`:""}\n${n?`aria-labelledby="step-${n}"`:""}\n>\n<div class="step-panel">\n<slot></slot>\n</div>\n</div>\n`,this.hn())}hn(){const t=this.shadowRoot?.querySelector(".step-panel"),n=this.shadowRoot?.querySelector(".step-wrapper");t&&n&&Nt()&&(t.classList.add("ty-custom-scroll"),this.ln=new Bt(t,{vertical:!0}),this.ln.trackY&&n.appendChild(this.ln.trackY))}dn(){this.ln&&(this.ln.trackY?.remove(),this.ln.destroy(),this.ln=null)}resetScroll(){this.ln?.scrollToTop(!1)}}customElements.get("ty-step")||customElements.define("ty-step",TyStep);const xi=(t,n)=>{const e=e=>n?`var(--ty-color-${t}${e}, var(--ty-color-${n}${e}))`:`var(--ty-color-${t}${e})`,i=e=>n?`var(--ty-solid-${t}${e}, var(--ty-solid-${n}${e}))`:`var(--ty-solid-${t}${e})`;return`\n:host([flavor="${t}"]) {\n--calendar-month-accent: ${e("")};\n--calendar-month-selected-bg: ${i("")};\n--calendar-month-selected-color: ${i("-fg")};\n--calendar-month-selected-hover-bg: ${i("-hover")};\n}\n:host([flavor="${t}+"]) {\n--calendar-month-accent: ${e("-strong")};\n--calendar-month-selected-bg: ${i("-strong")};\n--calendar-month-selected-color: ${i("-strong-fg")};\n--calendar-month-selected-hover-bg: color-mix(in oklab, ${i("-strong")} 85%, ${i("-strong-fg")});\n}\n:host([flavor="${t}-"]) {\n--calendar-month-accent: ${e("-soft")};\n--calendar-month-selected-bg: ${i("-soft")};\n--calendar-month-selected-color: ${i("-soft-fg")};\n--calendar-month-selected-hover-bg: color-mix(in oklab, ${i("-soft")} 85%, ${i("-soft-fg")});\n}\n`},ki=n.map(t=>xi(t)).join(""),zi=`\n.calendar-flex-container {\ndisplay: flex;\nflex-direction: column;\nbox-sizing: border-box;\ngap: 0;\npadding: 0.75rem;\nborder-radius: var(--ty-radius-md);\nfont-family: inherit;\nuser-select: none;\nwidth: var(--calendar-width, fit-content);\nmin-width: var(--ty-calendar-width, 280px);\nmax-width: var(--calendar-max-width, none);\n}\n.calendar-row {\ndisplay: flex;\nflex: 1;\nmin-height: 0;\n}\n.calendar-header-row {\nflex: 0 0 auto;\ncolor: var(--ty-calendar-header-color, var(--ty-color-neutral-soft));\n}\n.calendar-day-row {\nflex: 1;\nmin-height: 2rem;\nmargin-bottom: 0.125rem;\n}\n.calendar-cell {\nflex: 1;\ndisplay: flex;\nalign-items: center;\njustify-content: center;\nmin-width: 0;\nposition: relative;\nbox-sizing: border-box;\n}\n.calendar-header-cell {\ntext-align: center;\nfont-weight: 500;\npadding: 0.25rem;\n}\n.calendar-day-cell {\naspect-ratio: 1;\ndisplay: flex;\nalign-items: center;\njustify-content: center;\nflex-direction: column;\nmargin: 0.125rem;\nborder-radius: var(--ty-calendar-day-radius, 0.5rem);\nborder: 1px solid var(--ty-calendar-day-border, transparent);\nbackground-color: var(--ty-calendar-day-bg, transparent);\ncolor: var(--ty-calendar-day-color, var(--ty-calendar-muted, var(--ty-text)));\ncursor: pointer;\ntransition: var(--ty-local-transition, background-color 0.15s ease, color 0.15s ease);\nfont-weight: 400;\nfont-variant-numeric: tabular-nums;\n}\n.calendar-day-cell:hover {\ncolor: var(--ty-calendar-day-hover-color, var(--ty-text-strong));\nbackground-color: var(--ty-calendar-day-hover-bg, var(--ty-bg-neutral));\nborder-color: var(--ty-calendar-day-hover-border, transparent);\nfont-weight: 500;\n}\n.calendar-day-cell:focus-visible {\noutline: none;\nbox-shadow: 0 0 0 2px var(--calendar-month-accent, var(--ty-color-primary));\n}\n.calendar-day-cell.today {\nbackground-color: var(--ty-calendar-today-bg, transparent);\ncolor: var(--ty-calendar-today-color, var(--ty-calendar-today-accent, var(--calendar-month-accent, var(--ty-color-primary))));\nborder-color: var(--ty-calendar-today-border, transparent);\nfont-weight: 600;\n}\n.calendar-day-cell.today:hover {\nbackground-color: var(--ty-calendar-day-hover-bg, var(--ty-bg-neutral));\n}\n.calendar-day-cell.today.default-content::after {\ncontent: "";\nposition: absolute;\ntop: calc(50% + 0.72em);\nleft: 50%;\nwidth: 4px;\nheight: 4px;\nmargin-left: -2px;\nborder-radius: 50%;\nbackground: currentColor;\n}\n.calendar-day-cell.weekend {\ncolor: var(--ty-calendar-weekend-color, var(--ty-calendar-day-color, var(--ty-text)));\n}\n.calendar-day-cell.other-month {\ncolor: var(--ty-calendar-other-month-color, color-mix(in oklab, var(--ty-text-faint) 65%, transparent));\n}\n.calendar-day-cell.other-month:hover {\ncolor: var(--ty-calendar-day-hover-color, var(--ty-text-soft, var(--ty-text-)));\nbackground-color: var(--ty-calendar-day-hover-bg, var(--ty-bg-neutral-soft));\n}\n.calendar-day-cell.disabled {\ncolor: var(--ty-calendar-disabled-color, var(--ty-text-faint));\nopacity: var(--ty-calendar-disabled-opacity, 0.7);\ntext-decoration: line-through;\ntext-decoration-color: color-mix(in oklab, currentColor 60%, transparent);\ncursor: default;\npointer-events: none;\n}\n.calendar-day-cell.selected {\nbackground-color: var(--ty-calendar-selected-bg, var(--ty-calendar-accent, var(--calendar-month-selected-bg, var(--ty-solid-primary, var(--ty-color-primary)))));\ncolor: var(--ty-calendar-selected-color, var(--calendar-month-selected-color, var(--ty-solid-primary-fg, white)));\nborder-color: var(--ty-calendar-selected-border, transparent);\nfont-weight: 600;\n}\n.calendar-day-cell.selected:hover {\nbackground-color: var(--ty-calendar-selected-hover-bg, var(--calendar-month-selected-hover-bg, color-mix(in oklab, var(--ty-calendar-selected-bg, var(--ty-calendar-accent, var(--calendar-month-selected-bg, var(--ty-solid-primary, var(--ty-color-primary))))) 85%, var(--ty-calendar-selected-color, var(--calendar-month-selected-color, var(--ty-solid-primary-fg, white))))));\ncolor: var(--ty-calendar-selected-color, var(--calendar-month-selected-color, var(--ty-solid-primary-fg, white)));\nborder-color: var(--ty-calendar-selected-hover-border, var(--ty-calendar-selected-border, transparent));\n}\n.calendar-day-cell.selected.other-month {\nopacity: 0.7;\n}\n.calendar-size-sm {\npadding: 0.5rem;\nmin-width: var(--ty-calendar-width, 240px);\n}\n.calendar-size-sm .calendar-header-cell {\nfont-size: 0.625rem;\npadding: 0.125rem;\n}\n.calendar-size-sm .calendar-day-cell {\nfont-size: 0.75rem;\nmargin: 0.0625rem;\n}\n.calendar-size-sm .calendar-day-row {\nmin-height: 1.5rem;\n}\n.calendar-size-md {\npadding: 0.75rem;\nmin-width: var(--ty-calendar-width, 280px);\n}\n.calendar-size-md .calendar-header-cell {\nfont-size: 0.6875rem;\npadding: 0.25rem;\n}\n.calendar-size-md .calendar-day-cell {\nfont-size: 0.8125rem;\nmargin: 0.125rem;\n}\n.calendar-size-md .calendar-day-row {\nmin-height: 2rem;\n}\n.calendar-size-lg {\npadding: 1rem;\nmin-width: var(--ty-calendar-width, 360px);\n}\n.calendar-size-lg .calendar-header-cell {\nfont-size: 0.75rem;\npadding: 0.375rem;\n}\n.calendar-size-lg .calendar-day-cell {\nfont-size: 0.875rem;\nmargin: 0.1875rem;\n}\n.calendar-size-lg .calendar-day-row {\nmin-height: 2.5rem;\n}\n.calendar-day {\nwidth: 100%;\nheight: 100%;\ndisplay: flex;\nflex-direction: column;\nalign-items: center;\njustify-content: center;\nbox-sizing: border-box;\n}\n${ki}\n`;function $i(t){if(!Number.isInteger(t)||1>t||t>12)throw new RangeError(`Invalid month: ${t}. Must be an integer between 1 and 12.`)}function Ci(t,n,e,i){const o=t.getFullYear(),r=t.getMonth()+1,s=t.getDate(),a=t.getDay(),l=o!==n||r!==e;let c=!1,d=!1;l&&(n>o||o===n&&e>r?c=!0:d=!0);const h=(p=function(){const t=new Date;return new Date(t.getFullYear(),t.getMonth(),t.getDate(),0,0,0,0)}(),(u=t).getFullYear()===p.getFullYear()&&u.getMonth()===p.getMonth()&&u.getDate()===p.getDate());var u,p;const b=i?.year===o&&i?.month===r&&i?.day===s;return{value:Date.UTC(o,r-1,s,0,0,0,0),localValue:t.getTime(),year:o,month:r,dayInMonth:s,weekend:0===a||6===a,otherMonth:l,prevMonth:c,nextMonth:d,today:h,isSelected:b,selectedYear:i?.year,selectedMonth:i?.month,selectedDay:i?.day}}function Ei(t,n){const e=new Date(t);return e.setDate(e.getDate()+n),e}function Mi(t,n="en-US",e="long"){$i(t);const i=new Date(2024,t-1,1);return new Intl.DateTimeFormat(n,{month:e}).format(i)}function Si(t){const n=t.match(/^(\d{4})-(\d{2})-(\d{2})$/);if(!n)return null;const e=parseInt(n[1],10),i=parseInt(n[2],10),o=parseInt(n[3],10);if(1>e||e>9999)return null;if(1>i||i>12)return null;if(1>o||o>31)return null;const r=new Date(e,i-1,o);return r.getFullYear()!==e||r.getMonth()!==i-1||r.getDate()!==o?null:{year:e,month:i,day:o}}function Ti(t){return t instanceof HTMLElement}function _i(t){if(!t)return null;const n=Si(t);return n?Date.UTC(n.year,n.month-1,n.day):null}function qi(t){if(!t||""===t)return null;const n=t+"";return/^\d+(\.\d+)?$/.test(n)?n+"px":n}class TyCalendarMonth extends HTMLElement{constructor(){super(),this.ve="en-US",this.Mn="md",this.j=null,this.me=null,this.ge=[];const t=new Date;this.ye=t.getFullYear(),this.fe=t.getMonth()+1,this.attachShadow({mode:"open"})}static get observedAttributes(){return["display-year","display-month","locale","size","min","max","flavor"]}connectedCallback(){this.fe||(this.fe=(new Date).getMonth()+1),this.ye||(this.ye=(new Date).getFullYear()),this.ve||(this.ve=this.getAttribute("locale")||"en-US");const t=this.getAttribute("size");!t||"sm"!==t&&"md"!==t&&"lg"!==t||(this.Mn=t);const n=this.dayContentFn;n&&!this.we&&(this.we=n,delete this.dayContentFn);const e=this.customCSS;e&&!this.xe&&(this.xe=e,delete this.customCSS),this.rt=at(this,()=>{this.render()}),this.F(),this.render()}disconnectedCallback(){this.rt&&(this.rt(),this.rt=void 0)}attributeChangedCallback(t,n,e){if("display-year"===t||"display-month"===t){const n=+e;Number.isInteger(n)&&("display-year"===t?n>0:n>=1&&12>=n)&&("display-year"===t?this.displayYear=n:this.displayMonth=n)}else"locale"===t?(this.ve=e||"en-US",this.render()):"size"===t?"sm"!==e&&"md"!==e&&"lg"!==e||(this.Mn=e,this.render()):"min"===t||"max"===t?(this["min"===t?"ke":"ze"]=e??void 0,this.render()):"flavor"===t&&this.F()}F(){this.j=k(this.shadowRoot,this.j,this.getAttribute("flavor"),({base:t})=>(t=>xi(t,"neutral"))(t))}get displayYear(){return this.ye}set displayYear(t){this.ye!==t&&(this.ye=t,this.me=null,this.render())}get displayMonth(){return this.fe}set displayMonth(t){this.fe!==t&&(this.fe=t,this.me=null,this.render())}get locale(){return st(this,this.getAttribute("locale"))}set locale(t){this.ve!==t&&(this.ve=t,this.render())}get size(){return this.Mn}set size(t){this.Mn!==t&&(this.Mn=t,this.render())}get flavor(){return this.getAttribute("flavor")||"primary"}set flavor(t){t?this.setAttribute("flavor",t):this.removeAttribute("flavor")}get width(){return this.$e}set width(t){this.$e!==t&&(this.$e=t,this.applyWidthProperties())}get minWidth(){return this.Ce}set minWidth(t){this.Ce!==t&&(this.Ce=t,this.applyWidthProperties())}get maxWidth(){return this.Ee}set maxWidth(t){this.Ee!==t&&(this.Ee=t,this.applyWidthProperties())}get dayContentFn(){return this.we}set dayContentFn(t){this.we!==t&&(this.we=t,this.render())}get customCSS(){return this.xe}set customCSS(t){this.xe!==t&&(this.xe=t,this.applyCustomCSS())}get min(){return this.ke}set min(t){this.ke!==t&&(this.ke=t,this.render())}get max(){return this.ze}set max(t){this.ze!==t&&(this.ze=t,this.render())}get value(){return this.N}set value(t){const n=t??void 0;this.N!==n&&(this.N=n,this.render())}applyWidthProperties(){const t=qi(this.$e),n=qi(this.Ce),e=qi(this.Ee);t?this.style.setProperty("--calendar-width",t):this.style.removeProperty("--calendar-width"),n?this.style.setProperty("--calendar-min-width",n):this.style.removeProperty("--calendar-min-width"),e?this.style.setProperty("--calendar-max-width",e):this.style.removeProperty("--calendar-max-width")}applyCustomCSS(){if(!this.xe||!this.shadowRoot)return;const t=this.shadowRoot.adoptedStyleSheets;t.includes(this.xe)||(this.shadowRoot.adoptedStyleSheets=[...t,this.xe])}refresh(){this.render()}dispatchDayClick(t,n){const e={dayContext:t,value:t.value,year:t.year,month:t.month,day:t.dayInMonth,isHoliday:t.holiday,isToday:t.today,isWeekend:t.weekend,isOtherMonth:t.otherMonth};for(const i of["day-click","day-select"]){const t=new CustomEvent(i,{detail:e,bubbles:!0,cancelable:!0});this.dispatchEvent(t)}}renderDayCell(t,n,e){const i=document.createElement("div"),o=this.we?this.we(t):function(t){return""+t.dayInMonth}(t);if(this.we&&o&&!Ti(o)&&"string"!=typeof o)throw Error(`Custom dayContentFn must return a DOM element or string, got: ${typeof o}. Use document.createElement() to create DOM elements.`);const r=function(t){const n=["calendar-day"];return t.today&&n.push("today"),t.weekend&&n.push("weekend"),t.otherMonth&&n.push("other-month"),t.isSelected&&n.push("selected"),n}(t);return n&&r.push("disabled"),this.we||r.push("default-content"),i.className=r.join(" "),"string"==typeof o?i.textContent=o:Ti(o)&&i.appendChild(o),i.setAttribute("role","gridcell"),i.setAttribute("aria-label",new Intl.DateTimeFormat(this.ve,{weekday:"long",year:"numeric",month:"long",day:"numeric"}).format(new Date(t.localValue))),i.setAttribute("aria-selected",!!t.isSelected+""),t.today&&i.setAttribute("aria-current","date"),n?(i.setAttribute("aria-disabled","true"),i.setAttribute("tabindex","-1")):(i.setAttribute("tabindex",e?"0":"-1"),i.addEventListener("click",n=>{this.dispatchDayClick(t,n)}),i.addEventListener("keydown",n=>{"Enter"!==n.key&&" "!==n.key||(n.preventDefault(),this.dispatchDayClick(t,n))})),i}render(){const t=this.shadowRoot;if(!t)return;let n;if(b(t,{css:zi,id:"ty-calendar-month"}),this.applyCustomCSS(),this.applyWidthProperties(),this.N){const t=new Date(this.N);n={year:t.getFullYear(),month:t.getMonth()+1,day:t.getDate()}}const e=function(t,n,e){return function(t){if(!Number.isInteger(t)||1>t||t>9999)throw new RangeError(`Invalid year: ${t}. Must be an integer between 1 and 9999.`)}(t),$i(n),function(t,n,e,i,o){const r=[];for(let s=0;42>s;s++){const n=Ei(t,s);r.push(Ci(n,e,i,o))}return r}(function(t,n){const e=function(t,n){return new Date(t,n-1,1,0,0,0,0)}(t,n);return function(t){const n=t.getDay(),e=0===n?6:n-1,i=new Date(t);return i.setDate(t.getDate()-e),i.setHours(0,0,0,0),i}(e)}(t,n),0,t,n,e)}(this.ye,this.fe,n),i=function(t,n="short"){const e=new Intl.DateTimeFormat(t,{weekday:n}),i=new Date(2024,0,7),o=Array.from({length:7},(t,n)=>{const o=Ei(i,n);return e.format(o)}),[r,...s]=o;return[...s,r]}(this.ve,"short");t.innerHTML="";const o=document.createElement("div");o.className="calendar-flex-container calendar-size-"+this.Mn,o.setAttribute("role","grid"),o.setAttribute("aria-label",new Intl.DateTimeFormat(this.ve,{month:"long",year:"numeric"}).format(new Date(this.ye,this.fe-1,1)));const r=document.createElement("div");r.className="calendar-row calendar-header-row",r.setAttribute("role","row"),i.forEach(t=>{const n=document.createElement("div");n.className="calendar-cell calendar-header-cell",n.setAttribute("role","columnheader"),n.textContent=t,r.appendChild(n)}),o.appendChild(r);const s=[];for(let b=0;42>b;b+=7)s.push(e.slice(b,b+7));const a=_i(this.ke),l=_i(this.ze),c=t=>{const n=e[t].value;return null!==a&&a>n||null!==l&&n>l},d=t=>{for(let n=0;42>n;n++)if(t(n)&&!c(n))return n;return-1};let h=d(t=>!!e[t].isSelected),u=!1;-1===h&&(h=d(t=>!!e[t].today)),-1===h&&(h=d(()=>!0),u=!0),-1===h&&(h=0),(null===this.me||0>this.me||this.me>41||c(this.me))&&(this.me=u?null:h);const p=this.me??h;this.ge=[];let v=0;s.forEach(t=>{const n=document.createElement("div");n.className="calendar-row calendar-day-row",n.setAttribute("role","row"),t.forEach(t=>{const e=this.renderDayCell(t,null!==a&&a>t.value||null!==l&&t.value>l,v===p);e.className=e.className+" calendar-cell calendar-day-cell",n.appendChild(e),this.ge[v]=e,v++}),o.appendChild(n)}),o.addEventListener("keydown",t=>{const n=t,e="ArrowLeft"===n.key?-1:"ArrowRight"===n.key?1:"ArrowUp"===n.key?-7:"ArrowDown"===n.key?7:0;if(0===e)return;const i=this.me??h,o=i+e;if(0>o||o>41||c(o))return;n.preventDefault(),this.ge[i]?.setAttribute("tabindex","-1"),this.me=o;const r=this.ge[o];r&&(r.setAttribute("tabindex","0"),r.focus())}),t.appendChild(o)}}customElements.get("ty-calendar-month")||customElements.define("ty-calendar-month",TyCalendarMonth);const Di='\n:host([data-size="md"]) {\n--nav-btn-size: 1.875rem;\n--nav-btn-icon-size: 1.125rem;\n--nav-font-size: 1rem;\n--nav-padding: 0.5rem 0.75rem;\n--nav-default-width: 280px;\n}\n:host([data-size="sm"]) {\n--nav-btn-size: 1.5rem;\n--nav-btn-icon-size: 0.9375rem;\n--nav-font-size: 0.875rem;\n--nav-padding: 0.375rem 0.5rem;\n--nav-default-width: 240px;\n}\n:host([data-size="lg"]) {\n--nav-btn-size: 2.25rem;\n--nav-btn-icon-size: 1.25rem;\n--nav-font-size: 1.125rem;\n--nav-padding: 0.625rem 1rem;\n--nav-default-width: 360px;\n}\n.calendar-navigation-header {\ndisplay: flex;\nalign-items: center;\njustify-content: space-between;\npadding: var(--nav-padding);\nfont-family: inherit;\nuser-select: none;\nwidth: var(--nav-width, var(--ty-calendar-width, var(--nav-default-width)));\nbox-sizing: border-box;\n}\n.nav-group {\ndisplay: flex;\nalign-items: center;\ngap: 0.25rem;\nflex: 0 0 auto;\n}\n.nav-title {\ndisplay: inline-flex;\nalign-items: center;\ngap: 0.375rem;\nmin-width: 0;\nmargin-left: -0.375rem;\npadding: 0.25rem 0.375rem;\nborder: none;\nborder-radius: var(--ty-radius-base);\nbackground: transparent;\nfont-family: inherit;\nfont-size: var(--nav-font-size);\nline-height: 1.2;\nwhite-space: nowrap;\ncursor: pointer;\ntransition: var(--ty-local-transition, background-color 0.15s ease);\noutline: none;\n}\n.nav-title:hover,\n.nav-title[aria-expanded="true"] {\nbackground-color: var(--ty-calendar-nav-hover-bg, var(--ty-bg-neutral-soft));\n}\n.nav-title:focus-visible {\noutline: 2px solid var(--ty-calendar-nav-focus-outline, var(--ty-calendar-accent, var(--ty-color-primary)));\noutline-offset: 2px;\n}\n.nav-title-month {\nfont-weight: 600;\nletter-spacing: -0.01em;\ncolor: var(--ty-calendar-nav-title-color, var(--ty-text-strong, var(--ty-color-neutral-strong)));\n}\n.nav-title-year {\nfont-weight: 400;\ncolor: var(--ty-calendar-nav-year-color, var(--ty-text-soft, var(--ty-color-neutral)));\n}\n.nav-caret {\ndisplay: inline-flex;\ncolor: var(--ty-calendar-nav-color, var(--ty-color-neutral));\ntransition: transform 0.15s ease;\n}\n.nav-caret svg {\nwidth: 1em;\nheight: 1em;\ndisplay: block;\n}\n.nav-title[aria-expanded="true"] .nav-caret {\ntransform: rotate(180deg);\n}\n.nav-btn {\ndisplay: inline-flex;\nalign-items: center;\njustify-content: center;\nwidth: var(--nav-btn-size);\nheight: var(--nav-btn-size);\npadding: 0;\nborder: 1px solid var(--ty-calendar-nav-border, var(--ty-border));\nborder-radius: var(--ty-radius-base);\nbackground-color: transparent;\ncolor: var(--ty-calendar-nav-color, var(--ty-color-neutral-strong));\ncursor: pointer;\ntransition: var(--ty-local-transition, all 0.15s ease);\noutline: none;\n}\n.nav-btn:hover {\nbackground-color: var(--ty-calendar-nav-hover-bg, var(--ty-bg-neutral-soft));\ncolor: var(--ty-calendar-nav-hover-color, var(--ty-color-neutral-strong));\n}\n.nav-btn:active {\nbackground-color: var(--ty-calendar-nav-active-bg, var(--ty-bg-neutral));\ntransform: scale(0.95);\n}\n.nav-btn:disabled {\nopacity: 0.35;\ncursor: default;\npointer-events: none;\n}\n.nav-btn:focus-visible {\noutline: 2px solid var(--ty-calendar-nav-focus-outline, var(--ty-calendar-accent, var(--ty-color-primary)));\noutline-offset: 2px;\n}\n.nav-btn svg {\nwidth: var(--nav-btn-icon-size);\nheight: var(--nav-btn-icon-size);\ndisplay: block;\n}\n',Ai=class t extends u{constructor(){super();const t=new Date;this.qn={displayMonth:t.getMonth()+1,displayYear:t.getFullYear()},b(this.shadowRoot,{css:Di,id:"ty-calendar-navigation"})}onConnect(){this.qn.displayMonth=this.displayMonth,this.qn.displayYear=this.displayYear,this.rt=at(this,()=>{this.render()}),this.render()}onDisconnect(){this.rt&&(this.rt(),this.rt=void 0)}onPropertiesChanged(t){for(const{name:n,newValue:e}of t)switch(n){case"display-month":this.qn.displayMonth=e;break;case"display-year":this.qn.displayYear=e}}get displayMonth(){return this.getProperty("display-month")}set displayMonth(t){this.setProperty("display-month",t)}get displayYear(){return this.getProperty("display-year")}set displayYear(t){this.setProperty("display-year",t)}get locale(){return st(this,this.getProperty("locale"))}set locale(t){this.setProperty("locale",t)}get size(){return this.getProperty("size")}set size(t){this.setProperty("size",t)}get width(){return this.getProperty("width")}set width(t){this.setProperty("width",t)}get view(){return this.getProperty("view")}set view(t){this.setProperty("view",t)}get min(){return this.getProperty("min")}set min(t){this.setProperty("min",t??"")}get max(){return this.getProperty("max")}set max(t){this.setProperty("max",t??"")}emitChangeEvent(t,n){const e=new CustomEvent("change",{detail:{month:t,year:n},bubbles:!0,cancelable:!0});this.dispatchEvent(e)}static monthIndex(t,n){return 12*t+(n-1)}boundIndices(){const n=Si(this.min),e=Si(this.max);return{minIdx:n?t.monthIndex(n.year,n.month):null,maxIdx:e?t.monthIndex(e.year,e.month):null}}clampIndex(t){const{minIdx:n,maxIdx:e}=this.boundIndices();return null!==n&&n>t?n:null!==e&&t>e?e:t}navigateBy(n){const e=t.monthIndex(this.qn.displayYear,this.qn.displayMonth),i=this.clampIndex(e+n);i!==e&&this.emitChangeEvent(i%12+1,Math.floor(i/12))}isNavDisabled(n){const e=t.monthIndex(this.qn.displayYear,this.qn.displayMonth);return this.clampIndex(e+n)===e}createButton(t,n,e,i,o=!1){const r=document.createElement("button");return r.type="button",r.className=t,r.title=n,r.setAttribute("aria-label",n),r.innerHTML=e,r.disabled=o,r.addEventListener("click",i),r}render(){const t=this.shadowRoot;if(!t)return;b(t,{css:Di,id:"ty-calendar-navigation"}),this.setAttribute("data-size",this.size);const n=this.width;n?this.style.setProperty("--nav-width",n):this.style.removeProperty("--nav-width");const e="months"===this.view,i=Mi(this.qn.displayMonth,this.locale,"long");t.innerHTML="";const o=document.createElement("div");o.className="calendar-navigation-header";const r=document.createElement("button");if(r.type="button",r.className="nav-title",r.setAttribute("aria-expanded",e+""),r.setAttribute("aria-label",e?"Back to days":"Choose month and year"),!e){const t=document.createElement("span");t.className="nav-title-month",t.textContent=i,r.appendChild(t)}const s=document.createElement("span");s.className=e?"nav-title-month":"nav-title-year",s.textContent=this.qn.displayYear+"",r.appendChild(s);const a=document.createElement("span");a.className="nav-caret",a.innerHTML="<svg width='24' viewBox='0 0 24 24' height='24' xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'>\n<path d='m6 9 6 6 6-6'/>\n</svg>",r.appendChild(a),r.addEventListener("click",()=>{this.dispatchEvent(new CustomEvent("view-toggle",{detail:{view:e?"days":"months"}}))});const l=e?12:1,c=e?"year":"month",d=document.createElement("div");d.className="nav-group nav-arrows",d.appendChild(this.createButton(`nav-btn nav-${c}-prev`,"Previous "+c,"<?xml version='1.0' encoding='UTF-8'?>\n<svg width='24' viewBox='0 0 24 24' height='24' xmlns='http://www.w3.org/2000/svg' stroke-width='0' stroke='currentColor' fill='currentColor'>\n<path fill='none' d='M0 0h24v24H0V0z'/>\n<path d='M15.41 16.59L10.83 12l4.58-4.59L14 6l-6 6 6 6 1.41-1.41z'/>\n</svg>",()=>this.navigateBy(-l),this.isNavDisabled(-l))),d.appendChild(this.createButton(`nav-btn nav-${c}-next`,"Next "+c,"<?xml version='1.0' encoding='UTF-8'?>\n<svg width='24' viewBox='0 0 24 24' height='24' xmlns='http://www.w3.org/2000/svg' stroke-width='0' stroke='currentColor' fill='currentColor'>\n<path fill='none' d='M0 0h24v24H0V0z'/>\n<path d='M8.59 16.59L13.17 12 8.59 7.41 10 6l6 6-6 6-1.41-1.41z'/>\n</svg>",()=>this.navigateBy(l),this.isNavDisabled(l))),o.appendChild(r),o.appendChild(d),t.appendChild(o)}};Ai.properties={"display-month":{type:"number",visual:!0,default:()=>(new Date).getMonth()+1,validate:t=>{const n=+t;return Number.isInteger(n)&&n>=1&&12>=n},coerce:t=>{const n=+t;return isNaN(n)||1>n||n>12?(new Date).getMonth()+1:n}},"display-year":{type:"number",visual:!0,default:()=>(new Date).getFullYear(),validate:t=>{const n=+t;return Number.isInteger(n)&&n>=1&&9999>=n},coerce:t=>{const n=+t;return isNaN(n)||1>n||n>9999?(new Date).getFullYear():n}},locale:{type:"string",visual:!0,default:"en-US"},size:{type:"string",visual:!0,default:"md",validate:t=>["sm","md","lg"].includes(t),coerce:t=>["sm","md","lg"].includes(t)?t:"md"},width:{type:"string",visual:!0,default:""},view:{type:"string",visual:!0,default:"days",validate:t=>"days"===t||"months"===t,coerce:t=>"months"===t?"months":"days"},min:{type:"string",visual:!0,default:""},max:{type:"string",visual:!0,default:""}};let Li=Ai;customElements.get("ty-calendar-navigation")||customElements.define("ty-calendar-navigation",Li);const ji="var(--ty-calendar-selected-bg, var(--ty-calendar-accent, var(--calendar-month-selected-bg, var(--ty-solid-primary, var(--ty-color-primary)))))",Fi="var(--ty-calendar-selected-color, var(--calendar-month-selected-color, var(--ty-solid-primary-fg, white)))",Vi=`\n.calendar-container {\ndisplay: flex;\nflex-direction: column;\ngap: 0.125rem;\nbox-sizing: border-box;\nfont-family: inherit;\nalign-items: center;\n}\n@media (max-width: 320px) {\n.calendar-container {\ngap: 0.375rem;\n}\n}\n.month-grid {\ndisplay: grid;\ngrid-template-columns: repeat(3, 1fr);\ngrid-auto-rows: 1fr;\ngap: 0.375rem;\nbox-sizing: border-box;\npadding: 0.75rem;\nmin-width: 280px;\nwidth: var(--calendar-width, auto);\n}\n.month-grid.size-sm { padding: 0.5rem; min-width: 240px; gap: 0.25rem; }\n.month-grid.size-lg { padding: 1rem; min-width: 360px; gap: 0.5rem; }\n.month-cell {\nposition: relative;\ndisplay: flex;\nalign-items: center;\njustify-content: center;\nmin-height: 2.5rem;\npadding: 0;\nborder: none;\nborder-radius: var(--ty-calendar-day-radius, 0.5rem);\nbackground: transparent;\ncolor: var(--ty-calendar-day-color, var(--ty-text));\nfont-family: inherit;\nfont-size: 0.875rem;\ncursor: pointer;\noutline: none;\ntransition: var(--ty-local-transition, background-color 0.15s ease, color 0.15s ease);\n}\n.month-grid.size-sm .month-cell { font-size: 0.75rem; min-height: 2rem; }\n.month-grid.size-lg .month-cell { font-size: 1rem; min-height: 3rem; }\n.month-cell:hover {\ncolor: var(--ty-calendar-day-hover-color, var(--ty-text-strong));\nbackground-color: var(--ty-calendar-day-hover-bg, var(--ty-bg-neutral));\nfont-weight: 500;\n}\n.month-cell:focus-visible {\nbox-shadow: 0 0 0 2px var(--calendar-month-accent, var(--ty-color-primary));\n}\n.month-cell.current {\ncolor: var(--ty-calendar-today-color, var(--ty-calendar-today-accent, var(--calendar-month-accent, var(--ty-color-primary))));\nfont-weight: 600;\n}\n.month-cell.current::after {\ncontent: "";\nposition: absolute;\ntop: calc(50% + 0.72em);\nleft: 50%;\nwidth: 4px;\nheight: 4px;\nmargin-left: -2px;\nborder-radius: 50%;\nbackground: currentColor;\n}\n.month-cell.selected {\nbackground-color: ${ji};\ncolor: ${Fi};\nfont-weight: 600;\n}\n.month-cell.selected:hover {\nbackground-color: var(--ty-calendar-selected-hover-bg, var(--calendar-month-selected-hover-bg, color-mix(in oklab, ${ji} 85%, ${Fi})));\n}\n.month-cell:disabled {\ncolor: var(--ty-calendar-disabled-color, var(--ty-text-faint));\nopacity: var(--ty-calendar-disabled-opacity, 0.7);\ntext-decoration: line-through;\ntext-decoration-color: color-mix(in oklab, currentColor 60%, transparent);\ncursor: default;\npointer-events: none;\n}\n${ki}\n`;function Ii(){const t=new Date;return{year:t.getFullYear(),month:t.getMonth()+1,day:t.getDate()}}function Oi(t){return t&&/^\d{4}$/.test(t)?parseInt(t,10):null}function Hi(t){if(!t||!/^\d{1,2}$/.test(t))return null;const n=parseInt(t,10);return 1>n||n>12?null:n}function Ni(t,n,e){if(!t||!/^\d{1,2}$/.test(t))return null;const i=parseInt(t,10),o=new Date(n,e,0).getDate();return 1>i||i>o?null:i}function Bi(t,n,e){return`${t}-${(""+n).padStart(2,"0")}-${(""+e).padStart(2,"0")}`}const Pi=class t extends HTMLElement{constructor(){super(),this.Me=!1,this.Se=!1,this.Mn="md",this.Te="primary",this._e="days",this.qe=0,this.De="";const t=Ii();this.qn={displayYear:t.year,displayMonth:t.month},this.attachShadow({mode:"open"}),"attachInternals"in this&&(this.$=this.attachInternals(),this.C=new d(this,this.$))}static get observedAttributes(){return["value","year","month","day","hide-navigation","stateless","locale","name","size","width","min","max","flavor"]}connectedCallback(){this.initializeFromAttributes();const t=this.dayContentFn;t&&!this.we&&(this.we=t,delete this.dayContentFn);const n=this.customCSS;n&&!this.xe&&(this.xe=n,delete this.customCSS);const e=this.value;if(e&&"string"==typeof e&&e!==this.value){const t=e.match(/^(\d{4})-(\d{2})-(\d{2})$/);if(t){const n=parseInt(t[1],10),e=parseInt(t[2],10),i=parseInt(t[3],10);this.qn.selectedYear=n,this.qn.selectedMonth=e,this.qn.selectedDay=i,this.qn.displayYear=n,this.qn.displayMonth=e,this.Se||(this.setAttribute("year",""+n),this.setAttribute("month",""+e),this.setAttribute("day",""+i))}delete this.value}this.render(),this.updateFormValue(),this.rt=at(this,()=>{this.render()})}disconnectedCallback(){this.rt&&(this.rt(),this.rt=void 0),this.Ae=void 0,this.Le=void 0,this.je=void 0,this.Fe=void 0,this._e="days"}attributeChangedCallback(t,n,e){if(n!==e)switch(t){case"value":this.value=e||"";break;case"year":case"month":case"day":this.syncStateFromAttributes(),this.syncChildComponents(),this.updateFormValue();break;case"hide-navigation":this.Me=null!==e,this.render();break;case"stateless":this.Se=null!==e&&"false"!==e;break;case"locale":this.syncChildComponents();break;case"size":"sm"!==e&&"md"!==e&&"lg"!==e||(this.Mn=e,this.$e=void 0,this.removeAttribute("width"),this.syncChildComponents());break;case"width":this.$e=e||void 0,e&&(this.Mn="md",this.removeAttribute("size")),this.syncChildComponents();break;case"name":this.updateFormValue();break;case"min":case"max":this["min"===t?"ke":"ze"]=e||void 0,this.syncChildComponents(),this.updateValidity();break;case"flavor":this.Te=e||"primary",this.syncChildComponents()}}get min(){return this.ke}set min(t){t?this.setAttribute("min",t):this.removeAttribute("min")}get max(){return this.ze}set max(t){t?this.setAttribute("max",t):this.removeAttribute("max")}get flavor(){return this.Te}set flavor(t){t?this.setAttribute("flavor",t):this.removeAttribute("flavor")}get year(){return this.qn.selectedYear}set year(t){void 0!==t?this.Se?(this.qn.displayYear=t,this.setAttribute("year",""+t)):(this.qn.selectedYear=t,this.qn.displayYear=t,this.setAttribute("year",""+t)):(this.Se||delete this.qn.selectedYear,this.removeAttribute("year")),this.syncChildComponents(),this.Se||this.updateFormValue()}get month(){return this.qn.selectedMonth}set month(t){void 0!==t?this.Se?(this.qn.displayMonth=t,this.setAttribute("month",""+t)):(this.qn.selectedMonth=t,this.qn.displayMonth=t,this.setAttribute("month",""+t)):(this.Se||delete this.qn.selectedMonth,this.removeAttribute("month")),this.syncChildComponents(),this.Se||this.updateFormValue()}get day(){return this.qn.selectedDay}set day(t){void 0!==t?(this.qn.selectedDay=t,this.setAttribute("day",""+t)):(delete this.qn.selectedDay,this.removeAttribute("day")),this.syncChildComponents(),this.updateFormValue()}get locale(){return st(this,this.getAttribute("locale"))}set locale(t){this.setAttribute("locale",t)}get hideNavigation(){return this.Me}set hideNavigation(t){this.Me=t,t?this.setAttribute("hide-navigation",""):this.removeAttribute("hide-navigation")}get stateless(){return this.Se}set stateless(t){this.Se=t,t?this.setAttribute("stateless",""):this.removeAttribute("stateless")}get size(){return this.Mn}set size(t){this.Mn!==t&&(this.Mn=t,this.$e=void 0,this.removeAttribute("width"),this.setAttribute("size",t),this.syncChildComponents())}get width(){return this.$e}set width(t){this.$e!==t&&(this.$e=t,t?(this.Mn="md",this.removeAttribute("size"),this.setAttribute("width",t)):this.removeAttribute("width"),this.syncChildComponents())}get dayContentFn(){return this.we}set dayContentFn(t){this.we=t,this.syncChildComponents()}get customCSS(){return this.xe}set customCSS(t){this.xe=t,this.syncChildComponents()}get value(){const{selectedYear:t,selectedMonth:n,selectedDay:e}=this.qn;return t&&n&&e?Bi(t,n,e):""}set value(t){if(t){const n=t.match(/^(\d{4})-(\d{2})-(\d{2})$/);if(n){const t=parseInt(n[1],10),e=parseInt(n[2],10),i=parseInt(n[3],10);this.qn.selectedYear=t,this.qn.selectedMonth=e,this.qn.selectedDay=i,this.qn.displayYear=t,this.qn.displayMonth=e,this.Se||(this.setAttribute("year",""+t),this.setAttribute("month",""+e),this.setAttribute("day",""+i))}}else delete this.qn.selectedYear,delete this.qn.selectedMonth,delete this.qn.selectedDay,this.Se||(this.removeAttribute("year"),this.removeAttribute("month"),this.removeAttribute("day"));this.syncChildComponents(),this.Se||this.updateFormValue()}initializeFromAttributes(){const t=this.getAttribute("year"),n=this.getAttribute("month"),e=this.getAttribute("day"),i=this.hasAttribute("hide-navigation"),o=this.getAttribute("stateless"),r=this.getAttribute("size"),s=this.getAttribute("width");this.ke=this.getAttribute("min")||void 0,this.ze=this.getAttribute("max")||void 0;const a=Oi(t);a&&(this.qn.displayYear=a);const l=Hi(n);if(l&&(this.qn.displayMonth=l),a&&l){const t=Ni(e,a,l);t&&(this.qn.selectedYear=a,this.qn.selectedMonth=l,this.qn.selectedDay=t)}this.Me=i,null!==o&&(this.Se="false"!==o),!r||"sm"!==r&&"md"!==r&&"lg"!==r||(this.Mn=r),s&&(this.$e=s),this.De=this.value}formResetCallback(){this.value=this.De}syncStateFromAttributes(){const t=this.getAttribute("year"),n=this.getAttribute("month"),e=this.getAttribute("day"),i=Oi(t),o=Hi(n);if(i&&(this.qn.displayYear=i),o&&(this.qn.displayMonth=o),i&&o){const t=Ni(e,i,o);t?(this.qn.selectedYear=i,this.qn.selectedMonth=o,this.qn.selectedDay=t):(delete this.qn.selectedYear,delete this.qn.selectedMonth,delete this.qn.selectedDay)}else delete this.qn.selectedYear,delete this.qn.selectedMonth,delete this.qn.selectedDay}syncChildComponents(){if(this.Ae&&(this.Ae.displayMonth=this.qn.displayMonth,this.Ae.displayYear=this.qn.displayYear,this.Ae.locale=this.locale,this.Ae.size=this.Mn,this.Ae.min=this.ke??"",this.Ae.max=this.ze??"",this.Ae.width=this.$e,this.Ae.view=this._e),this.je&&this.showBody(),this.Le){this.Le.displayMonth=this.qn.displayMonth,this.Le.displayYear=this.qn.displayYear,this.Le.locale=this.locale,this.Le.size=this.Mn,this.Le.min=this.ke,this.Le.max=this.ze,this.Le.flavor=this.Te,this.Le.width=this.$e,this.we&&(this.Le.dayContentFn=this.we),this.xe&&(this.Le.customCSS=this.xe);const{selectedYear:t,selectedMonth:n,selectedDay:e}=this.qn;this.Le.value=t&&n&&e?new Date(t,n-1,e).getTime():null}}updateFormValue(){if(this.Se)return;if(!this.$)return;const t=this.getAttribute("name"),{selectedYear:n,selectedMonth:e,selectedDay:i}=this.qn;if(t&&n&&e&&i){const t=Bi(n,e,i);this.$.setFormValue(t)}else this.$.setFormValue("");this.updateValidity()}updateValidity(){if(!this.$)return;const{selectedYear:t,selectedMonth:n,selectedDay:e}=this.qn;if(t&&n&&e){const i=Date.UTC(t,n-1,e),o=this.ke?Si(this.ke):null,r=this.ze?Si(this.ze):null;if(o&&i<Date.UTC(o.year,o.month-1,o.day))return void this.C.set({rangeUnderflow:!0},`Date must be ${this.ke} or later`);if(r&&i>Date.UTC(r.year,r.month-1,r.day))return void this.C.set({rangeOverflow:!0},`Date must be ${this.ze} or earlier`)}this.C.set({})}get form(){return this.$?.form??null}get validity(){return this.$?.validity}get validationMessage(){return this.$?.validationMessage??""}get willValidate(){return this.$?.willValidate??!1}checkValidity(){return this.$?.checkValidity()??!0}reportValidity(){return this.C?.report()??!0}setCustomValidity(t){this.C?.setCustom(t)}handleNavigationChange(t){t.preventDefault(),t.stopPropagation();const{month:n,year:e}=t.detail;this.goTo(n,e)}goTo(t,n){this.qn.displayMonth=t,this.qn.displayYear=n,this.syncChildComponents(),this.dispatchEvent(new CustomEvent("navigate",{detail:{month:t,year:n,action:"navigate",source:"navigation"},bubbles:!0,composed:!0,cancelable:!1}))}handleDayClick(t){t.preventDefault(),t.stopPropagation();const{dayContext:n,year:e,month:i,day:o}=t.detail;this.Se?this.dispatchEvent(new CustomEvent("day-click",{detail:t.detail,bubbles:!0,composed:!0,cancelable:!0})):(this.qn.selectedYear=e,this.qn.selectedMonth=i,this.qn.selectedDay=o,this.qn.displayYear=e,this.qn.displayMonth=i,this.setAttribute("year",""+e),this.setAttribute("month",""+i),this.setAttribute("day",""+o),this.updateFormValue(),this.syncChildComponents(),this.dispatchEvent(new CustomEvent("change",{detail:{year:e,month:i,day:o,action:"select",source:"day-click",dayContext:n},bubbles:!0,composed:!0,cancelable:!1})))}refresh(){this.syncChildComponents(),this.Le&&"function"==typeof this.Le.refresh&&this.Le.refresh()}createNavigation(){const t=document.createElement("ty-calendar-navigation");return t.displayMonth=this.qn.displayMonth,t.displayYear=this.qn.displayYear,t.locale=this.locale,t.size=this.Mn,t.min=this.ke??"",t.max=this.ze??"",this.$e&&(t.width=this.$e),t.view=this._e,t.addEventListener("change",t=>this.handleNavigationChange(t)),t.addEventListener("view-toggle",t=>{this.setView(t.detail.view),this.focusNavTitle()}),this.Ae=t,t}createMonthDisplay(){const t=document.createElement("ty-calendar-month");t.displayMonth=this.qn.displayMonth,t.displayYear=this.qn.displayYear,t.locale=this.locale,t.size=this.Mn,t.min=this.ke,t.max=this.ze,t.flavor=this.Te,this.$e&&(t.width=this.$e);const{selectedYear:n,selectedMonth:e,selectedDay:i}=this.qn;return n&&e&&i&&(t.value=new Date(n,e-1,i).getTime()),this.we&&(t.dayContentFn=this.we),this.xe&&(t.customCSS=this.xe),t.addEventListener("day-click",t=>this.handleDayClick(t)),this.Le=t,t}render(){const t=this.shadowRoot;if(!t)return;b(t,{css:Vi,id:"ty-calendar"}),t.innerHTML="",this.je=void 0;const n=document.createElement("div");if(n.className="calendar-container",n.addEventListener("keydown",t=>this.handleKeydown(t)),this.Fe=n,!this.Me){const t=this.createNavigation();n.appendChild(t)}const e=this.createMonthDisplay();n.appendChild(e),t.appendChild(n),"months"===this._e&&this.showBody()}setView(t){t!==this._e&&("months"===t&&this.Le&&(this.qe=this.Le.getBoundingClientRect().height),this._e=t,this.Ae&&(this.Ae.view=t),this.showBody())}showBody(){const t=this.Fe;if(!t||!this.Le)return;if("days"===this._e)return this.je?.remove(),this.je=void 0,void(this.Le.isConnected||t.appendChild(this.Le));const n=this.buildMonthGrid();this.je?this.je.replaceWith(n):(this.Le.remove(),t.appendChild(n)),this.je=n}static monthIndex(t,n){return 12*t+(n-1)}boundIndices(){const n=this.ke?Si(this.ke):null,e=this.ze?Si(this.ze):null;return{minIdx:n?t.monthIndex(n.year,n.month):null,maxIdx:e?t.monthIndex(e.year,e.month):null}}buildMonthGrid(){const{displayYear:n,displayMonth:e,selectedYear:i,selectedMonth:o}=this.qn,r=Ii(),{minIdx:s,maxIdx:a}=this.boundIndices(),l=document.createElement("div");l.className="month-grid size-"+this.Mn,l.setAttribute("role","grid"),l.setAttribute("aria-label",n+""),this.qe&&(l.style.minHeight=this.qe+"px"),this.$e&&l.style.setProperty("--calendar-width",this.$e);for(let c=1;12>=c;c++){const d=t.monthIndex(n,c),h=null!==s&&s>d||null!==a&&d>a,u=i===n&&o===c,p=document.createElement("button");p.type="button",p.className="month-cell",p.setAttribute("role","gridcell"),p.setAttribute("aria-selected",u+""),p.setAttribute("aria-label",`${Mi(c,this.locale,"long")} ${n}`),p.dataset.month=c+"",p.tabIndex=c===e?0:-1,p.disabled=h,u&&p.classList.add("selected"),r.year===n&&r.month===c&&p.classList.add("current"),p.textContent=Mi(c,this.locale,"short"),p.addEventListener("click",()=>this.pickMonth(c)),l.appendChild(p)}return l.addEventListener("keydown",t=>{const n="ArrowLeft"===t.key?-1:"ArrowRight"===t.key?1:"ArrowUp"===t.key?-3:"ArrowDown"===t.key?3:0;if(!n)return;const i=Array.from(l.querySelectorAll(".month-cell")),o=i.findIndex(t=>t===this.shadowRoot.activeElement),r=i[(-1===o?e-1:o)+n];r&&!r.disabled&&(t.preventDefault(),i.forEach(t=>t.tabIndex=-1),r.tabIndex=0,r.focus())}),l}pickMonth(t){this.setView("days"),this.goTo(t,this.qn.displayYear),this.focusDayGrid()}handleKeydown(n){if("Escape"===n.key&&"months"===this._e)return n.preventDefault(),n.stopPropagation(),this.setView("days"),void this.focusNavTitle();if("PageUp"!==n.key&&"PageDown"!==n.key)return;n.preventDefault();const e="PageUp"===n.key?-1:1,i=n.shiftKey||"months"===this._e?12:1,o=t.monthIndex(this.qn.displayYear,this.qn.displayMonth),{minIdx:r,maxIdx:s}=this.boundIndices();let a=o+e*i;if(null!==r&&r>a&&(a=r),null!==s&&a>s&&(a=s),a!==o)if(this.goTo(a%12+1,Math.floor(a/12)),"months"===this._e){const t=this.je?.querySelector('.month-cell[tabindex="0"]');t?.focus()}else this.focusDayGrid()}focusNavTitle(){requestAnimationFrame(()=>{this.Ae?.shadowRoot?.querySelector(".nav-title")?.focus()})}focus(t){const n="months"===this._e?this.je?.querySelector('.month-cell[tabindex="0"]'):this.Le?.shadowRoot?.querySelector('.calendar-day-cell[tabindex="0"]');n?n.focus(t):super.focus(t)}focusDayGrid(){requestAnimationFrame(()=>{const t=this.Le?.shadowRoot?.querySelector('.calendar-day-cell[tabindex="0"]');t?.focus()})}};Pi.formAssociated=!0;let Wi=Pi;customElements.get("ty-calendar")||customElements.define("ty-calendar",Wi);const Ri=(t,n)=>{const e=e=>n?e?`var(--ty-color-${t}${e}, var(--ty-color-${t}, var(--ty-color-${n}${e})))`:`var(--ty-color-${t}, var(--ty-color-${n}))`:e?`var(--ty-color-${t}${e}, var(--ty-color-${t}))`:`var(--ty-color-${t})`;return`\n:host([flavor="${t}"]) {\n--date-picker-accent: var(--ty-input-${t}-border, ${e("-soft")});\n--date-picker-accent-bold: ${e("")};\n--date-picker-ring: color-mix(in oklab, ${e("")} 15%, transparent);\n}\n:host([flavor="${t}+"]) {\n--date-picker-accent: ${e("")};\n--date-picker-accent-bold: ${e("-strong")};\n--date-picker-ring: color-mix(in oklab, ${e("-strong")} 15%, transparent);\n}\n:host([flavor="${t}-"]) {\n--date-picker-accent: ${e("-faint")};\n--date-picker-accent-bold: ${e("-soft")};\n--date-picker-ring: color-mix(in oklab, ${e("-soft")} 15%, transparent);\n}\n`},Yi=`\n${et}\n:host {\ndisplay: block;\nwidth: auto;\nmin-width: 200px;\nfont-family: inherit;\n--ty-date-picker-bg: var(--ty-input-bg);\n--ty-date-picker-color: var(--ty-input-color);\n--ty-date-picker-placeholder: var(--ty-input-placeholder);\n--ty-date-picker-border: var(--ty-input-border);\n--ty-date-picker-border-hover: var(--ty-input-border-hover);\n--ty-date-picker-border-focus: var(--ty-input-border-focus);\n--ty-date-picker-shadow-focus: var(--ty-input-shadow-focus);\n--ty-date-picker-disabled-bg: var(--ty-input-disabled-bg);\n--ty-date-picker-disabled-color: var(--ty-input-disabled-color);\n--ty-date-picker-radius: var(--ty-radius-md);\n--ty-calendar-surface-bg: var(--ty-surface-floating);\n--ty-calendar-surface-border: var(--ty-input-border);\n--ty-calendar-surface-shadow: var(--ty-shadow-lg, 0 4px 20px rgba(0, 0, 0, 0.08), 0 1px 3px rgba(0, 0, 0, 0.1));\n--ty-calendar-surface-radius: var(--ty-radius-lg);\n--ty-calendar-time-bg: transparent;\n--ty-calendar-time-border: var(--ty-border-faint);\n--ty-calendar-time-label-color: var(--ty-color-neutral);\n--ty-calendar-time-input-color: var(--ty-input-color);\n--ty-calendar-time-placeholder-color: var(--ty-input-placeholder);\n--ty-calendar-time-icon-color: var(--ty-color-neutral-soft);\n}\n.dropdown-container {\ndisplay: flex;\nflex-direction: column;\nwidth: 100%;\nbox-sizing: border-box;\n}\n.ty-field-label {\nfont-size: var(--ty-field-label-font);\nline-height: var(--ty-field-label-leading);\nletter-spacing: var(--ty-tracking-sm);\nfont-weight: var(--ty-font-medium);\ncolor: var(--ty-label-color);\nmargin-bottom: var(--ty-field-label-gap);\npadding-left: var(--ty-field-outer-pad-x);\ndisplay: flex;\nalign-items: center;\n}\n.required-icon {\ndisplay: inline-flex;\nalign-items: center;\ncolor: #ef4444;\nwidth: 12px;\nheight: 12px;\nvertical-align: middle;\nmargin-left: 4px;\n}\n.dropdown-wrapper {\nposition: relative;\ndisplay: block;\nwidth: 100%;\n}\n.date-picker-stub ::slotted([slot="start"]) {\ndisplay: flex;\nalign-items: center;\njustify-content: center;\nflex-shrink: 0;\nmargin-right: 0.5rem;\ncolor: var(--ty-text-soft);\n}\n.date-picker-stub ::slotted(ty-icon[slot="start"]) {\nwidth: 1em;\nheight: 1em;\n}\n.date-picker-stub {\nwidth: 100%;\ncursor: pointer;\nbox-sizing: border-box;\nposition: relative;\ndisplay: flex;\nalign-items: center;\nbackground: var(--ty-date-picker-bg);\ncolor: var(--ty-date-picker-color);\nborder: 1px solid var(--date-picker-accent, var(--ty-date-picker-border));\nborder-radius: var(--ty-date-picker-radius);\nfont-family: inherit;\nfont-size: var(--ty-field-font);\nfont-weight: var(--ty-font-normal);\nline-height: var(--ty-field-leading);\nmin-height: var(--ty-field-height);\npadding: 0 var(--ty-field-pad-x);\npadding-right: calc(var(--ty-field-pad-x) + 1rem + var(--ty-field-pad-x));\ntransition: var(--ty-transition-all), opacity 0.2s ease;\noutline: none;\n}\n.date-picker-stub:hover:not([disabled]):not(.open) {\nborder-color: var(--date-picker-accent-bold, var(--ty-date-picker-border-hover));\n}\n.date-picker-stub[disabled] {\nbackground-color: var(--ty-date-picker-disabled-bg);\ncolor: var(--ty-date-picker-disabled-color);\ncursor: not-allowed;\nopacity: 0.6;\n}\n.date-picker-stub:focus,\n.date-picker-stub.open {\nborder-color: var(--date-picker-accent-bold, var(--ty-date-picker-border-focus));\nbox-shadow: 0 0 0 3px var(--date-picker-ring, var(--ty-date-picker-shadow-focus));\n}\n${n.filter(t=>"neutral"!==t).map(t=>Ri(t)).join("")}\n.stub-text {\nflex: 1;\nwhite-space: nowrap;\noverflow: hidden;\ntext-overflow: ellipsis;\nuser-select: none;\ncolor: inherit;\npointer-events: none;\n}\n.stub-text.placeholder {\ncolor: var(--ty-date-picker-placeholder);\n}\n.stub-icons {\ndisplay: flex;\nalign-items: center;\ngap: var(--ty-spacing-1);\nposition: absolute;\nright: var(--ty-spacing-3);\ntop: 50%;\ntransform: translateY(-50%);\nheight: 1rem;\npointer-events: none;\nz-index: 2;\n}\n.stub-clear {\ndisplay: flex;\nalign-items: center;\njustify-content: center;\nwidth: 1rem;\nheight: 1rem;\npadding: 0;\nborder: none;\nbackground: none;\ncolor: var(--ty-color-neutral-soft);\ncursor: pointer;\nborder-radius: var(--ty-radius-sm);\ntransition: var(--ty-local-transition, all 0.15s ease);\npointer-events: auto;\n}\n.stub-clear:hover {\ncolor: var(--ty-color-danger);\nbackground-color: var(--ty-bg-danger-soft);\n}\n.stub-arrow {\ndisplay: flex;\nalign-items: center;\njustify-content: center;\nwidth: 1rem;\nheight: 1rem;\ncolor: var(--date-picker-accent, var(--ty-color-neutral-soft));\n}\n.date-picker-stub:hover .stub-arrow {\ncolor: var(--date-picker-accent-bold, var(--ty-color-neutral));\n}\n.date-picker-stub:focus .stub-arrow,\n.date-picker-stub.open .stub-arrow {\ncolor: var(--date-picker-accent-bold, var(--ty-date-picker-border-focus));\n}\n.calendar-dialog {\nposition: fixed;\nflex-direction: column;\nmax-width: 90vw;\nmargin: 0;\npadding: 0;\nborder: none;\nbackground: transparent;\nbox-sizing: border-box;\npadding: var(--calendar-padding, 8px);\nopacity: 0;\nscale: 0.96;\ntranslate: 0 -6px;\ntransform-origin: top center;\ntransition:\nopacity var(--ty-popup-duration, 180ms) var(--ty-popup-ease, cubic-bezier(0.34, 1.56, 0.64, 1)),\nscale var(--ty-popup-duration, 180ms) var(--ty-popup-ease, cubic-bezier(0.34, 1.56, 0.64, 1)),\ntranslate var(--ty-popup-duration, 180ms) var(--ty-popup-ease, cubic-bezier(0.34, 1.56, 0.64, 1));\ntransform: translate(var(--calendar-offset-x, 0px), var(--calendar-offset-y, 0px));\ntop: -1000px;\nleft: -1000px;\n}\n.calendar-dialog.position-below {\nleft: var(--calendar-x);\ntop: var(--calendar-y);\n}\n.calendar-dialog.position-above {\nleft: var(--calendar-x);\nbottom: var(--calendar-y);\ntop: auto;\nflex-direction: column-reverse;\ntranslate: 0 6px;\ntransform-origin: bottom center;\n}\n.calendar-dialog.open {\nopacity: 1;\nscale: 1;\ntranslate: 0 0;\n}\n@starting-style {\n.calendar-dialog.open {\nopacity: 0;\nscale: 0.96;\ntranslate: 0 -6px;\n}\n.calendar-dialog.open.position-above {\ntranslate: 0 6px;\n}\n}\n.calendar-dialog::backdrop {\nbackground: transparent\n}\n.calendar-content {\nbackground-color: var(--ty-calendar-surface-bg);\nborder: 1px solid var(--ty-calendar-surface-border);\nborder-radius: var(--ty-calendar-surface-radius);\nbox-shadow: var(--ty-calendar-surface-shadow);\noverflow: hidden;\ndisplay: flex;\nflex-direction: column;\nalign-items: center;\n}\n.native-date-input {\nposition: absolute;\ninset: 0;\nopacity: 0;\nwidth: 100%;\nheight: 100%;\nmargin: 0;\npadding: 0;\nborder: none;\ncursor: pointer;\nz-index: 1;\n}\n.native-date-input::-webkit-calendar-picker-indicator {\nposition: absolute;\ninset: 0;\nwidth: 100%;\nheight: 100%;\nmargin: 0;\npadding: 0;\ncursor: pointer;\n}\n.time-section {\ndisplay: flex;\nflex-direction: column;\ngap: 0.375rem;\nwidth: 100%;\nbox-sizing: border-box;\npadding: 0.75rem 1rem 0.875rem;\nborder-top: 1px solid var(--ty-calendar-time-border);\nbackground-color: var(--ty-calendar-time-bg);\n}\n.time-row {\ndisplay: flex;\nalign-items: center;\njustify-content: space-between;\ngap: 0.75rem;\n}\n.time-label {\ndisplay: inline-flex;\nalign-items: center;\ngap: 0.5rem;\nfont-size: var(--ty-font-sm);\nfont-weight: 500;\ncolor: var(--ty-calendar-time-label-color);\n}\n.time-icon {\ndisplay: flex;\ncolor: var(--ty-calendar-time-icon-color);\nwidth: 1rem;\nheight: 1rem;\n}\n.time-fields {\ndisplay: inline-flex;\nalign-items: center;\ngap: 0.25rem;\n}\n.time-colon {\nfont-weight: 600;\ncolor: var(--ty-calendar-time-label-color);\n}\n.time-input {\nwidth: 2.75rem;\nheight: 2.125rem;\nbox-sizing: border-box;\nborder: 1px solid var(--ty-input-border);\nborder-radius: var(--ty-radius-md, 0.5rem);\nbackground: var(--ty-input-bg);\ncolor: var(--ty-calendar-time-input-color);\nfont-family: inherit;\nfont-size: var(--ty-font-base, 0.9375rem);\nfont-weight: 500;\nfont-variant-numeric: tabular-nums;\ntext-align: center;\npadding: 0;\noutline: none;\ncaret-color: transparent;\ntransition: var(--ty-transition-all);\n}\n.time-input::selection {\nbackground: var(--ty-bg-primary-soft, var(--ty-bg-primary));\n}\n.time-input:hover {\nborder-color: var(--ty-input-border-hover, var(--ty-input-border));\n}\n.time-input:focus {\nborder-color: var(--ty-input-border-focus);\nbox-shadow: 0 0 0 3px var(--ty-input-shadow-focus);\n}\n.time-summary {\ndisplay: flex;\njustify-content: space-between;\ngap: 0.75rem;\nfont-size: var(--ty-font-xs, 0.75rem);\ncolor: var(--ty-calendar-time-label-color);\n}\n.time-summary-iso {\nfont-family: var(--ty-font-mono, ui-monospace, SFMono-Regular, monospace);\ncolor: var(--ty-calendar-time-placeholder-color);\n}\n`,Ui="<svg stroke='currentColor' fill='none' stroke-width='2' viewBox='0 0 24 24' width='16' height='16' xmlns='http://www.w3.org/2000/svg'><rect x='3' y='4' width='18' height='18' rx='2' ry='2'></rect><line x1='16' y1='2' x2='16' y2='6'></line><line x1='8' y1='2' x2='8' y2='6'></line><line x1='3' y1='10' x2='21' y2='10'></line></svg>",Xi="<svg stroke='currentColor' fill='none' stroke-width='2' viewBox='0 0 24 24' width='14' height='14' xmlns='http://www.w3.org/2000/svg'><line x1='18' y1='6' x2='6' y2='18'></line><line x1='6' y1='6' x2='18' y2='18'></line></svg>",Ki=new WeakMap;let Zi=0;function Ji(t){let n=Ki.get(t);return void 0===n&&(n=++Zi,Ki.set(t,n)),n}function Gi(t,n){if(!t)return null;let e=null;if("string"==typeof t)if(/^\d{4}-\d{2}-\d{2}$/.test(t)){const[n,i,o]=t.split("-");e=new Date(parseInt(n,10),parseInt(i,10)-1,parseInt(o,10),0,0,0,0)}else e=new Date(t);else"number"==typeof t&&(e=new Date(t));return!e||isNaN(e.getTime())?null:{year:e.getFullYear(),month:e.getMonth()+1,day:e.getDate(),hour:n?e.getHours():0,minute:n?e.getMinutes():0}}function Qi(t){const{year:n,month:e,day:i,hour:o,minute:r}=t;return n&&e&&i?new Date(n,e-1,i,o||0,r||0,0,0):null}function to(t){if(!t.year||!t.month||!t.day)return null;const n=Qi(t);return n?n.toISOString():null}function no(t,n){if(!t.year||!t.month||!t.day)return null;const e=(""+t.year).padStart(4,"0"),i=(""+t.month).padStart(2,"0"),o=(""+t.day).padStart(2,"0");return n?`${e}-${i}-${o}T${(""+(t.hour||0)).padStart(2,"0")}:${(""+(t.minute||0)).padStart(2,"0")}`:`${e}-${i}-${o}`}class eo{constructor(t,n,e,i=0,o=0){this.hourEl=t,this.minuteEl=n,this.onChange=e,this.typed="",this.hour=i,this.minute=o,this.paint(),this.wire(t,"hour"),this.wire(n,"minute")}static pad(t){return(""+t).padStart(2,"0")}paint(){this.hourEl.value=eo.pad(this.hour),this.minuteEl.value=eo.pad(this.minute)}wire(t,n){const e="hour"===n?23:59,i="hour"===n?2:5;t.addEventListener("focus",()=>{this.typed="",t.select()}),t.addEventListener("click",()=>t.select()),t.addEventListener("blur",()=>{this.typed=""}),t.addEventListener("input",()=>this.paint()),t.addEventListener("keydown",o=>{const r=t=>{"hour"===n?this.hour=t:this.minute=t,this.paint(),this.onChange(this.hour,this.minute)},s="hour"===n?this.hour:this.minute;if(/^\d$/.test(o.key)){o.preventDefault();const s=this.typed+o.key,a=2===s.length||1===s.length&&+o.key>i;return r(Math.min(+s,e)),void(a?(this.typed="","hour"===n?this.minuteEl.focus():t.select()):this.typed=s)}switch(o.key){case"ArrowUp":case"ArrowDown":{o.preventDefault();const n="ArrowUp"===o.key?1:-1;return this.typed="",r((s+n+e+1)%(e+1)),void t.select()}case"Backspace":case"Delete":return o.preventDefault(),"minute"===n&&""===this.typed&&"Backspace"===o.key&&0===s?void this.hourEl.focus():(this.typed="",r(0),void t.select());case"ArrowLeft":return void("minute"===n&&(o.preventDefault(),this.hourEl.focus()));case"ArrowRight":return void("hour"===n&&(o.preventDefault(),this.minuteEl.focus()));case"Tab":case"Escape":case"Enter":return;default:1!==o.key.length||o.metaKey||o.ctrlKey||o.preventDefault()}})}getTime(){return{hour:this.hour,minute:this.minute}}setTime(t,n){this.hour=t,this.minute=n,this.paint()}}const io=class extends u{constructor(){super(),this.qn={withTime:!1,open:!1},this.Ve=0,this.j=null,b(this.shadowRoot,{css:Yi,id:"ty-date-picker"})}onConnect(){this.initializeState(),this.render(),this.updateFormValue(),this.rt=at(this,()=>{this.render()}),this.F()}F(){this.j=k(this.shadowRoot,this.j,"default"===this.flavor?"neutral":this.flavor,({base:t})=>(t=>Ri(t,"neutral"))(t))}onDisconnect(){this.rt&&(this.rt(),this.rt=void 0),this.cleanup()}onPropertiesChanged(t){for(const{name:n,newValue:e}of t)switch(n){case"flavor":this.F();break;case"size":case"label":case"placeholder":case"required":case"disabled":this.updateValidity();break;case"noClear":case"format":case"locale":break;case"value":{const t=Gi(e,this.qn.withTime);if(null===t){(void 0!==this.qn.year||void 0!==this.qn.month||void 0!==this.qn.day)&&(this.qn={withTime:this.qn.withTime,open:this.qn.open}),this.syncFormValue();break}const n={year:this.qn.year,month:this.qn.month,day:this.qn.day,hour:this.qn.hour,minute:this.qn.minute};(t?.year!==n.year||t?.month!==n.month||t?.day!==n.day||t?.hour!==n.hour||t?.minute!==n.minute)&&(this.qn={...this.qn,...t},this.syncFormValue());break}case"with-time":e!==this.qn.withTime&&(this.qn.withTime=e,void 0!==this.qn.year&&void 0!==this.qn.month&&void 0!==this.qn.day&&this.syncFormValue())}}getFormValue(){return to(this.getComponents())}updateFormValue(){this.$.setFormValue(this.getFormValue()??""),this.updateValidity()}focus(t){const n=this.shadowRoot?.querySelector(".date-picker-stub");n?n.focus(t):super.focus(t)}updateValidity(){if(this.getProperty("disabled")||!this.getProperty("required")||this.getFormValue())return void this.applyValidity({});const t=this.shadowRoot?.querySelector(".date-picker-stub, .native-date-input");this.applyValidity({valueMissing:!0},"Please select a date",t??void 0)}getComponents(){return{year:this.qn.year,month:this.qn.month,day:this.qn.day,hour:this.qn.hour,minute:this.qn.minute}}hasDate(){return!!(this.qn.year&&this.qn.month&&this.qn.day)}getFormattedValue(t){const n=t||this.getComponents();return n.year&&n.month&&n.day?function(t,n,e,i){if(!t.year||!t.month||!t.day)return null;const o=Qi(t);if(!o)return null;const r={dateStyle:n};return i&&(r.timeStyle="short"),new Intl.DateTimeFormat(e,r).format(o)}(n,this.getProperty("format")||"long",st(this,this.getProperty("locale")),this.qn.withTime):null}initializeState(){const t=this.getProperty("value"),n=this.getProperty("with-time"),e=Gi(t,n);this.qn=null===e?{withTime:n,open:!1}:{...e,withTime:n,open:!1},this.syncFormValue()}updateState(t,n=!1){this.qn={...this.qn,...t},(n||!this.qn.open||!this.qn.withTime)&&this.syncFormValue()}syncFormValue(){const t=this.getFormValue();t!==this.getProperty("value")&&this.setProperty("value",t||null)}handleTimeInputChange(t,n){if(!this.hasDate())return;const e={...this.getComponents(),hour:t,minute:n};this.updateState(e,!0),this.emitChangeEvent(e,"time-change"),this.updateTimeSummary()}updateTimeSummary(t=this.shadowRoot?.querySelector(".time-summary")){if(!t)return;const n=this.getComponents(),e=t.querySelector(".time-summary-date"),i=t.querySelector(".time-summary-iso");if(!n.year||!n.month||!n.day)return e.textContent="Pick a day",void(i.textContent="");const o=st(this,this.getProperty("locale"))||void 0,r=new Date(n.year,n.month-1,n.day,n.hour??0,n.minute??0),s=new Intl.DateTimeFormat(o,{weekday:"short",month:"short",day:"numeric"}).format(r),a=new Intl.DateTimeFormat(o,{hour:"2-digit",minute:"2-digit",hourCycle:"h23"}).format(r);e.textContent=`${s} · ${a}`,i.textContent=no(n,!0)??""}emitChangeEvent(t,n){const e=t?to(t):null,i=t?no(t,this.qn.withTime):null,o=t?Qi(t)?.getTime()??null:null,r=t?this.getFormattedValue(t):null,s=new CustomEvent("change",{detail:{value:e,localValue:i,milliseconds:o,formatted:r,source:n},bubbles:!0,cancelable:!0});this.dispatchEvent(s)}get size(){return this.getProperty("size")}set size(t){this.setProperty("size",t)}get placement(){return this.getProperty("placement")}set placement(t){this.setProperty("placement",t)}get flavor(){return this.getProperty("flavor")}set flavor(t){this.setProperty("flavor",t)}get label(){return this.getProperty("label")}set label(t){this.setProperty("label",t)}get placeholder(){return this.getProperty("placeholder")}set placeholder(t){this.setProperty("placeholder",t)}get name(){return this.getProperty("name")}set name(t){this.setProperty("name",t)}get format(){return this.getProperty("format")}set format(t){this.setProperty("format",t)}get locale(){return this.getProperty("locale")}set locale(t){this.setProperty("locale",t)}get required(){return this.getProperty("required")}set required(t){this.setProperty("required",t)}get disabled(){return this.getProperty("disabled")}set disabled(t){this.setProperty("disabled",t)}get noClear(){return this.getProperty("noClear")}set noClear(t){this.setProperty("noClear",t)}get min(){return this.getProperty("min")}set min(t){this.setProperty("min",t??"")}get max(){return this.getProperty("max")}set max(t){this.setProperty("max",t??"")}get withTime(){return this.getProperty("with-time")}set withTime(t){this.setProperty("with-time",t)}get value(){return this.getProperty("value")||null}set value(t){if(null==t||""===t)this.setProperty("value",null);else{const n=t instanceof Date?t.toISOString():t;this.setProperty("value",n)}}clear(){this.clearValue()}buildStubClasses(){const t=["date-picker-stub"];return this.getProperty("disabled")&&t.push("disabled"),this.getProperty("required")&&t.push("required"),this.qn.open&&t.push("open"),t.join(" ")}renderStub(){const t=document.createElement("div");t.className=this.buildStubClasses();const n=this.getProperty("disabled");n&&t.setAttribute("disabled","true"),t.setAttribute("role","button"),t.setAttribute("aria-haspopup","dialog"),t.setAttribute("aria-expanded",this.qn.open+""),t.setAttribute("tabindex",n?"-1":"0"),n&&t.setAttribute("aria-disabled","true"),this.getProperty("label")&&t.setAttribute("aria-labelledby","date-picker-label-"+Ji(this)),t.addEventListener("keydown",t=>{this.qn.open||"Enter"!==t.key&&" "!==t.key||(t.preventDefault(),this.handleStubClick(t))});const e=document.createElement("slot");e.name="start";const i=document.createElement("span");i.className="stub-text";const o=this.getFormattedValue(),r=this.getProperty("placeholder")||"Select date...";i.textContent=o||r,o||i.classList.add("placeholder");const s=document.createElement("div");if(s.className="stub-icons",!this.getProperty("noClear")&&o&&!n){const t=document.createElement("button");t.className="stub-clear",t.type="button",t.innerHTML=Xi,t.addEventListener("click",t=>this.handleClearClick(t)),s.appendChild(t)}const a=document.createElement("span");return a.className="stub-arrow",a.innerHTML=Ui,s.appendChild(a),t.addEventListener("click",t=>this.handleStubClick(t)),t.appendChild(e),t.appendChild(i),t.appendChild(s),t}createTimeField(t){const n=document.createElement("input");return n.type="text",n.className="time-input time-"+t,n.inputMode="numeric",n.autocomplete="off",n.maxLength=2,n.setAttribute("aria-label","hour"===t?"Hours":"Minutes"),n}renderTimeSection(){const t=document.createElement("div");t.className="time-section",t.setAttribute("role","group"),t.setAttribute("aria-label","Time");const n=document.createElement("div");n.className="time-row";const e=document.createElement("span");e.className="time-label";const i=document.createElement("span");i.className="time-icon",i.innerHTML="<svg stroke='currentColor' fill='none' stroke-width='2' viewBox='0 0 24 24' width='16' height='16' xmlns='http://www.w3.org/2000/svg'><circle cx='12' cy='12' r='10'></circle><polyline points='12,6 12,12 16,14'></polyline></svg>",e.appendChild(i),e.appendChild(document.createTextNode("Time"));const o=document.createElement("div");o.className="time-fields";const r=this.createTimeField("hour"),s=this.createTimeField("minute"),a=document.createElement("span");a.className="time-colon",a.textContent=":",o.appendChild(r),o.appendChild(a),o.appendChild(s),this.Ie=new eo(r,s,(t,n)=>this.handleTimeInputChange(t,n),this.qn.hour||0,this.qn.minute||0),n.appendChild(e),n.appendChild(o);const l=document.createElement("div");l.className="time-summary",l.setAttribute("aria-live","polite");const c=document.createElement("span");c.className="time-summary-date";const d=document.createElement("span");return d.className="time-summary-iso",l.appendChild(c),l.appendChild(d),this.updateTimeSummary(l),t.appendChild(n),t.appendChild(l),t}renderCalendarDropdown(){const t=document.createElement("dialog");t.className="calendar-dialog";const n=document.createElement("div");n.className="calendar-content";const e=document.createElement("ty-calendar");this.qn.year&&this.qn.month&&this.qn.day&&(e.setAttribute("year",""+this.qn.year),e.setAttribute("month",""+this.qn.month),e.setAttribute("day",""+this.qn.day));const i=st(this,this.getProperty("locale"));i&&e.setAttribute("locale",i);const o=this.getProperty("min"),r=this.getProperty("max");o&&e.setAttribute("min",o),r&&e.setAttribute("max",r);const s=this.getProperty("flavor");return s&&"default"!==s&&e.setAttribute("flavor",s),e.addEventListener("change",t=>this.handleCalendarChange(t)),n.appendChild(e),this.qn.withTime&&n.appendChild(this.renderTimeSection()),t.appendChild(n),t.addEventListener("close",()=>{this.updateState({open:!1})}),t}renderNativeInput(){const t=document.createElement("div");t.className="dropdown-wrapper";const n=document.createElement("div");n.className=this.buildStubClasses();const e=this.getProperty("disabled");e&&n.setAttribute("disabled","true");const i=document.createElement("input");i.className="native-date-input",i.type=this.qn.withTime?"datetime-local":"date",e&&(i.disabled=!0),this.getProperty("required")&&(i.required=!0);const o=this.getProperty("min"),r=this.getProperty("max");o&&(i.min=this.qn.withTime?o+"T00:00":o),r&&(i.max=this.qn.withTime?r+"T23:59":r);const s=no(this.getComponents(),this.qn.withTime);s&&(i.value=s);const a=this.getProperty("placeholder")||"Select date...",l=this.getFormattedValue(),c=document.createElement("span");c.className="stub-text"+(l?"":" placeholder"),c.textContent=l||a,i.addEventListener("change",()=>{if(!i.value)return void this.clearValue();const t=Gi(i.value,this.qn.withTime);t&&(this.updateState(t,!0),this.emitChangeEvent(t,"selection"))});const d=document.createElement("slot");d.name="start",n.appendChild(d),n.appendChild(i),n.appendChild(c);const h=document.createElement("div");if(h.className="stub-icons",!this.getProperty("noClear")&&s&&!e){const t=document.createElement("button");t.className="stub-clear",t.type="button",t.innerHTML=Xi,t.addEventListener("click",t=>this.handleClearClick(t)),h.appendChild(t)}const u=document.createElement("span");return u.className="stub-arrow",u.innerHTML=Ui,h.appendChild(u),n.appendChild(h),t.appendChild(n),t}calculateCalendarPosition(){if(!this.shadowRoot)return;if(ue())return;const t=this.shadowRoot.querySelector(".date-picker-stub"),n=this.shadowRoot.querySelector(".calendar-dialog");if(!t||!n)return;const e=t.getBoundingClientRect(),i=n.getBoundingClientRect(),o=i.height||400,r=i.width||320,s=Gt(this.getProperty("placement")),a=nn({anchorRect:e,popupWidth:r,popupHeight:o,gap:0,align:s.align,side:s.side}),l=a.below,c=l?a.topY:a.bottomY;this.style.setProperty("--calendar-x",a.x-8+"px"),this.style.setProperty("--calendar-y",c+"px"),this.style.setProperty("--calendar-offset-x","0px"),this.style.setProperty("--calendar-offset-y","0px"),l?(n.classList.add("position-below"),n.classList.remove("position-above")):(n.classList.add("position-above"),n.classList.remove("position-below"))}renderContainer(){const t=document.createElement("div");t.className="dropdown-container";const n=this.getProperty("label");if(n){const e=document.createElement("label");e.className="ty-field-label",e.id="date-picker-label-"+Ji(this),e.innerHTML=n+(this.getProperty("required")?'<span class="required-icon">*</span>':""),t.appendChild(e)}return t}render(){if(!this.shadowRoot)return;if(b(this.shadowRoot,{css:Yi,id:"ty-date-picker"}),ue()){if(this.shadowRoot.querySelector(".native-date-input"))return void this.updateDisplay();this.shadowRoot.innerHTML="";const t=this.renderContainer();return t.appendChild(this.renderNativeInput()),void this.shadowRoot.appendChild(t)}const t=this.shadowRoot.querySelector(".calendar-dialog");if(t&&t.open&&this.qn.open)return this.updateDisplay(),void this.calculateCalendarPosition();this.shadowRoot.innerHTML="";const n=this.renderContainer(),e=document.createElement("div");e.className="dropdown-wrapper",e.appendChild(this.renderStub()),e.appendChild(this.renderCalendarDropdown()),n.appendChild(e),this.shadowRoot.appendChild(n),this.setupEventListeners()}updateDisplay(){if(!this.shadowRoot)return;const t=this.getFormattedValue(),n=this.getProperty("placeholder")||"Select date...",e=this.hasDate(),i=!this.getProperty("noClear"),o=this.getProperty("disabled"),r=this.shadowRoot.querySelector(".stub-text");r&&(r.textContent=t||n,r.classList.toggle("placeholder",!t));const s=this.shadowRoot.querySelector(".stub-clear");if(s&&(s.style.display=i&&e&&!o?"":"none"),ue()){const t=this.shadowRoot.querySelector(".native-date-input");if(t){const n=no(this.getComponents(),this.qn.withTime);t.value=n||""}return}const a=this.shadowRoot.querySelector("ty-calendar");if(a&&e&&(a.setAttribute("year",""+this.qn.year),a.setAttribute("month",""+this.qn.month),a.setAttribute("day",""+this.qn.day)),a){const t=this.getProperty("flavor");t&&"default"!==t?a.setAttribute("flavor",t):a.removeAttribute("flavor");const n=this.getProperty("min"),e=this.getProperty("max");n?a.setAttribute("min",n):a.removeAttribute("min"),e?a.setAttribute("max",e):a.removeAttribute("max")}this.Ie&&void 0!==this.qn.hour&&void 0!==this.qn.minute&&this.Ie.setTime(this.qn.hour,this.qn.minute),this.updateTimeSummary()}setupEventListeners(){this.Oe&&document.removeEventListener("click",this.Oe),this.He&&document.removeEventListener("keydown",this.He),this.Oe=t=>this.handleOutsideClick(t),this.He=t=>this.handleEscapeKey(t),document.addEventListener("click",this.Oe),document.addEventListener("keydown",this.He);const t=this.shadowRoot?.querySelector(".calendar-dialog");t&&(this.Ne=t=>this.handleDialogClick(t),t.addEventListener("click",this.Ne))}handleStubClick(t){t.preventDefault();const n=this.shadowRoot?.querySelector(".calendar-dialog");!this.qn.open||n&&n.open||(this.updateState({open:!1},!0),Tn("date-picker-"+(this.id||""+this))),!this.getProperty("disabled")&&Date.now()-this.Ve>300&&this.openDropdown()}clearValue(){this.updateState({year:void 0,month:void 0,day:void 0,hour:void 0,minute:void 0},!0),this.value=null,this.emitChangeEvent(null,"clear"),this.render()}handleClearClick(t){t.preventDefault(),t.stopPropagation(),this.clearValue()}handleCalendarChange(t){t.preventDefault(),t.stopPropagation();const n=t.detail.dayContext;if(!n)return;const e={year:n.year,month:n.month,day:n.dayInMonth,hour:this.qn.hour,minute:this.qn.minute};this.updateState(e,!0),this.emitChangeEvent(e,"selection"),this.qn.withTime?requestAnimationFrame(()=>{if(!this.shadowRoot)return;this.updateTimeSummary();const t=this.shadowRoot.querySelector(".time-hour");t&&t.focus()}):this.closeDropdown()}handleDialogClick(t){if(!this.shadowRoot)return;const n=this.shadowRoot.querySelector(".calendar-dialog"),e=this.shadowRoot.querySelector(".calendar-content");t.target===n&&this.qn.open&&e&&!e.contains(t.target)&&(t.preventDefault(),t.stopPropagation(),this.closeDropdown())}handleOutsideClick(t){if(!this.shadowRoot)return;const n=t.target,e=this.shadowRoot.querySelector(".calendar-dialog");this.qn.open&&e&&!this.contains(n)&&!e.contains(n)&&this.closeDropdown()}handleEscapeKey(t){"Escape"===t.key&&this.qn.open&&(t.preventDefault(),this.closeDropdown())}openDropdown(){this.qn.open||ue()||(this.updateState({open:!0}),this.dispatchEvent(new CustomEvent("open")),this.render(),requestAnimationFrame(()=>{if(!this.shadowRoot)return;const t=this.shadowRoot.querySelector(".calendar-dialog");if(t){Sn("date-picker-"+(this.id||""+this)),t.showModal(),this.calculateCalendarPosition(),t.classList.add("open");const n=this.shadowRoot.querySelector(".date-picker-stub");n&&n.setAttribute("aria-expanded","true");const e=this.shadowRoot.activeElement;e&&e.blur()}}))}closeDropdown(){if(!this.qn.open)return;this.Ve=Date.now();const t="date-picker-"+(this.id||""+this);if(this.updateState({open:!1},!0),Tn(t),this.shadowRoot){const t=this.shadowRoot.querySelector(".calendar-dialog");t&&(t.classList.remove("position-above","position-below","open"),t.close());const n=this.shadowRoot.querySelector(".date-picker-stub");n&&n.setAttribute("aria-expanded","false")}this.dispatchEvent(new CustomEvent("close")),this.render()}cleanup(){if(this.Oe&&document.removeEventListener("click",this.Oe),this.He&&document.removeEventListener("keydown",this.He),this.Ne&&this.shadowRoot){const t=this.shadowRoot.querySelector(".calendar-dialog");t&&t.removeEventListener("click",this.Ne)}this.qn.open&&Tn("date-picker-"+(this.id||""+this)),this.Oe=void 0,this.He=void 0,this.Ne=void 0,this.Ie=void 0}};io.properties={placement:{type:"string",visual:!0,default:""},size:{type:"string",visual:!0,default:e,validate:t=>["xs","sm","md","lg","xl"].includes(t),coerce:t=>["xs","sm","md","lg","xl"].includes(t)?t:e},flavor:{type:"string",visual:!0,default:"default"},label:{type:"string",visual:!0,default:""},placeholder:{type:"string",visual:!0,default:"Select date..."},name:{type:"string",visual:!1,default:""},min:{type:"string",visual:!0,default:""},max:{type:"string",visual:!0,default:""},required:{type:"boolean",visual:!0,default:!1},disabled:{type:"boolean",visual:!0,default:!1},noClear:{type:"boolean",visual:!0,default:!1},format:{type:"string",visual:!0,default:"long",validate:t=>["short","medium","long","full"].includes(t),coerce:t=>["short","medium","long","full"].includes(t)?t:"long"},locale:{type:"string",visual:!0,default:""},value:{type:"string",visual:!0,formValue:!0,emitChange:!1,default:null},"with-time":{type:"boolean",visual:!0,default:!1}},io.formAssociated=!0;let oo=io;customElements.get("ty-date-picker")||customElements.define("ty-date-picker",oo);const ro=new Map,so=new Map;function ao(t){return ro.get(t)}function lo(t,n){so.has(t)||so.set(t,new Set),so.get(t).add(n);const e=ro.get(t);return e&&n(e),()=>{so.get(t)?.delete(n),0===so.get(t)?.size&&so.delete(t)}}function co(){return Object.fromEntries(ro)}function ho(t,n,e){ro.set(t,{width:n,height:e});const i=so.get(t);if(i){const t={width:n,height:e};i.forEach(n=>n(t))}}function uo(t){ro.delete(t),so.delete(t)}class TyResizeObserver extends HTMLElement{constructor(){super(),this.qt=null,this.Be=null;const t=this.attachShadow({mode:"open"});b(t,{css:"\n:host {\ndisplay: block;\nposition: relative;\n}\n::slotted(*) {\n}\n",id:"ty-resize-observer"}),t.innerHTML="<slot></slot>"}static get observedAttributes(){return["id","debounce"]}get debounce(){return parseInt(this.getAttribute("debounce")||"0")}set debounce(t){this.setAttribute("debounce",t+"")}connectedCallback(){this.setupObserver()}attributeChangedCallback(t,n,e){if("id"===t&&n&&n!==e&&(uo(n),e&&this.isConnected)){const{width:t,height:n}=this.getBoundingClientRect();ho(e,t,n)}}disconnectedCallback(){this.cleanup()}setupObserver(){this.qt=new ResizeObserver(t=>{this.debounce>0?(this.Be&&clearTimeout(this.Be),this.Be=window.setTimeout(()=>{this.handleResize(t)},this.debounce)):this.handleResize(t)}),this.qt.observe(this)}handleResize(t){const{width:n,height:e}=t[0].contentRect;this.id&&ho(this.id,n,e)}cleanup(){this.qt&&(this.qt.disconnect(),this.qt=null),this.Be&&(clearTimeout(this.Be),this.Be=null),this.id&&uo(this.id)}}customElements.get("ty-resize-observer")||customElements.define("ty-resize-observer",TyResizeObserver);const po=`\n:host {\ndisplay: block;\nposition: relative;\noverflow: hidden;\n}\n.scroll-wrapper {\nwidth: 100%;\nheight: 100%;\noverflow-y: auto;\noverflow-x: hidden;\n}\n:host([overflow-x]) .scroll-wrapper {\noverflow-x: auto;\n}\n:host([max-height]) .scroll-wrapper {\nmax-height: var(--scroll-max-height);\n}\n:host([hide-scrollbar]) .scroll-wrapper {\nscrollbar-width: none;\n-ms-overflow-style: none;\n}\n:host([hide-scrollbar]) .scroll-wrapper::-webkit-scrollbar {\ndisplay: none;\n}\n:host([scroll-anchoring]) .scroll-wrapper {\noverflow-anchor: none;\n}\n:host([custom-scrollbar]) .scroll-wrapper {\nscrollbar-width: none;\n-ms-overflow-style: none;\n}\n:host([custom-scrollbar]) .scroll-wrapper::-webkit-scrollbar {\ndisplay: none;\n}\n:host([custom-scrollbar]:hover) .ty-scrollbar-track-y.has-overflow,\n:host([custom-scrollbar]:hover) .ty-scrollbar-track-x.has-overflow {\nopacity: 1;\n}\n:host([custom-scrollbar][overflow-x]) .ty-scrollbar-track-y {\nbottom: var(--ty-scrollbar-width, 8px);\n}\n:host([custom-scrollbar]) .ty-scrollbar-track-x {\nright: var(--ty-scrollbar-width, 8px);\n}\n.shadow-overlay {\nposition: absolute;\ninset: 0;\npointer-events: none;\nz-index: 2;\n}\n.shadow-top,\n.shadow-bottom,\n.shadow-left,\n.shadow-right {\nposition: absolute;\nopacity: 0;\ntransition: var(--ty-scroll-shadow-transition, opacity 0.2s ease-out);\npointer-events: none;\n}\n.shadow-top {\ntop: -40px;\nleft: 0;\nright: 0;\nheight: 80px;\nbackground: var(--ty-scroll-shadow-top, radial-gradient(\nellipse 100% 30% at center,\ncolor-mix(in oklab, var(--ty-color-neutral-bold) 12%, transparent),\ntransparent,\ntransparent\n));\nclip-path: inset(50% 0 0 0);\n}\n.shadow-bottom {\nbottom: -30px;\nleft: 0;\nright: 0;\nheight: 60px;\nbackground: var(--ty-scroll-shadow-bottom, radial-gradient(\nellipse 100% 20% at center,\ncolor-mix(in oklab, var(--ty-color-neutral-bold) 18%, transparent),\ntransparent,\ntransparent\n));\nclip-path: inset(0 0 50% 0);\n}\n.shadow-left {\nleft: -30px;\ntop: 0;\nbottom: 0;\nwidth: 60px;\nbackground: var(--ty-scroll-shadow-left, radial-gradient(\nellipse 30% 100% at center,\ncolor-mix(in oklab, var(--ty-color-neutral-bold) 12%, transparent),\ntransparent,\ntransparent\n));\nclip-path: inset(0 0 0 50%);\n}\n.shadow-right {\nright: -30px;\ntop: 0;\nbottom: 0;\nwidth: 60px;\nbackground: var(--ty-scroll-shadow-right, radial-gradient(\nellipse 30% 100% at center,\ncolor-mix(in oklab, var(--ty-color-neutral-bold) 12%, transparent),\ntransparent,\ntransparent\n));\nclip-path: inset(0 50% 0 0);\n}\n.shadow-left,\n.shadow-right {\ndisplay: none;\n}\n:host([overflow-x]) .shadow-left,\n:host([overflow-x]) .shadow-right {\ndisplay: block;\n}\n.shadow-top.visible,\n.shadow-bottom.visible,\n.shadow-left.visible,\n.shadow-right.visible {\nopacity: 1;\n}\n:host([no-shadow]) .shadow-overlay {\ndisplay: none;\n}\n@media (pointer: coarse) and (hover: none) {\n:host([custom-scrollbar]) .scroll-wrapper {\nscrollbar-width: thin;\nscrollbar-color: var(--ty-border, color-mix(in oklab, var(--ty-color-neutral-bold) 25%, transparent)) transparent;\n}\n:host([custom-scrollbar]) .scroll-wrapper::-webkit-scrollbar {\ndisplay: block;\nwidth: 4px;\nheight: 4px;\n}\n:host([custom-scrollbar]) .scroll-wrapper::-webkit-scrollbar-thumb {\nbackground: var(--ty-border, color-mix(in oklab, var(--ty-color-neutral-bold) 25%, transparent));\nborder-radius: 2px;\n}\n}\n@media (prefers-reduced-motion: reduce) {\n.shadow-top,\n.shadow-bottom,\n.shadow-left,\n.shadow-right {\ntransition-duration: 0ms !important;\n}\n}\n${Pt}\n`;class TyScrollContainer extends HTMLElement{constructor(){super(),this.Pe=null,this.We=null,this.Re=null,this.Ye=null,this.Ue=null,this.ln=null,this.qt=null,this.oe=null,this.Tt=null,this.Xe=!1,this.Ke=!1,this.Ft=()=>{null===this.Tt&&(this.Tt=requestAnimationFrame(()=>{this.Tt=null,this.Ze()}))},this.Je=()=>{this.ln?.update(),this.Ze()};const t=this.attachShadow({mode:"open"});b(t,{css:po,id:"ty-scroll-container"}),t.innerHTML='\n<div class="scroll-wrapper">\n<slot></slot>\n</div>\n<div class="shadow-overlay">\n<div class="shadow-top"></div>\n<div class="shadow-bottom"></div>\n<div class="shadow-left"></div>\n<div class="shadow-right"></div>\n</div>\n',this.Pe=t.querySelector(".scroll-wrapper"),this.We=t.querySelector(".shadow-top"),this.Re=t.querySelector(".shadow-bottom"),this.Ye=t.querySelector(".shadow-left"),this.Ue=t.querySelector(".shadow-right")}static get observedAttributes(){return["no-shadow","max-height","hide-scrollbar","custom-scrollbar","overflow-x","scroll-anchoring"]}get noShadow(){return this.hasAttribute("no-shadow")}set noShadow(t){t?this.setAttribute("no-shadow",""):this.removeAttribute("no-shadow")}get maxHeight(){return this.getAttribute("max-height")}set maxHeight(t){t?this.setAttribute("max-height",t):this.removeAttribute("max-height"),this.Ge()}get hideScrollbar(){return this.hasAttribute("hide-scrollbar")}set hideScrollbar(t){t?this.setAttribute("hide-scrollbar",""):this.removeAttribute("hide-scrollbar")}get customScrollbar(){return this.hasAttribute("custom-scrollbar")}set customScrollbar(t){t?this.setAttribute("custom-scrollbar",""):this.removeAttribute("custom-scrollbar")}get overflowX(){return this.hasAttribute("overflow-x")}set overflowX(t){t?this.setAttribute("overflow-x",""):this.removeAttribute("overflow-x")}get nearEdgeThreshold(){const t=parseInt(this.getAttribute("near-edge-threshold")||"",10);return Number.isFinite(t)?t:100}set nearEdgeThreshold(t){null==t?this.removeAttribute("near-edge-threshold"):this.setAttribute("near-edge-threshold",t+"")}get scrollAnchoring(){return this.hasAttribute("scroll-anchoring")}set scrollAnchoring(t){t?this.setAttribute("scroll-anchoring",""):this.removeAttribute("scroll-anchoring")}connectedCallback(){if(this.Pe?.addEventListener("scroll",this.Ft,{passive:!0}),this.qt=new ResizeObserver(()=>{this.ln?.update(),this.Ze()}),this.Pe){this.qt.observe(this.Pe);const t=this.Pe.querySelector("slot");t&&t.addEventListener("slotchange",this.Je)}this.Ge(),this.Ze(),this.hn(),this.Qe()}disconnectedCallback(){this.Pe?.removeEventListener("scroll",this.Ft),this.dn(),this.ti(),this.qt&&(this.qt.disconnect(),this.qt=null),null!==this.Tt&&(cancelAnimationFrame(this.Tt),this.Tt=null)}attributeChangedCallback(t,n,e){n!==e&&("max-height"===t&&(this.Ge(),this.Ze(),this.ln?.update()),"custom-scrollbar"!==t&&"overflow-x"!==t||(this.dn(),this.hn(),this.Ze()),"scroll-anchoring"===t&&(this.ti(),this.Qe()))}Qe(){!this.oe&&this.scrollAnchoring&&(this.oe=new MutationObserver(t=>{const n=this.Pe;if(!n)return;const e=new Set;for(const o of t)o.addedNodes.forEach(t=>e.add(t));if(0===e.size)return;let i=0;for(const o of Array.from(this.children)){if(!e.has(o))break;i+=o.offsetHeight}i>0&&(n.scrollTop+=i,this.ln?.update())}),this.oe.observe(this,{childList:!0}))}ti(){this.oe?.disconnect(),this.oe=null}hn(){if(this.ln)return;if(!this.Pe||!this.customScrollbar)return;this.ln=new Bt(this.Pe,{vertical:!0,horizontal:this.overflowX});const t=this.shadowRoot;this.ln.trackY&&t.appendChild(this.ln.trackY),this.ln.trackX&&t.appendChild(this.ln.trackX)}dn(){this.ln&&(this.ln.trackY?.remove(),this.ln.trackX?.remove(),this.ln.destroy(),this.ln=null)}Ge(){if(this.Pe){const t=this.maxHeight;t?(this.Pe.style.setProperty("--scroll-max-height",t),this.Pe.style.maxHeight=t):(this.Pe.style.removeProperty("--scroll-max-height"),this.Pe.style.maxHeight="")}}Ze(){if(!this.Pe)return;const{scrollTop:t,scrollLeft:n,scrollHeight:e,scrollWidth:i,clientHeight:o,clientWidth:r}=this.Pe;this.We&&this.We.classList.toggle("visible",t>2),this.Re&&this.Re.classList.toggle("visible",e-2>t+o),this.overflowX&&(this.Ye&&this.Ye.classList.toggle("visible",n>2),this.Ue&&this.Ue.classList.toggle("visible",i-2>n+r));const s=e-o;if(s>0){const n=this.nearEdgeThreshold,i=s-t;this.Ke=this.ni("nearend",i,n,this.Ke,{distance:i,scrollTop:t,scrollHeight:e,clientHeight:o}),this.Xe=this.ni("nearstart",t,n,this.Xe,{distance:t,scrollTop:t,scrollHeight:e,clientHeight:o})}else this.Xe=!1,this.Ke=!1}ni(t,n,e,i,o){return e>=n&&(i||this.dispatchEvent(new CustomEvent(t,{detail:o,bubbles:!0,composed:!0})),!0)}updateShadows(){this.Ze(),this.ln?.update()}scrollToTop(t=!0){this.Pe?.scrollTo({top:0,behavior:t?"smooth":"auto"})}scrollToBottom(t=!0){this.Pe&&this.Pe.scrollTo({top:this.Pe.scrollHeight,behavior:t?"smooth":"auto"})}scrollToLeft(t=!0){this.Pe?.scrollTo({left:0,behavior:t?"smooth":"auto"})}scrollToRight(t=!0){this.Pe&&this.Pe.scrollTo({left:this.Pe.scrollWidth,behavior:t?"smooth":"auto"})}scrollToElement(t,n=!0){const e="string"==typeof t?this.querySelector(t):t;e?.scrollIntoView({behavior:n?"smooth":"auto",block:"nearest"})}get scrollElement(){return this.Pe}}customElements.define("ty-scroll-container",TyScrollContainer),"undefined"!=typeof window&&(window.tyVersion=T,window.tyIcons={register:t=>{O(t)},get:t=>H(t),has:t=>N(t),list:()=>Y(),cacheInfo:()=>U(),clearCache:()=>B()},window.tyResizeObserver={getSize:t=>ao(t),onResize:(t,n)=>lo(t,n),get sizes(){return co()}},window.tyLoader={set:t=>$(t),get:()=>C(),reset:()=>E()}),t.IconRegistry=X,t.TyButton=S,t.TyCalendar=Wi,t.TyCalendarMonth=TyCalendarMonth,t.TyCalendarNavigation=Li,t.TyCheckbox=wt,t.TyCopy=Ft,t.TyDatePicker=oo,t.TyFileUpload=Ot,t.TyIcon=G,t.TyInput=ht,t.TyModal=TyModal,t.TyOption=TyOption,t.TyPopup=TyPopup,t.TyRadio=St,t.TyRadioGroup=_t,t.TyResizeObserver=TyResizeObserver,t.TyScrollContainer=TyScrollContainer,t.TySelect=we,t.TySelectedOptions=TySelectedOptions,t.TySelectedTags=TySelectedOptions,t.TyStep=TyStep,t.TySwitch=$t,t.TyTab=TyTab,t.TyTabs=TyTabs,t.TyTag=nt,t.TyTextarea=Yt,t.TyTooltip=TyTooltip,t.TyWizard=TyWizard,t.disableScrollLockDebug=function(){window.tyScrollDebug=!1},t.enableScrollLockDebug=function(){window.tyScrollDebug=!0},t.forceUnlockAll=function(){Cn.activeLocks.clear(),Mn()},t.getActiveLocks=function(){return new Set(Cn.activeLocks)},t.getAllSizes=co,t.getLoaderSvg=C,t.getLockState=function(){return{locked:Cn.locked,scrollY:Cn.scrollY,activeLocks:Array.from(Cn.activeLocks)}},t.getSize=ao,t.isLocked=function(){return Cn.locked},t.isLockedBy=function(t){return Cn.activeLocks.has(t)},t.lockScroll=Sn,t.onResize=lo,t.resetLoaderSvg=E,t.setLoaderSvg=$,t.unlockScroll=Tn,Object.defineProperty(t,Symbol.toStringTag,{value:"Module"})});
|