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

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 (407) 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 +393 -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/dialog/trigger/dialog-trigger.svelte +3 -0
  208. package/dist/hooks/use-virtual-focus.svelte.js +3 -1
  209. package/dist/index.d.ts +31 -17
  210. package/dist/index.js +31 -17
  211. package/dist/input/README.md +38 -0
  212. package/dist/input/TODO.md +12 -0
  213. package/dist/input/input-test.svelte +43 -0
  214. package/dist/input/input-test.svelte.d.ts +12 -0
  215. package/dist/input/input.svelte +151 -7
  216. package/dist/input/input.svelte.d.ts +8 -2
  217. package/dist/listbox/index.d.ts +3 -3
  218. package/dist/listbox/index.js +3 -3
  219. package/dist/listbox/item/README.md +2 -1
  220. package/dist/listbox/item/listbox-item.svelte +260 -6
  221. package/dist/listbox/item/listbox-item.svelte.d.ts +6 -0
  222. package/dist/listbox/root/context.d.ts +6 -0
  223. package/dist/listbox/root/context.js +23 -13
  224. package/dist/listbox/root/listbox-test.svelte +14 -2
  225. package/dist/listbox/root/listbox-test.svelte.d.ts +1 -0
  226. package/dist/listbox/root/listbox.svelte +49 -2
  227. package/dist/listbox/root/listbox.svelte.d.ts +4 -2
  228. package/dist/popover/README.md +10 -0
  229. package/dist/popover/content/README.md +11 -0
  230. package/dist/popover/content/popover-content-controlled-close-test.svelte +30 -0
  231. package/dist/popover/content/popover-content-controlled-close-test.svelte.d.ts +3 -0
  232. package/dist/popover/content/popover-content-standalone-test.svelte +28 -0
  233. package/dist/popover/content/popover-content-standalone-test.svelte.d.ts +6 -0
  234. package/dist/popover/content/popover-content-test.svelte +32 -2
  235. package/dist/popover/content/popover-content-test.svelte.d.ts +3 -1
  236. package/dist/popover/content/popover-content.svelte +315 -24
  237. package/dist/popover/content/popover-content.svelte.d.ts +5 -1
  238. package/dist/popover/index.d.ts +3 -3
  239. package/dist/popover/index.js +3 -5
  240. package/dist/popover/root/README.md +10 -15
  241. package/dist/popover/root/context.d.ts +16 -7
  242. package/dist/popover/root/context.js +0 -2
  243. package/dist/popover/root/focus-state.d.ts +4 -0
  244. package/dist/popover/root/focus-state.js +33 -0
  245. package/dist/popover/root/popover-root.svelte +90 -17
  246. package/dist/popover/root/popover-root.svelte.d.ts +2 -1
  247. package/dist/popover/root/popover-test.svelte +2 -1
  248. package/dist/popover/root/popover-test.svelte.d.ts +2 -1
  249. package/dist/popover/trigger/popover-trigger-button-root-test.svelte +17 -0
  250. package/dist/popover/trigger/popover-trigger-button-root-test.svelte.d.ts +18 -0
  251. package/dist/popover/trigger/popover-trigger-button.svelte +9 -7
  252. package/dist/popover/trigger/popover-trigger.svelte +17 -5
  253. package/dist/portal/portal.svelte +3 -1
  254. package/dist/primitives/click-outside.d.ts +1 -1
  255. package/dist/primitives/click-outside.js +1 -1
  256. package/dist/primitives/floating.js +12 -4
  257. package/dist/primitives/focus-trap.d.ts +7 -2
  258. package/dist/primitives/focus-trap.js +50 -17
  259. package/dist/primitives/index.d.ts +1 -0
  260. package/dist/primitives/index.js +1 -0
  261. package/dist/primitives/input-modality.d.ts +7 -0
  262. package/dist/primitives/input-modality.js +125 -0
  263. package/dist/primitives/keyboard-navigation.d.ts +1 -0
  264. package/dist/primitives/keyboard-navigation.js +17 -0
  265. package/dist/table/IMPLEMENTATION_NOTES.md +9 -0
  266. package/dist/table/PLAN-HIDDEN-COLUMNS.md +152 -0
  267. package/dist/table/PLAN.md +1336 -0
  268. package/dist/table/README.md +143 -0
  269. package/dist/table/SELECTION_CHECKBOX_PLAN.md +234 -0
  270. package/dist/table/TODO.md +138 -0
  271. package/dist/table/body/README.md +39 -0
  272. package/dist/table/body/table-body-items-test.svelte +45 -0
  273. package/dist/table/body/table-body-items-test.svelte.d.ts +18 -0
  274. package/dist/table/body/table-body.svelte +171 -0
  275. package/dist/table/body/table-body.svelte.d.ts +45 -0
  276. package/dist/table/cell/README.md +27 -0
  277. package/dist/table/cell/table-cell.svelte +253 -0
  278. package/dist/table/cell/table-cell.svelte.d.ts +4 -0
  279. package/dist/table/checkbox/README.md +40 -0
  280. package/dist/table/checkbox/table-checkbox-test.svelte +170 -0
  281. package/dist/table/checkbox/table-checkbox-test.svelte.d.ts +22 -0
  282. package/dist/table/checkbox/table-checkbox.svelte +235 -0
  283. package/dist/table/checkbox/table-checkbox.svelte.d.ts +4 -0
  284. package/dist/table/checkbox-indicator/README.md +31 -0
  285. package/dist/table/checkbox-indicator/table-checkbox-indicator.svelte +15 -0
  286. package/dist/table/checkbox-indicator/table-checkbox-indicator.svelte.d.ts +4 -0
  287. package/dist/table/column/README.md +36 -0
  288. package/dist/table/column/table-column.svelte +79 -0
  289. package/dist/table/column/table-column.svelte.d.ts +4 -0
  290. package/dist/table/column-header-cell/README.md +30 -0
  291. package/dist/table/column-header-cell/table-column-header-cell.svelte +271 -0
  292. package/dist/table/column-header-cell/table-column-header-cell.svelte.d.ts +4 -0
  293. package/dist/table/column-resizer/README.md +33 -0
  294. package/dist/table/column-resizer/table-column-resizer-fixed-width-test.svelte +57 -0
  295. package/dist/table/column-resizer/table-column-resizer-fixed-width-test.svelte.d.ts +3 -0
  296. package/dist/table/column-resizer/table-column-resizer-freeze-layout-test.svelte +52 -0
  297. package/dist/table/column-resizer/table-column-resizer-freeze-layout-test.svelte.d.ts +3 -0
  298. package/dist/table/column-resizer/table-column-resizer-narrow-min-width-test.svelte +76 -0
  299. package/dist/table/column-resizer/table-column-resizer-narrow-min-width-test.svelte.d.ts +3 -0
  300. package/dist/table/column-resizer/table-column-resizer-overflow-test.svelte +64 -0
  301. package/dist/table/column-resizer/table-column-resizer-overflow-test.svelte.d.ts +3 -0
  302. package/dist/table/column-resizer/table-column-resizer-padded-container-test.svelte +67 -0
  303. package/dist/table/column-resizer/table-column-resizer-padded-container-test.svelte.d.ts +3 -0
  304. package/dist/table/column-resizer/table-column-resizer-sandbox-overflow-test.svelte +87 -0
  305. package/dist/table/column-resizer/table-column-resizer-sandbox-overflow-test.svelte.d.ts +3 -0
  306. package/dist/table/column-resizer/table-column-resizer-selection-column-test.svelte +84 -0
  307. package/dist/table/column-resizer/table-column-resizer-selection-column-test.svelte.d.ts +3 -0
  308. package/dist/table/column-resizer/table-column-resizer-test.svelte +77 -0
  309. package/dist/table/column-resizer/table-column-resizer-test.svelte.d.ts +3 -0
  310. package/dist/table/column-resizer/table-column-resizer-three-column-relative-test.svelte +64 -0
  311. package/dist/table/column-resizer/table-column-resizer-three-column-relative-test.svelte.d.ts +3 -0
  312. package/dist/table/column-resizer/table-column-resizer.svelte +610 -0
  313. package/dist/table/column-resizer/table-column-resizer.svelte.d.ts +4 -0
  314. package/dist/table/empty-state/README.md +27 -0
  315. package/dist/table/empty-state/table-empty-state.svelte +33 -0
  316. package/dist/table/empty-state/table-empty-state.svelte.d.ts +4 -0
  317. package/dist/table/footer/README.md +26 -0
  318. package/dist/table/footer/table-footer.svelte +13 -0
  319. package/dist/table/footer/table-footer.svelte.d.ts +4 -0
  320. package/dist/table/header/README.md +26 -0
  321. package/dist/table/header/table-header.svelte +13 -0
  322. package/dist/table/header/table-header.svelte.d.ts +4 -0
  323. package/dist/table/index.d.ts +18 -0
  324. package/dist/table/index.js +17 -0
  325. package/dist/table/index.parts.d.ts +13 -0
  326. package/dist/table/index.parts.js +13 -0
  327. package/dist/table/root/README.md +66 -0
  328. package/dist/table/root/context.d.ts +233 -0
  329. package/dist/table/root/context.js +2153 -0
  330. package/dist/table/root/table-reorder-test.svelte +64 -0
  331. package/dist/table/root/table-reorder-test.svelte.d.ts +3 -0
  332. package/dist/table/root/table-root.svelte +561 -0
  333. package/dist/table/root/table-root.svelte.d.ts +4 -0
  334. package/dist/table/root/table-ssr-wrapper-column.svelte +48 -0
  335. package/dist/table/root/table-ssr-wrapper-column.svelte.d.ts +4 -0
  336. package/dist/table/root/table-ssr-wrapper-context.d.ts +11 -0
  337. package/dist/table/root/table-ssr-wrapper-context.js +13 -0
  338. package/dist/table/root/table-ssr-wrapper-test.svelte +57 -0
  339. package/dist/table/root/table-ssr-wrapper-test.svelte.d.ts +3 -0
  340. package/dist/table/root/table-test.svelte +206 -0
  341. package/dist/table/root/table-test.svelte.d.ts +29 -0
  342. package/dist/table/row/README.md +29 -0
  343. package/dist/table/row/table-row.svelte +244 -0
  344. package/dist/table/row/table-row.svelte.d.ts +4 -0
  345. package/dist/table/sort-trigger/README.md +45 -0
  346. package/dist/table/sort-trigger/table-sort-trigger.svelte +183 -0
  347. package/dist/table/sort-trigger/table-sort-trigger.svelte.d.ts +4 -0
  348. package/dist/table/types.d.ts +112 -0
  349. package/dist/table/types.js +1 -0
  350. package/dist/table/utils/handle-body-keydown.d.ts +13 -0
  351. package/dist/table/utils/handle-body-keydown.js +67 -0
  352. package/dist/table/utils/visually-hidden-style.d.ts +1 -0
  353. package/dist/table/utils/visually-hidden-style.js +1 -0
  354. package/dist/test-utils/focus-contract.d.ts +3 -0
  355. package/dist/test-utils/focus-contract.js +26 -0
  356. package/dist/timepicker/IMPLEMENTATION_PLAN.md +254 -0
  357. package/dist/timepicker/README.md +97 -0
  358. package/dist/timepicker/TODO.md +86 -0
  359. package/dist/timepicker/clock/README.md +14 -0
  360. package/dist/timepicker/clock/time-picker-clock-test.svelte +45 -0
  361. package/dist/timepicker/clock/time-picker-clock-test.svelte.d.ts +11 -0
  362. package/dist/timepicker/clock/time-picker-clock.svelte +65 -0
  363. package/dist/timepicker/clock/time-picker-clock.svelte.d.ts +10 -0
  364. package/dist/timepicker/index.d.ts +14 -0
  365. package/dist/timepicker/index.js +14 -0
  366. package/dist/timepicker/index.parts.d.ts +8 -0
  367. package/dist/timepicker/index.parts.js +8 -0
  368. package/dist/timepicker/input/README.md +15 -0
  369. package/dist/timepicker/input/time-picker-input-forwarding-test.svelte +40 -0
  370. package/dist/timepicker/input/time-picker-input-forwarding-test.svelte.d.ts +3 -0
  371. package/dist/timepicker/input/time-picker-input.svelte +109 -0
  372. package/dist/timepicker/input/time-picker-input.svelte.d.ts +11 -0
  373. package/dist/timepicker/internal/strict-props.d.ts +4 -0
  374. package/dist/timepicker/internal/strict-props.js +51 -0
  375. package/dist/timepicker/popover/README.md +20 -0
  376. package/dist/timepicker/popover/time-picker-popover-unsafe-props-test.svelte +22 -0
  377. package/dist/timepicker/popover/time-picker-popover-unsafe-props-test.svelte.d.ts +3 -0
  378. package/dist/timepicker/popover/time-picker-popover.svelte +89 -0
  379. package/dist/timepicker/popover/time-picker-popover.svelte.d.ts +7 -0
  380. package/dist/timepicker/root/README.md +42 -0
  381. package/dist/timepicker/root/context.d.ts +51 -0
  382. package/dist/timepicker/root/context.js +15 -0
  383. package/dist/timepicker/root/time-picker-12h-test.svelte +22 -0
  384. package/dist/timepicker/root/time-picker-12h-test.svelte.d.ts +3 -0
  385. package/dist/timepicker/root/time-picker-bindable-test.svelte +25 -0
  386. package/dist/timepicker/root/time-picker-bindable-test.svelte.d.ts +3 -0
  387. package/dist/timepicker/root/time-picker-empty-test.svelte +20 -0
  388. package/dist/timepicker/root/time-picker-empty-test.svelte.d.ts +3 -0
  389. package/dist/timepicker/root/time-picker-root.svelte +625 -0
  390. package/dist/timepicker/root/time-picker-root.svelte.d.ts +28 -0
  391. package/dist/timepicker/root/time-picker-test.svelte +72 -0
  392. package/dist/timepicker/root/time-picker-test.svelte.d.ts +15 -0
  393. package/dist/timepicker/root/time-utils.d.ts +1 -0
  394. package/dist/timepicker/root/time-utils.js +3 -0
  395. package/dist/timepicker/segment/README.md +14 -0
  396. package/dist/timepicker/segment/time-picker-segment.svelte +365 -0
  397. package/dist/timepicker/segment/time-picker-segment.svelte.d.ts +9 -0
  398. package/dist/timepicker/trigger/README.md +14 -0
  399. package/dist/timepicker/trigger/time-picker-trigger-forwarding-test.svelte +35 -0
  400. package/dist/timepicker/trigger/time-picker-trigger-forwarding-test.svelte.d.ts +3 -0
  401. package/dist/timepicker/trigger/time-picker-trigger.svelte +122 -0
  402. package/dist/timepicker/trigger/time-picker-trigger.svelte.d.ts +9 -0
  403. package/dist/utils/date-only.d.ts +11 -0
  404. package/dist/utils/date-only.js +53 -0
  405. package/dist/utils/index.d.ts +1 -0
  406. package/dist/utils/index.js +1 -0
  407. package/package.json +33 -2
@@ -0,0 +1,170 @@
1
+ <script lang="ts">
2
+ import { Table } from '../index';
3
+ import type {
4
+ TableDisabledBehavior,
5
+ TableSelectionBehavior,
6
+ TableSelectionKey,
7
+ TableSelectionMode
8
+ } from '../root/context';
9
+ import type { TableBodyVirtualizer } from '../types.js';
10
+
11
+ type DemoRow = {
12
+ id: string;
13
+ email: string;
14
+ group: string;
15
+ };
16
+
17
+ const defaultRows: DemoRow[] = [
18
+ { id: 'danilo', email: 'danilo@example.com', group: 'Developer' },
19
+ { id: 'zahra', email: 'zahra@example.com', group: 'Admin' },
20
+ { id: 'jasper', email: 'jasper@example.com', group: 'Developer' }
21
+ ];
22
+
23
+ const checkboxStyle =
24
+ 'display:inline-flex;height:20px;width:20px;align-items:center;justify-content:center;border:1px solid currentColor;border-radius:4px;';
25
+ const indicatorStyle =
26
+ 'display:inline-flex;height:14px;width:14px;align-items:center;justify-content:center;';
27
+
28
+ type CheckboxTestProps = {
29
+ rows?: DemoRow[];
30
+ selectionMode?: TableSelectionMode;
31
+ selectionBehavior?: TableSelectionBehavior;
32
+ disabledBehavior?: TableDisabledBehavior;
33
+ disallowEmptySelection?: boolean;
34
+ disabledKeys?: Iterable<TableSelectionKey>;
35
+ initialSelectedKeys?: Iterable<TableSelectionKey>;
36
+ useItemsMode?: boolean;
37
+ virtualizer?: TableBodyVirtualizer;
38
+ containerHeight?: string;
39
+ };
40
+
41
+ let {
42
+ rows = defaultRows,
43
+ selectionMode = 'multiple',
44
+ selectionBehavior = 'toggle',
45
+ disabledBehavior = 'all',
46
+ disallowEmptySelection = false,
47
+ disabledKeys,
48
+ initialSelectedKeys,
49
+ useItemsMode = false,
50
+ virtualizer,
51
+ containerHeight = '160px'
52
+ }: CheckboxTestProps = $props();
53
+
54
+ let currentSelectedKeys = $state<Set<TableSelectionKey>>(
55
+ new Set((() => initialSelectedKeys ?? [])())
56
+ );
57
+ </script>
58
+
59
+ <div style={useItemsMode ? `max-height:${containerHeight};overflow:auto;` : undefined}>
60
+ <Table.Root
61
+ aria-label="Users table"
62
+ {selectionMode}
63
+ {selectionBehavior}
64
+ {disabledBehavior}
65
+ {disallowEmptySelection}
66
+ bind:selectedKeys={currentSelectedKeys}
67
+ {disabledKeys}
68
+ >
69
+ <Table.Header>
70
+ <Table.Row>
71
+ <Table.Column id="selection" textValue="Selection">
72
+ <Table.ColumnHeaderCell data-testid="selection-header-cell">
73
+ <Table.Checkbox style={checkboxStyle} data-testid="header-checkbox">
74
+ <Table.CheckboxIndicator style={indicatorStyle}>
75
+ <svg aria-hidden="true" viewBox="0 0 16 16" class="h-3.5 w-3.5">
76
+ <path
77
+ d="M3.75 8.5 6.75 11.5 12.25 5.5"
78
+ fill="none"
79
+ stroke="currentColor"
80
+ stroke-linecap="round"
81
+ stroke-linejoin="round"
82
+ stroke-width="2"
83
+ />
84
+ </svg>
85
+ </Table.CheckboxIndicator>
86
+ </Table.Checkbox>
87
+ </Table.ColumnHeaderCell>
88
+ </Table.Column>
89
+ <Table.Column id="email" isRowHeader textValue="Email">
90
+ <Table.ColumnHeaderCell>Email</Table.ColumnHeaderCell>
91
+ </Table.Column>
92
+ <Table.Column id="group" textValue="Group">
93
+ <Table.ColumnHeaderCell>Group</Table.ColumnHeaderCell>
94
+ </Table.Column>
95
+ </Table.Row>
96
+ </Table.Header>
97
+
98
+ {#if useItemsMode}
99
+ <Table.Body items={rows} {virtualizer}>
100
+ {#snippet children(row)}
101
+ <Table.Row
102
+ id={row.id}
103
+ isDisabled={disabledKeys ? Array.from(disabledKeys).includes(row.id) : false}
104
+ >
105
+ <Table.Cell data-testid={`selection-cell-${row.id}`}>
106
+ <Table.Checkbox style={checkboxStyle} data-testid={`row-checkbox-${row.id}`}>
107
+ <Table.CheckboxIndicator style={indicatorStyle}>
108
+ <svg aria-hidden="true" viewBox="0 0 16 16" class="h-3.5 w-3.5">
109
+ <path
110
+ d="M3.75 8.5 6.75 11.5 12.25 5.5"
111
+ fill="none"
112
+ stroke="currentColor"
113
+ stroke-linecap="round"
114
+ stroke-linejoin="round"
115
+ stroke-width="2"
116
+ />
117
+ </svg>
118
+ </Table.CheckboxIndicator>
119
+ </Table.Checkbox>
120
+ </Table.Cell>
121
+ <Table.Cell data-testid={`email-cell-${row.id}`}>{row.email}</Table.Cell>
122
+ <Table.Cell data-testid={`group-cell-${row.id}`}>{row.group}</Table.Cell>
123
+ </Table.Row>
124
+ {/snippet}
125
+ {#snippet empty()}
126
+ <Table.EmptyState>No users found.</Table.EmptyState>
127
+ {/snippet}
128
+ </Table.Body>
129
+ {:else}
130
+ <Table.Body>
131
+ {#each rows as row (row.id)}
132
+ <Table.Row
133
+ id={row.id}
134
+ isDisabled={disabledKeys ? Array.from(disabledKeys).includes(row.id) : false}
135
+ >
136
+ <Table.Cell data-testid={`selection-cell-${row.id}`}>
137
+ <Table.Checkbox style={checkboxStyle} data-testid={`row-checkbox-${row.id}`}>
138
+ <Table.CheckboxIndicator style={indicatorStyle}>
139
+ <svg aria-hidden="true" viewBox="0 0 16 16" class="h-3.5 w-3.5">
140
+ <path
141
+ d="M3.75 8.5 6.75 11.5 12.25 5.5"
142
+ fill="none"
143
+ stroke="currentColor"
144
+ stroke-linecap="round"
145
+ stroke-linejoin="round"
146
+ stroke-width="2"
147
+ />
148
+ </svg>
149
+ </Table.CheckboxIndicator>
150
+ </Table.Checkbox>
151
+ </Table.Cell>
152
+ <Table.Cell data-testid={`email-cell-${row.id}`}>{row.email}</Table.Cell>
153
+ <Table.Cell data-testid={`group-cell-${row.id}`}>{row.group}</Table.Cell>
154
+ </Table.Row>
155
+ {/each}
156
+ <Table.EmptyState>No users found.</Table.EmptyState>
157
+ </Table.Body>
158
+ {/if}
159
+
160
+ <Table.Footer>
161
+ <Table.Row>
162
+ <Table.Cell />
163
+ <Table.Cell>Total</Table.Cell>
164
+ <Table.Cell>{rows.length} users</Table.Cell>
165
+ </Table.Row>
166
+ </Table.Footer>
167
+ </Table.Root>
168
+ </div>
169
+
170
+ <output data-testid="selected-keys">{JSON.stringify([...currentSelectedKeys])}</output>
@@ -0,0 +1,22 @@
1
+ import type { TableDisabledBehavior, TableSelectionBehavior, TableSelectionKey, TableSelectionMode } from '../root/context';
2
+ import type { TableBodyVirtualizer } from '../types.js';
3
+ type DemoRow = {
4
+ id: string;
5
+ email: string;
6
+ group: string;
7
+ };
8
+ type CheckboxTestProps = {
9
+ rows?: DemoRow[];
10
+ selectionMode?: TableSelectionMode;
11
+ selectionBehavior?: TableSelectionBehavior;
12
+ disabledBehavior?: TableDisabledBehavior;
13
+ disallowEmptySelection?: boolean;
14
+ disabledKeys?: Iterable<TableSelectionKey>;
15
+ initialSelectedKeys?: Iterable<TableSelectionKey>;
16
+ useItemsMode?: boolean;
17
+ virtualizer?: TableBodyVirtualizer;
18
+ containerHeight?: string;
19
+ };
20
+ declare const TableCheckboxTest: import("svelte").Component<CheckboxTestProps, {}, "">;
21
+ type TableCheckboxTest = ReturnType<typeof TableCheckboxTest>;
22
+ export default TableCheckboxTest;
@@ -0,0 +1,235 @@
1
+ <script lang="ts">
2
+ import { Checkbox } from '../../checkbox';
3
+ import {
4
+ useTableCellContext,
5
+ useTableContext,
6
+ useTableRowContext,
7
+ useTableSectionContext
8
+ } from '../root/context';
9
+ import type { TableCheckboxProps } from '../types.js';
10
+ import {
11
+ shouldShowFocusVisible,
12
+ trackInteractionModality
13
+ } from '../../primitives/input-modality';
14
+
15
+ let {
16
+ id,
17
+ title,
18
+ children,
19
+ class: className = '',
20
+ 'aria-label': ariaLabel,
21
+ 'aria-labelledby': ariaLabelledby,
22
+ ...restProps
23
+ }: TableCheckboxProps = $props();
24
+
25
+ const table = useTableContext();
26
+ const section = useTableSectionContext();
27
+ const row = useTableRowContext();
28
+ const cell = useTableCellContext();
29
+ const selectionVersion = table.selectionVersion;
30
+ const layoutVersion = table.layoutVersion;
31
+
32
+ let checkboxElement = $state<HTMLSpanElement | null>(null);
33
+
34
+ const isVisible = $derived.by(() => {
35
+ if (table.selectionMode === 'none') return false;
36
+ if (section.section === 'footer') return false;
37
+ if (section.section === 'header') return table.selectionMode === 'multiple';
38
+ return section.section === 'body';
39
+ });
40
+
41
+ const checkboxState = $derived.by(() => {
42
+ void $selectionVersion;
43
+ void $layoutVersion;
44
+ return section.section === 'header' ? table.getSelectionCheckboxState() : 'none';
45
+ });
46
+
47
+ const isChecked = $derived.by(() => {
48
+ void $selectionVersion;
49
+ if (section.section === 'header') {
50
+ return checkboxState === 'all';
51
+ }
52
+ return section.section === 'body' ? table.isRowSelected(row.rowId) : false;
53
+ });
54
+
55
+ const isIndeterminate = $derived(section.section === 'header' && checkboxState === 'some');
56
+
57
+ const isDisabled = $derived.by(() => {
58
+ void $selectionVersion;
59
+ void $layoutVersion;
60
+ if (!isVisible) return true;
61
+ if (section.section === 'header') {
62
+ return !table.hasSelectableRows();
63
+ }
64
+ if (section.section === 'body') {
65
+ return table.isRowSelectionDisabled(row.rowId, row.isDisabled) || row.rowId === undefined;
66
+ }
67
+ return true;
68
+ });
69
+
70
+ const tabIndex = $derived.by(() => {
71
+ if (!isVisible || isDisabled) return undefined;
72
+ return table.isCellTabStop(cell.cellKey) ? 0 : -1;
73
+ });
74
+
75
+ const accessibleLabel = $derived.by(() => {
76
+ if (ariaLabel) return ariaLabel;
77
+ if (ariaLabelledby) return undefined;
78
+ if (section.section === 'header') return 'Select all rows';
79
+ return row.rowId !== undefined ? `Select row ${String(row.rowId)}` : 'Select row';
80
+ });
81
+
82
+ function getCheckboxRootElement() {
83
+ return checkboxElement ?? undefined;
84
+ }
85
+
86
+ $effect(() => {
87
+ if (!isVisible || isDisabled) {
88
+ cell.unregisterFocusDelegate();
89
+ return;
90
+ }
91
+
92
+ cell.registerFocusDelegate(() => getCheckboxRootElement());
93
+
94
+ return () => {
95
+ cell.unregisterFocusDelegate();
96
+ };
97
+ });
98
+
99
+ function applySelection(nextChecked: boolean) {
100
+ if (isDisabled) return;
101
+
102
+ if (section.section === 'header') {
103
+ if (nextChecked) {
104
+ table.selectAllRows();
105
+ } else {
106
+ table.deselectAllRows();
107
+ }
108
+ return;
109
+ }
110
+
111
+ if (section.section === 'body') {
112
+ table.toggleRowSelection(row.rowId);
113
+ }
114
+ }
115
+
116
+ function handleFocusIn(event: FocusEvent) {
117
+ const target = event.target instanceof HTMLElement ? event.target : getCheckboxRootElement();
118
+ table.setFocusedCell(cell.cellKey);
119
+ table.setFocusVisible(shouldShowFocusVisible(target ?? null));
120
+ }
121
+
122
+ function handleMouseDown(event: MouseEvent) {
123
+ trackInteractionModality(event, getCheckboxRootElement() ?? null);
124
+ table.setFocusVisible(false);
125
+ event.stopPropagation();
126
+ }
127
+
128
+ function handleClick(event: MouseEvent) {
129
+ event.stopPropagation();
130
+ if (!isVisible || isDisabled) return;
131
+ event.preventDefault();
132
+ const nextChecked = section.section === 'header' ? checkboxState !== 'all' : !isChecked;
133
+ applySelection(nextChecked);
134
+ table.focusCellByKey(cell.cellKey);
135
+ }
136
+
137
+ function handleKeyDown(event: KeyboardEvent) {
138
+ trackInteractionModality(event, getCheckboxRootElement() ?? null);
139
+
140
+ if ((event.ctrlKey || event.metaKey) && event.key.toLowerCase() === 'a') {
141
+ if (table.selectionMode === 'multiple') {
142
+ event.preventDefault();
143
+ event.stopPropagation();
144
+ table.selectAllRows();
145
+ }
146
+ return;
147
+ }
148
+
149
+ if ((event.ctrlKey || event.metaKey) && event.key === 'Home') {
150
+ event.preventDefault();
151
+ event.stopPropagation();
152
+ table.moveToGridStart();
153
+ return;
154
+ }
155
+
156
+ if ((event.ctrlKey || event.metaKey) && event.key === 'End') {
157
+ event.preventDefault();
158
+ event.stopPropagation();
159
+ table.moveToGridEnd();
160
+ return;
161
+ }
162
+
163
+ switch (event.key) {
164
+ case 'ArrowUp':
165
+ event.preventDefault();
166
+ event.stopPropagation();
167
+ table.moveFocus('up', {
168
+ shiftKey: event.shiftKey,
169
+ ctrlKey: event.ctrlKey,
170
+ metaKey: event.metaKey,
171
+ altKey: event.altKey
172
+ });
173
+ return;
174
+ case 'ArrowDown':
175
+ event.preventDefault();
176
+ event.stopPropagation();
177
+ table.moveFocus('down', {
178
+ shiftKey: event.shiftKey,
179
+ ctrlKey: event.ctrlKey,
180
+ metaKey: event.metaKey,
181
+ altKey: event.altKey
182
+ });
183
+ return;
184
+ case 'ArrowLeft':
185
+ event.preventDefault();
186
+ event.stopPropagation();
187
+ table.moveFocus('left');
188
+ return;
189
+ case 'ArrowRight':
190
+ event.preventDefault();
191
+ event.stopPropagation();
192
+ table.moveFocus('right');
193
+ return;
194
+ case 'Home':
195
+ event.preventDefault();
196
+ event.stopPropagation();
197
+ table.moveToRowStart();
198
+ return;
199
+ case 'End':
200
+ event.preventDefault();
201
+ event.stopPropagation();
202
+ table.moveToRowEnd();
203
+ return;
204
+ case 'Enter':
205
+ case ' ':
206
+ event.stopPropagation();
207
+ if (event.repeat || isDisabled) return;
208
+ return;
209
+ }
210
+ }
211
+ </script>
212
+
213
+ {#if isVisible}
214
+ <Checkbox.Root
215
+ {id}
216
+ bind:element={checkboxElement}
217
+ {isChecked}
218
+ {isIndeterminate}
219
+ {isDisabled}
220
+ onCheckedChange={applySelection}
221
+ {title}
222
+ aria-label={accessibleLabel}
223
+ aria-labelledby={ariaLabelledby}
224
+ data-table-checkbox="true"
225
+ tabindex={tabIndex}
226
+ onclick={handleClick}
227
+ onkeydown={handleKeyDown}
228
+ onfocus={handleFocusIn}
229
+ onmousedown={handleMouseDown}
230
+ class={className}
231
+ {...restProps}
232
+ >
233
+ {@render children?.()}
234
+ </Checkbox.Root>
235
+ {/if}
@@ -0,0 +1,4 @@
1
+ import type { TableCheckboxProps } from '../types.js';
2
+ declare const TableCheckbox: import("svelte").Component<TableCheckboxProps, {}, "">;
3
+ type TableCheckbox = ReturnType<typeof TableCheckbox>;
4
+ export default TableCheckbox;
@@ -0,0 +1,31 @@
1
+ # Table.CheckboxIndicator
2
+
3
+ ## API reference
4
+
5
+ ### Indicator Part
6
+
7
+ Name: `Table.CheckboxIndicator`
8
+ Description: Headless presence wrapper for indicator content inside `Table.Checkbox`. It renders when the checkbox is checked or indeterminate.
9
+
10
+ Public prop type: `TableCheckboxIndicatorProps`
11
+
12
+ | Prop | Type | Default | Description |
13
+ | -------------- | --------------------------------- | ----------- | ------------------------------------------------------------------------------- |
14
+ | `keepMounted` | `boolean` | `false` | Keeps the indicator mounted while hidden when the checkbox is unchecked. |
15
+ | `children` | `Snippet` | `undefined` | Rendered indicator content, such as a check icon or dash icon. |
16
+ | `class` | `string` | `''` | CSS class names for the indicator wrapper. |
17
+ | `...restProps` | `HTMLAttributes<HTMLSpanElement>` | `-` | Additional native attributes forwarded to the composed checkbox indicator span. |
18
+
19
+ ## Usage notes
20
+
21
+ - Use `Table.CheckboxIndicator` inside `Table.Checkbox`.
22
+ - The part is headless and unstyled.
23
+ - It mirrors the visibility behavior of `Checkbox.Indicator` and renders for checked and indeterminate states.
24
+
25
+ ```svelte
26
+ <Table.Checkbox class="inline-flex h-5 w-5 items-center justify-center rounded border">
27
+ <Table.CheckboxIndicator>
28
+ <CheckIcon class="h-3.5 w-3.5" />
29
+ </Table.CheckboxIndicator>
30
+ </Table.Checkbox>
31
+ ```
@@ -0,0 +1,15 @@
1
+ <script lang="ts">
2
+ import { Checkbox } from '../../checkbox';
3
+ import type { TableCheckboxIndicatorProps } from '../types.js';
4
+
5
+ let {
6
+ keepMounted = false,
7
+ children,
8
+ class: className = '',
9
+ ...restProps
10
+ }: TableCheckboxIndicatorProps = $props();
11
+ </script>
12
+
13
+ <Checkbox.Indicator {keepMounted} class={className} {...restProps}>
14
+ {@render children?.()}
15
+ </Checkbox.Indicator>
@@ -0,0 +1,4 @@
1
+ import type { TableCheckboxIndicatorProps } from '../types.js';
2
+ declare const TableCheckboxIndicator: import("svelte").Component<TableCheckboxIndicatorProps, {}, "">;
3
+ type TableCheckboxIndicator = ReturnType<typeof TableCheckboxIndicator>;
4
+ export default TableCheckboxIndicator;
@@ -0,0 +1,36 @@
1
+ <!-- markdownlint-disable MD024 MD060 -->
2
+
3
+ # Table.Column
4
+
5
+ ## API reference
6
+
7
+ ### Table.Column
8
+
9
+ Name: `Table.Column`
10
+ Description: Logical metadata wrapper for a header column. It does not render DOM and is used to register stable column identity, row-header semantics, and width constraints.
11
+
12
+ Public prop type: `TableColumnProps`
13
+
14
+ | Prop | Type | Default | Description |
15
+ | -------------- | --------------------------- | ----------- | ------------------------------------------------------------------------------------------------------------- |
16
+ | `id` | `string` | `-` | Stable identifier for the column. |
17
+ | `isRowHeader` | `boolean` | `false` | Marks the associated body column as row-header cells. |
18
+ | `textValue` | `string` | `undefined` | Optional spoken label used by `Table.Root` sort announcements when it should differ from `id`. |
19
+ | `width` | `number \| \`${number}px\`` | `undefined` | Fixed column width. When set, the column keeps that width and user resize interactions are disabled. |
20
+ | `defaultWidth` | `number \| \`${number}px\`` | `undefined` | Uncontrolled initial width hint for the column. The column remains user-resizable when a resizer is composed. |
21
+ | `minWidth` | `number` | `undefined` | Minimum width in px enforced during resize interactions. |
22
+ | `maxWidth` | `number` | `undefined` | Maximum width in px enforced during resize interactions. |
23
+ | `children` | `Snippet` | `undefined` | Usually a single `Table.ColumnHeaderCell`. |
24
+
25
+ `Table.SortTrigger` is the public sorting opt-in. Compose it inside `Table.ColumnHeaderCell` when the owning column should be sortable.
26
+
27
+ `Table.ColumnResizer` is the public resize opt-in. Compose it inside `Table.ColumnHeaderCell` when the owning column should be resizable.
28
+
29
+ ### Context utilities
30
+
31
+ Name: `Table.Column` column context
32
+ Description: Provides column metadata to `Table.ColumnHeaderCell`.
33
+
34
+ | Prop | Type | Default | Description |
35
+ | ----------------------- | -------------------------- | ------- | -------------------------------------------------------------------- |
36
+ | `useTableColumnContext` | `() => TableColumnContext` | `-` | Reads the current column metadata and throws outside `Table.Column`. |
@@ -0,0 +1,79 @@
1
+ <script lang="ts">
2
+ import { onDestroy } from 'svelte';
3
+ import { setTableColumnContext, useTableContext, useTableSectionContext } from '../root/context';
4
+ import type { TableColumnProps } from '../types.js';
5
+
6
+ let {
7
+ id,
8
+ isRowHeader = false,
9
+ textValue,
10
+ width,
11
+ defaultWidth,
12
+ minWidth,
13
+ maxWidth,
14
+ children
15
+ }: TableColumnProps = $props();
16
+
17
+ const table = useTableContext();
18
+ const section = useTableSectionContext();
19
+ const token = table.createInstanceToken('column');
20
+
21
+ if (section.section !== 'header') {
22
+ throw new Error('`Table.Column` must be used inside `Table.Header`.');
23
+ }
24
+
25
+ setTableColumnContext({
26
+ token,
27
+ get id() {
28
+ return id;
29
+ },
30
+ get isHidden() {
31
+ return table.isColumnHidden(id);
32
+ },
33
+ get isRowHeader() {
34
+ return isRowHeader;
35
+ },
36
+ get textValue() {
37
+ return textValue;
38
+ },
39
+ get width() {
40
+ return width;
41
+ },
42
+ get defaultWidth() {
43
+ return defaultWidth;
44
+ },
45
+ get minWidth() {
46
+ return minWidth;
47
+ },
48
+ get maxWidth() {
49
+ return maxWidth;
50
+ }
51
+ });
52
+
53
+ function syncColumnRegistration() {
54
+ table.registerColumn({
55
+ token,
56
+ id,
57
+ isRowHeader,
58
+ textValue,
59
+ width,
60
+ defaultWidth,
61
+ minWidth,
62
+ maxWidth
63
+ });
64
+ }
65
+
66
+ syncColumnRegistration();
67
+
68
+ $effect(() => {
69
+ syncColumnRegistration();
70
+ });
71
+
72
+ onDestroy(() => {
73
+ table.unregisterColumn(token);
74
+ });
75
+ </script>
76
+
77
+ {#if children}
78
+ {@render children()}
79
+ {/if}
@@ -0,0 +1,4 @@
1
+ import type { TableColumnProps } from '../types.js';
2
+ declare const TableColumn: import("svelte").Component<TableColumnProps, {}, "">;
3
+ type TableColumn = ReturnType<typeof TableColumn>;
4
+ export default TableColumn;
@@ -0,0 +1,30 @@
1
+ <!-- markdownlint-disable MD024 -->
2
+
3
+ # Table.ColumnHeaderCell
4
+
5
+ ## API reference
6
+
7
+ ### Table.ColumnHeaderCell
8
+
9
+ Name: `Table.ColumnHeaderCell`
10
+ Description: Focusable header cell for a column. It participates in roving focus, exposes `aria-sort` when a nested `Table.SortTrigger` is present, and can host additional header actions.
11
+
12
+ Public prop type: `TableColumnHeaderCellProps`
13
+
14
+ - When a nested control like `Table.ColumnResizer` receives focus, the header exposes `data-focus-within` / `data-focus-visible-within` instead of remaining `data-focused`.
15
+
16
+ | Prop | Type | Default | Description |
17
+ | ---------- | --------- | ----------- | --------------------------------- |
18
+ | `class` | `string` | `''` | Class names for the `th` element. |
19
+ | `children` | `Snippet` | `undefined` | Header content. |
20
+
21
+ ### Context utilities
22
+
23
+ Name: `Table.ColumnHeaderCell` dependencies
24
+ Description: Consumes both column and row context to register a navigable header cell.
25
+
26
+ | Prop | Type | Default | Description |
27
+ | ----------------------- | -------------------------- | ------- | ------------------------------------ |
28
+ | `useTableColumnContext` | `() => TableColumnContext` | `-` | Reads current column metadata. |
29
+ | `useTableRowContext` | `() => TableRowContext` | `-` | Reads the current row token. |
30
+ | `useTableContext` | `() => TableContext` | `-` | Reads table focus and sorting state. |