premium-ds 0.1.0

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.
Files changed (257) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +113 -0
  3. package/dist/alert.d.ts +31 -0
  4. package/dist/alert.js +6 -0
  5. package/dist/alert.js.map +1 -0
  6. package/dist/avatar-group.d.ts +13 -0
  7. package/dist/avatar-group.js +3 -0
  8. package/dist/avatar-group.js.map +1 -0
  9. package/dist/avatar.d.ts +25 -0
  10. package/dist/avatar.js +3 -0
  11. package/dist/avatar.js.map +1 -0
  12. package/dist/badge.d.ts +23 -0
  13. package/dist/badge.js +3 -0
  14. package/dist/badge.js.map +1 -0
  15. package/dist/button.d.ts +20 -0
  16. package/dist/button.js +3 -0
  17. package/dist/button.js.map +1 -0
  18. package/dist/checkbox.d.ts +25 -0
  19. package/dist/checkbox.js +3 -0
  20. package/dist/checkbox.js.map +1 -0
  21. package/dist/chunk-2OWHZ4JT.js +36 -0
  22. package/dist/chunk-2OWHZ4JT.js.map +1 -0
  23. package/dist/chunk-34SIXSYL.js +64 -0
  24. package/dist/chunk-34SIXSYL.js.map +1 -0
  25. package/dist/chunk-37O2ZXD6.js +55 -0
  26. package/dist/chunk-37O2ZXD6.js.map +1 -0
  27. package/dist/chunk-4AZL76UJ.js +89 -0
  28. package/dist/chunk-4AZL76UJ.js.map +1 -0
  29. package/dist/chunk-4HSCN5TZ.js +86 -0
  30. package/dist/chunk-4HSCN5TZ.js.map +1 -0
  31. package/dist/chunk-5DDOOT33.js +258 -0
  32. package/dist/chunk-5DDOOT33.js.map +1 -0
  33. package/dist/chunk-5FVHWIMY.js +117 -0
  34. package/dist/chunk-5FVHWIMY.js.map +1 -0
  35. package/dist/chunk-5K6KRJGX.js +147 -0
  36. package/dist/chunk-5K6KRJGX.js.map +1 -0
  37. package/dist/chunk-5PQMQBQC.js +74 -0
  38. package/dist/chunk-5PQMQBQC.js.map +1 -0
  39. package/dist/chunk-7OCTVQ7C.js +95 -0
  40. package/dist/chunk-7OCTVQ7C.js.map +1 -0
  41. package/dist/chunk-7OPMOET7.js +39 -0
  42. package/dist/chunk-7OPMOET7.js.map +1 -0
  43. package/dist/chunk-BXXS7YRC.js +270 -0
  44. package/dist/chunk-BXXS7YRC.js.map +1 -0
  45. package/dist/chunk-CV2Q4YXX.js +272 -0
  46. package/dist/chunk-CV2Q4YXX.js.map +1 -0
  47. package/dist/chunk-EIMMDWIW.js +282 -0
  48. package/dist/chunk-EIMMDWIW.js.map +1 -0
  49. package/dist/chunk-EZ2CWTBE.js +230 -0
  50. package/dist/chunk-EZ2CWTBE.js.map +1 -0
  51. package/dist/chunk-FGHDG3Y4.js +89 -0
  52. package/dist/chunk-FGHDG3Y4.js.map +1 -0
  53. package/dist/chunk-FPP2XLKX.js +127 -0
  54. package/dist/chunk-FPP2XLKX.js.map +1 -0
  55. package/dist/chunk-G6OY35DI.js +295 -0
  56. package/dist/chunk-G6OY35DI.js.map +1 -0
  57. package/dist/chunk-H6KWJNOE.js +65 -0
  58. package/dist/chunk-H6KWJNOE.js.map +1 -0
  59. package/dist/chunk-HGILYGY3.js +45 -0
  60. package/dist/chunk-HGILYGY3.js.map +1 -0
  61. package/dist/chunk-I3BCB4Z5.js +88 -0
  62. package/dist/chunk-I3BCB4Z5.js.map +1 -0
  63. package/dist/chunk-KBWNUUWM.js +582 -0
  64. package/dist/chunk-KBWNUUWM.js.map +1 -0
  65. package/dist/chunk-KN7JFAZ6.js +113 -0
  66. package/dist/chunk-KN7JFAZ6.js.map +1 -0
  67. package/dist/chunk-MEF7PI6U.js +16 -0
  68. package/dist/chunk-MEF7PI6U.js.map +1 -0
  69. package/dist/chunk-NKGMQL6I.js +310 -0
  70. package/dist/chunk-NKGMQL6I.js.map +1 -0
  71. package/dist/chunk-NMFQRGLL.js +127 -0
  72. package/dist/chunk-NMFQRGLL.js.map +1 -0
  73. package/dist/chunk-OUBWD6CX.js +433 -0
  74. package/dist/chunk-OUBWD6CX.js.map +1 -0
  75. package/dist/chunk-PFNXVBLU.js +96 -0
  76. package/dist/chunk-PFNXVBLU.js.map +1 -0
  77. package/dist/chunk-PUPZ4HME.js +165 -0
  78. package/dist/chunk-PUPZ4HME.js.map +1 -0
  79. package/dist/chunk-QFS52OK5.js +690 -0
  80. package/dist/chunk-QFS52OK5.js.map +1 -0
  81. package/dist/chunk-QNC6O3PG.js +45 -0
  82. package/dist/chunk-QNC6O3PG.js.map +1 -0
  83. package/dist/chunk-QUHOXWBK.js +82 -0
  84. package/dist/chunk-QUHOXWBK.js.map +1 -0
  85. package/dist/chunk-UIQGSTBJ.js +106 -0
  86. package/dist/chunk-UIQGSTBJ.js.map +1 -0
  87. package/dist/chunk-UJQKVP6V.js +193 -0
  88. package/dist/chunk-UJQKVP6V.js.map +1 -0
  89. package/dist/chunk-VVPGEAC6.js +11 -0
  90. package/dist/chunk-VVPGEAC6.js.map +1 -0
  91. package/dist/chunk-XA3T5KWA.js +58 -0
  92. package/dist/chunk-XA3T5KWA.js.map +1 -0
  93. package/dist/chunk-YSHJHSJM.js +19 -0
  94. package/dist/chunk-YSHJHSJM.js.map +1 -0
  95. package/dist/chunk-YVHOAVSM.js +182 -0
  96. package/dist/chunk-YVHOAVSM.js.map +1 -0
  97. package/dist/collapse.d.ts +16 -0
  98. package/dist/collapse.js +3 -0
  99. package/dist/collapse.js.map +1 -0
  100. package/dist/count-badge.d.ts +11 -0
  101. package/dist/count-badge.js +4 -0
  102. package/dist/count-badge.js.map +1 -0
  103. package/dist/date-field.d.ts +39 -0
  104. package/dist/date-field.js +8 -0
  105. package/dist/date-field.js.map +1 -0
  106. package/dist/date-range-field.d.ts +30 -0
  107. package/dist/date-range-field.js +8 -0
  108. package/dist/date-range-field.js.map +1 -0
  109. package/dist/datetime-field.d.ts +28 -0
  110. package/dist/datetime-field.js +10 -0
  111. package/dist/datetime-field.js.map +1 -0
  112. package/dist/dialog.d.ts +26 -0
  113. package/dist/dialog.js +7 -0
  114. package/dist/dialog.js.map +1 -0
  115. package/dist/index.d.ts +35 -0
  116. package/dist/index.js +40 -0
  117. package/dist/index.js.map +1 -0
  118. package/dist/motion-tokens.d.ts +29 -0
  119. package/dist/motion-tokens.js +3 -0
  120. package/dist/motion-tokens.js.map +1 -0
  121. package/dist/multi-select.d.ts +25 -0
  122. package/dist/multi-select.js +7 -0
  123. package/dist/multi-select.js.map +1 -0
  124. package/dist/number-field.d.ts +24 -0
  125. package/dist/number-field.js +4 -0
  126. package/dist/number-field.js.map +1 -0
  127. package/dist/otp-field.d.ts +20 -0
  128. package/dist/otp-field.js +3 -0
  129. package/dist/otp-field.js.map +1 -0
  130. package/dist/overlay.d.ts +31 -0
  131. package/dist/overlay.js +4 -0
  132. package/dist/overlay.js.map +1 -0
  133. package/dist/pagination.d.ts +24 -0
  134. package/dist/pagination.js +5 -0
  135. package/dist/pagination.js.map +1 -0
  136. package/dist/radio-group.d.ts +46 -0
  137. package/dist/radio-group.js +6 -0
  138. package/dist/radio-group.js.map +1 -0
  139. package/dist/select-core-SAyS-8w0.d.ts +16 -0
  140. package/dist/select.d.ts +27 -0
  141. package/dist/select.js +7 -0
  142. package/dist/select.js.map +1 -0
  143. package/dist/status-badge.d.ts +17 -0
  144. package/dist/status-badge.js +5 -0
  145. package/dist/status-badge.js.map +1 -0
  146. package/dist/table.d.ts +65 -0
  147. package/dist/table.js +5 -0
  148. package/dist/table.js.map +1 -0
  149. package/dist/tabs.d.ts +44 -0
  150. package/dist/tabs.js +5 -0
  151. package/dist/tabs.js.map +1 -0
  152. package/dist/tag.d.ts +28 -0
  153. package/dist/tag.js +5 -0
  154. package/dist/tag.js.map +1 -0
  155. package/dist/text-field.d.ts +30 -0
  156. package/dist/text-field.js +6 -0
  157. package/dist/text-field.js.map +1 -0
  158. package/dist/textarea.d.ts +33 -0
  159. package/dist/textarea.js +5 -0
  160. package/dist/textarea.js.map +1 -0
  161. package/dist/time-field.d.ts +27 -0
  162. package/dist/time-field.js +6 -0
  163. package/dist/time-field.js.map +1 -0
  164. package/dist/toast-store.d.ts +75 -0
  165. package/dist/toast-store.js +3 -0
  166. package/dist/toast-store.js.map +1 -0
  167. package/dist/toast.d.ts +3 -0
  168. package/dist/toast.js +6 -0
  169. package/dist/toast.js.map +1 -0
  170. package/dist/toggle-tag.d.ts +24 -0
  171. package/dist/toggle-tag.js +4 -0
  172. package/dist/toggle-tag.js.map +1 -0
  173. package/dist/toggle.d.ts +21 -0
  174. package/dist/toggle.js +3 -0
  175. package/dist/toggle.js.map +1 -0
  176. package/dist/tooltip.d.ts +27 -0
  177. package/dist/tooltip.js +4 -0
  178. package/dist/tooltip.js.map +1 -0
  179. package/llms.txt +165 -0
  180. package/package.json +205 -0
  181. package/src/components/alert/Alert.tsx +118 -0
  182. package/src/components/alert/alert.css +136 -0
  183. package/src/components/avatar/Avatar.tsx +128 -0
  184. package/src/components/avatar/AvatarGroup.tsx +50 -0
  185. package/src/components/avatar/avatar.css +200 -0
  186. package/src/components/badge/Badge.tsx +66 -0
  187. package/src/components/badge/CountBadge.tsx +46 -0
  188. package/src/components/badge/StatusBadge.tsx +132 -0
  189. package/src/components/badge/badge.css +243 -0
  190. package/src/components/button/Button.tsx +68 -0
  191. package/src/components/button/button.css +222 -0
  192. package/src/components/checkbox/Checkbox.tsx +90 -0
  193. package/src/components/checkbox/checkbox.css +179 -0
  194. package/src/components/date-picker/DateField.tsx +362 -0
  195. package/src/components/date-picker/DateRangeField.tsx +533 -0
  196. package/src/components/date-picker/DateTimeField.tsx +177 -0
  197. package/src/components/date-picker/TimeField.tsx +100 -0
  198. package/src/components/date-picker/date-picker.css +591 -0
  199. package/src/components/date-picker/date-utils.ts +55 -0
  200. package/src/components/date-picker/field-shell.tsx +78 -0
  201. package/src/components/date-picker/glide-pill.tsx +81 -0
  202. package/src/components/date-picker/time-core.tsx +305 -0
  203. package/src/components/dialog/Dialog.tsx +181 -0
  204. package/src/components/dialog/dialog.css +170 -0
  205. package/src/components/glass/glass.css +100 -0
  206. package/src/components/icon/Icon.tsx +76 -0
  207. package/src/components/icon/IconSlot.tsx +11 -0
  208. package/src/components/icon/icon.css +33 -0
  209. package/src/components/input/NumberField.tsx +117 -0
  210. package/src/components/input/OtpField.tsx +118 -0
  211. package/src/components/input/TextField.tsx +123 -0
  212. package/src/components/input/input.css +335 -0
  213. package/src/components/motion/Collapse.tsx +33 -0
  214. package/src/components/motion/collapse.css +41 -0
  215. package/src/components/overlay/Overlay.tsx +239 -0
  216. package/src/components/overlay/overlay-core.tsx +565 -0
  217. package/src/components/overlay/overlay.css +119 -0
  218. package/src/components/overlay/sheet-drag.tsx +146 -0
  219. package/src/components/pagination/Pagination.tsx +140 -0
  220. package/src/components/pagination/pagination.css +48 -0
  221. package/src/components/radio-group/RadioGroup.tsx +182 -0
  222. package/src/components/radio-group/radio-group.css +277 -0
  223. package/src/components/select/MultiSelect.tsx +251 -0
  224. package/src/components/select/Select.tsx +235 -0
  225. package/src/components/select/select-core.tsx +417 -0
  226. package/src/components/select/select.css +386 -0
  227. package/src/components/table/Table.tsx +433 -0
  228. package/src/components/table/table.css +348 -0
  229. package/src/components/tabs/Tabs.tsx +371 -0
  230. package/src/components/tabs/tabs.css +228 -0
  231. package/src/components/tag/Tag.tsx +145 -0
  232. package/src/components/tag/ToggleTag.tsx +125 -0
  233. package/src/components/tag/tag.css +248 -0
  234. package/src/components/textarea/Textarea.tsx +197 -0
  235. package/src/components/textarea/textarea.css +219 -0
  236. package/src/components/toast/Toast.tsx +349 -0
  237. package/src/components/toast/toast-store.ts +266 -0
  238. package/src/components/toast/toast.css +233 -0
  239. package/src/components/toggle/Toggle.tsx +94 -0
  240. package/src/components/toggle/toggle.css +152 -0
  241. package/src/components/tooltip/Tooltip.tsx +365 -0
  242. package/src/components/tooltip/tooltip.css +86 -0
  243. package/src/index.ts +42 -0
  244. package/src/styles.css +39 -0
  245. package/src/tokens/avatar.css +20 -0
  246. package/src/tokens/color.css +56 -0
  247. package/src/tokens/elevation.css +20 -0
  248. package/src/tokens/fonts.css +3 -0
  249. package/src/tokens/glass.css +21 -0
  250. package/src/tokens/icons.css +7 -0
  251. package/src/tokens/layers.css +6 -0
  252. package/src/tokens/motion-tokens.ts +72 -0
  253. package/src/tokens/motion.css +49 -0
  254. package/src/tokens/radius.css +11 -0
  255. package/src/tokens/semantic.css +75 -0
  256. package/src/tokens/spacing.css +26 -0
  257. package/src/tokens/typography.css +54 -0
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/select/MultiSelect.tsx"],"names":[],"mappings":"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","file":"chunk-UJQKVP6V.js","sourcesContent":["'use client';\n\n/* MultiSelect - many-of custom listbox; committing toggles a row, the menu stays open. */\nimport * as React from 'react';\nimport {\n useControllable as useMsControllable,\n normalize as msNormalize,\n matches as msMatches,\n useSelectMenu as useMsMenu,\n SelectTrigger as MsTrigger,\n SelectMenu as MsMenu,\n SearchField as MsSearchField,\n FilterRow as MsFilterRow,\n EmptyRow as MsEmptyRow,\n LoadingRows as MsLoadingRows,\n type SelectOption,\n type SelectGroup,\n} from './select-core';\nimport { IconSlot } from '../icon/IconSlot';\n\nexport interface MultiSelectProps {\n options: SelectOption[] | SelectGroup[];\n /** Controlled value. */\n value?: string[];\n defaultValue?: string[];\n /** Fires with the NEXT array and the option that was toggled. */\n onChange?: (value: string[], toggled: SelectOption) => void;\n placeholder?: string;\n size?: 'sm' | 'default' | 'lg';\n disabled?: boolean;\n invalid?: boolean;\n loading?: boolean;\n searchable?: boolean;\n searchPlaceholder?: string;\n /** Your own icon node pinned before the trigger label. */\n leadingIcon?: React.ReactNode;\n id?: string;\n ariaLabel?: string;\n}\n\nfunction CheckboxTick({ checked }: { checked: boolean }) {\n return (\n <span className=\"cbx\" aria-hidden=\"true\">\n <input type=\"checkbox\" className=\"cbx__input\" tabIndex={-1} checked={checked} readOnly />\n <span className=\"cbx__box\">\n <svg className=\"cbx__mark\" viewBox=\"0 0 16 16\" fill=\"none\">\n <path className=\"cbx__tick\" d=\"M3.5 8.5 L6.75 11.5 L12.5 4.75\" />\n </svg>\n <span className=\"cbx__dash\"></span>\n </span>\n </span>\n );\n}\n\nexport function MultiSelect({\n options = [],\n value: controlledValue,\n defaultValue = [],\n onChange,\n placeholder = 'Select options',\n size = 'default',\n disabled = false,\n invalid = false,\n loading = false,\n searchable = false,\n searchPlaceholder = 'Filter options',\n leadingIcon = null,\n id,\n ariaLabel,\n}: MultiSelectProps) {\n const { useState, useRef, useEffect, useId } = React;\n const [value, setValue] = useMsControllable<string[]>(\n controlledValue,\n defaultValue,\n onChange as ((next: string[], opt?: SelectOption) => void) | undefined,\n );\n const [open, setOpen] = useState(false);\n const [query, setQuery] = useState('');\n\n const triggerRef = useRef<HTMLButtonElement>(null),\n listRef = useRef<HTMLDivElement>(null),\n searchRef = useRef<HTMLInputElement>(null);\n const baseId = id || 'mselect-' + useId();\n const menuId = baseId + '-menu';\n const listId = baseId + '-list';\n\n const { groups, flat } = msNormalize(options);\n const values = Array.isArray(value) ? value : [];\n const isSelected = (v: string) => values.indexOf(v) !== -1;\n const selectedOptions = flat.filter((o) => isSelected(o.value));\n const navItems: SelectOption[] = [];\n groups.forEach((g) =>\n g.options.forEach((o) => {\n if (msMatches(o, query)) navItems.push(o);\n }),\n );\n\n const show = () => {\n if (!disabled && !loading) setOpen(true);\n };\n const hide = () => setOpen(false);\n const returnFocus = () => triggerRef.current && triggerRef.current.focus();\n\n function commit(opt: SelectOption) {\n if (!opt || opt.disabled) return;\n const next = isSelected(opt.value)\n ? values.filter((v) => v !== opt.value)\n : [...values, opt.value];\n setValue(next, opt);\n }\n\n useEffect(() => {\n if (!open) setQuery('');\n }, [open]);\n\n const { activeIdx, setActiveIdx, onMenuKeyDown } = useMsMenu({\n open,\n close: hide,\n returnFocus,\n triggerRef,\n listRef,\n searchRef,\n menuId,\n navItems,\n isSelected,\n commit,\n searchable,\n });\n\n const isPlaceholder = !loading && selectedOptions.length === 0;\n const adId = open && activeIdx >= 0 ? baseId + '-opt-' + activeIdx : undefined;\n let vIdx = -1;\n\n return (\n <div\n className=\"select\"\n data-multiple=\"true\"\n data-size={size === 'default' ? undefined : size}\n data-open={open ? 'true' : undefined}\n data-disabled={disabled ? 'true' : undefined}\n data-invalid={invalid ? 'true' : undefined}\n data-loading={loading ? 'true' : undefined}\n >\n <MsTrigger\n triggerRef={triggerRef}\n baseId={baseId}\n open={open}\n disabled={disabled}\n invalid={invalid}\n ariaLabel={ariaLabel}\n adId={adId}\n show={show}\n hide={hide}\n leading={leadingIcon || (selectedOptions.length === 1 && selectedOptions[0].icon) || null}\n text={loading ? 'Loading...' : isPlaceholder ? placeholder : selectedOptions[0].label}\n isPlaceholder={isPlaceholder}\n count={selectedOptions.length - 1}\n />\n\n <MsMenu open={open} menuId={menuId}>\n {searchable && !loading && (\n <MsSearchField\n searchRef={searchRef}\n query={query}\n onQuery={setQuery}\n onKeyDown={onMenuKeyDown}\n placeholder={searchPlaceholder}\n listId={listId}\n adId={adId}\n />\n )}\n\n <div\n className=\"select__list\"\n ref={listRef}\n id={listId}\n role=\"listbox\"\n aria-multiselectable=\"true\"\n tabIndex={-1}\n aria-label={ariaLabel}\n onKeyDown={searchable ? undefined : onMenuKeyDown}\n >\n {loading ? (\n <MsLoadingRows />\n ) : (\n <React.Fragment>\n {groups.map((g, gi) => (\n <div\n className=\"select__group\"\n role=\"group\"\n aria-label={g.label || undefined}\n key={gi}\n >\n {g.label && g.options.some((o) => msMatches(o, query)) && (\n <div className=\"select__group-label\">{g.label}</div>\n )}\n {g.options.map((opt) => {\n const visible = msMatches(opt, query);\n const i = visible ? ((vIdx += 1), vIdx) : -1;\n const isSel = isSelected(opt.value);\n const row = (\n <div\n key={opt.value}\n id={visible ? baseId + '-opt-' + i : undefined}\n data-idx={visible ? i : undefined}\n className=\"select__option\"\n role=\"option\"\n aria-selected={isSel}\n aria-hidden={!visible || undefined}\n aria-disabled={opt.disabled || undefined}\n data-selected={isSel ? 'true' : undefined}\n data-active={visible && i === activeIdx ? 'true' : undefined}\n data-disabled={opt.disabled ? 'true' : undefined}\n onMouseEnter={() => visible && !opt.disabled && setActiveIdx(i)}\n onMouseDown={(e) => e.preventDefault() /* keep focus on list */}\n onClick={() => visible && commit(opt)}\n >\n {opt.icon && (\n <span className=\"select__option-icon\">\n <IconSlot size=\"sm\">{opt.icon}</IconSlot>\n </span>\n )}\n <span className=\"select__option-text\">\n <span className=\"select__option-label\">{opt.label}</span>\n {opt.description && (\n <span className=\"select__option-desc\">{opt.description}</span>\n )}\n </span>\n <span className=\"select__option-check\">\n <CheckboxTick checked={isSel} />\n </span>\n </div>\n );\n return searchable ? (\n <MsFilterRow key={opt.value} visible={visible}>\n {row}\n </MsFilterRow>\n ) : (\n row\n );\n })}\n </div>\n ))}\n {navItems.length === 0 && <MsEmptyRow query={query} />}\n </React.Fragment>\n )}\n </div>\n </MsMenu>\n </div>\n );\n}\n"]}
@@ -0,0 +1,11 @@
1
+ 'use client';import { jsx } from 'react/jsx-runtime';
2
+
3
+ // src/components/icon/IconSlot.tsx
4
+ function IconSlot({ size = "md", children }) {
5
+ if (!children) return null;
6
+ return /* @__PURE__ */ jsx("span", { className: `icon-slot icon-slot--${size}`, children });
7
+ }
8
+
9
+ export { IconSlot };
10
+ //# sourceMappingURL=chunk-VVPGEAC6.js.map
11
+ //# sourceMappingURL=chunk-VVPGEAC6.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/icon/IconSlot.tsx"],"names":[],"mappings":";;;AAOO,SAAS,QAAA,CAAS,EAAE,IAAA,GAAO,IAAA,EAAM,UAAS,EAA8C;AAC7F,EAAA,IAAI,CAAC,UAAU,OAAO,IAAA;AACtB,EAAA,2BAAQ,MAAA,EAAA,EAAK,SAAA,EAAW,CAAA,qBAAA,EAAwB,IAAI,IAAK,QAAA,EAAS,CAAA;AACpE","file":"chunk-VVPGEAC6.js","sourcesContent":["'use client';\n\n// IconSlot - sizes a consumer-supplied icon node to the --icon-* tokens and currentColor.\n\nimport type { ReactNode } from 'react';\nimport type { IconSize } from './Icon';\n\nexport function IconSlot({ size = 'md', children }: { size?: IconSize; children?: ReactNode }) {\n if (!children) return null;\n return <span className={`icon-slot icon-slot--${size}`}>{children}</span>;\n}\n"]}
@@ -0,0 +1,58 @@
1
+ 'use client';import * as React from 'react';
2
+ import { jsxs, jsx } from 'react/jsx-runtime';
3
+
4
+ // src/components/checkbox/Checkbox.tsx
5
+ function Checkbox({
6
+ checked,
7
+ defaultChecked,
8
+ indeterminate = false,
9
+ invalid = false,
10
+ disabled = false,
11
+ size = "md",
12
+ label,
13
+ description,
14
+ className = "",
15
+ onChange,
16
+ ...rest
17
+ }) {
18
+ const ref = React.useRef(null);
19
+ React.useEffect(() => {
20
+ if (ref.current) ref.current.indeterminate = indeterminate;
21
+ }, [indeterminate, checked]);
22
+ const classes = [
23
+ "cbx",
24
+ size === "sm" ? "cbx--sm" : "",
25
+ invalid ? "cbx--invalid" : "",
26
+ disabled ? "cbx--disabled" : "",
27
+ className
28
+ ].filter(Boolean).join(" ");
29
+ const controlled = checked !== void 0;
30
+ const checkedProps = controlled ? { checked } : { defaultChecked };
31
+ return /* @__PURE__ */ jsxs("label", { className: classes, children: [
32
+ /* @__PURE__ */ jsx(
33
+ "input",
34
+ {
35
+ ref,
36
+ type: "checkbox",
37
+ className: "cbx__input",
38
+ disabled,
39
+ "aria-invalid": invalid || void 0,
40
+ onChange,
41
+ ...checkedProps,
42
+ ...rest
43
+ }
44
+ ),
45
+ /* @__PURE__ */ jsxs("span", { className: "cbx__box", "aria-hidden": "true", children: [
46
+ /* @__PURE__ */ jsx("svg", { className: "cbx__mark", viewBox: "0 0 16 16", fill: "none", children: /* @__PURE__ */ jsx("path", { className: "cbx__tick", d: "M3.5 8.5 L6.75 11.5 L12.5 4.75" }) }),
47
+ /* @__PURE__ */ jsx("span", { className: "cbx__dash" })
48
+ ] }),
49
+ label || description ? /* @__PURE__ */ jsxs("span", { className: "cbx__text", children: [
50
+ label ? /* @__PURE__ */ jsx("span", { className: "cbx__label", children: label }) : null,
51
+ description ? /* @__PURE__ */ jsx("span", { className: "cbx__desc", children: description }) : null
52
+ ] }) : null
53
+ ] });
54
+ }
55
+
56
+ export { Checkbox };
57
+ //# sourceMappingURL=chunk-XA3T5KWA.js.map
58
+ //# sourceMappingURL=chunk-XA3T5KWA.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/checkbox/Checkbox.tsx"],"names":[],"mappings":";;;;AA8BO,SAAS,QAAA,CAAS;AAAA,EACvB,OAAA;AAAA,EACA,cAAA;AAAA,EACA,aAAA,GAAgB,KAAA;AAAA,EAChB,OAAA,GAAU,KAAA;AAAA,EACV,QAAA,GAAW,KAAA;AAAA,EACX,IAAA,GAAO,IAAA;AAAA,EACP,KAAA;AAAA,EACA,WAAA;AAAA,EACA,SAAA,GAAY,EAAA;AAAA,EACZ,QAAA;AAAA,EACA,GAAG;AACL,CAAA,EAAkB;AAChB,EAAA,MAAM,GAAA,GAAY,aAAyB,IAAI,CAAA;AAG/C,EAAM,gBAAU,MAAM;AACpB,IAAA,IAAI,GAAA,CAAI,OAAA,EAAS,GAAA,CAAI,OAAA,CAAQ,aAAA,GAAgB,aAAA;AAAA,EAC/C,CAAA,EAAG,CAAC,aAAA,EAAe,OAAO,CAAC,CAAA;AAE3B,EAAA,MAAM,OAAA,GAAU;AAAA,IACd,KAAA;AAAA,IACA,IAAA,KAAS,OAAO,SAAA,GAAY,EAAA;AAAA,IAC5B,UAAU,cAAA,GAAiB,EAAA;AAAA,IAC3B,WAAW,eAAA,GAAkB,EAAA;AAAA,IAC7B;AAAA,GACF,CACG,MAAA,CAAO,OAAO,CAAA,CACd,KAAK,GAAG,CAAA;AAEX,EAAA,MAAM,aAAa,OAAA,KAAY,MAAA;AAC/B,EAAA,MAAM,eAAe,UAAA,GAAa,EAAE,OAAA,EAAQ,GAAI,EAAE,cAAA,EAAe;AAEjE,EAAA,uBACE,IAAA,CAAC,OAAA,EAAA,EAAM,SAAA,EAAW,OAAA,EAChB,QAAA,EAAA;AAAA,oBAAA,GAAA;AAAA,MAAC,OAAA;AAAA,MAAA;AAAA,QACC,GAAA;AAAA,QACA,IAAA,EAAK,UAAA;AAAA,QACL,SAAA,EAAU,YAAA;AAAA,QACV,QAAA;AAAA,QACA,gBAAc,OAAA,IAAW,MAAA;AAAA,QACzB,QAAA;AAAA,QACC,GAAG,YAAA;AAAA,QACH,GAAG;AAAA;AAAA,KACN;AAAA,oBACA,IAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,UAAA,EAAW,eAAY,MAAA,EACrC,QAAA,EAAA;AAAA,sBAAA,GAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,WAAA,EAAY,OAAA,EAAQ,WAAA,EAAY,IAAA,EAAK,MAAA,EAClD,QAAA,kBAAA,GAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,WAAA,EAAY,CAAA,EAAE,kCAAiC,CAAA,EACjE,CAAA;AAAA,sBACA,GAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,WAAA,EAAY;AAAA,KAAA,EAC9B,CAAA;AAAA,IACC,KAAA,IAAS,WAAA,mBACR,IAAA,CAAC,MAAA,EAAA,EAAK,WAAU,WAAA,EACb,QAAA,EAAA;AAAA,MAAA,KAAA,mBAAQ,GAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,YAAA,EAAc,iBAAM,CAAA,GAAU,IAAA;AAAA,MACtD,8BAAc,GAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,WAAA,EAAa,uBAAY,CAAA,GAAU;AAAA,KAAA,EACpE,CAAA,GACE;AAAA,GAAA,EACN,CAAA;AAEJ","file":"chunk-XA3T5KWA.js","sourcesContent":["'use client';\n\n// Checkbox - checkbox primitive; on/off + indeterminate select-all.\n\nimport * as React from 'react';\n\nexport interface CheckboxProps extends Omit<\n React.InputHTMLAttributes<HTMLInputElement>,\n 'size' | 'type'\n> {\n /** Controlled checked state. Omit for uncontrolled (use `defaultChecked`). */\n checked?: boolean;\n /** Uncontrolled initial state. */\n defaultChecked?: boolean;\n /** Indeterminate - the \"some, not all\" select-all state; visually wins over `checked`. @default false */\n indeterminate?: boolean;\n /** Single error state for consent gates (\"you must agree\"); also sets `aria-invalid`. @default false */\n invalid?: boolean;\n /** Disabled - inert and de-emphasized (distinct fill when checked). */\n disabled?: boolean;\n /** Box size: `md` 18px - `sm` 16px for dense table rows. @default 'md' */\n size?: 'sm' | 'md';\n /** Label text beside the box. */\n label?: React.ReactNode;\n /** Optional secondary line under the label (settings rows). */\n description?: React.ReactNode;\n /** Fires on toggle - read `e.target.checked`. */\n onChange?: React.ChangeEventHandler<HTMLInputElement>;\n}\n\nexport function Checkbox({\n checked,\n defaultChecked,\n indeterminate = false,\n invalid = false,\n disabled = false,\n size = 'md',\n label,\n description,\n className = '',\n onChange,\n ...rest\n}: CheckboxProps) {\n const ref = React.useRef<HTMLInputElement>(null);\n\n // `indeterminate` is not an HTML attribute - push it onto the node directly.\n React.useEffect(() => {\n if (ref.current) ref.current.indeterminate = indeterminate;\n }, [indeterminate, checked]);\n\n const classes = [\n 'cbx',\n size === 'sm' ? 'cbx--sm' : '',\n invalid ? 'cbx--invalid' : '',\n disabled ? 'cbx--disabled' : '',\n className,\n ]\n .filter(Boolean)\n .join(' ');\n\n const controlled = checked !== undefined;\n const checkedProps = controlled ? { checked } : { defaultChecked };\n\n return (\n <label className={classes}>\n <input\n ref={ref}\n type=\"checkbox\"\n className=\"cbx__input\"\n disabled={disabled}\n aria-invalid={invalid || undefined}\n onChange={onChange}\n {...checkedProps}\n {...rest}\n />\n <span className=\"cbx__box\" aria-hidden=\"true\">\n <svg className=\"cbx__mark\" viewBox=\"0 0 16 16\" fill=\"none\">\n <path className=\"cbx__tick\" d=\"M3.5 8.5 L6.75 11.5 L12.5 4.75\" />\n </svg>\n <span className=\"cbx__dash\" />\n </span>\n {label || description ? (\n <span className=\"cbx__text\">\n {label ? <span className=\"cbx__label\">{label}</span> : null}\n {description ? <span className=\"cbx__desc\">{description}</span> : null}\n </span>\n ) : null}\n </label>\n );\n}\n"]}
@@ -0,0 +1,19 @@
1
+ 'use client';import { jsx } from 'react/jsx-runtime';
2
+
3
+ // src/components/motion/Collapse.tsx
4
+ function Collapse({
5
+ open = false,
6
+ axis = "height",
7
+ fade = false,
8
+ className = "",
9
+ innerClassName = "",
10
+ children,
11
+ ...rest
12
+ }) {
13
+ const classes = ["collapse", fade ? "collapse--fade" : "", className].filter(Boolean).join(" ");
14
+ return /* @__PURE__ */ jsx("div", { className: classes, "data-open": open ? "true" : "false", "data-axis": axis, ...rest, children: /* @__PURE__ */ jsx("div", { className: "collapse__inner " + innerClassName, children }) });
15
+ }
16
+
17
+ export { Collapse };
18
+ //# sourceMappingURL=chunk-YSHJHSJM.js.map
19
+ //# sourceMappingURL=chunk-YSHJHSJM.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/motion/Collapse.tsx"],"names":[],"mappings":";;;AAiBO,SAAS,QAAA,CAAS;AAAA,EACvB,IAAA,GAAO,KAAA;AAAA,EACP,IAAA,GAAO,QAAA;AAAA,EACP,IAAA,GAAO,KAAA;AAAA,EACP,SAAA,GAAY,EAAA;AAAA,EACZ,cAAA,GAAiB,EAAA;AAAA,EACjB,QAAA;AAAA,EACA,GAAG;AACL,CAAA,EAAkB;AAChB,EAAA,MAAM,OAAA,GAAU,CAAC,UAAA,EAAY,IAAA,GAAO,gBAAA,GAAmB,EAAA,EAAI,SAAS,CAAA,CAAE,MAAA,CAAO,OAAO,CAAA,CAAE,IAAA,CAAK,GAAG,CAAA;AAC9F,EAAA,2BACG,KAAA,EAAA,EAAI,SAAA,EAAW,SAAS,WAAA,EAAW,IAAA,GAAO,SAAS,OAAA,EAAS,WAAA,EAAW,IAAA,EAAO,GAAG,MAChF,QAAA,kBAAA,GAAA,CAAC,KAAA,EAAA,EAAI,WAAW,kBAAA,GAAqB,cAAA,EAAiB,UAAS,CAAA,EACjE,CAAA;AAEJ","file":"chunk-YSHJHSJM.js","sourcesContent":["'use client';\n\n// Collapse - open/closed layout transition via grid-fr; toggles data-attrs, styling in collapse.css.\n\nimport type { HTMLAttributes } from 'react';\n\nexport interface CollapseProps extends HTMLAttributes<HTMLDivElement> {\n /** Open/closed state. */\n open?: boolean;\n /** Axis to animate. @default 'height' */\n axis?: 'height' | 'width';\n /** Also cross-fade contents while resizing. */\n fade?: boolean;\n /** Class applied to the inner measured wrapper. */\n innerClassName?: string;\n}\n\nexport function Collapse({\n open = false,\n axis = 'height',\n fade = false,\n className = '',\n innerClassName = '',\n children,\n ...rest\n}: CollapseProps) {\n const classes = ['collapse', fade ? 'collapse--fade' : '', className].filter(Boolean).join(' ');\n return (\n <div className={classes} data-open={open ? 'true' : 'false'} data-axis={axis} {...rest}>\n <div className={'collapse__inner ' + innerClassName}>{children}</div>\n </div>\n );\n}\n"]}
@@ -0,0 +1,182 @@
1
+ 'use client';import { useControllable, normalize, matches, useSelectMenu, SelectTrigger, SelectMenu, SearchField, LoadingRows, FilterRow, EmptyRow } from './chunk-G6OY35DI.js';
2
+ import { IconSlot } from './chunk-VVPGEAC6.js';
3
+ import { Icon } from './chunk-KBWNUUWM.js';
4
+ import * as React from 'react';
5
+ import { jsxs, jsx } from 'react/jsx-runtime';
6
+
7
+ function Select({
8
+ options = [],
9
+ value: controlledValue,
10
+ defaultValue = null,
11
+ onChange,
12
+ placeholder = "Select an option",
13
+ size = "default",
14
+ disabled = false,
15
+ invalid = false,
16
+ loading = false,
17
+ searchable = false,
18
+ searchPlaceholder = "Filter options",
19
+ leadingIcon = null,
20
+ id,
21
+ ariaLabel
22
+ }) {
23
+ const { useState, useRef, useEffect, useId } = React;
24
+ const [value, setValue] = useControllable(
25
+ controlledValue,
26
+ defaultValue,
27
+ onChange
28
+ );
29
+ const [open, setOpen] = useState(false);
30
+ const [query, setQuery] = useState("");
31
+ const triggerRef = useRef(null), listRef = useRef(null), searchRef = useRef(null);
32
+ const baseId = id || "select-" + useId();
33
+ const menuId = baseId + "-menu";
34
+ const listId = baseId + "-list";
35
+ const { groups, flat } = normalize(options);
36
+ const selected = flat.find((o) => o.value === value) || null;
37
+ const isSelected = (v) => v === value && value != null;
38
+ const navItems = [];
39
+ groups.forEach(
40
+ (g) => g.options.forEach((o) => {
41
+ if (matches(o, query)) navItems.push(o);
42
+ })
43
+ );
44
+ const show = () => {
45
+ if (!disabled && !loading) setOpen(true);
46
+ };
47
+ const hide = () => setOpen(false);
48
+ const returnFocus = () => triggerRef.current && triggerRef.current.focus();
49
+ function commit(opt) {
50
+ if (!opt || opt.disabled) return;
51
+ setValue(opt.value, opt);
52
+ hide();
53
+ returnFocus();
54
+ }
55
+ useEffect(() => {
56
+ if (!open) setQuery("");
57
+ }, [open]);
58
+ const { activeIdx, setActiveIdx, onMenuKeyDown } = useSelectMenu({
59
+ open,
60
+ close: hide,
61
+ returnFocus,
62
+ triggerRef,
63
+ listRef,
64
+ searchRef,
65
+ menuId,
66
+ navItems,
67
+ isSelected,
68
+ commit,
69
+ searchable
70
+ });
71
+ const isPlaceholder = !loading && !selected;
72
+ const adId = open && activeIdx >= 0 ? baseId + "-opt-" + activeIdx : void 0;
73
+ let vIdx = -1;
74
+ return /* @__PURE__ */ jsxs(
75
+ "div",
76
+ {
77
+ className: "select",
78
+ "data-size": size === "default" ? void 0 : size,
79
+ "data-open": open ? "true" : void 0,
80
+ "data-disabled": disabled ? "true" : void 0,
81
+ "data-invalid": invalid ? "true" : void 0,
82
+ "data-loading": loading ? "true" : void 0,
83
+ children: [
84
+ /* @__PURE__ */ jsx(
85
+ SelectTrigger,
86
+ {
87
+ triggerRef,
88
+ baseId,
89
+ open,
90
+ disabled,
91
+ invalid,
92
+ ariaLabel,
93
+ adId,
94
+ show,
95
+ hide,
96
+ leading: leadingIcon || selected && selected.icon || null,
97
+ text: loading ? "Loading..." : isPlaceholder ? placeholder : selected.label,
98
+ isPlaceholder
99
+ }
100
+ ),
101
+ /* @__PURE__ */ jsxs(SelectMenu, { open, menuId, children: [
102
+ searchable && !loading && /* @__PURE__ */ jsx(
103
+ SearchField,
104
+ {
105
+ searchRef,
106
+ query,
107
+ onQuery: setQuery,
108
+ onKeyDown: onMenuKeyDown,
109
+ placeholder: searchPlaceholder,
110
+ listId,
111
+ adId
112
+ }
113
+ ),
114
+ /* @__PURE__ */ jsx(
115
+ "div",
116
+ {
117
+ className: "select__list",
118
+ ref: listRef,
119
+ id: listId,
120
+ role: "listbox",
121
+ tabIndex: -1,
122
+ "aria-label": ariaLabel,
123
+ onKeyDown: searchable ? void 0 : onMenuKeyDown,
124
+ children: loading ? /* @__PURE__ */ jsx(LoadingRows, {}) : /* @__PURE__ */ jsxs(React.Fragment, { children: [
125
+ groups.map((g, gi) => /* @__PURE__ */ jsxs(
126
+ "div",
127
+ {
128
+ className: "select__group",
129
+ role: "group",
130
+ "aria-label": g.label || void 0,
131
+ children: [
132
+ g.label && g.options.some((o) => matches(o, query)) && /* @__PURE__ */ jsx("div", { className: "select__group-label", children: g.label }),
133
+ g.options.map((opt) => {
134
+ const visible = matches(opt, query);
135
+ const i = visible ? (vIdx += 1, vIdx) : -1;
136
+ const isSel = isSelected(opt.value);
137
+ const row = /* @__PURE__ */ jsxs(
138
+ "div",
139
+ {
140
+ id: visible ? baseId + "-opt-" + i : void 0,
141
+ "data-idx": visible ? i : void 0,
142
+ className: "select__option",
143
+ role: "option",
144
+ "aria-selected": isSel,
145
+ "aria-hidden": !visible || void 0,
146
+ "aria-disabled": opt.disabled || void 0,
147
+ "data-selected": isSel ? "true" : void 0,
148
+ "data-active": visible && i === activeIdx ? "true" : void 0,
149
+ "data-disabled": opt.disabled ? "true" : void 0,
150
+ onMouseEnter: () => visible && !opt.disabled && setActiveIdx(i),
151
+ onMouseDown: (e) => e.preventDefault(),
152
+ onClick: () => visible && commit(opt),
153
+ children: [
154
+ opt.icon && /* @__PURE__ */ jsx("span", { className: "select__option-icon", children: /* @__PURE__ */ jsx(IconSlot, { size: "sm", children: opt.icon }) }),
155
+ /* @__PURE__ */ jsxs("span", { className: "select__option-text", children: [
156
+ /* @__PURE__ */ jsx("span", { className: "select__option-label", children: opt.label }),
157
+ opt.description && /* @__PURE__ */ jsx("span", { className: "select__option-desc", children: opt.description })
158
+ ] }),
159
+ /* @__PURE__ */ jsx("span", { className: "select__option-check", children: isSel && /* @__PURE__ */ jsx(Icon, { name: "check", size: "sm", weight: "bold" }, "on") })
160
+ ]
161
+ },
162
+ opt.value
163
+ );
164
+ return searchable ? /* @__PURE__ */ jsx(FilterRow, { visible, children: row }, opt.value) : row;
165
+ })
166
+ ]
167
+ },
168
+ gi
169
+ )),
170
+ navItems.length === 0 && /* @__PURE__ */ jsx(EmptyRow, { query })
171
+ ] })
172
+ }
173
+ )
174
+ ] })
175
+ ]
176
+ }
177
+ );
178
+ }
179
+
180
+ export { Select };
181
+ //# sourceMappingURL=chunk-YVHOAVSM.js.map
182
+ //# sourceMappingURL=chunk-YVHOAVSM.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/select/Select.tsx"],"names":[],"mappings":"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","file":"chunk-YVHOAVSM.js","sourcesContent":["'use client';\n\n/* Select - single-select custom listbox; committing closes the menu and returns focus. */\nimport * as React from 'react';\nimport {\n useControllable,\n normalize,\n matches,\n useSelectMenu,\n SelectTrigger,\n SelectMenu,\n SearchField,\n FilterRow,\n EmptyRow,\n LoadingRows,\n type SelectOption,\n type SelectGroup,\n} from './select-core';\nimport { Icon } from '../icon/Icon';\nimport { IconSlot } from '../icon/IconSlot';\n\nexport interface SelectProps {\n options: SelectOption[] | SelectGroup[];\n /** Controlled value. */\n value?: string | null;\n defaultValue?: string | null;\n onChange?: (value: string, option: SelectOption) => void;\n placeholder?: string;\n size?: 'sm' | 'default' | 'lg';\n disabled?: boolean;\n /** Danger ring + border. */\n invalid?: boolean;\n /** Skeleton rows in the menu; trigger reads \"Loading...\". */\n loading?: boolean;\n /** Type-to-filter field pinned above the list. */\n searchable?: boolean;\n searchPlaceholder?: string;\n /** Your own icon node pinned before the trigger label; else the selected option's icon. */\n leadingIcon?: React.ReactNode;\n id?: string;\n ariaLabel?: string;\n}\n\nexport function Select({\n options = [],\n value: controlledValue,\n defaultValue = null,\n onChange,\n placeholder = 'Select an option',\n size = 'default',\n disabled = false,\n invalid = false,\n loading = false,\n searchable = false,\n searchPlaceholder = 'Filter options',\n leadingIcon = null,\n id,\n ariaLabel,\n}: SelectProps) {\n const { useState, useRef, useEffect, useId } = React;\n const [value, setValue] = useControllable<string | null>(\n controlledValue,\n defaultValue,\n onChange as ((next: string | null, opt?: SelectOption) => void) | undefined,\n );\n const [open, setOpen] = useState(false);\n const [query, setQuery] = useState('');\n\n const triggerRef = useRef<HTMLButtonElement>(null),\n listRef = useRef<HTMLDivElement>(null),\n searchRef = useRef<HTMLInputElement>(null);\n const baseId = id || 'select-' + useId();\n const menuId = baseId + '-menu';\n const listId = baseId + '-list';\n\n const { groups, flat } = normalize(options);\n const selected = flat.find((o) => o.value === value) || null;\n const isSelected = (v: string) => v === value && value != null;\n const navItems: SelectOption[] = [];\n groups.forEach((g) =>\n g.options.forEach((o) => {\n if (matches(o, query)) navItems.push(o);\n }),\n );\n\n const show = () => {\n if (!disabled && !loading) setOpen(true);\n };\n const hide = () => setOpen(false);\n const returnFocus = () => triggerRef.current && triggerRef.current.focus();\n\n function commit(opt: SelectOption) {\n if (!opt || opt.disabled) return;\n setValue(opt.value, opt);\n hide();\n returnFocus();\n }\n\n useEffect(() => {\n if (!open) setQuery('');\n }, [open]);\n\n const { activeIdx, setActiveIdx, onMenuKeyDown } = useSelectMenu({\n open,\n close: hide,\n returnFocus,\n triggerRef,\n listRef,\n searchRef,\n menuId,\n navItems,\n isSelected,\n commit,\n searchable,\n });\n\n const isPlaceholder = !loading && !selected;\n const adId = open && activeIdx >= 0 ? baseId + '-opt-' + activeIdx : undefined;\n let vIdx = -1;\n\n return (\n <div\n className=\"select\"\n data-size={size === 'default' ? undefined : size}\n data-open={open ? 'true' : undefined}\n data-disabled={disabled ? 'true' : undefined}\n data-invalid={invalid ? 'true' : undefined}\n data-loading={loading ? 'true' : undefined}\n >\n <SelectTrigger\n triggerRef={triggerRef}\n baseId={baseId}\n open={open}\n disabled={disabled}\n invalid={invalid}\n ariaLabel={ariaLabel}\n adId={adId}\n show={show}\n hide={hide}\n leading={leadingIcon || (selected && selected.icon) || null}\n text={loading ? 'Loading...' : isPlaceholder ? placeholder : selected.label}\n isPlaceholder={isPlaceholder}\n />\n\n <SelectMenu open={open} menuId={menuId}>\n {searchable && !loading && (\n <SearchField\n searchRef={searchRef}\n query={query}\n onQuery={setQuery}\n onKeyDown={onMenuKeyDown}\n placeholder={searchPlaceholder}\n listId={listId}\n adId={adId}\n />\n )}\n\n <div\n className=\"select__list\"\n ref={listRef}\n id={listId}\n role=\"listbox\"\n tabIndex={-1}\n aria-label={ariaLabel}\n onKeyDown={searchable ? undefined : onMenuKeyDown}\n >\n {loading ? (\n <LoadingRows />\n ) : (\n <React.Fragment>\n {groups.map((g, gi) => (\n <div\n className=\"select__group\"\n role=\"group\"\n aria-label={g.label || undefined}\n key={gi}\n >\n {g.label && g.options.some((o) => matches(o, query)) && (\n <div className=\"select__group-label\">{g.label}</div>\n )}\n {g.options.map((opt) => {\n const visible = matches(opt, query);\n const i = visible ? ((vIdx += 1), vIdx) : -1;\n const isSel = isSelected(opt.value);\n const row = (\n <div\n key={opt.value}\n id={visible ? baseId + '-opt-' + i : undefined}\n data-idx={visible ? i : undefined}\n className=\"select__option\"\n role=\"option\"\n aria-selected={isSel}\n aria-hidden={!visible || undefined}\n aria-disabled={opt.disabled || undefined}\n data-selected={isSel ? 'true' : undefined}\n data-active={visible && i === activeIdx ? 'true' : undefined}\n data-disabled={opt.disabled ? 'true' : undefined}\n onMouseEnter={() => visible && !opt.disabled && setActiveIdx(i)}\n onMouseDown={(e) => e.preventDefault() /* keep focus on list */}\n onClick={() => visible && commit(opt)}\n >\n {opt.icon && (\n <span className=\"select__option-icon\">\n <IconSlot size=\"sm\">{opt.icon}</IconSlot>\n </span>\n )}\n <span className=\"select__option-text\">\n <span className=\"select__option-label\">{opt.label}</span>\n {opt.description && (\n <span className=\"select__option-desc\">{opt.description}</span>\n )}\n </span>\n <span className=\"select__option-check\">\n {isSel && <Icon key=\"on\" name=\"check\" size=\"sm\" weight=\"bold\" />}\n </span>\n </div>\n );\n return searchable ? (\n <FilterRow key={opt.value} visible={visible}>\n {row}\n </FilterRow>\n ) : (\n row\n );\n })}\n </div>\n ))}\n {navItems.length === 0 && <EmptyRow query={query} />}\n </React.Fragment>\n )}\n </div>\n </SelectMenu>\n </div>\n );\n}\n"]}
@@ -0,0 +1,16 @@
1
+ import * as React from 'react';
2
+ import { HTMLAttributes } from 'react';
3
+
4
+ interface CollapseProps extends HTMLAttributes<HTMLDivElement> {
5
+ /** Open/closed state. */
6
+ open?: boolean;
7
+ /** Axis to animate. @default 'height' */
8
+ axis?: 'height' | 'width';
9
+ /** Also cross-fade contents while resizing. */
10
+ fade?: boolean;
11
+ /** Class applied to the inner measured wrapper. */
12
+ innerClassName?: string;
13
+ }
14
+ declare function Collapse({ open, axis, fade, className, innerClassName, children, ...rest }: CollapseProps): React.JSX.Element;
15
+
16
+ export { Collapse, type CollapseProps };
@@ -0,0 +1,3 @@
1
+ 'use client';export { Collapse } from './chunk-YSHJHSJM.js';
2
+ //# sourceMappingURL=collapse.js.map
3
+ //# sourceMappingURL=collapse.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"names":[],"mappings":"","file":"collapse.js"}
@@ -0,0 +1,11 @@
1
+ import * as React from 'react';
2
+ import { BadgeProps } from './badge.js';
3
+
4
+ interface CountBadgeProps extends Omit<BadgeProps, 'children'> {
5
+ value: string | number;
6
+ /** Odometer: digits roll vertically on change. */
7
+ roll?: boolean;
8
+ }
9
+ declare function CountBadge({ value, tone, roll, ...rest }: CountBadgeProps): React.JSX.Element;
10
+
11
+ export { CountBadge, type CountBadgeProps };
@@ -0,0 +1,4 @@
1
+ 'use client';export { CountBadge } from './chunk-MEF7PI6U.js';
2
+ import './chunk-2OWHZ4JT.js';
3
+ //# sourceMappingURL=count-badge.js.map
4
+ //# sourceMappingURL=count-badge.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"names":[],"mappings":"","file":"count-badge.js"}
@@ -0,0 +1,39 @@
1
+ import * as React from 'react';
2
+ import { ReactNode } from 'react';
3
+
4
+ interface DtpPanelProps {
5
+ val: string | null;
6
+ commit: (key: string) => void;
7
+ min?: string;
8
+ max?: string;
9
+ timezone?: string;
10
+ label?: string;
11
+ close: () => void;
12
+ slot?: ReactNode;
13
+ }
14
+ declare function DtpPanel({ val, commit, min, max, timezone, label, close, slot }: DtpPanelProps): React.JSX.Element;
15
+ interface DateFieldProps {
16
+ /** Controlled value, 'YYYY-MM-DD'. */
17
+ value?: string | null;
18
+ defaultValue?: string | null;
19
+ onChange?: (value: string) => void;
20
+ label?: string;
21
+ placeholder?: string;
22
+ /** IANA timezone name (e.g. 'Europe/Riga') - display context only, shown with its GMT offset in the footer. */
23
+ timezone?: string;
24
+ /** Earliest pickable date, 'YYYY-MM-DD', inclusive. */
25
+ min?: string;
26
+ /** Latest pickable date, 'YYYY-MM-DD', inclusive. */
27
+ max?: string;
28
+ /** Asterisk on the label. */
29
+ required?: boolean;
30
+ /** Danger border + message color (.fld is-error). */
31
+ invalid?: boolean;
32
+ /** Helper / error text under the field. */
33
+ message?: string;
34
+ disabled?: boolean;
35
+ className?: string;
36
+ }
37
+ declare function DateField({ value, defaultValue, onChange, label, placeholder, timezone, min, max, required, invalid, message, disabled, className, }: DateFieldProps): React.JSX.Element;
38
+
39
+ export { DateField, type DateFieldProps, DtpPanel, type DtpPanelProps };
@@ -0,0 +1,8 @@
1
+ 'use client';export { DateField, DtpPanel } from './chunk-CV2Q4YXX.js';
2
+ import './chunk-UIQGSTBJ.js';
3
+ import './chunk-QNC6O3PG.js';
4
+ import './chunk-QFS52OK5.js';
5
+ import './chunk-KBWNUUWM.js';
6
+ import './chunk-37O2ZXD6.js';
7
+ //# sourceMappingURL=date-field.js.map
8
+ //# sourceMappingURL=date-field.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"names":[],"mappings":"","file":"date-field.js"}
@@ -0,0 +1,30 @@
1
+ import * as React from 'react';
2
+
3
+ /** A date range as wall-clock 'YYYY-MM-DD' endpoints, inclusive. */
4
+ interface DateRange {
5
+ start: string;
6
+ end: string;
7
+ }
8
+ interface DateRangeFieldProps {
9
+ /** Controlled value - both endpoints, or null when empty. */
10
+ value?: DateRange | null;
11
+ defaultValue?: DateRange | null;
12
+ /** Fires only on a COMPLETE range (a lone anchor never commits). */
13
+ onChange?: (value: DateRange) => void;
14
+ label?: string;
15
+ placeholder?: string;
16
+ /** IANA timezone (e.g. 'Europe/Riga') - display context, shown in the footer. */
17
+ timezone?: string;
18
+ /** Earliest pickable date, 'YYYY-MM-DD', inclusive. */
19
+ min?: string;
20
+ /** Latest pickable date, 'YYYY-MM-DD', inclusive. */
21
+ max?: string;
22
+ required?: boolean;
23
+ invalid?: boolean;
24
+ message?: string;
25
+ disabled?: boolean;
26
+ className?: string;
27
+ }
28
+ declare function DateRangeField({ value, defaultValue, onChange, label, placeholder, timezone, min, max, required, invalid, message, disabled, className, }: DateRangeFieldProps): React.JSX.Element;
29
+
30
+ export { type DateRange, DateRangeField, type DateRangeFieldProps };
@@ -0,0 +1,8 @@
1
+ 'use client';export { DateRangeField } from './chunk-OUBWD6CX.js';
2
+ import './chunk-UIQGSTBJ.js';
3
+ import './chunk-QNC6O3PG.js';
4
+ import './chunk-QFS52OK5.js';
5
+ import './chunk-KBWNUUWM.js';
6
+ import './chunk-37O2ZXD6.js';
7
+ //# sourceMappingURL=date-range-field.js.map
8
+ //# sourceMappingURL=date-range-field.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"names":[],"mappings":"","file":"date-range-field.js"}
@@ -0,0 +1,28 @@
1
+ import * as React from 'react';
2
+
3
+ interface DateTimeFieldProps {
4
+ /** Controlled value, 'YYYY-MM-DDTHH:mm'. */
5
+ value?: string | null;
6
+ defaultValue?: string | null;
7
+ onChange?: (value: string) => void;
8
+ label?: string;
9
+ placeholder?: string;
10
+ /** IANA timezone (e.g. 'Europe/Riga') - display context, shown in the footer. */
11
+ timezone?: string;
12
+ /** Lower bound - 'YYYY-MM-DD' or 'YYYY-MM-DDTHH:mm', inclusive. */
13
+ min?: string;
14
+ /** Upper bound - 'YYYY-MM-DD' or 'YYYY-MM-DDTHH:mm', inclusive. */
15
+ max?: string;
16
+ /** Time display only; storage stays 24h. Default '24h'. */
17
+ format?: '24h' | '12h';
18
+ /** ↑/↓ step granularity in minutes (typing is exact). Default 5. */
19
+ minuteStep?: number;
20
+ required?: boolean;
21
+ invalid?: boolean;
22
+ message?: string;
23
+ disabled?: boolean;
24
+ className?: string;
25
+ }
26
+ declare function DateTimeField({ value, defaultValue, onChange, label, placeholder, timezone, min, max, format, minuteStep, required, invalid, message, disabled, className, }: DateTimeFieldProps): React.JSX.Element;
27
+
28
+ export { DateTimeField, type DateTimeFieldProps };
@@ -0,0 +1,10 @@
1
+ 'use client';export { DateTimeField } from './chunk-NMFQRGLL.js';
2
+ import './chunk-5DDOOT33.js';
3
+ import './chunk-CV2Q4YXX.js';
4
+ import './chunk-UIQGSTBJ.js';
5
+ import './chunk-QNC6O3PG.js';
6
+ import './chunk-QFS52OK5.js';
7
+ import './chunk-KBWNUUWM.js';
8
+ import './chunk-37O2ZXD6.js';
9
+ //# sourceMappingURL=datetime-field.js.map
10
+ //# sourceMappingURL=datetime-field.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"names":[],"mappings":"","file":"datetime-field.js"}
@@ -0,0 +1,26 @@
1
+ import * as React from 'react';
2
+
3
+ interface DialogProps {
4
+ /** Controlled open state. Omit for uncontrolled (use defaultOpen + trigger). */
5
+ open?: boolean;
6
+ defaultOpen?: boolean;
7
+ onOpenChange?: (open: boolean) => void;
8
+ /** Optional element cloned to open the dialog on click (uncontrolled ergonomics). */
9
+ trigger?: React.ReactElement | null;
10
+ title?: React.ReactNode;
11
+ description?: React.ReactNode;
12
+ size?: 'sm' | 'md' | 'lg';
13
+ /** 'danger' tints the header icon badge + is the convention for destructive confirms. */
14
+ tone?: 'default' | 'danger';
15
+ /** Your own icon node for the header badge (alert dialogs). */
16
+ icon?: React.ReactNode;
17
+ /** Close button + backdrop/Esc dismissal. Default true. */
18
+ dismissible?: boolean;
19
+ /** Action row - a node, or a render fn `(close) => node` so uncontrolled dialogs can dismiss. */
20
+ footer?: React.ReactNode | ((close: () => void) => React.ReactNode);
21
+ children?: React.ReactNode;
22
+ id?: string;
23
+ }
24
+ declare function Dialog({ open, defaultOpen, onOpenChange, trigger, title, description, size, tone, icon, dismissible, footer, children, id, }: DialogProps): React.JSX.Element;
25
+
26
+ export { Dialog, type DialogProps };
package/dist/dialog.js ADDED
@@ -0,0 +1,7 @@
1
+ 'use client';export { Dialog } from './chunk-FPP2XLKX.js';
2
+ import './chunk-QFS52OK5.js';
3
+ import './chunk-VVPGEAC6.js';
4
+ import './chunk-KBWNUUWM.js';
5
+ import './chunk-37O2ZXD6.js';
6
+ //# sourceMappingURL=dialog.js.map
7
+ //# sourceMappingURL=dialog.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"names":[],"mappings":"","file":"dialog.js"}
@@ -0,0 +1,35 @@
1
+ export { Button, ButtonProps } from './button.js';
2
+ export { Collapse, CollapseProps } from './collapse.js';
3
+ export { Badge, BadgeProps, BadgeTone } from './badge.js';
4
+ export { POST_STATUS, PostStatus, StatusBadge, StatusBadgeProps } from './status-badge.js';
5
+ export { CountBadge, CountBadgeProps } from './count-badge.js';
6
+ export { Avatar, AvatarPaletteIndex, AvatarProps, AvatarShape, AvatarSize, AvatarStatus } from './avatar.js';
7
+ export { AvatarGroup, AvatarGroupProps } from './avatar-group.js';
8
+ export { Tag, TagGroup, TagGroupProps, TagProps } from './tag.js';
9
+ export { ToggleTag, ToggleTagProps } from './toggle-tag.js';
10
+ export { Table, TableAlign, TableColumn, TableHideBelow, TableProps, TableSort } from './table.js';
11
+ export { Pagination, PaginationProps } from './pagination.js';
12
+ export { TextField, TextFieldProps } from './text-field.js';
13
+ export { NumberField, NumberFieldProps } from './number-field.js';
14
+ export { OtpField, OtpFieldProps } from './otp-field.js';
15
+ export { Textarea, TextareaProps } from './textarea.js';
16
+ export { Checkbox, CheckboxProps } from './checkbox.js';
17
+ export { Toggle, ToggleProps } from './toggle.js';
18
+ export { RadioGroup, RadioGroupProps, RadioOption } from './radio-group.js';
19
+ export { Select, SelectProps } from './select.js';
20
+ export { MultiSelect, MultiSelectProps } from './multi-select.js';
21
+ export { S as SelectGroup, a as SelectOption } from './select-core-SAyS-8w0.js';
22
+ export { DateField, DateFieldProps, DtpPanel, DtpPanelProps } from './date-field.js';
23
+ export { DateTimeField, DateTimeFieldProps } from './datetime-field.js';
24
+ export { DateRange, DateRangeField, DateRangeFieldProps } from './date-range-field.js';
25
+ export { TimeField, TimeFieldProps } from './time-field.js';
26
+ export { TabItem, TabPanel, TabPanelProps, Tabs, TabsProps } from './tabs.js';
27
+ export { Overlay, OverlayProps } from './overlay.js';
28
+ export { Dialog, DialogProps } from './dialog.js';
29
+ export { Tooltip, TooltipHost, TooltipProps } from './tooltip.js';
30
+ export { Alert, AlertAction, AlertProps, AlertTone } from './alert.js';
31
+ export { Toaster } from './toast.js';
32
+ export { ToastAction, ToastApi, ToastOptions, ToastPromiseMsgs, ToastRecord, ToastSnapshot, ToastTone, UIToast, toast } from './toast-store.js';
33
+ export { Bezier, MotionTokens, UIMotion } from './motion-tokens.js';
34
+ import 'react';
35
+ import 'motion/react';