@human-kit/svelte-components 1.0.0-alpha.1 → 1.0.0-alpha.10

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 (424) 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 +66 -0
  15. package/dist/calendar/TODO.md +23 -0
  16. package/dist/calendar/body-cell/README.md +15 -0
  17. package/dist/calendar/body-cell/calendar-body-cell.svelte +230 -0
  18. package/dist/calendar/body-cell/calendar-body-cell.svelte.d.ts +9 -0
  19. package/dist/calendar/grid/README.md +13 -0
  20. package/dist/calendar/grid/calendar-grid-month-scope.svelte +16 -0
  21. package/dist/calendar/grid/calendar-grid-month-scope.svelte.d.ts +8 -0
  22. package/dist/calendar/grid/calendar-grid.svelte +45 -0
  23. package/dist/calendar/grid/calendar-grid.svelte.d.ts +8 -0
  24. package/dist/calendar/grid/month-scope.d.ts +2 -0
  25. package/dist/calendar/grid/month-scope.js +8 -0
  26. package/dist/calendar/grid-body/README.md +13 -0
  27. package/dist/calendar/grid-body/calendar-grid-body-custom-test.svelte +13 -0
  28. package/dist/calendar/grid-body/calendar-grid-body-custom-test.svelte.d.ts +18 -0
  29. package/dist/calendar/grid-body/calendar-grid-body.svelte +36 -0
  30. package/dist/calendar/grid-body/calendar-grid-body.svelte.d.ts +8 -0
  31. package/dist/calendar/grid-header/README.md +13 -0
  32. package/dist/calendar/grid-header/calendar-grid-header-custom-test.svelte +13 -0
  33. package/dist/calendar/grid-header/calendar-grid-header-custom-test.svelte.d.ts +18 -0
  34. package/dist/calendar/grid-header/calendar-grid-header.svelte +31 -0
  35. package/dist/calendar/grid-header/calendar-grid-header.svelte.d.ts +8 -0
  36. package/dist/calendar/header-cell/README.md +14 -0
  37. package/dist/calendar/header-cell/calendar-header-cell-test.svelte +11 -0
  38. package/dist/calendar/header-cell/calendar-header-cell-test.svelte.d.ts +18 -0
  39. package/dist/calendar/header-cell/calendar-header-cell.svelte +16 -0
  40. package/dist/calendar/header-cell/calendar-header-cell.svelte.d.ts +8 -0
  41. package/dist/calendar/heading/README.md +13 -0
  42. package/dist/calendar/heading/calendar-heading.svelte +17 -0
  43. package/dist/calendar/heading/calendar-heading.svelte.d.ts +5 -0
  44. package/dist/calendar/index.d.ts +13 -0
  45. package/dist/calendar/index.js +13 -0
  46. package/dist/calendar/index.parts.d.ts +9 -0
  47. package/dist/calendar/index.parts.js +9 -0
  48. package/dist/calendar/root/README.md +24 -0
  49. package/dist/calendar/root/calendar-root-bind-value-test.svelte +14 -0
  50. package/dist/calendar/root/calendar-root-bind-value-test.svelte.d.ts +3 -0
  51. package/dist/calendar/root/calendar-root-controlled-clear-test.svelte +20 -0
  52. package/dist/calendar/root/calendar-root-controlled-clear-test.svelte.d.ts +3 -0
  53. package/dist/calendar/root/calendar-root-test.svelte +71 -0
  54. package/dist/calendar/root/calendar-root-test.svelte.d.ts +13 -0
  55. package/dist/calendar/root/calendar-root.svelte +143 -0
  56. package/dist/calendar/root/calendar-root.svelte.d.ts +31 -0
  57. package/dist/calendar/root/context.d.ts +66 -0
  58. package/dist/calendar/root/context.js +727 -0
  59. package/dist/calendar/root/date-utils.d.ts +17 -0
  60. package/dist/calendar/root/date-utils.js +94 -0
  61. package/dist/calendar/trigger-next/README.md +14 -0
  62. package/dist/calendar/trigger-next/calendar-trigger-next.svelte +43 -0
  63. package/dist/calendar/trigger-next/calendar-trigger-next.svelte.d.ts +9 -0
  64. package/dist/calendar/trigger-previous/README.md +14 -0
  65. package/dist/calendar/trigger-previous/calendar-trigger-previous.svelte +43 -0
  66. package/dist/calendar/trigger-previous/calendar-trigger-previous.svelte.d.ts +9 -0
  67. package/dist/checkbox/README.md +53 -0
  68. package/dist/checkbox/TODO.md +16 -0
  69. package/dist/checkbox/index.d.ts +6 -0
  70. package/dist/checkbox/index.js +6 -0
  71. package/dist/checkbox/index.parts.d.ts +2 -0
  72. package/dist/checkbox/index.parts.js +2 -0
  73. package/dist/checkbox/indicator/README.md +23 -0
  74. package/dist/checkbox/indicator/checkbox-indicator.svelte +43 -0
  75. package/dist/checkbox/indicator/checkbox-indicator.svelte.d.ts +10 -0
  76. package/dist/checkbox/root/README.md +47 -0
  77. package/dist/checkbox/root/checkbox-label-test.svelte +10 -0
  78. package/dist/checkbox/root/checkbox-label-test.svelte.d.ts +18 -0
  79. package/dist/checkbox/root/checkbox-root.svelte +361 -0
  80. package/dist/checkbox/root/checkbox-root.svelte.d.ts +23 -0
  81. package/dist/checkbox/root/checkbox-test.svelte +59 -0
  82. package/dist/checkbox/root/checkbox-test.svelte.d.ts +18 -0
  83. package/dist/checkbox/root/context.d.ts +21 -0
  84. package/dist/checkbox/root/context.js +15 -0
  85. package/dist/clock/README.md +75 -0
  86. package/dist/clock/axis/README.md +24 -0
  87. package/dist/clock/axis/clock-axis.svelte +37 -0
  88. package/dist/clock/axis/clock-axis.svelte.d.ts +8 -0
  89. package/dist/clock/hooks/use-wheel-scroll.svelte.d.ts +16 -0
  90. package/dist/clock/hooks/use-wheel-scroll.svelte.js +336 -0
  91. package/dist/clock/index.d.ts +10 -0
  92. package/dist/clock/index.js +10 -0
  93. package/dist/clock/index.parts.d.ts +4 -0
  94. package/dist/clock/index.parts.js +4 -0
  95. package/dist/clock/root/README.md +38 -0
  96. package/dist/clock/root/clock-root-test.svelte +62 -0
  97. package/dist/clock/root/clock-root-test.svelte.d.ts +14 -0
  98. package/dist/clock/root/clock-root.svelte +329 -0
  99. package/dist/clock/root/clock-root.svelte.d.ts +25 -0
  100. package/dist/clock/root/context.d.ts +22 -0
  101. package/dist/clock/root/context.js +15 -0
  102. package/dist/clock/root/resolve-visible-columns.d.ts +7 -0
  103. package/dist/clock/root/resolve-visible-columns.js +16 -0
  104. package/dist/clock/root/time-utils.d.ts +48 -0
  105. package/dist/clock/root/time-utils.js +314 -0
  106. package/dist/clock/root/wheel-options.d.ts +17 -0
  107. package/dist/clock/root/wheel-options.js +63 -0
  108. package/dist/clock/wheel-column/README.md +25 -0
  109. package/dist/clock/wheel-column/clock-wheel-column-bindable-test.svelte +16 -0
  110. package/dist/clock/wheel-column/clock-wheel-column-bindable-test.svelte.d.ts +3 -0
  111. package/dist/clock/wheel-column/clock-wheel-column-custom-snippet-test.svelte +29 -0
  112. package/dist/clock/wheel-column/clock-wheel-column-custom-snippet-test.svelte.d.ts +6 -0
  113. package/dist/clock/wheel-column/clock-wheel-column-default-height-test.svelte +11 -0
  114. package/dist/clock/wheel-column/clock-wheel-column-default-height-test.svelte.d.ts +3 -0
  115. package/dist/clock/wheel-column/clock-wheel-column-test.svelte +38 -0
  116. package/dist/clock/wheel-column/clock-wheel-column-test.svelte.d.ts +12 -0
  117. package/dist/clock/wheel-column/clock-wheel-column-tp-test.svelte +38 -0
  118. package/dist/clock/wheel-column/clock-wheel-column-tp-test.svelte.d.ts +12 -0
  119. package/dist/clock/wheel-column/clock-wheel-column-untagged-snippet-test.svelte +29 -0
  120. package/dist/clock/wheel-column/clock-wheel-column-untagged-snippet-test.svelte.d.ts +6 -0
  121. package/dist/clock/wheel-column/clock-wheel-column.svelte +499 -0
  122. package/dist/clock/wheel-column/clock-wheel-column.svelte.d.ts +17 -0
  123. package/dist/clock/wheel-item/README.md +17 -0
  124. package/dist/clock/wheel-item/clock-wheel-item.svelte +49 -0
  125. package/dist/clock/wheel-item/clock-wheel-item.svelte.d.ts +17 -0
  126. package/dist/combobox/README.md +46 -0
  127. package/dist/combobox/TODO.md +28 -175
  128. package/dist/combobox/button/README.md +20 -0
  129. package/dist/combobox/button/combobox-button-test.svelte +27 -0
  130. package/dist/combobox/button/combobox-button-test.svelte.d.ts +6 -0
  131. package/dist/combobox/button/combobox-button.svelte +10 -11
  132. package/dist/combobox/clear/README.md +21 -0
  133. package/dist/combobox/clear/combobox-clear-test.svelte +34 -0
  134. package/dist/combobox/clear/combobox-clear-test.svelte.d.ts +3 -0
  135. package/dist/combobox/clear/combobox-clear.svelte +61 -0
  136. package/dist/combobox/clear/combobox-clear.svelte.d.ts +9 -0
  137. package/dist/combobox/index.d.ts +5 -3
  138. package/dist/combobox/index.js +5 -3
  139. package/dist/combobox/index.parts.d.ts +2 -0
  140. package/dist/combobox/index.parts.js +2 -0
  141. package/dist/combobox/input/README.md +16 -0
  142. package/dist/combobox/input/combobox-input.svelte +43 -12
  143. package/dist/combobox/item/README.md +27 -0
  144. package/dist/combobox/item/combobox-item-implicit-text-test.svelte +1 -1
  145. package/dist/combobox/item/combobox-listboxitem.svelte +1 -9
  146. package/dist/combobox/item-indicator/README.md +15 -0
  147. package/dist/combobox/item-indicator/combobox-item-indicator.svelte +4 -15
  148. package/dist/combobox/list/README.md +27 -0
  149. package/dist/combobox/list/combobox-listbox.svelte.d.ts +1 -1
  150. package/dist/combobox/popover/README.md +13 -0
  151. package/dist/combobox/popover/combobox-popover.svelte +133 -17
  152. package/dist/combobox/popover/combobox-scrollable-list-test.svelte +23 -0
  153. package/dist/combobox/popover/combobox-scrollable-list-test.svelte.d.ts +18 -0
  154. package/dist/combobox/root/README.md +45 -0
  155. package/dist/combobox/root/combobox-multiselect-test.svelte +1 -1
  156. package/dist/combobox/root/combobox-numeric-string-id-test.svelte +1 -1
  157. package/dist/combobox/root/combobox-test.svelte +16 -3
  158. package/dist/combobox/root/combobox-test.svelte.d.ts +1 -0
  159. package/dist/combobox/root/combobox.svelte +78 -2
  160. package/dist/combobox/root/combobox.svelte.d.ts +1 -0
  161. package/dist/combobox/root/context.d.ts +9 -1
  162. package/dist/combobox/tag/README.md +37 -0
  163. package/dist/combobox/tag-remove/README.md +14 -0
  164. package/dist/combobox/tag-remove/combobox-tag-remove.svelte +3 -2
  165. package/dist/combobox/tags/README.md +23 -0
  166. package/dist/combobox/trigger/README.md +21 -0
  167. package/dist/combobox/trigger/combobox-trigger.svelte +56 -0
  168. package/dist/combobox/trigger/combobox-trigger.svelte.d.ts +9 -0
  169. package/dist/datepicker/README.md +100 -0
  170. package/dist/datepicker/TODO.md +28 -0
  171. package/dist/datepicker/calendar/README.md +19 -0
  172. package/dist/datepicker/calendar/date-picker-calendar-unsafe-props-test.svelte +60 -0
  173. package/dist/datepicker/calendar/date-picker-calendar-unsafe-props-test.svelte.d.ts +3 -0
  174. package/dist/datepicker/calendar/date-picker-calendar.svelte +65 -0
  175. package/dist/datepicker/calendar/date-picker-calendar.svelte.d.ts +10 -0
  176. package/dist/datepicker/index.d.ts +18 -0
  177. package/dist/datepicker/index.js +18 -0
  178. package/dist/datepicker/index.parts.d.ts +14 -0
  179. package/dist/datepicker/index.parts.js +14 -0
  180. package/dist/datepicker/input/README.md +15 -0
  181. package/dist/datepicker/input/date-picker-input.svelte +108 -0
  182. package/dist/datepicker/input/date-picker-input.svelte.d.ts +11 -0
  183. package/dist/datepicker/internal/strict-props.d.ts +2 -0
  184. package/dist/datepicker/internal/strict-props.js +28 -0
  185. package/dist/datepicker/popover/README.md +20 -0
  186. package/dist/datepicker/popover/date-picker-popover-handler-test.svelte +57 -0
  187. package/dist/datepicker/popover/date-picker-popover-handler-test.svelte.d.ts +3 -0
  188. package/dist/datepicker/popover/date-picker-popover-unsafe-props-test.svelte +45 -0
  189. package/dist/datepicker/popover/date-picker-popover-unsafe-props-test.svelte.d.ts +18 -0
  190. package/dist/datepicker/popover/date-picker-popover.svelte +87 -0
  191. package/dist/datepicker/popover/date-picker-popover.svelte.d.ts +7 -0
  192. package/dist/datepicker/root/README.md +38 -0
  193. package/dist/datepicker/root/context.d.ts +43 -0
  194. package/dist/datepicker/root/context.js +15 -0
  195. package/dist/datepicker/root/date-picker-bindable-empty-test.svelte +24 -0
  196. package/dist/datepicker/root/date-picker-bindable-empty-test.svelte.d.ts +3 -0
  197. package/dist/datepicker/root/date-picker-bindable-test.svelte +41 -0
  198. package/dist/datepicker/root/date-picker-bindable-test.svelte.d.ts +3 -0
  199. package/dist/datepicker/root/date-picker-empty-test.svelte +47 -0
  200. package/dist/datepicker/root/date-picker-empty-test.svelte.d.ts +3 -0
  201. package/dist/datepicker/root/date-picker-locale-typing-test.svelte +47 -0
  202. package/dist/datepicker/root/date-picker-locale-typing-test.svelte.d.ts +3 -0
  203. package/dist/datepicker/root/date-picker-open-cancel-test.svelte +54 -0
  204. package/dist/datepicker/root/date-picker-open-cancel-test.svelte.d.ts +8 -0
  205. package/dist/datepicker/root/date-picker-root.svelte +495 -0
  206. package/dist/datepicker/root/date-picker-root.svelte.d.ts +24 -0
  207. package/dist/datepicker/root/date-picker-test.svelte +86 -0
  208. package/dist/datepicker/root/date-picker-test.svelte.d.ts +13 -0
  209. package/dist/datepicker/root/date-utils.d.ts +17 -0
  210. package/dist/datepicker/root/date-utils.js +138 -0
  211. package/dist/datepicker/root/draft-evaluation.d.ts +13 -0
  212. package/dist/datepicker/root/draft-evaluation.js +56 -0
  213. package/dist/datepicker/root/focus-controller.d.ts +3 -0
  214. package/dist/datepicker/root/focus-controller.js +15 -0
  215. package/dist/datepicker/root/open-change.d.ts +5 -0
  216. package/dist/datepicker/root/open-change.js +13 -0
  217. package/dist/datepicker/root/open-controller.d.ts +7 -0
  218. package/dist/datepicker/root/open-controller.js +15 -0
  219. package/dist/datepicker/root/segment-controller.d.ts +8 -0
  220. package/dist/datepicker/root/segment-controller.js +53 -0
  221. package/dist/datepicker/root/segment-state.d.ts +18 -0
  222. package/dist/datepicker/root/segment-state.js +134 -0
  223. package/dist/datepicker/root/value-commit.d.ts +4 -0
  224. package/dist/datepicker/root/value-commit.js +8 -0
  225. package/dist/datepicker/segment/README.md +14 -0
  226. package/dist/datepicker/segment/date-picker-segment.svelte +319 -0
  227. package/dist/datepicker/segment/date-picker-segment.svelte.d.ts +9 -0
  228. package/dist/datepicker/trigger/README.md +14 -0
  229. package/dist/datepicker/trigger/date-picker-trigger.svelte +110 -0
  230. package/dist/datepicker/trigger/date-picker-trigger.svelte.d.ts +9 -0
  231. package/dist/dialog/README.md +35 -0
  232. package/dist/dialog/content/README.md +16 -0
  233. package/dist/dialog/content/dialog-content.svelte +6 -6
  234. package/dist/dialog/index.d.ts +3 -3
  235. package/dist/dialog/index.js +2 -2
  236. package/dist/dialog/overlay/README.md +13 -0
  237. package/dist/dialog/portal/README.md +12 -0
  238. package/dist/dialog/root/README.md +53 -0
  239. package/dist/dialog/root/context.d.ts +2 -1
  240. package/dist/dialog/root/dialog-root.svelte +9 -2
  241. package/dist/dialog/trigger/README.md +12 -0
  242. package/dist/dialog/trigger/dialog-trigger-multi-button-test.svelte +19 -0
  243. package/dist/dialog/trigger/dialog-trigger-multi-button-test.svelte.d.ts +18 -0
  244. package/dist/dialog/trigger/dialog-trigger.svelte +18 -6
  245. package/dist/index.d.ts +31 -13
  246. package/dist/index.js +31 -13
  247. package/dist/input/README.md +38 -0
  248. package/dist/input/TODO.md +12 -0
  249. package/dist/input/input-test.svelte +43 -0
  250. package/dist/input/input-test.svelte.d.ts +12 -0
  251. package/dist/input/input.svelte +151 -7
  252. package/dist/input/input.svelte.d.ts +8 -2
  253. package/dist/listbox/README.md +26 -0
  254. package/dist/listbox/index.d.ts +3 -3
  255. package/dist/listbox/index.js +3 -3
  256. package/dist/listbox/item/README.md +25 -0
  257. package/dist/listbox/item/listbox-item.svelte +152 -2
  258. package/dist/listbox/item/listbox-item.svelte.d.ts +2 -0
  259. package/dist/listbox/root/README.md +40 -0
  260. package/dist/listbox/root/listbox-test.svelte +14 -2
  261. package/dist/listbox/root/listbox-test.svelte.d.ts +1 -0
  262. package/dist/listbox/root/listbox.svelte +44 -0
  263. package/dist/listbox/root/listbox.svelte.d.ts +2 -2
  264. package/dist/locale-provider/context.d.ts +8 -0
  265. package/dist/locale-provider/context.js +18 -0
  266. package/dist/locale-provider/index.d.ts +4 -0
  267. package/dist/locale-provider/index.js +4 -0
  268. package/dist/locale-provider/locale-provider-initial-value-test.svelte +15 -0
  269. package/dist/locale-provider/locale-provider-initial-value-test.svelte.d.ts +7 -0
  270. package/dist/locale-provider/locale-provider-test.svelte +20 -0
  271. package/dist/locale-provider/locale-provider-test.svelte.d.ts +6 -0
  272. package/dist/locale-provider/locale-provider-value-probe.svelte +22 -0
  273. package/dist/locale-provider/locale-provider-value-probe.svelte.d.ts +6 -0
  274. package/dist/locale-provider/locale-provider.svelte +23 -0
  275. package/dist/locale-provider/locale-provider.svelte.d.ts +8 -0
  276. package/dist/popover/README.md +42 -0
  277. package/dist/popover/content/README.md +36 -0
  278. package/dist/popover/content/popover-content-standalone-test.svelte +28 -0
  279. package/dist/popover/content/popover-content-standalone-test.svelte.d.ts +6 -0
  280. package/dist/popover/content/popover-content-test.svelte +32 -2
  281. package/dist/popover/content/popover-content-test.svelte.d.ts +3 -1
  282. package/dist/popover/content/popover-content.svelte +276 -23
  283. package/dist/popover/content/popover-content.svelte.d.ts +5 -1
  284. package/dist/popover/index.d.ts +3 -3
  285. package/dist/popover/index.js +3 -5
  286. package/dist/popover/root/README.md +25 -0
  287. package/dist/popover/root/context.d.ts +16 -7
  288. package/dist/popover/root/context.js +0 -2
  289. package/dist/popover/root/focus-state.d.ts +4 -0
  290. package/dist/popover/root/focus-state.js +33 -0
  291. package/dist/popover/root/popover-root.svelte +90 -17
  292. package/dist/popover/root/popover-root.svelte.d.ts +2 -1
  293. package/dist/popover/root/popover-test.svelte +2 -1
  294. package/dist/popover/root/popover-test.svelte.d.ts +2 -1
  295. package/dist/popover/trigger/README.md +23 -0
  296. package/dist/popover/trigger/popover-trigger-button.svelte +14 -10
  297. package/dist/popover/trigger/popover-trigger-button.svelte.d.ts +2 -3
  298. package/dist/popover/trigger/popover-trigger-multi-button-test.svelte +16 -0
  299. package/dist/popover/trigger/popover-trigger-multi-button-test.svelte.d.ts +18 -0
  300. package/dist/popover/trigger/popover-trigger.svelte +19 -7
  301. package/dist/portal/portal.svelte +3 -1
  302. package/dist/primitives/click-outside.d.ts +1 -1
  303. package/dist/primitives/click-outside.js +1 -1
  304. package/dist/primitives/floating.js +12 -4
  305. package/dist/primitives/focus-trap.d.ts +7 -2
  306. package/dist/primitives/focus-trap.js +50 -17
  307. package/dist/primitives/index.d.ts +1 -0
  308. package/dist/primitives/index.js +1 -0
  309. package/dist/primitives/input-modality.d.ts +7 -0
  310. package/dist/primitives/input-modality.js +125 -0
  311. package/dist/table/IMPLEMENTATION_NOTES.md +8 -0
  312. package/dist/table/PLAN-HIDDEN-COLUMNS.md +152 -0
  313. package/dist/table/PLAN.md +924 -0
  314. package/dist/table/README.md +116 -0
  315. package/dist/table/SELECTION_CHECKBOX_PLAN.md +234 -0
  316. package/dist/table/TODO.md +100 -0
  317. package/dist/table/body/README.md +24 -0
  318. package/dist/table/body/table-body.svelte +25 -0
  319. package/dist/table/body/table-body.svelte.d.ts +9 -0
  320. package/dist/table/cell/README.md +25 -0
  321. package/dist/table/cell/table-cell.svelte +247 -0
  322. package/dist/table/cell/table-cell.svelte.d.ts +9 -0
  323. package/dist/table/checkbox/README.md +38 -0
  324. package/dist/table/checkbox/table-checkbox-test.svelte +121 -0
  325. package/dist/table/checkbox/table-checkbox-test.svelte.d.ts +16 -0
  326. package/dist/table/checkbox/table-checkbox.svelte +274 -0
  327. package/dist/table/checkbox/table-checkbox.svelte.d.ts +13 -0
  328. package/dist/table/checkbox-indicator/README.md +29 -0
  329. package/dist/table/checkbox-indicator/table-checkbox-indicator.svelte +22 -0
  330. package/dist/table/checkbox-indicator/table-checkbox-indicator.svelte.d.ts +10 -0
  331. package/dist/table/column/README.md +32 -0
  332. package/dist/table/column/table-column.svelte +108 -0
  333. package/dist/table/column/table-column.svelte.d.ts +18 -0
  334. package/dist/table/column-header-cell/README.md +28 -0
  335. package/dist/table/column-header-cell/table-column-header-cell.svelte +281 -0
  336. package/dist/table/column-header-cell/table-column-header-cell.svelte.d.ts +9 -0
  337. package/dist/table/column-resizer/README.md +32 -0
  338. package/dist/table/column-resizer/table-column-resizer-freeze-layout-test.svelte +51 -0
  339. package/dist/table/column-resizer/table-column-resizer-freeze-layout-test.svelte.d.ts +3 -0
  340. package/dist/table/column-resizer/table-column-resizer-selection-column-test.svelte +83 -0
  341. package/dist/table/column-resizer/table-column-resizer-selection-column-test.svelte.d.ts +3 -0
  342. package/dist/table/column-resizer/table-column-resizer-test.svelte +75 -0
  343. package/dist/table/column-resizer/table-column-resizer-test.svelte.d.ts +3 -0
  344. package/dist/table/column-resizer/table-column-resizer.svelte +616 -0
  345. package/dist/table/column-resizer/table-column-resizer.svelte.d.ts +11 -0
  346. package/dist/table/empty-state/README.md +25 -0
  347. package/dist/table/empty-state/table-empty-state.svelte +38 -0
  348. package/dist/table/empty-state/table-empty-state.svelte.d.ts +8 -0
  349. package/dist/table/footer/README.md +24 -0
  350. package/dist/table/footer/table-footer.svelte +19 -0
  351. package/dist/table/footer/table-footer.svelte.d.ts +9 -0
  352. package/dist/table/header/README.md +24 -0
  353. package/dist/table/header/table-header.svelte +19 -0
  354. package/dist/table/header/table-header.svelte.d.ts +9 -0
  355. package/dist/table/index.d.ts +16 -0
  356. package/dist/table/index.js +16 -0
  357. package/dist/table/index.parts.d.ts +12 -0
  358. package/dist/table/index.parts.js +12 -0
  359. package/dist/table/root/README.md +56 -0
  360. package/dist/table/root/context.d.ts +198 -0
  361. package/dist/table/root/context.js +1426 -0
  362. package/dist/table/root/table-reorder-test.svelte +64 -0
  363. package/dist/table/root/table-reorder-test.svelte.d.ts +3 -0
  364. package/dist/table/root/table-root.svelte +410 -0
  365. package/dist/table/root/table-root.svelte.d.ts +29 -0
  366. package/dist/table/root/table-test.svelte +165 -0
  367. package/dist/table/root/table-test.svelte.d.ts +25 -0
  368. package/dist/table/row/README.md +27 -0
  369. package/dist/table/row/table-row.svelte +321 -0
  370. package/dist/table/row/table-row.svelte.d.ts +13 -0
  371. package/dist/test-utils/focus-contract.d.ts +3 -0
  372. package/dist/test-utils/focus-contract.js +26 -0
  373. package/dist/timepicker/IMPLEMENTATION_PLAN.md +254 -0
  374. package/dist/timepicker/README.md +97 -0
  375. package/dist/timepicker/TODO.md +86 -0
  376. package/dist/timepicker/clock/README.md +14 -0
  377. package/dist/timepicker/clock/time-picker-clock-test.svelte +45 -0
  378. package/dist/timepicker/clock/time-picker-clock-test.svelte.d.ts +11 -0
  379. package/dist/timepicker/clock/time-picker-clock.svelte +65 -0
  380. package/dist/timepicker/clock/time-picker-clock.svelte.d.ts +10 -0
  381. package/dist/timepicker/index.d.ts +14 -0
  382. package/dist/timepicker/index.js +14 -0
  383. package/dist/timepicker/index.parts.d.ts +8 -0
  384. package/dist/timepicker/index.parts.js +8 -0
  385. package/dist/timepicker/input/README.md +15 -0
  386. package/dist/timepicker/input/time-picker-input-forwarding-test.svelte +40 -0
  387. package/dist/timepicker/input/time-picker-input-forwarding-test.svelte.d.ts +3 -0
  388. package/dist/timepicker/input/time-picker-input.svelte +109 -0
  389. package/dist/timepicker/input/time-picker-input.svelte.d.ts +11 -0
  390. package/dist/timepicker/internal/strict-props.d.ts +4 -0
  391. package/dist/timepicker/internal/strict-props.js +51 -0
  392. package/dist/timepicker/popover/README.md +20 -0
  393. package/dist/timepicker/popover/time-picker-popover-unsafe-props-test.svelte +22 -0
  394. package/dist/timepicker/popover/time-picker-popover-unsafe-props-test.svelte.d.ts +3 -0
  395. package/dist/timepicker/popover/time-picker-popover.svelte +89 -0
  396. package/dist/timepicker/popover/time-picker-popover.svelte.d.ts +7 -0
  397. package/dist/timepicker/root/README.md +42 -0
  398. package/dist/timepicker/root/context.d.ts +51 -0
  399. package/dist/timepicker/root/context.js +15 -0
  400. package/dist/timepicker/root/time-picker-12h-test.svelte +22 -0
  401. package/dist/timepicker/root/time-picker-12h-test.svelte.d.ts +3 -0
  402. package/dist/timepicker/root/time-picker-bindable-test.svelte +25 -0
  403. package/dist/timepicker/root/time-picker-bindable-test.svelte.d.ts +3 -0
  404. package/dist/timepicker/root/time-picker-empty-test.svelte +20 -0
  405. package/dist/timepicker/root/time-picker-empty-test.svelte.d.ts +3 -0
  406. package/dist/timepicker/root/time-picker-root.svelte +625 -0
  407. package/dist/timepicker/root/time-picker-root.svelte.d.ts +28 -0
  408. package/dist/timepicker/root/time-picker-test.svelte +72 -0
  409. package/dist/timepicker/root/time-picker-test.svelte.d.ts +15 -0
  410. package/dist/timepicker/root/time-utils.d.ts +1 -0
  411. package/dist/timepicker/root/time-utils.js +3 -0
  412. package/dist/timepicker/segment/README.md +14 -0
  413. package/dist/timepicker/segment/time-picker-segment.svelte +365 -0
  414. package/dist/timepicker/segment/time-picker-segment.svelte.d.ts +9 -0
  415. package/dist/timepicker/trigger/README.md +14 -0
  416. package/dist/timepicker/trigger/time-picker-trigger-forwarding-test.svelte +35 -0
  417. package/dist/timepicker/trigger/time-picker-trigger-forwarding-test.svelte.d.ts +3 -0
  418. package/dist/timepicker/trigger/time-picker-trigger.svelte +122 -0
  419. package/dist/timepicker/trigger/time-picker-trigger.svelte.d.ts +9 -0
  420. package/dist/utils/date-only.d.ts +11 -0
  421. package/dist/utils/date-only.js +53 -0
  422. package/dist/utils/index.d.ts +1 -0
  423. package/dist/utils/index.js +1 -0
  424. package/package.json +41 -1
@@ -0,0 +1,17 @@
1
+ export type CalendarDateValue = string;
2
+ export declare function isValidCalendarDateValue(value: string): boolean;
3
+ export declare function parseCalendarDate(value: CalendarDateValue): Date | null;
4
+ export declare function formatCalendarDate(date: Date): CalendarDateValue;
5
+ export declare function startOfMonth(date: Date): Date;
6
+ export declare function addMonths(date: Date, amount: number): Date;
7
+ export declare function addDays(date: Date, amount: number): Date;
8
+ export declare function compareDates(a: Date, b: Date): number;
9
+ export declare function getTodayUtcDate(): Date;
10
+ export declare function getFirstDayOfWeek(locale: string): number;
11
+ export declare function getWeekdayLabels(locale: string, firstDayOfWeek: number): string[];
12
+ export type CalendarDayCell = {
13
+ date: CalendarDateValue;
14
+ isOutsideMonth: boolean;
15
+ };
16
+ export declare function buildMonthGrid(monthStart: Date, firstDayOfWeek: number, showOutsideDays?: boolean): CalendarDayCell[][];
17
+ export declare function formatMonthHeading(date: Date, locale: string): string;
@@ -0,0 +1,94 @@
1
+ import { createUtcDate, formatDateOnlyValue, isValidDateOnlyValue, parseDateOnlyValue } from '../../utils/date-only';
2
+ export function isValidCalendarDateValue(value) {
3
+ return isValidDateOnlyValue(value);
4
+ }
5
+ export function parseCalendarDate(value) {
6
+ return parseDateOnlyValue(value);
7
+ }
8
+ export function formatCalendarDate(date) {
9
+ return formatDateOnlyValue(date);
10
+ }
11
+ export function startOfMonth(date) {
12
+ return createUtcDate(date.getUTCFullYear(), date.getUTCMonth(), 1);
13
+ }
14
+ function getDaysInMonthUtc(year, monthIndex) {
15
+ return createUtcDate(year, monthIndex + 1, 0).getUTCDate();
16
+ }
17
+ export function addMonths(date, amount) {
18
+ const targetMonth = date.getUTCMonth() + amount;
19
+ const targetYear = date.getUTCFullYear() + Math.floor(targetMonth / 12);
20
+ const normalizedMonth = ((targetMonth % 12) + 12) % 12;
21
+ const targetDay = Math.min(date.getUTCDate(), getDaysInMonthUtc(targetYear, normalizedMonth));
22
+ return createUtcDate(targetYear, normalizedMonth, targetDay);
23
+ }
24
+ export function addDays(date, amount) {
25
+ return createUtcDate(date.getUTCFullYear(), date.getUTCMonth(), date.getUTCDate() + amount);
26
+ }
27
+ export function compareDates(a, b) {
28
+ const at = a.getTime();
29
+ const bt = b.getTime();
30
+ if (at < bt)
31
+ return -1;
32
+ if (at > bt)
33
+ return 1;
34
+ return 0;
35
+ }
36
+ export function getTodayUtcDate() {
37
+ const now = new Date();
38
+ return createUtcDate(now.getUTCFullYear(), now.getUTCMonth(), now.getUTCDate());
39
+ }
40
+ export function getFirstDayOfWeek(locale) {
41
+ try {
42
+ const intlLocale = new Intl.Locale(locale);
43
+ const weekInfo = intlLocale.weekInfo;
44
+ if (weekInfo?.firstDay) {
45
+ return weekInfo.firstDay % 7;
46
+ }
47
+ }
48
+ catch {
49
+ // ignore and fallback to sunday
50
+ }
51
+ return 0;
52
+ }
53
+ export function getWeekdayLabels(locale, firstDayOfWeek) {
54
+ const formatter = new Intl.DateTimeFormat(locale, {
55
+ weekday: 'short',
56
+ timeZone: 'UTC'
57
+ });
58
+ const sunday = new Date(Date.UTC(2024, 0, 7));
59
+ return Array.from({ length: 7 }, (_, index) => {
60
+ const dayOffset = (firstDayOfWeek + index) % 7;
61
+ return formatter.format(addDays(sunday, dayOffset));
62
+ });
63
+ }
64
+ export function buildMonthGrid(monthStart, firstDayOfWeek, showOutsideDays = true) {
65
+ const firstOfMonth = startOfMonth(monthStart);
66
+ const firstWeekday = firstOfMonth.getUTCDay();
67
+ const startOffset = (firstWeekday - firstDayOfWeek + 7) % 7;
68
+ const gridStart = addDays(firstOfMonth, -startOffset);
69
+ const lastOfMonth = addDays(addMonths(firstOfMonth, 1), -1);
70
+ const lastWeekday = lastOfMonth.getUTCDay();
71
+ const endOffset = (firstDayOfWeek + 6 - lastWeekday + 7) % 7;
72
+ const visibleDays = startOffset + lastOfMonth.getUTCDate() + endOffset;
73
+ const weekCount = showOutsideDays ? 6 : Math.max(1, Math.ceil(visibleDays / 7));
74
+ const weeks = [];
75
+ for (let weekIndex = 0; weekIndex < weekCount; weekIndex++) {
76
+ const week = [];
77
+ for (let dayIndex = 0; dayIndex < 7; dayIndex++) {
78
+ const date = addDays(gridStart, weekIndex * 7 + dayIndex);
79
+ week.push({
80
+ date: formatCalendarDate(date),
81
+ isOutsideMonth: date.getUTCMonth() !== firstOfMonth.getUTCMonth()
82
+ });
83
+ }
84
+ weeks.push(week);
85
+ }
86
+ return weeks;
87
+ }
88
+ export function formatMonthHeading(date, locale) {
89
+ return new Intl.DateTimeFormat(locale, {
90
+ month: 'long',
91
+ year: 'numeric',
92
+ timeZone: 'UTC'
93
+ }).format(date);
94
+ }
@@ -0,0 +1,14 @@
1
+ # Calendar TriggerNext
2
+
3
+ ## API reference
4
+
5
+ ### Calendar.TriggerNext
6
+
7
+ Name: `Calendar.TriggerNext`
8
+ Description: Button part that advances the visible calendar period.
9
+
10
+ | Prop | Type | Default | Description |
11
+ | -------------- | ---------------------- | ----------- | ------------------------------------------------------ |
12
+ | `children` | `Snippet` | `undefined` | Optional trigger content. |
13
+ | `class` | `string` | `''` | CSS class names for the trigger button. |
14
+ | `...restProps` | `HTMLButtonAttributes` | `-` | Additional button attributes forwarded to the trigger. |
@@ -0,0 +1,43 @@
1
+ <script lang="ts">
2
+ import type { Snippet } from 'svelte';
3
+ import type { HTMLButtonAttributes } from 'svelte/elements';
4
+ import { ButtonRoot } from '../../button/index.js';
5
+ import { useCalendarContext } from '../root/context';
6
+
7
+ type CalendarTriggerNextProps = Omit<
8
+ HTMLButtonAttributes,
9
+ 'children' | 'class' | 'disabled' | 'aria-disabled'
10
+ > & {
11
+ class?: string;
12
+ children?: Snippet;
13
+ };
14
+
15
+ let { children, class: className = '', ...restProps }: CalendarTriggerNextProps = $props();
16
+
17
+ const calendar = useCalendarContext();
18
+ const layoutVersion = calendar.layoutVersion;
19
+ const isDisabled = $derived.by(() => {
20
+ void $layoutVersion;
21
+ return calendar.isDisabled;
22
+ });
23
+
24
+ function handleClick() {
25
+ if (isDisabled) return;
26
+ calendar.goToNextPage();
27
+ }
28
+ </script>
29
+
30
+ <ButtonRoot
31
+ type="button"
32
+ class={className}
33
+ aria-label="Next page"
34
+ {isDisabled}
35
+ onclick={handleClick}
36
+ {...restProps}
37
+ >
38
+ {#if children}
39
+ {@render children()}
40
+ {:else}
41
+ Next
42
+ {/if}
43
+ </ButtonRoot>
@@ -0,0 +1,9 @@
1
+ import type { Snippet } from 'svelte';
2
+ import type { HTMLButtonAttributes } from 'svelte/elements';
3
+ type CalendarTriggerNextProps = Omit<HTMLButtonAttributes, 'children' | 'class' | 'disabled' | 'aria-disabled'> & {
4
+ class?: string;
5
+ children?: Snippet;
6
+ };
7
+ declare const CalendarTriggerNext: import("svelte").Component<CalendarTriggerNextProps, {}, "">;
8
+ type CalendarTriggerNext = ReturnType<typeof CalendarTriggerNext>;
9
+ export default CalendarTriggerNext;
@@ -0,0 +1,14 @@
1
+ # Calendar TriggerPrevious
2
+
3
+ ## API reference
4
+
5
+ ### Calendar.TriggerPrevious
6
+
7
+ Name: `Calendar.TriggerPrevious`
8
+ Description: Button part that moves the visible calendar period backward.
9
+
10
+ | Prop | Type | Default | Description |
11
+ | -------------- | ---------------------- | ----------- | ------------------------------------------------------ |
12
+ | `children` | `Snippet` | `undefined` | Optional trigger content. |
13
+ | `class` | `string` | `''` | CSS class names for the trigger button. |
14
+ | `...restProps` | `HTMLButtonAttributes` | `-` | Additional button attributes forwarded to the trigger. |
@@ -0,0 +1,43 @@
1
+ <script lang="ts">
2
+ import type { Snippet } from 'svelte';
3
+ import type { HTMLButtonAttributes } from 'svelte/elements';
4
+ import { ButtonRoot } from '../../button/index.js';
5
+ import { useCalendarContext } from '../root/context';
6
+
7
+ type CalendarTriggerPreviousProps = Omit<
8
+ HTMLButtonAttributes,
9
+ 'children' | 'class' | 'disabled' | 'aria-disabled'
10
+ > & {
11
+ class?: string;
12
+ children?: Snippet;
13
+ };
14
+
15
+ let { children, class: className = '', ...restProps }: CalendarTriggerPreviousProps = $props();
16
+
17
+ const calendar = useCalendarContext();
18
+ const layoutVersion = calendar.layoutVersion;
19
+ const isDisabled = $derived.by(() => {
20
+ void $layoutVersion;
21
+ return calendar.isDisabled;
22
+ });
23
+
24
+ function handleClick() {
25
+ if (isDisabled) return;
26
+ calendar.goToPreviousPage();
27
+ }
28
+ </script>
29
+
30
+ <ButtonRoot
31
+ type="button"
32
+ class={className}
33
+ aria-label="Previous page"
34
+ {isDisabled}
35
+ onclick={handleClick}
36
+ {...restProps}
37
+ >
38
+ {#if children}
39
+ {@render children()}
40
+ {:else}
41
+ Prev
42
+ {/if}
43
+ </ButtonRoot>
@@ -0,0 +1,9 @@
1
+ import type { Snippet } from 'svelte';
2
+ import type { HTMLButtonAttributes } from 'svelte/elements';
3
+ type CalendarTriggerPreviousProps = Omit<HTMLButtonAttributes, 'children' | 'class' | 'disabled' | 'aria-disabled'> & {
4
+ class?: string;
5
+ children?: Snippet;
6
+ };
7
+ declare const CalendarTriggerPrevious: import("svelte").Component<CalendarTriggerPreviousProps, {}, "">;
8
+ type CalendarTriggerPrevious = ReturnType<typeof CalendarTriggerPrevious>;
9
+ export default CalendarTriggerPrevious;
@@ -0,0 +1,53 @@
1
+ # Checkbox
2
+
3
+ ## Description
4
+
5
+ `Checkbox` is a composable tri-state checkbox with separate checked and indeterminate bindings, hidden input form support, and headless indicator rendering.
6
+
7
+ ## Anatomy
8
+
9
+ - `Checkbox.Root`
10
+ - `Checkbox.Indicator`
11
+
12
+ ```svelte
13
+ <Checkbox.Root aria-label="Accept terms">
14
+ <Checkbox.Indicator>
15
+ <CheckIcon />
16
+ </Checkbox.Indicator>
17
+ </Checkbox.Root>
18
+ ```
19
+
20
+ ## Usage guidelines
21
+
22
+ - Use `isChecked` / `defaultChecked` for the checked state and `isIndeterminate` / `defaultIndeterminate` for the mixed state.
23
+ - `isIndeterminate` takes precedence over `isChecked`. When both are `true`, the checkbox is exposed as indeterminate.
24
+ - Use `value` only for form submission through the hidden native input; it does not represent the visual state.
25
+ - Wrap the checkbox in a native `<label>` for the simplest accessible labeling pattern.
26
+
27
+ ## API reference
28
+
29
+ - `Checkbox.Root`
30
+ - `isChecked?: boolean`
31
+ - `defaultChecked?: boolean`
32
+ - `isIndeterminate?: boolean`
33
+ - `defaultIndeterminate?: boolean`
34
+ - `onCheckedChange?: (checked: boolean) => void`
35
+ - `onIndeterminateChange?: (indeterminate: boolean) => void`
36
+ - `isDisabled?: boolean`
37
+ - `isReadOnly?: boolean`
38
+ - `name?: string`
39
+ - `value?: string`
40
+ - `required?: boolean`
41
+ - `Checkbox.Indicator`
42
+ - `keepMounted?: boolean`
43
+
44
+ ## Accessibility
45
+
46
+ - `Checkbox.Root` exposes `role="checkbox"` with `aria-checked="true" | "false" | "mixed"`.
47
+ - Press `Space` to toggle the checkbox.
48
+ - `isReadOnly` keeps the checkbox focusable while preventing state changes.
49
+
50
+ ## Notes
51
+
52
+ - The first user toggle from the indeterminate state resolves to checked.
53
+ - A hidden checkbox input is kept in sync for form integration and `label[for]` support.
@@ -0,0 +1,16 @@
1
+ # Checkbox TODO
2
+
3
+ ## Goal
4
+
5
+ Track Checkbox work with a single mandatory TODO format.
6
+
7
+ ## Backlog
8
+
9
+ - [x] [S][P0][Area: Architecture][Owner: Unassigned][Target: Done] Create base `root` and `indicator` parts with namespace exports.
10
+ - [x] [S][P0][Area: State][Owner: Unassigned][Target: Done] Implement checked, unchecked, and indeterminate state transitions.
11
+ - [x] [S][P0][Area: Accessibility][Owner: Unassigned][Target: Done] Add checkbox semantics, keyboard toggle, and readonly behavior.
12
+ - [x] [S][P0][Area: Forms][Owner: Unassigned][Target: Done] Sync a hidden native input for form submission and label targeting.
13
+ - [x] [S][P0][Area: Testing][Owner: Unassigned][Target: Done] Add baseline tests for root and indicator behavior.
14
+ - [ ] [S][P1][Area: API][Owner: Unassigned][Target: TBD] Add optional `nativeButton` rendering mode for sibling-label patterns.
15
+ - [ ] [S][P1][Area: Forms][Owner: Unassigned][Target: TBD] Support unchecked submission values and form reset synchronization.
16
+ - [ ] [C][P2][Area: Animation][Owner: Unassigned][Target: TBD] Add indicator presence data for enter and exit animations.
@@ -0,0 +1,6 @@
1
+ export * as Checkbox from './index.parts.js';
2
+ export { default as CheckboxRoot } from './root/checkbox-root.svelte';
3
+ export { default as CheckboxIndicator } from './indicator/checkbox-indicator.svelte';
4
+ export { getCheckboxContext, setCheckboxContext, useCheckboxContext, type CheckboxContext, type CheckboxState } from './root/context.js';
5
+ import * as CheckboxParts from './index.parts.js';
6
+ export default CheckboxParts;
@@ -0,0 +1,6 @@
1
+ export * as Checkbox from './index.parts.js';
2
+ export { default as CheckboxRoot } from './root/checkbox-root.svelte';
3
+ export { default as CheckboxIndicator } from './indicator/checkbox-indicator.svelte';
4
+ export { getCheckboxContext, setCheckboxContext, useCheckboxContext } from './root/context.js';
5
+ import * as CheckboxParts from './index.parts.js';
6
+ export default CheckboxParts;
@@ -0,0 +1,2 @@
1
+ export { default as Root } from './root/checkbox-root.svelte';
2
+ export { default as Indicator } from './indicator/checkbox-indicator.svelte';
@@ -0,0 +1,2 @@
1
+ export { default as Root } from './root/checkbox-root.svelte';
2
+ export { default as Indicator } from './indicator/checkbox-indicator.svelte';
@@ -0,0 +1,23 @@
1
+ # Checkbox Indicator
2
+
3
+ ## API reference
4
+
5
+ ### Checkbox.Indicator
6
+
7
+ Name: `Checkbox.Indicator`
8
+ Description: Headless presence wrapper for checkbox indicator content. It renders when the checkbox is checked or indeterminate.
9
+
10
+ | Prop | Type | Default | Description |
11
+ | -------------- | --------------------------------- | ----------- | ------------------------------------------------------------------------ |
12
+ | `keepMounted` | `boolean` | `false` | Keeps the indicator mounted while hidden when the checkbox is unchecked. |
13
+ | `children` | `Snippet` | `undefined` | Rendered indicator content, such as a check or dash icon. |
14
+ | `class` | `string` | `''` | CSS class names for the indicator wrapper. |
15
+ | `...restProps` | `HTMLAttributes<HTMLSpanElement>` | `-` | Additional attributes forwarded to the indicator span. |
16
+
17
+ ```svelte
18
+ <Checkbox.Root aria-label="Select row">
19
+ <Checkbox.Indicator>
20
+ <CheckIcon />
21
+ </Checkbox.Indicator>
22
+ </Checkbox.Root>
23
+ ```
@@ -0,0 +1,43 @@
1
+ <script lang="ts">
2
+ import type { HTMLAttributes } from 'svelte/elements';
3
+ import type { Snippet } from 'svelte';
4
+ import { cn } from '../../utils/cn';
5
+ import { useCheckboxContext } from '../root/context';
6
+
7
+ type CheckboxIndicatorProps = Omit<HTMLAttributes<HTMLSpanElement>, 'children' | 'class'> & {
8
+ keepMounted?: boolean;
9
+ children?: Snippet;
10
+ class?: string;
11
+ };
12
+
13
+ let {
14
+ keepMounted = false,
15
+ children,
16
+ class: className = '',
17
+ ...restProps
18
+ }: CheckboxIndicatorProps = $props();
19
+
20
+ const checkbox = useCheckboxContext();
21
+ const visible = $derived(checkbox.state !== 'unchecked');
22
+ </script>
23
+
24
+ {#if keepMounted || visible}
25
+ <span
26
+ {...restProps}
27
+ data-checkbox-indicator="true"
28
+ data-checked={checkbox.isChecked || undefined}
29
+ data-unchecked={checkbox.state === 'unchecked' || undefined}
30
+ data-indeterminate={checkbox.isIndeterminate || undefined}
31
+ data-pressed={checkbox.pressed || undefined}
32
+ data-disabled={checkbox.isDisabled || undefined}
33
+ data-readonly={checkbox.isReadOnly || undefined}
34
+ data-required={checkbox.required || undefined}
35
+ data-focused={checkbox.focused || undefined}
36
+ data-focus-visible={checkbox.focusVisible || undefined}
37
+ hidden={keepMounted && !visible}
38
+ aria-hidden={keepMounted && !visible ? 'true' : undefined}
39
+ class={cn('contents', className)}
40
+ >
41
+ {@render children?.()}
42
+ </span>
43
+ {/if}
@@ -0,0 +1,10 @@
1
+ import type { HTMLAttributes } from 'svelte/elements';
2
+ import type { Snippet } from 'svelte';
3
+ type CheckboxIndicatorProps = Omit<HTMLAttributes<HTMLSpanElement>, 'children' | 'class'> & {
4
+ keepMounted?: boolean;
5
+ children?: Snippet;
6
+ class?: string;
7
+ };
8
+ declare const CheckboxIndicator: import("svelte").Component<CheckboxIndicatorProps, {}, "">;
9
+ type CheckboxIndicator = ReturnType<typeof CheckboxIndicator>;
10
+ export default CheckboxIndicator;
@@ -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;