smartsell-ui-kit 0.1.17 → 0.1.18

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/dist/index.cjs CHANGED
@@ -20,15 +20,18 @@ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: tru
20
20
  // src/index.ts
21
21
  var src_exports = {};
22
22
  __export(src_exports, {
23
+ Alert: () => Alert,
23
24
  Button: () => Button,
24
25
  Card: () => Card,
25
26
  CardSmall: () => CardSmall,
26
27
  Checkbox: () => Checkbox,
27
28
  ComposableModal: () => ComposableModal,
28
29
  DatePicker: () => DatePicker,
30
+ IconButton: () => IconButton,
29
31
  Input: () => Input,
30
32
  Loading: () => Loading,
31
33
  Modal: () => Modal,
34
+ ResultState: () => ResultState,
32
35
  Select: () => Select,
33
36
  SelectAsync: () => SelectAsync,
34
37
  Separator: () => Separator,
@@ -63,7 +66,7 @@ function styleInject(css, { insertAt } = {}) {
63
66
  }
64
67
 
65
68
  // src/styles/ui-kit.css
66
- styleInject(':root {\n --ui-kit-font-family:\n "Lato",\n system-ui,\n sans-serif;\n}\n.ui-kit-root {\n border-width: 0;\n border-style: solid;\n box-shadow: none;\n font-family: var(--ui-kit-font-family);\n line-height: 1.5;\n -webkit-text-size-adjust: 100%;\n -moz-tab-size: 4;\n -o-tab-size: 4;\n tab-size: 4;\n -webkit-tap-highlight-color: transparent;\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale;\n}\n.ui-kit-root:where(button, input, textarea, select),\n.ui-kit-root :where(button, input, textarea, select, option) {\n border-width: 0;\n border-style: solid;\n box-shadow: none;\n font-family: var(--ui-kit-font-family);\n}\n.ui-kit-sr-only {\n position: absolute;\n height: 1px;\n width: 1px;\n overflow: hidden;\n white-space: nowrap;\n border-width: 0px;\n padding: 0px;\n clip: rect(0, 0, 0, 0);\n margin: -1px;\n}\n.ui-kit-floating-placeholder {\n color: var(--theme-textLight);\n font-size: var(--floating-label-font-size);\n font-weight: 400;\n line-height: var(--floating-label-line-height);\n top: var(--floating-label-resting-top);\n transform: var(--floating-label-resting-transform);\n}\n.group:has(input:not(:-moz-placeholder)) > .ui-kit-floating-placeholder,\n.group:has(textarea:not(:-moz-placeholder)) > .ui-kit-floating-placeholder {\n color: var(--theme-text);\n font-size: var(--floating-label-active-font-size);\n font-weight: 500;\n left: 12px !important;\n line-height: var(--floating-label-active-line-height);\n top: 0;\n transform: translateY(-50%) scale(0.85);\n}\n.group:focus-within > .ui-kit-floating-placeholder,\n.group:has(input:not(:placeholder-shown)) > .ui-kit-floating-placeholder,\n.group:has(textarea:not(:placeholder-shown)) > .ui-kit-floating-placeholder,\n.group:has([data-has-value=true]) > .ui-kit-floating-placeholder,\n.ui-kit-floating-placeholder--active {\n color: var(--theme-text);\n font-size: var(--floating-label-active-font-size);\n font-weight: 500;\n left: 12px !important;\n line-height: var(--floating-label-active-line-height);\n top: 0;\n transform: translateY(-50%) scale(0.85);\n}\n:where(.ui-kit-root),\n:where(.ui-kit-root) :where(*),\n:where(.ui-kit-root) :where(*)::before,\n:where(.ui-kit-root) :where(*)::after {\n box-sizing: border-box;\n border-width: 0;\n border-style: solid;\n border-color: #e5e7eb;\n}\n:where(.ui-kit-root) :where(*)::before,\n:where(.ui-kit-root) :where(*)::after {\n --tw-content: "";\n}\n:where(.ui-kit-root) :where(hr) {\n height: 0;\n color: inherit;\n border-top-width: 1px;\n}\n:where(.ui-kit-root) :where(abbr:where([title])) {\n -webkit-text-decoration: underline dotted;\n text-decoration: underline dotted;\n}\n:where(.ui-kit-root) :where(h1, h2, h3, h4, h5, h6) {\n font-size: inherit;\n font-weight: inherit;\n}\n:where(.ui-kit-root) :where(a) {\n color: inherit;\n text-decoration: inherit;\n}\n:where(.ui-kit-root) :where(b, strong) {\n font-weight: bolder;\n}\n:where(.ui-kit-root) :where(code, kbd, samp, pre) {\n font-family:\n ui-monospace,\n SFMono-Regular,\n Menlo,\n Monaco,\n Consolas,\n "Liberation Mono",\n "Courier New",\n monospace;\n font-size: 1em;\n}\n:where(.ui-kit-root) :where(small) {\n font-size: 80%;\n}\n:where(.ui-kit-root) :where(sub, sup) {\n font-size: 75%;\n line-height: 0;\n position: relative;\n vertical-align: baseline;\n}\n:where(.ui-kit-root) :where(sub) {\n bottom: -0.25em;\n}\n:where(.ui-kit-root) :where(sup) {\n top: -0.5em;\n}\n:where(.ui-kit-root) :where(table) {\n text-indent: 0;\n border-color: inherit;\n border-collapse: collapse;\n}\n:where(.ui-kit-root):where(button, input, optgroup, select, textarea),\n:where(.ui-kit-root) :where(button, input, optgroup, select, textarea) {\n font-family: inherit;\n font-feature-settings: inherit;\n font-variation-settings: inherit;\n font-size: 100%;\n font-weight: inherit;\n line-height: inherit;\n letter-spacing: inherit;\n color: inherit;\n margin: 0;\n padding: 0;\n}\n:where(.ui-kit-root):where(button, select),\n:where(.ui-kit-root) :where(button, select) {\n text-transform: none;\n}\n:where(.ui-kit-root):where(button),\n:where(.ui-kit-root) :where(button),\n:where(.ui-kit-root) :where(input:where([type=button], [type=reset], [type=submit])) {\n -webkit-appearance: button;\n background-color: transparent;\n background-image: none;\n}\n:where(.ui-kit-root) :where(progress) {\n vertical-align: baseline;\n}\n:where(.ui-kit-root) :where(input)::-webkit-inner-spin-button,\n:where(.ui-kit-root) :where(input)::-webkit-outer-spin-button {\n height: auto;\n}\n:where(.ui-kit-root) :where([type=search]) {\n -webkit-appearance: textfield;\n outline-offset: -2px;\n}\n:where(.ui-kit-root) :where(input)::-webkit-search-decoration {\n -webkit-appearance: none;\n}\n:where(.ui-kit-root) :where(summary) {\n display: list-item;\n}\n:where(.ui-kit-root) :where(blockquote, dl, dd, h1, h2, h3, h4, h5, h6, hr, figure, p, pre) {\n margin: 0;\n}\n:where(.ui-kit-root) :where(fieldset) {\n margin: 0;\n padding: 0;\n}\n:where(.ui-kit-root) :where(legend) {\n padding: 0;\n}\n:where(.ui-kit-root) :where(ol, ul, menu) {\n list-style: none;\n margin: 0;\n padding: 0;\n}\n:where(.ui-kit-root) :where(dialog) {\n padding: 0;\n}\n:where(.ui-kit-root) :where(option) {\n margin: 0;\n padding: 0;\n}\n:where(.ui-kit-root) :where(textarea) {\n resize: vertical;\n}\n:where(.ui-kit-root):where(input)::-moz-placeholder,\n:where(.ui-kit-root):where(textarea)::-moz-placeholder,\n:where(.ui-kit-root) :where(input)::-moz-placeholder,\n:where(.ui-kit-root) :where(textarea)::-moz-placeholder {\n opacity: 1;\n color: #9ca3af;\n}\n:where(.ui-kit-root):where(input)::placeholder,\n:where(.ui-kit-root):where(textarea)::placeholder,\n:where(.ui-kit-root) :where(input)::placeholder,\n:where(.ui-kit-root) :where(textarea)::placeholder {\n opacity: 1;\n color: #9ca3af;\n}\n:where(.ui-kit-root):where(button, [role=button]),\n:where(.ui-kit-root) :where(button, [role=button]) {\n cursor: pointer;\n}\n:where(.ui-kit-root):where(:disabled),\n:where(.ui-kit-root) :where(:disabled) {\n cursor: default;\n}\n:where(.ui-kit-root) :where(img, svg, video, canvas, audio, iframe, embed, object) {\n display: block;\n vertical-align: middle;\n}\n:where(.ui-kit-root) :where(img, video) {\n max-width: 100%;\n height: auto;\n}\n:where(.ui-kit-root) :where([hidden]) {\n display: none;\n}\n.pointer-events-none {\n pointer-events: none;\n}\n.pointer-events-auto {\n pointer-events: auto;\n}\n.visible {\n visibility: visible;\n}\n.fixed {\n position: fixed;\n}\n.absolute {\n position: absolute;\n}\n.relative {\n position: relative;\n}\n.sticky {\n position: sticky;\n}\n.inset-0 {\n inset: 0px;\n}\n.inset-y-0 {\n top: 0px;\n bottom: 0px;\n}\n.left-0 {\n left: 0px;\n}\n.left-\\[var\\(--label-left-base\\,12px\\)\\] {\n left: var(--label-left-base,12px);\n}\n.top-1\\/2 {\n top: 50%;\n}\n.z-50 {\n z-index: 50;\n}\n.z-\\[70\\] {\n z-index: 70;\n}\n.z-\\[99999\\] {\n z-index: 99999;\n}\n.col-span-1 {\n grid-column: span 1 / span 1;\n}\n.col-span-2 {\n grid-column: span 2 / span 2;\n}\n.m-0 {\n margin: 0px;\n}\n.-mt-2 {\n margin-top: -0.5rem;\n}\n.mb-\\[18px\\] {\n margin-bottom: 18px;\n}\n.ml-1 {\n margin-left: 0.25rem;\n}\n.ml-4 {\n margin-left: 1rem;\n}\n.ml-auto {\n margin-left: auto;\n}\n.mt-0 {\n margin-top: 0px;\n}\n.mt-1 {\n margin-top: 0.25rem;\n}\n.mt-px {\n margin-top: 1px;\n}\n.box-border {\n box-sizing: border-box;\n}\n.block {\n display: block;\n}\n.inline {\n display: inline;\n}\n.flex {\n display: flex;\n}\n.inline-flex {\n display: inline-flex;\n}\n.table {\n display: table;\n}\n.grid {\n display: grid;\n}\n.hidden {\n display: none;\n}\n.h-14 {\n height: 3.5rem;\n}\n.h-2 {\n height: 0.5rem;\n}\n.h-5 {\n height: 1.25rem;\n}\n.h-\\[30px\\] {\n height: 30px;\n}\n.h-\\[34px\\] {\n height: 34px;\n}\n.h-\\[52px\\] {\n height: 52px;\n}\n.h-full {\n height: 100%;\n}\n.max-h-\\[280px\\] {\n max-height: 280px;\n}\n.min-h-0 {\n min-height: 0px;\n}\n.min-h-20 {\n min-height: 5rem;\n}\n.min-h-\\[220px\\] {\n min-height: 220px;\n}\n.w-14 {\n width: 3.5rem;\n}\n.w-2 {\n width: 0.5rem;\n}\n.w-5 {\n width: 1.25rem;\n}\n.w-\\[25px\\] {\n width: 25px;\n}\n.w-\\[30px\\] {\n width: 30px;\n}\n.w-\\[52px\\] {\n width: 52px;\n}\n.w-\\[72px\\] {\n width: 72px;\n}\n.w-auto {\n width: auto;\n}\n.w-fit {\n width: -moz-fit-content;\n width: fit-content;\n}\n.w-full {\n width: 100%;\n}\n.w-max {\n width: -moz-max-content;\n width: max-content;\n}\n.min-w-0 {\n min-width: 0px;\n}\n.min-w-full {\n min-width: 100%;\n}\n.min-w-max {\n min-width: -moz-max-content;\n min-width: max-content;\n}\n.max-w-\\[360px\\] {\n max-width: 360px;\n}\n.max-w-\\[calc\\(100\\%-24px\\)\\] {\n max-width: calc(100% - 24px);\n}\n.max-w-fit {\n max-width: -moz-fit-content;\n max-width: fit-content;\n}\n.max-w-full {\n max-width: 100%;\n}\n.max-w-none {\n max-width: none;\n}\n.flex-1 {\n flex: 1 1 0%;\n}\n.flex-\\[0_1_45\\%\\] {\n flex: 0 1 45%;\n}\n.flex-\\[1_1_260px\\] {\n flex: 1 1 260px;\n}\n.flex-none {\n flex: none;\n}\n.shrink-0 {\n flex-shrink: 0;\n}\n.border-separate {\n border-collapse: separate;\n}\n.border-spacing-0 {\n --tw-border-spacing-x: 0px;\n --tw-border-spacing-y: 0px;\n border-spacing: var(--tw-border-spacing-x) var(--tw-border-spacing-y);\n}\n.origin-\\[left_center\\] {\n transform-origin: left center;\n}\n.transform {\n transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\n}\n.cursor-not-allowed {\n cursor: not-allowed;\n}\n.cursor-pointer {\n cursor: pointer;\n}\n.cursor-text {\n cursor: text;\n}\n.select-none {\n -webkit-user-select: none;\n -moz-user-select: none;\n user-select: none;\n}\n.resize-y {\n resize: vertical;\n}\n.resize {\n resize: both;\n}\n.appearance-none {\n -webkit-appearance: none;\n -moz-appearance: none;\n appearance: none;\n}\n.grid-cols-4 {\n grid-template-columns: repeat(4, minmax(0, 1fr));\n}\n.grid-cols-\\[7rem_minmax\\(0\\,1fr\\)\\] {\n grid-template-columns: 7rem minmax(0, 1fr);\n}\n.grid-cols-\\[minmax\\(0\\,1fr\\)\\] {\n grid-template-columns: minmax(0, 1fr);\n}\n.grid-cols-\\[repeat\\(2\\,minmax\\(0\\,1fr\\)\\)\\] {\n grid-template-columns: repeat(2, minmax(0, 1fr));\n}\n.flex-col {\n flex-direction: column;\n}\n.flex-wrap {\n flex-wrap: wrap;\n}\n.flex-nowrap {\n flex-wrap: nowrap;\n}\n.items-start {\n align-items: flex-start;\n}\n.items-center {\n align-items: center;\n}\n.justify-start {\n justify-content: flex-start;\n}\n.justify-end {\n justify-content: flex-end;\n}\n.justify-center {\n justify-content: center;\n}\n.justify-between {\n justify-content: space-between;\n}\n.gap-0 {\n gap: 0px;\n}\n.gap-1 {\n gap: 0.25rem;\n}\n.gap-1\\.5 {\n gap: 0.375rem;\n}\n.gap-2 {\n gap: 0.5rem;\n}\n.gap-2\\.5 {\n gap: 0.625rem;\n}\n.gap-3 {\n gap: 0.75rem;\n}\n.gap-3\\.5 {\n gap: 0.875rem;\n}\n.gap-4 {\n gap: 1rem;\n}\n.self-stretch {\n align-self: stretch;\n}\n.overflow-auto {\n overflow: auto;\n}\n.overflow-hidden {\n overflow: hidden;\n}\n.overflow-x-auto {\n overflow-x: auto;\n}\n.overflow-y-auto {\n overflow-y: auto;\n}\n.overflow-x-hidden {\n overflow-x: hidden;\n}\n.overflow-y-hidden {\n overflow-y: hidden;\n}\n.truncate {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n.text-ellipsis {\n text-overflow: ellipsis;\n}\n.whitespace-nowrap {\n white-space: nowrap;\n}\n.break-words {\n overflow-wrap: break-word;\n}\n.rounded-2xl {\n border-radius: 1rem;\n}\n.rounded-\\[20px\\] {\n border-radius: 20px;\n}\n.rounded-\\[24px\\] {\n border-radius: 24px;\n}\n.rounded-\\[28px\\] {\n border-radius: 28px;\n}\n.rounded-\\[30px\\] {\n border-radius: 30px;\n}\n.rounded-\\[var\\(--ui-radius\\,12px\\)\\] {\n border-radius: var(--ui-radius,12px);\n}\n.rounded-full {\n border-radius: 9999px;\n}\n.rounded-none {\n border-radius: 0px;\n}\n.rounded-xl {\n border-radius: 0.75rem;\n}\n.rounded-tl-\\[16px\\] {\n border-top-left-radius: 16px;\n}\n.rounded-tr-\\[16px\\] {\n border-top-right-radius: 16px;\n}\n.border {\n border-width: 1px;\n}\n.border-0 {\n border-width: 0px;\n}\n.border-2 {\n border-width: 2px;\n}\n.border-\\[3px\\] {\n border-width: 3px;\n}\n.border-b {\n border-bottom-width: 1px;\n}\n.border-solid {\n border-style: solid;\n}\n.border-dashed {\n border-style: dashed;\n}\n.border-\\[var\\(--theme-background\\)\\] {\n border-color: var(--theme-background);\n}\n.border-\\[var\\(--theme-negative\\)\\] {\n border-color: var(--theme-negative);\n}\n.border-\\[var\\(--theme-primary\\)\\] {\n border-color: var(--theme-primary);\n}\n.border-\\[var\\(--theme-textLight\\)\\] {\n border-color: var(--theme-textLight);\n}\n.border-transparent {\n border-color: transparent;\n}\n.bg-\\[color-mix\\(in_srgb\\,var\\(--ui-kit-accent\\)_24\\%\\,transparent\\)\\] {\n background-color: color-mix(in srgb, var(--ui-kit-accent) 24%, transparent);\n}\n.bg-\\[var\\(--theme-background\\)\\] {\n background-color: var(--theme-background);\n}\n.bg-\\[var\\(--theme-primary\\)\\] {\n background-color: var(--theme-primary);\n}\n.bg-\\[var\\(--theme-surface\\)\\] {\n background-color: var(--theme-surface);\n}\n.bg-\\[var\\(--ui-kit-accent\\)\\] {\n background-color: var(--ui-kit-accent);\n}\n.bg-transparent {\n background-color: transparent;\n}\n.p-0 {\n padding: 0px;\n}\n.p-0\\.5 {\n padding: 0.125rem;\n}\n.p-2 {\n padding: 0.5rem;\n}\n.p-2\\.5 {\n padding: 0.625rem;\n}\n.p-4 {\n padding: 1rem;\n}\n.p-6 {\n padding: 1.5rem;\n}\n.px-1 {\n padding-left: 0.25rem;\n padding-right: 0.25rem;\n}\n.px-1\\.5 {\n padding-left: 0.375rem;\n padding-right: 0.375rem;\n}\n.px-2 {\n padding-left: 0.5rem;\n padding-right: 0.5rem;\n}\n.px-2\\.5 {\n padding-left: 0.625rem;\n padding-right: 0.625rem;\n}\n.px-3 {\n padding-left: 0.75rem;\n padding-right: 0.75rem;\n}\n.px-3\\.5 {\n padding-left: 0.875rem;\n padding-right: 0.875rem;\n}\n.px-5 {\n padding-left: 1.25rem;\n padding-right: 1.25rem;\n}\n.px-\\[11px\\] {\n padding-left: 11px;\n padding-right: 11px;\n}\n.px-\\[13px\\] {\n padding-left: 13px;\n padding-right: 13px;\n}\n.py-0\\.5 {\n padding-top: 0.125rem;\n padding-bottom: 0.125rem;\n}\n.py-1 {\n padding-top: 0.25rem;\n padding-bottom: 0.25rem;\n}\n.py-2 {\n padding-top: 0.5rem;\n padding-bottom: 0.5rem;\n}\n.py-2\\.5 {\n padding-top: 0.625rem;\n padding-bottom: 0.625rem;\n}\n.py-3 {\n padding-top: 0.75rem;\n padding-bottom: 0.75rem;\n}\n.py-\\[10px\\] {\n padding-top: 10px;\n padding-bottom: 10px;\n}\n.py-\\[14px\\] {\n padding-top: 14px;\n padding-bottom: 14px;\n}\n.py-\\[18px\\] {\n padding-top: 18px;\n padding-bottom: 18px;\n}\n.py-\\[9px\\] {\n padding-top: 9px;\n padding-bottom: 9px;\n}\n.pb-0\\.5 {\n padding-bottom: 0.125rem;\n}\n.pb-1 {\n padding-bottom: 0.25rem;\n}\n.pb-3 {\n padding-bottom: 0.75rem;\n}\n.pb-4 {\n padding-bottom: 1rem;\n}\n.pb-\\[10px\\] {\n padding-bottom: 10px;\n}\n.pl-5 {\n padding-left: 1.25rem;\n}\n.pl-6 {\n padding-left: 1.5rem;\n}\n.pr-6 {\n padding-right: 1.5rem;\n}\n.pt-1 {\n padding-top: 0.25rem;\n}\n.pt-1\\.5 {\n padding-top: 0.375rem;\n}\n.pt-2\\.5 {\n padding-top: 0.625rem;\n}\n.pt-3 {\n padding-top: 0.75rem;\n}\n.pt-\\[18px\\] {\n padding-top: 18px;\n}\n.text-left {\n text-align: left;\n}\n.text-center {\n text-align: center;\n}\n.text-right {\n text-align: right;\n}\n.align-middle {\n vertical-align: middle;\n}\n.font-sans {\n font-family:\n ui-sans-serif,\n system-ui,\n sans-serif,\n "Apple Color Emoji",\n "Segoe UI Emoji",\n "Segoe UI Symbol",\n "Noto Color Emoji";\n}\n.text-2xl {\n font-size: 1.5rem;\n line-height: 2rem;\n}\n.text-\\[11px\\] {\n font-size: 11px;\n}\n.text-\\[12px\\] {\n font-size: 12px;\n}\n.text-\\[13px\\] {\n font-size: 13px;\n}\n.text-\\[15px\\] {\n font-size: 15px;\n}\n.text-\\[18px\\] {\n font-size: 18px;\n}\n.text-\\[20px\\] {\n font-size: 20px;\n}\n.text-\\[24px\\] {\n font-size: 24px;\n}\n.text-base {\n font-size: 1rem;\n line-height: 1.5rem;\n}\n.text-sm {\n font-size: 0.875rem;\n line-height: 1.25rem;\n}\n.text-xs {\n font-size: 0.75rem;\n line-height: 1rem;\n}\n.font-bold {\n font-weight: 700;\n}\n.font-extrabold {\n font-weight: 800;\n}\n.font-medium {\n font-weight: 500;\n}\n.font-normal {\n font-weight: 400;\n}\n.font-semibold {\n font-weight: 600;\n}\n.uppercase {\n text-transform: uppercase;\n}\n.leading-4 {\n line-height: 1rem;\n}\n.leading-5 {\n line-height: 1.25rem;\n}\n.leading-\\[1\\.15\\] {\n line-height: 1.15;\n}\n.leading-\\[1\\.1\\] {\n line-height: 1.1;\n}\n.leading-\\[1\\.25\\] {\n line-height: 1.25;\n}\n.leading-\\[1\\.2\\] {\n line-height: 1.2;\n}\n.leading-\\[1\\.35\\] {\n line-height: 1.35;\n}\n.leading-\\[1\\.3\\] {\n line-height: 1.3;\n}\n.leading-\\[1\\.45\\] {\n line-height: 1.45;\n}\n.leading-\\[1\\.4\\] {\n line-height: 1.4;\n}\n.leading-\\[18px\\] {\n line-height: 18px;\n}\n.leading-none {\n line-height: 1;\n}\n.tracking-\\[0\\.01em\\] {\n letter-spacing: 0.01em;\n}\n.tracking-\\[0\\.08em\\] {\n letter-spacing: 0.08em;\n}\n.tracking-\\[0\\.16em\\] {\n letter-spacing: 0.16em;\n}\n.text-\\[var\\(--theme-negative\\)\\] {\n color: var(--theme-negative);\n}\n.text-\\[var\\(--theme-onPrimary\\)\\] {\n color: var(--theme-onPrimary);\n}\n.text-\\[var\\(--theme-primary\\)\\] {\n color: var(--theme-primary);\n}\n.text-\\[var\\(--theme-secondary\\)\\] {\n color: var(--theme-secondary);\n}\n.text-\\[var\\(--theme-text\\)\\] {\n color: var(--theme-text);\n}\n.text-\\[var\\(--theme-textLight\\)\\] {\n color: var(--theme-textLight);\n}\n.text-\\[var\\(--ui-kit-accent\\)\\] {\n color: var(--ui-kit-accent);\n}\n.text-transparent {\n color: transparent;\n}\n.placeholder-\\[var\\(--theme-textLight\\)\\]::-moz-placeholder {\n color: var(--theme-textLight);\n}\n.placeholder-\\[var\\(--theme-textLight\\)\\]::placeholder {\n color: var(--theme-textLight);\n}\n.placeholder-transparent::-moz-placeholder {\n color: transparent;\n}\n.placeholder-transparent::placeholder {\n color: transparent;\n}\n.opacity-0 {\n opacity: 0;\n}\n.opacity-100 {\n opacity: 1;\n}\n.opacity-45 {\n opacity: 0.45;\n}\n.opacity-70 {\n opacity: 0.7;\n}\n.opacity-80 {\n opacity: 0.8;\n}\n.opacity-\\[0\\.38\\] {\n opacity: 0.38;\n}\n.shadow {\n --tw-shadow: 0 1px 3px 0 rgb(0 0 0 / 0.1), 0 1px 2px -1px rgb(0 0 0 / 0.1);\n --tw-shadow-colored: 0 1px 3px 0 var(--tw-shadow-color), 0 1px 2px -1px var(--tw-shadow-color);\n box-shadow:\n var(--tw-ring-offset-shadow, 0 0 #0000),\n var(--tw-ring-shadow, 0 0 #0000),\n var(--tw-shadow);\n}\n.shadow-none {\n --tw-shadow: 0 0 #0000;\n --tw-shadow-colored: 0 0 #0000;\n box-shadow:\n var(--tw-ring-offset-shadow, 0 0 #0000),\n var(--tw-ring-shadow, 0 0 #0000),\n var(--tw-shadow);\n}\n.outline-none {\n outline: 2px solid transparent;\n outline-offset: 2px;\n}\n.outline {\n outline-style: solid;\n}\n.blur {\n --tw-blur: blur(8px);\n filter: var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow);\n}\n.saturate-100 {\n --tw-saturate: saturate(1);\n filter: var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow);\n}\n.saturate-\\[0\\.8\\] {\n --tw-saturate: saturate(0.8);\n filter: var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow);\n}\n.filter {\n filter: var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow);\n}\n.backdrop-blur-\\[2px\\] {\n --tw-backdrop-blur: blur(2px);\n backdrop-filter: var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);\n}\n.backdrop-blur-\\[8px\\] {\n --tw-backdrop-blur: blur(8px);\n backdrop-filter: var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);\n}\n.transition {\n transition-property:\n color,\n background-color,\n border-color,\n text-decoration-color,\n fill,\n stroke,\n opacity,\n box-shadow,\n transform,\n filter,\n backdrop-filter;\n transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);\n transition-duration: 150ms;\n}\n.transition-\\[background-color\\,color\\] {\n transition-property: background-color, color;\n transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);\n transition-duration: 150ms;\n}\n.transition-\\[border-color\\] {\n transition-property: border-color;\n transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);\n transition-duration: 150ms;\n}\n.transition-\\[opacity\\,filter\\] {\n transition-property: opacity, filter;\n transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);\n transition-duration: 150ms;\n}\n.transition-\\[transform\\,color\\] {\n transition-property: transform, color;\n transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);\n transition-duration: 150ms;\n}\n.transition-all {\n transition-property: all;\n transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);\n transition-duration: 150ms;\n}\n.transition-colors {\n transition-property:\n color,\n background-color,\n border-color,\n text-decoration-color,\n fill,\n stroke;\n transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);\n transition-duration: 150ms;\n}\n.transition-opacity {\n transition-property: opacity;\n transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);\n transition-duration: 150ms;\n}\n.duration-150 {\n transition-duration: 150ms;\n}\n.duration-300 {\n transition-duration: 300ms;\n}\n.ease-in-out {\n transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);\n}\n.\\[overflow-wrap\\:anywhere\\] {\n overflow-wrap: anywhere;\n}\n.hover\\:border-\\[var\\(--theme-primaryDark\\)\\]:hover {\n border-color: var(--theme-primaryDark);\n}\n.hover\\:border-\\[var\\(--theme-primaryLight\\)\\]:hover {\n border-color: var(--theme-primaryLight);\n}\n.hover\\:bg-\\[var\\(--theme-primaryLight\\)\\]:hover {\n background-color: var(--theme-primaryLight);\n}\n.hover\\:text-\\[var\\(--theme-negative\\)\\]:hover {\n color: var(--theme-negative);\n}\n.hover\\:text-\\[var\\(--theme-onPrimary\\)\\]:hover {\n color: var(--theme-onPrimary);\n}\n.hover\\:text-\\[var\\(--theme-primary\\)\\]:hover {\n color: var(--theme-primary);\n}\n.hover\\:underline:hover {\n text-decoration-line: underline;\n}\n.hover\\:no-underline:hover {\n text-decoration-line: none;\n}\n.active\\:border-\\[var\\(--theme-negative\\)\\]:active {\n border-color: var(--theme-negative);\n}\n.active\\:border-\\[var\\(--theme-primary\\)\\]:active {\n border-color: var(--theme-primary);\n}\n.active\\:border-transparent:active {\n border-color: transparent;\n}\n.active\\:bg-\\[var\\(--theme-negative\\)\\]:active {\n background-color: var(--theme-negative);\n}\n.active\\:bg-\\[var\\(--theme-primaryDark\\)\\]:active {\n background-color: var(--theme-primaryDark);\n}\n.active\\:text-\\[var\\(--theme-onPrimary\\)\\]:active {\n color: var(--theme-onPrimary);\n}\n.disabled\\:translate-y-0:disabled {\n --tw-translate-y: 0px;\n transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\n}\n.disabled\\:scale-100:disabled {\n --tw-scale-x: 1;\n --tw-scale-y: 1;\n transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\n}\n.disabled\\:cursor-not-allowed:disabled {\n cursor: not-allowed;\n}\n.disabled\\:opacity-50:disabled {\n opacity: 0.5;\n}\n.group:has(:disabled) .group-has-\\[\\:disabled\\]\\:opacity-70 {\n opacity: 0.7;\n}\n.\\[\\&\\:\\:-webkit-calendar-picker-indicator\\]\\:absolute::-webkit-calendar-picker-indicator {\n position: absolute;\n}\n.\\[\\&\\:\\:-webkit-calendar-picker-indicator\\]\\:left-0::-webkit-calendar-picker-indicator {\n left: 0px;\n}\n.\\[\\&\\:\\:-webkit-calendar-picker-indicator\\]\\:top-0::-webkit-calendar-picker-indicator {\n top: 0px;\n}\n.\\[\\&\\:\\:-webkit-calendar-picker-indicator\\]\\:h-full::-webkit-calendar-picker-indicator {\n height: 100%;\n}\n.\\[\\&\\:\\:-webkit-calendar-picker-indicator\\]\\:w-full::-webkit-calendar-picker-indicator {\n width: 100%;\n}\n.\\[\\&\\:\\:-webkit-calendar-picker-indicator\\]\\:cursor-pointer::-webkit-calendar-picker-indicator {\n cursor: pointer;\n}\n.\\[\\&\\:\\:-webkit-calendar-picker-indicator\\]\\:opacity-0::-webkit-calendar-picker-indicator {\n opacity: 0;\n}\n.\\[\\&\\:\\:-webkit-datetime-edit\\]\\:flex::-webkit-datetime-edit {\n display: flex;\n}\n.\\[\\&\\:\\:-webkit-datetime-edit\\]\\:h-full::-webkit-datetime-edit {\n height: 100%;\n}\n.\\[\\&\\:\\:-webkit-datetime-edit\\]\\:items-center::-webkit-datetime-edit {\n align-items: center;\n}\n');
69
+ styleInject(':root {\n --ui-kit-font-family:\n "Lato",\n system-ui,\n sans-serif;\n}\n.ui-kit-root {\n border-width: 0;\n border-style: solid;\n box-shadow: none;\n font-family: var(--ui-kit-font-family);\n line-height: 1.5;\n -webkit-text-size-adjust: 100%;\n -moz-tab-size: 4;\n -o-tab-size: 4;\n tab-size: 4;\n -webkit-tap-highlight-color: transparent;\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale;\n}\n.ui-kit-root:where(button, input, textarea, select),\n.ui-kit-root :where(button, input, textarea, select, option) {\n border-width: 0;\n border-style: solid;\n box-shadow: none;\n font-family: var(--ui-kit-font-family);\n}\n.ui-kit-sr-only {\n position: absolute;\n height: 1px;\n width: 1px;\n overflow: hidden;\n white-space: nowrap;\n border-width: 0px;\n padding: 0px;\n clip: rect(0, 0, 0, 0);\n margin: -1px;\n}\n.ui-kit-floating-placeholder {\n color: var(--theme-textLight);\n font-size: var(--floating-label-font-size);\n font-weight: 400;\n line-height: var(--floating-label-line-height);\n top: var(--floating-label-resting-top);\n transform: var(--floating-label-resting-transform);\n}\n.group:has(input:not(:-moz-placeholder)) > .ui-kit-floating-placeholder,\n.group:has(textarea:not(:-moz-placeholder)) > .ui-kit-floating-placeholder {\n color: var(--theme-text);\n font-size: var(--floating-label-active-font-size);\n font-weight: 500;\n left: 12px !important;\n line-height: var(--floating-label-active-line-height);\n top: 0;\n transform: translateY(-50%) scale(0.85);\n}\n.group:focus-within > .ui-kit-floating-placeholder,\n.group:has(input:not(:placeholder-shown)) > .ui-kit-floating-placeholder,\n.group:has(textarea:not(:placeholder-shown)) > .ui-kit-floating-placeholder,\n.group:has([data-has-value=true]) > .ui-kit-floating-placeholder,\n.ui-kit-floating-placeholder--active {\n color: var(--theme-text);\n font-size: var(--floating-label-active-font-size);\n font-weight: 500;\n left: 12px !important;\n line-height: var(--floating-label-active-line-height);\n top: 0;\n transform: translateY(-50%) scale(0.85);\n}\n:where(.ui-kit-root),\n:where(.ui-kit-root) :where(*),\n:where(.ui-kit-root) :where(*)::before,\n:where(.ui-kit-root) :where(*)::after {\n box-sizing: border-box;\n border-width: 0;\n border-style: solid;\n border-color: #e5e7eb;\n}\n:where(.ui-kit-root) :where(*)::before,\n:where(.ui-kit-root) :where(*)::after {\n --tw-content: "";\n}\n:where(.ui-kit-root) :where(hr) {\n height: 0;\n color: inherit;\n border-top-width: 1px;\n}\n:where(.ui-kit-root) :where(abbr:where([title])) {\n -webkit-text-decoration: underline dotted;\n text-decoration: underline dotted;\n}\n:where(.ui-kit-root) :where(h1, h2, h3, h4, h5, h6) {\n font-size: inherit;\n font-weight: inherit;\n}\n:where(.ui-kit-root) :where(a) {\n color: inherit;\n text-decoration: inherit;\n}\n:where(.ui-kit-root) :where(b, strong) {\n font-weight: bolder;\n}\n:where(.ui-kit-root) :where(code, kbd, samp, pre) {\n font-family:\n ui-monospace,\n SFMono-Regular,\n Menlo,\n Monaco,\n Consolas,\n "Liberation Mono",\n "Courier New",\n monospace;\n font-size: 1em;\n}\n:where(.ui-kit-root) :where(small) {\n font-size: 80%;\n}\n:where(.ui-kit-root) :where(sub, sup) {\n font-size: 75%;\n line-height: 0;\n position: relative;\n vertical-align: baseline;\n}\n:where(.ui-kit-root) :where(sub) {\n bottom: -0.25em;\n}\n:where(.ui-kit-root) :where(sup) {\n top: -0.5em;\n}\n:where(.ui-kit-root) :where(table) {\n text-indent: 0;\n border-color: inherit;\n border-collapse: collapse;\n}\n:where(.ui-kit-root):where(button, input, optgroup, select, textarea),\n:where(.ui-kit-root) :where(button, input, optgroup, select, textarea) {\n font-family: inherit;\n font-feature-settings: inherit;\n font-variation-settings: inherit;\n font-size: 100%;\n font-weight: inherit;\n line-height: inherit;\n letter-spacing: inherit;\n color: inherit;\n margin: 0;\n padding: 0;\n}\n:where(.ui-kit-root):where(button, select),\n:where(.ui-kit-root) :where(button, select) {\n text-transform: none;\n}\n:where(.ui-kit-root):where(button),\n:where(.ui-kit-root) :where(button),\n:where(.ui-kit-root) :where(input:where([type=button], [type=reset], [type=submit])) {\n -webkit-appearance: button;\n background-color: transparent;\n background-image: none;\n}\n:where(.ui-kit-root) :where(progress) {\n vertical-align: baseline;\n}\n:where(.ui-kit-root) :where(input)::-webkit-inner-spin-button,\n:where(.ui-kit-root) :where(input)::-webkit-outer-spin-button {\n height: auto;\n}\n:where(.ui-kit-root) :where([type=search]) {\n -webkit-appearance: textfield;\n outline-offset: -2px;\n}\n:where(.ui-kit-root) :where(input)::-webkit-search-decoration {\n -webkit-appearance: none;\n}\n:where(.ui-kit-root) :where(summary) {\n display: list-item;\n}\n:where(.ui-kit-root) :where(blockquote, dl, dd, h1, h2, h3, h4, h5, h6, hr, figure, p, pre) {\n margin: 0;\n}\n:where(.ui-kit-root) :where(fieldset) {\n margin: 0;\n padding: 0;\n}\n:where(.ui-kit-root) :where(legend) {\n padding: 0;\n}\n:where(.ui-kit-root) :where(ol, ul, menu) {\n list-style: none;\n margin: 0;\n padding: 0;\n}\n:where(.ui-kit-root) :where(dialog) {\n padding: 0;\n}\n:where(.ui-kit-root) :where(option) {\n margin: 0;\n padding: 0;\n}\n:where(.ui-kit-root) :where(textarea) {\n resize: vertical;\n}\n:where(.ui-kit-root):where(input)::-moz-placeholder,\n:where(.ui-kit-root):where(textarea)::-moz-placeholder,\n:where(.ui-kit-root) :where(input)::-moz-placeholder,\n:where(.ui-kit-root) :where(textarea)::-moz-placeholder {\n opacity: 1;\n color: #9ca3af;\n}\n:where(.ui-kit-root):where(input)::placeholder,\n:where(.ui-kit-root):where(textarea)::placeholder,\n:where(.ui-kit-root) :where(input)::placeholder,\n:where(.ui-kit-root) :where(textarea)::placeholder {\n opacity: 1;\n color: #9ca3af;\n}\n:where(.ui-kit-root):where(button, [role=button]),\n:where(.ui-kit-root) :where(button, [role=button]) {\n cursor: pointer;\n}\n:where(.ui-kit-root):where(:disabled),\n:where(.ui-kit-root) :where(:disabled) {\n cursor: default;\n}\n:where(.ui-kit-root) :where(img, svg, video, canvas, audio, iframe, embed, object) {\n display: block;\n vertical-align: middle;\n}\n:where(.ui-kit-root) :where(img, video) {\n max-width: 100%;\n height: auto;\n}\n:where(.ui-kit-root) :where([hidden]) {\n display: none;\n}\n.pointer-events-none {\n pointer-events: none;\n}\n.pointer-events-auto {\n pointer-events: auto;\n}\n.visible {\n visibility: visible;\n}\n.fixed {\n position: fixed;\n}\n.absolute {\n position: absolute;\n}\n.relative {\n position: relative;\n}\n.sticky {\n position: sticky;\n}\n.inset-0 {\n inset: 0px;\n}\n.inset-y-0 {\n top: 0px;\n bottom: 0px;\n}\n.left-0 {\n left: 0px;\n}\n.left-\\[var\\(--label-left-base\\,12px\\)\\] {\n left: var(--label-left-base,12px);\n}\n.top-1\\/2 {\n top: 50%;\n}\n.z-50 {\n z-index: 50;\n}\n.z-\\[70\\] {\n z-index: 70;\n}\n.z-\\[99999\\] {\n z-index: 99999;\n}\n.col-span-1 {\n grid-column: span 1 / span 1;\n}\n.col-span-2 {\n grid-column: span 2 / span 2;\n}\n.m-0 {\n margin: 0px;\n}\n.-mt-2 {\n margin-top: -0.5rem;\n}\n.mb-\\[18px\\] {\n margin-bottom: 18px;\n}\n.ml-1 {\n margin-left: 0.25rem;\n}\n.ml-4 {\n margin-left: 1rem;\n}\n.ml-auto {\n margin-left: auto;\n}\n.mt-0 {\n margin-top: 0px;\n}\n.mt-1 {\n margin-top: 0.25rem;\n}\n.mt-px {\n margin-top: 1px;\n}\n.box-border {\n box-sizing: border-box;\n}\n.block {\n display: block;\n}\n.inline {\n display: inline;\n}\n.flex {\n display: flex;\n}\n.inline-flex {\n display: inline-flex;\n}\n.table {\n display: table;\n}\n.grid {\n display: grid;\n}\n.hidden {\n display: none;\n}\n.h-14 {\n height: 3.5rem;\n}\n.h-2 {\n height: 0.5rem;\n}\n.h-5 {\n height: 1.25rem;\n}\n.h-\\[30px\\] {\n height: 30px;\n}\n.h-\\[34px\\] {\n height: 34px;\n}\n.h-\\[52px\\] {\n height: 52px;\n}\n.h-full {\n height: 100%;\n}\n.max-h-\\[280px\\] {\n max-height: 280px;\n}\n.min-h-0 {\n min-height: 0px;\n}\n.min-h-20 {\n min-height: 5rem;\n}\n.min-h-\\[220px\\] {\n min-height: 220px;\n}\n.w-14 {\n width: 3.5rem;\n}\n.w-2 {\n width: 0.5rem;\n}\n.w-5 {\n width: 1.25rem;\n}\n.w-\\[25px\\] {\n width: 25px;\n}\n.w-\\[30px\\] {\n width: 30px;\n}\n.w-\\[52px\\] {\n width: 52px;\n}\n.w-\\[72px\\] {\n width: 72px;\n}\n.w-auto {\n width: auto;\n}\n.w-fit {\n width: -moz-fit-content;\n width: fit-content;\n}\n.w-full {\n width: 100%;\n}\n.w-max {\n width: -moz-max-content;\n width: max-content;\n}\n.min-w-0 {\n min-width: 0px;\n}\n.min-w-full {\n min-width: 100%;\n}\n.min-w-max {\n min-width: -moz-max-content;\n min-width: max-content;\n}\n.max-w-\\[360px\\] {\n max-width: 360px;\n}\n.max-w-\\[calc\\(100\\%-24px\\)\\] {\n max-width: calc(100% - 24px);\n}\n.max-w-fit {\n max-width: -moz-fit-content;\n max-width: fit-content;\n}\n.max-w-full {\n max-width: 100%;\n}\n.max-w-none {\n max-width: none;\n}\n.flex-1 {\n flex: 1 1 0%;\n}\n.flex-\\[0_1_45\\%\\] {\n flex: 0 1 45%;\n}\n.flex-\\[1_1_260px\\] {\n flex: 1 1 260px;\n}\n.flex-none {\n flex: none;\n}\n.shrink-0 {\n flex-shrink: 0;\n}\n.border-separate {\n border-collapse: separate;\n}\n.border-spacing-0 {\n --tw-border-spacing-x: 0px;\n --tw-border-spacing-y: 0px;\n border-spacing: var(--tw-border-spacing-x) var(--tw-border-spacing-y);\n}\n.origin-\\[left_center\\] {\n transform-origin: left center;\n}\n.transform {\n transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\n}\n.cursor-not-allowed {\n cursor: not-allowed;\n}\n.cursor-pointer {\n cursor: pointer;\n}\n.cursor-text {\n cursor: text;\n}\n.select-none {\n -webkit-user-select: none;\n -moz-user-select: none;\n user-select: none;\n}\n.resize-y {\n resize: vertical;\n}\n.resize {\n resize: both;\n}\n.appearance-none {\n -webkit-appearance: none;\n -moz-appearance: none;\n appearance: none;\n}\n.grid-cols-4 {\n grid-template-columns: repeat(4, minmax(0, 1fr));\n}\n.grid-cols-\\[7rem_minmax\\(0\\,1fr\\)\\] {\n grid-template-columns: 7rem minmax(0, 1fr);\n}\n.grid-cols-\\[minmax\\(0\\,1fr\\)\\] {\n grid-template-columns: minmax(0, 1fr);\n}\n.grid-cols-\\[repeat\\(2\\,minmax\\(0\\,1fr\\)\\)\\] {\n grid-template-columns: repeat(2, minmax(0, 1fr));\n}\n.flex-col {\n flex-direction: column;\n}\n.flex-wrap {\n flex-wrap: wrap;\n}\n.flex-nowrap {\n flex-wrap: nowrap;\n}\n.items-start {\n align-items: flex-start;\n}\n.items-center {\n align-items: center;\n}\n.justify-start {\n justify-content: flex-start;\n}\n.justify-end {\n justify-content: flex-end;\n}\n.justify-center {\n justify-content: center;\n}\n.justify-between {\n justify-content: space-between;\n}\n.gap-0 {\n gap: 0px;\n}\n.gap-1 {\n gap: 0.25rem;\n}\n.gap-1\\.5 {\n gap: 0.375rem;\n}\n.gap-2 {\n gap: 0.5rem;\n}\n.gap-2\\.5 {\n gap: 0.625rem;\n}\n.gap-3 {\n gap: 0.75rem;\n}\n.gap-3\\.5 {\n gap: 0.875rem;\n}\n.gap-4 {\n gap: 1rem;\n}\n.self-stretch {\n align-self: stretch;\n}\n.overflow-auto {\n overflow: auto;\n}\n.overflow-hidden {\n overflow: hidden;\n}\n.overflow-x-auto {\n overflow-x: auto;\n}\n.overflow-y-auto {\n overflow-y: auto;\n}\n.overflow-x-hidden {\n overflow-x: hidden;\n}\n.overflow-y-hidden {\n overflow-y: hidden;\n}\n.truncate {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n.text-ellipsis {\n text-overflow: ellipsis;\n}\n.whitespace-nowrap {\n white-space: nowrap;\n}\n.break-words {\n overflow-wrap: break-word;\n}\n.rounded-2xl {\n border-radius: 1rem;\n}\n.rounded-\\[20px\\] {\n border-radius: 20px;\n}\n.rounded-\\[24px\\] {\n border-radius: 24px;\n}\n.rounded-\\[28px\\] {\n border-radius: 28px;\n}\n.rounded-\\[30px\\] {\n border-radius: 30px;\n}\n.rounded-\\[var\\(--ui-radius\\,12px\\)\\] {\n border-radius: var(--ui-radius,12px);\n}\n.rounded-full {\n border-radius: 9999px;\n}\n.rounded-none {\n border-radius: 0px;\n}\n.rounded-xl {\n border-radius: 0.75rem;\n}\n.rounded-tl-\\[16px\\] {\n border-top-left-radius: 16px;\n}\n.rounded-tr-\\[16px\\] {\n border-top-right-radius: 16px;\n}\n.border {\n border-width: 1px;\n}\n.border-0 {\n border-width: 0px;\n}\n.border-2 {\n border-width: 2px;\n}\n.border-\\[3px\\] {\n border-width: 3px;\n}\n.border-b {\n border-bottom-width: 1px;\n}\n.border-solid {\n border-style: solid;\n}\n.border-dashed {\n border-style: dashed;\n}\n.border-\\[var\\(--theme-background\\)\\] {\n border-color: var(--theme-background);\n}\n.border-\\[var\\(--theme-negative\\)\\] {\n border-color: var(--theme-negative);\n}\n.border-\\[var\\(--theme-primary\\)\\] {\n border-color: var(--theme-primary);\n}\n.border-\\[var\\(--theme-textLight\\)\\] {\n border-color: var(--theme-textLight);\n}\n.border-transparent {\n border-color: transparent;\n}\n.bg-\\[color-mix\\(in_srgb\\,var\\(--ui-kit-accent\\)_24\\%\\,transparent\\)\\] {\n background-color: color-mix(in srgb, var(--ui-kit-accent) 24%, transparent);\n}\n.bg-\\[var\\(--theme-background\\)\\] {\n background-color: var(--theme-background);\n}\n.bg-\\[var\\(--theme-primary\\)\\] {\n background-color: var(--theme-primary);\n}\n.bg-\\[var\\(--theme-surface\\)\\] {\n background-color: var(--theme-surface);\n}\n.bg-\\[var\\(--ui-kit-accent\\)\\] {\n background-color: var(--ui-kit-accent);\n}\n.bg-transparent {\n background-color: transparent;\n}\n.p-0 {\n padding: 0px;\n}\n.p-0\\.5 {\n padding: 0.125rem;\n}\n.p-2 {\n padding: 0.5rem;\n}\n.p-2\\.5 {\n padding: 0.625rem;\n}\n.p-4 {\n padding: 1rem;\n}\n.p-6 {\n padding: 1.5rem;\n}\n.px-1 {\n padding-left: 0.25rem;\n padding-right: 0.25rem;\n}\n.px-1\\.5 {\n padding-left: 0.375rem;\n padding-right: 0.375rem;\n}\n.px-2 {\n padding-left: 0.5rem;\n padding-right: 0.5rem;\n}\n.px-2\\.5 {\n padding-left: 0.625rem;\n padding-right: 0.625rem;\n}\n.px-3 {\n padding-left: 0.75rem;\n padding-right: 0.75rem;\n}\n.px-3\\.5 {\n padding-left: 0.875rem;\n padding-right: 0.875rem;\n}\n.px-5 {\n padding-left: 1.25rem;\n padding-right: 1.25rem;\n}\n.px-\\[11px\\] {\n padding-left: 11px;\n padding-right: 11px;\n}\n.px-\\[13px\\] {\n padding-left: 13px;\n padding-right: 13px;\n}\n.py-0\\.5 {\n padding-top: 0.125rem;\n padding-bottom: 0.125rem;\n}\n.py-1 {\n padding-top: 0.25rem;\n padding-bottom: 0.25rem;\n}\n.py-2 {\n padding-top: 0.5rem;\n padding-bottom: 0.5rem;\n}\n.py-2\\.5 {\n padding-top: 0.625rem;\n padding-bottom: 0.625rem;\n}\n.py-3 {\n padding-top: 0.75rem;\n padding-bottom: 0.75rem;\n}\n.py-\\[10px\\] {\n padding-top: 10px;\n padding-bottom: 10px;\n}\n.py-\\[14px\\] {\n padding-top: 14px;\n padding-bottom: 14px;\n}\n.py-\\[18px\\] {\n padding-top: 18px;\n padding-bottom: 18px;\n}\n.py-\\[9px\\] {\n padding-top: 9px;\n padding-bottom: 9px;\n}\n.pb-0\\.5 {\n padding-bottom: 0.125rem;\n}\n.pb-1 {\n padding-bottom: 0.25rem;\n}\n.pb-3 {\n padding-bottom: 0.75rem;\n}\n.pb-4 {\n padding-bottom: 1rem;\n}\n.pb-\\[10px\\] {\n padding-bottom: 10px;\n}\n.pl-5 {\n padding-left: 1.25rem;\n}\n.pl-6 {\n padding-left: 1.5rem;\n}\n.pr-6 {\n padding-right: 1.5rem;\n}\n.pt-1 {\n padding-top: 0.25rem;\n}\n.pt-1\\.5 {\n padding-top: 0.375rem;\n}\n.pt-2\\.5 {\n padding-top: 0.625rem;\n}\n.pt-3 {\n padding-top: 0.75rem;\n}\n.pt-\\[18px\\] {\n padding-top: 18px;\n}\n.text-left {\n text-align: left;\n}\n.text-center {\n text-align: center;\n}\n.text-right {\n text-align: right;\n}\n.align-middle {\n vertical-align: middle;\n}\n.font-sans {\n font-family:\n ui-sans-serif,\n system-ui,\n sans-serif,\n "Apple Color Emoji",\n "Segoe UI Emoji",\n "Segoe UI Symbol",\n "Noto Color Emoji";\n}\n.text-2xl {\n font-size: 1.5rem;\n line-height: 2rem;\n}\n.text-\\[11px\\] {\n font-size: 11px;\n}\n.text-\\[12px\\] {\n font-size: 12px;\n}\n.text-\\[13px\\] {\n font-size: 13px;\n}\n.text-\\[15px\\] {\n font-size: 15px;\n}\n.text-\\[18px\\] {\n font-size: 18px;\n}\n.text-\\[24px\\] {\n font-size: 24px;\n}\n.text-base {\n font-size: 1rem;\n line-height: 1.5rem;\n}\n.text-sm {\n font-size: 0.875rem;\n line-height: 1.25rem;\n}\n.text-xs {\n font-size: 0.75rem;\n line-height: 1rem;\n}\n.font-bold {\n font-weight: 700;\n}\n.font-extrabold {\n font-weight: 800;\n}\n.font-medium {\n font-weight: 500;\n}\n.font-normal {\n font-weight: 400;\n}\n.font-semibold {\n font-weight: 600;\n}\n.uppercase {\n text-transform: uppercase;\n}\n.leading-4 {\n line-height: 1rem;\n}\n.leading-5 {\n line-height: 1.25rem;\n}\n.leading-\\[1\\.15\\] {\n line-height: 1.15;\n}\n.leading-\\[1\\.1\\] {\n line-height: 1.1;\n}\n.leading-\\[1\\.25\\] {\n line-height: 1.25;\n}\n.leading-\\[1\\.2\\] {\n line-height: 1.2;\n}\n.leading-\\[1\\.35\\] {\n line-height: 1.35;\n}\n.leading-\\[1\\.3\\] {\n line-height: 1.3;\n}\n.leading-\\[1\\.45\\] {\n line-height: 1.45;\n}\n.leading-\\[1\\.4\\] {\n line-height: 1.4;\n}\n.leading-\\[18px\\] {\n line-height: 18px;\n}\n.tracking-\\[0\\.01em\\] {\n letter-spacing: 0.01em;\n}\n.tracking-\\[0\\.08em\\] {\n letter-spacing: 0.08em;\n}\n.tracking-\\[0\\.16em\\] {\n letter-spacing: 0.16em;\n}\n.text-\\[var\\(--theme-negative\\)\\] {\n color: var(--theme-negative);\n}\n.text-\\[var\\(--theme-onPrimary\\)\\] {\n color: var(--theme-onPrimary);\n}\n.text-\\[var\\(--theme-primary\\)\\] {\n color: var(--theme-primary);\n}\n.text-\\[var\\(--theme-secondary\\)\\] {\n color: var(--theme-secondary);\n}\n.text-\\[var\\(--theme-text\\)\\] {\n color: var(--theme-text);\n}\n.text-\\[var\\(--theme-textLight\\)\\] {\n color: var(--theme-textLight);\n}\n.text-\\[var\\(--ui-kit-accent\\)\\] {\n color: var(--ui-kit-accent);\n}\n.text-transparent {\n color: transparent;\n}\n.placeholder-\\[var\\(--theme-textLight\\)\\]::-moz-placeholder {\n color: var(--theme-textLight);\n}\n.placeholder-\\[var\\(--theme-textLight\\)\\]::placeholder {\n color: var(--theme-textLight);\n}\n.placeholder-transparent::-moz-placeholder {\n color: transparent;\n}\n.placeholder-transparent::placeholder {\n color: transparent;\n}\n.opacity-0 {\n opacity: 0;\n}\n.opacity-100 {\n opacity: 1;\n}\n.opacity-45 {\n opacity: 0.45;\n}\n.opacity-70 {\n opacity: 0.7;\n}\n.opacity-80 {\n opacity: 0.8;\n}\n.opacity-\\[0\\.38\\] {\n opacity: 0.38;\n}\n.shadow {\n --tw-shadow: 0 1px 3px 0 rgb(0 0 0 / 0.1), 0 1px 2px -1px rgb(0 0 0 / 0.1);\n --tw-shadow-colored: 0 1px 3px 0 var(--tw-shadow-color), 0 1px 2px -1px var(--tw-shadow-color);\n box-shadow:\n var(--tw-ring-offset-shadow, 0 0 #0000),\n var(--tw-ring-shadow, 0 0 #0000),\n var(--tw-shadow);\n}\n.shadow-none {\n --tw-shadow: 0 0 #0000;\n --tw-shadow-colored: 0 0 #0000;\n box-shadow:\n var(--tw-ring-offset-shadow, 0 0 #0000),\n var(--tw-ring-shadow, 0 0 #0000),\n var(--tw-shadow);\n}\n.outline-none {\n outline: 2px solid transparent;\n outline-offset: 2px;\n}\n.outline {\n outline-style: solid;\n}\n.blur {\n --tw-blur: blur(8px);\n filter: var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow);\n}\n.saturate-100 {\n --tw-saturate: saturate(1);\n filter: var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow);\n}\n.saturate-\\[0\\.8\\] {\n --tw-saturate: saturate(0.8);\n filter: var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow);\n}\n.filter {\n filter: var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow);\n}\n.backdrop-blur-\\[2px\\] {\n --tw-backdrop-blur: blur(2px);\n backdrop-filter: var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);\n}\n.backdrop-blur-\\[8px\\] {\n --tw-backdrop-blur: blur(8px);\n backdrop-filter: var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);\n}\n.transition {\n transition-property:\n color,\n background-color,\n border-color,\n text-decoration-color,\n fill,\n stroke,\n opacity,\n box-shadow,\n transform,\n filter,\n backdrop-filter;\n transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);\n transition-duration: 150ms;\n}\n.transition-\\[background-color\\,color\\] {\n transition-property: background-color, color;\n transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);\n transition-duration: 150ms;\n}\n.transition-\\[border-color\\] {\n transition-property: border-color;\n transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);\n transition-duration: 150ms;\n}\n.transition-\\[opacity\\,filter\\] {\n transition-property: opacity, filter;\n transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);\n transition-duration: 150ms;\n}\n.transition-\\[transform\\,color\\] {\n transition-property: transform, color;\n transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);\n transition-duration: 150ms;\n}\n.transition-all {\n transition-property: all;\n transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);\n transition-duration: 150ms;\n}\n.transition-colors {\n transition-property:\n color,\n background-color,\n border-color,\n text-decoration-color,\n fill,\n stroke;\n transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);\n transition-duration: 150ms;\n}\n.transition-opacity {\n transition-property: opacity;\n transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);\n transition-duration: 150ms;\n}\n.duration-150 {\n transition-duration: 150ms;\n}\n.duration-300 {\n transition-duration: 300ms;\n}\n.ease-in-out {\n transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);\n}\n.\\[overflow-wrap\\:anywhere\\] {\n overflow-wrap: anywhere;\n}\n.hover\\:border-\\[var\\(--theme-primaryDark\\)\\]:hover {\n border-color: var(--theme-primaryDark);\n}\n.hover\\:border-\\[var\\(--theme-primaryLight\\)\\]:hover {\n border-color: var(--theme-primaryLight);\n}\n.hover\\:bg-\\[var\\(--theme-background\\)\\]:hover {\n background-color: var(--theme-background);\n}\n.hover\\:bg-\\[var\\(--theme-primaryLight\\)\\]:hover {\n background-color: var(--theme-primaryLight);\n}\n.hover\\:text-\\[var\\(--theme-negative\\)\\]:hover {\n color: var(--theme-negative);\n}\n.hover\\:text-\\[var\\(--theme-onPrimary\\)\\]:hover {\n color: var(--theme-onPrimary);\n}\n.hover\\:text-\\[var\\(--theme-primary\\)\\]:hover {\n color: var(--theme-primary);\n}\n.hover\\:underline:hover {\n text-decoration-line: underline;\n}\n.hover\\:no-underline:hover {\n text-decoration-line: none;\n}\n.focus-visible\\:outline:focus-visible {\n outline-style: solid;\n}\n.focus-visible\\:outline-2:focus-visible {\n outline-width: 2px;\n}\n.focus-visible\\:outline-offset-2:focus-visible {\n outline-offset: 2px;\n}\n.focus-visible\\:outline-\\[var\\(--theme-primary\\)\\]:focus-visible {\n outline-color: var(--theme-primary);\n}\n.active\\:border-\\[var\\(--theme-negative\\)\\]:active {\n border-color: var(--theme-negative);\n}\n.active\\:border-\\[var\\(--theme-primary\\)\\]:active {\n border-color: var(--theme-primary);\n}\n.active\\:border-transparent:active {\n border-color: transparent;\n}\n.active\\:bg-\\[var\\(--theme-background\\)\\]:active {\n background-color: var(--theme-background);\n}\n.active\\:bg-\\[var\\(--theme-negative\\)\\]:active {\n background-color: var(--theme-negative);\n}\n.active\\:bg-\\[var\\(--theme-primaryDark\\)\\]:active {\n background-color: var(--theme-primaryDark);\n}\n.active\\:text-\\[var\\(--theme-onPrimary\\)\\]:active {\n color: var(--theme-onPrimary);\n}\n.disabled\\:translate-y-0:disabled {\n --tw-translate-y: 0px;\n transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\n}\n.disabled\\:scale-100:disabled {\n --tw-scale-x: 1;\n --tw-scale-y: 1;\n transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\n}\n.disabled\\:cursor-not-allowed:disabled {\n cursor: not-allowed;\n}\n.disabled\\:opacity-50:disabled {\n opacity: 0.5;\n}\n.group:has(:disabled) .group-has-\\[\\:disabled\\]\\:opacity-70 {\n opacity: 0.7;\n}\n.\\[\\&\\:\\:-webkit-calendar-picker-indicator\\]\\:absolute::-webkit-calendar-picker-indicator {\n position: absolute;\n}\n.\\[\\&\\:\\:-webkit-calendar-picker-indicator\\]\\:left-0::-webkit-calendar-picker-indicator {\n left: 0px;\n}\n.\\[\\&\\:\\:-webkit-calendar-picker-indicator\\]\\:top-0::-webkit-calendar-picker-indicator {\n top: 0px;\n}\n.\\[\\&\\:\\:-webkit-calendar-picker-indicator\\]\\:h-full::-webkit-calendar-picker-indicator {\n height: 100%;\n}\n.\\[\\&\\:\\:-webkit-calendar-picker-indicator\\]\\:w-full::-webkit-calendar-picker-indicator {\n width: 100%;\n}\n.\\[\\&\\:\\:-webkit-calendar-picker-indicator\\]\\:cursor-pointer::-webkit-calendar-picker-indicator {\n cursor: pointer;\n}\n.\\[\\&\\:\\:-webkit-calendar-picker-indicator\\]\\:opacity-0::-webkit-calendar-picker-indicator {\n opacity: 0;\n}\n.\\[\\&\\:\\:-webkit-datetime-edit\\]\\:flex::-webkit-datetime-edit {\n display: flex;\n}\n.\\[\\&\\:\\:-webkit-datetime-edit\\]\\:h-full::-webkit-datetime-edit {\n height: 100%;\n}\n.\\[\\&\\:\\:-webkit-datetime-edit\\]\\:items-center::-webkit-datetime-edit {\n align-items: center;\n}\n');
67
70
 
68
71
  // node_modules/@fontsource/lato/files/lato-latin-400-normal.woff
69
72
  var lato_latin_400_normal_default = "data:font/woff;base64,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";
@@ -150,6 +153,16 @@ var cx = (...values) => {
150
153
  };
151
154
  var UI_KIT_ROOT_CLASSNAME = "ui-kit-root";
152
155
 
156
+ // src/foundation/color.ts
157
+ function withAlpha(hex, alpha) {
158
+ const normalized = hex.replace("#", "").trim();
159
+ const value = normalized.length === 3 ? normalized.split("").map((char) => char + char).join("") : normalized;
160
+ const red = Number.parseInt(value.slice(0, 2), 16);
161
+ const green = Number.parseInt(value.slice(2, 4), 16);
162
+ const blue = Number.parseInt(value.slice(4, 6), 16);
163
+ return `rgba(${red}, ${green}, ${blue}, ${alpha})`;
164
+ }
165
+
153
166
  // src/foundation/componentState.ts
154
167
  var DISABLED_COMPONENT_OPACITY = 0.5;
155
168
  var DISABLED_FIELD_OPACITY = 0.7;
@@ -458,8 +471,210 @@ function Button({
458
471
  );
459
472
  }
460
473
 
461
- // src/components/Card.tsx
474
+ // src/components/Alert.tsx
475
+ var import_react2 = require("react");
476
+
477
+ // src/components/feedbackPrimitives.tsx
462
478
  var import_jsx_runtime2 = require("react/jsx-runtime");
479
+ var FEEDBACK_TONE_COLOR_NAMES = {
480
+ info: "info",
481
+ positive: "positive",
482
+ warning: "warning",
483
+ negative: "negative"
484
+ };
485
+ var iconProps = ({ size = 20, style, ...rest }) => ({
486
+ ...rest,
487
+ width: size,
488
+ height: size,
489
+ viewBox: "0 0 24 24",
490
+ fill: "none",
491
+ xmlns: "http://www.w3.org/2000/svg",
492
+ "aria-hidden": true,
493
+ focusable: false,
494
+ style
495
+ });
496
+ function InfoIcon(props) {
497
+ return /* @__PURE__ */ (0, import_jsx_runtime2.jsxs)("svg", { ...iconProps(props), children: [
498
+ /* @__PURE__ */ (0, import_jsx_runtime2.jsx)("circle", { cx: "12", cy: "12", r: "9", stroke: "currentColor", strokeWidth: "2" }),
499
+ /* @__PURE__ */ (0, import_jsx_runtime2.jsx)("path", { d: "M12 10V16", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round" }),
500
+ /* @__PURE__ */ (0, import_jsx_runtime2.jsx)("circle", { cx: "12", cy: "7.25", r: "1.25", fill: "currentColor" })
501
+ ] });
502
+ }
503
+ function PositiveIcon(props) {
504
+ return /* @__PURE__ */ (0, import_jsx_runtime2.jsxs)("svg", { ...iconProps(props), children: [
505
+ /* @__PURE__ */ (0, import_jsx_runtime2.jsx)("circle", { cx: "12", cy: "12", r: "9", stroke: "currentColor", strokeWidth: "2" }),
506
+ /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(
507
+ "path",
508
+ {
509
+ d: "M8.25 12.4L10.75 14.9L15.75 9.9",
510
+ stroke: "currentColor",
511
+ strokeWidth: "2",
512
+ strokeLinecap: "round",
513
+ strokeLinejoin: "round"
514
+ }
515
+ )
516
+ ] });
517
+ }
518
+ function WarningIcon(props) {
519
+ return /* @__PURE__ */ (0, import_jsx_runtime2.jsxs)("svg", { ...iconProps(props), children: [
520
+ /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(
521
+ "path",
522
+ {
523
+ d: "M12 3.75L20 18.5C20.35 19.15 19.88 20 19.14 20H4.86C4.12 20 3.65 19.15 4 18.5L12 3.75Z",
524
+ stroke: "currentColor",
525
+ strokeWidth: "2",
526
+ strokeLinejoin: "round"
527
+ }
528
+ ),
529
+ /* @__PURE__ */ (0, import_jsx_runtime2.jsx)("path", { d: "M12 9V13", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round" }),
530
+ /* @__PURE__ */ (0, import_jsx_runtime2.jsx)("circle", { cx: "12", cy: "16.25", r: "1.15", fill: "currentColor" })
531
+ ] });
532
+ }
533
+ function NegativeIcon(props) {
534
+ return /* @__PURE__ */ (0, import_jsx_runtime2.jsxs)("svg", { ...iconProps(props), children: [
535
+ /* @__PURE__ */ (0, import_jsx_runtime2.jsx)("circle", { cx: "12", cy: "12", r: "9", stroke: "currentColor", strokeWidth: "2" }),
536
+ /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(
537
+ "path",
538
+ {
539
+ d: "M9 9L15 15M15 9L9 15",
540
+ stroke: "currentColor",
541
+ strokeWidth: "2",
542
+ strokeLinecap: "round"
543
+ }
544
+ )
545
+ ] });
546
+ }
547
+ var getFeedbackDefaultRole = (tone) => {
548
+ return tone === "warning" || tone === "negative" ? "alert" : "status";
549
+ };
550
+ var getFeedbackToneColor = (theme, tone) => {
551
+ return theme.colors[FEEDBACK_TONE_COLOR_NAMES[tone]];
552
+ };
553
+ var getFeedbackContainerStyle = (theme, tone, alpha) => {
554
+ const toneColor = getFeedbackToneColor(theme, tone);
555
+ return {
556
+ backgroundColor: withAlpha(toneColor, alpha),
557
+ borderColor: toneColor
558
+ };
559
+ };
560
+ var getFeedbackIconBadgeStyle = (theme, tone, alpha) => {
561
+ const toneColor = getFeedbackToneColor(theme, tone);
562
+ return {
563
+ backgroundColor: withAlpha(toneColor, alpha),
564
+ color: toneColor
565
+ };
566
+ };
567
+ var getDefaultFeedbackIcon = (tone, size = 20) => {
568
+ switch (tone) {
569
+ case "positive":
570
+ return /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(PositiveIcon, { size });
571
+ case "warning":
572
+ return /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(WarningIcon, { size });
573
+ case "negative":
574
+ return /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(NegativeIcon, { size });
575
+ case "info":
576
+ default:
577
+ return /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(InfoIcon, { size });
578
+ }
579
+ };
580
+
581
+ // src/components/Alert.tsx
582
+ var import_jsx_runtime3 = require("react/jsx-runtime");
583
+ function Alert({
584
+ tone = "info",
585
+ children,
586
+ title,
587
+ icon,
588
+ action,
589
+ role,
590
+ className,
591
+ style,
592
+ ...rest
593
+ }) {
594
+ const theme = useUiKitTheme();
595
+ const titleId = (0, import_react2.useId)();
596
+ const descriptionId = (0, import_react2.useId)();
597
+ const resolvedRole = role != null ? role : getFeedbackDefaultRole(tone);
598
+ const ariaLive = resolvedRole === "alert" ? "assertive" : resolvedRole === "status" ? "polite" : void 0;
599
+ const iconNode = icon === void 0 ? getDefaultFeedbackIcon(tone, 20) : icon;
600
+ const containerToneStyle = getFeedbackContainerStyle(theme, tone, 0.12);
601
+ const iconToneStyle = getFeedbackIconBadgeStyle(theme, tone, 0.18);
602
+ const contentStyle = {
603
+ display: "flex",
604
+ flexDirection: "column",
605
+ gap: title ? 4 : 0,
606
+ flex: "1 1 220px",
607
+ minWidth: 0
608
+ };
609
+ return /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)(
610
+ "div",
611
+ {
612
+ ...rest,
613
+ role: resolvedRole,
614
+ "aria-live": ariaLive,
615
+ "aria-atomic": ariaLive ? true : void 0,
616
+ "aria-labelledby": title ? titleId : void 0,
617
+ "aria-describedby": children ? descriptionId : void 0,
618
+ className: cx(
619
+ UI_KIT_ROOT_CLASSNAME,
620
+ "rounded-2xl border border-solid text-[var(--theme-text)]",
621
+ className
622
+ ),
623
+ style: {
624
+ ...containerToneStyle,
625
+ display: "flex",
626
+ alignItems: "flex-start",
627
+ flexWrap: "wrap",
628
+ gap: 12,
629
+ padding: "14px 16px",
630
+ ...style
631
+ },
632
+ children: [
633
+ iconNode ? /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(
634
+ "div",
635
+ {
636
+ "aria-hidden": "true",
637
+ className: UI_KIT_ROOT_CLASSNAME,
638
+ style: {
639
+ ...iconToneStyle,
640
+ display: "inline-flex",
641
+ alignItems: "center",
642
+ justifyContent: "center",
643
+ width: 40,
644
+ height: 40,
645
+ borderRadius: 12,
646
+ flexShrink: 0
647
+ },
648
+ children: iconNode
649
+ }
650
+ ) : null,
651
+ /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)("div", { style: contentStyle, children: [
652
+ title ? /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(
653
+ "div",
654
+ {
655
+ id: titleId,
656
+ className: cx(UI_KIT_ROOT_CLASSNAME, "font-bold text-sm"),
657
+ style: { color: containerToneStyle.borderColor },
658
+ children: title
659
+ }
660
+ ) : null,
661
+ /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("div", { id: descriptionId, className: cx(UI_KIT_ROOT_CLASSNAME, "text-sm"), style: { lineHeight: "1.5" }, children })
662
+ ] }),
663
+ action ? /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(
664
+ "div",
665
+ {
666
+ className: cx(UI_KIT_ROOT_CLASSNAME, "shrink-0"),
667
+ style: { alignSelf: "center", color: "var(--theme-text)" },
668
+ children: action
669
+ }
670
+ ) : null
671
+ ]
672
+ }
673
+ );
674
+ }
675
+
676
+ // src/components/Card.tsx
677
+ var import_jsx_runtime4 = require("react/jsx-runtime");
463
678
  function Card({
464
679
  children,
465
680
  eyebrow,
@@ -470,7 +685,7 @@ function Card({
470
685
  ...rest
471
686
  }) {
472
687
  useUiKitTheme();
473
- return /* @__PURE__ */ (0, import_jsx_runtime2.jsxs)(
688
+ return /* @__PURE__ */ (0, import_jsx_runtime4.jsxs)(
474
689
  "div",
475
690
  {
476
691
  ...rest,
@@ -482,12 +697,12 @@ function Card({
482
697
  className
483
698
  ),
484
699
  children: [
485
- (eyebrow || title || action) && /* @__PURE__ */ (0, import_jsx_runtime2.jsxs)("div", { className: "mb-[18px] flex items-start justify-between gap-4", children: [
486
- /* @__PURE__ */ (0, import_jsx_runtime2.jsxs)("div", { className: "flex flex-col gap-1.5", children: [
487
- eyebrow ? /* @__PURE__ */ (0, import_jsx_runtime2.jsx)("span", { className: "text-xs font-extrabold uppercase tracking-[0.16em] text-[var(--theme-textLight)]", children: eyebrow }) : null,
488
- title ? /* @__PURE__ */ (0, import_jsx_runtime2.jsx)("div", { className: "text-2xl font-bold leading-[1.2] text-[var(--theme-text)]", children: title }) : null
700
+ (eyebrow || title || action) && /* @__PURE__ */ (0, import_jsx_runtime4.jsxs)("div", { className: "mb-[18px] flex items-start justify-between gap-4", children: [
701
+ /* @__PURE__ */ (0, import_jsx_runtime4.jsxs)("div", { className: "flex flex-col gap-1.5", children: [
702
+ eyebrow ? /* @__PURE__ */ (0, import_jsx_runtime4.jsx)("span", { className: "text-xs font-extrabold uppercase tracking-[0.16em] text-[var(--theme-textLight)]", children: eyebrow }) : null,
703
+ title ? /* @__PURE__ */ (0, import_jsx_runtime4.jsx)("div", { className: "text-2xl font-bold leading-[1.2] text-[var(--theme-text)]", children: title }) : null
489
704
  ] }),
490
- action ? /* @__PURE__ */ (0, import_jsx_runtime2.jsx)("div", { className: "text-[var(--theme-text)]", children: action }) : null
705
+ action ? /* @__PURE__ */ (0, import_jsx_runtime4.jsx)("div", { className: "text-[var(--theme-text)]", children: action }) : null
491
706
  ] }),
492
707
  children
493
708
  ]
@@ -496,7 +711,7 @@ function Card({
496
711
  }
497
712
 
498
713
  // src/components/CardSmall.tsx
499
- var import_jsx_runtime3 = require("react/jsx-runtime");
714
+ var import_jsx_runtime5 = require("react/jsx-runtime");
500
715
  function CardSmall({
501
716
  title,
502
717
  value,
@@ -508,7 +723,7 @@ function CardSmall({
508
723
  }) {
509
724
  const theme = useUiKitTheme();
510
725
  const accentColor = color != null ? color : theme.colors.primary;
511
- return /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)(
726
+ return /* @__PURE__ */ (0, import_jsx_runtime5.jsxs)(
512
727
  "div",
513
728
  {
514
729
  ...rest,
@@ -525,14 +740,14 @@ function CardSmall({
525
740
  ...style
526
741
  },
527
742
  children: [
528
- /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(
743
+ /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(
529
744
  "div",
530
745
  {
531
746
  "aria-hidden": "true",
532
747
  className: "absolute inset-y-0 left-0 w-[25px] bg-[var(--ui-kit-accent)]"
533
748
  }
534
749
  ),
535
- icon ? /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(
750
+ icon ? /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(
536
751
  "div",
537
752
  {
538
753
  "aria-hidden": "true",
@@ -544,9 +759,9 @@ function CardSmall({
544
759
  children: icon
545
760
  }
546
761
  ) : null,
547
- /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)("div", { className: "flex min-w-0 flex-col gap-1.5", children: [
548
- title ? /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("div", { className: "truncate text-sm font-bold leading-[1.25] text-[var(--theme-text)]", children: title }) : null,
549
- value ? /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("div", { className: "truncate text-[18px] font-extrabold leading-[1.15] text-[var(--theme-text)]", children: value }) : null
762
+ /* @__PURE__ */ (0, import_jsx_runtime5.jsxs)("div", { className: "flex min-w-0 flex-col gap-1.5", children: [
763
+ title ? /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("div", { className: "truncate text-sm font-bold leading-[1.25] text-[var(--theme-text)]", children: title }) : null,
764
+ value ? /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("div", { className: "truncate text-[18px] font-extrabold leading-[1.15] text-[var(--theme-text)]", children: value }) : null
550
765
  ] })
551
766
  ]
552
767
  }
@@ -554,8 +769,8 @@ function CardSmall({
554
769
  }
555
770
 
556
771
  // src/components/Checkbox.tsx
557
- var import_react2 = require("react");
558
- var import_jsx_runtime4 = require("react/jsx-runtime");
772
+ var import_react3 = require("react");
773
+ var import_jsx_runtime6 = require("react/jsx-runtime");
559
774
  var CHECKBOX_SIZE_BY_SIZE = {
560
775
  sm: 14,
561
776
  md: 16,
@@ -577,7 +792,7 @@ var hasNodeContent = (value) => {
577
792
  return value !== null && value !== void 0 && value !== false;
578
793
  };
579
794
  function CheckIcon({ size, color }) {
580
- return /* @__PURE__ */ (0, import_jsx_runtime4.jsx)("svg", { width: size, height: size, viewBox: "0 0 20 20", fill: "none", "aria-hidden": "true", children: /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(
795
+ return /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("svg", { width: size, height: size, viewBox: "0 0 20 20", fill: "none", "aria-hidden": "true", children: /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(
581
796
  "path",
582
797
  {
583
798
  d: "M5.75 10.25L8.5 13l5.75-6",
@@ -589,7 +804,7 @@ function CheckIcon({ size, color }) {
589
804
  ) });
590
805
  }
591
806
  function MixedIcon({ size, color }) {
592
- return /* @__PURE__ */ (0, import_jsx_runtime4.jsx)("svg", { width: size, height: size, viewBox: "0 0 20 20", fill: "none", "aria-hidden": "true", children: /* @__PURE__ */ (0, import_jsx_runtime4.jsx)("path", { d: "M5.5 10H14.5", stroke: color, strokeWidth: "1.8", strokeLinecap: "round" }) });
807
+ return /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("svg", { width: size, height: size, viewBox: "0 0 20 20", fill: "none", "aria-hidden": "true", children: /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("path", { d: "M5.5 10H14.5", stroke: color, strokeWidth: "1.8", strokeLinecap: "round" }) });
593
808
  }
594
809
  function CheckboxIndicator({
595
810
  checked,
@@ -606,7 +821,7 @@ function CheckboxIndicator({
606
821
  const resolvedCheckedColor = checkedColor != null ? checkedColor : theme.colors.textLight;
607
822
  const resolvedIconColor = iconColor != null ? iconColor : theme.colors.surface;
608
823
  const resolvedUncheckedBackgroundColor = uncheckedBackgroundColor != null ? uncheckedBackgroundColor : theme.colors.surface;
609
- return /* @__PURE__ */ (0, import_jsx_runtime4.jsxs)(
824
+ return /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)(
610
825
  "span",
611
826
  {
612
827
  "aria-hidden": "true",
@@ -626,8 +841,8 @@ function CheckboxIndicator({
626
841
  ...style
627
842
  },
628
843
  children: [
629
- indeterminate ? /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(MixedIcon, { size: Math.max(10, size - 6), color: resolvedIconColor }) : null,
630
- !indeterminate && checked ? /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(CheckIcon, { size: Math.max(10, size - 6), color: resolvedIconColor }) : null
844
+ indeterminate ? /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(MixedIcon, { size: Math.max(10, size - 6), color: resolvedIconColor }) : null,
845
+ !indeterminate && checked ? /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(CheckIcon, { size: Math.max(10, size - 6), color: resolvedIconColor }) : null
631
846
  ]
632
847
  }
633
848
  );
@@ -657,23 +872,23 @@ function Checkbox({
657
872
  const hasHint = hasNodeContent(hint);
658
873
  const hasError = hasNodeContent(error);
659
874
  const hasSecondaryContent = hasLabel && hasHint;
660
- const resolvedId = id != null ? id : `ss-checkbox-${(0, import_react2.useId)().replace(/:/g, "")}`;
661
- const inputRef = (0, import_react2.useRef)(null);
662
- const [internalChecked, setInternalChecked] = (0, import_react2.useState)(Boolean(defaultChecked));
875
+ const resolvedId = id != null ? id : `ss-checkbox-${(0, import_react3.useId)().replace(/:/g, "")}`;
876
+ const inputRef = (0, import_react3.useRef)(null);
877
+ const [internalChecked, setInternalChecked] = (0, import_react3.useState)(Boolean(defaultChecked));
663
878
  const isControlled = checked !== void 0;
664
879
  const resolvedChecked = isControlled ? Boolean(checked) : internalChecked;
665
- (0, import_react2.useEffect)(() => {
880
+ (0, import_react3.useEffect)(() => {
666
881
  if (!inputRef.current) {
667
882
  return;
668
883
  }
669
884
  inputRef.current.indeterminate = indeterminate;
670
885
  }, [indeterminate, resolvedChecked]);
671
- return /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(
886
+ return /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(
672
887
  "div",
673
888
  {
674
889
  className: cx(UI_KIT_ROOT_CLASSNAME, "flex w-full flex-col gap-1.5", className),
675
890
  style,
676
- children: /* @__PURE__ */ (0, import_jsx_runtime4.jsxs)(
891
+ children: /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)(
677
892
  "label",
678
893
  {
679
894
  htmlFor: resolvedId,
@@ -685,7 +900,7 @@ function Checkbox({
685
900
  ),
686
901
  style: disabled ? { opacity: DISABLED_FIELD_OPACITY } : void 0,
687
902
  children: [
688
- /* @__PURE__ */ (0, import_jsx_runtime4.jsxs)(
903
+ /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)(
689
904
  "span",
690
905
  {
691
906
  className: cx(
@@ -693,7 +908,7 @@ function Checkbox({
693
908
  hasSecondaryContent ? "mt-px" : "mt-0"
694
909
  ),
695
910
  children: [
696
- /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(
911
+ /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(
697
912
  "input",
698
913
  {
699
914
  ...rest,
@@ -721,7 +936,7 @@ function Checkbox({
721
936
  )
722
937
  }
723
938
  ),
724
- /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(
939
+ /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(
725
940
  CheckboxIndicator,
726
941
  {
727
942
  checked: resolvedChecked,
@@ -737,7 +952,7 @@ function Checkbox({
737
952
  ]
738
953
  }
739
954
  ),
740
- hasLabel || hasHint || hasError ? /* @__PURE__ */ (0, import_jsx_runtime4.jsxs)(
955
+ hasLabel || hasHint || hasError ? /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)(
741
956
  "span",
742
957
  {
743
958
  className: cx(
@@ -745,12 +960,12 @@ function Checkbox({
745
960
  hasSecondaryContent ? "justify-start" : "justify-center"
746
961
  ),
747
962
  children: [
748
- label ? /* @__PURE__ */ (0, import_jsx_runtime4.jsxs)("span", { className: cx("font-semibold text-[var(--theme-text)]", CHECKBOX_LABEL_CLASSNAMES[size]), children: [
963
+ label ? /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)("span", { className: cx("font-semibold text-[var(--theme-text)]", CHECKBOX_LABEL_CLASSNAMES[size]), children: [
749
964
  label,
750
- required ? /* @__PURE__ */ (0, import_jsx_runtime4.jsx)("span", { className: "ml-1 text-[var(--theme-negative)]", children: "*" }) : null
965
+ required ? /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("span", { className: "ml-1 text-[var(--theme-negative)]", children: "*" }) : null
751
966
  ] }) : null,
752
- hint ? /* @__PURE__ */ (0, import_jsx_runtime4.jsx)("span", { className: "text-[13px] leading-[1.45] text-[var(--theme-textLight)]", children: hint }) : null,
753
- error ? /* @__PURE__ */ (0, import_jsx_runtime4.jsx)("span", { className: "text-[13px] font-semibold leading-[1.45] text-[var(--theme-negative)]", children: error }) : null
967
+ hint ? /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("span", { className: "text-[13px] leading-[1.45] text-[var(--theme-textLight)]", children: hint }) : null,
968
+ error ? /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("span", { className: "text-[13px] font-semibold leading-[1.45] text-[var(--theme-negative)]", children: error }) : null
754
969
  ]
755
970
  }
756
971
  ) : null
@@ -762,11 +977,11 @@ function Checkbox({
762
977
  }
763
978
 
764
979
  // src/components/ComposableModal.tsx
765
- var import_react4 = require("react");
980
+ var import_react5 = require("react");
766
981
 
767
982
  // src/components/Modal.tsx
768
- var import_react3 = require("react");
769
- var import_jsx_runtime5 = require("react/jsx-runtime");
983
+ var import_react4 = require("react");
984
+ var import_jsx_runtime7 = require("react/jsx-runtime");
770
985
  var isUiKitTheme = (theme) => {
771
986
  return Boolean(theme && typeof theme === "object" && "title" in theme && "color" in theme);
772
987
  };
@@ -808,6 +1023,9 @@ var createTitleId = (title) => {
808
1023
  }
809
1024
  return "smartsell-modal-dialog";
810
1025
  };
1026
+ var MODAL_HEADER_CONTROL_METRICS = getControlMetrics("sm");
1027
+ var MODAL_HEADER_CONTROL_SIZE = MODAL_HEADER_CONTROL_METRICS.height;
1028
+ var MODAL_HEADER_ICON_SIZE = 18;
811
1029
  function ModalActionButton({
812
1030
  action
813
1031
  }) {
@@ -820,7 +1038,7 @@ function ModalActionButton({
820
1038
  style
821
1039
  } = action;
822
1040
  const variant = appearance === "contained" ? "solid" : appearance === "outlined" ? "outline" : "ghost";
823
- return /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(
1041
+ return /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(
824
1042
  "div",
825
1043
  {
826
1044
  className: "m-0 flex items-center justify-center",
@@ -829,7 +1047,7 @@ function ModalActionButton({
829
1047
  marginBottom: (_b = style == null ? void 0 : style.marginBottom) != null ? _b : 0,
830
1048
  ...style
831
1049
  },
832
- children: /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(
1050
+ children: /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(
833
1051
  Button,
834
1052
  {
835
1053
  variant,
@@ -844,7 +1062,7 @@ function ModalActionButton({
844
1062
  function ModalBusyIndicator({
845
1063
  theme
846
1064
  }) {
847
- return /* @__PURE__ */ (0, import_jsx_runtime5.jsxs)(
1065
+ return /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)(
848
1066
  "div",
849
1067
  {
850
1068
  "aria-live": "polite",
@@ -854,9 +1072,9 @@ function ModalBusyIndicator({
854
1072
  backgroundColor: theme.colors.surface
855
1073
  },
856
1074
  children: [
857
- /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("span", { className: "ui-kit-sr-only", children: "Loading" }),
858
- /* @__PURE__ */ (0, import_jsx_runtime5.jsxs)("svg", { "aria-hidden": "true", width: "32", height: "32", viewBox: "0 0 40 40", fill: "none", children: [
859
- /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(
1075
+ /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("span", { className: "ui-kit-sr-only", children: "Loading" }),
1076
+ /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)("svg", { "aria-hidden": "true", width: "32", height: "32", viewBox: "0 0 40 40", fill: "none", children: [
1077
+ /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(
860
1078
  "circle",
861
1079
  {
862
1080
  cx: "20",
@@ -866,14 +1084,14 @@ function ModalBusyIndicator({
866
1084
  strokeWidth: "4"
867
1085
  }
868
1086
  ),
869
- /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(
1087
+ /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(
870
1088
  "path",
871
1089
  {
872
1090
  d: "M20 4C28.837 4 36 11.163 36 20",
873
1091
  stroke: theme.colors.primary,
874
1092
  strokeWidth: "4",
875
1093
  strokeLinecap: "round",
876
- children: /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(
1094
+ children: /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(
877
1095
  "animateTransform",
878
1096
  {
879
1097
  attributeName: "transform",
@@ -892,32 +1110,107 @@ function ModalBusyIndicator({
892
1110
  );
893
1111
  }
894
1112
  function MaximizeIcon() {
895
- return /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("svg", { "aria-hidden": "true", width: "15", height: "15", viewBox: "0 0 20 20", fill: "none", children: /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("rect", { x: "4.25", y: "4.25", width: "11.5", height: "11.5", rx: "2.2", stroke: "currentColor", strokeWidth: "1.7" }) });
1113
+ return /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("svg", { "aria-hidden": "true", width: MODAL_HEADER_ICON_SIZE, height: MODAL_HEADER_ICON_SIZE, viewBox: "0 0 20 20", fill: "none", children: /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("rect", { x: "4.25", y: "4.25", width: "11.5", height: "11.5", rx: "2.2", stroke: "currentColor", strokeWidth: "1.8" }) });
896
1114
  }
897
1115
  function MinimizeIcon() {
898
- return /* @__PURE__ */ (0, import_jsx_runtime5.jsxs)("svg", { "aria-hidden": "true", width: "15", height: "15", viewBox: "0 0 20 20", fill: "none", children: [
899
- /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(
1116
+ return /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)("svg", { "aria-hidden": "true", width: MODAL_HEADER_ICON_SIZE, height: MODAL_HEADER_ICON_SIZE, viewBox: "0 0 20 20", fill: "none", children: [
1117
+ /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(
900
1118
  "path",
901
1119
  {
902
1120
  d: "M6.25 4.75H13a2.25 2.25 0 0 1 2.25 2.25v6.75",
903
1121
  stroke: "currentColor",
904
- strokeWidth: "1.7",
1122
+ strokeWidth: "1.8",
905
1123
  strokeLinecap: "round",
906
1124
  strokeLinejoin: "round"
907
1125
  }
908
1126
  ),
909
- /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(
1127
+ /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(
910
1128
  "path",
911
1129
  {
912
1130
  d: "M13.75 9.5v4.25a1.5 1.5 0 0 1-1.5 1.5H6a1.75 1.75 0 0 1-1.75-1.75V7.75A1.5 1.5 0 0 1 5.75 6.25H10",
913
1131
  stroke: "currentColor",
914
- strokeWidth: "1.7",
1132
+ strokeWidth: "1.8",
915
1133
  strokeLinecap: "round",
916
1134
  strokeLinejoin: "round"
917
1135
  }
918
1136
  )
919
1137
  ] });
920
1138
  }
1139
+ function CloseIcon() {
1140
+ return /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)("svg", { "aria-hidden": "true", width: MODAL_HEADER_ICON_SIZE, height: MODAL_HEADER_ICON_SIZE, viewBox: "0 0 20 20", fill: "none", children: [
1141
+ /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(
1142
+ "path",
1143
+ {
1144
+ d: "M4.5 4.5 15.5 15.5",
1145
+ stroke: "currentColor",
1146
+ strokeWidth: "1.8",
1147
+ strokeLinecap: "round"
1148
+ }
1149
+ ),
1150
+ /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(
1151
+ "path",
1152
+ {
1153
+ d: "M15.5 4.5 4.5 15.5",
1154
+ stroke: "currentColor",
1155
+ strokeWidth: "1.8",
1156
+ strokeLinecap: "round"
1157
+ }
1158
+ )
1159
+ ] });
1160
+ }
1161
+ function ModalHeaderControl({
1162
+ ariaLabel,
1163
+ title,
1164
+ onClick,
1165
+ disabled = false,
1166
+ children
1167
+ }) {
1168
+ return /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(
1169
+ Button,
1170
+ {
1171
+ variant: "ghost",
1172
+ size: "sm",
1173
+ "aria-label": ariaLabel,
1174
+ title,
1175
+ onClick,
1176
+ disabled,
1177
+ className: cx(
1178
+ "m-0 gap-0 rounded-xl text-[var(--theme-text)] transition-colors",
1179
+ "hover:bg-[var(--theme-background)] hover:no-underline",
1180
+ "active:bg-[var(--theme-background)]",
1181
+ "focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-[var(--theme-primary)]"
1182
+ ),
1183
+ style: {
1184
+ width: MODAL_HEADER_CONTROL_SIZE,
1185
+ minWidth: MODAL_HEADER_CONTROL_SIZE,
1186
+ maxWidth: MODAL_HEADER_CONTROL_SIZE,
1187
+ height: MODAL_HEADER_CONTROL_SIZE,
1188
+ minHeight: MODAL_HEADER_CONTROL_SIZE,
1189
+ maxHeight: MODAL_HEADER_CONTROL_SIZE,
1190
+ padding: 0,
1191
+ aspectRatio: "1 / 1"
1192
+ },
1193
+ children: /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(
1194
+ "span",
1195
+ {
1196
+ "aria-hidden": "true",
1197
+ style: {
1198
+ display: "inline-flex",
1199
+ width: MODAL_HEADER_ICON_SIZE,
1200
+ height: MODAL_HEADER_ICON_SIZE,
1201
+ minWidth: MODAL_HEADER_ICON_SIZE,
1202
+ minHeight: MODAL_HEADER_ICON_SIZE,
1203
+ alignItems: "center",
1204
+ justifyContent: "center",
1205
+ lineHeight: 0,
1206
+ flexShrink: 0
1207
+ },
1208
+ children
1209
+ }
1210
+ )
1211
+ }
1212
+ );
1213
+ }
921
1214
  function UnifiedModal({
922
1215
  isOpen,
923
1216
  onClose,
@@ -943,8 +1236,8 @@ function UnifiedModal({
943
1236
  }) {
944
1237
  var _a, _b;
945
1238
  const inheritedTheme = useUiKitTheme();
946
- const modalTheme = (0, import_react3.useMemo)(() => resolveTheme(inheritedTheme, theme), [inheritedTheme, theme]);
947
- const modalThemeVariables = (0, import_react3.useMemo)(() => ({
1239
+ const modalTheme = (0, import_react4.useMemo)(() => resolveTheme(inheritedTheme, theme), [inheritedTheme, theme]);
1240
+ const modalThemeVariables = (0, import_react4.useMemo)(() => ({
948
1241
  "--theme-background": modalTheme.colors.background,
949
1242
  "--theme-surface": modalTheme.colors.surface,
950
1243
  "--theme-text": modalTheme.colors.text,
@@ -957,10 +1250,10 @@ function UnifiedModal({
957
1250
  "--theme-warning": modalTheme.colors.warning,
958
1251
  "--theme-shadow": modalTheme.colors.shadow
959
1252
  }), [modalTheme]);
960
- const [isMaximized, setIsMaximized] = (0, import_react3.useState)(maximized != null ? maximized : false);
961
- const titleId = (0, import_react3.useMemo)(() => createTitleId(title), [title]);
1253
+ const [isMaximized, setIsMaximized] = (0, import_react4.useState)(maximized != null ? maximized : false);
1254
+ const titleId = (0, import_react4.useMemo)(() => createTitleId(title), [title]);
962
1255
  const shouldDisableDismiss = disableDismiss || isBusy;
963
- (0, import_react3.useEffect)(() => {
1256
+ (0, import_react4.useEffect)(() => {
964
1257
  if (typeof maximized === "boolean") {
965
1258
  setIsMaximized(maximized);
966
1259
  return;
@@ -969,7 +1262,7 @@ function UnifiedModal({
969
1262
  setIsMaximized(true);
970
1263
  }
971
1264
  }, [maximized]);
972
- (0, import_react3.useEffect)(() => {
1265
+ (0, import_react4.useEffect)(() => {
973
1266
  if (!isOpen || typeof window === "undefined" || typeof document === "undefined") {
974
1267
  return;
975
1268
  }
@@ -989,7 +1282,7 @@ function UnifiedModal({
989
1282
  if (!isOpen) {
990
1283
  return null;
991
1284
  }
992
- const resolvedHeader = headerContent != null ? headerContent : title ? /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(
1285
+ const resolvedHeader = headerContent != null ? headerContent : title ? /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(
993
1286
  "h2",
994
1287
  {
995
1288
  id: titleId,
@@ -1000,7 +1293,7 @@ function UnifiedModal({
1000
1293
  let footerContent = footer;
1001
1294
  if (footerContent === void 0) {
1002
1295
  if (closeAction && !closeAction.hidden) {
1003
- footerContent = /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(
1296
+ footerContent = /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(
1004
1297
  ModalActionButton,
1005
1298
  {
1006
1299
  action: { ...closeAction, disabled: closeAction.disabled || isBusy }
@@ -1033,7 +1326,7 @@ function UnifiedModal({
1033
1326
  items.push(action);
1034
1327
  return items;
1035
1328
  }, []);
1036
- footerContent = resolvedActions.length > 0 ? resolvedActions.map((action, index) => /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(
1329
+ footerContent = resolvedActions.length > 0 ? resolvedActions.map((action, index) => /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(
1037
1330
  ModalActionButton,
1038
1331
  {
1039
1332
  action
@@ -1043,7 +1336,7 @@ function UnifiedModal({
1043
1336
  }
1044
1337
  }
1045
1338
  const shouldRenderFooter = footerContent !== void 0 && footerContent !== null && footerContent !== false;
1046
- return /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(
1339
+ return /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(
1047
1340
  "div",
1048
1341
  {
1049
1342
  "aria-label": headerContent ? typeof title === "string" ? title : "Dialog" : void 0,
@@ -1062,7 +1355,7 @@ function UnifiedModal({
1062
1355
  padding: isMaximized ? 0 : 16,
1063
1356
  backgroundColor: modalTheme.colors.shadow
1064
1357
  },
1065
- children: /* @__PURE__ */ (0, import_jsx_runtime5.jsxs)(
1358
+ children: /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)(
1066
1359
  "div",
1067
1360
  {
1068
1361
  className: cx(
@@ -1080,12 +1373,12 @@ function UnifiedModal({
1080
1373
  ...contentStyle
1081
1374
  },
1082
1375
  children: [
1083
- /* @__PURE__ */ (0, import_jsx_runtime5.jsxs)(
1376
+ /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)(
1084
1377
  "div",
1085
1378
  {
1086
1379
  className: "flex items-start justify-between gap-3 px-5 pb-3 pt-[18px]",
1087
1380
  children: [
1088
- /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(
1381
+ /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(
1089
1382
  "div",
1090
1383
  {
1091
1384
  className: cx(
@@ -1095,44 +1388,37 @@ function UnifiedModal({
1095
1388
  children: resolvedHeader
1096
1389
  }
1097
1390
  ),
1098
- /* @__PURE__ */ (0, import_jsx_runtime5.jsxs)("div", { className: "flex items-center gap-2", children: [
1099
- !hideExpandButton ? /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(
1100
- Button,
1391
+ /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)("div", { className: "flex items-center gap-2", children: [
1392
+ !hideExpandButton ? /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(
1393
+ ModalHeaderControl,
1101
1394
  {
1102
- variant: "ghost",
1103
- size: "sm",
1104
- "aria-label": isMaximized ? "Minimize modal" : "Maximize modal",
1395
+ ariaLabel: isMaximized ? "Minimize modal" : "Maximize modal",
1105
1396
  title: isMaximized ? "Minimize" : "Maximize",
1106
1397
  onClick: () => setIsMaximized((current) => !current),
1107
- className: "m-0 text-[var(--theme-text)] hover:no-underline",
1108
- style: { height: 30, maxWidth: 30, padding: 0, width: 30 },
1109
- children: isMaximized ? /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(MinimizeIcon, {}) : /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(MaximizeIcon, {})
1398
+ children: isMaximized ? /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(MinimizeIcon, {}) : /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(MaximizeIcon, {})
1110
1399
  }
1111
1400
  ) : null,
1112
- !hideCloseButton ? /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(
1113
- Button,
1401
+ !hideCloseButton ? /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(
1402
+ ModalHeaderControl,
1114
1403
  {
1115
- variant: "ghost",
1116
- size: "sm",
1117
- "aria-label": "Close modal",
1404
+ ariaLabel: "Close modal",
1405
+ title: "Close",
1118
1406
  onClick: onClose,
1119
1407
  disabled: shouldDisableDismiss,
1120
- className: "m-0 text-[20px] leading-none text-[var(--theme-text)] hover:no-underline",
1121
- style: { height: 30, maxWidth: 30, padding: 0, width: 30 },
1122
- children: "\xD7"
1408
+ children: /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(CloseIcon, {})
1123
1409
  }
1124
1410
  ) : null
1125
1411
  ] })
1126
1412
  ]
1127
1413
  }
1128
1414
  ),
1129
- /* @__PURE__ */ (0, import_jsx_runtime5.jsxs)(
1415
+ /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)(
1130
1416
  "div",
1131
1417
  {
1132
1418
  className: "relative min-h-0 flex-1 overflow-auto p-6",
1133
1419
  style: bodyStyle,
1134
1420
  children: [
1135
- /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(
1421
+ /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(
1136
1422
  "div",
1137
1423
  {
1138
1424
  className: cx(
@@ -1142,18 +1428,18 @@ function UnifiedModal({
1142
1428
  children
1143
1429
  }
1144
1430
  ),
1145
- isBusy ? /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(
1431
+ isBusy ? /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(
1146
1432
  "div",
1147
1433
  {
1148
1434
  className: "absolute inset-0 flex items-center justify-center backdrop-blur-[2px]",
1149
1435
  style: { backgroundColor: modalTheme.colors.background },
1150
- children: /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(ModalBusyIndicator, { theme: modalTheme })
1436
+ children: /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(ModalBusyIndicator, { theme: modalTheme })
1151
1437
  }
1152
1438
  ) : null
1153
1439
  ]
1154
1440
  }
1155
1441
  ),
1156
- shouldRenderFooter ? /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(
1442
+ shouldRenderFooter ? /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(
1157
1443
  "div",
1158
1444
  {
1159
1445
  className: "flex justify-end gap-2.5 px-5 pb-4 pt-3",
@@ -1167,11 +1453,11 @@ function UnifiedModal({
1167
1453
  );
1168
1454
  }
1169
1455
  function Modal(props) {
1170
- return /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(UnifiedModal, { ...props });
1456
+ return /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(UnifiedModal, { ...props });
1171
1457
  }
1172
1458
 
1173
1459
  // src/components/ComposableModal.tsx
1174
- var import_jsx_runtime6 = require("react/jsx-runtime");
1460
+ var import_jsx_runtime8 = require("react/jsx-runtime");
1175
1461
  var createModalSlotIds = (slotBaseId) => ({
1176
1462
  header: `${slotBaseId}:modal-header`,
1177
1463
  body: `${slotBaseId}:modal-body`,
@@ -1199,7 +1485,7 @@ function ComposableModal({
1199
1485
  children
1200
1486
  }) {
1201
1487
  const slotIds = createModalSlotIds(slotBaseId);
1202
- const context = (0, import_react4.useMemo)(
1488
+ const context = (0, import_react5.useMemo)(
1203
1489
  () => ({
1204
1490
  title,
1205
1491
  payload,
@@ -1212,11 +1498,11 @@ function ComposableModal({
1212
1498
  }),
1213
1499
  [cancelLabel, confirmLabel, isBusy, isOpen, onClose, onConfirm, payload, title]
1214
1500
  );
1215
- const defaultFooter = hideDefaultFooter ? void 0 : footerFallback != null ? footerFallback : /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)(import_jsx_runtime6.Fragment, { children: [
1216
- /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(Button, { variant: "outline", onClick: onClose, disabled: isBusy, children: cancelLabel }),
1217
- onConfirm ? /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(Button, { onClick: onConfirm, disabled: isBusy, children: confirmLabel }) : null
1501
+ const defaultFooter = hideDefaultFooter ? void 0 : footerFallback != null ? footerFallback : /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)(import_jsx_runtime8.Fragment, { children: [
1502
+ /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(Button, { variant: "outline", onClick: onClose, disabled: isBusy, children: cancelLabel }),
1503
+ onConfirm ? /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(Button, { onClick: onConfirm, disabled: isBusy, children: confirmLabel }) : null
1218
1504
  ] });
1219
- const defaultHeader = headerFallback != null ? headerFallback : /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(
1505
+ const defaultHeader = headerFallback != null ? headerFallback : /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(
1220
1506
  "h2",
1221
1507
  {
1222
1508
  className: "m-0 text-[24px] font-extrabold leading-[1.1]",
@@ -1236,7 +1522,7 @@ function ComposableModal({
1236
1522
  const headerContent = renderSlotContent(slotIds.header, defaultHeader);
1237
1523
  const bodyContent = renderSlotContent(slotIds.body, children);
1238
1524
  const footerContent = renderSlotContent(slotIds.footer, defaultFooter);
1239
- return /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(
1525
+ return /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(
1240
1526
  Modal,
1241
1527
  {
1242
1528
  isOpen,
@@ -1256,8 +1542,8 @@ function ComposableModal({
1256
1542
  }
1257
1543
 
1258
1544
  // src/components/Input.tsx
1259
- var import_react5 = require("react");
1260
- var import_jsx_runtime7 = require("react/jsx-runtime");
1545
+ var import_react6 = require("react");
1546
+ var import_jsx_runtime9 = require("react/jsx-runtime");
1261
1547
  var PASSWORD_TOGGLE_METRICS_BY_SIZE = {
1262
1548
  sm: {
1263
1549
  buttonSize: 18,
@@ -1302,7 +1588,7 @@ var getInputValidationError = (type, value) => {
1302
1588
  return void 0;
1303
1589
  };
1304
1590
  function EmailIcon({ size }) {
1305
- return /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)(
1591
+ return /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)(
1306
1592
  "svg",
1307
1593
  {
1308
1594
  width: size,
@@ -1311,7 +1597,7 @@ function EmailIcon({ size }) {
1311
1597
  fill: "none",
1312
1598
  "aria-hidden": "true",
1313
1599
  children: [
1314
- /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(
1600
+ /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
1315
1601
  "path",
1316
1602
  {
1317
1603
  d: "M3.75 6.25A1.875 1.875 0 0 1 5.625 4.375h8.75A1.875 1.875 0 0 1 16.25 6.25v7.5a1.875 1.875 0 0 1-1.875 1.875h-8.75A1.875 1.875 0 0 1 3.75 13.75v-7.5Z",
@@ -1321,7 +1607,7 @@ function EmailIcon({ size }) {
1321
1607
  strokeLinejoin: "round"
1322
1608
  }
1323
1609
  ),
1324
- /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(
1610
+ /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
1325
1611
  "path",
1326
1612
  {
1327
1613
  d: "M4.375 6.25 10 10.625l5.625-4.375",
@@ -1336,7 +1622,7 @@ function EmailIcon({ size }) {
1336
1622
  );
1337
1623
  }
1338
1624
  function LoginIcon({ size }) {
1339
- return /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)(
1625
+ return /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)(
1340
1626
  "svg",
1341
1627
  {
1342
1628
  width: size,
@@ -1345,8 +1631,8 @@ function LoginIcon({ size }) {
1345
1631
  fill: "none",
1346
1632
  "aria-hidden": "true",
1347
1633
  children: [
1348
- /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("circle", { cx: "10", cy: "6.25", r: "3", stroke: "currentColor", strokeWidth: "1.6" }),
1349
- /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(
1634
+ /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("circle", { cx: "10", cy: "6.25", r: "3", stroke: "currentColor", strokeWidth: "1.6" }),
1635
+ /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
1350
1636
  "path",
1351
1637
  {
1352
1638
  d: "M4.75 16a5.25 5.25 0 0 1 10.5 0",
@@ -1360,7 +1646,7 @@ function LoginIcon({ size }) {
1360
1646
  );
1361
1647
  }
1362
1648
  function UsernameIcon({ size }) {
1363
- return /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)(
1649
+ return /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)(
1364
1650
  "svg",
1365
1651
  {
1366
1652
  width: size,
@@ -1369,7 +1655,7 @@ function UsernameIcon({ size }) {
1369
1655
  fill: "none",
1370
1656
  "aria-hidden": "true",
1371
1657
  children: [
1372
- /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(
1658
+ /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
1373
1659
  "circle",
1374
1660
  {
1375
1661
  cx: "12",
@@ -1381,7 +1667,7 @@ function UsernameIcon({ size }) {
1381
1667
  strokeLinejoin: "round"
1382
1668
  }
1383
1669
  ),
1384
- /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(
1670
+ /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
1385
1671
  "path",
1386
1672
  {
1387
1673
  d: "M16 8v5a3 3 0 0 0 6 0v-1a10 10 0 1 0-4 8",
@@ -1396,7 +1682,7 @@ function UsernameIcon({ size }) {
1396
1682
  );
1397
1683
  }
1398
1684
  function FullNameIcon({ size }) {
1399
- return /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(
1685
+ return /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
1400
1686
  "svg",
1401
1687
  {
1402
1688
  width: size,
@@ -1404,7 +1690,7 @@ function FullNameIcon({ size }) {
1404
1690
  viewBox: "0 0 24 24",
1405
1691
  fill: "none",
1406
1692
  "aria-hidden": "true",
1407
- children: /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(
1693
+ children: /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
1408
1694
  "path",
1409
1695
  {
1410
1696
  d: "M17 3a2.85 2.83 0 1 1 4 4L7.5 20.5 2 22l1.5-5.5Z",
@@ -1418,7 +1704,7 @@ function FullNameIcon({ size }) {
1418
1704
  );
1419
1705
  }
1420
1706
  function CalendarIcon({ size }) {
1421
- return /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)(
1707
+ return /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)(
1422
1708
  "svg",
1423
1709
  {
1424
1710
  width: size,
@@ -1427,7 +1713,7 @@ function CalendarIcon({ size }) {
1427
1713
  fill: "none",
1428
1714
  "aria-hidden": "true",
1429
1715
  children: [
1430
- /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(
1716
+ /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
1431
1717
  "rect",
1432
1718
  {
1433
1719
  width: "18",
@@ -1442,7 +1728,7 @@ function CalendarIcon({ size }) {
1442
1728
  strokeLinejoin: "round"
1443
1729
  }
1444
1730
  ),
1445
- /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(
1731
+ /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
1446
1732
  "line",
1447
1733
  {
1448
1734
  x1: "16",
@@ -1455,7 +1741,7 @@ function CalendarIcon({ size }) {
1455
1741
  strokeLinejoin: "round"
1456
1742
  }
1457
1743
  ),
1458
- /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(
1744
+ /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
1459
1745
  "line",
1460
1746
  {
1461
1747
  x1: "8",
@@ -1468,7 +1754,7 @@ function CalendarIcon({ size }) {
1468
1754
  strokeLinejoin: "round"
1469
1755
  }
1470
1756
  ),
1471
- /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(
1757
+ /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
1472
1758
  "line",
1473
1759
  {
1474
1760
  x1: "3",
@@ -1486,7 +1772,7 @@ function CalendarIcon({ size }) {
1486
1772
  );
1487
1773
  }
1488
1774
  function FileIcon({ size, selected }) {
1489
- return /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(
1775
+ return /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
1490
1776
  "svg",
1491
1777
  {
1492
1778
  width: size,
@@ -1494,8 +1780,8 @@ function FileIcon({ size, selected }) {
1494
1780
  viewBox: "0 0 20 20",
1495
1781
  fill: "none",
1496
1782
  "aria-hidden": "true",
1497
- children: selected ? /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)(import_jsx_runtime7.Fragment, { children: [
1498
- /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(
1783
+ children: selected ? /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)(import_jsx_runtime9.Fragment, { children: [
1784
+ /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
1499
1785
  "path",
1500
1786
  {
1501
1787
  d: "M5.5 6.25h9",
@@ -1504,7 +1790,7 @@ function FileIcon({ size, selected }) {
1504
1790
  strokeLinecap: "round"
1505
1791
  }
1506
1792
  ),
1507
- /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(
1793
+ /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
1508
1794
  "path",
1509
1795
  {
1510
1796
  d: "M7.25 6.25V5.25A1.5 1.5 0 0 1 8.75 3.75h2.5a1.5 1.5 0 0 1 1.5 1.5v1",
@@ -1514,7 +1800,7 @@ function FileIcon({ size, selected }) {
1514
1800
  strokeLinejoin: "round"
1515
1801
  }
1516
1802
  ),
1517
- /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(
1803
+ /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
1518
1804
  "path",
1519
1805
  {
1520
1806
  d: "M7.75 8.25v5.5",
@@ -1523,7 +1809,7 @@ function FileIcon({ size, selected }) {
1523
1809
  strokeLinecap: "round"
1524
1810
  }
1525
1811
  ),
1526
- /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(
1812
+ /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
1527
1813
  "path",
1528
1814
  {
1529
1815
  d: "M10 8.25v5.5",
@@ -1532,7 +1818,7 @@ function FileIcon({ size, selected }) {
1532
1818
  strokeLinecap: "round"
1533
1819
  }
1534
1820
  ),
1535
- /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(
1821
+ /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
1536
1822
  "path",
1537
1823
  {
1538
1824
  d: "M12.25 8.25v5.5",
@@ -1541,7 +1827,7 @@ function FileIcon({ size, selected }) {
1541
1827
  strokeLinecap: "round"
1542
1828
  }
1543
1829
  ),
1544
- /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(
1830
+ /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
1545
1831
  "path",
1546
1832
  {
1547
1833
  d: "M6.75 6.25l.5 8a1.5 1.5 0 0 0 1.497 1.406h2.506A1.5 1.5 0 0 0 12.75 14.25l.5-8",
@@ -1551,8 +1837,8 @@ function FileIcon({ size, selected }) {
1551
1837
  strokeLinejoin: "round"
1552
1838
  }
1553
1839
  )
1554
- ] }) : /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)(import_jsx_runtime7.Fragment, { children: [
1555
- /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(
1840
+ ] }) : /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)(import_jsx_runtime9.Fragment, { children: [
1841
+ /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
1556
1842
  "path",
1557
1843
  {
1558
1844
  d: "M6.25 2.5h5.652l4.348 4.348V15A2.5 2.5 0 0 1 13.75 17.5h-7.5A2.5 2.5 0 0 1 3.75 15V5A2.5 2.5 0 0 1 6.25 2.5Z",
@@ -1562,7 +1848,7 @@ function FileIcon({ size, selected }) {
1562
1848
  strokeLinejoin: "round"
1563
1849
  }
1564
1850
  ),
1565
- /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(
1851
+ /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
1566
1852
  "path",
1567
1853
  {
1568
1854
  d: "M11.875 2.75V6.25H15.375",
@@ -1572,7 +1858,7 @@ function FileIcon({ size, selected }) {
1572
1858
  strokeLinejoin: "round"
1573
1859
  }
1574
1860
  ),
1575
- /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(
1861
+ /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
1576
1862
  "path",
1577
1863
  {
1578
1864
  d: "M7.5 10h5",
@@ -1581,7 +1867,7 @@ function FileIcon({ size, selected }) {
1581
1867
  strokeLinecap: "round"
1582
1868
  }
1583
1869
  ),
1584
- /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(
1870
+ /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
1585
1871
  "path",
1586
1872
  {
1587
1873
  d: "M7.5 13h5",
@@ -1598,7 +1884,7 @@ function PasswordVisibleIcon({
1598
1884
  size,
1599
1885
  playing = false
1600
1886
  }) {
1601
- return /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)(
1887
+ return /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)(
1602
1888
  "svg",
1603
1889
  {
1604
1890
  width: size,
@@ -1610,8 +1896,8 @@ function PasswordVisibleIcon({
1610
1896
  animation: `lf-lock-hint-blink ${LOCK_HINT_DURATION_MS}ms ease-in-out`
1611
1897
  } : void 0,
1612
1898
  children: [
1613
- playing ? /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("style", { children: LOCK_HINT_STYLE }) : null,
1614
- /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(
1899
+ playing ? /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("style", { children: LOCK_HINT_STYLE }) : null,
1900
+ /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
1615
1901
  "path",
1616
1902
  {
1617
1903
  d: "M6.75 8V6.75A3.25 3.25 0 0 1 12.262 4.415",
@@ -1621,7 +1907,7 @@ function PasswordVisibleIcon({
1621
1907
  strokeLinejoin: "round"
1622
1908
  }
1623
1909
  ),
1624
- /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(
1910
+ /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
1625
1911
  "path",
1626
1912
  {
1627
1913
  d: "M6 8.25h8a1.75 1.75 0 0 1 1.75 1.75V14A1.75 1.75 0 0 1 14 15.75H6A1.75 1.75 0 0 1 4.25 14V10A1.75 1.75 0 0 1 6 8.25Z",
@@ -1631,7 +1917,7 @@ function PasswordVisibleIcon({
1631
1917
  strokeLinejoin: "round"
1632
1918
  }
1633
1919
  ),
1634
- /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(
1920
+ /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
1635
1921
  "path",
1636
1922
  {
1637
1923
  d: "M10 11.25v1.5",
@@ -1661,7 +1947,7 @@ function PasswordHiddenIcon({
1661
1947
  size,
1662
1948
  playing = false
1663
1949
  }) {
1664
- return /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)(
1950
+ return /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)(
1665
1951
  "svg",
1666
1952
  {
1667
1953
  width: size,
@@ -1673,8 +1959,8 @@ function PasswordHiddenIcon({
1673
1959
  animation: `lf-lock-hint-blink ${LOCK_HINT_DURATION_MS}ms ease-in-out`
1674
1960
  } : void 0,
1675
1961
  children: [
1676
- playing ? /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("style", { children: LOCK_HINT_STYLE }) : null,
1677
- /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(
1962
+ playing ? /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("style", { children: LOCK_HINT_STYLE }) : null,
1963
+ /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
1678
1964
  "path",
1679
1965
  {
1680
1966
  d: "M6.75 8V6.75A3.25 3.25 0 1 1 13.25 6.75V8",
@@ -1689,7 +1975,7 @@ function PasswordHiddenIcon({
1689
1975
  } : void 0
1690
1976
  }
1691
1977
  ),
1692
- /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(
1978
+ /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
1693
1979
  "path",
1694
1980
  {
1695
1981
  d: "M6 8.25h8a1.75 1.75 0 0 1 1.75 1.75V14A1.75 1.75 0 0 1 14 15.75H6A1.75 1.75 0 0 1 4.25 14V10A1.75 1.75 0 0 1 6 8.25Z",
@@ -1699,7 +1985,7 @@ function PasswordHiddenIcon({
1699
1985
  strokeLinejoin: "round"
1700
1986
  }
1701
1987
  ),
1702
- /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(
1988
+ /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
1703
1989
  "path",
1704
1990
  {
1705
1991
  d: "M10 11.25v1.5",
@@ -1731,7 +2017,7 @@ function ControlFrame({
1731
2017
  useUiKitTheme();
1732
2018
  const isTextarea = alignLabel === "top";
1733
2019
  const controlMetrics = getControlMetrics(size);
1734
- const floatingElement = floatingPlaceholder ? /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(
2020
+ const floatingElement = floatingPlaceholder ? /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
1735
2021
  "span",
1736
2022
  {
1737
2023
  className: cx(
@@ -1757,16 +2043,16 @@ function ControlFrame({
1757
2043
  children: floatingPlaceholder
1758
2044
  }
1759
2045
  ) : null;
1760
- const innerContent = /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)("div", { className: "relative w-full flex group", children: [
2046
+ const innerContent = /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)("div", { className: "relative w-full flex group", children: [
1761
2047
  children,
1762
2048
  floatingElement
1763
2049
  ] });
1764
- const hintsContent = hint || error ? /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)("div", { className: "flex flex-col gap-1 mt-0", style: { paddingLeft: controlMetrics.paddingX }, children: [
1765
- hint && !error ? /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("span", { className: "text-[13px] leading-[1.45] text-[var(--theme-textLight)]", children: hint }) : null,
1766
- error ? /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("span", { className: "text-[13px] font-semibold leading-[1.45] text-[var(--theme-negative)]", children: error }) : null
2050
+ const hintsContent = hint || error ? /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)("div", { className: "flex flex-col gap-1 mt-0", style: { paddingLeft: controlMetrics.paddingX }, children: [
2051
+ hint && !error ? /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("span", { className: "text-[13px] leading-[1.45] text-[var(--theme-textLight)]", children: hint }) : null,
2052
+ error ? /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("span", { className: "text-[13px] font-semibold leading-[1.45] text-[var(--theme-negative)]", children: error }) : null
1767
2053
  ] }) : null;
1768
2054
  if (label && useLabelWrapper) {
1769
- return /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)(
2055
+ return /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)(
1770
2056
  "label",
1771
2057
  {
1772
2058
  htmlFor,
@@ -1776,9 +2062,9 @@ function ControlFrame({
1776
2062
  ),
1777
2063
  style,
1778
2064
  children: [
1779
- /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)("span", { className: "text-[13px] font-semibold leading-[1.45] text-[var(--theme-text)]", children: [
2065
+ /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)("span", { className: "text-[13px] font-semibold leading-[1.45] text-[var(--theme-text)]", children: [
1780
2066
  label,
1781
- required ? /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("span", { className: "ml-1 text-[var(--theme-negative)]", children: "*" }) : null
2067
+ required ? /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("span", { className: "ml-1 text-[var(--theme-negative)]", children: "*" }) : null
1782
2068
  ] }),
1783
2069
  innerContent,
1784
2070
  hintsContent
@@ -1786,20 +2072,20 @@ function ControlFrame({
1786
2072
  }
1787
2073
  );
1788
2074
  }
1789
- return /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)(
2075
+ return /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)(
1790
2076
  "div",
1791
2077
  {
1792
2078
  className: cx(UI_KIT_ROOT_CLASSNAME, "flex w-full flex-col gap-1"),
1793
2079
  style,
1794
2080
  children: [
1795
- label && !useLabelWrapper ? /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)(
2081
+ label && !useLabelWrapper ? /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)(
1796
2082
  "label",
1797
2083
  {
1798
2084
  htmlFor,
1799
2085
  className: "text-[13px] font-semibold leading-[1.45] text-[var(--theme-text)]",
1800
2086
  children: [
1801
2087
  label,
1802
- required ? /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("span", { className: "ml-1 text-[var(--theme-negative)]", children: "*" }) : null
2088
+ required ? /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("span", { className: "ml-1 text-[var(--theme-negative)]", children: "*" }) : null
1803
2089
  ]
1804
2090
  }
1805
2091
  ) : null,
@@ -1829,16 +2115,16 @@ function Input({
1829
2115
  }) {
1830
2116
  const controlMetrics = getControlMetrics(size);
1831
2117
  const passwordToggleMetrics = getPasswordToggleMetrics(size);
1832
- const generatedId = (0, import_react5.useId)();
2118
+ const generatedId = (0, import_react6.useId)();
1833
2119
  const inputId = id != null ? id : generatedId;
1834
- const fileInputRef = (0, import_react5.useRef)(null);
1835
- const [isPasswordVisible, setIsPasswordVisible] = (0, import_react5.useState)(false);
1836
- const [isLockHinting, setIsLockHinting] = (0, import_react5.useState)(false);
1837
- const [isLockHintOpen, setIsLockHintOpen] = (0, import_react5.useState)(false);
1838
- const lockHintTimerRef = (0, import_react5.useRef)(null);
1839
- const lockHintIntervalRef = (0, import_react5.useRef)(null);
1840
- const [selectedFileNames, setSelectedFileNames] = (0, import_react5.useState)([]);
1841
- const [validationError, setValidationError] = (0, import_react5.useState)();
2120
+ const fileInputRef = (0, import_react6.useRef)(null);
2121
+ const [isPasswordVisible, setIsPasswordVisible] = (0, import_react6.useState)(false);
2122
+ const [isLockHinting, setIsLockHinting] = (0, import_react6.useState)(false);
2123
+ const [isLockHintOpen, setIsLockHintOpen] = (0, import_react6.useState)(false);
2124
+ const lockHintTimerRef = (0, import_react6.useRef)(null);
2125
+ const lockHintIntervalRef = (0, import_react6.useRef)(null);
2126
+ const [selectedFileNames, setSelectedFileNames] = (0, import_react6.useState)([]);
2127
+ const [validationError, setValidationError] = (0, import_react6.useState)();
1842
2128
  const isPasswordField = type === "password";
1843
2129
  const isEmailField = type === "email";
1844
2130
  const isLoginField = type === "login";
@@ -1853,7 +2139,7 @@ function Input({
1853
2139
  }
1854
2140
  const isValidatableField = isEmailField || isLoginField || isUsernameField || isFullNameField;
1855
2141
  const validationKey = isValidatableField && typeof rest.value === "string" ? `${type}\0${rest.value}` : null;
1856
- const [prevValidationKey, setPrevValidationKey] = (0, import_react5.useState)(
2142
+ const [prevValidationKey, setPrevValidationKey] = (0, import_react6.useState)(
1857
2143
  null
1858
2144
  );
1859
2145
  if (validationKey !== prevValidationKey) {
@@ -1877,7 +2163,7 @@ function Input({
1877
2163
  setIsLockHinting(false);
1878
2164
  setIsLockHintOpen(false);
1879
2165
  };
1880
- (0, import_react5.useEffect)(() => clearLockHintTimers, []);
2166
+ (0, import_react6.useEffect)(() => clearLockHintTimers, []);
1881
2167
  const triggerLockHint = () => {
1882
2168
  var _a;
1883
2169
  if (disabled || isPasswordVisible || lockHintTimerRef.current !== null) {
@@ -1922,12 +2208,12 @@ function Input({
1922
2208
  const floatingPlaceholder = !disableFloatingLabel && placeholder !== void 0 && placeholder !== "" ? placeholder : void 0;
1923
2209
  const resolvedPlaceholder = placeholder != null ? placeholder : " ";
1924
2210
  const isStaticPlaceholderVisible = disableFloatingLabel && (rest.value === "" || rest.value == null && rest.defaultValue == null);
1925
- const defaultLeadingIcon = isEmailField ? /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(EmailIcon, { size: fileIconSize }) : isUsernameField ? /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(UsernameIcon, { size: fileIconSize }) : isFullNameField ? /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(FullNameIcon, { size: fileIconSize }) : isLoginField ? /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(LoginIcon, { size: fileIconSize }) : isDateField ? /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(CalendarIcon, { size: fileIconSize }) : null;
2211
+ const defaultLeadingIcon = isEmailField ? /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(EmailIcon, { size: fileIconSize }) : isUsernameField ? /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(UsernameIcon, { size: fileIconSize }) : isFullNameField ? /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(FullNameIcon, { size: fileIconSize }) : isLoginField ? /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(LoginIcon, { size: fileIconSize }) : isDateField ? /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(CalendarIcon, { size: fileIconSize }) : null;
1926
2212
  const resolvedLeadingIcon = icon != null ? icon : defaultLeadingIcon;
1927
2213
  const hasLeadingIcon = isRenderableNode(resolvedLeadingIcon);
1928
2214
  const hasCustomLeadingIcon = isRenderableNode(icon) && hasLeadingIcon;
1929
- const resolvedFileIcon = icon != null ? icon : /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(FileIcon, { size: fileIconSize, selected: hasSelectedFiles });
1930
- const resolvedPasswordIcon = icon != null ? icon : isPasswordVisible || isLockHinting && isLockHintOpen ? /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(PasswordVisibleIcon, { size: passwordLockIconSize, playing: isLockHinting }) : /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(PasswordHiddenIcon, { size: passwordLockIconSize, playing: isLockHinting });
2215
+ const resolvedFileIcon = icon != null ? icon : /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(FileIcon, { size: fileIconSize, selected: hasSelectedFiles });
2216
+ const resolvedPasswordIcon = icon != null ? icon : isPasswordVisible || isLockHinting && isLockHintOpen ? /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(PasswordVisibleIcon, { size: passwordLockIconSize, playing: isLockHinting }) : /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(PasswordHiddenIcon, { size: passwordLockIconSize, playing: isLockHinting });
1931
2217
  const placeholderClass = floatingPlaceholder ? "placeholder-transparent" : "placeholder-[var(--theme-textLight)]";
1932
2218
  let resolvedLabelOffset = void 0;
1933
2219
  if (isFileField) {
@@ -2010,8 +2296,8 @@ function Input({
2010
2296
  fileInputRef.current.value = "";
2011
2297
  fileInputRef.current.dispatchEvent(new Event("change", { bubbles: true }));
2012
2298
  };
2013
- const input = isFileField ? /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)(import_jsx_runtime7.Fragment, { children: [
2014
- /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(
2299
+ const input = isFileField ? /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)(import_jsx_runtime9.Fragment, { children: [
2300
+ /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
2015
2301
  "input",
2016
2302
  {
2017
2303
  ...rest,
@@ -2031,7 +2317,7 @@ function Input({
2031
2317
  className: "hidden"
2032
2318
  }
2033
2319
  ),
2034
- /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)(
2320
+ /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)(
2035
2321
  "div",
2036
2322
  {
2037
2323
  className: cx(
@@ -2041,7 +2327,7 @@ function Input({
2041
2327
  ),
2042
2328
  style: { ...style, ...getFieldSizeStyles(size) },
2043
2329
  children: [
2044
- /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)(
2330
+ /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)(
2045
2331
  "button",
2046
2332
  {
2047
2333
  type: "button",
@@ -2066,7 +2352,7 @@ function Input({
2066
2352
  paddingLeft: leadingIconInset
2067
2353
  },
2068
2354
  children: [
2069
- /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(
2355
+ /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
2070
2356
  "span",
2071
2357
  {
2072
2358
  className: cx(
@@ -2077,11 +2363,11 @@ function Input({
2077
2363
  children: resolvedFileIcon
2078
2364
  }
2079
2365
  ),
2080
- showUploadLabel ? /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("span", { children: fileButtonLabel }) : null
2366
+ showUploadLabel ? /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("span", { children: fileButtonLabel }) : null
2081
2367
  ]
2082
2368
  }
2083
2369
  ),
2084
- /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(
2370
+ /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
2085
2371
  "button",
2086
2372
  {
2087
2373
  type: "button",
@@ -2094,7 +2380,7 @@ function Input({
2094
2380
  "text-left appearance-none",
2095
2381
  disabled ? "cursor-not-allowed" : "cursor-pointer"
2096
2382
  ),
2097
- children: fileSelectionText ? /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(
2383
+ children: fileSelectionText ? /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
2098
2384
  "span",
2099
2385
  {
2100
2386
  className: cx(
@@ -2114,13 +2400,13 @@ function Input({
2114
2400
  ]
2115
2401
  }
2116
2402
  )
2117
- ] }) : canTogglePasswordVisibility ? /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)(
2403
+ ] }) : canTogglePasswordVisibility ? /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)(
2118
2404
  "div",
2119
2405
  {
2120
2406
  className: cx(adornedFieldClassName, className),
2121
2407
  style: { ...style, ...getFieldSizeStyles(size) },
2122
2408
  children: [
2123
- /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(
2409
+ /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
2124
2410
  "button",
2125
2411
  {
2126
2412
  type: "button",
@@ -2150,7 +2436,7 @@ function Input({
2150
2436
  children: resolvedPasswordIcon
2151
2437
  }
2152
2438
  ),
2153
- /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(
2439
+ /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
2154
2440
  "input",
2155
2441
  {
2156
2442
  ...rest,
@@ -2180,13 +2466,13 @@ function Input({
2180
2466
  )
2181
2467
  ]
2182
2468
  }
2183
- ) : hasLeadingIcon ? /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)(
2469
+ ) : hasLeadingIcon ? /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)(
2184
2470
  "div",
2185
2471
  {
2186
2472
  className: cx(adornedFieldClassName, className),
2187
2473
  style: { ...style, ...getFieldSizeStyles(size) },
2188
2474
  children: [
2189
- /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(
2475
+ /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
2190
2476
  "span",
2191
2477
  {
2192
2478
  className: cx(
@@ -2203,7 +2489,7 @@ function Input({
2203
2489
  children: resolvedLeadingIcon
2204
2490
  }
2205
2491
  ),
2206
- /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(
2492
+ /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
2207
2493
  "input",
2208
2494
  {
2209
2495
  ...rest,
@@ -2235,7 +2521,7 @@ function Input({
2235
2521
  )
2236
2522
  ]
2237
2523
  }
2238
- ) : /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(
2524
+ ) : /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
2239
2525
  "input",
2240
2526
  {
2241
2527
  ...rest,
@@ -2254,7 +2540,7 @@ function Input({
2254
2540
  }
2255
2541
  }
2256
2542
  );
2257
- return /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(
2543
+ return /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
2258
2544
  ControlFrame,
2259
2545
  {
2260
2546
  label,
@@ -2274,7 +2560,7 @@ function Input({
2274
2560
  }
2275
2561
 
2276
2562
  // src/components/DatePicker.tsx
2277
- var import_jsx_runtime8 = require("react/jsx-runtime");
2563
+ var import_jsx_runtime10 = require("react/jsx-runtime");
2278
2564
  var pad = (value) => String(value).padStart(2, "0");
2279
2565
  function normalizeDateValue(value, mode) {
2280
2566
  if (value == null || value === "") {
@@ -2310,7 +2596,7 @@ function DatePicker({
2310
2596
  const nativeType = mode === "datetime" ? "datetime-local" : "date";
2311
2597
  const normalizedValue = normalizeDateValue(value, mode);
2312
2598
  const normalizedDefaultValue = normalizeDateValue(defaultValue, mode);
2313
- return /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(
2599
+ return /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(
2314
2600
  Input,
2315
2601
  {
2316
2602
  ...props,
@@ -2334,8 +2620,77 @@ function DatePicker({
2334
2620
  );
2335
2621
  }
2336
2622
 
2623
+ // src/components/IconButton.tsx
2624
+ var import_react7 = require("react");
2625
+ var import_jsx_runtime11 = require("react/jsx-runtime");
2626
+ var ICON_SIZE_BY_CONTROL_SIZE = {
2627
+ sm: 16,
2628
+ md: 18,
2629
+ lg: 20
2630
+ };
2631
+ var resolveIcon = (icon) => {
2632
+ var _a;
2633
+ if (!(0, import_react7.isValidElement)(icon)) {
2634
+ return icon;
2635
+ }
2636
+ const iconElement = icon;
2637
+ return (0, import_react7.cloneElement)(iconElement, {
2638
+ style: {
2639
+ width: "100%",
2640
+ height: "100%",
2641
+ ...(_a = iconElement.props.style) != null ? _a : {}
2642
+ }
2643
+ });
2644
+ };
2645
+ function IconButton({
2646
+ icon,
2647
+ ariaLabel,
2648
+ size = "md",
2649
+ variant = "solid",
2650
+ className,
2651
+ style,
2652
+ ...rest
2653
+ }) {
2654
+ const controlMetrics = getControlMetrics(size);
2655
+ const iconSize = ICON_SIZE_BY_CONTROL_SIZE[size];
2656
+ return /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(
2657
+ Button,
2658
+ {
2659
+ ...rest,
2660
+ "aria-label": ariaLabel,
2661
+ size,
2662
+ variant,
2663
+ className: className ? `gap-0 ${className}` : "gap-0",
2664
+ style: {
2665
+ width: controlMetrics.height,
2666
+ minWidth: controlMetrics.height,
2667
+ maxWidth: controlMetrics.height,
2668
+ padding: 0,
2669
+ aspectRatio: "1 / 1",
2670
+ ...style
2671
+ },
2672
+ children: /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(
2673
+ "span",
2674
+ {
2675
+ "aria-hidden": "true",
2676
+ style: {
2677
+ display: "inline-flex",
2678
+ alignItems: "center",
2679
+ justifyContent: "center",
2680
+ width: iconSize,
2681
+ height: iconSize,
2682
+ lineHeight: 0,
2683
+ flexShrink: 0
2684
+ },
2685
+ children: resolveIcon(icon)
2686
+ }
2687
+ )
2688
+ }
2689
+ );
2690
+ }
2691
+
2337
2692
  // src/components/Loading.tsx
2338
- var import_jsx_runtime9 = require("react/jsx-runtime");
2693
+ var import_jsx_runtime12 = require("react/jsx-runtime");
2339
2694
  var SIZE_BY_CONTROL_SIZE = {
2340
2695
  sm: 28,
2341
2696
  md: 40,
@@ -2409,7 +2764,7 @@ function Loading({
2409
2764
  animation: `ss-loading-drop ${dropDuration}ms cubic-bezier(0.45, 0, 0.35, 1) infinite`,
2410
2765
  animationDelay: `${ITEM_DELAY_RATIOS[index] * dropDuration}ms`
2411
2766
  });
2412
- return /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)(
2767
+ return /* @__PURE__ */ (0, import_jsx_runtime12.jsxs)(
2413
2768
  "div",
2414
2769
  {
2415
2770
  ...rest,
@@ -2423,7 +2778,7 @@ function Loading({
2423
2778
  ...style
2424
2779
  },
2425
2780
  children: [
2426
- /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)(
2781
+ /* @__PURE__ */ (0, import_jsx_runtime12.jsxs)(
2427
2782
  "svg",
2428
2783
  {
2429
2784
  className: "ss-loading-svg",
@@ -2434,8 +2789,8 @@ function Loading({
2434
2789
  "aria-hidden": "true",
2435
2790
  style: { color: strokeColor, overflow: "hidden" },
2436
2791
  children: [
2437
- /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("style", { children: LOADING_KEYFRAMES }),
2438
- /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)(
2792
+ /* @__PURE__ */ (0, import_jsx_runtime12.jsx)("style", { children: LOADING_KEYFRAMES }),
2793
+ /* @__PURE__ */ (0, import_jsx_runtime12.jsxs)(
2439
2794
  "g",
2440
2795
  {
2441
2796
  className: "ss-loading-cart",
@@ -2445,7 +2800,7 @@ function Loading({
2445
2800
  animation: `ss-loading-bob ${BASE_BOB_MS / safeSpeed}ms ease-in-out infinite`
2446
2801
  },
2447
2802
  children: [
2448
- /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
2803
+ /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(
2449
2804
  "rect",
2450
2805
  {
2451
2806
  className: "ss-loading-item",
@@ -2459,7 +2814,7 @@ function Loading({
2459
2814
  style: itemAnimation(0)
2460
2815
  }
2461
2816
  ),
2462
- /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
2817
+ /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(
2463
2818
  "circle",
2464
2819
  {
2465
2820
  className: "ss-loading-item",
@@ -2471,7 +2826,7 @@ function Loading({
2471
2826
  style: itemAnimation(1)
2472
2827
  }
2473
2828
  ),
2474
- /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
2829
+ /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(
2475
2830
  "rect",
2476
2831
  {
2477
2832
  className: "ss-loading-item",
@@ -2485,13 +2840,13 @@ function Loading({
2485
2840
  style: itemAnimation(2)
2486
2841
  }
2487
2842
  ),
2488
- /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)("g", { stroke: "currentColor", strokeWidth: 2.6, strokeLinecap: "round", strokeLinejoin: "round", children: [
2489
- /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("path", { d: "M3.5 7.5h4.6l1.6 5" }),
2490
- /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("path", { d: "M9.7 12.5H43l-4.4 13.5H14.1z" }),
2491
- /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("path", { d: "M18 26v3.4" }),
2492
- /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("path", { d: "M35 26v3.4" })
2843
+ /* @__PURE__ */ (0, import_jsx_runtime12.jsxs)("g", { stroke: "currentColor", strokeWidth: 2.6, strokeLinecap: "round", strokeLinejoin: "round", children: [
2844
+ /* @__PURE__ */ (0, import_jsx_runtime12.jsx)("path", { d: "M3.5 7.5h4.6l1.6 5" }),
2845
+ /* @__PURE__ */ (0, import_jsx_runtime12.jsx)("path", { d: "M9.7 12.5H43l-4.4 13.5H14.1z" }),
2846
+ /* @__PURE__ */ (0, import_jsx_runtime12.jsx)("path", { d: "M18 26v3.4" }),
2847
+ /* @__PURE__ */ (0, import_jsx_runtime12.jsx)("path", { d: "M35 26v3.4" })
2493
2848
  ] }),
2494
- WHEELS.map((wheel) => /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)(
2849
+ WHEELS.map((wheel) => /* @__PURE__ */ (0, import_jsx_runtime12.jsxs)(
2495
2850
  "g",
2496
2851
  {
2497
2852
  className: "ss-loading-wheel",
@@ -2501,7 +2856,7 @@ function Loading({
2501
2856
  animation: `ss-loading-wheel ${BASE_WHEEL_MS / safeSpeed}ms linear infinite`
2502
2857
  },
2503
2858
  children: [
2504
- /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
2859
+ /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(
2505
2860
  "circle",
2506
2861
  {
2507
2862
  cx: wheel.cx,
@@ -2512,7 +2867,7 @@ function Loading({
2512
2867
  fill: "none"
2513
2868
  }
2514
2869
  ),
2515
- /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
2870
+ /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(
2516
2871
  "path",
2517
2872
  {
2518
2873
  d: `M${wheel.cx} ${wheel.cy}V${wheel.cy - 3.2}`,
@@ -2531,7 +2886,7 @@ function Loading({
2531
2886
  ]
2532
2887
  }
2533
2888
  ),
2534
- label ? /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
2889
+ label ? /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(
2535
2890
  "span",
2536
2891
  {
2537
2892
  style: {
@@ -2541,14 +2896,14 @@ function Loading({
2541
2896
  },
2542
2897
  children: label
2543
2898
  }
2544
- ) : /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("span", { className: "ui-kit-sr-only", children: accessibleLabel })
2899
+ ) : /* @__PURE__ */ (0, import_jsx_runtime12.jsx)("span", { className: "ui-kit-sr-only", children: accessibleLabel })
2545
2900
  ]
2546
2901
  }
2547
2902
  );
2548
2903
  }
2549
2904
 
2550
2905
  // src/components/Separator.tsx
2551
- var import_jsx_runtime10 = require("react/jsx-runtime");
2906
+ var import_jsx_runtime13 = require("react/jsx-runtime");
2552
2907
  function Separator({
2553
2908
  orientation = "vertical",
2554
2909
  color,
@@ -2565,7 +2920,7 @@ function Separator({
2565
2920
  height: orientation === "vertical" ? usesVerticalStretch ? "auto" : size : 3,
2566
2921
  ...style
2567
2922
  };
2568
- return /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(
2923
+ return /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(
2569
2924
  "div",
2570
2925
  {
2571
2926
  ...rest,
@@ -2582,11 +2937,11 @@ function Separator({
2582
2937
  }
2583
2938
 
2584
2939
  // src/componentsBase/select/SelectBase.tsx
2585
- var import_react7 = require("react");
2940
+ var import_react9 = require("react");
2586
2941
  var import_react_dom = require("react-dom");
2587
2942
 
2588
2943
  // src/componentsBase/select/utils.ts
2589
- var import_react6 = require("react");
2944
+ var import_react8 = require("react");
2590
2945
  function getTextContent(node) {
2591
2946
  if (node == null || typeof node === "boolean") {
2592
2947
  return "";
@@ -2597,7 +2952,7 @@ function getTextContent(node) {
2597
2952
  if (Array.isArray(node)) {
2598
2953
  return node.map(getTextContent).join("");
2599
2954
  }
2600
- if ((0, import_react6.isValidElement)(node)) {
2955
+ if ((0, import_react8.isValidElement)(node)) {
2601
2956
  return getTextContent(node.props.children);
2602
2957
  }
2603
2958
  return "";
@@ -2632,13 +2987,13 @@ function filterSelectGroups(groups, query) {
2632
2987
  }
2633
2988
 
2634
2989
  // src/componentsBase/select/SelectBase.tsx
2635
- var import_jsx_runtime11 = require("react/jsx-runtime");
2990
+ var import_jsx_runtime14 = require("react/jsx-runtime");
2636
2991
  var MENU_OFFSET = 8;
2637
2992
  var MENU_MAX_HEIGHT = 280;
2638
2993
  var emptySubscribe = () => () => {
2639
2994
  };
2640
2995
  function SearchIcon({ size }) {
2641
- return /* @__PURE__ */ (0, import_jsx_runtime11.jsx)("svg", { width: size, height: size, viewBox: "0 0 24 24", fill: "none", "aria-hidden": "true", children: /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(
2996
+ return /* @__PURE__ */ (0, import_jsx_runtime14.jsx)("svg", { width: size, height: size, viewBox: "0 0 24 24", fill: "none", "aria-hidden": "true", children: /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(
2642
2997
  "path",
2643
2998
  {
2644
2999
  d: "m21 21-4.35-4.35M10.5 18a7.5 7.5 0 1 1 0-15 7.5 7.5 0 0 1 0 15Z",
@@ -2692,7 +3047,7 @@ function SelectBase({
2692
3047
  ...rest
2693
3048
  }) {
2694
3049
  var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j, _k, _l, _m;
2695
- const generatedId = (0, import_react7.useId)().replace(/:/g, "");
3050
+ const generatedId = (0, import_react9.useId)().replace(/:/g, "");
2696
3051
  const resolvedId = id != null ? id : `ss-select-${generatedId}`;
2697
3052
  const isMultiSelect = Boolean(isMulti || multiple);
2698
3053
  const hasFilter = Boolean(isFilterable);
@@ -2700,31 +3055,31 @@ function SelectBase({
2700
3055
  const enabledOptions = flatOptions.filter((option) => !option.disabled);
2701
3056
  const isControlled = value !== void 0;
2702
3057
  const fallbackValues = defaultValue !== void 0 ? normalizeSelectValues(defaultValue) : isMultiSelect ? [] : placeholder != null ? [] : ((_a = enabledOptions[0]) == null ? void 0 : _a.value) ? [enabledOptions[0].value] : [];
2703
- const [uncontrolledValues, setUncontrolledValues] = (0, import_react7.useState)(fallbackValues);
2704
- const [isOpen, setIsOpen] = (0, import_react7.useState)(false);
2705
- const [uncontrolledSearchQuery, setUncontrolledSearchQuery] = (0, import_react7.useState)("");
2706
- const [menuPlacement, setMenuPlacement] = (0, import_react7.useState)("bottom");
2707
- const [isPlacementResolved, setIsPlacementResolved] = (0, import_react7.useState)(false);
2708
- const [highlightedValue, setHighlightedValue] = (0, import_react7.useState)(
3058
+ const [uncontrolledValues, setUncontrolledValues] = (0, import_react9.useState)(fallbackValues);
3059
+ const [isOpen, setIsOpen] = (0, import_react9.useState)(false);
3060
+ const [uncontrolledSearchQuery, setUncontrolledSearchQuery] = (0, import_react9.useState)("");
3061
+ const [menuPlacement, setMenuPlacement] = (0, import_react9.useState)("bottom");
3062
+ const [isPlacementResolved, setIsPlacementResolved] = (0, import_react9.useState)(false);
3063
+ const [highlightedValue, setHighlightedValue] = (0, import_react9.useState)(
2709
3064
  (_d = (_c = fallbackValues[0]) != null ? _c : (_b = enabledOptions[0]) == null ? void 0 : _b.value) != null ? _d : ""
2710
3065
  );
2711
- const isMounted = (0, import_react7.useSyncExternalStore)(
3066
+ const isMounted = (0, import_react9.useSyncExternalStore)(
2712
3067
  emptySubscribe,
2713
3068
  () => true,
2714
3069
  () => false
2715
3070
  );
2716
- const [menuRect, setMenuRect] = (0, import_react7.useState)({
3071
+ const [menuRect, setMenuRect] = (0, import_react9.useState)({
2717
3072
  top: 0,
2718
3073
  bottom: 0,
2719
3074
  left: 0,
2720
3075
  width: 0
2721
3076
  });
2722
- const shellRef = (0, import_react7.useRef)(null);
2723
- const buttonRef = (0, import_react7.useRef)(null);
2724
- const menuRef = (0, import_react7.useRef)(null);
2725
- const searchInputRef = (0, import_react7.useRef)(null);
2726
- const hiddenSelectRef = (0, import_react7.useRef)(null);
2727
- const highlightSyncKeyRef = (0, import_react7.useRef)("");
3077
+ const shellRef = (0, import_react9.useRef)(null);
3078
+ const buttonRef = (0, import_react9.useRef)(null);
3079
+ const menuRef = (0, import_react9.useRef)(null);
3080
+ const searchInputRef = (0, import_react9.useRef)(null);
3081
+ const hiddenSelectRef = (0, import_react9.useRef)(null);
3082
+ const highlightSyncKeyRef = (0, import_react9.useRef)("");
2728
3083
  const currentSearchQuery = searchQuery !== void 0 ? searchQuery : uncontrolledSearchQuery;
2729
3084
  const selectedValues = isControlled ? normalizeSelectValues(value) : uncontrolledValues;
2730
3085
  const selectedValue = (_e = selectedValues[0]) != null ? _e : "";
@@ -2785,7 +3140,7 @@ function SelectBase({
2785
3140
  setHighlightedValue((_m = (_l = nextValues[0]) != null ? _l : (_k = enabledOptions[0]) == null ? void 0 : _k.value) != null ? _m : "");
2786
3141
  }
2787
3142
  }
2788
- const [wasOpenForPlacement, setWasOpenForPlacement] = (0, import_react7.useState)(isOpen);
3143
+ const [wasOpenForPlacement, setWasOpenForPlacement] = (0, import_react9.useState)(isOpen);
2789
3144
  if (isOpen !== wasOpenForPlacement) {
2790
3145
  setWasOpenForPlacement(isOpen);
2791
3146
  if (isOpen) {
@@ -2793,7 +3148,7 @@ function SelectBase({
2793
3148
  setIsPlacementResolved(false);
2794
3149
  }
2795
3150
  }
2796
- (0, import_react7.useEffect)(() => {
3151
+ (0, import_react9.useEffect)(() => {
2797
3152
  var _a2, _b2, _c2;
2798
3153
  if (!isOpen) {
2799
3154
  highlightSyncKeyRef.current = "";
@@ -2814,14 +3169,14 @@ function SelectBase({
2814
3169
  visibleEnabledOptions,
2815
3170
  visibleEnabledValues
2816
3171
  ]);
2817
- (0, import_react7.useEffect)(() => {
3172
+ (0, import_react9.useEffect)(() => {
2818
3173
  var _a2;
2819
3174
  if (!isOpen || !hasFilter) {
2820
3175
  return;
2821
3176
  }
2822
3177
  (_a2 = searchInputRef.current) == null ? void 0 : _a2.focus();
2823
3178
  }, [hasFilter, isOpen]);
2824
- (0, import_react7.useEffect)(() => {
3179
+ (0, import_react9.useEffect)(() => {
2825
3180
  if (!isOpen) {
2826
3181
  return;
2827
3182
  }
@@ -2855,7 +3210,7 @@ function SelectBase({
2855
3210
  window.cancelAnimationFrame(frameId);
2856
3211
  };
2857
3212
  }, [isOpen, visibleOptions.length]);
2858
- (0, import_react7.useEffect)(() => {
3213
+ (0, import_react9.useEffect)(() => {
2859
3214
  if (!isOpen) {
2860
3215
  return;
2861
3216
  }
@@ -2881,13 +3236,13 @@ function SelectBase({
2881
3236
  if (!isOpen && clearSearchOnClose && searchQuery === void 0 && uncontrolledSearchQuery !== "") {
2882
3237
  setUncontrolledSearchQuery("");
2883
3238
  }
2884
- (0, import_react7.useEffect)(() => {
3239
+ (0, import_react9.useEffect)(() => {
2885
3240
  if (isOpen || !clearSearchOnClose || currentSearchQuery === "") {
2886
3241
  return;
2887
3242
  }
2888
3243
  onSearchQueryChange == null ? void 0 : onSearchQueryChange("");
2889
3244
  }, [clearSearchOnClose, currentSearchQuery, isOpen, onSearchQueryChange]);
2890
- (0, import_react7.useEffect)(() => {
3245
+ (0, import_react9.useEffect)(() => {
2891
3246
  if (!isOpen) {
2892
3247
  return;
2893
3248
  }
@@ -2906,7 +3261,7 @@ function SelectBase({
2906
3261
  document.removeEventListener("pointerdown", handlePointerDown);
2907
3262
  };
2908
3263
  }, [isOpen]);
2909
- (0, import_react7.useEffect)(() => {
3264
+ (0, import_react9.useEffect)(() => {
2910
3265
  var _a2;
2911
3266
  if (isControlled) {
2912
3267
  return;
@@ -3019,7 +3374,7 @@ function SelectBase({
3019
3374
  const hasSomeVisibleSelected = visibleSelectedCount > 0 && visibleSelectedCount < visibleEnabledValues.length;
3020
3375
  const hasAllVisibleSelected = visibleEnabledValues.length > 0 && visibleSelectedCount === visibleEnabledValues.length;
3021
3376
  const canToggleVisibleSelection = !disabled && visibleEnabledValues.length > 0;
3022
- const bulkToggleControl = isMultiSelect ? /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(
3377
+ const bulkToggleControl = isMultiSelect ? /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(
3023
3378
  "button",
3024
3379
  {
3025
3380
  type: "button",
@@ -3039,7 +3394,7 @@ function SelectBase({
3039
3394
  "m-0 inline-flex h-5 w-5 shrink-0 items-center justify-center border-0 bg-transparent p-0",
3040
3395
  canToggleVisibleSelection ? "cursor-pointer opacity-100" : "cursor-not-allowed opacity-45"
3041
3396
  ),
3042
- children: /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(
3397
+ children: /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(
3043
3398
  CheckboxIndicator,
3044
3399
  {
3045
3400
  checked: hasAllVisibleSelected,
@@ -3196,7 +3551,7 @@ function SelectBase({
3196
3551
  }
3197
3552
  };
3198
3553
  const emptyState = isLoading ? loadingMessage : emptyMessage;
3199
- return /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(
3554
+ return /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(
3200
3555
  ControlFrame,
3201
3556
  {
3202
3557
  label,
@@ -3207,8 +3562,8 @@ function SelectBase({
3207
3562
  size,
3208
3563
  hasValue: hasSelection || isOpen,
3209
3564
  floatingPlaceholder,
3210
- children: /* @__PURE__ */ (0, import_jsx_runtime11.jsxs)("div", { ref: shellRef, className: "relative w-full", children: [
3211
- /* @__PURE__ */ (0, import_jsx_runtime11.jsxs)(
3565
+ children: /* @__PURE__ */ (0, import_jsx_runtime14.jsxs)("div", { ref: shellRef, className: "relative w-full", children: [
3566
+ /* @__PURE__ */ (0, import_jsx_runtime14.jsxs)(
3212
3567
  "button",
3213
3568
  {
3214
3569
  ...buttonPassthroughProps,
@@ -3237,12 +3592,12 @@ function SelectBase({
3237
3592
  ...isTriggerDisabled ? { opacity: DISABLED_FIELD_OPACITY } : {}
3238
3593
  },
3239
3594
  children: [
3240
- /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(
3595
+ /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(
3241
3596
  "span",
3242
3597
  {
3243
3598
  className: "block min-w-0 flex-1 overflow-hidden text-ellipsis whitespace-nowrap",
3244
3599
  style: controlTextNudgeStyle,
3245
- children: hasSelection ? displayContent : /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(
3600
+ children: hasSelection ? displayContent : /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(
3246
3601
  "span",
3247
3602
  {
3248
3603
  className: floatingPlaceholder ? "" : "text-[var(--theme-textLight)]",
@@ -3251,7 +3606,7 @@ function SelectBase({
3251
3606
  )
3252
3607
  }
3253
3608
  ),
3254
- /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(
3609
+ /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(
3255
3610
  "span",
3256
3611
  {
3257
3612
  "aria-hidden": "true",
@@ -3264,7 +3619,7 @@ function SelectBase({
3264
3619
  right: indicatorOffset,
3265
3620
  transform: `translateY(-50%) rotate(${isOpen ? 180 : 0}deg)`
3266
3621
  },
3267
- children: /* @__PURE__ */ (0, import_jsx_runtime11.jsx)("svg", { width: "18", height: "18", viewBox: "0 0 20 20", fill: "none", children: /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(
3622
+ children: /* @__PURE__ */ (0, import_jsx_runtime14.jsx)("svg", { width: "18", height: "18", viewBox: "0 0 20 20", fill: "none", children: /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(
3268
3623
  "path",
3269
3624
  {
3270
3625
  d: "M5.75 7.75L10 12l4.25-4.25",
@@ -3279,7 +3634,7 @@ function SelectBase({
3279
3634
  ]
3280
3635
  }
3281
3636
  ),
3282
- /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(
3637
+ /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(
3283
3638
  "select",
3284
3639
  {
3285
3640
  ...rest,
@@ -3297,8 +3652,8 @@ function SelectBase({
3297
3652
  }
3298
3653
  ),
3299
3654
  isMounted && isOpen ? (0, import_react_dom.createPortal)(
3300
- /* @__PURE__ */ (0, import_jsx_runtime11.jsxs)(import_jsx_runtime11.Fragment, { children: [
3301
- /* @__PURE__ */ (0, import_jsx_runtime11.jsx)("style", { children: `
3655
+ /* @__PURE__ */ (0, import_jsx_runtime14.jsxs)(import_jsx_runtime14.Fragment, { children: [
3656
+ /* @__PURE__ */ (0, import_jsx_runtime14.jsx)("style", { children: `
3302
3657
  #${listboxId} {
3303
3658
  scrollbar-width: thin;
3304
3659
  scrollbar-color: ${scrollbarThumbColor} transparent;
@@ -3329,7 +3684,7 @@ function SelectBase({
3329
3684
  opacity: 1;
3330
3685
  }
3331
3686
  ` }),
3332
- /* @__PURE__ */ (0, import_jsx_runtime11.jsxs)(
3687
+ /* @__PURE__ */ (0, import_jsx_runtime14.jsxs)(
3333
3688
  "div",
3334
3689
  {
3335
3690
  ref: menuRef,
@@ -3352,7 +3707,7 @@ function SelectBase({
3352
3707
  visibility: isPlacementResolved ? "visible" : "hidden"
3353
3708
  },
3354
3709
  children: [
3355
- hasFilter ? /* @__PURE__ */ (0, import_jsx_runtime11.jsxs)(
3710
+ hasFilter ? /* @__PURE__ */ (0, import_jsx_runtime14.jsxs)(
3356
3711
  "div",
3357
3712
  {
3358
3713
  className: cx(
@@ -3360,20 +3715,20 @@ function SelectBase({
3360
3715
  ),
3361
3716
  children: [
3362
3717
  bulkToggleControl,
3363
- /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(
3718
+ /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(
3364
3719
  "div",
3365
3720
  {
3366
3721
  className: "flex-1",
3367
3722
  onClick: (event) => event.stopPropagation(),
3368
3723
  onMouseDown: (event) => event.stopPropagation(),
3369
3724
  onPointerDown: (event) => event.stopPropagation(),
3370
- children: /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(
3725
+ children: /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(
3371
3726
  Input,
3372
3727
  {
3373
3728
  id: searchInputId,
3374
3729
  ref: searchInputRef,
3375
3730
  type: "text",
3376
- icon: /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(SearchIcon, { size: 16 }),
3731
+ icon: /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(SearchIcon, { size: 16 }),
3377
3732
  disableFloatingLabel: true,
3378
3733
  value: currentSearchQuery,
3379
3734
  onChange: (event) => {
@@ -3393,7 +3748,7 @@ function SelectBase({
3393
3748
  )
3394
3749
  ]
3395
3750
  }
3396
- ) : isMultiSelect ? /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(
3751
+ ) : isMultiSelect ? /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(
3397
3752
  "div",
3398
3753
  {
3399
3754
  className: cx(
@@ -3402,8 +3757,8 @@ function SelectBase({
3402
3757
  children: bulkToggleControl
3403
3758
  }
3404
3759
  ) : null,
3405
- hasFilter && /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(Separator, {}),
3406
- /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(
3760
+ hasFilter && /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(Separator, {}),
3761
+ /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(
3407
3762
  "div",
3408
3763
  {
3409
3764
  id: listboxId,
@@ -3412,7 +3767,7 @@ function SelectBase({
3412
3767
  "aria-multiselectable": isMultiSelect || void 0,
3413
3768
  onScroll: onListboxScroll,
3414
3769
  className: "min-h-0 flex-1 overflow-y-auto overflow-x-hidden py-1",
3415
- children: visibleGroups.length === 0 ? /* @__PURE__ */ (0, import_jsx_runtime11.jsx)("div", { className: "px-3 py-[14px] text-center text-[13px] text-[var(--theme-textLight)]", children: emptyState }) : visibleGroups.map((group) => /* @__PURE__ */ (0, import_jsx_runtime11.jsxs)(
3770
+ children: visibleGroups.length === 0 ? /* @__PURE__ */ (0, import_jsx_runtime14.jsx)("div", { className: "px-3 py-[14px] text-center text-[13px] text-[var(--theme-textLight)]", children: emptyState }) : visibleGroups.map((group) => /* @__PURE__ */ (0, import_jsx_runtime14.jsxs)(
3416
3771
  "div",
3417
3772
  {
3418
3773
  className: cx(
@@ -3420,7 +3775,7 @@ function SelectBase({
3420
3775
  group.label ? "mt-1" : "mt-0"
3421
3776
  ),
3422
3777
  children: [
3423
- group.label ? /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(
3778
+ group.label ? /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(
3424
3779
  "span",
3425
3780
  {
3426
3781
  className: cx(
@@ -3438,7 +3793,7 @@ function SelectBase({
3438
3793
  );
3439
3794
  const isHighlighted = option.value === highlightedValue;
3440
3795
  const isActive = isSelected || isHighlighted;
3441
- return /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(
3796
+ return /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(
3442
3797
  "div",
3443
3798
  {
3444
3799
  role: "option",
@@ -3468,7 +3823,7 @@ function SelectBase({
3468
3823
  !option.disabled && isActive ? "text-[var(--theme-onPrimary)]" : null,
3469
3824
  !option.disabled && !isActive ? "text-[var(--theme-text)]" : null
3470
3825
  ),
3471
- children: /* @__PURE__ */ (0, import_jsx_runtime11.jsxs)(
3826
+ children: /* @__PURE__ */ (0, import_jsx_runtime14.jsxs)(
3472
3827
  "div",
3473
3828
  {
3474
3829
  className: cx(
@@ -3481,8 +3836,8 @@ function SelectBase({
3481
3836
  !isSelected && !isHighlighted ? "bg-[var(--theme-surface)] font-medium" : null
3482
3837
  ),
3483
3838
  children: [
3484
- /* @__PURE__ */ (0, import_jsx_runtime11.jsxs)("span", { className: "flex min-w-0 flex-1 items-center gap-2.5", children: [
3485
- isMultiSelect ? /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(
3839
+ /* @__PURE__ */ (0, import_jsx_runtime14.jsxs)("span", { className: "flex min-w-0 flex-1 items-center gap-2.5", children: [
3840
+ isMultiSelect ? /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(
3486
3841
  CheckboxIndicator,
3487
3842
  {
3488
3843
  checked: isSelected,
@@ -3494,21 +3849,21 @@ function SelectBase({
3494
3849
  uncheckedBackgroundColor: "transparent"
3495
3850
  }
3496
3851
  ) : null,
3497
- /* @__PURE__ */ (0, import_jsx_runtime11.jsx)("span", { className: "block min-w-0 flex-1 overflow-hidden text-ellipsis whitespace-nowrap", children: option.label })
3852
+ /* @__PURE__ */ (0, import_jsx_runtime14.jsx)("span", { className: "block min-w-0 flex-1 overflow-hidden text-ellipsis whitespace-nowrap", children: option.label })
3498
3853
  ] }),
3499
- !isMultiSelect && isSelected ? /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(
3854
+ !isMultiSelect && isSelected ? /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(
3500
3855
  "span",
3501
3856
  {
3502
3857
  "aria-hidden": "true",
3503
3858
  className: "flex shrink-0 items-center justify-center text-[var(--theme-onPrimary)]",
3504
- children: /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(
3859
+ children: /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(
3505
3860
  "svg",
3506
3861
  {
3507
3862
  width: "16",
3508
3863
  height: "16",
3509
3864
  viewBox: "0 0 20 20",
3510
3865
  fill: "none",
3511
- children: /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(
3866
+ children: /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(
3512
3867
  "path",
3513
3868
  {
3514
3869
  d: "M5.75 10.25L8.5 13l5.75-6",
@@ -3535,9 +3890,9 @@ function SelectBase({
3535
3890
  ))
3536
3891
  }
3537
3892
  ),
3538
- menuFooter ? /* @__PURE__ */ (0, import_jsx_runtime11.jsxs)(import_jsx_runtime11.Fragment, { children: [
3539
- /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(Separator, {}),
3540
- /* @__PURE__ */ (0, import_jsx_runtime11.jsx)("div", { className: "shrink-0 px-2 pb-1 pt-2.5", children: menuFooter })
3893
+ menuFooter ? /* @__PURE__ */ (0, import_jsx_runtime14.jsxs)(import_jsx_runtime14.Fragment, { children: [
3894
+ /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(Separator, {}),
3895
+ /* @__PURE__ */ (0, import_jsx_runtime14.jsx)("div", { className: "shrink-0 px-2 pb-1 pt-2.5", children: menuFooter })
3541
3896
  ] }) : null
3542
3897
  ]
3543
3898
  }
@@ -3551,7 +3906,7 @@ function SelectBase({
3551
3906
  }
3552
3907
 
3553
3908
  // src/componentsBase/select/childrenAdapter.ts
3554
- var import_react8 = require("react");
3909
+ var import_react10 = require("react");
3555
3910
  function buildOption(keyPrefix, index, props, groupDisabled = false) {
3556
3911
  var _a;
3557
3912
  const rawValue = props.value !== void 0 ? props.value : getTextContent(props.children).trim();
@@ -3578,8 +3933,8 @@ function parseSelectChildren(children) {
3578
3933
  });
3579
3934
  standaloneOptions.length = 0;
3580
3935
  };
3581
- import_react8.Children.forEach(children, (child) => {
3582
- if (!(0, import_react8.isValidElement)(child)) {
3936
+ import_react10.Children.forEach(children, (child) => {
3937
+ if (!(0, import_react10.isValidElement)(child)) {
3583
3938
  return;
3584
3939
  }
3585
3940
  if (child.type === "option") {
@@ -3593,8 +3948,8 @@ function parseSelectChildren(children) {
3593
3948
  flushStandaloneOptions();
3594
3949
  const groupOptions = [];
3595
3950
  let groupOptionIndex = 0;
3596
- import_react8.Children.forEach(child.props.children, (optionChild) => {
3597
- if (!(0, import_react8.isValidElement)(optionChild) || optionChild.type !== "option") {
3951
+ import_react10.Children.forEach(child.props.children, (optionChild) => {
3952
+ if (!(0, import_react10.isValidElement)(optionChild) || optionChild.type !== "option") {
3598
3953
  return;
3599
3954
  }
3600
3955
  groupOptions.push(
@@ -3621,17 +3976,17 @@ function parseSelectChildren(children) {
3621
3976
  }
3622
3977
 
3623
3978
  // src/components/Select.tsx
3624
- var import_jsx_runtime12 = require("react/jsx-runtime");
3979
+ var import_jsx_runtime15 = require("react/jsx-runtime");
3625
3980
  function Select({ children, options, ...props }) {
3626
- const actualChildren = options ? options.map((option) => /* @__PURE__ */ (0, import_jsx_runtime12.jsx)("option", { value: option.value, children: option.label }, option.value)) : children;
3627
- return /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(SelectBase, { ...props, groups: parseSelectChildren(actualChildren), nativeOptions: actualChildren });
3981
+ const actualChildren = options ? options.map((option) => /* @__PURE__ */ (0, import_jsx_runtime15.jsx)("option", { value: option.value, children: option.label }, option.value)) : children;
3982
+ return /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(SelectBase, { ...props, groups: parseSelectChildren(actualChildren), nativeOptions: actualChildren });
3628
3983
  }
3629
3984
 
3630
3985
  // src/components/SelectAsync.tsx
3631
- var import_react9 = require("react");
3986
+ var import_react11 = require("react");
3632
3987
 
3633
3988
  // src/componentsBase/select/objectOptionsAdapter.tsx
3634
- var import_jsx_runtime13 = require("react/jsx-runtime");
3989
+ var import_jsx_runtime16 = require("react/jsx-runtime");
3635
3990
  var getOptionKey = (option) => {
3636
3991
  return String(option.value);
3637
3992
  };
@@ -3687,13 +4042,13 @@ var buildNativeOptionsFromObjectOptions = (options) => {
3687
4042
  return options.map((option) => {
3688
4043
  const optionValue = getOptionKey(option);
3689
4044
  const optionText = getTextContent(option.label).trim() || optionValue;
3690
- return /* @__PURE__ */ (0, import_jsx_runtime13.jsx)("option", { value: optionValue, disabled: option.disabled, children: optionText }, `native-${optionValue}`);
4045
+ return /* @__PURE__ */ (0, import_jsx_runtime16.jsx)("option", { value: optionValue, disabled: option.disabled, children: optionText }, `native-${optionValue}`);
3691
4046
  });
3692
4047
  };
3693
4048
  var getSelectObjectOptionKey = getOptionKey;
3694
4049
 
3695
4050
  // src/components/SelectAsync.tsx
3696
- var import_jsx_runtime14 = require("react/jsx-runtime");
4051
+ var import_jsx_runtime17 = require("react/jsx-runtime");
3697
4052
  var DEFAULT_LOAD_MORE_THRESHOLD = 24;
3698
4053
  var normalizeAsyncValue = (value, isMulti) => {
3699
4054
  if (value == null) {
@@ -3734,26 +4089,26 @@ function SelectAsync({
3734
4089
  useUiKitTheme();
3735
4090
  const isMultiSelect = Boolean(isMulti);
3736
4091
  const isControlled = value !== void 0;
3737
- const [internalSelectedOptions, setInternalSelectedOptions] = (0, import_react9.useState)(() => {
4092
+ const [internalSelectedOptions, setInternalSelectedOptions] = (0, import_react11.useState)(() => {
3738
4093
  return normalizeAsyncValue(defaultValue, isMultiSelect);
3739
4094
  });
3740
- const [remoteOptions, setRemoteOptions] = (0, import_react9.useState)(defaultOptions);
3741
- const [searchQuery, setSearchQuery] = (0, import_react9.useState)("");
3742
- const [nextPage, setNextPage] = (0, import_react9.useState)(1);
3743
- const [hasMore, setHasMore] = (0, import_react9.useState)(true);
3744
- const [isInitialLoading, setIsInitialLoading] = (0, import_react9.useState)(false);
3745
- const [isLoadingMore, setIsLoadingMore] = (0, import_react9.useState)(false);
3746
- const [loadError, setLoadError] = (0, import_react9.useState)(null);
4095
+ const [remoteOptions, setRemoteOptions] = (0, import_react11.useState)(defaultOptions);
4096
+ const [searchQuery, setSearchQuery] = (0, import_react11.useState)("");
4097
+ const [nextPage, setNextPage] = (0, import_react11.useState)(1);
4098
+ const [hasMore, setHasMore] = (0, import_react11.useState)(true);
4099
+ const [isInitialLoading, setIsInitialLoading] = (0, import_react11.useState)(false);
4100
+ const [isLoadingMore, setIsLoadingMore] = (0, import_react11.useState)(false);
4101
+ const [loadError, setLoadError] = (0, import_react11.useState)(null);
3747
4102
  const selectedOptions = isControlled ? normalizeAsyncValue(value, isMultiSelect) : internalSelectedOptions;
3748
- const optionLookupRef = (0, import_react9.useRef)(/* @__PURE__ */ new Map());
3749
- const loadOptionsRef = (0, import_react9.useRef)(loadOptions);
3750
- const remoteOptionsRef = (0, import_react9.useRef)(remoteOptions);
3751
- const cacheUniqsRef = (0, import_react9.useRef)(cacheUniqs);
3752
- const requestVersionRef = (0, import_react9.useRef)(0);
3753
- const activeControllerRef = (0, import_react9.useRef)(null);
4103
+ const optionLookupRef = (0, import_react11.useRef)(/* @__PURE__ */ new Map());
4104
+ const loadOptionsRef = (0, import_react11.useRef)(loadOptions);
4105
+ const remoteOptionsRef = (0, import_react11.useRef)(remoteOptions);
4106
+ const cacheUniqsRef = (0, import_react11.useRef)(cacheUniqs);
4107
+ const requestVersionRef = (0, import_react11.useRef)(0);
4108
+ const activeControllerRef = (0, import_react11.useRef)(null);
3754
4109
  loadOptionsRef.current = loadOptions;
3755
4110
  remoteOptionsRef.current = remoteOptions;
3756
- const mergedOptions = (0, import_react9.useMemo)(() => {
4111
+ const mergedOptions = (0, import_react11.useMemo)(() => {
3757
4112
  const baseOptions = dedupeSelectObjectOptions([
3758
4113
  ...fixedOptions,
3759
4114
  ...remoteOptions
@@ -3764,20 +4119,20 @@ function SelectAsync({
3764
4119
  });
3765
4120
  return [...baseOptions, ...missingSelectedOptions];
3766
4121
  }, [fixedOptions, remoteOptions, selectedOptions]);
3767
- (0, import_react9.useEffect)(() => {
4122
+ (0, import_react11.useEffect)(() => {
3768
4123
  const nextLookup = /* @__PURE__ */ new Map();
3769
4124
  mergedOptions.forEach((option) => {
3770
4125
  nextLookup.set(getSelectObjectOptionKey(option), option);
3771
4126
  });
3772
4127
  optionLookupRef.current = nextLookup;
3773
4128
  }, [mergedOptions]);
3774
- (0, import_react9.useEffect)(() => {
4129
+ (0, import_react11.useEffect)(() => {
3775
4130
  if (isControlled) {
3776
4131
  return;
3777
4132
  }
3778
4133
  setInternalSelectedOptions(normalizeAsyncValue(defaultValue, isMultiSelect));
3779
4134
  }, [defaultValue, isControlled, isMultiSelect]);
3780
- (0, import_react9.useEffect)(() => {
4135
+ (0, import_react11.useEffect)(() => {
3781
4136
  if (areUnknownArraysEqual(cacheUniqsRef.current, cacheUniqs)) {
3782
4137
  return;
3783
4138
  }
@@ -3788,7 +4143,7 @@ function SelectAsync({
3788
4143
  setHasMore(true);
3789
4144
  setLoadError(null);
3790
4145
  }, [cacheUniqs, defaultOptions]);
3791
- (0, import_react9.useEffect)(() => {
4146
+ (0, import_react11.useEffect)(() => {
3792
4147
  const timeoutId = window.setTimeout(() => {
3793
4148
  var _a2;
3794
4149
  requestVersionRef.current += 1;
@@ -3829,7 +4184,7 @@ function SelectAsync({
3829
4184
  window.clearTimeout(timeoutId);
3830
4185
  };
3831
4186
  }, [loadErrorMessage, searchDebounceMs, searchQuery, ...cacheUniqs]);
3832
- (0, import_react9.useEffect)(() => {
4187
+ (0, import_react11.useEffect)(() => {
3833
4188
  return () => {
3834
4189
  var _a2;
3835
4190
  (_a2 = activeControllerRef.current) == null ? void 0 : _a2.abort();
@@ -3886,15 +4241,15 @@ function SelectAsync({
3886
4241
  }
3887
4242
  onChange == null ? void 0 : onChange(nextValue);
3888
4243
  };
3889
- const menuFooter = isLoadingMore || hasMore ? /* @__PURE__ */ (0, import_jsx_runtime14.jsxs)(
4244
+ const menuFooter = isLoadingMore || hasMore ? /* @__PURE__ */ (0, import_jsx_runtime17.jsxs)(
3890
4245
  "div",
3891
4246
  {
3892
4247
  "aria-live": "polite",
3893
4248
  className: "flex items-center gap-3 text-xs leading-[1.4] text-[var(--theme-textLight)]",
3894
4249
  style: { justifyContent: hasMore ? "space-between" : "center" },
3895
4250
  children: [
3896
- /* @__PURE__ */ (0, import_jsx_runtime14.jsx)("span", { children: isLoadingMore ? loadingMoreMessage : hasMore ? loadMoreHintMessage : null }),
3897
- isLoadingMore ? /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(
4251
+ /* @__PURE__ */ (0, import_jsx_runtime17.jsx)("span", { children: isLoadingMore ? loadingMoreMessage : hasMore ? loadMoreHintMessage : null }),
4252
+ isLoadingMore ? /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(
3898
4253
  "span",
3899
4254
  {
3900
4255
  "aria-hidden": "true",
@@ -3906,7 +4261,7 @@ function SelectAsync({
3906
4261
  ) : null;
3907
4262
  const resolvedEmptyMessage = loadError && remoteOptions.length === 0 ? loadError : emptyMessage;
3908
4263
  const resolvedValue = selectedOptions.map((option) => getSelectObjectOptionKey(option));
3909
- return /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(
4264
+ return /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(
3910
4265
  SelectBase,
3911
4266
  {
3912
4267
  ...props,
@@ -3931,15 +4286,110 @@ function SelectAsync({
3931
4286
  );
3932
4287
  }
3933
4288
 
3934
- // src/components/Table.tsx
4289
+ // src/components/ResultState.tsx
3935
4290
  var import_react12 = require("react");
4291
+ var import_jsx_runtime18 = require("react/jsx-runtime");
4292
+ function ResultState({
4293
+ tone = "info",
4294
+ icon,
4295
+ title,
4296
+ description,
4297
+ action,
4298
+ className,
4299
+ style,
4300
+ ...rest
4301
+ }) {
4302
+ const theme = useUiKitTheme();
4303
+ const titleId = (0, import_react12.useId)();
4304
+ const descriptionId = (0, import_react12.useId)();
4305
+ const iconNode = icon === void 0 ? getDefaultFeedbackIcon(tone, 28) : icon;
4306
+ const containerToneStyle = getFeedbackContainerStyle(theme, tone, 0.08);
4307
+ const iconToneStyle = getFeedbackIconBadgeStyle(theme, tone, 0.14);
4308
+ const descriptionStyle = {
4309
+ maxWidth: "44ch",
4310
+ lineHeight: "1.6",
4311
+ color: "var(--theme-textLight)"
4312
+ };
4313
+ return /* @__PURE__ */ (0, import_jsx_runtime18.jsxs)(
4314
+ "div",
4315
+ {
4316
+ ...rest,
4317
+ "aria-labelledby": titleId,
4318
+ "aria-describedby": description ? descriptionId : void 0,
4319
+ className: cx(
4320
+ UI_KIT_ROOT_CLASSNAME,
4321
+ "rounded-2xl border border-dashed text-[var(--theme-text)] text-center",
4322
+ className
4323
+ ),
4324
+ style: {
4325
+ ...containerToneStyle,
4326
+ width: "100%",
4327
+ display: "flex",
4328
+ flexDirection: "column",
4329
+ alignItems: "center",
4330
+ justifyContent: "center",
4331
+ gap: 16,
4332
+ padding: "32px 24px",
4333
+ ...style
4334
+ },
4335
+ children: [
4336
+ iconNode ? /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(
4337
+ "div",
4338
+ {
4339
+ "aria-hidden": "true",
4340
+ className: UI_KIT_ROOT_CLASSNAME,
4341
+ style: {
4342
+ ...iconToneStyle,
4343
+ display: "inline-flex",
4344
+ alignItems: "center",
4345
+ justifyContent: "center",
4346
+ width: 64,
4347
+ height: 64,
4348
+ borderRadius: 20,
4349
+ flexShrink: 0
4350
+ },
4351
+ children: iconNode
4352
+ }
4353
+ ) : null,
4354
+ /* @__PURE__ */ (0, import_jsx_runtime18.jsxs)(
4355
+ "div",
4356
+ {
4357
+ className: UI_KIT_ROOT_CLASSNAME,
4358
+ style: {
4359
+ display: "flex",
4360
+ flexDirection: "column",
4361
+ alignItems: "center",
4362
+ gap: description ? 8 : 0
4363
+ },
4364
+ children: [
4365
+ /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(
4366
+ "h2",
4367
+ {
4368
+ id: titleId,
4369
+ className: cx(UI_KIT_ROOT_CLASSNAME, "font-bold text-2xl"),
4370
+ style: { color: containerToneStyle.borderColor, lineHeight: 1.2 },
4371
+ children: title
4372
+ }
4373
+ ),
4374
+ description ? /* @__PURE__ */ (0, import_jsx_runtime18.jsx)("div", { id: descriptionId, className: cx(UI_KIT_ROOT_CLASSNAME, "text-sm"), style: descriptionStyle, children: description }) : null
4375
+ ]
4376
+ }
4377
+ ),
4378
+ action ? /* @__PURE__ */ (0, import_jsx_runtime18.jsx)("div", { className: UI_KIT_ROOT_CLASSNAME, children: action }) : null
4379
+ ]
4380
+ }
4381
+ );
4382
+ }
4383
+
4384
+ // src/components/Table.tsx
4385
+ var import_react15 = require("react");
3936
4386
 
3937
4387
  // src/componentsBase/table/TableBase.tsx
3938
- var import_react11 = require("react");
4388
+ var import_react14 = require("react");
3939
4389
  var import_react_dom2 = require("react-dom");
3940
4390
 
3941
4391
  // src/componentsBase/table/utils.ts
3942
- var import_react10 = require("react");
4392
+ var import_react13 = require("react");
3943
4393
  var DEFAULT_COLLAPSE_BELOW = 768;
3944
4394
  var DEFAULT_MAX_INLINE_ACTIONS = 2;
3945
4395
  var DEFAULT_PAGE_SIZE = 10;
@@ -3982,7 +4432,7 @@ var getNodeText = (node) => {
3982
4432
  if (Array.isArray(node)) {
3983
4433
  return node.map((entry) => getNodeText(entry)).join(" ");
3984
4434
  }
3985
- if ((0, import_react10.isValidElement)(node)) {
4435
+ if ((0, import_react13.isValidElement)(node)) {
3986
4436
  const element = node;
3987
4437
  return getNodeText(element.props.children);
3988
4438
  }
@@ -3998,7 +4448,7 @@ var normalizeTableText = (value) => {
3998
4448
  if (Array.isArray(value)) {
3999
4449
  return value.map((entry) => normalizeTableText(entry)).join(" ");
4000
4450
  }
4001
- if ((0, import_react10.isValidElement)(value)) {
4451
+ if ((0, import_react13.isValidElement)(value)) {
4002
4452
  return getNodeText(value);
4003
4453
  }
4004
4454
  return "";
@@ -4319,10 +4769,10 @@ var downloadTableAsPdf = (matrix, fileBaseName, title, page, totalPages) => {
4319
4769
  };
4320
4770
 
4321
4771
  // src/componentsBase/table/TableBase.tsx
4322
- var import_jsx_runtime15 = require("react/jsx-runtime");
4772
+ var import_jsx_runtime19 = require("react/jsx-runtime");
4323
4773
  var OVERFLOW_MENU_WIDTH = 220;
4324
4774
  function SettingsIcon() {
4325
- return /* @__PURE__ */ (0, import_jsx_runtime15.jsxs)(
4775
+ return /* @__PURE__ */ (0, import_jsx_runtime19.jsxs)(
4326
4776
  "svg",
4327
4777
  {
4328
4778
  width: "16",
@@ -4331,7 +4781,7 @@ function SettingsIcon() {
4331
4781
  fill: "none",
4332
4782
  "aria-hidden": "true",
4333
4783
  children: [
4334
- /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(
4784
+ /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(
4335
4785
  "path",
4336
4786
  {
4337
4787
  d: "M12 15.2a3.2 3.2 0 1 0 0-6.4 3.2 3.2 0 0 0 0 6.4Z",
@@ -4339,7 +4789,7 @@ function SettingsIcon() {
4339
4789
  strokeWidth: "2"
4340
4790
  }
4341
4791
  ),
4342
- /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(
4792
+ /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(
4343
4793
  "path",
4344
4794
  {
4345
4795
  d: `
@@ -4363,7 +4813,7 @@ function SettingsIcon() {
4363
4813
  );
4364
4814
  }
4365
4815
  function MoreActionsIcon() {
4366
- return /* @__PURE__ */ (0, import_jsx_runtime15.jsxs)(
4816
+ return /* @__PURE__ */ (0, import_jsx_runtime19.jsxs)(
4367
4817
  "svg",
4368
4818
  {
4369
4819
  width: "16",
@@ -4372,16 +4822,16 @@ function MoreActionsIcon() {
4372
4822
  fill: "currentColor",
4373
4823
  "aria-hidden": "true",
4374
4824
  children: [
4375
- /* @__PURE__ */ (0, import_jsx_runtime15.jsx)("circle", { cx: "5", cy: "12", r: "1.8" }),
4376
- /* @__PURE__ */ (0, import_jsx_runtime15.jsx)("circle", { cx: "12", cy: "12", r: "1.8" }),
4377
- /* @__PURE__ */ (0, import_jsx_runtime15.jsx)("circle", { cx: "19", cy: "12", r: "1.8" })
4825
+ /* @__PURE__ */ (0, import_jsx_runtime19.jsx)("circle", { cx: "5", cy: "12", r: "1.8" }),
4826
+ /* @__PURE__ */ (0, import_jsx_runtime19.jsx)("circle", { cx: "12", cy: "12", r: "1.8" }),
4827
+ /* @__PURE__ */ (0, import_jsx_runtime19.jsx)("circle", { cx: "19", cy: "12", r: "1.8" })
4378
4828
  ]
4379
4829
  }
4380
4830
  );
4381
4831
  }
4382
4832
  function ChevronIcon({ direction }) {
4383
4833
  const isLeft = direction === "left";
4384
- return /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(
4834
+ return /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(
4385
4835
  "svg",
4386
4836
  {
4387
4837
  width: "14",
@@ -4389,7 +4839,7 @@ function ChevronIcon({ direction }) {
4389
4839
  viewBox: "0 0 24 24",
4390
4840
  fill: "none",
4391
4841
  "aria-hidden": "true",
4392
- children: /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(
4842
+ children: /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(
4393
4843
  "path",
4394
4844
  {
4395
4845
  d: isLeft ? "M15 6 9 12l6 6" : "m9 6 6 6-6 6",
@@ -4403,11 +4853,11 @@ function ChevronIcon({ direction }) {
4403
4853
  );
4404
4854
  }
4405
4855
  function OverflowMenu({ label, children }) {
4406
- const [isOpen, setIsOpen] = (0, import_react11.useState)(false);
4407
- const [menuPosition, setMenuPosition] = (0, import_react11.useState)(null);
4408
- const containerRef = (0, import_react11.useRef)(null);
4409
- const buttonRef = (0, import_react11.useRef)(null);
4410
- const menuRef = (0, import_react11.useRef)(null);
4856
+ const [isOpen, setIsOpen] = (0, import_react14.useState)(false);
4857
+ const [menuPosition, setMenuPosition] = (0, import_react14.useState)(null);
4858
+ const containerRef = (0, import_react14.useRef)(null);
4859
+ const buttonRef = (0, import_react14.useRef)(null);
4860
+ const menuRef = (0, import_react14.useRef)(null);
4411
4861
  const updateMenuPosition = () => {
4412
4862
  var _a;
4413
4863
  const triggerRect = (_a = buttonRef.current) == null ? void 0 : _a.getBoundingClientRect();
@@ -4427,7 +4877,7 @@ function OverflowMenu({ label, children }) {
4427
4877
  top: triggerRect.bottom - 20
4428
4878
  });
4429
4879
  };
4430
- (0, import_react11.useEffect)(() => {
4880
+ (0, import_react14.useEffect)(() => {
4431
4881
  if (!isOpen) {
4432
4882
  return;
4433
4883
  }
@@ -4449,8 +4899,8 @@ function OverflowMenu({ label, children }) {
4449
4899
  window.removeEventListener("scroll", updateMenuPosition, true);
4450
4900
  };
4451
4901
  }, [isOpen]);
4452
- return /* @__PURE__ */ (0, import_jsx_runtime15.jsxs)("div", { ref: containerRef, className: "relative", children: [
4453
- /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(
4902
+ return /* @__PURE__ */ (0, import_jsx_runtime19.jsxs)("div", { ref: containerRef, className: "relative", children: [
4903
+ /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(
4454
4904
  "button",
4455
4905
  {
4456
4906
  type: "button",
@@ -4470,11 +4920,11 @@ function OverflowMenu({ label, children }) {
4470
4920
  "cursor-pointer border-0 bg-transparent text-[var(--theme-text)]",
4471
4921
  "transition-colors hover:text-[var(--theme-primary)]"
4472
4922
  ].join(" "),
4473
- children: /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(MoreActionsIcon, {})
4923
+ children: /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(MoreActionsIcon, {})
4474
4924
  }
4475
4925
  ),
4476
4926
  isOpen && menuPosition && typeof document !== "undefined" ? (0, import_react_dom2.createPortal)(
4477
- /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(
4927
+ /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(
4478
4928
  "div",
4479
4929
  {
4480
4930
  ref: menuRef,
@@ -4541,10 +4991,10 @@ function TableBase({
4541
4991
  onInternalPageSizeChange
4542
4992
  }) {
4543
4993
  useUiKitTheme();
4544
- const scrollRegionId = (0, import_react11.useId)().replace(/:/g, "");
4545
- const containerRef = (0, import_react11.useRef)(null);
4546
- const [containerWidth, setContainerWidth] = (0, import_react11.useState)(null);
4547
- const [isSettingsModalOpen, setIsSettingsModalOpen] = (0, import_react11.useState)(false);
4994
+ const scrollRegionId = (0, import_react14.useId)().replace(/:/g, "");
4995
+ const containerRef = (0, import_react14.useRef)(null);
4996
+ const [containerWidth, setContainerWidth] = (0, import_react14.useState)(null);
4997
+ const [isSettingsModalOpen, setIsSettingsModalOpen] = (0, import_react14.useState)(false);
4548
4998
  const resolvedLabels = mergeTableLabels({
4549
4999
  ...labels != null ? labels : {},
4550
5000
  ...translations != null ? translations : {}
@@ -4616,7 +5066,7 @@ function TableBase({
4616
5066
  boxShadow: "-10px 0 16px -14px var(--theme-shadow)",
4617
5067
  borderLeft: "1px solid var(--theme-secondary)"
4618
5068
  });
4619
- (0, import_react11.useEffect)(() => {
5069
+ (0, import_react14.useEffect)(() => {
4620
5070
  const element = containerRef.current;
4621
5071
  if (!element) {
4622
5072
  return;
@@ -4665,7 +5115,7 @@ function TableBase({
4665
5115
  const tone = (_a = action.tone) != null ? _a : "default";
4666
5116
  const iconOnly = appearance === "inline" && action.icon != null;
4667
5117
  const isMenuAction = appearance === "menu";
4668
- return /* @__PURE__ */ (0, import_jsx_runtime15.jsxs)(
5118
+ return /* @__PURE__ */ (0, import_jsx_runtime19.jsxs)(
4669
5119
  "button",
4670
5120
  {
4671
5121
  type: "button",
@@ -4691,7 +5141,7 @@ function TableBase({
4691
5141
  ),
4692
5142
  children: [
4693
5143
  action.icon,
4694
- appearance === "menu" || !iconOnly ? /* @__PURE__ */ (0, import_jsx_runtime15.jsx)("span", { children: action.label }) : null
5144
+ appearance === "menu" || !iconOnly ? /* @__PURE__ */ (0, import_jsx_runtime19.jsx)("span", { children: action.label }) : null
4695
5145
  ]
4696
5146
  },
4697
5147
  (_b = action.id) != null ? _b : `${action.label}-${rowIndex}`
@@ -4704,7 +5154,7 @@ function TableBase({
4704
5154
  }
4705
5155
  const inlineActions = resolvedActions.slice(0, visibleInlineActions);
4706
5156
  const overflowActions = resolvedActions.slice(visibleInlineActions);
4707
- return /* @__PURE__ */ (0, import_jsx_runtime15.jsxs)(
5157
+ return /* @__PURE__ */ (0, import_jsx_runtime19.jsxs)(
4708
5158
  "div",
4709
5159
  {
4710
5160
  className: cx(
@@ -4717,7 +5167,7 @@ function TableBase({
4717
5167
  inlineActions.map(
4718
5168
  (action) => renderActionButton(action, item, rowIndex, "inline")
4719
5169
  ),
4720
- overflowActions.length > 0 ? /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(OverflowMenu, { label: resolvedLabels.actionsMenuLabel, children: overflowActions.map(
5170
+ overflowActions.length > 0 ? /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(OverflowMenu, { label: resolvedLabels.actionsMenuLabel, children: overflowActions.map(
4721
5171
  (action) => renderActionButton(action, item, rowIndex, "menu")
4722
5172
  ) }) : null
4723
5173
  ]
@@ -4728,7 +5178,7 @@ function TableBase({
4728
5178
  var _a;
4729
5179
  const content = resolveColumnContent(column, item, rowIndex);
4730
5180
  const align = (_a = column.align) != null ? _a : column.type === "actions" ? "right" : "left";
4731
- return /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(
5181
+ return /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(
4732
5182
  "td",
4733
5183
  {
4734
5184
  colSpan: column.colSpan,
@@ -4741,14 +5191,14 @@ function TableBase({
4741
5191
  width: column.width,
4742
5192
  minWidth: column.minWidth
4743
5193
  },
4744
- children: hasRenderableContent(content) ? content : /* @__PURE__ */ (0, import_jsx_runtime15.jsx)("span", { className: "text-[var(--theme-textLight)]", children: "-" })
5194
+ children: hasRenderableContent(content) ? content : /* @__PURE__ */ (0, import_jsx_runtime19.jsx)("span", { className: "text-[var(--theme-textLight)]", children: "-" })
4745
5195
  },
4746
5196
  `${getColumnKey(column, columnIndex)}-${rowIndex}`
4747
5197
  );
4748
5198
  };
4749
5199
  const renderEmptyState = () => {
4750
5200
  const message = error ? error : loading ? resolvedLabels.loadingMessage : hasSearchValue ? resolvedLabels.noResultsMessage : resolvedLabels.emptyMessage;
4751
- return /* @__PURE__ */ (0, import_jsx_runtime15.jsxs)(
5201
+ return /* @__PURE__ */ (0, import_jsx_runtime19.jsxs)(
4752
5202
  "div",
4753
5203
  {
4754
5204
  className: [
@@ -4757,13 +5207,13 @@ function TableBase({
4757
5207
  "p-6 text-center text-[var(--theme-text)] shadow-none"
4758
5208
  ].join(" "),
4759
5209
  children: [
4760
- /* @__PURE__ */ (0, import_jsx_runtime15.jsx)("strong", { className: "text-base", children: message }),
4761
- error && onRetry ? /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(Button, { variant: "secondary", onClick: onRetry, children: resolvedLabels.retryLabel }) : null
5210
+ /* @__PURE__ */ (0, import_jsx_runtime19.jsx)("strong", { className: "text-base", children: message }),
5211
+ error && onRetry ? /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(Button, { variant: "secondary", onClick: onRetry, children: resolvedLabels.retryLabel }) : null
4762
5212
  ]
4763
5213
  }
4764
5214
  );
4765
5215
  };
4766
- return /* @__PURE__ */ (0, import_jsx_runtime15.jsxs)(
5216
+ return /* @__PURE__ */ (0, import_jsx_runtime19.jsxs)(
4767
5217
  "div",
4768
5218
  {
4769
5219
  ref: containerRef,
@@ -4775,8 +5225,8 @@ function TableBase({
4775
5225
  ),
4776
5226
  style,
4777
5227
  children: [
4778
- shouldRenderToolbar ? /* @__PURE__ */ (0, import_jsx_runtime15.jsxs)("div", { className: "flex min-w-0 flex-wrap items-center justify-between gap-3", children: [
4779
- shouldRenderToolbarPrimaryGroup ? /* @__PURE__ */ (0, import_jsx_runtime15.jsxs)(
5228
+ shouldRenderToolbar ? /* @__PURE__ */ (0, import_jsx_runtime19.jsxs)("div", { className: "flex min-w-0 flex-wrap items-center justify-between gap-3", children: [
5229
+ shouldRenderToolbarPrimaryGroup ? /* @__PURE__ */ (0, import_jsx_runtime19.jsxs)(
4780
5230
  "div",
4781
5231
  {
4782
5232
  className: cx(
@@ -4789,7 +5239,7 @@ function TableBase({
4789
5239
  // to the Input would land on the inner <input>, which lives inside a
4790
5240
  // flex-column ControlFrame — there flex-basis becomes height and the
4791
5241
  // field grows absurdly tall.
4792
- /* @__PURE__ */ (0, import_jsx_runtime15.jsx)("div", { className: "min-w-0 max-w-[360px] flex-[1_1_260px]", children: /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(
5242
+ /* @__PURE__ */ (0, import_jsx_runtime19.jsx)("div", { className: "min-w-0 max-w-[360px] flex-[1_1_260px]", children: /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(
4793
5243
  Input,
4794
5244
  {
4795
5245
  type: "search",
@@ -4800,7 +5250,7 @@ function TableBase({
4800
5250
  }
4801
5251
  ) })
4802
5252
  ) : null,
4803
- showSettingsButton && !loading ? /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(
5253
+ showSettingsButton && !loading ? /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(
4804
5254
  Button,
4805
5255
  {
4806
5256
  variant: "secondary",
@@ -4808,13 +5258,13 @@ function TableBase({
4808
5258
  title: resolvedLabels.settingsButtonLabel,
4809
5259
  onClick: () => setIsSettingsModalOpen(true),
4810
5260
  className: "shrink-0",
4811
- children: /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(SettingsIcon, {})
5261
+ children: /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(SettingsIcon, {})
4812
5262
  }
4813
5263
  ) : null
4814
5264
  ]
4815
5265
  }
4816
5266
  ) : null,
4817
- shouldShowToolbarStatus ? /* @__PURE__ */ (0, import_jsx_runtime15.jsxs)(
5267
+ shouldShowToolbarStatus ? /* @__PURE__ */ (0, import_jsx_runtime19.jsxs)(
4818
5268
  "div",
4819
5269
  {
4820
5270
  className: cx(
@@ -4822,17 +5272,17 @@ function TableBase({
4822
5272
  shouldRenderToolbarPrimaryGroup ? "ml-auto" : ""
4823
5273
  ),
4824
5274
  children: [
4825
- loading ? /* @__PURE__ */ (0, import_jsx_runtime15.jsx)("span", { className: "text-[13px] font-semibold text-[var(--theme-textLight)]", children: resolvedLabels.loadingMessage }) : null,
4826
- !loading && error && hasRows ? /* @__PURE__ */ (0, import_jsx_runtime15.jsxs)("div", { className: "inline-flex items-center gap-2.5", children: [
4827
- /* @__PURE__ */ (0, import_jsx_runtime15.jsx)("span", { className: "text-[13px] font-semibold text-[var(--theme-negative)]", children: resolvedLabels.errorMessage }),
4828
- onRetry ? /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(Button, { variant: "ghost", onClick: onRetry, children: resolvedLabels.retryLabel }) : null
5275
+ loading ? /* @__PURE__ */ (0, import_jsx_runtime19.jsx)("span", { className: "text-[13px] font-semibold text-[var(--theme-textLight)]", children: resolvedLabels.loadingMessage }) : null,
5276
+ !loading && error && hasRows ? /* @__PURE__ */ (0, import_jsx_runtime19.jsxs)("div", { className: "inline-flex items-center gap-2.5", children: [
5277
+ /* @__PURE__ */ (0, import_jsx_runtime19.jsx)("span", { className: "text-[13px] font-semibold text-[var(--theme-negative)]", children: resolvedLabels.errorMessage }),
5278
+ onRetry ? /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(Button, { variant: "ghost", onClick: onRetry, children: resolvedLabels.retryLabel }) : null
4829
5279
  ] }) : null
4830
5280
  ]
4831
5281
  }
4832
5282
  ) : null
4833
5283
  ] }) : null,
4834
5284
  !hasRows && (!loading || error) ? renderEmptyState() : null,
4835
- hasRows ? isCollapsed ? /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(
5285
+ hasRows ? isCollapsed ? /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(
4836
5286
  "div",
4837
5287
  {
4838
5288
  role: "list",
@@ -4840,7 +5290,7 @@ function TableBase({
4840
5290
  className: "flex min-w-0 flex-col gap-3.5",
4841
5291
  children: items.map((item, rowIndex) => {
4842
5292
  const rowActions = renderActions(item, rowIndex);
4843
- return /* @__PURE__ */ (0, import_jsx_runtime15.jsxs)(
5293
+ return /* @__PURE__ */ (0, import_jsx_runtime19.jsxs)(
4844
5294
  "article",
4845
5295
  {
4846
5296
  role: "listitem",
@@ -4853,7 +5303,7 @@ function TableBase({
4853
5303
  ].join(" "),
4854
5304
  onClick: onRowClick ? () => onRowClick(item, rowIndex) : void 0,
4855
5305
  children: [
4856
- /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(
5306
+ /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(
4857
5307
  "div",
4858
5308
  {
4859
5309
  className: cx(
@@ -4872,7 +5322,7 @@ function TableBase({
4872
5322
  1,
4873
5323
  Math.min((_b = column.colSpan) != null ? _b : 1, mobileGridColumnCount)
4874
5324
  );
4875
- return /* @__PURE__ */ (0, import_jsx_runtime15.jsxs)(
5325
+ return /* @__PURE__ */ (0, import_jsx_runtime19.jsxs)(
4876
5326
  "div",
4877
5327
  {
4878
5328
  className: cx(
@@ -4880,7 +5330,7 @@ function TableBase({
4880
5330
  span === 2 ? "col-span-2" : "col-span-1"
4881
5331
  ),
4882
5332
  children: [
4883
- !column.hideLabel && column.label ? /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(
5333
+ !column.hideLabel && column.label ? /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(
4884
5334
  "span",
4885
5335
  {
4886
5336
  className: [
@@ -4892,14 +5342,14 @@ function TableBase({
4892
5342
  children: column.label
4893
5343
  }
4894
5344
  ) : null,
4895
- /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(
5345
+ /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(
4896
5346
  "div",
4897
5347
  {
4898
5348
  className: cx(
4899
5349
  "min-w-0 max-w-full",
4900
5350
  mobileGridColumnCount === 2 ? "" : "flex-1"
4901
5351
  ),
4902
- children: /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(
5352
+ children: /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(
4903
5353
  "div",
4904
5354
  {
4905
5355
  className: cx(
@@ -4907,7 +5357,7 @@ function TableBase({
4907
5357
  "text-[var(--theme-text)] [overflow-wrap:anywhere]",
4908
5358
  getAlignClassName(align)
4909
5359
  ),
4910
- children: hasRenderableContent(content) ? content : /* @__PURE__ */ (0, import_jsx_runtime15.jsx)("span", { className: "text-[var(--theme-textLight)]", children: "-" })
5360
+ children: hasRenderableContent(content) ? content : /* @__PURE__ */ (0, import_jsx_runtime19.jsx)("span", { className: "text-[var(--theme-textLight)]", children: "-" })
4911
5361
  }
4912
5362
  )
4913
5363
  }
@@ -4919,15 +5369,15 @@ function TableBase({
4919
5369
  })
4920
5370
  }
4921
5371
  ),
4922
- rowActions ? /* @__PURE__ */ (0, import_jsx_runtime15.jsx)("div", { className: "flex justify-end pt-1", children: rowActions }) : null
5372
+ rowActions ? /* @__PURE__ */ (0, import_jsx_runtime19.jsx)("div", { className: "flex justify-end pt-1", children: rowActions }) : null
4923
5373
  ]
4924
5374
  },
4925
5375
  getRowId(item, rowIndex, getCustomRowId)
4926
5376
  );
4927
5377
  })
4928
5378
  }
4929
- ) : /* @__PURE__ */ (0, import_jsx_runtime15.jsxs)(import_jsx_runtime15.Fragment, { children: [
4930
- /* @__PURE__ */ (0, import_jsx_runtime15.jsx)("style", { children: `
5379
+ ) : /* @__PURE__ */ (0, import_jsx_runtime19.jsxs)(import_jsx_runtime19.Fragment, { children: [
5380
+ /* @__PURE__ */ (0, import_jsx_runtime19.jsx)("style", { children: `
4931
5381
  #${scrollRegionId} {
4932
5382
  scrollbar-width: thin;
4933
5383
  scrollbar-color: var(--theme-secondary) transparent;
@@ -4954,7 +5404,7 @@ function TableBase({
4954
5404
  background-clip: padding-box;
4955
5405
  }
4956
5406
  ` }),
4957
- /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(
5407
+ /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(
4958
5408
  "div",
4959
5409
  {
4960
5410
  id: scrollRegionId,
@@ -4965,12 +5415,12 @@ function TableBase({
4965
5415
  "rounded-[20px] border-2 border-solid border-[var(--theme-background)]",
4966
5416
  "bg-[var(--theme-surface)] shadow-none"
4967
5417
  ),
4968
- children: /* @__PURE__ */ (0, import_jsx_runtime15.jsxs)("table", { className: "w-max min-w-full max-w-none border-separate border-spacing-0", children: [
4969
- /* @__PURE__ */ (0, import_jsx_runtime15.jsx)("thead", { children: /* @__PURE__ */ (0, import_jsx_runtime15.jsxs)("tr", { children: [
5418
+ children: /* @__PURE__ */ (0, import_jsx_runtime19.jsxs)("table", { className: "w-max min-w-full max-w-none border-separate border-spacing-0", children: [
5419
+ /* @__PURE__ */ (0, import_jsx_runtime19.jsx)("thead", { children: /* @__PURE__ */ (0, import_jsx_runtime19.jsxs)("tr", { children: [
4970
5420
  desktopColumns.map((column, columnIndex) => {
4971
5421
  var _a, _b;
4972
5422
  const align = (_a = column.align) != null ? _a : column.type === "actions" ? "right" : "left";
4973
- return /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(
5423
+ return /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(
4974
5424
  "th",
4975
5425
  {
4976
5426
  colSpan: (_b = column.headerColSpan) != null ? _b : column.colSpan,
@@ -4990,7 +5440,7 @@ function TableBase({
4990
5440
  getColumnKey(column, columnIndex)
4991
5441
  );
4992
5442
  }),
4993
- actions ? /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(
5443
+ actions ? /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(
4994
5444
  "th",
4995
5445
  {
4996
5446
  scope: "col",
@@ -5011,11 +5461,11 @@ function TableBase({
5011
5461
  }
5012
5462
  ) : null
5013
5463
  ] }) }),
5014
- /* @__PURE__ */ (0, import_jsx_runtime15.jsx)("tbody", { children: items.map((item, rowIndex) => {
5464
+ /* @__PURE__ */ (0, import_jsx_runtime19.jsx)("tbody", { children: items.map((item, rowIndex) => {
5015
5465
  const rowActions = renderActions(item, rowIndex);
5016
5466
  const isAlternateRow = rowIndex % 2 !== 0;
5017
5467
  const stickyRowBackgroundImage = rowIndex % 2 === 0 ? void 0 : "linear-gradient(var(--theme-background), var(--theme-background))";
5018
- return /* @__PURE__ */ (0, import_jsx_runtime15.jsxs)(
5468
+ return /* @__PURE__ */ (0, import_jsx_runtime19.jsxs)(
5019
5469
  "tr",
5020
5470
  {
5021
5471
  className: [
@@ -5032,7 +5482,7 @@ function TableBase({
5032
5482
  columnIndex
5033
5483
  );
5034
5484
  }),
5035
- actions ? /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(
5485
+ actions ? /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(
5036
5486
  "td",
5037
5487
  {
5038
5488
  className: cx(
@@ -5058,9 +5508,9 @@ function TableBase({
5058
5508
  }
5059
5509
  )
5060
5510
  ] }) : null,
5061
- hasRows && shouldRenderFooter ? /* @__PURE__ */ (0, import_jsx_runtime15.jsxs)("div", { className: "-mt-2 flex flex-wrap items-center justify-between gap-3", children: [
5062
- shouldShowPaginationControls ? /* @__PURE__ */ (0, import_jsx_runtime15.jsxs)("div", { className: "flex flex-wrap items-center gap-2", children: [
5063
- /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(
5511
+ hasRows && shouldRenderFooter ? /* @__PURE__ */ (0, import_jsx_runtime19.jsxs)("div", { className: "-mt-2 flex flex-wrap items-center justify-between gap-3", children: [
5512
+ shouldShowPaginationControls ? /* @__PURE__ */ (0, import_jsx_runtime19.jsxs)("div", { className: "flex flex-wrap items-center gap-2", children: [
5513
+ /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(
5064
5514
  Button,
5065
5515
  {
5066
5516
  variant: "secondary",
@@ -5071,7 +5521,7 @@ function TableBase({
5071
5521
  children: 1
5072
5522
  }
5073
5523
  ),
5074
- /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(
5524
+ /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(
5075
5525
  Button,
5076
5526
  {
5077
5527
  variant: "secondary",
@@ -5079,10 +5529,10 @@ function TableBase({
5079
5529
  disabled: !canGoToPreviousPage,
5080
5530
  "aria-label": resolvedLabels.previousPageLabel,
5081
5531
  style: paginationButtonStyle,
5082
- children: /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(ChevronIcon, { direction: "left" })
5532
+ children: /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(ChevronIcon, { direction: "left" })
5083
5533
  }
5084
5534
  ),
5085
- /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(
5535
+ /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(
5086
5536
  Button,
5087
5537
  {
5088
5538
  variant: "secondary",
@@ -5092,7 +5542,7 @@ function TableBase({
5092
5542
  children: normalizedPage
5093
5543
  }
5094
5544
  ),
5095
- /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(
5545
+ /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(
5096
5546
  Button,
5097
5547
  {
5098
5548
  variant: "secondary",
@@ -5100,10 +5550,10 @@ function TableBase({
5100
5550
  disabled: !canGoToNextPage,
5101
5551
  "aria-label": resolvedLabels.nextPageLabel,
5102
5552
  style: paginationButtonStyle,
5103
- children: /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(ChevronIcon, { direction: "right" })
5553
+ children: /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(ChevronIcon, { direction: "right" })
5104
5554
  }
5105
5555
  ),
5106
- /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(
5556
+ /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(
5107
5557
  Button,
5108
5558
  {
5109
5559
  variant: "secondary",
@@ -5115,16 +5565,16 @@ function TableBase({
5115
5565
  }
5116
5566
  )
5117
5567
  ] }) : null,
5118
- /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(
5568
+ /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(
5119
5569
  "div",
5120
5570
  {
5121
5571
  className: cx(
5122
5572
  "flex items-center gap-2.5 text-[13px] text-[var(--theme-textLight)]",
5123
5573
  shouldShowRowsPerPageControl ? "ml-auto" : ""
5124
5574
  ),
5125
- children: shouldShowRowsPerPageControl ? /* @__PURE__ */ (0, import_jsx_runtime15.jsxs)(import_jsx_runtime15.Fragment, { children: [
5126
- resolvedLabels.rowsPerPageLabel ? /* @__PURE__ */ (0, import_jsx_runtime15.jsx)("span", { children: resolvedLabels.rowsPerPageLabel }) : null,
5127
- /* @__PURE__ */ (0, import_jsx_runtime15.jsx)("div", { className: "w-[72px]", children: /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(
5575
+ children: shouldShowRowsPerPageControl ? /* @__PURE__ */ (0, import_jsx_runtime19.jsxs)(import_jsx_runtime19.Fragment, { children: [
5576
+ resolvedLabels.rowsPerPageLabel ? /* @__PURE__ */ (0, import_jsx_runtime19.jsx)("span", { children: resolvedLabels.rowsPerPageLabel }) : null,
5577
+ /* @__PURE__ */ (0, import_jsx_runtime19.jsx)("div", { className: "w-[72px]", children: /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(
5128
5578
  Select,
5129
5579
  {
5130
5580
  value: String(pageSize),
@@ -5143,7 +5593,7 @@ function TableBase({
5143
5593
  }
5144
5594
  )
5145
5595
  ] }) : null,
5146
- /* @__PURE__ */ (0, import_jsx_runtime15.jsxs)(
5596
+ /* @__PURE__ */ (0, import_jsx_runtime19.jsxs)(
5147
5597
  Modal,
5148
5598
  {
5149
5599
  isOpen: isSettingsModalOpen,
@@ -5160,9 +5610,9 @@ function TableBase({
5160
5610
  paddingTop: 8
5161
5611
  },
5162
5612
  children: [
5163
- /* @__PURE__ */ (0, import_jsx_runtime15.jsxs)("section", { className: "grid gap-3", children: [
5164
- /* @__PURE__ */ (0, import_jsx_runtime15.jsx)("strong", { className: "text-sm text-[var(--theme-text)]", children: resolvedLabels.tableInfoSectionTitle }),
5165
- /* @__PURE__ */ (0, import_jsx_runtime15.jsxs)(
5613
+ /* @__PURE__ */ (0, import_jsx_runtime19.jsxs)("section", { className: "grid gap-3", children: [
5614
+ /* @__PURE__ */ (0, import_jsx_runtime19.jsx)("strong", { className: "text-sm text-[var(--theme-text)]", children: resolvedLabels.tableInfoSectionTitle }),
5615
+ /* @__PURE__ */ (0, import_jsx_runtime19.jsxs)(
5166
5616
  "div",
5167
5617
  {
5168
5618
  className: cx(
@@ -5170,31 +5620,31 @@ function TableBase({
5170
5620
  "border-2 border-[var(--theme-background)] bg-[var(--theme-surface)]"
5171
5621
  ),
5172
5622
  children: [
5173
- /* @__PURE__ */ (0, import_jsx_runtime15.jsxs)("div", { className: "grid gap-1", children: [
5174
- /* @__PURE__ */ (0, import_jsx_runtime15.jsx)("span", { className: "text-xs text-[var(--theme-textLight)]", children: resolvedLabels.totalItemsInfoLabel }),
5175
- /* @__PURE__ */ (0, import_jsx_runtime15.jsx)("strong", { className: "font-medium text-[var(--theme-text)]", children: totalItemCount })
5623
+ /* @__PURE__ */ (0, import_jsx_runtime19.jsxs)("div", { className: "grid gap-1", children: [
5624
+ /* @__PURE__ */ (0, import_jsx_runtime19.jsx)("span", { className: "text-xs text-[var(--theme-textLight)]", children: resolvedLabels.totalItemsInfoLabel }),
5625
+ /* @__PURE__ */ (0, import_jsx_runtime19.jsx)("strong", { className: "font-medium text-[var(--theme-text)]", children: totalItemCount })
5176
5626
  ] }),
5177
- /* @__PURE__ */ (0, import_jsx_runtime15.jsxs)("div", { className: "grid gap-1", children: [
5178
- /* @__PURE__ */ (0, import_jsx_runtime15.jsx)("span", { className: "text-xs text-[var(--theme-textLight)]", children: resolvedLabels.totalPagesInfoLabel }),
5179
- /* @__PURE__ */ (0, import_jsx_runtime15.jsx)("strong", { className: "font-medium text-[var(--theme-text)]", children: totalPages })
5627
+ /* @__PURE__ */ (0, import_jsx_runtime19.jsxs)("div", { className: "grid gap-1", children: [
5628
+ /* @__PURE__ */ (0, import_jsx_runtime19.jsx)("span", { className: "text-xs text-[var(--theme-textLight)]", children: resolvedLabels.totalPagesInfoLabel }),
5629
+ /* @__PURE__ */ (0, import_jsx_runtime19.jsx)("strong", { className: "font-medium text-[var(--theme-text)]", children: totalPages })
5180
5630
  ] }),
5181
- /* @__PURE__ */ (0, import_jsx_runtime15.jsxs)("div", { className: "grid gap-1", children: [
5182
- /* @__PURE__ */ (0, import_jsx_runtime15.jsx)("span", { className: "text-xs text-[var(--theme-textLight)]", children: resolvedLabels.currentPageItemsInfoLabel }),
5183
- /* @__PURE__ */ (0, import_jsx_runtime15.jsx)("strong", { className: "font-medium text-[var(--theme-text)]", children: currentPageItemCount })
5631
+ /* @__PURE__ */ (0, import_jsx_runtime19.jsxs)("div", { className: "grid gap-1", children: [
5632
+ /* @__PURE__ */ (0, import_jsx_runtime19.jsx)("span", { className: "text-xs text-[var(--theme-textLight)]", children: resolvedLabels.currentPageItemsInfoLabel }),
5633
+ /* @__PURE__ */ (0, import_jsx_runtime19.jsx)("strong", { className: "font-medium text-[var(--theme-text)]", children: currentPageItemCount })
5184
5634
  ] }),
5185
- /* @__PURE__ */ (0, import_jsx_runtime15.jsxs)("div", { className: "grid gap-1", children: [
5186
- /* @__PURE__ */ (0, import_jsx_runtime15.jsx)("span", { className: "text-xs text-[var(--theme-textLight)]", children: resolvedLabels.currentPageInfoLabel }),
5187
- /* @__PURE__ */ (0, import_jsx_runtime15.jsx)("strong", { className: "font-medium text-[var(--theme-text)]", children: normalizedPage })
5635
+ /* @__PURE__ */ (0, import_jsx_runtime19.jsxs)("div", { className: "grid gap-1", children: [
5636
+ /* @__PURE__ */ (0, import_jsx_runtime19.jsx)("span", { className: "text-xs text-[var(--theme-textLight)]", children: resolvedLabels.currentPageInfoLabel }),
5637
+ /* @__PURE__ */ (0, import_jsx_runtime19.jsx)("strong", { className: "font-medium text-[var(--theme-text)]", children: normalizedPage })
5188
5638
  ] })
5189
5639
  ]
5190
5640
  }
5191
5641
  )
5192
5642
  ] }),
5193
- /* @__PURE__ */ (0, import_jsx_runtime15.jsx)("div", { className: "py-[18px]", children: /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(Separator, {}) }),
5194
- /* @__PURE__ */ (0, import_jsx_runtime15.jsxs)("section", { className: "grid gap-3", children: [
5195
- /* @__PURE__ */ (0, import_jsx_runtime15.jsx)("strong", { className: "text-sm text-[var(--theme-text)]", children: resolvedLabels.downloadSectionTitle }),
5196
- /* @__PURE__ */ (0, import_jsx_runtime15.jsxs)("div", { className: "flex flex-wrap gap-2.5", children: [
5197
- /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(
5643
+ /* @__PURE__ */ (0, import_jsx_runtime19.jsx)("div", { className: "py-[18px]", children: /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(Separator, {}) }),
5644
+ /* @__PURE__ */ (0, import_jsx_runtime19.jsxs)("section", { className: "grid gap-3", children: [
5645
+ /* @__PURE__ */ (0, import_jsx_runtime19.jsx)("strong", { className: "text-sm text-[var(--theme-text)]", children: resolvedLabels.downloadSectionTitle }),
5646
+ /* @__PURE__ */ (0, import_jsx_runtime19.jsxs)("div", { className: "flex flex-wrap gap-2.5", children: [
5647
+ /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(
5198
5648
  Button,
5199
5649
  {
5200
5650
  variant: "secondary",
@@ -5203,7 +5653,7 @@ function TableBase({
5203
5653
  children: resolvedLabels.downloadCsvLabel
5204
5654
  }
5205
5655
  ),
5206
- /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(
5656
+ /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(
5207
5657
  Button,
5208
5658
  {
5209
5659
  variant: "secondary",
@@ -5212,7 +5662,7 @@ function TableBase({
5212
5662
  children: resolvedLabels.downloadXlsLabel
5213
5663
  }
5214
5664
  ),
5215
- /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(
5665
+ /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(
5216
5666
  Button,
5217
5667
  {
5218
5668
  variant: "secondary",
@@ -5232,7 +5682,7 @@ function TableBase({
5232
5682
  }
5233
5683
 
5234
5684
  // src/components/Table.tsx
5235
- var import_jsx_runtime16 = require("react/jsx-runtime");
5685
+ var import_jsx_runtime20 = require("react/jsx-runtime");
5236
5686
  function Table({
5237
5687
  items,
5238
5688
  desktopColumns,
@@ -5248,13 +5698,13 @@ function Table({
5248
5698
  ...props
5249
5699
  }) {
5250
5700
  var _a;
5251
- const initialPageSizeOptions = (0, import_react12.useMemo)(() => {
5701
+ const initialPageSizeOptions = (0, import_react15.useMemo)(() => {
5252
5702
  return sanitizePageSizeOptions(pageSizeOptions, defaultPageSize);
5253
5703
  }, [defaultPageSize, pageSizeOptions]);
5254
- const [searchValue, setSearchValue] = (0, import_react12.useState)(defaultSearchValue);
5255
- const [page, setPage] = (0, import_react12.useState)(Math.max(1, Math.floor(defaultPage)));
5256
- const [pageSize, setPageSize] = (0, import_react12.useState)((_a = initialPageSizeOptions[0]) != null ? _a : DEFAULT_PAGE_SIZE);
5257
- (0, import_react12.useEffect)(() => {
5704
+ const [searchValue, setSearchValue] = (0, import_react15.useState)(defaultSearchValue);
5705
+ const [page, setPage] = (0, import_react15.useState)(Math.max(1, Math.floor(defaultPage)));
5706
+ const [pageSize, setPageSize] = (0, import_react15.useState)((_a = initialPageSizeOptions[0]) != null ? _a : DEFAULT_PAGE_SIZE);
5707
+ (0, import_react15.useEffect)(() => {
5258
5708
  var _a2;
5259
5709
  if (initialPageSizeOptions.includes(pageSize)) {
5260
5710
  return;
@@ -5262,7 +5712,7 @@ function Table({
5262
5712
  const nextPageSize = (_a2 = initialPageSizeOptions[0]) != null ? _a2 : DEFAULT_PAGE_SIZE;
5263
5713
  setPageSize(nextPageSize);
5264
5714
  }, [initialPageSizeOptions, pageSize]);
5265
- const filteredItems = (0, import_react12.useMemo)(() => {
5715
+ const filteredItems = (0, import_react15.useMemo)(() => {
5266
5716
  if (!searchable) {
5267
5717
  return items;
5268
5718
  }
@@ -5280,18 +5730,18 @@ function Table({
5280
5730
  const totalItems = filteredItems.length;
5281
5731
  const totalPages = Math.max(1, Math.ceil(totalItems / pageSize));
5282
5732
  const normalizedPage = clampPage(page, totalPages);
5283
- (0, import_react12.useEffect)(() => {
5733
+ (0, import_react15.useEffect)(() => {
5284
5734
  if (normalizedPage === page) {
5285
5735
  return;
5286
5736
  }
5287
5737
  setPage(normalizedPage);
5288
5738
  onPageChange == null ? void 0 : onPageChange(normalizedPage);
5289
5739
  }, [normalizedPage, onPageChange, page]);
5290
- const pageItems = (0, import_react12.useMemo)(() => {
5740
+ const pageItems = (0, import_react15.useMemo)(() => {
5291
5741
  const startIndex = (normalizedPage - 1) * pageSize;
5292
5742
  return filteredItems.slice(startIndex, startIndex + pageSize);
5293
5743
  }, [filteredItems, normalizedPage, pageSize]);
5294
- return /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(
5744
+ return /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
5295
5745
  TableBase,
5296
5746
  {
5297
5747
  ...props,
@@ -5327,8 +5777,8 @@ function Table({
5327
5777
  }
5328
5778
 
5329
5779
  // src/components/TableAsync.tsx
5330
- var import_react13 = require("react");
5331
- var import_jsx_runtime17 = require("react/jsx-runtime");
5780
+ var import_react16 = require("react");
5781
+ var import_jsx_runtime21 = require("react/jsx-runtime");
5332
5782
  var areUnknownArraysEqual2 = (left, right) => {
5333
5783
  if (left.length !== right.length) {
5334
5784
  return false;
@@ -5353,25 +5803,25 @@ function TableAsync({
5353
5803
  ...props
5354
5804
  }) {
5355
5805
  var _a;
5356
- const initialPageSizeOptions = (0, import_react13.useMemo)(() => {
5806
+ const initialPageSizeOptions = (0, import_react16.useMemo)(() => {
5357
5807
  return sanitizePageSizeOptions(pageSizeOptions, defaultPageSize);
5358
5808
  }, [defaultPageSize, pageSizeOptions]);
5359
- const [searchValue, setSearchValue] = (0, import_react13.useState)(defaultSearchValue);
5360
- const [debouncedSearchValue, setDebouncedSearchValue] = (0, import_react13.useState)(defaultSearchValue);
5361
- const [page, setPage] = (0, import_react13.useState)(Math.max(1, Math.floor(defaultPage)));
5362
- const [pageSize, setPageSize] = (0, import_react13.useState)((_a = initialPageSizeOptions[0]) != null ? _a : DEFAULT_PAGE_SIZE);
5363
- const [items, setItems] = (0, import_react13.useState)([]);
5364
- const [totalPages, setTotalPages] = (0, import_react13.useState)(1);
5365
- const [totalItems, setTotalItems] = (0, import_react13.useState)(void 0);
5366
- const [loading, setLoading] = (0, import_react13.useState)(false);
5367
- const [error, setError] = (0, import_react13.useState)(null);
5368
- const [reloadKey, setReloadKey] = (0, import_react13.useState)(0);
5369
- const loadItemsRef = (0, import_react13.useRef)(loadItems);
5370
- const cacheUniqsRef = (0, import_react13.useRef)(cacheUniqs);
5371
- const activeControllerRef = (0, import_react13.useRef)(null);
5372
- const requestVersionRef = (0, import_react13.useRef)(0);
5809
+ const [searchValue, setSearchValue] = (0, import_react16.useState)(defaultSearchValue);
5810
+ const [debouncedSearchValue, setDebouncedSearchValue] = (0, import_react16.useState)(defaultSearchValue);
5811
+ const [page, setPage] = (0, import_react16.useState)(Math.max(1, Math.floor(defaultPage)));
5812
+ const [pageSize, setPageSize] = (0, import_react16.useState)((_a = initialPageSizeOptions[0]) != null ? _a : DEFAULT_PAGE_SIZE);
5813
+ const [items, setItems] = (0, import_react16.useState)([]);
5814
+ const [totalPages, setTotalPages] = (0, import_react16.useState)(1);
5815
+ const [totalItems, setTotalItems] = (0, import_react16.useState)(void 0);
5816
+ const [loading, setLoading] = (0, import_react16.useState)(false);
5817
+ const [error, setError] = (0, import_react16.useState)(null);
5818
+ const [reloadKey, setReloadKey] = (0, import_react16.useState)(0);
5819
+ const loadItemsRef = (0, import_react16.useRef)(loadItems);
5820
+ const cacheUniqsRef = (0, import_react16.useRef)(cacheUniqs);
5821
+ const activeControllerRef = (0, import_react16.useRef)(null);
5822
+ const requestVersionRef = (0, import_react16.useRef)(0);
5373
5823
  loadItemsRef.current = loadItems;
5374
- (0, import_react13.useEffect)(() => {
5824
+ (0, import_react16.useEffect)(() => {
5375
5825
  var _a2;
5376
5826
  if (initialPageSizeOptions.includes(pageSize)) {
5377
5827
  return;
@@ -5379,7 +5829,7 @@ function TableAsync({
5379
5829
  const nextPageSize = (_a2 = initialPageSizeOptions[0]) != null ? _a2 : DEFAULT_PAGE_SIZE;
5380
5830
  setPageSize(nextPageSize);
5381
5831
  }, [initialPageSizeOptions, pageSize]);
5382
- (0, import_react13.useEffect)(() => {
5832
+ (0, import_react16.useEffect)(() => {
5383
5833
  const timeoutId = window.setTimeout(() => {
5384
5834
  setDebouncedSearchValue(searchValue);
5385
5835
  }, searchDebounceMs);
@@ -5387,7 +5837,7 @@ function TableAsync({
5387
5837
  window.clearTimeout(timeoutId);
5388
5838
  };
5389
5839
  }, [searchDebounceMs, searchValue]);
5390
- (0, import_react13.useEffect)(() => {
5840
+ (0, import_react16.useEffect)(() => {
5391
5841
  if (areUnknownArraysEqual2(cacheUniqsRef.current, cacheUniqs)) {
5392
5842
  return;
5393
5843
  }
@@ -5395,7 +5845,7 @@ function TableAsync({
5395
5845
  setPage(1);
5396
5846
  setReloadKey((currentValue) => currentValue + 1);
5397
5847
  }, [cacheUniqs]);
5398
- (0, import_react13.useEffect)(() => {
5848
+ (0, import_react16.useEffect)(() => {
5399
5849
  var _a2;
5400
5850
  requestVersionRef.current += 1;
5401
5851
  const currentRequestVersion = requestVersionRef.current;
@@ -5433,21 +5883,21 @@ function TableAsync({
5433
5883
  setLoading(false);
5434
5884
  });
5435
5885
  }, [debouncedSearchValue, keepPreviousData, page, pageSize, reloadKey, searchable, ...cacheUniqs]);
5436
- (0, import_react13.useEffect)(() => {
5886
+ (0, import_react16.useEffect)(() => {
5437
5887
  return () => {
5438
5888
  var _a2;
5439
5889
  (_a2 = activeControllerRef.current) == null ? void 0 : _a2.abort();
5440
5890
  };
5441
5891
  }, []);
5442
5892
  const normalizedPage = clampPage(page, totalPages);
5443
- (0, import_react13.useEffect)(() => {
5893
+ (0, import_react16.useEffect)(() => {
5444
5894
  if (normalizedPage === page) {
5445
5895
  return;
5446
5896
  }
5447
5897
  setPage(normalizedPage);
5448
5898
  onPageChange == null ? void 0 : onPageChange(normalizedPage);
5449
5899
  }, [normalizedPage, onPageChange, page]);
5450
- return /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(
5900
+ return /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
5451
5901
  TableBase,
5452
5902
  {
5453
5903
  ...props,
@@ -5486,7 +5936,7 @@ function TableAsync({
5486
5936
  }
5487
5937
 
5488
5938
  // src/components/Textarea.tsx
5489
- var import_jsx_runtime18 = require("react/jsx-runtime");
5939
+ var import_jsx_runtime22 = require("react/jsx-runtime");
5490
5940
  function Textarea({
5491
5941
  label,
5492
5942
  hint,
@@ -5503,7 +5953,7 @@ function Textarea({
5503
5953
  const resolvedPlaceholder = placeholder != null ? placeholder : " ";
5504
5954
  const placeholderClass = floatingPlaceholder ? "placeholder-transparent" : "placeholder-[var(--theme-textLight)]";
5505
5955
  const isPopulated = rest.value !== void 0 && rest.value !== "" && rest.value !== null;
5506
- const textarea = /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(
5956
+ const textarea = /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(
5507
5957
  "textarea",
5508
5958
  {
5509
5959
  ...rest,
@@ -5528,7 +5978,7 @@ function Textarea({
5528
5978
  }
5529
5979
  }
5530
5980
  );
5531
- return /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(
5981
+ return /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(
5532
5982
  ControlFrame,
5533
5983
  {
5534
5984
  label,
@@ -5549,15 +5999,18 @@ function Textarea({
5549
5999
  injectUiKitFonts();
5550
6000
  // Annotate the CommonJS export names for ESM import in node:
5551
6001
  0 && (module.exports = {
6002
+ Alert,
5552
6003
  Button,
5553
6004
  Card,
5554
6005
  CardSmall,
5555
6006
  Checkbox,
5556
6007
  ComposableModal,
5557
6008
  DatePicker,
6009
+ IconButton,
5558
6010
  Input,
5559
6011
  Loading,
5560
6012
  Modal,
6013
+ ResultState,
5561
6014
  Select,
5562
6015
  SelectAsync,
5563
6016
  Separator,