@justanarthur/modo-ui 0.6.0-canary.8 → 0.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (490) hide show
  1. package/README.md +66 -164
  2. package/dist/base.css +4 -141
  3. package/dist/blocks/sidebar-app/index.js +26 -40
  4. package/dist/components/AI/input-message/index.js +16 -23
  5. package/dist/components/AI/thinking-indicator/index.js +6 -9
  6. package/dist/components/accordion/index.d.ts +11 -39
  7. package/dist/components/accordion/index.js +13 -18
  8. package/dist/components/badge/index.d.ts +11 -18
  9. package/dist/components/badge/index.js +7 -12
  10. package/dist/components/button/index.d.ts +17 -53
  11. package/dist/components/button/index.js +6 -11
  12. package/dist/components/card/index.d.ts +9 -32
  13. package/dist/components/card/index.js +11 -17
  14. package/dist/components/copy/index.d.ts +8 -41
  15. package/dist/components/copy/index.js +9 -15
  16. package/dist/components/inputs/checkbox/index.d.ts +9 -28
  17. package/dist/components/inputs/checkbox/index.js +13 -18
  18. package/dist/components/inputs/color-picker/index.d.ts +14 -22
  19. package/dist/components/inputs/color-picker/index.js +18 -26
  20. package/dist/components/inputs/combobox/index.d.ts +20 -85
  21. package/dist/components/inputs/combobox/index.js +18 -27
  22. package/dist/components/inputs/date-time/calendar/index.d.ts +18 -24
  23. package/dist/components/inputs/date-time/calendar/index.js +11 -15
  24. package/dist/components/inputs/date-time/date-picker/index.d.ts +16 -105
  25. package/dist/components/inputs/date-time/date-picker/index.js +25 -35
  26. package/dist/components/inputs/date-time/date-range-picker/index.d.ts +12 -106
  27. package/dist/components/inputs/date-time/date-range-picker/index.js +24 -35
  28. package/dist/components/inputs/date-time/duration-picker/index.d.ts +13 -66
  29. package/dist/components/inputs/date-time/duration-picker/index.js +24 -33
  30. package/dist/components/inputs/date-time/month-picker/index.d.ts +10 -60
  31. package/dist/components/inputs/date-time/month-picker/index.js +23 -32
  32. package/dist/components/inputs/date-time/time-picker/index.d.ts +10 -58
  33. package/dist/components/inputs/date-time/time-picker/index.js +24 -33
  34. package/dist/components/inputs/input/index.d.ts +13 -95
  35. package/dist/components/inputs/input/index.js +9 -18
  36. package/dist/components/inputs/radio/index.d.ts +5 -20
  37. package/dist/components/inputs/radio/index.js +12 -16
  38. package/dist/components/inputs/search/index.d.ts +3 -3
  39. package/dist/components/inputs/search/index.js +18 -26
  40. package/dist/components/inputs/select/index.d.ts +23 -99
  41. package/dist/components/inputs/select/index.js +14 -29
  42. package/dist/components/inputs/slider/index.d.ts +0 -9
  43. package/dist/components/inputs/slider/index.js +5 -8
  44. package/dist/components/inputs/switch/index.d.ts +2 -8
  45. package/dist/components/inputs/switch/index.js +12 -15
  46. package/dist/components/inputs/textarea/index.d.ts +1 -20
  47. package/dist/components/inputs/textarea/index.js +6 -9
  48. package/dist/components/navigation/sidebar/index.d.ts +21 -44
  49. package/dist/components/navigation/sidebar/index.js +31 -42
  50. package/dist/components/navigation/tabs/index.d.ts +2 -8
  51. package/dist/components/navigation/tabs/index.js +10 -15
  52. package/dist/components/navigation/tabs-subtle/index.js +10 -13
  53. package/dist/components/overlays/alert-dialog/index.d.ts +16 -135
  54. package/dist/components/overlays/alert-dialog/index.js +13 -23
  55. package/dist/components/overlays/command/index.d.ts +20 -25
  56. package/dist/components/overlays/command/index.js +17 -25
  57. package/dist/components/overlays/context-menu/index.d.ts +17 -39
  58. package/dist/components/overlays/context-menu/index.js +18 -29
  59. package/dist/components/overlays/dialog/index.d.ts +16 -42
  60. package/dist/components/overlays/dialog/index.js +12 -20
  61. package/dist/components/overlays/dropdown/index.d.ts +34 -304
  62. package/dist/components/overlays/dropdown/index.js +17 -44
  63. package/dist/components/overlays/popover/index.d.ts +12 -38
  64. package/dist/components/overlays/popover/index.js +9 -13
  65. package/dist/components/overlays/preview-card/index.js +8 -12
  66. package/dist/components/overlays/sheet/index.d.ts +8 -25
  67. package/dist/components/overlays/sheet/index.js +13 -19
  68. package/dist/components/overlays/toast/index.d.ts +50 -209
  69. package/dist/components/overlays/toast/index.js +10 -23
  70. package/dist/components/overlays/tooltip/index.d.ts +21 -123
  71. package/dist/components/overlays/tooltip/index.js +6 -16
  72. package/dist/components/table/index.d.ts +8 -63
  73. package/dist/components/table/index.js +9 -20
  74. package/dist/index.d.ts +1048 -2999
  75. package/dist/index.js +82 -231
  76. package/dist/preset.d.ts +0 -22
  77. package/dist/preset.js +2 -24
  78. package/dist/primitives/code/index.js +5 -8
  79. package/dist/primitives/craft/index.js +6 -10
  80. package/dist/primitives/fluid-hover/index.js +8 -10
  81. package/dist/primitives/morph/index.js +10 -16
  82. package/dist/primitives/motion/index.js +8 -11
  83. package/dist/primitives/scroll-area/index.js +3 -5
  84. package/dist/primitives/sizes/index.js +4 -6
  85. package/dist/primitives/surface/index.js +4 -6
  86. package/dist/shared/{components-4y816hwp.js → components-0q0sqfh4.js} +49 -27
  87. package/dist/shared/components-0sn7ypjw.js +61 -0
  88. package/dist/shared/{components-vc864c51.js → components-11da9ajg.js} +5 -8
  89. package/dist/shared/components-1434p1mh.js +123 -0
  90. package/dist/shared/{components-t2a3qmy9.js → components-1z6tdadk.js} +24 -40
  91. package/dist/shared/{components-qs4rkqsj.js → components-27nnvrwe.js} +14 -15
  92. package/dist/shared/{components-av5t26rc.js → components-2dxkv6zm.js} +7 -8
  93. package/dist/shared/{components-wqrvqq5p.js → components-2ecg8svx.js} +152 -234
  94. package/dist/shared/{components-3ydr2fqe.js → components-2ph6t61s.js} +34 -37
  95. package/dist/shared/{components-6gk118w3.js → components-39jq9va1.js} +24 -29
  96. package/dist/shared/components-3ky44908.js +9 -0
  97. package/dist/shared/{components-y1qvbawa.js → components-3mkepka5.js} +25 -28
  98. package/dist/shared/{components-xqszvkj4.js → components-4700p9kz.js} +22 -24
  99. package/dist/shared/{components-yhgq0qxx.js → components-59efxjd9.js} +12 -13
  100. package/dist/shared/{components-9j9abkct.js → components-5vgpnxgy.js} +27 -51
  101. package/dist/shared/{components-8tt3xbb5.js → components-5xc2j8jz.js} +18 -19
  102. package/dist/shared/{components-jymmaevv.js → components-6p8tfcd6.js} +29 -57
  103. package/dist/shared/{components-4nck8acq.js → components-7r3etddy.js} +54 -19
  104. package/dist/shared/{components-skfd7kff.js → components-8snj490h.js} +32 -78
  105. package/dist/shared/{components-ctqmge8t.js → components-b0eac83j.js} +30 -9
  106. package/dist/shared/{components-9sttq78t.js → components-b2wyq2cq.js} +59 -41
  107. package/dist/shared/{components-vkwq2k96.js → components-b3c5et5b.js} +38 -49
  108. package/dist/shared/{components-rrbpmfx4.js → components-c6s6b43g.js} +2 -3
  109. package/dist/shared/{components-pw06rbxq.js → components-chacnk61.js} +19 -19
  110. package/dist/shared/{components-71nbt03m.js → components-cv16mryv.js} +7 -26
  111. package/dist/shared/{components-eqze3y30.js → components-d6xtjht3.js} +30 -35
  112. package/dist/shared/{components-5y5shqfd.js → components-dk0gjr5a.js} +18 -19
  113. package/dist/shared/{components-khspp26b.js → components-fzrq6tr3.js} +34 -37
  114. package/dist/shared/{components-km7fhgbk.js → components-gc5vtq2f.js} +30 -66
  115. package/dist/shared/components-gf5s6ap9.js +42 -0
  116. package/dist/shared/{components-qqcmtrbv.js → components-gz8zf3ec.js} +55 -56
  117. package/dist/shared/{components-mattt5jp.js → components-h2ajmhwn.js} +35 -107
  118. package/dist/shared/{components-awra5sff.js → components-hqeq3w9q.js} +16 -24
  119. package/dist/shared/{components-5tzhqbcw.js → components-hw9yk32z.js} +24 -36
  120. package/dist/shared/components-hyq23phv.js +310 -0
  121. package/dist/shared/{components-8mt5bsv6.js → components-jbbmdr74.js} +22 -41
  122. package/dist/shared/{components-dcc02hs2.js → components-jjw69c4c.js} +4 -7
  123. package/dist/shared/{components-2syq4mwc.js → components-jthe1pwb.js} +420 -139
  124. package/dist/shared/{components-r7q1zm7r.js → components-jwst3vtj.js} +76 -224
  125. package/dist/shared/{components-qdm3yh26.js → components-kvr7f9hy.js} +10 -19
  126. package/dist/shared/{components-s8yqk2dc.js → components-kwa6mrf9.js} +11 -46
  127. package/dist/shared/{components-de99ykt7.js → components-men63rwj.js} +2 -3
  128. package/dist/shared/{components-6b0zb8z3.js → components-mjthm1kf.js} +9 -13
  129. package/dist/shared/{components-2c64r8c9.js → components-n42c79bz.js} +22 -23
  130. package/dist/shared/{components-tz1fv35x.js → components-n7mjr357.js} +2 -3
  131. package/dist/shared/components-ng72k97e.js +128 -0
  132. package/dist/shared/{components-dyae0y7h.js → components-pbmqctfa.js} +65 -169
  133. package/dist/shared/{components-px2zm7dc.js → components-q5xj5c16.js} +8 -9
  134. package/dist/shared/components-raknhppb.js +64 -0
  135. package/dist/shared/{components-8rb25gbe.js → components-rr7a6ja9.js} +27 -59
  136. package/dist/shared/{components-5012r6gr.js → components-s083f38z.js} +34 -164
  137. package/dist/shared/components-s5ngg32c.js +267 -0
  138. package/dist/shared/components-sn1rxx1d.js +143 -0
  139. package/dist/shared/{components-r8eqs7gz.js → components-ta7shw28.js} +4 -4
  140. package/dist/shared/{components-9as3rf68.js → components-vc7vq5nz.js} +3 -6
  141. package/dist/shared/{components-ft3zdc79.js → components-vfbhxf5r.js} +5 -6
  142. package/dist/shared/components-vynjtrk6.js +19 -0
  143. package/dist/shared/{components-w0xq6q9k.js → components-w1r67ag9.js} +149 -294
  144. package/dist/shared/{components-z0bqtvcp.js → components-w90endve.js} +72 -71
  145. package/dist/shared/{components-t5pk5nmc.js → components-wvp1m52g.js} +102 -149
  146. package/dist/shared/components-wy9jpqny.js +146 -0
  147. package/dist/shared/{components-5sxjeh6h.js → components-y9y0g8er.js} +28 -52
  148. package/dist/shared/components-ypp01w3p.js +986 -0
  149. package/dist/shared/{components-t50hrswb.js → components-zfnmn5d4.js} +36 -82
  150. package/dist/shared/{components-jqpefjsn.js → components-zrkzcayz.js} +6 -54
  151. package/dist/shared/{components-vf45j12c.js → components-zx6b6yby.js} +18 -4
  152. package/dist/styles.css +32 -320
  153. package/dist/tailwind.css +0 -16
  154. package/dist/tokens.css +0 -67
  155. package/package.json +4 -227
  156. package/DESIGN.md +0 -623
  157. package/blocks/sidebar-app/examples.mdx +0 -33
  158. package/blocks/sidebar-app/index.tsx +0 -218
  159. package/blocks/sidebar-app/inset-topbar.tsx +0 -25
  160. package/blocks/sidebar-app/menu-grid.ts +0 -26
  161. package/blocks/sidebar-app/nav-data.ts +0 -36
  162. package/blocks/sidebar-app/search-field.tsx +0 -48
  163. package/blocks/sidebar-app/user-footer.tsx +0 -67
  164. package/blocks/sidebar-app/workspace-header.tsx +0 -129
  165. package/components/AI/input-message/examples.mdx +0 -130
  166. package/components/AI/input-message/file-thumbnail.tsx +0 -173
  167. package/components/AI/input-message/index.tsx +0 -1385
  168. package/components/AI/thinking-indicator/examples.mdx +0 -27
  169. package/components/AI/thinking-indicator/index.tsx +0 -210
  170. package/components/accordion/examples.mdx +0 -233
  171. package/components/accordion/index.tsx +0 -1071
  172. package/components/avatar/examples.mdx +0 -95
  173. package/components/avatar/index.tsx +0 -129
  174. package/components/badge/change-demo.tsx +0 -29
  175. package/components/badge/examples.mdx +0 -124
  176. package/components/badge/index.tsx +0 -225
  177. package/components/badge/variants.ts +0 -73
  178. package/components/button/examples.mdx +0 -168
  179. package/components/button/index.tsx +0 -424
  180. package/components/button/loading-demo.tsx +0 -25
  181. package/components/button/variants.ts +0 -168
  182. package/components/card/examples.mdx +0 -251
  183. package/components/card/index.tsx +0 -1070
  184. package/components/copy/examples.mdx +0 -125
  185. package/components/copy/index.tsx +0 -662
  186. package/components/inputs/checkbox/examples.mdx +0 -87
  187. package/components/inputs/checkbox/index.tsx +0 -611
  188. package/components/inputs/checkbox/select-all-demo.tsx +0 -48
  189. package/components/inputs/color-picker/examples.mdx +0 -111
  190. package/components/inputs/color-picker/index.tsx +0 -1981
  191. package/components/inputs/color-picker/variants.ts +0 -401
  192. package/components/inputs/combobox/examples.mdx +0 -366
  193. package/components/inputs/combobox/index.tsx +0 -1527
  194. package/components/inputs/combobox/remote-demo.tsx +0 -105
  195. package/components/inputs/date-time/calendar/examples.mdx +0 -45
  196. package/components/inputs/date-time/calendar/index.tsx +0 -370
  197. package/components/inputs/date-time/calendar/use-month-window.ts +0 -173
  198. package/components/inputs/date-time/date-picker/examples.mdx +0 -243
  199. package/components/inputs/date-time/date-picker/index.tsx +0 -476
  200. package/components/inputs/date-time/date-picker/masked-date-input.tsx +0 -348
  201. package/components/inputs/date-time/date-range-picker/examples.mdx +0 -93
  202. package/components/inputs/date-time/date-range-picker/index.tsx +0 -525
  203. package/components/inputs/date-time/duration-picker/examples.mdx +0 -40
  204. package/components/inputs/date-time/duration-picker/index.tsx +0 -253
  205. package/components/inputs/date-time/month-picker/examples.mdx +0 -45
  206. package/components/inputs/date-time/month-picker/index.tsx +0 -254
  207. package/components/inputs/date-time/picker-shell.tsx +0 -581
  208. package/components/inputs/date-time/time-columns.tsx +0 -94
  209. package/components/inputs/date-time/time-picker/examples.mdx +0 -57
  210. package/components/inputs/date-time/time-picker/index.tsx +0 -227
  211. package/components/inputs/field/examples.mdx +0 -117
  212. package/components/inputs/field/index.tsx +0 -268
  213. package/components/inputs/file-dropzone/examples.mdx +0 -83
  214. package/components/inputs/file-dropzone/file-row.tsx +0 -201
  215. package/components/inputs/file-dropzone/index.tsx +0 -316
  216. package/components/inputs/file-dropzone/upload-demo.tsx +0 -67
  217. package/components/inputs/file-dropzone/variants.ts +0 -94
  218. package/components/inputs/input/examples.mdx +0 -166
  219. package/components/inputs/input/index.tsx +0 -494
  220. package/components/inputs/input/password-demo.tsx +0 -30
  221. package/components/inputs/label/examples.mdx +0 -67
  222. package/components/inputs/label/index.tsx +0 -85
  223. package/components/inputs/number-input/examples.mdx +0 -69
  224. package/components/inputs/number-input/index.tsx +0 -221
  225. package/components/inputs/radio/examples.mdx +0 -77
  226. package/components/inputs/radio/index.tsx +0 -636
  227. package/components/inputs/search/examples.mdx +0 -74
  228. package/components/inputs/search/index.tsx +0 -333
  229. package/components/inputs/select/examples.mdx +0 -296
  230. package/components/inputs/select/index.tsx +0 -1044
  231. package/components/inputs/select/variants.ts +0 -32
  232. package/components/inputs/slider/examples.mdx +0 -153
  233. package/components/inputs/slider/index.tsx +0 -1867
  234. package/components/inputs/switch/examples.mdx +0 -96
  235. package/components/inputs/switch/index.tsx +0 -504
  236. package/components/inputs/textarea/examples.mdx +0 -126
  237. package/components/inputs/textarea/index.tsx +0 -207
  238. package/components/navigation/navigation-menu/examples.mdx +0 -136
  239. package/components/navigation/navigation-menu/index.tsx +0 -704
  240. package/components/navigation/pagination/examples.mdx +0 -74
  241. package/components/navigation/pagination/index.tsx +0 -401
  242. package/components/navigation/sidebar/examples.mdx +0 -325
  243. package/components/navigation/sidebar/index.tsx +0 -453
  244. package/components/navigation/sidebar/sidebar-core.tsx +0 -1408
  245. package/components/navigation/sidebar/sidebar-menu.tsx +0 -1495
  246. package/components/navigation/sidebar/sidebar.css +0 -74
  247. package/components/navigation/sidebar/variants.ts +0 -55
  248. package/components/navigation/tabs/examples.mdx +0 -89
  249. package/components/navigation/tabs/index.tsx +0 -494
  250. package/components/navigation/tabs-subtle/examples.mdx +0 -49
  251. package/components/navigation/tabs-subtle/index.tsx +0 -512
  252. package/components/overlays/alert-dialog/examples.mdx +0 -123
  253. package/components/overlays/alert-dialog/index.tsx +0 -276
  254. package/components/overlays/alert-dialog/pending-demo.tsx +0 -36
  255. package/components/overlays/command/examples.mdx +0 -113
  256. package/components/overlays/command/index.tsx +0 -425
  257. package/components/overlays/context-menu/examples.mdx +0 -56
  258. package/components/overlays/context-menu/index.tsx +0 -279
  259. package/components/overlays/dialog/examples.mdx +0 -165
  260. package/components/overlays/dialog/index.tsx +0 -451
  261. package/components/overlays/dropdown/dropdown-search.tsx +0 -395
  262. package/components/overlays/dropdown/examples.mdx +0 -444
  263. package/components/overlays/dropdown/index.tsx +0 -1241
  264. package/components/overlays/dropdown/menu-item.tsx +0 -510
  265. package/components/overlays/dropdown/menu-parts.tsx +0 -725
  266. package/components/overlays/popover/anchored-demo.tsx +0 -59
  267. package/components/overlays/popover/examples.mdx +0 -203
  268. package/components/overlays/popover/index.tsx +0 -317
  269. package/components/overlays/preview-card/examples.mdx +0 -61
  270. package/components/overlays/preview-card/index.tsx +0 -204
  271. package/components/overlays/sheet/examples.mdx +0 -101
  272. package/components/overlays/sheet/index.tsx +0 -307
  273. package/components/overlays/toast/examples.mdx +0 -85
  274. package/components/overlays/toast/global-demo.tsx +0 -72
  275. package/components/overlays/toast/index.tsx +0 -544
  276. package/components/overlays/toast/manager.ts +0 -193
  277. package/components/overlays/tooltip/examples.mdx +0 -106
  278. package/components/overlays/tooltip/index.tsx +0 -539
  279. package/components/progress/examples.mdx +0 -59
  280. package/components/progress/index.tsx +0 -174
  281. package/components/progress/progress.css +0 -49
  282. package/components/progress/step-demo.tsx +0 -27
  283. package/components/table/examples.mdx +0 -188
  284. package/components/table/index.tsx +0 -535
  285. package/components/table/sort-demo.tsx +0 -61
  286. package/dist/components/avatar/index.d.ts +0 -46
  287. package/dist/components/avatar/index.js +0 -19
  288. package/dist/components/badge/variants.d.ts +0 -33
  289. package/dist/components/badge/variants.js +0 -10
  290. package/dist/components/button/variants.d.ts +0 -39
  291. package/dist/components/button/variants.js +0 -8
  292. package/dist/components/inputs/color-picker/variants.d.ts +0 -61
  293. package/dist/components/inputs/color-picker/variants.js +0 -28
  294. package/dist/components/inputs/field/index.d.ts +0 -116
  295. package/dist/components/inputs/field/index.js +0 -29
  296. package/dist/components/inputs/file-dropzone/index.d.ts +0 -167
  297. package/dist/components/inputs/file-dropzone/index.js +0 -33
  298. package/dist/components/inputs/file-dropzone/variants.d.ts +0 -35
  299. package/dist/components/inputs/file-dropzone/variants.js +0 -12
  300. package/dist/components/inputs/label/index.d.ts +0 -32
  301. package/dist/components/inputs/label/index.js +0 -11
  302. package/dist/components/inputs/number-input/index.d.ts +0 -87
  303. package/dist/components/inputs/number-input/index.js +0 -21
  304. package/dist/components/inputs/select/variants.d.ts +0 -5
  305. package/dist/components/inputs/select/variants.js +0 -6
  306. package/dist/components/navigation/navigation-menu/index.d.ts +0 -126
  307. package/dist/components/navigation/navigation-menu/index.js +0 -41
  308. package/dist/components/navigation/pagination/index.d.ts +0 -75
  309. package/dist/components/navigation/pagination/index.js +0 -41
  310. package/dist/components/navigation/sidebar/variants.d.ts +0 -25
  311. package/dist/components/navigation/sidebar/variants.js +0 -28
  312. package/dist/components/progress/index.d.ts +0 -56
  313. package/dist/components/progress/index.js +0 -15
  314. package/dist/docs/index.d.ts +0 -83
  315. package/dist/docs/index.js +0 -288
  316. package/dist/docs/vite.d.ts +0 -31
  317. package/dist/docs/vite.js +0 -45
  318. package/dist/lib/date-locale.d.ts +0 -26
  319. package/dist/lib/date-locale.js +0 -24
  320. package/dist/lib/field-classes.d.ts +0 -149
  321. package/dist/lib/field-classes.js +0 -41
  322. package/dist/lib/field-variants.d.ts +0 -47
  323. package/dist/lib/field-variants.js +0 -26
  324. package/dist/lib/fluid-hover-highlight.d.ts +0 -112
  325. package/dist/lib/fluid-hover-highlight.js +0 -17
  326. package/dist/lib/focus-ring.d.ts +0 -18
  327. package/dist/lib/focus-ring.js +0 -11
  328. package/dist/lib/goo-indicator.d.ts +0 -46
  329. package/dist/lib/goo-indicator.js +0 -14
  330. package/dist/lib/icon-context.d.ts +0 -30
  331. package/dist/lib/icon-context.js +0 -12
  332. package/dist/lib/inert.d.ts +0 -9
  333. package/dist/lib/inert.js +0 -8
  334. package/dist/lib/morph-layers.d.ts +0 -93
  335. package/dist/lib/morph-layers.js +0 -13
  336. package/dist/lib/morph-part.d.ts +0 -21
  337. package/dist/lib/morph-part.js +0 -12
  338. package/dist/lib/popup.d.ts +0 -20
  339. package/dist/lib/popup.js +0 -12
  340. package/dist/lib/reduced-motion.d.ts +0 -9
  341. package/dist/lib/reduced-motion.js +0 -6
  342. package/dist/lib/row-index.d.ts +0 -10
  343. package/dist/lib/row-index.js +0 -8
  344. package/dist/lib/row-order.d.ts +0 -28
  345. package/dist/lib/row-order.js +0 -10
  346. package/dist/lib/scroll-column.d.ts +0 -31
  347. package/dist/lib/scroll-column.js +0 -19
  348. package/dist/lib/shape-context.d.ts +0 -30
  349. package/dist/lib/shape-context.js +0 -13
  350. package/dist/lib/shape-radius.d.ts +0 -19
  351. package/dist/lib/shape-radius.js +0 -6
  352. package/dist/lib/size-context.d.ts +0 -94
  353. package/dist/lib/size-context.js +0 -20
  354. package/dist/lib/size-scale.d.ts +0 -79
  355. package/dist/lib/size-scale.js +0 -8
  356. package/dist/lib/slot.d.ts +0 -39
  357. package/dist/lib/slot.js +0 -14
  358. package/dist/lib/springs.d.ts +0 -44
  359. package/dist/lib/springs.js +0 -8
  360. package/dist/lib/surface-classes.d.ts +0 -19
  361. package/dist/lib/surface-classes.js +0 -10
  362. package/dist/lib/surface-context.d.ts +0 -9
  363. package/dist/lib/surface-context.js +0 -8
  364. package/dist/lib/use-controllable-state.d.ts +0 -2
  365. package/dist/lib/use-controllable-state.js +0 -6
  366. package/dist/lib/use-fluid-hover.d.ts +0 -138
  367. package/dist/lib/use-fluid-hover.js +0 -14
  368. package/dist/lib/use-is-mobile.d.ts +0 -2
  369. package/dist/lib/use-is-mobile.js +0 -6
  370. package/dist/lib/use-keyboard-nav-gate.d.ts +0 -20
  371. package/dist/lib/use-keyboard-nav-gate.js +0 -7
  372. package/dist/lib/use-merge-split.d.ts +0 -47
  373. package/dist/lib/use-merge-split.js +0 -15
  374. package/dist/lib/use-morph.d.ts +0 -101
  375. package/dist/lib/use-morph.js +0 -20
  376. package/dist/lib/use-touch-primary.d.ts +0 -2
  377. package/dist/lib/use-touch-primary.js +0 -6
  378. package/dist/lib/utils.d.ts +0 -3
  379. package/dist/lib/utils.js +0 -6
  380. package/dist/primitives/separator/index.d.ts +0 -25
  381. package/dist/primitives/separator/index.js +0 -9
  382. package/dist/primitives/skeleton/index.d.ts +0 -35
  383. package/dist/primitives/skeleton/index.js +0 -13
  384. package/dist/shared/components-124epb7f.js +0 -53
  385. package/dist/shared/components-1kab3j44.js +0 -337
  386. package/dist/shared/components-26snnbs9.js +0 -322
  387. package/dist/shared/components-34txk9rj.js +0 -35
  388. package/dist/shared/components-3h92d94m.js +0 -23
  389. package/dist/shared/components-4vfm04wq.js +0 -82
  390. package/dist/shared/components-54nq988h.js +0 -123
  391. package/dist/shared/components-7s7pykk5.js +0 -281
  392. package/dist/shared/components-7zkhz3r8.js +0 -399
  393. package/dist/shared/components-8v644a0s.js +0 -298
  394. package/dist/shared/components-a4evvq8h.js +0 -271
  395. package/dist/shared/components-adkarj8n.js +0 -35
  396. package/dist/shared/components-b1e239g3.js +0 -28
  397. package/dist/shared/components-b94t6qtj.js +0 -143
  398. package/dist/shared/components-c9yr4ed1.js +0 -44
  399. package/dist/shared/components-cwg1d0w6.js +0 -254
  400. package/dist/shared/components-d3shbwqq.js +0 -95
  401. package/dist/shared/components-dhgk6mbt.js +0 -16
  402. package/dist/shared/components-drxrtnp2.js +0 -25
  403. package/dist/shared/components-ej4r7wmj.js +0 -482
  404. package/dist/shared/components-f7h57m6t.js +0 -59
  405. package/dist/shared/components-fejdzvqc.js +0 -448
  406. package/dist/shared/components-gx4h5rbb.js +0 -40
  407. package/dist/shared/components-gyt7my41.js +0 -328
  408. package/dist/shared/components-h6p86be3.js +0 -19
  409. package/dist/shared/components-h83az0bz.js +0 -33
  410. package/dist/shared/components-hdzrqqpx.js +0 -55
  411. package/dist/shared/components-krtx3m5b.js +0 -84
  412. package/dist/shared/components-kswxnm3h.js +0 -24
  413. package/dist/shared/components-mpa2y6x8.js +0 -277
  414. package/dist/shared/components-mrbaxt8q.js +0 -62
  415. package/dist/shared/components-pt5ftm4p.js +0 -38
  416. package/dist/shared/components-rpw4md2b.js +0 -179
  417. package/dist/shared/components-rtadhd9j.js +0 -64
  418. package/dist/shared/components-tz4gaf1v.js +0 -23
  419. package/dist/shared/components-wbbckbw8.js +0 -34
  420. package/dist/shared/components-xdqmt6ed.js +0 -20
  421. package/dist/shared/components-xjkdvnbg.js +0 -107
  422. package/dist/shared/components-z3v0n0de.js +0 -11
  423. package/dist/shared/components-z6dfqtyt.js +0 -1545
  424. package/dist/tokens/colors.css +0 -230
  425. package/dist/tokens/motion.css +0 -40
  426. package/dist/tokens/radius.css +0 -10
  427. package/dist/tokens/spacing.css +0 -9
  428. package/dist/tokens/typography.css +0 -119
  429. package/docs/chrome.css +0 -120
  430. package/docs/chrome.tsx +0 -283
  431. package/docs/index.ts +0 -9
  432. package/docs/vite.ts +0 -85
  433. package/index.ts +0 -60
  434. package/lib/date-locale.ts +0 -195
  435. package/lib/field-classes.ts +0 -121
  436. package/lib/field-variants.ts +0 -117
  437. package/lib/fluid-hover-highlight.tsx +0 -139
  438. package/lib/focus-ring.tsx +0 -46
  439. package/lib/goo-indicator.tsx +0 -261
  440. package/lib/icon-context.tsx +0 -310
  441. package/lib/inert.ts +0 -22
  442. package/lib/morph-layers.tsx +0 -102
  443. package/lib/morph-part.tsx +0 -49
  444. package/lib/popup.ts +0 -52
  445. package/lib/reduced-motion.ts +0 -19
  446. package/lib/row-index.tsx +0 -29
  447. package/lib/row-order.tsx +0 -126
  448. package/lib/scroll-column.tsx +0 -273
  449. package/lib/shape-context.tsx +0 -138
  450. package/lib/shape-radius.ts +0 -67
  451. package/lib/size-context.tsx +0 -66
  452. package/lib/size-scale.ts +0 -115
  453. package/lib/slot.ts +0 -115
  454. package/lib/springs.ts +0 -62
  455. package/lib/surface-classes.ts +0 -58
  456. package/lib/surface-context.tsx +0 -21
  457. package/lib/use-controllable-state.ts +0 -44
  458. package/lib/use-fluid-hover.ts +0 -541
  459. package/lib/use-is-mobile.ts +0 -25
  460. package/lib/use-keyboard-nav-gate.ts +0 -45
  461. package/lib/use-merge-split.tsx +0 -209
  462. package/lib/use-morph.ts +0 -557
  463. package/lib/use-touch-primary.tsx +0 -43
  464. package/lib/utils.ts +0 -37
  465. package/preset.ts +0 -199
  466. package/primitives/code/examples.mdx +0 -27
  467. package/primitives/code/index.tsx +0 -80
  468. package/primitives/craft/demos.tsx +0 -173
  469. package/primitives/craft/examples.mdx +0 -142
  470. package/primitives/craft/index.tsx +0 -76
  471. package/primitives/fluid-hover/examples.mdx +0 -84
  472. package/primitives/fluid-hover/index.tsx +0 -316
  473. package/primitives/morph/examples.mdx +0 -139
  474. package/primitives/morph/index.tsx +0 -192
  475. package/primitives/motion/examples.mdx +0 -100
  476. package/primitives/motion/index.tsx +0 -160
  477. package/primitives/scroll-area/examples.mdx +0 -58
  478. package/primitives/scroll-area/index.tsx +0 -204
  479. package/primitives/separator/examples.mdx +0 -30
  480. package/primitives/separator/index.tsx +0 -53
  481. package/primitives/sizes/examples.mdx +0 -167
  482. package/primitives/sizes/index.tsx +0 -89
  483. package/primitives/skeleton/examples.mdx +0 -51
  484. package/primitives/skeleton/index.tsx +0 -72
  485. package/primitives/skeleton/skeleton.css +0 -15
  486. package/primitives/surface/examples.mdx +0 -173
  487. package/primitives/surface/index.tsx +0 -109
  488. package/primitives/surface/surface.css +0 -176
  489. /package/dist/shared/{components-3ey0hzpb.js → components-1v7rxytx.js} +0 -0
  490. /package/dist/shared/{components-jcnjay5g.js → components-ezxhrmer.js} +0 -0
@@ -1,174 +0,0 @@
1
- /*
2
- * Local addition (not part of Fluid Functionalism): progress on Base UI's
3
- * Progress (the `progressbar` role and its values). The determinate fill is a
4
- * full-width bar slid in with `translateX` on `spring.moderate`, after
5
- * upstream FF's CarouselDots fill (never scaled, so its rounded end keeps its
6
- * shape); the indeterminate bar sweeps a segment across the track and the
7
- * spinner draws Button's figure-eight loading glyph, both on `--duration-loop`
8
- * (`progress.css`).
9
- */
10
-
11
- import { Progress as ProgressPrimitive } from '@base-ui/react/progress'
12
- import { motion } from 'motion/react'
13
- import {
14
- type ComponentPropsWithoutRef,
15
- type ForwardRefExoticComponent,
16
- forwardRef,
17
- type ReactNode,
18
- type Ref,
19
- type RefAttributes,
20
- } from 'react'
21
- import { useReduceMotion } from '../../lib/reduced-motion'
22
- import { type SizeVariant, useSize } from '../../lib/size-context'
23
- import { spring } from '../../lib/springs'
24
- import { cn } from '../../lib/utils'
25
-
26
- // Literal tables: UnoCSS only generates the classes it can read whole.
27
- const SPINNER_BOX = { default: 'size-9', compact: 'size-7' }
28
- const CAPTION = { default: 'text-caption', compact: 'text-caption-compact' }
29
-
30
- interface SpinnerProps extends Omit<ComponentPropsWithoutRef<'span'>, 'children'> {
31
- /** Pins the spinner to one step of the size ladder: one control tall (36px default, 28px compact), like a loading Button's. Defaults to the surrounding SizeProvider. */
32
- size?: SizeVariant
33
- /** What is loading, read to assistive tech. Defaults to `"Loading"`. */
34
- label?: string
35
- /** Classes for the box: a size off the ladder (`size-5` inline in text), a color. */
36
- className?: string
37
- }
38
-
39
- /** An indeterminate wait in a small space: Button's loading glyph on its own. */
40
- const Spinner = forwardRef<HTMLSpanElement, SpinnerProps>(
41
- ({ size: sizeProp, label = 'Loading', className, ...props }, ref) => {
42
- const size = useSize(sizeProp)
43
- const reduced = useReduceMotion()
44
- return (
45
- <ProgressPrimitive.Root
46
- // The root renders a span (render below); Base UI types its ref as a div's.
47
- ref={ref as unknown as Ref<HTMLDivElement>}
48
- value={null}
49
- aria-label={label}
50
- render={<span />}
51
- {...props}
52
- className={cn('inline-flex shrink-0 text-current', SPINNER_BOX[size.variant], className)}
53
- >
54
- <svg className="size-full" viewBox="0 0 24 24" fill="none" aria-hidden>
55
- <path
56
- d="M 12 12 C 14 8.5 19 8.5 19 12 C 19 15.5 14 15.5 12 12 C 10 8.5 5 8.5 5 12 C 5 15.5 10 15.5 12 12 Z"
57
- stroke="currentColor"
58
- strokeWidth="1.125"
59
- strokeLinecap="round"
60
- pathLength="100"
61
- className={reduced ? 'progress-breathe' : 'progress-spin'}
62
- />
63
- </svg>
64
- </ProgressPrimitive.Root>
65
- )
66
- },
67
- )
68
-
69
- Spinner.displayName = 'Spinner'
70
-
71
- interface ProgressProps extends Omit<ComponentPropsWithoutRef<'div'>, 'children'> {
72
- /** How far along the task is, between `min` and `max`. `null` is an indeterminate bar: a segment sweeping the track while the amount is unknown. Defaults to `null`. */
73
- value?: number | null
74
- /** The value of an empty bar. Defaults to `0`. */
75
- min?: number
76
- /** The value of a full bar. Defaults to `100`. */
77
- max?: number
78
- /** A label above the bar, also its accessible name. Without one, give the bar an `aria-label`. */
79
- label?: ReactNode
80
- /** Shows the value, formatted as a percentage, at the end of the label row. Defaults to `false`. */
81
- showValue?: boolean
82
- /** Number format for the shown value and for assistive tech, as `Intl.NumberFormat` options. Defaults to a percentage. */
83
- format?: Intl.NumberFormatOptions
84
- /** Pins the label row to one step of the size ladder. Defaults to the surrounding SizeProvider. */
85
- size?: SizeVariant
86
- /** Classes for the root: a width, or `absolute inset-x-0 top-0` for a loading line along a region's top edge. */
87
- className?: string
88
- }
89
-
90
- type ProgressComponent = ForwardRefExoticComponent<ProgressProps & RefAttributes<HTMLDivElement>> & {
91
- Spinner: typeof Spinner
92
- }
93
-
94
- /**
95
- * Shows how far along a task is, or that something is still working when
96
- * nobody knows how far.
97
- *
98
- * A determinate bar (`value`) slides its fill to the new amount on the
99
- * indicator spring, never stretching it, so the rounded end keeps its shape;
100
- * an indeterminate one (`value={null}`) sweeps an ink segment along a recessed
101
- * track. The fill is ink, not the brand blue: progress is information, not a
102
- * selection. Base UI's Progress gives the bar its `progressbar` role, its
103
- * values and their text for assistive tech; `label` names it and `showValue`
104
- * prints the formatted value beside the label. Under reduced motion the fill
105
- * jumps to its amount and the indeterminate bar breathes in place instead of
106
- * travelling.
107
- *
108
- * Statics:
109
- * - `Progress.Spinner` — the same wait in a small space: Button's loading
110
- * glyph on its own, one control tall (`size`), `label` for assistive tech.
111
- * Also exported as `Spinner`.
112
- *
113
- * @example {@include ./examples.mdx}
114
- */
115
- const Progress = forwardRef<HTMLDivElement, ProgressProps>(
116
- (
117
- { value = null, min = 0, max = 100, label, showValue = false, format, size: sizeProp, className, ...props },
118
- ref,
119
- ) => {
120
- const size = useSize(sizeProp)
121
- const reduced = useReduceMotion()
122
- const share = value === null ? null : Math.min(Math.max((value - min) / (max - min), 0), 1)
123
- const { exit: _exit, ...enter } = spring.moderate
124
-
125
- return (
126
- <ProgressPrimitive.Root
127
- ref={ref}
128
- value={value}
129
- min={min}
130
- max={max}
131
- format={format}
132
- {...props}
133
- className={cn('flex w-full flex-col gap-2', className)}
134
- >
135
- {(label || showValue) && (
136
- <div className={cn('flex items-baseline justify-between gap-3', CAPTION[size.variant])}>
137
- {label && (
138
- <ProgressPrimitive.Label className="min-w-0 truncate text-foreground">{label}</ProgressPrimitive.Label>
139
- )}
140
- {showValue && value !== null && (
141
- <ProgressPrimitive.Value className="ml-auto shrink-0 tabular-nums text-muted-foreground" />
142
- )}
143
- </div>
144
- )}
145
- <ProgressPrimitive.Track className="relative h-1 w-full overflow-hidden rounded-full bg-progress-track">
146
- {share === null ? (
147
- <span
148
- className={cn(
149
- 'absolute inset-y-0 left-0 rounded-full bg-foreground',
150
- reduced ? 'w-full progress-breathe' : 'w-2/5 progress-sweep',
151
- )}
152
- />
153
- ) : (
154
- <motion.span
155
- className="absolute inset-0 rounded-full bg-foreground"
156
- initial={false}
157
- animate={{ x: `${(share - 1) * 100}%` }}
158
- transition={reduced ? { duration: 0 } : enter}
159
- />
160
- )}
161
- </ProgressPrimitive.Track>
162
- </ProgressPrimitive.Root>
163
- )
164
- },
165
- ) as ProgressComponent
166
-
167
- Progress.displayName = 'Progress'
168
-
169
- Object.assign(Progress, { Spinner })
170
-
171
- export type { ProgressProps, SpinnerProps }
172
- export { Progress, Spinner }
173
-
174
- export default Progress
@@ -1,49 +0,0 @@
1
- /*
2
- * Local addition (not part of Fluid Functionalism): Progress's loops. The
3
- * indeterminate bar sweeps a segment across the track (transform only); the
4
- * spinner reuses Button's figure-eight keyframes from base.css. Both run on
5
- * `--duration-loop`. Under reduced motion (Progress swaps the classes through
6
- * useReduceMotion; the media query covers the first paint) nothing travels:
7
- * the fill breathes in opacity instead.
8
- */
9
-
10
- @keyframes progress-sweep {
11
- from {
12
- transform: translateX(-100%);
13
- }
14
- to {
15
- transform: translateX(250%);
16
- }
17
- }
18
-
19
- @keyframes progress-breathe {
20
- 50% {
21
- opacity: 0.4;
22
- }
23
- }
24
-
25
- .progress-sweep {
26
- animation: progress-sweep var(--duration-loop) ease-in-out infinite;
27
- }
28
-
29
- .progress-spin {
30
- stroke-dasharray: 15 85;
31
- animation:
32
- spinner-move var(--duration-loop) linear infinite,
33
- spinner-dash calc(var(--duration-loop) * 2) ease-in-out infinite;
34
- }
35
-
36
- .progress-breathe {
37
- animation: progress-breathe var(--duration-loop) ease-in-out infinite;
38
- }
39
-
40
- @media (prefers-reduced-motion: reduce) {
41
- .progress-sweep {
42
- width: 100%;
43
- animation: progress-breathe var(--duration-loop) ease-in-out infinite;
44
- }
45
- .progress-spin {
46
- stroke-dasharray: none;
47
- animation: progress-breathe var(--duration-loop) ease-in-out infinite;
48
- }
49
- }
@@ -1,27 +0,0 @@
1
- /*
2
- * Local addition (not part of Fluid Functionalism): the docs stage of the
3
- * Progress page's fill. A Progress whose value steps through a list each time
4
- * its button is pressed, so the example stays hook-free.
5
- */
6
-
7
- import { useState } from 'react'
8
- import Button from '../button'
9
- import Progress, { type ProgressProps } from './index'
10
-
11
- interface StepDemoProps extends Omit<ProgressProps, 'value'> {
12
- /** The values, one per press; after the last it starts over. */
13
- values: number[]
14
- }
15
-
16
- export default function StepDemo({ values, ...props }: StepDemoProps) {
17
- const [at, setAt] = useState(0)
18
-
19
- return (
20
- <div className="flex w-80 items-end gap-3">
21
- <Progress {...props} value={values[at]} />
22
- <Button variant="tertiary" size="compact" onClick={() => setAt((at + 1) % values.length)}>
23
- Step
24
- </Button>
25
- </div>
26
- )
27
- }
@@ -1,188 +0,0 @@
1
- import Table from './index'
2
- import SortDemo from './sort-demo'
3
-
4
- # Basics
5
-
6
- ## Basic
7
-
8
- Body rows join the fluid hover highlight in document order, so they need no
9
- `index`; the header row stays out.
10
-
11
- <div className="w-full">
12
- <Table>
13
- <Table.Header>
14
- <Table.Row>
15
- <Table.Head>Name</Table.Head>
16
- <Table.Head>Role</Table.Head>
17
- <Table.Head>Status</Table.Head>
18
- </Table.Row>
19
- </Table.Header>
20
- <Table.Body>
21
- <Table.Row>
22
- <Table.Cell>Alice</Table.Cell>
23
- <Table.Cell>Engineer</Table.Cell>
24
- <Table.Cell>Active</Table.Cell>
25
- </Table.Row>
26
- <Table.Row>
27
- <Table.Cell>Bob</Table.Cell>
28
- <Table.Cell>Designer</Table.Cell>
29
- <Table.Cell>Away</Table.Cell>
30
- </Table.Row>
31
- <Table.Row>
32
- <Table.Cell>Carol</Table.Cell>
33
- <Table.Cell>Manager</Table.Cell>
34
- <Table.Cell>Active</Table.Cell>
35
- </Table.Row>
36
- </Table.Body>
37
- </Table>
38
- </div>
39
-
40
- ## Compact
41
-
42
- `size="compact"` lands every row on the 28px step with 12px text, for
43
- dense data.
44
-
45
- <div className="w-full">
46
- <Table size="compact">
47
- <Table.Header>
48
- <Table.Row>
49
- <Table.Head>Name</Table.Head>
50
- <Table.Head>Role</Table.Head>
51
- <Table.Head>Status</Table.Head>
52
- </Table.Row>
53
- </Table.Header>
54
- <Table.Body>
55
- {[['Alice', 'Engineer', 'Active'], ['Bob', 'Designer', 'Away'], ['Carol', 'Manager', 'Active'], ['Dan', 'Researcher', 'Offline']].map((row, i) => (
56
- <Table.Row key={row[0]} index={i}>
57
- {row.map((cell) => (
58
- <Table.Cell key={cell}>{cell}</Table.Cell>
59
- ))}
60
- </Table.Row>
61
- ))}
62
- </Table.Body>
63
- </Table>
64
- </div>
65
-
66
- ## Footer and caption
67
-
68
- `Table.Footer` holds totals: its rows render semibold, stay out of the hover and keep their bottom border while the first body row is lit. `Table.Caption` adds a muted line below.
69
-
70
- <div className="w-full">
71
- <Table>
72
- <Table.Caption>Invoices issued in March.</Table.Caption>
73
- <Table.Header>
74
- <Table.Row>
75
- <Table.Head>Invoice</Table.Head>
76
- <Table.Head>Customer</Table.Head>
77
- <Table.Head className="text-right">Amount</Table.Head>
78
- </Table.Row>
79
- </Table.Header>
80
- <Table.Body>
81
- <Table.Row index={0}>
82
- <Table.Cell>INV-001</Table.Cell>
83
- <Table.Cell>Northwind</Table.Cell>
84
- <Table.Cell className="text-right tabular-nums">€250.00</Table.Cell>
85
- </Table.Row>
86
- <Table.Row index={1}>
87
- <Table.Cell>INV-002</Table.Cell>
88
- <Table.Cell>Contoso</Table.Cell>
89
- <Table.Cell className="text-right tabular-nums">€150.00</Table.Cell>
90
- </Table.Row>
91
- <Table.Row index={2}>
92
- <Table.Cell>INV-003</Table.Cell>
93
- <Table.Cell>Fabrikam</Table.Cell>
94
- <Table.Cell className="text-right tabular-nums">€350.00</Table.Cell>
95
- </Table.Row>
96
- </Table.Body>
97
- <Table.Footer>
98
- <Table.Row>
99
- <Table.Cell colSpan={2}>Total</Table.Cell>
100
- <Table.Cell className="text-right tabular-nums">€750.00</Table.Cell>
101
- </Table.Row>
102
- </Table.Footer>
103
- </Table>
104
- </div>
105
-
106
- ## Empty
107
-
108
- `Table.Empty` spans every column with a message, or a loading indicator while rows arrive.
109
-
110
- <div className="w-full">
111
- <Table>
112
- <Table.Header>
113
- <Table.Row>
114
- <Table.Head>Name</Table.Head>
115
- <Table.Head>Role</Table.Head>
116
- <Table.Head>Status</Table.Head>
117
- </Table.Row>
118
- </Table.Header>
119
- <Table.Body>
120
- <Table.Empty colSpan={3}>No people yet.</Table.Empty>
121
- </Table.Body>
122
- </Table>
123
- </div>
124
-
125
- ## Stacked on small screens
126
-
127
- `stacked` turns every row into a two-column card below the `md` breakpoint: the header hides and each cell is led by its muted `label` and its value reads in the primary text colour. Narrow the window to see it; `stacked={false}` on a header or row keeps it tabular.
128
-
129
- <div className="w-full">
130
- <Table stacked>
131
- <Table.Header>
132
- <Table.Row>
133
- <Table.Head>Name</Table.Head>
134
- <Table.Head>Role</Table.Head>
135
- <Table.Head>Team</Table.Head>
136
- <Table.Head>Status</Table.Head>
137
- </Table.Row>
138
- </Table.Header>
139
- <Table.Body>
140
- {[['Alice', 'Engineer', 'Platform', 'Active'], ['Bob', 'Designer', 'Brand', 'Away'], ['Carol', 'Manager', 'Platform', 'Active']].map(row => (
141
- <Table.Row key={row[0]}>
142
- <Table.Cell label="Name">{row[0]}</Table.Cell>
143
- <Table.Cell label="Role">{row[1]}</Table.Cell>
144
- <Table.Cell label="Team">{row[2]}</Table.Cell>
145
- <Table.Cell label="Status">{row[3]}</Table.Cell>
146
- </Table.Row>
147
- ))}
148
- </Table.Body>
149
- </Table>
150
- </div>
151
-
152
- # Sorting
153
-
154
- ## Sortable
155
-
156
- A head with `sortDirection` and `onSort` becomes a sort button: a press cycles ascending, descending and unsorted, and its arrow crossfades into the new direction. Here a small stage sorts the rows.
157
-
158
- <div className="w-full">
159
- <SortDemo />
160
- </div>
161
-
162
- ## Sort without state
163
-
164
- `defaultSortDirection` lets a head keep its own direction, for a table that sorts elsewhere (a server, TanStack) and only listens to `onSort`.
165
-
166
- <div className="w-full">
167
- <Table>
168
- <Table.Header>
169
- <Table.Row>
170
- <Table.Head defaultSortDirection="desc">Invoice</Table.Head>
171
- <Table.Head defaultSortDirection={false}>Customer</Table.Head>
172
- <Table.Head>Status</Table.Head>
173
- </Table.Row>
174
- </Table.Header>
175
- <Table.Body>
176
- <Table.Row index={0}>
177
- <Table.Cell>INV-003</Table.Cell>
178
- <Table.Cell>Northwind</Table.Cell>
179
- <Table.Cell>Paid</Table.Cell>
180
- </Table.Row>
181
- <Table.Row index={1}>
182
- <Table.Cell>INV-002</Table.Cell>
183
- <Table.Cell>Contoso</Table.Cell>
184
- <Table.Cell>Pending</Table.Cell>
185
- </Table.Row>
186
- </Table.Body>
187
- </Table>
188
- </div>