@vielzeug/refine 2.4.0 → 3.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 (240) hide show
  1. package/README.md +5 -18
  2. package/dist/accordion-item.cjs.map +1 -1
  3. package/dist/accordion-item.js.map +1 -1
  4. package/dist/accordion.cjs.map +1 -1
  5. package/dist/accordion.js.map +1 -1
  6. package/dist/async.cjs +1 -1
  7. package/dist/async.cjs.map +1 -1
  8. package/dist/async.js +3 -3
  9. package/dist/async.js.map +1 -1
  10. package/dist/box.cjs.map +1 -1
  11. package/dist/box.js.map +1 -1
  12. package/dist/button.cjs +6 -4
  13. package/dist/button.cjs.map +1 -1
  14. package/dist/button.js +11 -9
  15. package/dist/button.js.map +1 -1
  16. package/dist/card.cjs +1 -1
  17. package/dist/card.cjs.map +1 -1
  18. package/dist/card.js +6 -4
  19. package/dist/card.js.map +1 -1
  20. package/dist/checkbox-group.cjs +1 -1
  21. package/dist/checkbox-group.cjs.map +1 -1
  22. package/dist/checkbox-group.js +1 -1
  23. package/dist/checkbox-group.js.map +1 -1
  24. package/dist/combobox.cjs +2 -2
  25. package/dist/combobox.cjs.map +1 -1
  26. package/dist/combobox.js +7 -3
  27. package/dist/combobox.js.map +1 -1
  28. package/dist/command-palette.cjs +1 -1
  29. package/dist/command-palette.cjs.map +1 -1
  30. package/dist/command-palette.js +6 -2
  31. package/dist/command-palette.js.map +1 -1
  32. package/dist/content/card/card.css.cjs +1 -1
  33. package/dist/content/card/card.css.cjs.map +1 -1
  34. package/dist/content/card/card.css.js +1 -1
  35. package/dist/content/card/card.css.js.map +1 -1
  36. package/dist/content/card/card.d.ts +2 -2
  37. package/dist/content/card/card.d.ts.map +1 -1
  38. package/dist/content/pagination/pagination.css.cjs +1 -1
  39. package/dist/content/pagination/pagination.css.cjs.map +1 -1
  40. package/dist/content/pagination/pagination.css.js +1 -1
  41. package/dist/content/pagination/pagination.css.js.map +1 -1
  42. package/dist/core/field-base.cjs +1 -1
  43. package/dist/core/field-base.cjs.map +1 -1
  44. package/dist/core/field-base.d.ts +1 -1
  45. package/dist/core/field-base.js +1 -1
  46. package/dist/core/field-base.js.map +1 -1
  47. package/dist/core/nav.cjs +1 -1
  48. package/dist/core/nav.cjs.map +1 -1
  49. package/dist/core/nav.d.ts +4 -1
  50. package/dist/core/nav.d.ts.map +1 -1
  51. package/dist/core/nav.js +41 -28
  52. package/dist/core/nav.js.map +1 -1
  53. package/dist/core/option-list.cjs +1 -1
  54. package/dist/core/option-list.cjs.map +1 -1
  55. package/dist/core/option-list.d.ts.map +1 -1
  56. package/dist/core/option-list.js +30 -28
  57. package/dist/core/option-list.js.map +1 -1
  58. package/dist/core/slider.cjs +1 -1
  59. package/dist/core/slider.cjs.map +1 -1
  60. package/dist/core/slider.js +1 -1
  61. package/dist/core/slider.js.map +1 -1
  62. package/dist/core/spinner.cjs +1 -1
  63. package/dist/core/spinner.cjs.map +1 -1
  64. package/dist/core/spinner.js +1 -1
  65. package/dist/core/spinner.js.map +1 -1
  66. package/dist/custom-elements.json +231 -19
  67. package/dist/datagrid.cjs +73 -73
  68. package/dist/datagrid.cjs.map +1 -1
  69. package/dist/datagrid.js +331 -332
  70. package/dist/datagrid.js.map +1 -1
  71. package/dist/disclosure/accordion/accordion.css.cjs +1 -1
  72. package/dist/disclosure/accordion/accordion.css.cjs.map +1 -1
  73. package/dist/disclosure/accordion/accordion.css.js +1 -1
  74. package/dist/disclosure/accordion/accordion.css.js.map +1 -1
  75. package/dist/disclosure/accordion/accordion.d.ts +5 -5
  76. package/dist/disclosure/accordion/accordion.d.ts.map +1 -1
  77. package/dist/disclosure/accordion-item/accordion-item.css.cjs +1 -1
  78. package/dist/disclosure/accordion-item/accordion-item.css.cjs.map +1 -1
  79. package/dist/disclosure/accordion-item/accordion-item.css.js +1 -1
  80. package/dist/disclosure/accordion-item/accordion-item.css.js.map +1 -1
  81. package/dist/disclosure/accordion-item/accordion-item.d.ts +3 -3
  82. package/dist/disclosure/accordion-item/accordion-item.d.ts.map +1 -1
  83. package/dist/disclosure/tab-item/tab-item.css.cjs +1 -1
  84. package/dist/disclosure/tab-item/tab-item.css.cjs.map +1 -1
  85. package/dist/disclosure/tab-item/tab-item.css.js +1 -1
  86. package/dist/disclosure/tab-item/tab-item.css.js.map +1 -1
  87. package/dist/disclosure/tab-item/tab-item.d.ts +3 -3
  88. package/dist/disclosure/tab-item/tab-item.d.ts.map +1 -1
  89. package/dist/disclosure/tabs/tabs.css.cjs +1 -1
  90. package/dist/disclosure/tabs/tabs.css.cjs.map +1 -1
  91. package/dist/disclosure/tabs/tabs.css.js +1 -1
  92. package/dist/disclosure/tabs/tabs.css.js.map +1 -1
  93. package/dist/disclosure/tabs/tabs.d.ts +5 -5
  94. package/dist/disclosure/tabs/tabs.d.ts.map +1 -1
  95. package/dist/drawer.cjs +1 -1
  96. package/dist/drawer.cjs.map +1 -1
  97. package/dist/drawer.js +1 -1
  98. package/dist/drawer.js.map +1 -1
  99. package/dist/feedback/skeleton/skeleton.css.cjs +1 -1
  100. package/dist/feedback/skeleton/skeleton.css.cjs.map +1 -1
  101. package/dist/feedback/skeleton/skeleton.css.js +1 -1
  102. package/dist/feedback/skeleton/skeleton.css.js.map +1 -1
  103. package/dist/feedback/skeleton/skeleton.d.ts +1 -1
  104. package/dist/feedback/toast/toast.d.ts.map +1 -1
  105. package/dist/file-input.cjs +1 -1
  106. package/dist/file-input.cjs.map +1 -1
  107. package/dist/file-input.js +2 -2
  108. package/dist/file-input.js.map +1 -1
  109. package/dist/frameworks/elements.d.ts +4 -86
  110. package/dist/frameworks/react.d.ts +5 -4
  111. package/dist/frameworks/vue.d.ts +4 -4
  112. package/dist/grid.cjs +2 -2
  113. package/dist/grid.cjs.map +1 -1
  114. package/dist/grid.js +21 -18
  115. package/dist/grid.js.map +1 -1
  116. package/dist/inputs/combobox/combobox.d.ts +12 -1
  117. package/dist/inputs/combobox/combobox.d.ts.map +1 -1
  118. package/dist/inputs/datagrid/datagrid.d.ts +24 -32
  119. package/dist/inputs/datagrid/datagrid.d.ts.map +1 -1
  120. package/dist/inputs/date-picker/date-picker.css.cjs +1 -1
  121. package/dist/inputs/date-picker/date-picker.css.cjs.map +1 -1
  122. package/dist/inputs/date-picker/date-picker.css.js +1 -1
  123. package/dist/inputs/date-picker/date-picker.css.js.map +1 -1
  124. package/dist/inputs/file-input/file-input-upload.cjs +1 -1
  125. package/dist/inputs/file-input/file-input-upload.cjs.map +1 -1
  126. package/dist/inputs/file-input/file-input-upload.js +1 -1
  127. package/dist/inputs/file-input/file-input-upload.js.map +1 -1
  128. package/dist/inputs/index.d.ts +2 -3
  129. package/dist/inputs/index.d.ts.map +1 -1
  130. package/dist/inputs/input/input.css.cjs +1 -1
  131. package/dist/inputs/input/input.css.cjs.map +1 -1
  132. package/dist/inputs/input/input.css.js +1 -1
  133. package/dist/inputs/input/input.css.js.map +1 -1
  134. package/dist/inputs/shared/field-binding.cjs +1 -1
  135. package/dist/inputs/shared/field-binding.cjs.map +1 -1
  136. package/dist/inputs/shared/field-binding.js +6 -6
  137. package/dist/inputs/shared/field-binding.js.map +1 -1
  138. package/dist/layout/box/box.css.cjs +1 -1
  139. package/dist/layout/box/box.css.cjs.map +1 -1
  140. package/dist/layout/box/box.css.js +1 -1
  141. package/dist/layout/box/box.css.js.map +1 -1
  142. package/dist/layout/box/box.d.ts +3 -3
  143. package/dist/layout/box/box.d.ts.map +1 -1
  144. package/dist/layout/grid/grid.d.ts.map +1 -1
  145. package/dist/layout/navbar/navbar.css.cjs +1 -1
  146. package/dist/layout/navbar/navbar.css.cjs.map +1 -1
  147. package/dist/layout/navbar/navbar.css.js +1 -1
  148. package/dist/layout/navbar/navbar.css.js.map +1 -1
  149. package/dist/layout/navbar/navbar.d.ts +7 -1
  150. package/dist/layout/navbar/navbar.d.ts.map +1 -1
  151. package/dist/layout/sidebar/sidebar-item.css.cjs +1 -1
  152. package/dist/layout/sidebar/sidebar-item.css.cjs.map +1 -1
  153. package/dist/layout/sidebar/sidebar-item.css.js +1 -1
  154. package/dist/layout/sidebar/sidebar-item.css.js.map +1 -1
  155. package/dist/layout/sidebar/sidebar.css.cjs +1 -1
  156. package/dist/layout/sidebar/sidebar.css.cjs.map +1 -1
  157. package/dist/layout/sidebar/sidebar.css.js +1 -1
  158. package/dist/layout/sidebar/sidebar.css.js.map +1 -1
  159. package/dist/layout/sidebar/sidebar.d.ts.map +1 -1
  160. package/dist/menu.cjs +1 -1
  161. package/dist/menu.cjs.map +1 -1
  162. package/dist/menu.js +6 -6
  163. package/dist/menu.js.map +1 -1
  164. package/dist/navbar.cjs +10 -10
  165. package/dist/navbar.cjs.map +1 -1
  166. package/dist/navbar.js +99 -95
  167. package/dist/navbar.js.map +1 -1
  168. package/dist/navigation-menu.cjs +1 -1
  169. package/dist/navigation-menu.cjs.map +1 -1
  170. package/dist/navigation-menu.js +1 -1
  171. package/dist/navigation-menu.js.map +1 -1
  172. package/dist/number-input.cjs +1 -1
  173. package/dist/number-input.cjs.map +1 -1
  174. package/dist/number-input.js +1 -1
  175. package/dist/number-input.js.map +1 -1
  176. package/dist/overlay/popover/popover.d.ts.map +1 -1
  177. package/dist/overlay/tooltip/tooltip.d.ts.map +1 -1
  178. package/dist/popover.cjs +1 -1
  179. package/dist/popover.cjs.map +1 -1
  180. package/dist/popover.js +6 -6
  181. package/dist/popover.js.map +1 -1
  182. package/dist/radio-group.cjs +1 -1
  183. package/dist/radio-group.cjs.map +1 -1
  184. package/dist/radio-group.js +1 -1
  185. package/dist/radio-group.js.map +1 -1
  186. package/dist/radio.cjs +1 -1
  187. package/dist/radio.cjs.map +1 -1
  188. package/dist/radio.js +5 -5
  189. package/dist/radio.js.map +1 -1
  190. package/dist/rating.cjs +1 -1
  191. package/dist/rating.cjs.map +1 -1
  192. package/dist/rating.js +1 -1
  193. package/dist/rating.js.map +1 -1
  194. package/dist/refine.cjs +241 -224
  195. package/dist/refine.cjs.map +1 -1
  196. package/dist/refine.iife.js +297 -280
  197. package/dist/refine.iife.js.map +1 -1
  198. package/dist/refine.js +251 -234
  199. package/dist/refine.js.map +1 -1
  200. package/dist/shared/types.d.ts +0 -2
  201. package/dist/shared/types.d.ts.map +1 -1
  202. package/dist/sidebar.cjs +1 -1
  203. package/dist/sidebar.cjs.map +1 -1
  204. package/dist/sidebar.js +83 -83
  205. package/dist/sidebar.js.map +1 -1
  206. package/dist/skeleton.cjs +1 -1
  207. package/dist/skeleton.cjs.map +1 -1
  208. package/dist/skeleton.js +11 -9
  209. package/dist/skeleton.js.map +1 -1
  210. package/dist/slider.cjs +1 -1
  211. package/dist/slider.cjs.map +1 -1
  212. package/dist/slider.js +20 -20
  213. package/dist/slider.js.map +1 -1
  214. package/dist/stats.cjs +1 -1
  215. package/dist/stats.cjs.map +1 -1
  216. package/dist/stats.js +2 -2
  217. package/dist/stats.js.map +1 -1
  218. package/dist/styles/mixins/field-variants.css.cjs +15 -0
  219. package/dist/styles/mixins/field-variants.css.cjs.map +1 -1
  220. package/dist/styles/mixins/field-variants.css.d.ts.map +1 -1
  221. package/dist/styles/mixins/field-variants.css.js +15 -0
  222. package/dist/styles/mixins/field-variants.css.js.map +1 -1
  223. package/dist/styles/mixins/variants.css.cjs +4 -4
  224. package/dist/styles/mixins/variants.css.cjs.map +1 -1
  225. package/dist/styles/mixins/variants.css.js +4 -4
  226. package/dist/styles/mixins/variants.css.js.map +1 -1
  227. package/dist/tab-item.cjs.map +1 -1
  228. package/dist/tab-item.js.map +1 -1
  229. package/dist/tabs.cjs.map +1 -1
  230. package/dist/tabs.js.map +1 -1
  231. package/dist/toast.cjs +8 -8
  232. package/dist/toast.cjs.map +1 -1
  233. package/dist/toast.js +32 -33
  234. package/dist/toast.js.map +1 -1
  235. package/dist/tooltip.cjs +1 -1
  236. package/dist/tooltip.cjs.map +1 -1
  237. package/dist/tooltip.js +2 -2
  238. package/dist/tooltip.js.map +1 -1
  239. package/dist/types/elements.d.ts +207 -0
  240. package/package.json +13 -13
@@ -1 +1 @@
1
- {"version":3,"file":"slider.cjs","names":[],"sources":["../../src/core/slider.ts"],"sourcesContent":["import { clamp as clampRange } from '@vielzeug/arsenal/math';\nimport type { Readable } from '@vielzeug/ripple';\n\nimport { toFiniteNumberOr, toPositiveStep } from './numbers';\n\n// ── Slider control ────────────────────────────────────────────────────────────\n\nexport type SliderControlOptions = {\n disabled?: Readable<boolean | undefined>;\n max?: Readable<number | string | undefined>;\n min?: Readable<number | string | undefined>;\n readonly?: Readable<boolean | undefined>;\n step?: Readable<number | string | undefined>;\n};\n\nexport type SliderControl = {\n clamp: (value: number) => number;\n fromClientX: (clientX: number, rect: { left: number; width: number }) => number;\n /**\n * Handles keyboard navigation for a slider input.\n * When the slider is disabled or readonly, the event is ignored and `false` is returned.\n * @returns `true` when the event was handled and `onCommit` was called, `false` otherwise.\n */\n handleKeydown: (event: KeyboardEvent, currentValue: number, onCommit: (value: number) => void) => boolean;\n max: () => number;\n min: () => number;\n nextFromKey: (key: string, current: number) => number | null;\n snap: (value: number) => number;\n toPercent: (value: number) => number;\n};\n\nexport const createSliderControl = (options: SliderControlOptions): SliderControl => {\n const min = (): number => toFiniteNumberOr(options.min?.value, 0);\n const max = (): number => toFiniteNumberOr(options.max?.value, 100);\n const step = (): number => toPositiveStep(options.step?.value, 1);\n\n const clamp = (value: number): number => {\n const minValue = min();\n const maxValue = max();\n\n return clampRange(toFiniteNumberOr(value, minValue), minValue, maxValue);\n };\n\n const snap = (value: number): number => {\n const minValue = min();\n\n return clamp(Math.round(toFiniteNumberOr(value, minValue) / step()) * step());\n };\n\n const toPercent = (value: number): number => {\n const minValue = min();\n const maxValue = max();\n const normalized = toFiniteNumberOr(value, minValue);\n\n if (maxValue <= minValue) return 0;\n\n return ((normalized - minValue) / (maxValue - minValue)) * 100;\n };\n\n const fromClientX = (clientX: number, rect: { left: number; width: number }): number => {\n if (rect.width <= 0) return snap(min());\n\n const pct = Math.max(0, Math.min(1, (clientX - rect.left) / rect.width));\n const minValue = min();\n const maxValue = max();\n\n return snap(minValue + pct * (maxValue - minValue));\n };\n\n const nextFromKey = (key: string, current: number): number | null => {\n const normalized = toFiniteNumberOr(current, min());\n\n if (key === 'ArrowRight' || key === 'ArrowUp') return clamp(normalized + step());\n\n if (key === 'ArrowLeft' || key === 'ArrowDown') return clamp(normalized - step());\n\n if (key === 'Home') return min();\n\n if (key === 'End') return max();\n\n return null;\n };\n\n const handleKeydown = (event: KeyboardEvent, currentValue: number, onCommit: (value: number) => void): boolean => {\n if (options.disabled?.value || options.readonly?.value) return false;\n\n const next = nextFromKey(event.key, currentValue);\n\n if (next === null) return false;\n\n event.preventDefault();\n onCommit(next);\n\n return true;\n };\n\n return { clamp, fromClientX, handleKeydown, max, min, nextFromKey, snap, toPercent };\n};\n"],"mappings":"yEA+BA,IAAa,EAAuB,GAAiD,CACnF,IAAM,MAAoB,EAAA,iBAAiB,EAAQ,KAAK,MAAO,CAAC,EAC1D,MAAoB,EAAA,iBAAiB,EAAQ,KAAK,MAAO,GAAG,EAC5D,MAAqB,EAAA,eAAe,EAAQ,MAAM,MAAO,CAAC,EAE1D,EAAS,GAA0B,CACvC,IAAM,EAAW,EAAI,EACf,EAAW,EAAI,EAErB,OAAA,EAAO,EAAA,MAAA,CAAW,EAAA,iBAAiB,EAAO,CAAQ,EAAG,EAAU,CAAQ,CACzE,EAEM,EAAQ,GAA0B,CACtC,IAAM,EAAW,EAAI,EAErB,OAAO,EAAM,KAAK,MAAM,EAAA,iBAAiB,EAAO,CAAQ,EAAI,EAAK,CAAC,EAAI,EAAK,CAAC,CAC9E,EAEM,EAAa,GAA0B,CAC3C,IAAM,EAAW,EAAI,EACf,EAAW,EAAI,EACf,EAAa,EAAA,iBAAiB,EAAO,CAAQ,EAInD,OAFI,GAAY,EAAiB,GAExB,EAAa,IAAa,EAAW,GAAa,GAC7D,EAEM,GAAe,EAAiB,IAAkD,CACtF,GAAI,EAAK,OAAS,EAAG,OAAO,EAAK,EAAI,CAAC,EAEtC,IAAM,EAAM,KAAK,IAAI,EAAG,KAAK,IAAI,GAAI,EAAU,EAAK,MAAQ,EAAK,KAAK,CAAC,EACjE,EAAW,EAAI,EACf,EAAW,EAAI,EAErB,OAAO,EAAK,EAAW,GAAO,EAAW,EAAS,CACpD,EAEM,GAAe,EAAa,IAAmC,CACnE,IAAM,EAAa,EAAA,iBAAiB,EAAS,EAAI,CAAC,EAUlD,OARI,IAAQ,cAAgB,IAAQ,UAAkB,EAAM,EAAa,EAAK,CAAC,EAE3E,IAAQ,aAAe,IAAQ,YAAoB,EAAM,EAAa,EAAK,CAAC,EAE5E,IAAQ,OAAe,EAAI,EAE3B,IAAQ,MAAc,EAAI,EAEvB,IACT,EAeA,MAAO,CAAE,QAAO,cAAa,eAbN,EAAsB,EAAsB,IAA+C,CAChH,GAAI,EAAQ,UAAU,OAAS,EAAQ,UAAU,MAAO,MAAO,GAE/D,IAAM,EAAO,EAAY,EAAM,IAAK,CAAY,EAOhD,OALI,IAAS,OAEb,EAAM,eAAe,EACrB,EAAS,CAAI,EAEN,GACT,EAE4C,MAAK,MAAK,cAAa,OAAM,WAAU,CACrF"}
1
+ {"version":3,"file":"slider.cjs","names":[],"sources":["../../src/core/slider.ts"],"sourcesContent":["import { clamp as clampRange } from '@vielzeug/arsenal';\nimport type { Readable } from '@vielzeug/ripple';\n\nimport { toFiniteNumberOr, toPositiveStep } from './numbers';\n\n// ── Slider control ────────────────────────────────────────────────────────────\n\nexport type SliderControlOptions = {\n disabled?: Readable<boolean | undefined>;\n max?: Readable<number | string | undefined>;\n min?: Readable<number | string | undefined>;\n readonly?: Readable<boolean | undefined>;\n step?: Readable<number | string | undefined>;\n};\n\nexport type SliderControl = {\n clamp: (value: number) => number;\n fromClientX: (clientX: number, rect: { left: number; width: number }) => number;\n /**\n * Handles keyboard navigation for a slider input.\n * When the slider is disabled or readonly, the event is ignored and `false` is returned.\n * @returns `true` when the event was handled and `onCommit` was called, `false` otherwise.\n */\n handleKeydown: (event: KeyboardEvent, currentValue: number, onCommit: (value: number) => void) => boolean;\n max: () => number;\n min: () => number;\n nextFromKey: (key: string, current: number) => number | null;\n snap: (value: number) => number;\n toPercent: (value: number) => number;\n};\n\nexport const createSliderControl = (options: SliderControlOptions): SliderControl => {\n const min = (): number => toFiniteNumberOr(options.min?.value, 0);\n const max = (): number => toFiniteNumberOr(options.max?.value, 100);\n const step = (): number => toPositiveStep(options.step?.value, 1);\n\n const clamp = (value: number): number => {\n const minValue = min();\n const maxValue = max();\n\n return clampRange(toFiniteNumberOr(value, minValue), minValue, maxValue);\n };\n\n const snap = (value: number): number => {\n const minValue = min();\n\n return clamp(Math.round(toFiniteNumberOr(value, minValue) / step()) * step());\n };\n\n const toPercent = (value: number): number => {\n const minValue = min();\n const maxValue = max();\n const normalized = toFiniteNumberOr(value, minValue);\n\n if (maxValue <= minValue) return 0;\n\n return ((normalized - minValue) / (maxValue - minValue)) * 100;\n };\n\n const fromClientX = (clientX: number, rect: { left: number; width: number }): number => {\n if (rect.width <= 0) return snap(min());\n\n const pct = Math.max(0, Math.min(1, (clientX - rect.left) / rect.width));\n const minValue = min();\n const maxValue = max();\n\n return snap(minValue + pct * (maxValue - minValue));\n };\n\n const nextFromKey = (key: string, current: number): number | null => {\n const normalized = toFiniteNumberOr(current, min());\n\n if (key === 'ArrowRight' || key === 'ArrowUp') return clamp(normalized + step());\n\n if (key === 'ArrowLeft' || key === 'ArrowDown') return clamp(normalized - step());\n\n if (key === 'Home') return min();\n\n if (key === 'End') return max();\n\n return null;\n };\n\n const handleKeydown = (event: KeyboardEvent, currentValue: number, onCommit: (value: number) => void): boolean => {\n if (options.disabled?.value || options.readonly?.value) return false;\n\n const next = nextFromKey(event.key, currentValue);\n\n if (next === null) return false;\n\n event.preventDefault();\n onCommit(next);\n\n return true;\n };\n\n return { clamp, fromClientX, handleKeydown, max, min, nextFromKey, snap, toPercent };\n};\n"],"mappings":"oEA+BA,IAAa,EAAuB,GAAiD,CACnF,IAAM,MAAoB,EAAA,iBAAiB,EAAQ,KAAK,MAAO,CAAC,EAC1D,MAAoB,EAAA,iBAAiB,EAAQ,KAAK,MAAO,GAAG,EAC5D,MAAqB,EAAA,eAAe,EAAQ,MAAM,MAAO,CAAC,EAE1D,EAAS,GAA0B,CACvC,IAAM,EAAW,EAAI,EACf,EAAW,EAAI,EAErB,OAAA,EAAO,EAAA,MAAA,CAAW,EAAA,iBAAiB,EAAO,CAAQ,EAAG,EAAU,CAAQ,CACzE,EAEM,EAAQ,GAA0B,CACtC,IAAM,EAAW,EAAI,EAErB,OAAO,EAAM,KAAK,MAAM,EAAA,iBAAiB,EAAO,CAAQ,EAAI,EAAK,CAAC,EAAI,EAAK,CAAC,CAC9E,EAEM,EAAa,GAA0B,CAC3C,IAAM,EAAW,EAAI,EACf,EAAW,EAAI,EACf,EAAa,EAAA,iBAAiB,EAAO,CAAQ,EAInD,OAFI,GAAY,EAAiB,GAExB,EAAa,IAAa,EAAW,GAAa,GAC7D,EAEM,GAAe,EAAiB,IAAkD,CACtF,GAAI,EAAK,OAAS,EAAG,OAAO,EAAK,EAAI,CAAC,EAEtC,IAAM,EAAM,KAAK,IAAI,EAAG,KAAK,IAAI,GAAI,EAAU,EAAK,MAAQ,EAAK,KAAK,CAAC,EACjE,EAAW,EAAI,EACf,EAAW,EAAI,EAErB,OAAO,EAAK,EAAW,GAAO,EAAW,EAAS,CACpD,EAEM,GAAe,EAAa,IAAmC,CACnE,IAAM,EAAa,EAAA,iBAAiB,EAAS,EAAI,CAAC,EAUlD,OARI,IAAQ,cAAgB,IAAQ,UAAkB,EAAM,EAAa,EAAK,CAAC,EAE3E,IAAQ,aAAe,IAAQ,YAAoB,EAAM,EAAa,EAAK,CAAC,EAE5E,IAAQ,OAAe,EAAI,EAE3B,IAAQ,MAAc,EAAI,EAEvB,IACT,EAeA,MAAO,CAAE,QAAO,cAAa,eAbN,EAAsB,EAAsB,IAA+C,CAChH,GAAI,EAAQ,UAAU,OAAS,EAAQ,UAAU,MAAO,MAAO,GAE/D,IAAM,EAAO,EAAY,EAAM,IAAK,CAAY,EAOhD,OALI,IAAS,OAEb,EAAM,eAAe,EACrB,EAAS,CAAI,EAEN,GACT,EAE4C,MAAK,MAAK,cAAa,OAAM,WAAU,CACrF"}
@@ -1,5 +1,5 @@
1
1
  import { toFiniteNumberOr as e, toPositiveStep as t } from "./numbers.js";
2
- import { clamp as n } from "@vielzeug/arsenal/math";
2
+ import { clamp as n } from "@vielzeug/arsenal";
3
3
  //#region src/core/slider.ts
4
4
  var r = (r) => {
5
5
  let i = () => e(r.min?.value, 0), a = () => e(r.max?.value, 100), o = () => t(r.step?.value, 1), s = (t) => {
@@ -1 +1 @@
1
- {"version":3,"file":"slider.js","names":[],"sources":["../../src/core/slider.ts"],"sourcesContent":["import { clamp as clampRange } from '@vielzeug/arsenal/math';\nimport type { Readable } from '@vielzeug/ripple';\n\nimport { toFiniteNumberOr, toPositiveStep } from './numbers';\n\n// ── Slider control ────────────────────────────────────────────────────────────\n\nexport type SliderControlOptions = {\n disabled?: Readable<boolean | undefined>;\n max?: Readable<number | string | undefined>;\n min?: Readable<number | string | undefined>;\n readonly?: Readable<boolean | undefined>;\n step?: Readable<number | string | undefined>;\n};\n\nexport type SliderControl = {\n clamp: (value: number) => number;\n fromClientX: (clientX: number, rect: { left: number; width: number }) => number;\n /**\n * Handles keyboard navigation for a slider input.\n * When the slider is disabled or readonly, the event is ignored and `false` is returned.\n * @returns `true` when the event was handled and `onCommit` was called, `false` otherwise.\n */\n handleKeydown: (event: KeyboardEvent, currentValue: number, onCommit: (value: number) => void) => boolean;\n max: () => number;\n min: () => number;\n nextFromKey: (key: string, current: number) => number | null;\n snap: (value: number) => number;\n toPercent: (value: number) => number;\n};\n\nexport const createSliderControl = (options: SliderControlOptions): SliderControl => {\n const min = (): number => toFiniteNumberOr(options.min?.value, 0);\n const max = (): number => toFiniteNumberOr(options.max?.value, 100);\n const step = (): number => toPositiveStep(options.step?.value, 1);\n\n const clamp = (value: number): number => {\n const minValue = min();\n const maxValue = max();\n\n return clampRange(toFiniteNumberOr(value, minValue), minValue, maxValue);\n };\n\n const snap = (value: number): number => {\n const minValue = min();\n\n return clamp(Math.round(toFiniteNumberOr(value, minValue) / step()) * step());\n };\n\n const toPercent = (value: number): number => {\n const minValue = min();\n const maxValue = max();\n const normalized = toFiniteNumberOr(value, minValue);\n\n if (maxValue <= minValue) return 0;\n\n return ((normalized - minValue) / (maxValue - minValue)) * 100;\n };\n\n const fromClientX = (clientX: number, rect: { left: number; width: number }): number => {\n if (rect.width <= 0) return snap(min());\n\n const pct = Math.max(0, Math.min(1, (clientX - rect.left) / rect.width));\n const minValue = min();\n const maxValue = max();\n\n return snap(minValue + pct * (maxValue - minValue));\n };\n\n const nextFromKey = (key: string, current: number): number | null => {\n const normalized = toFiniteNumberOr(current, min());\n\n if (key === 'ArrowRight' || key === 'ArrowUp') return clamp(normalized + step());\n\n if (key === 'ArrowLeft' || key === 'ArrowDown') return clamp(normalized - step());\n\n if (key === 'Home') return min();\n\n if (key === 'End') return max();\n\n return null;\n };\n\n const handleKeydown = (event: KeyboardEvent, currentValue: number, onCommit: (value: number) => void): boolean => {\n if (options.disabled?.value || options.readonly?.value) return false;\n\n const next = nextFromKey(event.key, currentValue);\n\n if (next === null) return false;\n\n event.preventDefault();\n onCommit(next);\n\n return true;\n };\n\n return { clamp, fromClientX, handleKeydown, max, min, nextFromKey, snap, toPercent };\n};\n"],"mappings":";;;AA+BA,IAAa,KAAuB,MAAiD;CACnF,IAAM,UAAoB,EAAiB,EAAQ,KAAK,OAAO,CAAC,GAC1D,UAAoB,EAAiB,EAAQ,KAAK,OAAO,GAAG,GAC5D,UAAqB,EAAe,EAAQ,MAAM,OAAO,CAAC,GAE1D,KAAS,MAA0B;EACvC,IAAM,IAAW,EAAI,GACf,IAAW,EAAI;EAErB,OAAO,EAAW,EAAiB,GAAO,CAAQ,GAAG,GAAU,CAAQ;CACzE,GAEM,KAAQ,MAA0B;EACtC,IAAM,IAAW,EAAI;EAErB,OAAO,EAAM,KAAK,MAAM,EAAiB,GAAO,CAAQ,IAAI,EAAK,CAAC,IAAI,EAAK,CAAC;CAC9E,GAEM,KAAa,MAA0B;EAC3C,IAAM,IAAW,EAAI,GACf,IAAW,EAAI,GACf,IAAa,EAAiB,GAAO,CAAQ;EAInD,OAFI,KAAY,IAAiB,KAExB,IAAa,MAAa,IAAW,KAAa;CAC7D,GAEM,KAAe,GAAiB,MAAkD;EACtF,IAAI,EAAK,SAAS,GAAG,OAAO,EAAK,EAAI,CAAC;EAEtC,IAAM,IAAM,KAAK,IAAI,GAAG,KAAK,IAAI,IAAI,IAAU,EAAK,QAAQ,EAAK,KAAK,CAAC,GACjE,IAAW,EAAI,GACf,IAAW,EAAI;EAErB,OAAO,EAAK,IAAW,KAAO,IAAW,EAAS;CACpD,GAEM,KAAe,GAAa,MAAmC;EACnE,IAAM,IAAa,EAAiB,GAAS,EAAI,CAAC;EAUlD,OARI,MAAQ,gBAAgB,MAAQ,YAAkB,EAAM,IAAa,EAAK,CAAC,IAE3E,MAAQ,eAAe,MAAQ,cAAoB,EAAM,IAAa,EAAK,CAAC,IAE5E,MAAQ,SAAe,EAAI,IAE3B,MAAQ,QAAc,EAAI,IAEvB;CACT;CAeA,OAAO;EAAE,OAAA;EAAO;EAAa,gBAbN,GAAsB,GAAsB,MAA+C;GAChH,IAAI,EAAQ,UAAU,SAAS,EAAQ,UAAU,OAAO,OAAO;GAE/D,IAAM,IAAO,EAAY,EAAM,KAAK,CAAY;GAOhD,OALI,MAAS,SAEb,EAAM,eAAe,GACrB,EAAS,CAAI,GAEN;EACT;EAE4C;EAAK;EAAK;EAAa;EAAM;CAAU;AACrF"}
1
+ {"version":3,"file":"slider.js","names":[],"sources":["../../src/core/slider.ts"],"sourcesContent":["import { clamp as clampRange } from '@vielzeug/arsenal';\nimport type { Readable } from '@vielzeug/ripple';\n\nimport { toFiniteNumberOr, toPositiveStep } from './numbers';\n\n// ── Slider control ────────────────────────────────────────────────────────────\n\nexport type SliderControlOptions = {\n disabled?: Readable<boolean | undefined>;\n max?: Readable<number | string | undefined>;\n min?: Readable<number | string | undefined>;\n readonly?: Readable<boolean | undefined>;\n step?: Readable<number | string | undefined>;\n};\n\nexport type SliderControl = {\n clamp: (value: number) => number;\n fromClientX: (clientX: number, rect: { left: number; width: number }) => number;\n /**\n * Handles keyboard navigation for a slider input.\n * When the slider is disabled or readonly, the event is ignored and `false` is returned.\n * @returns `true` when the event was handled and `onCommit` was called, `false` otherwise.\n */\n handleKeydown: (event: KeyboardEvent, currentValue: number, onCommit: (value: number) => void) => boolean;\n max: () => number;\n min: () => number;\n nextFromKey: (key: string, current: number) => number | null;\n snap: (value: number) => number;\n toPercent: (value: number) => number;\n};\n\nexport const createSliderControl = (options: SliderControlOptions): SliderControl => {\n const min = (): number => toFiniteNumberOr(options.min?.value, 0);\n const max = (): number => toFiniteNumberOr(options.max?.value, 100);\n const step = (): number => toPositiveStep(options.step?.value, 1);\n\n const clamp = (value: number): number => {\n const minValue = min();\n const maxValue = max();\n\n return clampRange(toFiniteNumberOr(value, minValue), minValue, maxValue);\n };\n\n const snap = (value: number): number => {\n const minValue = min();\n\n return clamp(Math.round(toFiniteNumberOr(value, minValue) / step()) * step());\n };\n\n const toPercent = (value: number): number => {\n const minValue = min();\n const maxValue = max();\n const normalized = toFiniteNumberOr(value, minValue);\n\n if (maxValue <= minValue) return 0;\n\n return ((normalized - minValue) / (maxValue - minValue)) * 100;\n };\n\n const fromClientX = (clientX: number, rect: { left: number; width: number }): number => {\n if (rect.width <= 0) return snap(min());\n\n const pct = Math.max(0, Math.min(1, (clientX - rect.left) / rect.width));\n const minValue = min();\n const maxValue = max();\n\n return snap(minValue + pct * (maxValue - minValue));\n };\n\n const nextFromKey = (key: string, current: number): number | null => {\n const normalized = toFiniteNumberOr(current, min());\n\n if (key === 'ArrowRight' || key === 'ArrowUp') return clamp(normalized + step());\n\n if (key === 'ArrowLeft' || key === 'ArrowDown') return clamp(normalized - step());\n\n if (key === 'Home') return min();\n\n if (key === 'End') return max();\n\n return null;\n };\n\n const handleKeydown = (event: KeyboardEvent, currentValue: number, onCommit: (value: number) => void): boolean => {\n if (options.disabled?.value || options.readonly?.value) return false;\n\n const next = nextFromKey(event.key, currentValue);\n\n if (next === null) return false;\n\n event.preventDefault();\n onCommit(next);\n\n return true;\n };\n\n return { clamp, fromClientX, handleKeydown, max, min, nextFromKey, snap, toPercent };\n};\n"],"mappings":";;;AA+BA,IAAa,KAAuB,MAAiD;CACnF,IAAM,UAAoB,EAAiB,EAAQ,KAAK,OAAO,CAAC,GAC1D,UAAoB,EAAiB,EAAQ,KAAK,OAAO,GAAG,GAC5D,UAAqB,EAAe,EAAQ,MAAM,OAAO,CAAC,GAE1D,KAAS,MAA0B;EACvC,IAAM,IAAW,EAAI,GACf,IAAW,EAAI;EAErB,OAAO,EAAW,EAAiB,GAAO,CAAQ,GAAG,GAAU,CAAQ;CACzE,GAEM,KAAQ,MAA0B;EACtC,IAAM,IAAW,EAAI;EAErB,OAAO,EAAM,KAAK,MAAM,EAAiB,GAAO,CAAQ,IAAI,EAAK,CAAC,IAAI,EAAK,CAAC;CAC9E,GAEM,KAAa,MAA0B;EAC3C,IAAM,IAAW,EAAI,GACf,IAAW,EAAI,GACf,IAAa,EAAiB,GAAO,CAAQ;EAInD,OAFI,KAAY,IAAiB,KAExB,IAAa,MAAa,IAAW,KAAa;CAC7D,GAEM,KAAe,GAAiB,MAAkD;EACtF,IAAI,EAAK,SAAS,GAAG,OAAO,EAAK,EAAI,CAAC;EAEtC,IAAM,IAAM,KAAK,IAAI,GAAG,KAAK,IAAI,IAAI,IAAU,EAAK,QAAQ,EAAK,KAAK,CAAC,GACjE,IAAW,EAAI,GACf,IAAW,EAAI;EAErB,OAAO,EAAK,IAAW,KAAO,IAAW,EAAS;CACpD,GAEM,KAAe,GAAa,MAAmC;EACnE,IAAM,IAAa,EAAiB,GAAS,EAAI,CAAC;EAUlD,OARI,MAAQ,gBAAgB,MAAQ,YAAkB,EAAM,IAAa,EAAK,CAAC,IAE3E,MAAQ,eAAe,MAAQ,cAAoB,EAAM,IAAa,EAAK,CAAC,IAE5E,MAAQ,SAAe,EAAI,IAE3B,MAAQ,QAAc,EAAI,IAEvB;CACT;CAeA,OAAO;EAAE,OAAA;EAAO;EAAa,gBAbN,GAAsB,GAAsB,MAA+C;GAChH,IAAI,EAAQ,UAAU,SAAS,EAAQ,UAAU,OAAO,OAAO;GAE/D,IAAM,IAAO,EAAY,EAAM,KAAK,CAAY;GAOhD,OALI,MAAS,SAEb,EAAM,eAAe,GACrB,EAAS,CAAI,GAEN;EACT;EAE4C;EAAK;EAAK;EAAa;EAAM;CAAU;AACrF"}
@@ -1,2 +1,2 @@
1
- const e=require("./keyboard.cjs"),t=require("./numbers.cjs");let n=require("@vielzeug/arsenal/math");var r=r=>{let i=()=>!!r.disabled?.value||!!r.readonly?.value,a=()=>t.toFiniteNumber(r.min?.value),o=()=>t.toFiniteNumber(r.max?.value),s=e=>(0,n.clamp)(e,a(),o()),c=()=>t.toPositiveStep(r.step?.value,1),l=()=>{let e=c();return t.toPositiveStep(r.largeStep?.value,e*10)},u=()=>r.parse()??a()??0,d=(e,t)=>{if(e==null){r.commit(null,t);return}r.commit(s(e),t)},f=(e,t)=>{i()||d(u()+e,t)};return{atMax:()=>{let e=r.parse(),t=o();return e!=null&&t!=null&&e>=t},atMin:()=>{let e=r.parse(),t=a();return e!=null&&t!=null&&e<=t},handleKeydown:t=>!i()&&e.dispatchKeyboardAction(t,{keymap:{ArrowDown:()=>f(-c(),t),ArrowUp:()=>f(c(),t),End:()=>{let e=o();if(e==null)return!1;d(e,t)},Home:()=>{let e=a();if(e==null)return!1;d(e,t)},PageDown:()=>f(-l(),t),PageUp:()=>f(l(),t)},preventDefault:`after`}),incrementBy:f}};exports.createSpinnerControl=r;
1
+ const e=require("./keyboard.cjs"),t=require("./numbers.cjs");let n=require("@vielzeug/arsenal");var r=r=>{let i=()=>!!r.disabled?.value||!!r.readonly?.value,a=()=>t.toFiniteNumber(r.min?.value),o=()=>t.toFiniteNumber(r.max?.value),s=e=>(0,n.clamp)(e,a(),o()),c=()=>t.toPositiveStep(r.step?.value,1),l=()=>{let e=c();return t.toPositiveStep(r.largeStep?.value,e*10)},u=()=>r.parse()??a()??0,d=(e,t)=>{if(e==null){r.commit(null,t);return}r.commit(s(e),t)},f=(e,t)=>{i()||d(u()+e,t)};return{atMax:()=>{let e=r.parse(),t=o();return e!=null&&t!=null&&e>=t},atMin:()=>{let e=r.parse(),t=a();return e!=null&&t!=null&&e<=t},handleKeydown:t=>!i()&&e.dispatchKeyboardAction(t,{keymap:{ArrowDown:()=>f(-c(),t),ArrowUp:()=>f(c(),t),End:()=>{let e=o();if(e==null)return!1;d(e,t)},Home:()=>{let e=a();if(e==null)return!1;d(e,t)},PageDown:()=>f(-l(),t),PageUp:()=>f(l(),t)},preventDefault:`after`}),incrementBy:f}};exports.createSpinnerControl=r;
2
2
  //# sourceMappingURL=spinner.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"spinner.cjs","names":[],"sources":["../../src/core/spinner.ts"],"sourcesContent":["import { clamp as clampRange } from '@vielzeug/arsenal/math';\nimport type { Readable } from '@vielzeug/ripple';\n\nimport { dispatchKeyboardAction } from './keyboard';\nimport { toFiniteNumber, toPositiveStep } from './numbers';\n\nexport type SpinnerControlOptions = {\n commit: (value: number | null, originalEvent?: Event) => void;\n disabled?: Readable<boolean | undefined>;\n largeStep?: Readable<number | string | undefined>;\n max?: Readable<number | string | undefined>;\n min?: Readable<number | string | undefined>;\n parse: () => number | null;\n readonly?: Readable<boolean | undefined>;\n step?: Readable<number | string | undefined>;\n};\n\nexport type SpinnerControl = {\n atMax: () => boolean;\n atMin: () => boolean;\n handleKeydown: (event: KeyboardEvent) => boolean;\n incrementBy: (delta: number, originalEvent?: Event) => void;\n};\n\nexport const createSpinnerControl = (options: SpinnerControlOptions): SpinnerControl => {\n const isBlocked = (): boolean => Boolean(options.disabled?.value) || Boolean(options.readonly?.value);\n\n const min = (): number | undefined => {\n return toFiniteNumber(options.min?.value);\n };\n\n const max = (): number | undefined => {\n return toFiniteNumber(options.max?.value);\n };\n\n const clamp = (value: number): number => {\n return clampRange(value, min(), max());\n };\n\n const step = (): number => toPositiveStep(options.step?.value, 1);\n\n const largeStep = (): number => {\n const s = step();\n\n return toPositiveStep(options.largeStep?.value, s * 10);\n };\n\n const currentOrFallback = (): number => {\n const parsed = options.parse();\n\n if (parsed != null) return parsed;\n\n const minValue = min();\n\n if (minValue != null) return minValue;\n\n return 0;\n };\n\n const commit = (value: number | null, originalEvent?: Event): void => {\n if (value == null) {\n options.commit(null, originalEvent);\n\n return;\n }\n\n options.commit(clamp(value), originalEvent);\n };\n\n const incrementBy = (delta: number, originalEvent?: Event): void => {\n if (isBlocked()) return;\n\n commit(currentOrFallback() + delta, originalEvent);\n };\n\n const atMin = (): boolean => {\n const parsed = options.parse();\n const minValue = min();\n\n return parsed != null && minValue != null && parsed <= minValue;\n };\n\n const atMax = (): boolean => {\n const parsed = options.parse();\n const maxValue = max();\n\n return parsed != null && maxValue != null && parsed >= maxValue;\n };\n\n const handleKeydown = (event: KeyboardEvent): boolean => {\n if (isBlocked()) return false;\n\n return dispatchKeyboardAction(event, {\n keymap: {\n ArrowDown: () => incrementBy(-step(), event),\n ArrowUp: () => incrementBy(step(), event),\n End: () => {\n const maxValue = max();\n\n if (maxValue == null) return false;\n\n commit(maxValue, event);\n },\n Home: () => {\n const minValue = min();\n\n if (minValue == null) return false;\n\n commit(minValue, event);\n },\n PageDown: () => incrementBy(-largeStep(), event),\n PageUp: () => incrementBy(largeStep(), event),\n },\n preventDefault: 'after',\n });\n };\n\n return {\n atMax,\n atMin,\n handleKeydown,\n incrementBy,\n };\n};\n"],"mappings":"qGAwBA,IAAa,EAAwB,GAAmD,CACtF,IAAM,MAA2B,EAAQ,EAAQ,UAAU,OAAU,EAAQ,EAAQ,UAAU,MAEzF,MACG,EAAA,eAAe,EAAQ,KAAK,KAAK,EAGpC,MACG,EAAA,eAAe,EAAQ,KAAK,KAAK,EAGpC,EAAS,IACb,EAAO,EAAA,MAAA,CAAW,EAAO,EAAI,EAAG,EAAI,CAAC,EAGjC,MAAqB,EAAA,eAAe,EAAQ,MAAM,MAAO,CAAC,EAE1D,MAA0B,CAC9B,IAAM,EAAI,EAAK,EAEf,OAAO,EAAA,eAAe,EAAQ,WAAW,MAAO,EAAI,EAAE,CACxD,EAEM,MACW,EAAQ,MAEnB,GAEa,EAEb,GAEG,EAGH,GAAU,EAAsB,IAAgC,CACpE,GAAI,GAAS,KAAM,CACjB,EAAQ,OAAO,KAAM,CAAa,EAElC,MACF,CAEA,EAAQ,OAAO,EAAM,CAAK,EAAG,CAAa,CAC5C,EAEM,GAAe,EAAe,IAAgC,CAC9D,EAAU,GAEd,EAAO,EAAkB,EAAI,EAAO,CAAa,CACnD,EA4CA,MAAO,CACL,UApC2B,CAC3B,IAAM,EAAS,EAAQ,MAAM,EACvB,EAAW,EAAI,EAErB,OAAO,GAAU,MAAQ,GAAY,MAAQ,GAAU,CACzD,EAgCE,UA5C2B,CAC3B,IAAM,EAAS,EAAQ,MAAM,EACvB,EAAW,EAAI,EAErB,OAAO,GAAU,MAAQ,GAAY,MAAQ,GAAU,CACzD,EAwCE,cA/BqB,GACrB,CAAI,EAAU,GAEP,EAAA,uBAAuB,EAAO,CACnC,OAAQ,CACN,cAAiB,EAAY,CAAC,EAAK,EAAG,CAAK,EAC3C,YAAe,EAAY,EAAK,EAAG,CAAK,EACxC,QAAW,CACT,IAAM,EAAW,EAAI,EAErB,GAAI,GAAY,KAAM,MAAO,GAE7B,EAAO,EAAU,CAAK,CACxB,EACA,SAAY,CACV,IAAM,EAAW,EAAI,EAErB,GAAI,GAAY,KAAM,MAAO,GAE7B,EAAO,EAAU,CAAK,CACxB,EACA,aAAgB,EAAY,CAAC,EAAU,EAAG,CAAK,EAC/C,WAAc,EAAY,EAAU,EAAG,CAAK,CAC9C,EACA,eAAgB,OAClB,CAAC,EAOD,aACF,CACF"}
1
+ {"version":3,"file":"spinner.cjs","names":[],"sources":["../../src/core/spinner.ts"],"sourcesContent":["import { clamp as clampRange } from '@vielzeug/arsenal';\nimport type { Readable } from '@vielzeug/ripple';\n\nimport { dispatchKeyboardAction } from './keyboard';\nimport { toFiniteNumber, toPositiveStep } from './numbers';\n\nexport type SpinnerControlOptions = {\n commit: (value: number | null, originalEvent?: Event) => void;\n disabled?: Readable<boolean | undefined>;\n largeStep?: Readable<number | string | undefined>;\n max?: Readable<number | string | undefined>;\n min?: Readable<number | string | undefined>;\n parse: () => number | null;\n readonly?: Readable<boolean | undefined>;\n step?: Readable<number | string | undefined>;\n};\n\nexport type SpinnerControl = {\n atMax: () => boolean;\n atMin: () => boolean;\n handleKeydown: (event: KeyboardEvent) => boolean;\n incrementBy: (delta: number, originalEvent?: Event) => void;\n};\n\nexport const createSpinnerControl = (options: SpinnerControlOptions): SpinnerControl => {\n const isBlocked = (): boolean => Boolean(options.disabled?.value) || Boolean(options.readonly?.value);\n\n const min = (): number | undefined => {\n return toFiniteNumber(options.min?.value);\n };\n\n const max = (): number | undefined => {\n return toFiniteNumber(options.max?.value);\n };\n\n const clamp = (value: number): number => {\n return clampRange(value, min(), max());\n };\n\n const step = (): number => toPositiveStep(options.step?.value, 1);\n\n const largeStep = (): number => {\n const s = step();\n\n return toPositiveStep(options.largeStep?.value, s * 10);\n };\n\n const currentOrFallback = (): number => {\n const parsed = options.parse();\n\n if (parsed != null) return parsed;\n\n const minValue = min();\n\n if (minValue != null) return minValue;\n\n return 0;\n };\n\n const commit = (value: number | null, originalEvent?: Event): void => {\n if (value == null) {\n options.commit(null, originalEvent);\n\n return;\n }\n\n options.commit(clamp(value), originalEvent);\n };\n\n const incrementBy = (delta: number, originalEvent?: Event): void => {\n if (isBlocked()) return;\n\n commit(currentOrFallback() + delta, originalEvent);\n };\n\n const atMin = (): boolean => {\n const parsed = options.parse();\n const minValue = min();\n\n return parsed != null && minValue != null && parsed <= minValue;\n };\n\n const atMax = (): boolean => {\n const parsed = options.parse();\n const maxValue = max();\n\n return parsed != null && maxValue != null && parsed >= maxValue;\n };\n\n const handleKeydown = (event: KeyboardEvent): boolean => {\n if (isBlocked()) return false;\n\n return dispatchKeyboardAction(event, {\n keymap: {\n ArrowDown: () => incrementBy(-step(), event),\n ArrowUp: () => incrementBy(step(), event),\n End: () => {\n const maxValue = max();\n\n if (maxValue == null) return false;\n\n commit(maxValue, event);\n },\n Home: () => {\n const minValue = min();\n\n if (minValue == null) return false;\n\n commit(minValue, event);\n },\n PageDown: () => incrementBy(-largeStep(), event),\n PageUp: () => incrementBy(largeStep(), event),\n },\n preventDefault: 'after',\n });\n };\n\n return {\n atMax,\n atMin,\n handleKeydown,\n incrementBy,\n };\n};\n"],"mappings":"gGAwBA,IAAa,EAAwB,GAAmD,CACtF,IAAM,MAA2B,EAAQ,EAAQ,UAAU,OAAU,EAAQ,EAAQ,UAAU,MAEzF,MACG,EAAA,eAAe,EAAQ,KAAK,KAAK,EAGpC,MACG,EAAA,eAAe,EAAQ,KAAK,KAAK,EAGpC,EAAS,IACb,EAAO,EAAA,MAAA,CAAW,EAAO,EAAI,EAAG,EAAI,CAAC,EAGjC,MAAqB,EAAA,eAAe,EAAQ,MAAM,MAAO,CAAC,EAE1D,MAA0B,CAC9B,IAAM,EAAI,EAAK,EAEf,OAAO,EAAA,eAAe,EAAQ,WAAW,MAAO,EAAI,EAAE,CACxD,EAEM,MACW,EAAQ,MAEnB,GAEa,EAEb,GAEG,EAGH,GAAU,EAAsB,IAAgC,CACpE,GAAI,GAAS,KAAM,CACjB,EAAQ,OAAO,KAAM,CAAa,EAElC,MACF,CAEA,EAAQ,OAAO,EAAM,CAAK,EAAG,CAAa,CAC5C,EAEM,GAAe,EAAe,IAAgC,CAC9D,EAAU,GAEd,EAAO,EAAkB,EAAI,EAAO,CAAa,CACnD,EA4CA,MAAO,CACL,UApC2B,CAC3B,IAAM,EAAS,EAAQ,MAAM,EACvB,EAAW,EAAI,EAErB,OAAO,GAAU,MAAQ,GAAY,MAAQ,GAAU,CACzD,EAgCE,UA5C2B,CAC3B,IAAM,EAAS,EAAQ,MAAM,EACvB,EAAW,EAAI,EAErB,OAAO,GAAU,MAAQ,GAAY,MAAQ,GAAU,CACzD,EAwCE,cA/BqB,GACrB,CAAI,EAAU,GAEP,EAAA,uBAAuB,EAAO,CACnC,OAAQ,CACN,cAAiB,EAAY,CAAC,EAAK,EAAG,CAAK,EAC3C,YAAe,EAAY,EAAK,EAAG,CAAK,EACxC,QAAW,CACT,IAAM,EAAW,EAAI,EAErB,GAAI,GAAY,KAAM,MAAO,GAE7B,EAAO,EAAU,CAAK,CACxB,EACA,SAAY,CACV,IAAM,EAAW,EAAI,EAErB,GAAI,GAAY,KAAM,MAAO,GAE7B,EAAO,EAAU,CAAK,CACxB,EACA,aAAgB,EAAY,CAAC,EAAU,EAAG,CAAK,EAC/C,WAAc,EAAY,EAAU,EAAG,CAAK,CAC9C,EACA,eAAgB,OAClB,CAAC,EAOD,aACF,CACF"}
@@ -1,6 +1,6 @@
1
1
  import { dispatchKeyboardAction as e } from "./keyboard.js";
2
2
  import { toFiniteNumber as t, toPositiveStep as n } from "./numbers.js";
3
- import { clamp as r } from "@vielzeug/arsenal/math";
3
+ import { clamp as r } from "@vielzeug/arsenal";
4
4
  //#region src/core/spinner.ts
5
5
  var i = (i) => {
6
6
  let a = () => !!i.disabled?.value || !!i.readonly?.value, o = () => t(i.min?.value), s = () => t(i.max?.value), c = (e) => r(e, o(), s()), l = () => n(i.step?.value, 1), u = () => {
@@ -1 +1 @@
1
- {"version":3,"file":"spinner.js","names":[],"sources":["../../src/core/spinner.ts"],"sourcesContent":["import { clamp as clampRange } from '@vielzeug/arsenal/math';\nimport type { Readable } from '@vielzeug/ripple';\n\nimport { dispatchKeyboardAction } from './keyboard';\nimport { toFiniteNumber, toPositiveStep } from './numbers';\n\nexport type SpinnerControlOptions = {\n commit: (value: number | null, originalEvent?: Event) => void;\n disabled?: Readable<boolean | undefined>;\n largeStep?: Readable<number | string | undefined>;\n max?: Readable<number | string | undefined>;\n min?: Readable<number | string | undefined>;\n parse: () => number | null;\n readonly?: Readable<boolean | undefined>;\n step?: Readable<number | string | undefined>;\n};\n\nexport type SpinnerControl = {\n atMax: () => boolean;\n atMin: () => boolean;\n handleKeydown: (event: KeyboardEvent) => boolean;\n incrementBy: (delta: number, originalEvent?: Event) => void;\n};\n\nexport const createSpinnerControl = (options: SpinnerControlOptions): SpinnerControl => {\n const isBlocked = (): boolean => Boolean(options.disabled?.value) || Boolean(options.readonly?.value);\n\n const min = (): number | undefined => {\n return toFiniteNumber(options.min?.value);\n };\n\n const max = (): number | undefined => {\n return toFiniteNumber(options.max?.value);\n };\n\n const clamp = (value: number): number => {\n return clampRange(value, min(), max());\n };\n\n const step = (): number => toPositiveStep(options.step?.value, 1);\n\n const largeStep = (): number => {\n const s = step();\n\n return toPositiveStep(options.largeStep?.value, s * 10);\n };\n\n const currentOrFallback = (): number => {\n const parsed = options.parse();\n\n if (parsed != null) return parsed;\n\n const minValue = min();\n\n if (minValue != null) return minValue;\n\n return 0;\n };\n\n const commit = (value: number | null, originalEvent?: Event): void => {\n if (value == null) {\n options.commit(null, originalEvent);\n\n return;\n }\n\n options.commit(clamp(value), originalEvent);\n };\n\n const incrementBy = (delta: number, originalEvent?: Event): void => {\n if (isBlocked()) return;\n\n commit(currentOrFallback() + delta, originalEvent);\n };\n\n const atMin = (): boolean => {\n const parsed = options.parse();\n const minValue = min();\n\n return parsed != null && minValue != null && parsed <= minValue;\n };\n\n const atMax = (): boolean => {\n const parsed = options.parse();\n const maxValue = max();\n\n return parsed != null && maxValue != null && parsed >= maxValue;\n };\n\n const handleKeydown = (event: KeyboardEvent): boolean => {\n if (isBlocked()) return false;\n\n return dispatchKeyboardAction(event, {\n keymap: {\n ArrowDown: () => incrementBy(-step(), event),\n ArrowUp: () => incrementBy(step(), event),\n End: () => {\n const maxValue = max();\n\n if (maxValue == null) return false;\n\n commit(maxValue, event);\n },\n Home: () => {\n const minValue = min();\n\n if (minValue == null) return false;\n\n commit(minValue, event);\n },\n PageDown: () => incrementBy(-largeStep(), event),\n PageUp: () => incrementBy(largeStep(), event),\n },\n preventDefault: 'after',\n });\n };\n\n return {\n atMax,\n atMin,\n handleKeydown,\n incrementBy,\n };\n};\n"],"mappings":";;;;AAwBA,IAAa,KAAwB,MAAmD;CACtF,IAAM,UAA2B,EAAQ,EAAQ,UAAU,SAAU,EAAQ,EAAQ,UAAU,OAEzF,UACG,EAAe,EAAQ,KAAK,KAAK,GAGpC,UACG,EAAe,EAAQ,KAAK,KAAK,GAGpC,KAAS,MACN,EAAW,GAAO,EAAI,GAAG,EAAI,CAAC,GAGjC,UAAqB,EAAe,EAAQ,MAAM,OAAO,CAAC,GAE1D,UAA0B;EAC9B,IAAM,IAAI,EAAK;EAEf,OAAO,EAAe,EAAQ,WAAW,OAAO,IAAI,EAAE;CACxD,GAEM,UACW,EAAQ,MAEnB,KAEa,EAEb,KAEG,GAGH,KAAU,GAAsB,MAAgC;EACpE,IAAI,KAAS,MAAM;GACjB,EAAQ,OAAO,MAAM,CAAa;GAElC;EACF;EAEA,EAAQ,OAAO,EAAM,CAAK,GAAG,CAAa;CAC5C,GAEM,KAAe,GAAe,MAAgC;EAC9D,EAAU,KAEd,EAAO,EAAkB,IAAI,GAAO,CAAa;CACnD;CA4CA,OAAO;EACL,aApC2B;GAC3B,IAAM,IAAS,EAAQ,MAAM,GACvB,IAAW,EAAI;GAErB,OAAO,KAAU,QAAQ,KAAY,QAAQ,KAAU;EACzD;EAgCE,aA5C2B;GAC3B,IAAM,IAAS,EAAQ,MAAM,GACvB,IAAW,EAAI;GAErB,OAAO,KAAU,QAAQ,KAAY,QAAQ,KAAU;EACzD;EAwCE,gBA/BqB,MACrB,CAAI,EAAU,KAEP,EAAuB,GAAO;GACnC,QAAQ;IACN,iBAAiB,EAAY,CAAC,EAAK,GAAG,CAAK;IAC3C,eAAe,EAAY,EAAK,GAAG,CAAK;IACxC,WAAW;KACT,IAAM,IAAW,EAAI;KAErB,IAAI,KAAY,MAAM,OAAO;KAE7B,EAAO,GAAU,CAAK;IACxB;IACA,YAAY;KACV,IAAM,IAAW,EAAI;KAErB,IAAI,KAAY,MAAM,OAAO;KAE7B,EAAO,GAAU,CAAK;IACxB;IACA,gBAAgB,EAAY,CAAC,EAAU,GAAG,CAAK;IAC/C,cAAc,EAAY,EAAU,GAAG,CAAK;GAC9C;GACA,gBAAgB;EAClB,CAAC;EAOD;CACF;AACF"}
1
+ {"version":3,"file":"spinner.js","names":[],"sources":["../../src/core/spinner.ts"],"sourcesContent":["import { clamp as clampRange } from '@vielzeug/arsenal';\nimport type { Readable } from '@vielzeug/ripple';\n\nimport { dispatchKeyboardAction } from './keyboard';\nimport { toFiniteNumber, toPositiveStep } from './numbers';\n\nexport type SpinnerControlOptions = {\n commit: (value: number | null, originalEvent?: Event) => void;\n disabled?: Readable<boolean | undefined>;\n largeStep?: Readable<number | string | undefined>;\n max?: Readable<number | string | undefined>;\n min?: Readable<number | string | undefined>;\n parse: () => number | null;\n readonly?: Readable<boolean | undefined>;\n step?: Readable<number | string | undefined>;\n};\n\nexport type SpinnerControl = {\n atMax: () => boolean;\n atMin: () => boolean;\n handleKeydown: (event: KeyboardEvent) => boolean;\n incrementBy: (delta: number, originalEvent?: Event) => void;\n};\n\nexport const createSpinnerControl = (options: SpinnerControlOptions): SpinnerControl => {\n const isBlocked = (): boolean => Boolean(options.disabled?.value) || Boolean(options.readonly?.value);\n\n const min = (): number | undefined => {\n return toFiniteNumber(options.min?.value);\n };\n\n const max = (): number | undefined => {\n return toFiniteNumber(options.max?.value);\n };\n\n const clamp = (value: number): number => {\n return clampRange(value, min(), max());\n };\n\n const step = (): number => toPositiveStep(options.step?.value, 1);\n\n const largeStep = (): number => {\n const s = step();\n\n return toPositiveStep(options.largeStep?.value, s * 10);\n };\n\n const currentOrFallback = (): number => {\n const parsed = options.parse();\n\n if (parsed != null) return parsed;\n\n const minValue = min();\n\n if (minValue != null) return minValue;\n\n return 0;\n };\n\n const commit = (value: number | null, originalEvent?: Event): void => {\n if (value == null) {\n options.commit(null, originalEvent);\n\n return;\n }\n\n options.commit(clamp(value), originalEvent);\n };\n\n const incrementBy = (delta: number, originalEvent?: Event): void => {\n if (isBlocked()) return;\n\n commit(currentOrFallback() + delta, originalEvent);\n };\n\n const atMin = (): boolean => {\n const parsed = options.parse();\n const minValue = min();\n\n return parsed != null && minValue != null && parsed <= minValue;\n };\n\n const atMax = (): boolean => {\n const parsed = options.parse();\n const maxValue = max();\n\n return parsed != null && maxValue != null && parsed >= maxValue;\n };\n\n const handleKeydown = (event: KeyboardEvent): boolean => {\n if (isBlocked()) return false;\n\n return dispatchKeyboardAction(event, {\n keymap: {\n ArrowDown: () => incrementBy(-step(), event),\n ArrowUp: () => incrementBy(step(), event),\n End: () => {\n const maxValue = max();\n\n if (maxValue == null) return false;\n\n commit(maxValue, event);\n },\n Home: () => {\n const minValue = min();\n\n if (minValue == null) return false;\n\n commit(minValue, event);\n },\n PageDown: () => incrementBy(-largeStep(), event),\n PageUp: () => incrementBy(largeStep(), event),\n },\n preventDefault: 'after',\n });\n };\n\n return {\n atMax,\n atMin,\n handleKeydown,\n incrementBy,\n };\n};\n"],"mappings":";;;;AAwBA,IAAa,KAAwB,MAAmD;CACtF,IAAM,UAA2B,EAAQ,EAAQ,UAAU,SAAU,EAAQ,EAAQ,UAAU,OAEzF,UACG,EAAe,EAAQ,KAAK,KAAK,GAGpC,UACG,EAAe,EAAQ,KAAK,KAAK,GAGpC,KAAS,MACN,EAAW,GAAO,EAAI,GAAG,EAAI,CAAC,GAGjC,UAAqB,EAAe,EAAQ,MAAM,OAAO,CAAC,GAE1D,UAA0B;EAC9B,IAAM,IAAI,EAAK;EAEf,OAAO,EAAe,EAAQ,WAAW,OAAO,IAAI,EAAE;CACxD,GAEM,UACW,EAAQ,MAEnB,KAEa,EAEb,KAEG,GAGH,KAAU,GAAsB,MAAgC;EACpE,IAAI,KAAS,MAAM;GACjB,EAAQ,OAAO,MAAM,CAAa;GAElC;EACF;EAEA,EAAQ,OAAO,EAAM,CAAK,GAAG,CAAa;CAC5C,GAEM,KAAe,GAAe,MAAgC;EAC9D,EAAU,KAEd,EAAO,EAAkB,IAAI,GAAO,CAAa;CACnD;CA4CA,OAAO;EACL,aApC2B;GAC3B,IAAM,IAAS,EAAQ,MAAM,GACvB,IAAW,EAAI;GAErB,OAAO,KAAU,QAAQ,KAAY,QAAQ,KAAU;EACzD;EAgCE,aA5C2B;GAC3B,IAAM,IAAS,EAAQ,MAAM,GACvB,IAAW,EAAI;GAErB,OAAO,KAAU,QAAQ,KAAY,QAAQ,KAAU;EACzD;EAwCE,gBA/BqB,MACrB,CAAI,EAAU,KAEP,EAAuB,GAAO;GACnC,QAAQ;IACN,iBAAiB,EAAY,CAAC,EAAK,GAAG,CAAK;IAC3C,eAAe,EAAY,EAAK,GAAG,CAAK;IACxC,WAAW;KACT,IAAM,IAAW,EAAI;KAErB,IAAI,KAAY,MAAM,OAAO;KAE7B,EAAO,GAAU,CAAK;IACxB;IACA,YAAY;KACV,IAAM,IAAW,EAAI;KAErB,IAAI,KAAY,MAAM,OAAO;KAE7B,EAAO,GAAU,CAAK;IACxB;IACA,gBAAgB,EAAY,CAAC,EAAU,GAAG,CAAK;IAC/C,cAAc,EAAY,EAAU,GAAG,CAAK;GAC9C;GACA,gBAAgB;EAClB,CAAC;EAOD;CACF;AACF"}
@@ -2049,9 +2049,9 @@
2049
2049
  {
2050
2050
  "name": "variant",
2051
2051
  "type": {
2052
- "text": "'solid' | 'flat' | 'glass' | 'frost'"
2052
+ "text": "'solid' | 'flat' | 'frost'"
2053
2053
  },
2054
- "description": "Visual variant: 'solid' | 'flat' | 'glass' | 'frost'"
2054
+ "description": "Visual variant: 'solid' | 'flat' | 'frost'"
2055
2055
  },
2056
2056
  {
2057
2057
  "name": "color",
@@ -2240,6 +2240,15 @@
2240
2240
  "text": "'ore-carousel-slide'"
2241
2241
  },
2242
2242
  "default": "'ore-carousel-slide'"
2243
+ },
2244
+ {
2245
+ "kind": "class",
2246
+ "name": "OreCarouselSlideElement",
2247
+ "tagName": "ore-carousel-slide",
2248
+ "customElement": true,
2249
+ "description": "",
2250
+ "summary": "",
2251
+ "demos": []
2243
2252
  }
2244
2253
  ],
2245
2254
  "exports": [
@@ -2250,6 +2259,14 @@
2250
2259
  "name": "CAROUSEL_SLIDE_TAG",
2251
2260
  "module": "src/content/carousel/carousel-slide.ts"
2252
2261
  }
2262
+ },
2263
+ {
2264
+ "kind": "custom-element-definition",
2265
+ "name": "OreCarouselSlideElement",
2266
+ "declaration": {
2267
+ "name": "OreCarouselSlideElement",
2268
+ "module": "src/content/carousel/carousel-slide.ts"
2269
+ }
2253
2270
  }
2254
2271
  ]
2255
2272
  },
@@ -4924,9 +4941,9 @@
4924
4941
  {
4925
4942
  "name": "variant",
4926
4943
  "type": {
4927
- "text": "'solid' | 'flat' | 'bordered' | 'text' | 'glass' | 'frost'"
4944
+ "text": "'solid' | 'flat' | 'bordered' | 'text' | 'frost'"
4928
4945
  },
4929
- "description": "Visual variant: 'solid' | 'flat' | 'bordered' | 'text' | 'glass' | 'frost' (propagated to children)"
4946
+ "description": "Visual variant: 'solid' | 'flat' | 'bordered' | 'text' | 'frost' (propagated to children)"
4930
4947
  }
4931
4948
  ],
4932
4949
  "events": [
@@ -4954,7 +4971,7 @@
4954
4971
  "cssProperties": [
4955
4972
  {
4956
4973
  "name": "--accordion-bg",
4957
- "description": "Container background color (solid/flat/glass/frost variants)"
4974
+ "description": "Container background color (solid/flat/frost variants)"
4958
4975
  },
4959
4976
  {
4960
4977
  "name": "--accordion-border-color",
@@ -5049,9 +5066,9 @@
5049
5066
  {
5050
5067
  "name": "variant",
5051
5068
  "type": {
5052
- "text": "'solid' | 'flat' | 'bordered' | 'outline' | 'ghost' | 'text' | 'glass' | 'frost'"
5069
+ "text": "'solid' | 'flat' | 'bordered' | 'outline' | 'ghost' | 'text' | 'frost'"
5053
5070
  },
5054
- "description": "Visual variant: 'solid' | 'flat' | 'bordered' | 'outline' | 'ghost' | 'text' | 'glass' | 'frost'"
5071
+ "description": "Visual variant: 'solid' | 'flat' | 'bordered' | 'outline' | 'ghost' | 'text' | 'frost'"
5055
5072
  }
5056
5073
  ],
5057
5074
  "events": [
@@ -5258,9 +5275,9 @@
5258
5275
  {
5259
5276
  "name": "variant",
5260
5277
  "type": {
5261
- "text": "'solid' | 'flat' | 'bordered' | 'ghost' | 'glass' | 'frost'"
5278
+ "text": "'solid' | 'flat' | 'bordered' | 'ghost' | 'frost'"
5262
5279
  },
5263
- "description": "Inherited from ore-tabs: 'solid' | 'flat' | 'bordered' | 'ghost' | 'glass' | 'frost'"
5280
+ "description": "Inherited from ore-tabs: 'solid' | 'flat' | 'bordered' | 'ghost' | 'frost'"
5264
5281
  },
5265
5282
  {
5266
5283
  "name": "color",
@@ -5483,9 +5500,9 @@
5483
5500
  {
5484
5501
  "name": "variant",
5485
5502
  "type": {
5486
- "text": "'solid' | 'flat' | 'bordered' | 'ghost' | 'glass' | 'frost'"
5503
+ "text": "'solid' | 'flat' | 'bordered' | 'ghost' | 'frost'"
5487
5504
  },
5488
- "description": "Visual variant: 'solid' | 'flat' | 'bordered' | 'ghost' | 'glass' | 'frost'"
5505
+ "description": "Visual variant: 'solid' | 'flat' | 'bordered' | 'ghost' | 'frost'"
5489
5506
  },
5490
5507
  {
5491
5508
  "name": "size",
@@ -5561,7 +5578,7 @@
5561
5578
  },
5562
5579
  {
5563
5580
  "name": "--tabs-tablist-bg",
5564
- "description": "Tablist container background (solid/glass/frost variants)"
5581
+ "description": "Tablist container background (solid/frost variants)"
5565
5582
  },
5566
5583
  {
5567
5584
  "name": "--tabs-tablist-border-color",
@@ -6632,14 +6649,14 @@
6632
6649
  "text": "'ore-skeleton'"
6633
6650
  },
6634
6651
  "default": "'ore-skeleton'",
6635
- "description": "A shimmer placeholder that represents loading content.\nControl dimensions via the `--skeleton-width` and `--skeleton-height` CSS custom properties,\nor via `width` / `height` inline styles."
6652
+ "description": "A shimmer placeholder that represents loading content.\nControl dimensions via the `--skeleton-width` and `--skeleton-height` CSS custom properties,\nor via `width` / `height` inline styles. Rectangle and circle bones fill the rendered host box."
6636
6653
  },
6637
6654
  {
6638
6655
  "kind": "class",
6639
6656
  "name": "OreSkeletonElement",
6640
6657
  "tagName": "ore-skeleton",
6641
6658
  "customElement": true,
6642
- "description": "A shimmer placeholder that represents loading content.\nControl dimensions via the `--skeleton-width` and `--skeleton-height` CSS custom properties,\nor via `width` / `height` inline styles.",
6659
+ "description": "A shimmer placeholder that represents loading content.\nControl dimensions via the `--skeleton-width` and `--skeleton-height` CSS custom properties,\nor via `width` / `height` inline styles. Rectangle and circle bones fill the rendered host box.",
6643
6660
  "summary": "",
6644
6661
  "attributes": [
6645
6662
  {
@@ -8033,6 +8050,60 @@
8033
8050
  "kind": "javascript-module",
8034
8051
  "path": "src/inputs/combobox/combobox.ts",
8035
8052
  "declarations": [
8053
+ {
8054
+ "kind": "variable",
8055
+ "name": "COMBOBOX_OPTION_TAG",
8056
+ "type": {
8057
+ "text": "'ore-combobox-option'"
8058
+ },
8059
+ "default": "'ore-combobox-option'",
8060
+ "description": "Declarative option data for `ore-combobox`."
8061
+ },
8062
+ {
8063
+ "kind": "class",
8064
+ "name": "OreComboboxOptionElement",
8065
+ "tagName": "ore-combobox-option",
8066
+ "customElement": true,
8067
+ "description": "Declarative option data for `ore-combobox`.",
8068
+ "summary": "",
8069
+ "attributes": [
8070
+ {
8071
+ "name": "value",
8072
+ "type": {
8073
+ "text": "string"
8074
+ },
8075
+ "description": "Submitted option value"
8076
+ },
8077
+ {
8078
+ "name": "label",
8079
+ "type": {
8080
+ "text": "string"
8081
+ },
8082
+ "description": "Label override; defaults to text content"
8083
+ },
8084
+ {
8085
+ "name": "disabled",
8086
+ "type": {
8087
+ "text": "boolean"
8088
+ },
8089
+ "description": "Prevent selection"
8090
+ },
8091
+ {
8092
+ "name": "disabled-reason",
8093
+ "type": {
8094
+ "text": "string"
8095
+ },
8096
+ "description": "Explanation shown for a disabled option"
8097
+ }
8098
+ ],
8099
+ "slots": [
8100
+ {
8101
+ "name": "icon",
8102
+ "description": "Leading option icon"
8103
+ }
8104
+ ],
8105
+ "demos": []
8106
+ },
8036
8107
  {
8037
8108
  "kind": "variable",
8038
8109
  "name": "COMBOBOX_TAG",
@@ -8048,6 +8119,14 @@
8048
8119
  }
8049
8120
  ],
8050
8121
  "exports": [
8122
+ {
8123
+ "kind": "js",
8124
+ "name": "ComboboxOptionInput",
8125
+ "declaration": {
8126
+ "name": "ComboboxOptionInput",
8127
+ "module": "./combobox.types"
8128
+ }
8129
+ },
8051
8130
  {
8052
8131
  "kind": "js",
8053
8132
  "name": "OreComboboxEvents",
@@ -8056,6 +8135,14 @@
8056
8135
  "module": "./combobox.types"
8057
8136
  }
8058
8137
  },
8138
+ {
8139
+ "kind": "js",
8140
+ "name": "OreComboboxOptionProps",
8141
+ "declaration": {
8142
+ "name": "OreComboboxOptionProps",
8143
+ "module": "./combobox.types"
8144
+ }
8145
+ },
8059
8146
  {
8060
8147
  "kind": "js",
8061
8148
  "name": "OreComboboxProps",
@@ -8064,6 +8151,22 @@
8064
8151
  "module": "./combobox.types"
8065
8152
  }
8066
8153
  },
8154
+ {
8155
+ "kind": "js",
8156
+ "name": "COMBOBOX_OPTION_TAG",
8157
+ "declaration": {
8158
+ "name": "COMBOBOX_OPTION_TAG",
8159
+ "module": "src/inputs/combobox/combobox.ts"
8160
+ }
8161
+ },
8162
+ {
8163
+ "kind": "custom-element-definition",
8164
+ "name": "OreComboboxOptionElement",
8165
+ "declaration": {
8166
+ "name": "OreComboboxOptionElement",
8167
+ "module": "src/inputs/combobox/combobox.ts"
8168
+ }
8169
+ },
8067
8170
  {
8068
8171
  "kind": "js",
8069
8172
  "name": "COMBOBOX_TAG",
@@ -8150,6 +8253,76 @@
8150
8253
  }
8151
8254
  ],
8152
8255
  "description": "Parse all `<ore-column>` direct children of `host` into DataGridColumn descriptors."
8256
+ },
8257
+ {
8258
+ "kind": "class",
8259
+ "name": "OreColumnElement",
8260
+ "tagName": "ore-column",
8261
+ "customElement": true,
8262
+ "description": "Declarative column definition for `<ore-datagrid>`.\nUse as a child element instead of setting the `columns` prop imperatively.",
8263
+ "summary": "",
8264
+ "attributes": [
8265
+ {
8266
+ "name": "key",
8267
+ "type": {
8268
+ "text": "string"
8269
+ },
8270
+ "description": "Row property key (required)"
8271
+ },
8272
+ {
8273
+ "name": "label",
8274
+ "type": {
8275
+ "text": "string"
8276
+ },
8277
+ "description": "Header display label (required)"
8278
+ },
8279
+ {
8280
+ "name": "sortable",
8281
+ "type": {
8282
+ "text": "boolean"
8283
+ },
8284
+ "description": "Makes the column sortable"
8285
+ },
8286
+ {
8287
+ "name": "resizable",
8288
+ "type": {
8289
+ "text": "boolean"
8290
+ },
8291
+ "description": "Adds a drag handle to resize the column"
8292
+ },
8293
+ {
8294
+ "name": "align",
8295
+ "type": {
8296
+ "text": "'left' | 'center' | 'right'"
8297
+ },
8298
+ "description": "Text alignment: 'left' | 'center' | 'right'"
8299
+ },
8300
+ {
8301
+ "name": "width",
8302
+ "type": {
8303
+ "text": "string"
8304
+ },
8305
+ "description": "CSS column width (e.g. '12rem')"
8306
+ },
8307
+ {
8308
+ "name": "header-label",
8309
+ "type": {
8310
+ "text": "string"
8311
+ },
8312
+ "description": "Accessible label override for the column header"
8313
+ }
8314
+ ],
8315
+ "events": [],
8316
+ "slots": [],
8317
+ "cssParts": [],
8318
+ "cssProperties": [],
8319
+ "demos": [
8320
+ {
8321
+ "url": "",
8322
+ "description": "```html\n<ore-datagrid>\n <ore-column key=\"name\" label=\"Name\" sortable></ore-column>\n <ore-column key=\"email\" label=\"Email\" width=\"20rem\"></ore-column>\n</ore-datagrid>\n```"
8323
+ }
8324
+ ],
8325
+ "members": []
8153
8326
  }
8154
8327
  ],
8155
8328
  "exports": [
@@ -8184,6 +8357,14 @@
8184
8357
  "name": "parseColumnChildren",
8185
8358
  "module": "src/inputs/datagrid/datagrid-column.ts"
8186
8359
  }
8360
+ },
8361
+ {
8362
+ "declaration": {
8363
+ "module": "src/inputs/datagrid/datagrid-column.ts",
8364
+ "name": "OreColumnElement"
8365
+ },
8366
+ "kind": "custom-element-definition",
8367
+ "name": "OreColumnElement"
8187
8368
  }
8188
8369
  ]
8189
8370
  },
@@ -8322,6 +8503,15 @@
8322
8503
  "text": "'ore-datagrid'"
8323
8504
  },
8324
8505
  "default": "'ore-datagrid'"
8506
+ },
8507
+ {
8508
+ "kind": "class",
8509
+ "name": "OreDatagridElement",
8510
+ "tagName": "ore-datagrid",
8511
+ "customElement": true,
8512
+ "description": "",
8513
+ "summary": "",
8514
+ "demos": []
8325
8515
  }
8326
8516
  ],
8327
8517
  "exports": [
@@ -8388,6 +8578,14 @@
8388
8578
  "name": "DATAGRID_TAG",
8389
8579
  "module": "src/inputs/datagrid/datagrid.ts"
8390
8580
  }
8581
+ },
8582
+ {
8583
+ "kind": "custom-element-definition",
8584
+ "name": "OreDatagridElement",
8585
+ "declaration": {
8586
+ "name": "OreDatagridElement",
8587
+ "module": "src/inputs/datagrid/datagrid.ts"
8588
+ }
8391
8589
  }
8392
8590
  ]
8393
8591
  },
@@ -12112,9 +12310,9 @@
12112
12310
  {
12113
12311
  "name": "variant",
12114
12312
  "type": {
12115
- "text": "'solid' | 'flat' | 'glass' | 'frost'"
12313
+ "text": "'solid' | 'flat' | 'frost'"
12116
12314
  },
12117
- "description": "Style variant: 'solid' | 'flat' | 'glass' | 'frost'"
12315
+ "description": "Style variant: 'solid' | 'flat' | 'frost'"
12118
12316
  },
12119
12317
  {
12120
12318
  "name": "color",
@@ -12204,7 +12402,7 @@
12204
12402
  "demos": [
12205
12403
  {
12206
12404
  "url": "",
12207
- "description": "```html\n<ore-box padding=\"lg\" elevation=\"2\">Simple content</ore-box>\n<ore-box variant=\"glass\" color=\"primary\">Glass effect</ore-box>\n<ore-box variant=\"frost\" effect=\"rainbow\">Frosted glass</ore-box>\n```"
12405
+ "description": "```html\n<ore-box padding=\"lg\" elevation=\"2\">Simple content</ore-box>\n<ore-box variant=\"solid\" color=\"primary\">Solid color</ore-box>\n<ore-box variant=\"frost\" effect=\"rainbow\">Frosted glass</ore-box>\n```"
12208
12406
  }
12209
12407
  ]
12210
12408
  }
@@ -12603,6 +12801,20 @@
12603
12801
  },
12604
12802
  "description": "Accessible nav landmark label"
12605
12803
  },
12804
+ {
12805
+ "name": "menu-icon",
12806
+ "type": {
12807
+ "text": "string"
12808
+ },
12809
+ "description": "Icon shown while the mobile menu is closed"
12810
+ },
12811
+ {
12812
+ "name": "menu-close-icon",
12813
+ "type": {
12814
+ "text": "string"
12815
+ },
12816
+ "description": "Icon shown while the mobile menu is open"
12817
+ },
12606
12818
  {
12607
12819
  "name": "sticky",
12608
12820
  "type": {
@@ -12641,9 +12853,9 @@
12641
12853
  {
12642
12854
  "name": "variant",
12643
12855
  "type": {
12644
- "text": "'flat' | 'solid' | 'bordered' | 'outline' | 'frost' | 'glass'"
12856
+ "text": "'flat' | 'solid' | 'bordered' | 'outline' | 'frost'"
12645
12857
  },
12646
- "description": "Visual variant: 'flat' | 'solid' | 'bordered' | 'outline' | 'frost' | 'glass'"
12858
+ "description": "Visual variant: 'flat' | 'solid' | 'bordered' | 'outline' | 'frost'"
12647
12859
  },
12648
12860
  {
12649
12861
  "name": "color",