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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (394) hide show
  1. package/dist/FOCUS_STATE_CONTRACT.md +63 -0
  2. package/dist/FOCUS_STATE_REVIEW_TEMPLATE.md +70 -0
  3. package/dist/button/README.md +48 -0
  4. package/dist/button/TODO.md +13 -0
  5. package/dist/button/index.d.ts +5 -0
  6. package/dist/button/index.js +4 -0
  7. package/dist/button/index.parts.d.ts +1 -0
  8. package/dist/button/index.parts.js +1 -0
  9. package/dist/button/root/README.md +43 -0
  10. package/dist/button/root/button-root.svelte +362 -0
  11. package/dist/button/root/button-root.svelte.d.ts +21 -0
  12. package/dist/button/root/button-test.svelte +76 -0
  13. package/dist/button/root/button-test.svelte.d.ts +11 -0
  14. package/dist/calendar/README.md +2 -1
  15. package/dist/calendar/TODO.md +21 -107
  16. package/dist/calendar/body-cell/README.md +15 -0
  17. package/dist/calendar/body-cell/calendar-body-cell.svelte +116 -41
  18. package/dist/calendar/grid/README.md +13 -0
  19. package/dist/calendar/grid-body/README.md +13 -0
  20. package/dist/calendar/grid-header/README.md +13 -0
  21. package/dist/calendar/header-cell/README.md +14 -0
  22. package/dist/calendar/heading/README.md +13 -0
  23. package/dist/calendar/index.d.ts +3 -3
  24. package/dist/calendar/index.js +3 -3
  25. package/dist/calendar/root/README.md +24 -0
  26. package/dist/calendar/root/calendar-root-test.svelte +4 -0
  27. package/dist/calendar/root/calendar-root-test.svelte.d.ts +1 -0
  28. package/dist/calendar/root/calendar-root.svelte +3 -0
  29. package/dist/calendar/root/calendar-root.svelte.d.ts +1 -0
  30. package/dist/calendar/root/context.d.ts +4 -0
  31. package/dist/calendar/root/context.js +28 -25
  32. package/dist/calendar/root/date-utils.d.ts +1 -1
  33. package/dist/calendar/root/date-utils.js +16 -26
  34. package/dist/calendar/trigger-next/README.md +14 -0
  35. package/dist/calendar/trigger-next/calendar-trigger-next.svelte +9 -4
  36. package/dist/calendar/trigger-next/calendar-trigger-next.svelte.d.ts +2 -1
  37. package/dist/calendar/trigger-previous/README.md +14 -0
  38. package/dist/calendar/trigger-previous/calendar-trigger-previous.svelte +9 -4
  39. package/dist/calendar/trigger-previous/calendar-trigger-previous.svelte.d.ts +2 -1
  40. package/dist/checkbox/README.md +53 -0
  41. package/dist/checkbox/TODO.md +16 -0
  42. package/dist/checkbox/index.d.ts +6 -0
  43. package/dist/checkbox/index.js +6 -0
  44. package/dist/checkbox/index.parts.d.ts +2 -0
  45. package/dist/checkbox/index.parts.js +2 -0
  46. package/dist/checkbox/indicator/README.md +23 -0
  47. package/dist/checkbox/indicator/checkbox-indicator.svelte +43 -0
  48. package/dist/checkbox/indicator/checkbox-indicator.svelte.d.ts +10 -0
  49. package/dist/checkbox/root/README.md +47 -0
  50. package/dist/checkbox/root/checkbox-label-test.svelte +10 -0
  51. package/dist/checkbox/root/checkbox-label-test.svelte.d.ts +18 -0
  52. package/dist/checkbox/root/checkbox-root.svelte +386 -0
  53. package/dist/checkbox/root/checkbox-root.svelte.d.ts +29 -0
  54. package/dist/checkbox/root/checkbox-test.svelte +59 -0
  55. package/dist/checkbox/root/checkbox-test.svelte.d.ts +18 -0
  56. package/dist/checkbox/root/context.d.ts +21 -0
  57. package/dist/checkbox/root/context.js +15 -0
  58. package/dist/clock/README.md +75 -0
  59. package/dist/clock/axis/README.md +24 -0
  60. package/dist/clock/axis/clock-axis.svelte +37 -0
  61. package/dist/clock/axis/clock-axis.svelte.d.ts +8 -0
  62. package/dist/clock/hooks/use-wheel-scroll.svelte.d.ts +16 -0
  63. package/dist/clock/hooks/use-wheel-scroll.svelte.js +336 -0
  64. package/dist/clock/index.d.ts +10 -0
  65. package/dist/clock/index.js +10 -0
  66. package/dist/clock/index.parts.d.ts +4 -0
  67. package/dist/clock/index.parts.js +4 -0
  68. package/dist/clock/root/README.md +38 -0
  69. package/dist/clock/root/clock-root-test.svelte +62 -0
  70. package/dist/clock/root/clock-root-test.svelte.d.ts +14 -0
  71. package/dist/clock/root/clock-root.svelte +329 -0
  72. package/dist/clock/root/clock-root.svelte.d.ts +25 -0
  73. package/dist/clock/root/context.d.ts +22 -0
  74. package/dist/clock/root/context.js +15 -0
  75. package/dist/clock/root/resolve-visible-columns.d.ts +7 -0
  76. package/dist/clock/root/resolve-visible-columns.js +16 -0
  77. package/dist/clock/root/time-utils.d.ts +48 -0
  78. package/dist/clock/root/time-utils.js +314 -0
  79. package/dist/clock/root/wheel-options.d.ts +17 -0
  80. package/dist/clock/root/wheel-options.js +63 -0
  81. package/dist/clock/wheel-column/README.md +25 -0
  82. package/dist/clock/wheel-column/clock-wheel-column-bindable-test.svelte +16 -0
  83. package/dist/clock/wheel-column/clock-wheel-column-bindable-test.svelte.d.ts +3 -0
  84. package/dist/clock/wheel-column/clock-wheel-column-custom-snippet-test.svelte +29 -0
  85. package/dist/clock/wheel-column/clock-wheel-column-custom-snippet-test.svelte.d.ts +6 -0
  86. package/dist/clock/wheel-column/clock-wheel-column-default-height-test.svelte +11 -0
  87. package/dist/clock/wheel-column/clock-wheel-column-default-height-test.svelte.d.ts +3 -0
  88. package/dist/clock/wheel-column/clock-wheel-column-test.svelte +38 -0
  89. package/dist/clock/wheel-column/clock-wheel-column-test.svelte.d.ts +12 -0
  90. package/dist/clock/wheel-column/clock-wheel-column-tp-test.svelte +38 -0
  91. package/dist/clock/wheel-column/clock-wheel-column-tp-test.svelte.d.ts +12 -0
  92. package/dist/clock/wheel-column/clock-wheel-column-untagged-snippet-test.svelte +29 -0
  93. package/dist/clock/wheel-column/clock-wheel-column-untagged-snippet-test.svelte.d.ts +6 -0
  94. package/dist/clock/wheel-column/clock-wheel-column.svelte +499 -0
  95. package/dist/clock/wheel-column/clock-wheel-column.svelte.d.ts +17 -0
  96. package/dist/clock/wheel-item/README.md +17 -0
  97. package/dist/clock/wheel-item/clock-wheel-item.svelte +49 -0
  98. package/dist/clock/wheel-item/clock-wheel-item.svelte.d.ts +17 -0
  99. package/dist/combobox/README.md +8 -2
  100. package/dist/combobox/TODO.md +28 -175
  101. package/dist/combobox/button/README.md +8 -3
  102. package/dist/combobox/button/combobox-button-test.svelte +27 -0
  103. package/dist/combobox/button/combobox-button-test.svelte.d.ts +6 -0
  104. package/dist/combobox/button/combobox-button.svelte +10 -11
  105. package/dist/combobox/clear/README.md +21 -0
  106. package/dist/combobox/clear/combobox-clear-test.svelte +34 -0
  107. package/dist/combobox/clear/combobox-clear-test.svelte.d.ts +3 -0
  108. package/dist/combobox/clear/combobox-clear.svelte +61 -0
  109. package/dist/combobox/clear/combobox-clear.svelte.d.ts +9 -0
  110. package/dist/combobox/index.d.ts +5 -3
  111. package/dist/combobox/index.js +5 -3
  112. package/dist/combobox/index.parts.d.ts +2 -0
  113. package/dist/combobox/index.parts.js +2 -0
  114. package/dist/combobox/input/combobox-input.svelte +44 -12
  115. package/dist/combobox/item/combobox-item-implicit-text-test.svelte +1 -1
  116. package/dist/combobox/item/combobox-listboxitem.svelte +14 -11
  117. package/dist/combobox/item-indicator/combobox-item-indicator.svelte +4 -15
  118. package/dist/combobox/list/combobox-listbox.svelte +1 -0
  119. package/dist/combobox/list/combobox-listbox.svelte.d.ts +2 -1
  120. package/dist/combobox/popover/README.md +18 -4
  121. package/dist/combobox/popover/combobox-popover-props-test.svelte +38 -0
  122. package/dist/combobox/popover/combobox-popover-props-test.svelte.d.ts +11 -0
  123. package/dist/combobox/popover/combobox-popover.svelte +166 -23
  124. package/dist/combobox/popover/combobox-popover.svelte.d.ts +3 -3
  125. package/dist/combobox/popover/combobox-scrollable-list-test.svelte +23 -0
  126. package/dist/combobox/popover/combobox-scrollable-list-test.svelte.d.ts +18 -0
  127. package/dist/combobox/root/README.md +1 -0
  128. package/dist/combobox/root/combobox-multiselect-test.svelte +5 -3
  129. package/dist/combobox/root/combobox-multiselect-test.svelte.d.ts +1 -0
  130. package/dist/combobox/root/combobox-numeric-string-id-test.svelte +1 -1
  131. package/dist/combobox/root/combobox-test.svelte +23 -4
  132. package/dist/combobox/root/combobox-test.svelte.d.ts +2 -0
  133. package/dist/combobox/root/combobox.svelte +119 -13
  134. package/dist/combobox/root/combobox.svelte.d.ts +1 -0
  135. package/dist/combobox/root/context.d.ts +19 -1
  136. package/dist/combobox/tag-remove/combobox-tag-remove.svelte +3 -2
  137. package/dist/combobox/trigger/README.md +21 -0
  138. package/dist/combobox/trigger/combobox-trigger.svelte +56 -0
  139. package/dist/combobox/trigger/combobox-trigger.svelte.d.ts +9 -0
  140. package/dist/datepicker/README.md +100 -0
  141. package/dist/datepicker/TODO.md +28 -0
  142. package/dist/datepicker/calendar/README.md +19 -0
  143. package/dist/datepicker/calendar/date-picker-calendar-unsafe-props-test.svelte +60 -0
  144. package/dist/datepicker/calendar/date-picker-calendar-unsafe-props-test.svelte.d.ts +3 -0
  145. package/dist/datepicker/calendar/date-picker-calendar.svelte +65 -0
  146. package/dist/datepicker/calendar/date-picker-calendar.svelte.d.ts +10 -0
  147. package/dist/datepicker/index.d.ts +18 -0
  148. package/dist/datepicker/index.js +18 -0
  149. package/dist/datepicker/index.parts.d.ts +14 -0
  150. package/dist/datepicker/index.parts.js +14 -0
  151. package/dist/datepicker/input/README.md +15 -0
  152. package/dist/datepicker/input/date-picker-input.svelte +108 -0
  153. package/dist/datepicker/input/date-picker-input.svelte.d.ts +11 -0
  154. package/dist/datepicker/internal/strict-props.d.ts +2 -0
  155. package/dist/datepicker/internal/strict-props.js +28 -0
  156. package/dist/datepicker/popover/README.md +20 -0
  157. package/dist/datepicker/popover/date-picker-popover-handler-test.svelte +57 -0
  158. package/dist/datepicker/popover/date-picker-popover-handler-test.svelte.d.ts +3 -0
  159. package/dist/datepicker/popover/date-picker-popover-unsafe-props-test.svelte +45 -0
  160. package/dist/datepicker/popover/date-picker-popover-unsafe-props-test.svelte.d.ts +18 -0
  161. package/dist/datepicker/popover/date-picker-popover.svelte +87 -0
  162. package/dist/datepicker/popover/date-picker-popover.svelte.d.ts +7 -0
  163. package/dist/datepicker/root/README.md +38 -0
  164. package/dist/datepicker/root/context.d.ts +43 -0
  165. package/dist/datepicker/root/context.js +15 -0
  166. package/dist/datepicker/root/date-picker-bindable-empty-test.svelte +24 -0
  167. package/dist/datepicker/root/date-picker-bindable-empty-test.svelte.d.ts +3 -0
  168. package/dist/datepicker/root/date-picker-bindable-test.svelte +41 -0
  169. package/dist/datepicker/root/date-picker-bindable-test.svelte.d.ts +3 -0
  170. package/dist/datepicker/root/date-picker-empty-test.svelte +47 -0
  171. package/dist/datepicker/root/date-picker-empty-test.svelte.d.ts +3 -0
  172. package/dist/datepicker/root/date-picker-locale-typing-test.svelte +47 -0
  173. package/dist/datepicker/root/date-picker-locale-typing-test.svelte.d.ts +3 -0
  174. package/dist/datepicker/root/date-picker-open-cancel-test.svelte +54 -0
  175. package/dist/datepicker/root/date-picker-open-cancel-test.svelte.d.ts +8 -0
  176. package/dist/datepicker/root/date-picker-root.svelte +495 -0
  177. package/dist/datepicker/root/date-picker-root.svelte.d.ts +24 -0
  178. package/dist/datepicker/root/date-picker-test.svelte +86 -0
  179. package/dist/datepicker/root/date-picker-test.svelte.d.ts +13 -0
  180. package/dist/datepicker/root/date-utils.d.ts +17 -0
  181. package/dist/datepicker/root/date-utils.js +138 -0
  182. package/dist/datepicker/root/draft-evaluation.d.ts +13 -0
  183. package/dist/datepicker/root/draft-evaluation.js +56 -0
  184. package/dist/datepicker/root/focus-controller.d.ts +3 -0
  185. package/dist/datepicker/root/focus-controller.js +15 -0
  186. package/dist/datepicker/root/open-change.d.ts +5 -0
  187. package/dist/datepicker/root/open-change.js +13 -0
  188. package/dist/datepicker/root/open-controller.d.ts +7 -0
  189. package/dist/datepicker/root/open-controller.js +15 -0
  190. package/dist/datepicker/root/segment-controller.d.ts +8 -0
  191. package/dist/datepicker/root/segment-controller.js +53 -0
  192. package/dist/datepicker/root/segment-state.d.ts +18 -0
  193. package/dist/datepicker/root/segment-state.js +134 -0
  194. package/dist/datepicker/root/value-commit.d.ts +4 -0
  195. package/dist/datepicker/root/value-commit.js +8 -0
  196. package/dist/datepicker/segment/README.md +14 -0
  197. package/dist/datepicker/segment/date-picker-segment.svelte +319 -0
  198. package/dist/datepicker/segment/date-picker-segment.svelte.d.ts +9 -0
  199. package/dist/datepicker/trigger/README.md +14 -0
  200. package/dist/datepicker/trigger/date-picker-trigger.svelte +110 -0
  201. package/dist/datepicker/trigger/date-picker-trigger.svelte.d.ts +9 -0
  202. package/dist/dialog/content/dialog-content.svelte +6 -6
  203. package/dist/dialog/index.d.ts +3 -3
  204. package/dist/dialog/index.js +2 -2
  205. package/dist/dialog/root/context.d.ts +2 -1
  206. package/dist/dialog/root/dialog-root.svelte +9 -2
  207. package/dist/hooks/use-virtual-focus.svelte.js +3 -1
  208. package/dist/index.d.ts +31 -17
  209. package/dist/index.js +31 -17
  210. package/dist/input/README.md +38 -0
  211. package/dist/input/TODO.md +12 -0
  212. package/dist/input/input-test.svelte +43 -0
  213. package/dist/input/input-test.svelte.d.ts +12 -0
  214. package/dist/input/input.svelte +151 -7
  215. package/dist/input/input.svelte.d.ts +8 -2
  216. package/dist/listbox/index.d.ts +3 -3
  217. package/dist/listbox/index.js +3 -3
  218. package/dist/listbox/item/README.md +2 -1
  219. package/dist/listbox/item/listbox-item.svelte +260 -6
  220. package/dist/listbox/item/listbox-item.svelte.d.ts +6 -0
  221. package/dist/listbox/root/context.d.ts +6 -0
  222. package/dist/listbox/root/context.js +23 -13
  223. package/dist/listbox/root/listbox-test.svelte +14 -2
  224. package/dist/listbox/root/listbox-test.svelte.d.ts +1 -0
  225. package/dist/listbox/root/listbox.svelte +49 -2
  226. package/dist/listbox/root/listbox.svelte.d.ts +4 -2
  227. package/dist/popover/README.md +10 -0
  228. package/dist/popover/content/README.md +11 -0
  229. package/dist/popover/content/popover-content-standalone-test.svelte +28 -0
  230. package/dist/popover/content/popover-content-standalone-test.svelte.d.ts +6 -0
  231. package/dist/popover/content/popover-content-test.svelte +32 -2
  232. package/dist/popover/content/popover-content-test.svelte.d.ts +3 -1
  233. package/dist/popover/content/popover-content.svelte +277 -24
  234. package/dist/popover/content/popover-content.svelte.d.ts +5 -1
  235. package/dist/popover/index.d.ts +3 -3
  236. package/dist/popover/index.js +3 -5
  237. package/dist/popover/root/README.md +10 -15
  238. package/dist/popover/root/context.d.ts +16 -7
  239. package/dist/popover/root/context.js +0 -2
  240. package/dist/popover/root/focus-state.d.ts +4 -0
  241. package/dist/popover/root/focus-state.js +33 -0
  242. package/dist/popover/root/popover-root.svelte +90 -17
  243. package/dist/popover/root/popover-root.svelte.d.ts +2 -1
  244. package/dist/popover/root/popover-test.svelte +2 -1
  245. package/dist/popover/root/popover-test.svelte.d.ts +2 -1
  246. package/dist/popover/trigger/popover-trigger-button.svelte +8 -7
  247. package/dist/popover/trigger/popover-trigger.svelte +14 -5
  248. package/dist/portal/portal.svelte +3 -1
  249. package/dist/primitives/click-outside.d.ts +1 -1
  250. package/dist/primitives/click-outside.js +1 -1
  251. package/dist/primitives/floating.js +12 -4
  252. package/dist/primitives/focus-trap.d.ts +7 -2
  253. package/dist/primitives/focus-trap.js +50 -17
  254. package/dist/primitives/index.d.ts +1 -0
  255. package/dist/primitives/index.js +1 -0
  256. package/dist/primitives/input-modality.d.ts +7 -0
  257. package/dist/primitives/input-modality.js +125 -0
  258. package/dist/primitives/keyboard-navigation.d.ts +1 -0
  259. package/dist/primitives/keyboard-navigation.js +17 -0
  260. package/dist/table/IMPLEMENTATION_NOTES.md +9 -0
  261. package/dist/table/PLAN-HIDDEN-COLUMNS.md +152 -0
  262. package/dist/table/PLAN.md +1336 -0
  263. package/dist/table/README.md +143 -0
  264. package/dist/table/SELECTION_CHECKBOX_PLAN.md +234 -0
  265. package/dist/table/TODO.md +138 -0
  266. package/dist/table/body/README.md +26 -0
  267. package/dist/table/body/table-body.svelte +24 -0
  268. package/dist/table/body/table-body.svelte.d.ts +4 -0
  269. package/dist/table/cell/README.md +27 -0
  270. package/dist/table/cell/table-cell.svelte +265 -0
  271. package/dist/table/cell/table-cell.svelte.d.ts +4 -0
  272. package/dist/table/checkbox/README.md +40 -0
  273. package/dist/table/checkbox/table-checkbox-test.svelte +128 -0
  274. package/dist/table/checkbox/table-checkbox-test.svelte.d.ts +18 -0
  275. package/dist/table/checkbox/table-checkbox.svelte +235 -0
  276. package/dist/table/checkbox/table-checkbox.svelte.d.ts +4 -0
  277. package/dist/table/checkbox-indicator/README.md +31 -0
  278. package/dist/table/checkbox-indicator/table-checkbox-indicator.svelte +15 -0
  279. package/dist/table/checkbox-indicator/table-checkbox-indicator.svelte.d.ts +4 -0
  280. package/dist/table/column/README.md +36 -0
  281. package/dist/table/column/table-column.svelte +79 -0
  282. package/dist/table/column/table-column.svelte.d.ts +4 -0
  283. package/dist/table/column-header-cell/README.md +30 -0
  284. package/dist/table/column-header-cell/table-column-header-cell.svelte +271 -0
  285. package/dist/table/column-header-cell/table-column-header-cell.svelte.d.ts +4 -0
  286. package/dist/table/column-resizer/README.md +33 -0
  287. package/dist/table/column-resizer/table-column-resizer-fixed-width-test.svelte +57 -0
  288. package/dist/table/column-resizer/table-column-resizer-fixed-width-test.svelte.d.ts +3 -0
  289. package/dist/table/column-resizer/table-column-resizer-freeze-layout-test.svelte +52 -0
  290. package/dist/table/column-resizer/table-column-resizer-freeze-layout-test.svelte.d.ts +3 -0
  291. package/dist/table/column-resizer/table-column-resizer-narrow-min-width-test.svelte +76 -0
  292. package/dist/table/column-resizer/table-column-resizer-narrow-min-width-test.svelte.d.ts +3 -0
  293. package/dist/table/column-resizer/table-column-resizer-overflow-test.svelte +64 -0
  294. package/dist/table/column-resizer/table-column-resizer-overflow-test.svelte.d.ts +3 -0
  295. package/dist/table/column-resizer/table-column-resizer-padded-container-test.svelte +67 -0
  296. package/dist/table/column-resizer/table-column-resizer-padded-container-test.svelte.d.ts +3 -0
  297. package/dist/table/column-resizer/table-column-resizer-sandbox-overflow-test.svelte +87 -0
  298. package/dist/table/column-resizer/table-column-resizer-sandbox-overflow-test.svelte.d.ts +3 -0
  299. package/dist/table/column-resizer/table-column-resizer-selection-column-test.svelte +84 -0
  300. package/dist/table/column-resizer/table-column-resizer-selection-column-test.svelte.d.ts +3 -0
  301. package/dist/table/column-resizer/table-column-resizer-test.svelte +77 -0
  302. package/dist/table/column-resizer/table-column-resizer-test.svelte.d.ts +3 -0
  303. package/dist/table/column-resizer/table-column-resizer-three-column-relative-test.svelte +64 -0
  304. package/dist/table/column-resizer/table-column-resizer-three-column-relative-test.svelte.d.ts +3 -0
  305. package/dist/table/column-resizer/table-column-resizer.svelte +610 -0
  306. package/dist/table/column-resizer/table-column-resizer.svelte.d.ts +4 -0
  307. package/dist/table/empty-state/README.md +27 -0
  308. package/dist/table/empty-state/table-empty-state.svelte +33 -0
  309. package/dist/table/empty-state/table-empty-state.svelte.d.ts +4 -0
  310. package/dist/table/footer/README.md +26 -0
  311. package/dist/table/footer/table-footer.svelte +13 -0
  312. package/dist/table/footer/table-footer.svelte.d.ts +4 -0
  313. package/dist/table/header/README.md +26 -0
  314. package/dist/table/header/table-header.svelte +13 -0
  315. package/dist/table/header/table-header.svelte.d.ts +4 -0
  316. package/dist/table/index.d.ts +18 -0
  317. package/dist/table/index.js +17 -0
  318. package/dist/table/index.parts.d.ts +13 -0
  319. package/dist/table/index.parts.js +13 -0
  320. package/dist/table/root/README.md +66 -0
  321. package/dist/table/root/context.d.ts +228 -0
  322. package/dist/table/root/context.js +2111 -0
  323. package/dist/table/root/table-reorder-test.svelte +64 -0
  324. package/dist/table/root/table-reorder-test.svelte.d.ts +3 -0
  325. package/dist/table/root/table-root.svelte +553 -0
  326. package/dist/table/root/table-root.svelte.d.ts +4 -0
  327. package/dist/table/root/table-test.svelte +206 -0
  328. package/dist/table/root/table-test.svelte.d.ts +29 -0
  329. package/dist/table/row/README.md +29 -0
  330. package/dist/table/row/table-row.svelte +244 -0
  331. package/dist/table/row/table-row.svelte.d.ts +4 -0
  332. package/dist/table/sort-trigger/README.md +45 -0
  333. package/dist/table/sort-trigger/table-sort-trigger.svelte +183 -0
  334. package/dist/table/sort-trigger/table-sort-trigger.svelte.d.ts +4 -0
  335. package/dist/table/types.d.ts +95 -0
  336. package/dist/table/types.js +1 -0
  337. package/dist/table/utils/handle-body-keydown.d.ts +13 -0
  338. package/dist/table/utils/handle-body-keydown.js +67 -0
  339. package/dist/table/utils/visually-hidden-style.d.ts +1 -0
  340. package/dist/table/utils/visually-hidden-style.js +1 -0
  341. package/dist/test-utils/focus-contract.d.ts +3 -0
  342. package/dist/test-utils/focus-contract.js +26 -0
  343. package/dist/timepicker/IMPLEMENTATION_PLAN.md +254 -0
  344. package/dist/timepicker/README.md +97 -0
  345. package/dist/timepicker/TODO.md +86 -0
  346. package/dist/timepicker/clock/README.md +14 -0
  347. package/dist/timepicker/clock/time-picker-clock-test.svelte +45 -0
  348. package/dist/timepicker/clock/time-picker-clock-test.svelte.d.ts +11 -0
  349. package/dist/timepicker/clock/time-picker-clock.svelte +65 -0
  350. package/dist/timepicker/clock/time-picker-clock.svelte.d.ts +10 -0
  351. package/dist/timepicker/index.d.ts +14 -0
  352. package/dist/timepicker/index.js +14 -0
  353. package/dist/timepicker/index.parts.d.ts +8 -0
  354. package/dist/timepicker/index.parts.js +8 -0
  355. package/dist/timepicker/input/README.md +15 -0
  356. package/dist/timepicker/input/time-picker-input-forwarding-test.svelte +40 -0
  357. package/dist/timepicker/input/time-picker-input-forwarding-test.svelte.d.ts +3 -0
  358. package/dist/timepicker/input/time-picker-input.svelte +109 -0
  359. package/dist/timepicker/input/time-picker-input.svelte.d.ts +11 -0
  360. package/dist/timepicker/internal/strict-props.d.ts +4 -0
  361. package/dist/timepicker/internal/strict-props.js +51 -0
  362. package/dist/timepicker/popover/README.md +20 -0
  363. package/dist/timepicker/popover/time-picker-popover-unsafe-props-test.svelte +22 -0
  364. package/dist/timepicker/popover/time-picker-popover-unsafe-props-test.svelte.d.ts +3 -0
  365. package/dist/timepicker/popover/time-picker-popover.svelte +89 -0
  366. package/dist/timepicker/popover/time-picker-popover.svelte.d.ts +7 -0
  367. package/dist/timepicker/root/README.md +42 -0
  368. package/dist/timepicker/root/context.d.ts +51 -0
  369. package/dist/timepicker/root/context.js +15 -0
  370. package/dist/timepicker/root/time-picker-12h-test.svelte +22 -0
  371. package/dist/timepicker/root/time-picker-12h-test.svelte.d.ts +3 -0
  372. package/dist/timepicker/root/time-picker-bindable-test.svelte +25 -0
  373. package/dist/timepicker/root/time-picker-bindable-test.svelte.d.ts +3 -0
  374. package/dist/timepicker/root/time-picker-empty-test.svelte +20 -0
  375. package/dist/timepicker/root/time-picker-empty-test.svelte.d.ts +3 -0
  376. package/dist/timepicker/root/time-picker-root.svelte +625 -0
  377. package/dist/timepicker/root/time-picker-root.svelte.d.ts +28 -0
  378. package/dist/timepicker/root/time-picker-test.svelte +72 -0
  379. package/dist/timepicker/root/time-picker-test.svelte.d.ts +15 -0
  380. package/dist/timepicker/root/time-utils.d.ts +1 -0
  381. package/dist/timepicker/root/time-utils.js +3 -0
  382. package/dist/timepicker/segment/README.md +14 -0
  383. package/dist/timepicker/segment/time-picker-segment.svelte +365 -0
  384. package/dist/timepicker/segment/time-picker-segment.svelte.d.ts +9 -0
  385. package/dist/timepicker/trigger/README.md +14 -0
  386. package/dist/timepicker/trigger/time-picker-trigger-forwarding-test.svelte +35 -0
  387. package/dist/timepicker/trigger/time-picker-trigger-forwarding-test.svelte.d.ts +3 -0
  388. package/dist/timepicker/trigger/time-picker-trigger.svelte +122 -0
  389. package/dist/timepicker/trigger/time-picker-trigger.svelte.d.ts +9 -0
  390. package/dist/utils/date-only.d.ts +11 -0
  391. package/dist/utils/date-only.js +53 -0
  392. package/dist/utils/index.d.ts +1 -0
  393. package/dist/utils/index.js +1 -0
  394. package/package.json +31 -1
@@ -0,0 +1,76 @@
1
+ <script lang="ts">
2
+ import { Table } from '../index';
3
+ import type { TableColumnWidth } from '../root/context';
4
+
5
+ let currentColumnWidths = $state<Map<string, TableColumnWidth> | undefined>(undefined);
6
+ </script>
7
+
8
+ <div data-testid="narrow-min-width-container" style="width: 240px; overflow-x: auto;">
9
+ <Table.Root
10
+ aria-label="Narrow min width table"
11
+ bind:columnWidths={currentColumnWidths}
12
+ class="min-w-full border-collapse text-left"
13
+ >
14
+ <Table.Header>
15
+ <Table.Row>
16
+ <Table.Column id="request" isRowHeader textValue="Request" minWidth={75}>
17
+ <Table.ColumnHeaderCell data-testid="narrow-request-header-cell">
18
+ <div class="flex items-center justify-between gap-3">
19
+ <span>Request</span>
20
+ <Table.ColumnResizer
21
+ data-testid="narrow-request-resizer"
22
+ class="inline-flex w-3 cursor-col-resize justify-center"
23
+ />
24
+ </div>
25
+ </Table.ColumnHeaderCell>
26
+ </Table.Column>
27
+ <Table.Column id="requester" textValue="Requester" minWidth={140}>
28
+ <Table.ColumnHeaderCell data-testid="narrow-requester-header-cell">
29
+ <div class="flex items-center justify-between gap-3">
30
+ <span>Requester</span>
31
+ <Table.ColumnResizer class="inline-flex w-3 cursor-col-resize justify-center" />
32
+ </div>
33
+ </Table.ColumnHeaderCell>
34
+ </Table.Column>
35
+ <Table.Column id="area" textValue="Area">
36
+ <Table.ColumnHeaderCell data-testid="narrow-area-header-cell">
37
+ <div class="flex items-center justify-between gap-3">
38
+ <span>Area</span>
39
+ <Table.ColumnResizer class="inline-flex w-3 cursor-col-resize justify-center" />
40
+ </div>
41
+ </Table.ColumnHeaderCell>
42
+ </Table.Column>
43
+ <Table.Column id="status" textValue="Status">
44
+ <Table.ColumnHeaderCell data-testid="narrow-status-header-cell">
45
+ <div class="flex items-center justify-between gap-3">
46
+ <span>Status</span>
47
+ <Table.ColumnResizer class="inline-flex w-3 cursor-col-resize justify-center" />
48
+ </div>
49
+ </Table.ColumnHeaderCell>
50
+ </Table.Column>
51
+ <Table.Column id="total" textValue="Total">
52
+ <Table.ColumnHeaderCell data-testid="narrow-total-header-cell">
53
+ <div class="flex items-center justify-between gap-3">
54
+ <span>Total</span>
55
+ <Table.ColumnResizer class="inline-flex w-3 cursor-col-resize justify-center" />
56
+ </div>
57
+ </Table.ColumnHeaderCell>
58
+ </Table.Column>
59
+ </Table.Row>
60
+ </Table.Header>
61
+
62
+ <Table.Body>
63
+ <Table.Row id="pr-001">
64
+ <Table.Cell>PR-001</Table.Cell>
65
+ <Table.Cell>Ana Gomez</Table.Cell>
66
+ <Table.Cell>Ops</Table.Cell>
67
+ <Table.Cell>Pending</Table.Cell>
68
+ <Table.Cell>$1,520</Table.Cell>
69
+ </Table.Row>
70
+ </Table.Body>
71
+ </Table.Root>
72
+ </div>
73
+
74
+ <output data-testid="narrow-min-width-widths"
75
+ >{JSON.stringify(Object.fromEntries(currentColumnWidths ?? new Map()))}</output
76
+ >
@@ -0,0 +1,3 @@
1
+ declare const TableColumnResizerNarrowMinWidthTest: import("svelte").Component<Record<string, never>, {}, "">;
2
+ type TableColumnResizerNarrowMinWidthTest = ReturnType<typeof TableColumnResizerNarrowMinWidthTest>;
3
+ export default TableColumnResizerNarrowMinWidthTest;
@@ -0,0 +1,64 @@
1
+ <script lang="ts">
2
+ import { Table } from '../index';
3
+ import type { TableColumnWidth } from '../root/context';
4
+
5
+ let currentColumnWidths = $state<Map<string, TableColumnWidth> | undefined>(undefined);
6
+ </script>
7
+
8
+ <div style="width: 640px; overflow-x: auto;">
9
+ <Table.Root
10
+ aria-label="Resizable overflow table"
11
+ bind:columnWidths={currentColumnWidths}
12
+ class="min-w-full border-collapse text-left"
13
+ >
14
+ <Table.Header>
15
+ <Table.Row>
16
+ <Table.Column id="name" isRowHeader textValue="Name" width={240}>
17
+ <Table.ColumnHeaderCell data-testid="overflow-name-header-cell">
18
+ <div class="flex items-center justify-between gap-3">
19
+ <span>Name</span>
20
+ <Table.ColumnResizer
21
+ data-testid="overflow-name-resizer"
22
+ class="inline-flex w-3 cursor-col-resize justify-center"
23
+ />
24
+ </div>
25
+ </Table.ColumnHeaderCell>
26
+ </Table.Column>
27
+ <Table.Column id="region" textValue="Region" defaultWidth={180} minWidth={140}>
28
+ <Table.ColumnHeaderCell data-testid="overflow-region-header-cell">
29
+ <div class="flex items-center justify-between gap-3">
30
+ <span>Region</span>
31
+ <Table.ColumnResizer
32
+ data-testid="overflow-region-resizer"
33
+ class="inline-flex w-3 cursor-col-resize justify-center"
34
+ />
35
+ </div>
36
+ </Table.ColumnHeaderCell>
37
+ </Table.Column>
38
+ <Table.Column id="plan" textValue="Plan">
39
+ <Table.ColumnHeaderCell data-testid="overflow-plan-header-cell">
40
+ <div class="flex items-center justify-between gap-3">
41
+ <span>Plan</span>
42
+ <Table.ColumnResizer
43
+ data-testid="overflow-plan-resizer"
44
+ class="inline-flex w-3 cursor-col-resize justify-center"
45
+ />
46
+ </div>
47
+ </Table.ColumnHeaderCell>
48
+ </Table.Column>
49
+ </Table.Row>
50
+ </Table.Header>
51
+
52
+ <Table.Body>
53
+ <Table.Row id="danilo">
54
+ <Table.Cell>Danilo Fernandez</Table.Cell>
55
+ <Table.Cell>Buenos Aires</Table.Cell>
56
+ <Table.Cell>Enterprise</Table.Cell>
57
+ </Table.Row>
58
+ </Table.Body>
59
+ </Table.Root>
60
+ </div>
61
+
62
+ <output data-testid="overflow-column-widths"
63
+ >{JSON.stringify(Object.fromEntries(currentColumnWidths ?? new Map()))}</output
64
+ >
@@ -0,0 +1,3 @@
1
+ declare const TableColumnResizerOverflowTest: import("svelte").Component<Record<string, never>, {}, "">;
2
+ type TableColumnResizerOverflowTest = ReturnType<typeof TableColumnResizerOverflowTest>;
3
+ export default TableColumnResizerOverflowTest;
@@ -0,0 +1,67 @@
1
+ <script lang="ts">
2
+ import { Table } from '../index';
3
+ import type { TableColumnWidth } from '../root/context';
4
+
5
+ let currentColumnWidths = $state<Map<string, TableColumnWidth> | undefined>(undefined);
6
+ </script>
7
+
8
+ <div
9
+ data-testid="padded-relative-container"
10
+ style="width: 640px; box-sizing: border-box; overflow-x: auto; padding: 12px; border: 1px solid transparent;"
11
+ >
12
+ <Table.Root
13
+ aria-label="Padded relative resize table"
14
+ bind:columnWidths={currentColumnWidths}
15
+ class="min-w-full border-collapse text-left"
16
+ >
17
+ <Table.Header>
18
+ <Table.Row>
19
+ <Table.Column id="name" isRowHeader textValue="Name">
20
+ <Table.ColumnHeaderCell data-testid="padded-name-header-cell">
21
+ <div class="flex items-center justify-between gap-3">
22
+ <span>Name</span>
23
+ <Table.ColumnResizer
24
+ data-testid="padded-name-resizer"
25
+ class="inline-flex w-3 cursor-col-resize justify-center"
26
+ />
27
+ </div>
28
+ </Table.ColumnHeaderCell>
29
+ </Table.Column>
30
+ <Table.Column id="region" textValue="Region" defaultWidth={180} minWidth={140}>
31
+ <Table.ColumnHeaderCell data-testid="padded-region-header-cell">
32
+ <div class="flex items-center justify-between gap-3">
33
+ <span>Region</span>
34
+ <Table.ColumnResizer
35
+ data-testid="padded-region-resizer"
36
+ class="inline-flex w-3 cursor-col-resize justify-center"
37
+ />
38
+ </div>
39
+ </Table.ColumnHeaderCell>
40
+ </Table.Column>
41
+ <Table.Column id="plan" textValue="Plan">
42
+ <Table.ColumnHeaderCell data-testid="padded-plan-header-cell">
43
+ <div class="flex items-center justify-between gap-3">
44
+ <span>Plan</span>
45
+ <Table.ColumnResizer
46
+ data-testid="padded-plan-resizer"
47
+ class="inline-flex w-3 cursor-col-resize justify-center"
48
+ />
49
+ </div>
50
+ </Table.ColumnHeaderCell>
51
+ </Table.Column>
52
+ </Table.Row>
53
+ </Table.Header>
54
+
55
+ <Table.Body>
56
+ <Table.Row id="danilo">
57
+ <Table.Cell>Danilo Fernandez</Table.Cell>
58
+ <Table.Cell>Buenos Aires</Table.Cell>
59
+ <Table.Cell>Enterprise</Table.Cell>
60
+ </Table.Row>
61
+ </Table.Body>
62
+ </Table.Root>
63
+ </div>
64
+
65
+ <output data-testid="padded-relative-widths"
66
+ >{JSON.stringify(Object.fromEntries(currentColumnWidths ?? new Map()))}</output
67
+ >
@@ -0,0 +1,3 @@
1
+ declare const TableColumnResizerPaddedContainerTest: import("svelte").Component<Record<string, never>, {}, "">;
2
+ type TableColumnResizerPaddedContainerTest = ReturnType<typeof TableColumnResizerPaddedContainerTest>;
3
+ export default TableColumnResizerPaddedContainerTest;
@@ -0,0 +1,87 @@
1
+ <script lang="ts">
2
+ import { Table } from '../index';
3
+ import type { TableColumnWidth } from '../root/context';
4
+
5
+ let currentColumnWidths = $state<Map<string, TableColumnWidth> | undefined>(undefined);
6
+ const rows = Array.from({ length: 24 }, (_, index) => ({
7
+ id: `row-${index + 1}`,
8
+ request: `PR-${String(index + 1).padStart(4, '0')}`,
9
+ requester: ['Ana Gomez', 'Lucas Perez', 'Mara Silva', 'Juan Torres'][index % 4],
10
+ area: ['Production', 'Logistics', 'Maintenance', 'Quality'][index % 4],
11
+ status: ['Pending', 'Review', 'Approved'][index % 3],
12
+ priority: ['Low', 'Medium', 'High'][index % 3],
13
+ total: 850 + index * 137
14
+ }));
15
+ </script>
16
+
17
+ <div
18
+ data-testid="sandbox-overflow-container"
19
+ style="width: 920px; max-height: 320px; overflow: auto;"
20
+ >
21
+ <Table.Root
22
+ aria-label="Sandbox overflow table"
23
+ selectionMode="multiple"
24
+ bind:columnWidths={currentColumnWidths}
25
+ class="min-w-full border-collapse text-left"
26
+ >
27
+ <Table.Header>
28
+ <Table.Row>
29
+ <Table.Column id="selection" textValue="Selection" width={44}>
30
+ <Table.ColumnHeaderCell data-testid="sandbox-selection-header-cell">
31
+ <Table.Checkbox />
32
+ </Table.ColumnHeaderCell>
33
+ </Table.Column>
34
+ <Table.Column id="request" textValue="Request" isRowHeader defaultWidth={350}>
35
+ <Table.ColumnHeaderCell data-testid="sandbox-request-header-cell">
36
+ <div class="flex items-center justify-between gap-3">
37
+ <span>Request</span>
38
+ <Table.ColumnResizer
39
+ data-testid="sandbox-request-resizer"
40
+ class="inline-flex w-3 cursor-col-resize justify-center"
41
+ />
42
+ </div>
43
+ </Table.ColumnHeaderCell>
44
+ </Table.Column>
45
+ <Table.Column id="requester" textValue="Requester">
46
+ <Table.ColumnHeaderCell>Requester</Table.ColumnHeaderCell>
47
+ </Table.Column>
48
+ <Table.Column id="area" textValue="Area">
49
+ <Table.ColumnHeaderCell>Area</Table.ColumnHeaderCell>
50
+ </Table.Column>
51
+ <Table.Column id="status" textValue="Status">
52
+ <Table.ColumnHeaderCell>Status</Table.ColumnHeaderCell>
53
+ </Table.Column>
54
+ <Table.Column id="priority" textValue="Priority">
55
+ <Table.ColumnHeaderCell>Priority</Table.ColumnHeaderCell>
56
+ </Table.Column>
57
+ <Table.Column id="total" textValue="Total">
58
+ <Table.ColumnHeaderCell data-testid="sandbox-total-header-cell">
59
+ <div class="flex w-full justify-end">Total</div>
60
+ </Table.ColumnHeaderCell>
61
+ </Table.Column>
62
+ </Table.Row>
63
+ </Table.Header>
64
+
65
+ <Table.Body>
66
+ {#each rows as row (row.id)}
67
+ <Table.Row id={row.id}>
68
+ <Table.Cell>
69
+ <Table.Checkbox />
70
+ </Table.Cell>
71
+ <Table.Cell>{row.request}</Table.Cell>
72
+ <Table.Cell>{row.requester}</Table.Cell>
73
+ <Table.Cell>{row.area}</Table.Cell>
74
+ <Table.Cell>{row.status}</Table.Cell>
75
+ <Table.Cell>{row.priority}</Table.Cell>
76
+ <Table.Cell>
77
+ <div class="flex w-full justify-end">${row.total.toLocaleString()}</div>
78
+ </Table.Cell>
79
+ </Table.Row>
80
+ {/each}
81
+ </Table.Body>
82
+ </Table.Root>
83
+ </div>
84
+
85
+ <output data-testid="sandbox-overflow-widths"
86
+ >{JSON.stringify(Object.fromEntries(currentColumnWidths ?? new Map()))}</output
87
+ >
@@ -0,0 +1,3 @@
1
+ declare const TableColumnResizerSandboxOverflowTest: import("svelte").Component<Record<string, never>, {}, "">;
2
+ type TableColumnResizerSandboxOverflowTest = ReturnType<typeof TableColumnResizerSandboxOverflowTest>;
3
+ export default TableColumnResizerSandboxOverflowTest;
@@ -0,0 +1,84 @@
1
+ <script lang="ts">
2
+ import { Table } from '../index';
3
+ import type { TableColumnWidth } from '../root/context';
4
+
5
+ let currentColumnWidths = $state<Map<string, TableColumnWidth> | undefined>(undefined);
6
+
7
+ const checkboxStyle =
8
+ 'display:inline-flex;height:20px;width:20px;align-items:center;justify-content:center;border:1px solid currentColor;border-radius:4px;';
9
+ const indicatorStyle =
10
+ 'display:inline-flex;height:14px;width:14px;align-items:center;justify-content:center;';
11
+ </script>
12
+
13
+ <div style="width: 760px;">
14
+ <Table.Root
15
+ aria-label="Resizable table with selection column"
16
+ selectionMode="multiple"
17
+ bind:columnWidths={currentColumnWidths}
18
+ class="min-w-full border-collapse text-left"
19
+ >
20
+ <Table.Header>
21
+ <Table.Row>
22
+ <Table.Column id="selection" textValue="Selection" width={64} minWidth={64} maxWidth={64}>
23
+ <Table.ColumnHeaderCell data-testid="selection-header-cell">
24
+ <Table.Checkbox style={checkboxStyle} data-testid="selection-header-checkbox">
25
+ <Table.CheckboxIndicator style={indicatorStyle}>
26
+ <svg aria-hidden="true" viewBox="0 0 16 16" style="height:14px;width:14px;">
27
+ <path
28
+ d="M3.75 8.5 6.75 11.5 12.25 5.5"
29
+ fill="none"
30
+ stroke="currentColor"
31
+ stroke-linecap="round"
32
+ stroke-linejoin="round"
33
+ stroke-width="2"
34
+ />
35
+ </svg>
36
+ </Table.CheckboxIndicator>
37
+ </Table.Checkbox>
38
+ </Table.ColumnHeaderCell>
39
+ </Table.Column>
40
+ <Table.Column id="email" isRowHeader textValue="Email" minWidth={120}>
41
+ <Table.ColumnHeaderCell>
42
+ <div class="flex items-center justify-between gap-3">
43
+ <span>Email</span>
44
+ <Table.ColumnResizer
45
+ data-testid="selection-email-resizer"
46
+ class="inline-flex w-3 cursor-col-resize justify-center"
47
+ />
48
+ </div>
49
+ </Table.ColumnHeaderCell>
50
+ </Table.Column>
51
+ <Table.Column id="group" textValue="Group" minWidth={100} maxWidth={260}>
52
+ <Table.ColumnHeaderCell>Group</Table.ColumnHeaderCell>
53
+ </Table.Column>
54
+ </Table.Row>
55
+ </Table.Header>
56
+
57
+ <Table.Body>
58
+ <Table.Row id="danilo">
59
+ <Table.Cell>
60
+ <Table.Checkbox style={checkboxStyle} data-testid="selection-row-checkbox">
61
+ <Table.CheckboxIndicator style={indicatorStyle}>
62
+ <svg aria-hidden="true" viewBox="0 0 16 16" style="height:14px;width:14px;">
63
+ <path
64
+ d="M3.75 8.5 6.75 11.5 12.25 5.5"
65
+ fill="none"
66
+ stroke="currentColor"
67
+ stroke-linecap="round"
68
+ stroke-linejoin="round"
69
+ stroke-width="2"
70
+ />
71
+ </svg>
72
+ </Table.CheckboxIndicator>
73
+ </Table.Checkbox>
74
+ </Table.Cell>
75
+ <Table.Cell>danilo@example.com</Table.Cell>
76
+ <Table.Cell>Developer</Table.Cell>
77
+ </Table.Row>
78
+ </Table.Body>
79
+ </Table.Root>
80
+ </div>
81
+
82
+ <output data-testid="selection-column-widths"
83
+ >{JSON.stringify(Object.fromEntries(currentColumnWidths ?? new Map()))}</output
84
+ >
@@ -0,0 +1,3 @@
1
+ declare const TableColumnResizerSelectionColumnTest: import("svelte").Component<Record<string, never>, {}, "">;
2
+ type TableColumnResizerSelectionColumnTest = ReturnType<typeof TableColumnResizerSelectionColumnTest>;
3
+ export default TableColumnResizerSelectionColumnTest;
@@ -0,0 +1,77 @@
1
+ <script lang="ts">
2
+ import { Table } from '../index';
3
+ import type { TableColumnWidth, TableSortDescriptor } from '../root/context';
4
+
5
+ let currentColumnWidths = $state<Map<string, TableColumnWidth>>(
6
+ new Map([
7
+ ['email', 200],
8
+ ['group', 160]
9
+ ])
10
+ );
11
+ let currentSortDescriptor = $state<TableSortDescriptor | undefined>(undefined);
12
+ let resizeStartColumnId = $state('');
13
+ let resizeEndWidths = $state<Record<string, TableColumnWidth>>({});
14
+ </script>
15
+
16
+ <Table.Root
17
+ aria-label="Resizable users table"
18
+ bind:columnWidths={currentColumnWidths}
19
+ bind:sortDescriptor={currentSortDescriptor}
20
+ onColumnResizeStart={(columnId) => {
21
+ resizeStartColumnId = columnId;
22
+ }}
23
+ onColumnResizeEnd={(widths) => {
24
+ resizeEndWidths = Object.fromEntries(widths);
25
+ }}
26
+ >
27
+ <Table.Header>
28
+ <Table.Row>
29
+ <Table.Column id="email" isRowHeader textValue="Email" minWidth={120}>
30
+ <Table.ColumnHeaderCell data-testid="email-header-cell">
31
+ <div class="flex items-center justify-between gap-3">
32
+ <span>Email</span>
33
+ <Table.ColumnResizer
34
+ data-testid="email-resizer"
35
+ class="inline-flex w-3 cursor-col-resize justify-center"
36
+ />
37
+ </div>
38
+ </Table.ColumnHeaderCell>
39
+ </Table.Column>
40
+ <Table.Column id="group" textValue="Group" minWidth={100} maxWidth={260}>
41
+ <Table.ColumnHeaderCell data-testid="group-header-cell">
42
+ <div class="flex items-center justify-between gap-3">
43
+ <Table.SortTrigger>
44
+ <button type="button" data-testid="group-sort-trigger">Group</button>
45
+ </Table.SortTrigger>
46
+ <Table.ColumnResizer
47
+ data-testid="group-resizer"
48
+ class="inline-flex w-3 cursor-col-resize justify-center"
49
+ />
50
+ </div>
51
+ </Table.ColumnHeaderCell>
52
+ </Table.Column>
53
+ </Table.Row>
54
+ </Table.Header>
55
+
56
+ <Table.Body>
57
+ <Table.Row id="danilo">
58
+ <Table.Cell>danilo.fernandez+workspace-owner@example.com</Table.Cell>
59
+ <Table.Cell>Developer</Table.Cell>
60
+ </Table.Row>
61
+ <Table.Row id="zahra">
62
+ <Table.Cell>zahra@example.com</Table.Cell>
63
+ <Table.Cell>Admin</Table.Cell>
64
+ </Table.Row>
65
+ </Table.Body>
66
+ </Table.Root>
67
+
68
+ <output data-testid="column-widths"
69
+ >{JSON.stringify(Object.fromEntries(currentColumnWidths))}</output
70
+ >
71
+ <output data-testid="sort-descriptor"
72
+ >{currentSortDescriptor
73
+ ? `${currentSortDescriptor.column}:${currentSortDescriptor.direction}`
74
+ : ''}</output
75
+ >
76
+ <output data-testid="resize-start-column">{resizeStartColumnId}</output>
77
+ <output data-testid="resize-end-widths">{JSON.stringify(resizeEndWidths)}</output>
@@ -0,0 +1,3 @@
1
+ declare const TableColumnResizerTest: import("svelte").Component<Record<string, never>, {}, "">;
2
+ type TableColumnResizerTest = ReturnType<typeof TableColumnResizerTest>;
3
+ export default TableColumnResizerTest;
@@ -0,0 +1,64 @@
1
+ <script lang="ts">
2
+ import { Table } from '../index';
3
+ import type { TableColumnWidth } from '../root/context';
4
+
5
+ let currentColumnWidths = $state<Map<string, TableColumnWidth> | undefined>(undefined);
6
+ </script>
7
+
8
+ <div data-testid="three-column-relative-container" style="width: 640px; overflow-x: auto;">
9
+ <Table.Root
10
+ aria-label="Three column relative resize table"
11
+ bind:columnWidths={currentColumnWidths}
12
+ class="min-w-full border-collapse text-left"
13
+ >
14
+ <Table.Header>
15
+ <Table.Row>
16
+ <Table.Column id="name" isRowHeader textValue="Name">
17
+ <Table.ColumnHeaderCell data-testid="three-column-name-header-cell">
18
+ <div class="flex items-center justify-between gap-3">
19
+ <span>Name</span>
20
+ <Table.ColumnResizer
21
+ data-testid="three-column-name-resizer"
22
+ class="inline-flex w-3 cursor-col-resize justify-center"
23
+ />
24
+ </div>
25
+ </Table.ColumnHeaderCell>
26
+ </Table.Column>
27
+ <Table.Column id="region" textValue="Region" defaultWidth={180} minWidth={140}>
28
+ <Table.ColumnHeaderCell data-testid="three-column-region-header-cell">
29
+ <div class="flex items-center justify-between gap-3">
30
+ <span>Region</span>
31
+ <Table.ColumnResizer
32
+ data-testid="three-column-region-resizer"
33
+ class="inline-flex w-3 cursor-col-resize justify-center"
34
+ />
35
+ </div>
36
+ </Table.ColumnHeaderCell>
37
+ </Table.Column>
38
+ <Table.Column id="plan" textValue="Plan">
39
+ <Table.ColumnHeaderCell data-testid="three-column-plan-header-cell">
40
+ <div class="flex items-center justify-between gap-3">
41
+ <span>Plan</span>
42
+ <Table.ColumnResizer
43
+ data-testid="three-column-plan-resizer"
44
+ class="inline-flex w-3 cursor-col-resize justify-center"
45
+ />
46
+ </div>
47
+ </Table.ColumnHeaderCell>
48
+ </Table.Column>
49
+ </Table.Row>
50
+ </Table.Header>
51
+
52
+ <Table.Body>
53
+ <Table.Row id="danilo">
54
+ <Table.Cell>Danilo Fernandez</Table.Cell>
55
+ <Table.Cell>Buenos Aires</Table.Cell>
56
+ <Table.Cell>Enterprise</Table.Cell>
57
+ </Table.Row>
58
+ </Table.Body>
59
+ </Table.Root>
60
+ </div>
61
+
62
+ <output data-testid="three-column-relative-widths"
63
+ >{JSON.stringify(Object.fromEntries(currentColumnWidths ?? new Map()))}</output
64
+ >
@@ -0,0 +1,3 @@
1
+ declare const TableColumnResizerThreeColumnRelativeTest: import("svelte").Component<Record<string, never>, {}, "">;
2
+ type TableColumnResizerThreeColumnRelativeTest = ReturnType<typeof TableColumnResizerThreeColumnRelativeTest>;
3
+ export default TableColumnResizerThreeColumnRelativeTest;