@human-kit/svelte-components 1.0.0-alpha.2 → 1.0.0-alpha.20

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 (394) hide show
  1. package/dist/FOCUS_STATE_CONTRACT.md +63 -0
  2. package/dist/FOCUS_STATE_REVIEW_TEMPLATE.md +70 -0
  3. package/dist/button/README.md +48 -0
  4. package/dist/button/TODO.md +13 -0
  5. package/dist/button/index.d.ts +5 -0
  6. package/dist/button/index.js +4 -0
  7. package/dist/button/index.parts.d.ts +1 -0
  8. package/dist/button/index.parts.js +1 -0
  9. package/dist/button/root/README.md +43 -0
  10. package/dist/button/root/button-root.svelte +362 -0
  11. package/dist/button/root/button-root.svelte.d.ts +21 -0
  12. package/dist/button/root/button-test.svelte +76 -0
  13. package/dist/button/root/button-test.svelte.d.ts +11 -0
  14. package/dist/calendar/README.md +2 -1
  15. package/dist/calendar/TODO.md +21 -107
  16. package/dist/calendar/body-cell/README.md +15 -0
  17. package/dist/calendar/body-cell/calendar-body-cell.svelte +116 -41
  18. package/dist/calendar/grid/README.md +13 -0
  19. package/dist/calendar/grid-body/README.md +13 -0
  20. package/dist/calendar/grid-header/README.md +13 -0
  21. package/dist/calendar/header-cell/README.md +14 -0
  22. package/dist/calendar/heading/README.md +13 -0
  23. package/dist/calendar/index.d.ts +3 -3
  24. package/dist/calendar/index.js +3 -3
  25. package/dist/calendar/root/README.md +24 -0
  26. package/dist/calendar/root/calendar-root-test.svelte +4 -0
  27. package/dist/calendar/root/calendar-root-test.svelte.d.ts +1 -0
  28. package/dist/calendar/root/calendar-root.svelte +3 -0
  29. package/dist/calendar/root/calendar-root.svelte.d.ts +1 -0
  30. package/dist/calendar/root/context.d.ts +4 -0
  31. package/dist/calendar/root/context.js +28 -25
  32. package/dist/calendar/root/date-utils.d.ts +1 -1
  33. package/dist/calendar/root/date-utils.js +16 -26
  34. package/dist/calendar/trigger-next/README.md +14 -0
  35. package/dist/calendar/trigger-next/calendar-trigger-next.svelte +9 -4
  36. package/dist/calendar/trigger-next/calendar-trigger-next.svelte.d.ts +2 -1
  37. package/dist/calendar/trigger-previous/README.md +14 -0
  38. package/dist/calendar/trigger-previous/calendar-trigger-previous.svelte +9 -4
  39. package/dist/calendar/trigger-previous/calendar-trigger-previous.svelte.d.ts +2 -1
  40. package/dist/checkbox/README.md +53 -0
  41. package/dist/checkbox/TODO.md +16 -0
  42. package/dist/checkbox/index.d.ts +6 -0
  43. package/dist/checkbox/index.js +6 -0
  44. package/dist/checkbox/index.parts.d.ts +2 -0
  45. package/dist/checkbox/index.parts.js +2 -0
  46. package/dist/checkbox/indicator/README.md +23 -0
  47. package/dist/checkbox/indicator/checkbox-indicator.svelte +43 -0
  48. package/dist/checkbox/indicator/checkbox-indicator.svelte.d.ts +10 -0
  49. package/dist/checkbox/root/README.md +47 -0
  50. package/dist/checkbox/root/checkbox-label-test.svelte +10 -0
  51. package/dist/checkbox/root/checkbox-label-test.svelte.d.ts +18 -0
  52. package/dist/checkbox/root/checkbox-root.svelte +386 -0
  53. package/dist/checkbox/root/checkbox-root.svelte.d.ts +29 -0
  54. package/dist/checkbox/root/checkbox-test.svelte +59 -0
  55. package/dist/checkbox/root/checkbox-test.svelte.d.ts +18 -0
  56. package/dist/checkbox/root/context.d.ts +21 -0
  57. package/dist/checkbox/root/context.js +15 -0
  58. package/dist/clock/README.md +75 -0
  59. package/dist/clock/axis/README.md +24 -0
  60. package/dist/clock/axis/clock-axis.svelte +37 -0
  61. package/dist/clock/axis/clock-axis.svelte.d.ts +8 -0
  62. package/dist/clock/hooks/use-wheel-scroll.svelte.d.ts +16 -0
  63. package/dist/clock/hooks/use-wheel-scroll.svelte.js +336 -0
  64. package/dist/clock/index.d.ts +10 -0
  65. package/dist/clock/index.js +10 -0
  66. package/dist/clock/index.parts.d.ts +4 -0
  67. package/dist/clock/index.parts.js +4 -0
  68. package/dist/clock/root/README.md +38 -0
  69. package/dist/clock/root/clock-root-test.svelte +62 -0
  70. package/dist/clock/root/clock-root-test.svelte.d.ts +14 -0
  71. package/dist/clock/root/clock-root.svelte +329 -0
  72. package/dist/clock/root/clock-root.svelte.d.ts +25 -0
  73. package/dist/clock/root/context.d.ts +22 -0
  74. package/dist/clock/root/context.js +15 -0
  75. package/dist/clock/root/resolve-visible-columns.d.ts +7 -0
  76. package/dist/clock/root/resolve-visible-columns.js +16 -0
  77. package/dist/clock/root/time-utils.d.ts +48 -0
  78. package/dist/clock/root/time-utils.js +314 -0
  79. package/dist/clock/root/wheel-options.d.ts +17 -0
  80. package/dist/clock/root/wheel-options.js +63 -0
  81. package/dist/clock/wheel-column/README.md +25 -0
  82. package/dist/clock/wheel-column/clock-wheel-column-bindable-test.svelte +16 -0
  83. package/dist/clock/wheel-column/clock-wheel-column-bindable-test.svelte.d.ts +3 -0
  84. package/dist/clock/wheel-column/clock-wheel-column-custom-snippet-test.svelte +29 -0
  85. package/dist/clock/wheel-column/clock-wheel-column-custom-snippet-test.svelte.d.ts +6 -0
  86. package/dist/clock/wheel-column/clock-wheel-column-default-height-test.svelte +11 -0
  87. package/dist/clock/wheel-column/clock-wheel-column-default-height-test.svelte.d.ts +3 -0
  88. package/dist/clock/wheel-column/clock-wheel-column-test.svelte +38 -0
  89. package/dist/clock/wheel-column/clock-wheel-column-test.svelte.d.ts +12 -0
  90. package/dist/clock/wheel-column/clock-wheel-column-tp-test.svelte +38 -0
  91. package/dist/clock/wheel-column/clock-wheel-column-tp-test.svelte.d.ts +12 -0
  92. package/dist/clock/wheel-column/clock-wheel-column-untagged-snippet-test.svelte +29 -0
  93. package/dist/clock/wheel-column/clock-wheel-column-untagged-snippet-test.svelte.d.ts +6 -0
  94. package/dist/clock/wheel-column/clock-wheel-column.svelte +499 -0
  95. package/dist/clock/wheel-column/clock-wheel-column.svelte.d.ts +17 -0
  96. package/dist/clock/wheel-item/README.md +17 -0
  97. package/dist/clock/wheel-item/clock-wheel-item.svelte +49 -0
  98. package/dist/clock/wheel-item/clock-wheel-item.svelte.d.ts +17 -0
  99. package/dist/combobox/README.md +8 -2
  100. package/dist/combobox/TODO.md +28 -175
  101. package/dist/combobox/button/README.md +8 -3
  102. package/dist/combobox/button/combobox-button-test.svelte +27 -0
  103. package/dist/combobox/button/combobox-button-test.svelte.d.ts +6 -0
  104. package/dist/combobox/button/combobox-button.svelte +10 -11
  105. package/dist/combobox/clear/README.md +21 -0
  106. package/dist/combobox/clear/combobox-clear-test.svelte +34 -0
  107. package/dist/combobox/clear/combobox-clear-test.svelte.d.ts +3 -0
  108. package/dist/combobox/clear/combobox-clear.svelte +61 -0
  109. package/dist/combobox/clear/combobox-clear.svelte.d.ts +9 -0
  110. package/dist/combobox/index.d.ts +5 -3
  111. package/dist/combobox/index.js +5 -3
  112. package/dist/combobox/index.parts.d.ts +2 -0
  113. package/dist/combobox/index.parts.js +2 -0
  114. package/dist/combobox/input/combobox-input.svelte +44 -12
  115. package/dist/combobox/item/combobox-item-implicit-text-test.svelte +1 -1
  116. package/dist/combobox/item/combobox-listboxitem.svelte +14 -11
  117. package/dist/combobox/item-indicator/combobox-item-indicator.svelte +4 -15
  118. package/dist/combobox/list/combobox-listbox.svelte +1 -0
  119. package/dist/combobox/list/combobox-listbox.svelte.d.ts +2 -1
  120. package/dist/combobox/popover/README.md +18 -4
  121. package/dist/combobox/popover/combobox-popover-props-test.svelte +38 -0
  122. package/dist/combobox/popover/combobox-popover-props-test.svelte.d.ts +11 -0
  123. package/dist/combobox/popover/combobox-popover.svelte +166 -23
  124. package/dist/combobox/popover/combobox-popover.svelte.d.ts +3 -3
  125. package/dist/combobox/popover/combobox-scrollable-list-test.svelte +23 -0
  126. package/dist/combobox/popover/combobox-scrollable-list-test.svelte.d.ts +18 -0
  127. package/dist/combobox/root/README.md +1 -0
  128. package/dist/combobox/root/combobox-multiselect-test.svelte +5 -3
  129. package/dist/combobox/root/combobox-multiselect-test.svelte.d.ts +1 -0
  130. package/dist/combobox/root/combobox-numeric-string-id-test.svelte +1 -1
  131. package/dist/combobox/root/combobox-test.svelte +23 -4
  132. package/dist/combobox/root/combobox-test.svelte.d.ts +2 -0
  133. package/dist/combobox/root/combobox.svelte +119 -13
  134. package/dist/combobox/root/combobox.svelte.d.ts +1 -0
  135. package/dist/combobox/root/context.d.ts +19 -1
  136. package/dist/combobox/tag-remove/combobox-tag-remove.svelte +3 -2
  137. package/dist/combobox/trigger/README.md +21 -0
  138. package/dist/combobox/trigger/combobox-trigger.svelte +56 -0
  139. package/dist/combobox/trigger/combobox-trigger.svelte.d.ts +9 -0
  140. package/dist/datepicker/README.md +100 -0
  141. package/dist/datepicker/TODO.md +28 -0
  142. package/dist/datepicker/calendar/README.md +19 -0
  143. package/dist/datepicker/calendar/date-picker-calendar-unsafe-props-test.svelte +60 -0
  144. package/dist/datepicker/calendar/date-picker-calendar-unsafe-props-test.svelte.d.ts +3 -0
  145. package/dist/datepicker/calendar/date-picker-calendar.svelte +65 -0
  146. package/dist/datepicker/calendar/date-picker-calendar.svelte.d.ts +10 -0
  147. package/dist/datepicker/index.d.ts +18 -0
  148. package/dist/datepicker/index.js +18 -0
  149. package/dist/datepicker/index.parts.d.ts +14 -0
  150. package/dist/datepicker/index.parts.js +14 -0
  151. package/dist/datepicker/input/README.md +15 -0
  152. package/dist/datepicker/input/date-picker-input.svelte +108 -0
  153. package/dist/datepicker/input/date-picker-input.svelte.d.ts +11 -0
  154. package/dist/datepicker/internal/strict-props.d.ts +2 -0
  155. package/dist/datepicker/internal/strict-props.js +28 -0
  156. package/dist/datepicker/popover/README.md +20 -0
  157. package/dist/datepicker/popover/date-picker-popover-handler-test.svelte +57 -0
  158. package/dist/datepicker/popover/date-picker-popover-handler-test.svelte.d.ts +3 -0
  159. package/dist/datepicker/popover/date-picker-popover-unsafe-props-test.svelte +45 -0
  160. package/dist/datepicker/popover/date-picker-popover-unsafe-props-test.svelte.d.ts +18 -0
  161. package/dist/datepicker/popover/date-picker-popover.svelte +87 -0
  162. package/dist/datepicker/popover/date-picker-popover.svelte.d.ts +7 -0
  163. package/dist/datepicker/root/README.md +38 -0
  164. package/dist/datepicker/root/context.d.ts +43 -0
  165. package/dist/datepicker/root/context.js +15 -0
  166. package/dist/datepicker/root/date-picker-bindable-empty-test.svelte +24 -0
  167. package/dist/datepicker/root/date-picker-bindable-empty-test.svelte.d.ts +3 -0
  168. package/dist/datepicker/root/date-picker-bindable-test.svelte +41 -0
  169. package/dist/datepicker/root/date-picker-bindable-test.svelte.d.ts +3 -0
  170. package/dist/datepicker/root/date-picker-empty-test.svelte +47 -0
  171. package/dist/datepicker/root/date-picker-empty-test.svelte.d.ts +3 -0
  172. package/dist/datepicker/root/date-picker-locale-typing-test.svelte +47 -0
  173. package/dist/datepicker/root/date-picker-locale-typing-test.svelte.d.ts +3 -0
  174. package/dist/datepicker/root/date-picker-open-cancel-test.svelte +54 -0
  175. package/dist/datepicker/root/date-picker-open-cancel-test.svelte.d.ts +8 -0
  176. package/dist/datepicker/root/date-picker-root.svelte +495 -0
  177. package/dist/datepicker/root/date-picker-root.svelte.d.ts +24 -0
  178. package/dist/datepicker/root/date-picker-test.svelte +86 -0
  179. package/dist/datepicker/root/date-picker-test.svelte.d.ts +13 -0
  180. package/dist/datepicker/root/date-utils.d.ts +17 -0
  181. package/dist/datepicker/root/date-utils.js +138 -0
  182. package/dist/datepicker/root/draft-evaluation.d.ts +13 -0
  183. package/dist/datepicker/root/draft-evaluation.js +56 -0
  184. package/dist/datepicker/root/focus-controller.d.ts +3 -0
  185. package/dist/datepicker/root/focus-controller.js +15 -0
  186. package/dist/datepicker/root/open-change.d.ts +5 -0
  187. package/dist/datepicker/root/open-change.js +13 -0
  188. package/dist/datepicker/root/open-controller.d.ts +7 -0
  189. package/dist/datepicker/root/open-controller.js +15 -0
  190. package/dist/datepicker/root/segment-controller.d.ts +8 -0
  191. package/dist/datepicker/root/segment-controller.js +53 -0
  192. package/dist/datepicker/root/segment-state.d.ts +18 -0
  193. package/dist/datepicker/root/segment-state.js +134 -0
  194. package/dist/datepicker/root/value-commit.d.ts +4 -0
  195. package/dist/datepicker/root/value-commit.js +8 -0
  196. package/dist/datepicker/segment/README.md +14 -0
  197. package/dist/datepicker/segment/date-picker-segment.svelte +319 -0
  198. package/dist/datepicker/segment/date-picker-segment.svelte.d.ts +9 -0
  199. package/dist/datepicker/trigger/README.md +14 -0
  200. package/dist/datepicker/trigger/date-picker-trigger.svelte +110 -0
  201. package/dist/datepicker/trigger/date-picker-trigger.svelte.d.ts +9 -0
  202. package/dist/dialog/content/dialog-content.svelte +6 -6
  203. package/dist/dialog/index.d.ts +3 -3
  204. package/dist/dialog/index.js +2 -2
  205. package/dist/dialog/root/context.d.ts +2 -1
  206. package/dist/dialog/root/dialog-root.svelte +9 -2
  207. package/dist/hooks/use-virtual-focus.svelte.js +3 -1
  208. package/dist/index.d.ts +31 -17
  209. package/dist/index.js +31 -17
  210. package/dist/input/README.md +38 -0
  211. package/dist/input/TODO.md +12 -0
  212. package/dist/input/input-test.svelte +43 -0
  213. package/dist/input/input-test.svelte.d.ts +12 -0
  214. package/dist/input/input.svelte +151 -7
  215. package/dist/input/input.svelte.d.ts +8 -2
  216. package/dist/listbox/index.d.ts +3 -3
  217. package/dist/listbox/index.js +3 -3
  218. package/dist/listbox/item/README.md +2 -1
  219. package/dist/listbox/item/listbox-item.svelte +260 -6
  220. package/dist/listbox/item/listbox-item.svelte.d.ts +6 -0
  221. package/dist/listbox/root/context.d.ts +6 -0
  222. package/dist/listbox/root/context.js +23 -13
  223. package/dist/listbox/root/listbox-test.svelte +14 -2
  224. package/dist/listbox/root/listbox-test.svelte.d.ts +1 -0
  225. package/dist/listbox/root/listbox.svelte +49 -2
  226. package/dist/listbox/root/listbox.svelte.d.ts +4 -2
  227. package/dist/popover/README.md +10 -0
  228. package/dist/popover/content/README.md +11 -0
  229. package/dist/popover/content/popover-content-standalone-test.svelte +28 -0
  230. package/dist/popover/content/popover-content-standalone-test.svelte.d.ts +6 -0
  231. package/dist/popover/content/popover-content-test.svelte +32 -2
  232. package/dist/popover/content/popover-content-test.svelte.d.ts +3 -1
  233. package/dist/popover/content/popover-content.svelte +277 -24
  234. package/dist/popover/content/popover-content.svelte.d.ts +5 -1
  235. package/dist/popover/index.d.ts +3 -3
  236. package/dist/popover/index.js +3 -5
  237. package/dist/popover/root/README.md +10 -15
  238. package/dist/popover/root/context.d.ts +16 -7
  239. package/dist/popover/root/context.js +0 -2
  240. package/dist/popover/root/focus-state.d.ts +4 -0
  241. package/dist/popover/root/focus-state.js +33 -0
  242. package/dist/popover/root/popover-root.svelte +90 -17
  243. package/dist/popover/root/popover-root.svelte.d.ts +2 -1
  244. package/dist/popover/root/popover-test.svelte +2 -1
  245. package/dist/popover/root/popover-test.svelte.d.ts +2 -1
  246. package/dist/popover/trigger/popover-trigger-button.svelte +8 -7
  247. package/dist/popover/trigger/popover-trigger.svelte +14 -5
  248. package/dist/portal/portal.svelte +3 -1
  249. package/dist/primitives/click-outside.d.ts +1 -1
  250. package/dist/primitives/click-outside.js +1 -1
  251. package/dist/primitives/floating.js +12 -4
  252. package/dist/primitives/focus-trap.d.ts +7 -2
  253. package/dist/primitives/focus-trap.js +50 -17
  254. package/dist/primitives/index.d.ts +1 -0
  255. package/dist/primitives/index.js +1 -0
  256. package/dist/primitives/input-modality.d.ts +7 -0
  257. package/dist/primitives/input-modality.js +125 -0
  258. package/dist/primitives/keyboard-navigation.d.ts +1 -0
  259. package/dist/primitives/keyboard-navigation.js +17 -0
  260. package/dist/table/IMPLEMENTATION_NOTES.md +9 -0
  261. package/dist/table/PLAN-HIDDEN-COLUMNS.md +152 -0
  262. package/dist/table/PLAN.md +1336 -0
  263. package/dist/table/README.md +143 -0
  264. package/dist/table/SELECTION_CHECKBOX_PLAN.md +234 -0
  265. package/dist/table/TODO.md +138 -0
  266. package/dist/table/body/README.md +26 -0
  267. package/dist/table/body/table-body.svelte +24 -0
  268. package/dist/table/body/table-body.svelte.d.ts +4 -0
  269. package/dist/table/cell/README.md +27 -0
  270. package/dist/table/cell/table-cell.svelte +265 -0
  271. package/dist/table/cell/table-cell.svelte.d.ts +4 -0
  272. package/dist/table/checkbox/README.md +40 -0
  273. package/dist/table/checkbox/table-checkbox-test.svelte +128 -0
  274. package/dist/table/checkbox/table-checkbox-test.svelte.d.ts +18 -0
  275. package/dist/table/checkbox/table-checkbox.svelte +235 -0
  276. package/dist/table/checkbox/table-checkbox.svelte.d.ts +4 -0
  277. package/dist/table/checkbox-indicator/README.md +31 -0
  278. package/dist/table/checkbox-indicator/table-checkbox-indicator.svelte +15 -0
  279. package/dist/table/checkbox-indicator/table-checkbox-indicator.svelte.d.ts +4 -0
  280. package/dist/table/column/README.md +36 -0
  281. package/dist/table/column/table-column.svelte +79 -0
  282. package/dist/table/column/table-column.svelte.d.ts +4 -0
  283. package/dist/table/column-header-cell/README.md +30 -0
  284. package/dist/table/column-header-cell/table-column-header-cell.svelte +271 -0
  285. package/dist/table/column-header-cell/table-column-header-cell.svelte.d.ts +4 -0
  286. package/dist/table/column-resizer/README.md +33 -0
  287. package/dist/table/column-resizer/table-column-resizer-fixed-width-test.svelte +57 -0
  288. package/dist/table/column-resizer/table-column-resizer-fixed-width-test.svelte.d.ts +3 -0
  289. package/dist/table/column-resizer/table-column-resizer-freeze-layout-test.svelte +52 -0
  290. package/dist/table/column-resizer/table-column-resizer-freeze-layout-test.svelte.d.ts +3 -0
  291. package/dist/table/column-resizer/table-column-resizer-narrow-min-width-test.svelte +76 -0
  292. package/dist/table/column-resizer/table-column-resizer-narrow-min-width-test.svelte.d.ts +3 -0
  293. package/dist/table/column-resizer/table-column-resizer-overflow-test.svelte +64 -0
  294. package/dist/table/column-resizer/table-column-resizer-overflow-test.svelte.d.ts +3 -0
  295. package/dist/table/column-resizer/table-column-resizer-padded-container-test.svelte +67 -0
  296. package/dist/table/column-resizer/table-column-resizer-padded-container-test.svelte.d.ts +3 -0
  297. package/dist/table/column-resizer/table-column-resizer-sandbox-overflow-test.svelte +87 -0
  298. package/dist/table/column-resizer/table-column-resizer-sandbox-overflow-test.svelte.d.ts +3 -0
  299. package/dist/table/column-resizer/table-column-resizer-selection-column-test.svelte +84 -0
  300. package/dist/table/column-resizer/table-column-resizer-selection-column-test.svelte.d.ts +3 -0
  301. package/dist/table/column-resizer/table-column-resizer-test.svelte +77 -0
  302. package/dist/table/column-resizer/table-column-resizer-test.svelte.d.ts +3 -0
  303. package/dist/table/column-resizer/table-column-resizer-three-column-relative-test.svelte +64 -0
  304. package/dist/table/column-resizer/table-column-resizer-three-column-relative-test.svelte.d.ts +3 -0
  305. package/dist/table/column-resizer/table-column-resizer.svelte +610 -0
  306. package/dist/table/column-resizer/table-column-resizer.svelte.d.ts +4 -0
  307. package/dist/table/empty-state/README.md +27 -0
  308. package/dist/table/empty-state/table-empty-state.svelte +33 -0
  309. package/dist/table/empty-state/table-empty-state.svelte.d.ts +4 -0
  310. package/dist/table/footer/README.md +26 -0
  311. package/dist/table/footer/table-footer.svelte +13 -0
  312. package/dist/table/footer/table-footer.svelte.d.ts +4 -0
  313. package/dist/table/header/README.md +26 -0
  314. package/dist/table/header/table-header.svelte +13 -0
  315. package/dist/table/header/table-header.svelte.d.ts +4 -0
  316. package/dist/table/index.d.ts +18 -0
  317. package/dist/table/index.js +17 -0
  318. package/dist/table/index.parts.d.ts +13 -0
  319. package/dist/table/index.parts.js +13 -0
  320. package/dist/table/root/README.md +66 -0
  321. package/dist/table/root/context.d.ts +228 -0
  322. package/dist/table/root/context.js +2111 -0
  323. package/dist/table/root/table-reorder-test.svelte +64 -0
  324. package/dist/table/root/table-reorder-test.svelte.d.ts +3 -0
  325. package/dist/table/root/table-root.svelte +553 -0
  326. package/dist/table/root/table-root.svelte.d.ts +4 -0
  327. package/dist/table/root/table-test.svelte +206 -0
  328. package/dist/table/root/table-test.svelte.d.ts +29 -0
  329. package/dist/table/row/README.md +29 -0
  330. package/dist/table/row/table-row.svelte +244 -0
  331. package/dist/table/row/table-row.svelte.d.ts +4 -0
  332. package/dist/table/sort-trigger/README.md +45 -0
  333. package/dist/table/sort-trigger/table-sort-trigger.svelte +183 -0
  334. package/dist/table/sort-trigger/table-sort-trigger.svelte.d.ts +4 -0
  335. package/dist/table/types.d.ts +95 -0
  336. package/dist/table/types.js +1 -0
  337. package/dist/table/utils/handle-body-keydown.d.ts +13 -0
  338. package/dist/table/utils/handle-body-keydown.js +67 -0
  339. package/dist/table/utils/visually-hidden-style.d.ts +1 -0
  340. package/dist/table/utils/visually-hidden-style.js +1 -0
  341. package/dist/test-utils/focus-contract.d.ts +3 -0
  342. package/dist/test-utils/focus-contract.js +26 -0
  343. package/dist/timepicker/IMPLEMENTATION_PLAN.md +254 -0
  344. package/dist/timepicker/README.md +97 -0
  345. package/dist/timepicker/TODO.md +86 -0
  346. package/dist/timepicker/clock/README.md +14 -0
  347. package/dist/timepicker/clock/time-picker-clock-test.svelte +45 -0
  348. package/dist/timepicker/clock/time-picker-clock-test.svelte.d.ts +11 -0
  349. package/dist/timepicker/clock/time-picker-clock.svelte +65 -0
  350. package/dist/timepicker/clock/time-picker-clock.svelte.d.ts +10 -0
  351. package/dist/timepicker/index.d.ts +14 -0
  352. package/dist/timepicker/index.js +14 -0
  353. package/dist/timepicker/index.parts.d.ts +8 -0
  354. package/dist/timepicker/index.parts.js +8 -0
  355. package/dist/timepicker/input/README.md +15 -0
  356. package/dist/timepicker/input/time-picker-input-forwarding-test.svelte +40 -0
  357. package/dist/timepicker/input/time-picker-input-forwarding-test.svelte.d.ts +3 -0
  358. package/dist/timepicker/input/time-picker-input.svelte +109 -0
  359. package/dist/timepicker/input/time-picker-input.svelte.d.ts +11 -0
  360. package/dist/timepicker/internal/strict-props.d.ts +4 -0
  361. package/dist/timepicker/internal/strict-props.js +51 -0
  362. package/dist/timepicker/popover/README.md +20 -0
  363. package/dist/timepicker/popover/time-picker-popover-unsafe-props-test.svelte +22 -0
  364. package/dist/timepicker/popover/time-picker-popover-unsafe-props-test.svelte.d.ts +3 -0
  365. package/dist/timepicker/popover/time-picker-popover.svelte +89 -0
  366. package/dist/timepicker/popover/time-picker-popover.svelte.d.ts +7 -0
  367. package/dist/timepicker/root/README.md +42 -0
  368. package/dist/timepicker/root/context.d.ts +51 -0
  369. package/dist/timepicker/root/context.js +15 -0
  370. package/dist/timepicker/root/time-picker-12h-test.svelte +22 -0
  371. package/dist/timepicker/root/time-picker-12h-test.svelte.d.ts +3 -0
  372. package/dist/timepicker/root/time-picker-bindable-test.svelte +25 -0
  373. package/dist/timepicker/root/time-picker-bindable-test.svelte.d.ts +3 -0
  374. package/dist/timepicker/root/time-picker-empty-test.svelte +20 -0
  375. package/dist/timepicker/root/time-picker-empty-test.svelte.d.ts +3 -0
  376. package/dist/timepicker/root/time-picker-root.svelte +625 -0
  377. package/dist/timepicker/root/time-picker-root.svelte.d.ts +28 -0
  378. package/dist/timepicker/root/time-picker-test.svelte +72 -0
  379. package/dist/timepicker/root/time-picker-test.svelte.d.ts +15 -0
  380. package/dist/timepicker/root/time-utils.d.ts +1 -0
  381. package/dist/timepicker/root/time-utils.js +3 -0
  382. package/dist/timepicker/segment/README.md +14 -0
  383. package/dist/timepicker/segment/time-picker-segment.svelte +365 -0
  384. package/dist/timepicker/segment/time-picker-segment.svelte.d.ts +9 -0
  385. package/dist/timepicker/trigger/README.md +14 -0
  386. package/dist/timepicker/trigger/time-picker-trigger-forwarding-test.svelte +35 -0
  387. package/dist/timepicker/trigger/time-picker-trigger-forwarding-test.svelte.d.ts +3 -0
  388. package/dist/timepicker/trigger/time-picker-trigger.svelte +122 -0
  389. package/dist/timepicker/trigger/time-picker-trigger.svelte.d.ts +9 -0
  390. package/dist/utils/date-only.d.ts +11 -0
  391. package/dist/utils/date-only.js +53 -0
  392. package/dist/utils/index.d.ts +1 -0
  393. package/dist/utils/index.js +1 -0
  394. package/package.json +31 -1
@@ -0,0 +1,47 @@
1
+ # Checkbox Root
2
+
3
+ ## API reference
4
+
5
+ ### Checkbox.Root
6
+
7
+ Name: `Checkbox.Root`
8
+ Description: Interactive tri-state checkbox root that owns checked, indeterminate, focus, and hidden input synchronization.
9
+
10
+ | Prop | Type | Default | Description |
11
+ | ----------------------- | ---------------------------------- | ------------- | ---------------------------------------------------------------- |
12
+ | `id` | `string` | `$props.id()` | Stable id used for the hidden input and derived root id. |
13
+ | `name` | `string` | `undefined` | Form field name forwarded to the hidden native input. |
14
+ | `value` | `string` | `'on'` | Submitted value when the checkbox is checked. |
15
+ | `isChecked` | `boolean` | `undefined` | Controlled checked state. Supports `bind:isChecked`. |
16
+ | `defaultChecked` | `boolean` | `false` | Initial checked state in uncontrolled mode. |
17
+ | `isIndeterminate` | `boolean` | `undefined` | Controlled indeterminate state. Supports `bind:isIndeterminate`. |
18
+ | `defaultIndeterminate` | `boolean` | `false` | Initial indeterminate state in uncontrolled mode. |
19
+ | `onCheckedChange` | `(checked: boolean) => void` | `undefined` | Called when the effective checked state changes. |
20
+ | `onIndeterminateChange` | `(indeterminate: boolean) => void` | `undefined` | Called when the effective indeterminate state changes. |
21
+ | `isDisabled` | `boolean` | `false` | Prevents focus and state changes. |
22
+ | `isReadOnly` | `boolean` | `false` | Allows focus but blocks user-driven state changes. |
23
+ | `required` | `boolean` | `false` | Marks the hidden input as required and exposes `data-required`. |
24
+ | `children` | `Snippet` | `undefined` | Composed checkbox parts such as `Checkbox.Indicator`. |
25
+ | `class` | `string` | `''` | CSS class names for the root element. |
26
+ | `...restProps` | `HTMLAttributes<HTMLSpanElement>` | `-` | Additional attributes forwarded to the checkbox root span. |
27
+
28
+ ### Context utilities
29
+
30
+ Name: `context.ts` helpers
31
+ Description: Internal APIs for publishing and consuming checkbox state.
32
+
33
+ | Prop | Type | Default | Description |
34
+ | -------------------- | ------------------------------------ | ------- | -------------------------------------------------- |
35
+ | `setCheckboxContext` | `(ctx: CheckboxContext) => void` | `-` | Registers the checkbox context in root. |
36
+ | `getCheckboxContext` | `() => CheckboxContext \| undefined` | `-` | Returns the context when available. |
37
+ | `useCheckboxContext` | `() => CheckboxContext` | `-` | Returns the context and throws outside root usage. |
38
+
39
+ `CheckboxState` is the internal state union used by the root context: `'checked' | 'unchecked' | 'indeterminate'`.
40
+
41
+ ```svelte
42
+ <Checkbox.Root bind:isChecked bind:isIndeterminate aria-label="Notifications">
43
+ <Checkbox.Indicator>
44
+ <CheckIcon />
45
+ </Checkbox.Indicator>
46
+ </Checkbox.Root>
47
+ ```
@@ -0,0 +1,10 @@
1
+ <script lang="ts">
2
+ import { Checkbox } from '../index.ts';
3
+ </script>
4
+
5
+ <label for="notifications">Enable notifications</label>
6
+ <Checkbox.Root id="notifications" aria-label="Notifications">
7
+ <Checkbox.Indicator>
8
+ <span data-checkbox-icon="true">icon</span>
9
+ </Checkbox.Indicator>
10
+ </Checkbox.Root>
@@ -0,0 +1,18 @@
1
+ interface $$__sveltets_2_IsomorphicComponent<Props extends Record<string, any> = any, Events extends Record<string, any> = any, Slots extends Record<string, any> = any, Exports = {}, Bindings = string> {
2
+ new (options: import('svelte').ComponentConstructorOptions<Props>): import('svelte').SvelteComponent<Props, Events, Slots> & {
3
+ $$bindings?: Bindings;
4
+ } & Exports;
5
+ (internal: unknown, props: {
6
+ $$events?: Events;
7
+ $$slots?: Slots;
8
+ }): Exports & {
9
+ $set?: any;
10
+ $on?: any;
11
+ };
12
+ z_$$bindings?: Bindings;
13
+ }
14
+ declare const CheckboxLabelTest: $$__sveltets_2_IsomorphicComponent<Record<string, never>, {
15
+ [evt: string]: CustomEvent<any>;
16
+ }, {}, {}, string>;
17
+ type CheckboxLabelTest = InstanceType<typeof CheckboxLabelTest>;
18
+ export default CheckboxLabelTest;
@@ -0,0 +1,386 @@
1
+ <script lang="ts">
2
+ import { untrack, type Snippet } from 'svelte';
3
+ import type { HTMLAttributes } from 'svelte/elements';
4
+ import {
5
+ shouldShowFocusVisible,
6
+ trackInteractionModality
7
+ } from '../../primitives/input-modality';
8
+ import { cn } from '../../utils/cn';
9
+ import { setCheckboxContext, type CheckboxContext, type CheckboxState } from './context';
10
+
11
+ type CheckboxRootProps = Omit<
12
+ HTMLAttributes<HTMLSpanElement>,
13
+ | 'children'
14
+ | 'class'
15
+ | 'id'
16
+ | 'role'
17
+ | 'aria-checked'
18
+ | 'aria-disabled'
19
+ | 'aria-readonly'
20
+ | 'aria-required'
21
+ | 'onclick'
22
+ | 'onkeydown'
23
+ | 'value'
24
+ > & {
25
+ id?: string;
26
+ element?: HTMLSpanElement | null;
27
+ name?: string;
28
+ value?: string;
29
+ isChecked?: boolean;
30
+ defaultChecked?: boolean;
31
+ isIndeterminate?: boolean;
32
+ defaultIndeterminate?: boolean;
33
+ onCheckedChange?: (checked: boolean) => void;
34
+ onIndeterminateChange?: (indeterminate: boolean) => void;
35
+ isDisabled?: boolean;
36
+ isReadOnly?: boolean;
37
+ required?: boolean;
38
+ children?: Snippet;
39
+ class?: string;
40
+ 'aria-label'?: string;
41
+ 'aria-labelledby'?: string;
42
+ tabindex?: number;
43
+ onclick?: HTMLAttributes<HTMLSpanElement>['onclick'];
44
+ onkeydown?: HTMLAttributes<HTMLSpanElement>['onkeydown'];
45
+ onfocus?: HTMLAttributes<HTMLSpanElement>['onfocus'];
46
+ onmousedown?: HTMLAttributes<HTMLSpanElement>['onmousedown'];
47
+ };
48
+
49
+ function composeEventHandlers<TEvent extends Event>(
50
+ internalHandler: ((event: TEvent) => void) | undefined,
51
+ externalHandler: ((event: TEvent) => void) | undefined
52
+ ): (event: TEvent) => void {
53
+ return (event: TEvent) => {
54
+ internalHandler?.(event);
55
+ externalHandler?.(event);
56
+ };
57
+ }
58
+
59
+ function resolveState(isChecked: boolean, isIndeterminate: boolean): CheckboxState {
60
+ if (isIndeterminate) return 'indeterminate';
61
+ return isChecked ? 'checked' : 'unchecked';
62
+ }
63
+
64
+ function getNextState(currentState: CheckboxState): CheckboxState {
65
+ if (currentState === 'indeterminate') return 'checked';
66
+ if (currentState === 'checked') return 'unchecked';
67
+ return 'checked';
68
+ }
69
+
70
+ const generatedId = $props.id();
71
+
72
+ let {
73
+ id,
74
+ element = $bindable(),
75
+ name,
76
+ value = 'on',
77
+ isChecked = $bindable(),
78
+ defaultChecked = false,
79
+ isIndeterminate = $bindable(),
80
+ defaultIndeterminate = false,
81
+ onCheckedChange,
82
+ onIndeterminateChange,
83
+ isDisabled = false,
84
+ isReadOnly = false,
85
+ required = false,
86
+ children,
87
+ class: className = '',
88
+ 'aria-label': ariaLabel,
89
+ 'aria-labelledby': ariaLabelledby,
90
+ tabindex,
91
+ onclick: onClickExternal,
92
+ onkeydown: onKeyDownExternal,
93
+ onfocus: onFocusExternal,
94
+ onmousedown: onMouseDownExternal,
95
+ ...restProps
96
+ }: CheckboxRootProps = $props();
97
+
98
+ const instanceId = untrack(() => id) ?? generatedId;
99
+ const inputId = instanceId;
100
+ const rootId = `${instanceId}-root`;
101
+
102
+ const initialChecked = untrack(() => isChecked ?? defaultChecked);
103
+ const initialIndeterminate = untrack(() => isIndeterminate ?? defaultIndeterminate);
104
+ const initialState = resolveState(initialChecked, initialIndeterminate);
105
+
106
+ let checkedInternal = $state(initialState === 'checked');
107
+ let indeterminateInternal = $state(initialState === 'indeterminate');
108
+ let pressed = $state(false);
109
+ let pressedKey: 'Enter' | 'Space' | null = $state(null);
110
+ let focused = $state(false);
111
+ let focusVisible = $state(false);
112
+ let rootRef: HTMLSpanElement | null = $state(null);
113
+ let inputRef: HTMLInputElement | null = $state(null);
114
+
115
+ $effect(() => {
116
+ element = rootRef;
117
+ });
118
+
119
+ if (untrack(() => isChecked) === undefined) {
120
+ isChecked = initialState === 'checked';
121
+ }
122
+
123
+ if (untrack(() => isIndeterminate) === undefined) {
124
+ isIndeterminate = initialState === 'indeterminate';
125
+ }
126
+
127
+ const isCheckedControlled = $derived(isChecked !== undefined);
128
+ const isIndeterminateControlled = $derived(isIndeterminate !== undefined);
129
+
130
+ const currentState = $derived.by(() =>
131
+ resolveState(
132
+ isCheckedControlled ? Boolean(isChecked) : checkedInternal,
133
+ isIndeterminateControlled ? Boolean(isIndeterminate) : indeterminateInternal
134
+ )
135
+ );
136
+
137
+ const currentChecked = $derived(currentState === 'checked');
138
+ const currentIndeterminate = $derived(currentState === 'indeterminate');
139
+ const currentUnchecked = $derived(currentState === 'unchecked');
140
+
141
+ function publishState(nextState: CheckboxState, event?: Event) {
142
+ const nextChecked = nextState === 'checked';
143
+ const nextIndeterminate = nextState === 'indeterminate';
144
+ const previousChecked = currentChecked;
145
+ const previousIndeterminate = currentIndeterminate;
146
+
147
+ if (!isCheckedControlled) {
148
+ checkedInternal = nextChecked;
149
+ }
150
+
151
+ if (!isIndeterminateControlled) {
152
+ indeterminateInternal = nextIndeterminate;
153
+ }
154
+
155
+ isChecked = nextChecked;
156
+ isIndeterminate = nextIndeterminate;
157
+
158
+ if (nextChecked !== previousChecked) {
159
+ onCheckedChange?.(nextChecked);
160
+ }
161
+
162
+ if (nextIndeterminate !== previousIndeterminate) {
163
+ onIndeterminateChange?.(nextIndeterminate);
164
+ }
165
+
166
+ if (event && rootRef && document.activeElement !== rootRef) {
167
+ rootRef.focus();
168
+ }
169
+ }
170
+
171
+ function setState(nextState: CheckboxState, event?: Event) {
172
+ if (isDisabled || isReadOnly) return;
173
+ publishState(nextState, event);
174
+ }
175
+
176
+ function toggle(event?: Event) {
177
+ setState(getNextState(currentState), event);
178
+ }
179
+
180
+ function requestNativeToggle(event?: Event) {
181
+ if (isDisabled || isReadOnly) return;
182
+ if (!inputRef) {
183
+ toggle(event);
184
+ return;
185
+ }
186
+
187
+ inputRef.click();
188
+ }
189
+
190
+ function handleClick(event: MouseEvent) {
191
+ trackInteractionModality(event, rootRef);
192
+
193
+ if (event.defaultPrevented) return;
194
+ if (isDisabled || isReadOnly) {
195
+ event.preventDefault();
196
+ return;
197
+ }
198
+
199
+ event.preventDefault();
200
+ requestNativeToggle(event);
201
+ }
202
+
203
+ function handleKeyDown(event: KeyboardEvent) {
204
+ if (event.defaultPrevented) return;
205
+ if (event.key !== ' ' && event.key !== 'Spacebar' && event.key !== 'Enter') return;
206
+
207
+ trackInteractionModality(event, rootRef);
208
+ if (focused) {
209
+ focusVisible = true;
210
+ } else {
211
+ focusVisible = shouldShowFocusVisible(rootRef);
212
+ }
213
+ event.preventDefault();
214
+
215
+ if (event.repeat && pressed) return;
216
+
217
+ pressed = true;
218
+ pressedKey = event.key === 'Enter' ? 'Enter' : 'Space';
219
+ }
220
+
221
+ function handleKeyUp(event: KeyboardEvent) {
222
+ if (event.defaultPrevented) return;
223
+
224
+ const releasedKey =
225
+ event.key === 'Enter'
226
+ ? 'Enter'
227
+ : event.key === ' ' || event.key === 'Spacebar'
228
+ ? 'Space'
229
+ : null;
230
+ if (!releasedKey) return;
231
+
232
+ trackInteractionModality(event, rootRef);
233
+ if (focused) {
234
+ focusVisible = true;
235
+ } else {
236
+ focusVisible = shouldShowFocusVisible(rootRef);
237
+ }
238
+ event.preventDefault();
239
+
240
+ const shouldToggle = pressed && pressedKey === releasedKey;
241
+ pressed = false;
242
+ pressedKey = null;
243
+
244
+ if (!shouldToggle) return;
245
+ requestNativeToggle(event);
246
+ }
247
+
248
+ function handlePointerDown(event: PointerEvent | MouseEvent) {
249
+ trackInteractionModality(event, rootRef);
250
+ focusVisible = false;
251
+ }
252
+
253
+ function handleFocus() {
254
+ focused = true;
255
+ focusVisible = shouldShowFocusVisible(rootRef);
256
+ }
257
+
258
+ function handleBlur() {
259
+ focused = false;
260
+ focusVisible = false;
261
+ pressed = false;
262
+ pressedKey = null;
263
+ }
264
+
265
+ function handleInputChange(event: Event) {
266
+ const target = event.currentTarget;
267
+ if (!(target instanceof HTMLInputElement)) return;
268
+
269
+ const nextState = resolveState(target.checked, target.indeterminate);
270
+ publishState(nextState, event);
271
+ }
272
+
273
+ function handleInputFocus() {
274
+ rootRef?.focus();
275
+ }
276
+
277
+ function handleInputClick(event: MouseEvent) {
278
+ event.stopPropagation();
279
+ }
280
+
281
+ $effect(() => {
282
+ if (!inputRef) return;
283
+ inputRef.checked = currentChecked;
284
+ inputRef.indeterminate = currentIndeterminate;
285
+ });
286
+
287
+ setCheckboxContext({
288
+ get id() {
289
+ return rootId;
290
+ },
291
+ get inputId() {
292
+ return inputId;
293
+ },
294
+ get inputRef() {
295
+ return inputRef;
296
+ },
297
+ setInputRef(element) {
298
+ inputRef = element;
299
+ },
300
+ get state() {
301
+ return currentState;
302
+ },
303
+ get pressed() {
304
+ return pressed;
305
+ },
306
+ get isChecked() {
307
+ return currentChecked;
308
+ },
309
+ get isIndeterminate() {
310
+ return currentIndeterminate;
311
+ },
312
+ get isDisabled() {
313
+ return isDisabled;
314
+ },
315
+ get isReadOnly() {
316
+ return isReadOnly;
317
+ },
318
+ get required() {
319
+ return required;
320
+ },
321
+ get focused() {
322
+ return focused;
323
+ },
324
+ get focusVisible() {
325
+ return focusVisible;
326
+ },
327
+ toggle,
328
+ setState
329
+ } satisfies CheckboxContext);
330
+ </script>
331
+
332
+ <span
333
+ {...restProps}
334
+ bind:this={rootRef}
335
+ id={rootId}
336
+ role="checkbox"
337
+ tabindex={isDisabled ? undefined : (tabindex ?? 0)}
338
+ aria-checked={currentIndeterminate ? 'mixed' : currentChecked ? 'true' : 'false'}
339
+ aria-disabled={isDisabled || undefined}
340
+ aria-readonly={isReadOnly || undefined}
341
+ aria-required={required || undefined}
342
+ aria-label={ariaLabel}
343
+ aria-labelledby={ariaLabelledby}
344
+ data-checkbox-root="true"
345
+ data-checked={currentChecked || undefined}
346
+ data-unchecked={currentUnchecked || undefined}
347
+ data-indeterminate={currentIndeterminate || undefined}
348
+ data-pressed={pressed || undefined}
349
+ data-disabled={isDisabled || undefined}
350
+ data-readonly={isReadOnly || undefined}
351
+ data-required={required || undefined}
352
+ data-focused={focused || undefined}
353
+ data-focus-visible={focusVisible || undefined}
354
+ onclick={composeEventHandlers(onClickExternal ?? undefined, handleClick)}
355
+ onkeydown={composeEventHandlers(handleKeyDown, onKeyDownExternal ?? undefined)}
356
+ onkeyup={handleKeyUp}
357
+ onpointerdown={handlePointerDown}
358
+ onmousedown={composeEventHandlers(onMouseDownExternal ?? undefined, handlePointerDown)}
359
+ onfocus={composeEventHandlers(handleFocus, onFocusExternal ?? undefined)}
360
+ onblur={handleBlur}
361
+ class={cn(
362
+ 'relative inline-flex shrink-0 items-center justify-center align-middle outline-none',
363
+ className
364
+ )}
365
+ >
366
+ <input
367
+ bind:this={inputRef}
368
+ id={inputId}
369
+ tabindex={-1}
370
+ type="checkbox"
371
+ {name}
372
+ {value}
373
+ checked={currentChecked}
374
+ disabled={isDisabled}
375
+ {required}
376
+ readonly={isReadOnly}
377
+ aria-hidden="true"
378
+ data-checkbox-input="true"
379
+ onclick={handleInputClick}
380
+ onchange={handleInputChange}
381
+ onfocus={handleInputFocus}
382
+ style="position:absolute;inset:0;width:100%;height:100%;margin:0;padding:0;border:0;opacity:0;cursor:inherit;pointer-events:none;"
383
+ />
384
+
385
+ {@render children?.()}
386
+ </span>
@@ -0,0 +1,29 @@
1
+ import { type Snippet } from 'svelte';
2
+ import type { HTMLAttributes } from 'svelte/elements';
3
+ type CheckboxRootProps = Omit<HTMLAttributes<HTMLSpanElement>, 'children' | 'class' | 'id' | 'role' | 'aria-checked' | 'aria-disabled' | 'aria-readonly' | 'aria-required' | 'onclick' | 'onkeydown' | 'value'> & {
4
+ id?: string;
5
+ element?: HTMLSpanElement | null;
6
+ name?: string;
7
+ value?: string;
8
+ isChecked?: boolean;
9
+ defaultChecked?: boolean;
10
+ isIndeterminate?: boolean;
11
+ defaultIndeterminate?: boolean;
12
+ onCheckedChange?: (checked: boolean) => void;
13
+ onIndeterminateChange?: (indeterminate: boolean) => void;
14
+ isDisabled?: boolean;
15
+ isReadOnly?: boolean;
16
+ required?: boolean;
17
+ children?: Snippet;
18
+ class?: string;
19
+ 'aria-label'?: string;
20
+ 'aria-labelledby'?: string;
21
+ tabindex?: number;
22
+ onclick?: HTMLAttributes<HTMLSpanElement>['onclick'];
23
+ onkeydown?: HTMLAttributes<HTMLSpanElement>['onkeydown'];
24
+ onfocus?: HTMLAttributes<HTMLSpanElement>['onfocus'];
25
+ onmousedown?: HTMLAttributes<HTMLSpanElement>['onmousedown'];
26
+ };
27
+ declare const CheckboxRoot: import("svelte").Component<CheckboxRootProps, {}, "element" | "isChecked" | "isIndeterminate">;
28
+ type CheckboxRoot = ReturnType<typeof CheckboxRoot>;
29
+ export default CheckboxRoot;
@@ -0,0 +1,59 @@
1
+ <script lang="ts">
2
+ import { Checkbox } from '../index';
3
+
4
+ type Props = {
5
+ id?: string;
6
+ name?: string;
7
+ value?: string;
8
+ isChecked?: boolean;
9
+ defaultChecked?: boolean;
10
+ isIndeterminate?: boolean;
11
+ defaultIndeterminate?: boolean;
12
+ isDisabled?: boolean;
13
+ isReadOnly?: boolean;
14
+ required?: boolean;
15
+ keepMounted?: boolean;
16
+ onCheckedChange?: (checked: boolean) => void;
17
+ onIndeterminateChange?: (indeterminate: boolean) => void;
18
+ };
19
+
20
+ let {
21
+ id,
22
+ name,
23
+ value = 'newsletter',
24
+ isChecked = $bindable(),
25
+ defaultChecked = false,
26
+ isIndeterminate = $bindable(),
27
+ defaultIndeterminate = false,
28
+ isDisabled = false,
29
+ isReadOnly = false,
30
+ required = false,
31
+ keepMounted = false,
32
+ onCheckedChange,
33
+ onIndeterminateChange
34
+ }: Props = $props();
35
+ </script>
36
+
37
+ <Checkbox.Root
38
+ {id}
39
+ {name}
40
+ {value}
41
+ bind:isChecked
42
+ {defaultChecked}
43
+ bind:isIndeterminate
44
+ {defaultIndeterminate}
45
+ {isDisabled}
46
+ {isReadOnly}
47
+ {required}
48
+ {onCheckedChange}
49
+ {onIndeterminateChange}
50
+ class="inline-flex h-5 w-5 items-center justify-center"
51
+ aria-label="Accept terms"
52
+ >
53
+ <Checkbox.Indicator {keepMounted}>
54
+ <span data-checkbox-icon="true">icon</span>
55
+ </Checkbox.Indicator>
56
+ </Checkbox.Root>
57
+
58
+ <output data-checked-state>{String(isChecked ?? false)}</output>
59
+ <output data-indeterminate-state>{String(isIndeterminate ?? false)}</output>
@@ -0,0 +1,18 @@
1
+ type Props = {
2
+ id?: string;
3
+ name?: string;
4
+ value?: string;
5
+ isChecked?: boolean;
6
+ defaultChecked?: boolean;
7
+ isIndeterminate?: boolean;
8
+ defaultIndeterminate?: boolean;
9
+ isDisabled?: boolean;
10
+ isReadOnly?: boolean;
11
+ required?: boolean;
12
+ keepMounted?: boolean;
13
+ onCheckedChange?: (checked: boolean) => void;
14
+ onIndeterminateChange?: (indeterminate: boolean) => void;
15
+ };
16
+ declare const CheckboxTest: import("svelte").Component<Props, {}, "isChecked" | "isIndeterminate">;
17
+ type CheckboxTest = ReturnType<typeof CheckboxTest>;
18
+ export default CheckboxTest;
@@ -0,0 +1,21 @@
1
+ export type CheckboxState = 'checked' | 'unchecked' | 'indeterminate';
2
+ export type CheckboxContext = {
3
+ id: string;
4
+ inputId: string;
5
+ inputRef: HTMLInputElement | null;
6
+ setInputRef: (element: HTMLInputElement | null) => void;
7
+ state: CheckboxState;
8
+ pressed: boolean;
9
+ isChecked: boolean;
10
+ isIndeterminate: boolean;
11
+ isDisabled: boolean;
12
+ isReadOnly: boolean;
13
+ required: boolean;
14
+ focused: boolean;
15
+ focusVisible: boolean;
16
+ toggle: (event?: Event) => void;
17
+ setState: (state: CheckboxState, event?: Event) => void;
18
+ };
19
+ export declare function setCheckboxContext(context: CheckboxContext): void;
20
+ export declare function getCheckboxContext(): CheckboxContext | undefined;
21
+ export declare function useCheckboxContext(): CheckboxContext;
@@ -0,0 +1,15 @@
1
+ import { getContext, setContext } from 'svelte';
2
+ const CHECKBOX_CONTEXT_KEY = Symbol('checkbox');
3
+ export function setCheckboxContext(context) {
4
+ setContext(CHECKBOX_CONTEXT_KEY, context);
5
+ }
6
+ export function getCheckboxContext() {
7
+ return getContext(CHECKBOX_CONTEXT_KEY);
8
+ }
9
+ export function useCheckboxContext() {
10
+ const context = getCheckboxContext();
11
+ if (!context) {
12
+ throw new Error('Checkbox components must be used within Checkbox.Root.');
13
+ }
14
+ return context;
15
+ }
@@ -0,0 +1,75 @@
1
+ # Clock
2
+
3
+ ## Description
4
+
5
+ `Clock` provides a standalone wheel-based time picker with spinbutton columns for hour, minute, second, and day-period selection. It can be used independently or composed inside `TimePicker` via `TimePicker.Clock`.
6
+
7
+ ## Anatomy
8
+
9
+ - `Clock.Root`
10
+ - `Clock.Axis`
11
+ - `Clock.WheelColumn`
12
+ - `Clock.WheelItem`
13
+
14
+ ```svelte
15
+ <Clock.Root value="14:30" granularity="minute" hourCycle={24} class="flex gap-2">
16
+ {#snippet column(col)}
17
+ <Clock.WheelColumn type={col.type} class="h-44 w-16">
18
+ {#snippet children(option)}
19
+ <Clock.WheelItem type={col.type} {option} class="..." />
20
+ {/snippet}
21
+ </Clock.WheelColumn>
22
+ {/snippet}
23
+ <Clock.Axis class="rounded-md ring-1 ring-inset" />
24
+ </Clock.Root>
25
+ ```
26
+
27
+ Default columns are rendered automatically when no `column` snippet is provided:
28
+
29
+ ```svelte
30
+ <Clock.Root value="09:00" granularity="minute" hourCycle={24} />
31
+ ```
32
+
33
+ ## Root API
34
+
35
+ - `value?: string | null` (`HH:mm` or `HH:mm:ss`)
36
+ - `defaultValue?: string | null` (`HH:mm` or `HH:mm:ss`)
37
+ - `onChange?: (value: string | null) => void`
38
+ - `minValue?: string`
39
+ - `maxValue?: string`
40
+ - `hourCycle?: 12 | 24` (defaults to locale)
41
+ - `granularity?: 'hour' | 'minute' | 'second'` (defaults to `'minute'`)
42
+ - `hourStep?: number`
43
+ - `minuteStep?: number`
44
+ - `secondStep?: number`
45
+ - `isDisabled?: boolean`
46
+ - `column?: Snippet<[ClockColumnInfo]>` — custom per-column rendering
47
+ - `children?: Snippet` — arbitrary children. When `column` is used, children render after columns (useful for overlays like `Clock.Axis`).
48
+ - `class?: string`
49
+ - `aria-label?: string`
50
+
51
+ Visible columns are resolved automatically in stable order: `hour → minute? → second? → dayPeriod?`.
52
+
53
+ ## Wheel API
54
+
55
+ - `Clock.Axis` renders a root-level visual overlay (for example, a central selection band) across all columns.
56
+ - `Clock.WheelColumn` renders one wheel (`role="spinbutton"`) for one editable segment (`hour`, `minute`, `second`, or `dayPeriod`).
57
+ - `Clock.WheelItem` is headless: it renders one item (`data-wheel-item`) with state attributes (`data-selected`, `data-disabled`, `data-centered`) and leaves all visual styling to consumers.
58
+ - `ClockColumnInfo` shape:
59
+ - `type: 'hour' | 'minute' | 'second' | 'dayPeriod'`
60
+ - `label?: string`
61
+
62
+ ## Accessibility
63
+
64
+ - Each wheel column exposes `role="spinbutton"` with `aria-valuenow`, `aria-valuetext`, `aria-valuemin`, and `aria-valuemax`.
65
+ - `ArrowUp/ArrowDown`: change value by one step.
66
+ - `ArrowLeft/ArrowRight`: move focus between columns.
67
+ - `Home/End`: jump to first/last value in the column.
68
+
69
+ ## Notes
70
+
71
+ - Locale is read from `LocaleProvider` when available.
72
+ - Internally, values are normalized to 24-hour representation; 12-hour rendering only affects UI segments.
73
+ - `granularity='hour'` emits `HH:00` values.
74
+ - Min/max comparisons do not support midnight-wrapping ranges.
75
+ - Wheel selection commits immediately on snap.