@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,27 +0,0 @@
1
- import ThinkingIndicator from './index'
2
-
3
- # Basic
4
-
5
- <ThinkingIndicator />
6
-
7
- # Text only
8
-
9
- Drop the glyph for an inline indicator, e.g. before a streamed reply.
10
-
11
- <ThinkingIndicator showIcon={false} />
12
-
13
- # Compact
14
-
15
- The compact step of the size ladder, for dense transcripts.
16
-
17
- <ThinkingIndicator size="compact" />
18
-
19
- # Goo
20
-
21
- Three dots melt into one blob and split again through the goo filter (see Morph), beside a plain label.
22
-
23
- <ThinkingIndicator variant="goo" />
24
-
25
- # Goo, compact
26
-
27
- <ThinkingIndicator variant="goo" size="compact" />
@@ -1,210 +0,0 @@
1
- /*
2
- * Ported from Fluid Functionalism — github.com/mickadesign/fluid-functionalism
3
- * `registry/default/thinking-indicator.tsx` @ b3587bdbd83fc66c2a6aae3817ffb856cb09260b
4
- * MIT License © 2026 Micka Touillaud — fluidfunctionalism.com (notice: LICENSE.fluid-functionalism)
5
- * Local modifications:
6
- * - `"use client"` dropped; `framer-motion` → `motion/react`; `@/lib/*` →
7
- * `../../../lib/*`.
8
- * - Prop JSDoc kept from upstream (it matches the FF docs API table);
9
- * modo TSDoc and examples on `ThinkingIndicator`. The `.shimmer-text` rule
10
- * the label rides lives in base.css.
11
- * - Styling reads DS tokens (AGENTS.md styling): `text-[Npx]` →
12
- * `text-<role>[-compact]`; inline `fontVariationSettings` → `weight-*`;
13
- * `duration-80|120|160` and tier-length JS durations → `duration-<tier>` /
14
- * `spring.*`.
15
- * - A `variant="goo"` look (local, the morph style's goo): three
16
- * `muted-foreground` dots that melt into one blob (swelling to hold their
17
- * area) and split again through the shared `GooFilter`, one loop every
18
- * eight slow-tier lengths, beside a plain cycling label. Reduced motion
19
- * (`useReduceMotion`: the OS setting or MotionConfig's, which now also
20
- * counts for the shimmer look) holds them split and still. The default stays upstream's
21
- * `shimmer` look.
22
- */
23
-
24
- import { AnimatePresence, motion } from 'motion/react'
25
- import { forwardRef, type HTMLAttributes, useEffect, useId, useState } from 'react'
26
- import { GooFilter } from '../../../lib/morph-layers'
27
- import { useReduceMotion } from '../../../lib/reduced-motion'
28
- import { type SizeVariant, useSize } from '../../../lib/size-context'
29
- import { spring } from '../../../lib/springs'
30
- import { GOO_BLUR_RATIO } from '../../../lib/use-morph'
31
- import { cn } from '../../../lib/utils'
32
-
33
- const circleA = 'M 12 8 C 14.21 8 16 9.79 16 12 C 16 14.21 14.21 16 12 16 C 9.79 16 8 14.21 8 12 C 8 9.79 9.79 8 12 8 Z'
34
-
35
- const infinity = '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'
36
-
37
- const circleB =
38
- 'M 12 16 C 14.21 16 16 14.21 16 12 C 16 9.79 14.21 8 12 8 C 9.79 8 8 9.79 8 12 C 8 14.21 9.79 16 12 16 Z'
39
-
40
- const words = ['Thinking', 'Moonwalking', 'Planning', 'Refining']
41
-
42
- // Per ladder step, as literal classes for the extractor: the dot, the box of
43
- // the three split dots, and the spacing between dot centers, wide enough that
44
- // split dots let go of each other through the goo.
45
- const DOTS: Record<SizeVariant, { box: string; dot: string; radius: number; gap: number }> = {
46
- default: { box: 'h-5 w-[26px]', dot: 'size-1.5', radius: 3, gap: 10 },
47
- compact: { box: 'h-[18px] w-[23px]', dot: 'size-[5px]', radius: 2.5, gap: 9 },
48
- }
49
-
50
- // The merged blob holds the three dots' area, so it swells as they melt in.
51
- const MERGED = Math.sqrt(3)
52
-
53
- /** Three dots that melt into one blob and split again, through the shared goo filter. */
54
- function GooDots({ step, still }: { step: SizeVariant; still: boolean }) {
55
- const gooId = `thinking-goo-${useId().replace(/:/g, '')}`
56
- const { box, dot, radius, gap } = DOTS[step]
57
- // Split → merged → split over eight slow-tier lengths. A spring per move
58
- // is over in a frame or two at this size, too quick to see a neck form;
59
- // eased all the way, the necks stretch and snap in view.
60
- const loop = { duration: spring.slow.duration * 8, ease: 'easeInOut' as const, repeat: Infinity }
61
-
62
- return (
63
- <span aria-hidden className={cn('relative shrink-0', box)}>
64
- <GooFilter id={gooId} blur={radius * GOO_BLUR_RATIO} />
65
- {/* The filter is the effect itself: it melts the token-colored dots into one shape. */}
66
- <span className="absolute inset-0 flex items-center justify-center" style={{ filter: `url(#${gooId})` }}>
67
- {[-1, 0, 1].map(side => (
68
- <motion.span
69
- key={side}
70
- className={cn('absolute rounded-full bg-muted-foreground', dot)}
71
- animate={still ? { x: side * gap } : side ? { x: [side * gap, 0, side * gap] } : { scale: [1, MERGED, 1] }}
72
- transition={still ? { duration: 0 } : loop}
73
- />
74
- ))}
75
- </span>
76
- </span>
77
- )
78
- }
79
-
80
- interface ThinkingIndicatorProps extends HTMLAttributes<HTMLDivElement> {
81
- /** The look: `shimmer` morphs a circle⇄infinity glyph beside a shimmering label (Fluid Functionalism's), `goo` melts three dots into one blob and splits them again beside a plain label. Defaults to `"shimmer"`. */
82
- variant?: 'shimmer' | 'goo'
83
- /** Show the glyph (or, for `goo`, the dots) before the label. Set to `false` for a text-only indicator (e.g. inline before a streamed reply). Defaults to `true`. */
84
- showIcon?: boolean
85
- /** Step on the size ladder. Wins over the surrounding SizeProvider. Defaults to the provider's step, else `"default"`. */
86
- size?: SizeVariant
87
- }
88
-
89
- /**
90
- * Animated status indicator with morphing SVG and cycling text — the
91
- * assistant's working state.
92
- *
93
- * A glyph that morphs circle to infinity and back sits next to a shimmering
94
- * label that cycles Thinking, Moonwalking, Planning, Refining, each word
95
- * swapped on a spring. The row reserves the width of the longest word, so
96
- * nothing around it shifts while the words change. One static "Thinking…" is
97
- * announced to screen readers instead of a re-announcement every four
98
- * seconds, and reduced motion drops both the morph and the cycling for a
99
- * still glyph and label.
100
- *
101
- * `variant="goo"` swaps the glyph for three dots that melt into one blob and
102
- * split again through the goo filter (see Morph), beside a plain label;
103
- * reduced motion holds them split.
104
- *
105
- * @example {@include ./examples.mdx}
106
- */
107
- const ThinkingIndicator = forwardRef<HTMLDivElement, ThinkingIndicatorProps>(
108
- ({ className, variant = 'shimmer', showIcon = true, size, ...props }, ref) => {
109
- const step = useSize(size).variant
110
- const compactStep = step === 'compact'
111
- const [index, setIndex] = useState(0)
112
- // Reduced motion drops the infinite glyph morph and the word cycling — a
113
- // static glyph and label carry the same meaning without the movement.
114
- const reduceMotion = useReduceMotion()
115
- const label = variant === 'goo' ? 'text-muted-foreground' : 'shimmer-text'
116
-
117
- useEffect(() => {
118
- if (reduceMotion) return
119
- const interval = setInterval(() => {
120
- setIndex(i => (i + 1) % words.length)
121
- }, 4000)
122
- return () => clearInterval(interval)
123
- }, [reduceMotion])
124
-
125
- return (
126
- <div ref={ref} role="status" className={cn('flex items-center gap-2 px-3 py-2', className)} {...props}>
127
- {/* Static announcement — the cycling word display below is aria-hidden
128
- so screen readers hear one "Thinking…" instead of a re-announcement
129
- every 4 seconds. */}
130
- <span className="sr-only">Thinking…</span>
131
- {showIcon && variant === 'goo' && <GooDots step={step} still={reduceMotion} />}
132
- {showIcon && variant === 'shimmer' && (
133
- <motion.svg
134
- aria-hidden
135
- width={compactStep ? 18 : 20}
136
- height={compactStep ? 18 : 20}
137
- viewBox="0 0 24 24"
138
- fill="none"
139
- stroke="currentColor"
140
- strokeWidth={1.5}
141
- strokeLinecap="round"
142
- strokeLinejoin="round"
143
- className="text-muted-foreground shrink-0"
144
- >
145
- {reduceMotion ? (
146
- <path d={infinity} />
147
- ) : (
148
- <motion.path
149
- d={circleA}
150
- initial={{ d: circleA }}
151
- animate={{
152
- d: [circleA, infinity, circleB, infinity, circleA],
153
- }}
154
- transition={{
155
- d: {
156
- duration: 6,
157
- ease: 'easeInOut',
158
- repeat: Infinity,
159
- times: [0, 0.25, 0.5, 0.75, 1.0],
160
- },
161
- }}
162
- />
163
- )}
164
- </motion.svg>
165
- )}
166
- <span
167
- aria-hidden="true"
168
- className={cn(
169
- 'inline-grid overflow-hidden',
170
- compactStep ? 'text-body-compact' : 'text-body',
171
- 'weight-medium',
172
- )}
173
- >
174
- <span className={cn('col-start-1 row-start-1 invisible', label)}>
175
- {words.reduce((a, b) => (a.length >= b.length ? a : b))}
176
- </span>
177
- {reduceMotion ? (
178
- <span className={cn('col-start-1 row-start-1', label)}>{words[0]}</span>
179
- ) : (
180
- <AnimatePresence mode="popLayout" initial={false}>
181
- <motion.span
182
- key={words[index]}
183
- className={cn('col-start-1 row-start-1', label)}
184
- initial={{ y: '80%', opacity: 0 }}
185
- animate={{
186
- y: 0,
187
- opacity: 1,
188
- transition: { duration: spring.slow.duration, ease: [0.4, 0, 0.2, 1] },
189
- }}
190
- exit={{
191
- y: '-80%',
192
- opacity: 0,
193
- transition: { duration: spring.slow.exit.duration, ease: [0.4, 0, 0.2, 1] },
194
- }}
195
- >
196
- {words[index]}
197
- </motion.span>
198
- </AnimatePresence>
199
- )}
200
- </span>
201
- </div>
202
- )
203
- },
204
- )
205
-
206
- ThinkingIndicator.displayName = 'ThinkingIndicator'
207
-
208
- export type { ThinkingIndicatorProps }
209
- export { ThinkingIndicator }
210
- export default ThinkingIndicator
@@ -1,233 +0,0 @@
1
- import Accordion from './index'
2
- import Button from '../button'
3
- import { ArrowRight } from 'lucide-react'
4
-
5
- # Basics
6
-
7
- ## Standalone
8
-
9
- A single collapsible item with its own hover state.
10
-
11
- <Accordion type="single" collapsible defaultValue="item-1">
12
- <Accordion.Item value="item-1">
13
- <Accordion.Trigger>What is this component?</Accordion.Trigger>
14
- <Accordion.Content>
15
- A collapsible accordion with animated expand/collapse and spring-animated chevron.
16
- </Accordion.Content>
17
- </Accordion.Item>
18
- </Accordion>
19
-
20
- ## Single Expand
21
-
22
- Multiple items with fluid hover — only one can be expanded at a time.
23
-
24
- <Accordion.Group type="single" collapsible defaultValue="item-1">
25
- <Accordion.Item value="item-1" index={0}>
26
- <Accordion.Trigger>Getting Started</Accordion.Trigger>
27
- <Accordion.Content>
28
- Install the component and import it into your project. The accordion
29
- supports both single and multiple expand modes.
30
- </Accordion.Content>
31
- </Accordion.Item>
32
- <Accordion.Item value="item-2" index={1}>
33
- <Accordion.Trigger>Styling</Accordion.Trigger>
34
- <Accordion.Content>
35
- The component integrates with the shape system for pill or rounded
36
- border-radius variants. All animations use spring physics.
37
- </Accordion.Content>
38
- </Accordion.Item>
39
- <Accordion.Item value="item-3" index={2}>
40
- <Accordion.Trigger>Accessibility</Accordion.Trigger>
41
- <Accordion.Content>
42
- Built on Base UI Accordion with WAI-ARIA attributes, keyboard
43
- navigation, and focus management.
44
- </Accordion.Content>
45
- </Accordion.Item>
46
- <Accordion.Item value="item-4" index={3}>
47
- <Accordion.Trigger>Animation</Accordion.Trigger>
48
- <Accordion.Content>
49
- The panel morphs out of its row and the chevron rotates on a spring.
50
- The fluid hover background tracks your cursor.
51
- </Accordion.Content>
52
- </Accordion.Item>
53
- </Accordion.Group>
54
-
55
- ## Multi Expand
56
-
57
- Multiple items with fluid hover — several can be expanded at once.
58
-
59
- <Accordion.Group type="multiple" defaultValue={['item-1', 'item-3']}>
60
- <Accordion.Item value="item-1" index={0}>
61
- <Accordion.Trigger>First Section</Accordion.Trigger>
62
- <Accordion.Content>
63
- Multiple items can be expanded at the same time.
64
- </Accordion.Content>
65
- </Accordion.Item>
66
- <Accordion.Item value="item-2" index={1}>
67
- <Accordion.Trigger>Second Section</Accordion.Trigger>
68
- <Accordion.Content>
69
- Click any trigger to expand or collapse independently.
70
- </Accordion.Content>
71
- </Accordion.Item>
72
- <Accordion.Item value="item-3" index={2}>
73
- <Accordion.Trigger>Third Section</Accordion.Trigger>
74
- <Accordion.Content>
75
- Each item operates independently in multiple mode.
76
- </Accordion.Content>
77
- </Accordion.Item>
78
- </Accordion.Group>
79
-
80
- ## Morph
81
-
82
- Each panel drips out of the row where it was pressed (its middle, from the keyboard) and widens into the item, its content revealed by the same shape; closing folds it back into the row. The rows below ride its bottom edge.
83
-
84
- <Accordion.Group type="single" collapsible defaultValue="shipping">
85
- <Accordion.Item value="shipping" index={0}>
86
- <Accordion.Trigger>When does my order ship?</Accordion.Trigger>
87
- <Accordion.Content>
88
- Orders placed before noon leave the same day. You get a tracking
89
- link by email as soon as the parcel is scanned.
90
- </Accordion.Content>
91
- </Accordion.Item>
92
- <Accordion.Item value="returns" index={1}>
93
- <Accordion.Trigger>Can I return it?</Accordion.Trigger>
94
- <Accordion.Content>
95
- Anything unused comes back free within 30 days. Start a return from
96
- your order page and print the label.
97
- </Accordion.Content>
98
- </Accordion.Item>
99
- <Accordion.Item value="warranty" index={2}>
100
- <Accordion.Trigger>What does the warranty cover?</Accordion.Trigger>
101
- <Accordion.Content>
102
- Two years on parts and labour. Accidental damage is covered once,
103
- on top of that.
104
- </Accordion.Content>
105
- </Accordion.Item>
106
- </Accordion.Group>
107
-
108
- # Variants
109
-
110
- ## Row highlight
111
-
112
- With `highlight="trigger"` an expanded item holds no tint — the fill
113
- scopes to the row and waits for hover. Suits dense panels, where a block
114
- per open item reads as a second layer.
115
-
116
- <Accordion.Group type="single" collapsible defaultValue="item-1" highlight="trigger">
117
- <Accordion.Item value="item-1" index={0}>
118
- <Accordion.Trigger>Expanded, but not tinted</Accordion.Trigger>
119
- <Accordion.Content>
120
- The panel reads as part of the page rather than a filled block.
121
- </Accordion.Content>
122
- </Accordion.Item>
123
- <Accordion.Item value="item-2" index={1}>
124
- <Accordion.Trigger>Hover any row</Accordion.Trigger>
125
- <Accordion.Content>
126
- The fill follows your cursor instead of marking a state.
127
- </Accordion.Content>
128
- </Accordion.Item>
129
- <Accordion.Item value="item-3" index={2}>
130
- <Accordion.Trigger>Compare with the sections above</Accordion.Trigger>
131
- <Accordion.Content>
132
- Those hold a block across the row and its panel while open.
133
- </Accordion.Content>
134
- </Accordion.Item>
135
- </Accordion.Group>
136
-
137
- ## Without the goo
138
-
139
- `effect="morph"` grows the same shape with no liquid neck to its row; `tier="moderate"` runs the goo on the quicker, critically damped spring.
140
-
141
- <Accordion.Group type="single" collapsible>
142
- <Accordion.Item value="morph" index={0}>
143
- <Accordion.Trigger>Plain morph</Accordion.Trigger>
144
- <Accordion.Content effect="morph">
145
- The tint grows from the press point into the item, with no neck.
146
- </Accordion.Content>
147
- </Accordion.Item>
148
- <Accordion.Item value="moderate" index={1}>
149
- <Accordion.Trigger>Moderate tier</Accordion.Trigger>
150
- <Accordion.Content tier="moderate">
151
- The goo again, on the moderate spring.
152
- </Accordion.Content>
153
- </Accordion.Item>
154
- </Accordion.Group>
155
-
156
- ## Without the chevron
157
-
158
- `icon={false}` drops the glyph at the row's end, for a row whose own content says it opens. A component passed as `icon` replaces the chevron and turns a quarter turn on open, so give it a right-pointing glyph.
159
-
160
- <Accordion.Group type="single" collapsible defaultValue="plain">
161
- <Accordion.Item value="plain" index={0}>
162
- <Accordion.Trigger icon={false}>No chevron</Accordion.Trigger>
163
- <Accordion.Content>
164
- The label takes the whole row; hover and the open tint still say what it does.
165
- </Accordion.Content>
166
- </Accordion.Item>
167
- <Accordion.Item value="default" index={1}>
168
- <Accordion.Trigger>Default chevron</Accordion.Trigger>
169
- <Accordion.Content>
170
- The same row with the icon context's chevron.
171
- </Accordion.Content>
172
- </Accordion.Item>
173
- <Accordion.Item value="custom" index={2}>
174
- <Accordion.Trigger icon={ArrowRight}>Custom glyph</Accordion.Trigger>
175
- <Accordion.Content>
176
- An arrow that points down once the item is open.
177
- </Accordion.Content>
178
- </Accordion.Item>
179
- </Accordion.Group>
180
-
181
- # Composition
182
-
183
- ## Rich headers
184
-
185
- By default the trigger renders its label twice: a hidden semibold copy reserves the width, so the label gets heavier on open without moving. A header made of components would be duplicated in the DOM, so `weightShift={false}` renders it once and leaves the weight to its content. `contentClassName` is merged over the inner row's inset, padding and muted body text: the first panel below turns its text to full strength, the second takes a wider inset and the caption size. The label lives inside the trigger `<button>`, so build it from phrasing content (spans, as below), never a `div`-based header. Text that fixes its own colour stays that colour when the item opens: the chevron, the highlight and the open tint are what signal the state.
186
-
187
- <Accordion.Group type="multiple" defaultValue={['one']}>
188
- <Accordion.Item value="one" index={0}>
189
- <Accordion.Trigger weightShift={false}>
190
- <span className="flex flex-col">
191
- <span className="text-subtitle text-foreground">Pro plan</span>
192
- <span className="text-caption text-muted-foreground">Billed yearly, cancel any time</span>
193
- </span>
194
- </Accordion.Trigger>
195
- <Accordion.Content contentClassName="text-foreground">
196
- Unlimited projects and priority support. The header above is in the DOM once.
197
- </Accordion.Content>
198
- </Accordion.Item>
199
- <Accordion.Item value="two" index={1}>
200
- <Accordion.Trigger weightShift={false} icon={false}>
201
- <span className="flex flex-col">
202
- <span className="text-subtitle text-foreground">Team plan</span>
203
- <span className="text-caption text-muted-foreground">Per seat, no chevron</span>
204
- </span>
205
- </Accordion.Trigger>
206
- <Accordion.Content contentClassName="px-6 text-caption">
207
- Shared workspaces and roles.
208
- </Accordion.Content>
209
- </Accordion.Item>
210
- </Accordion.Group>
211
-
212
- ## Your own trigger
213
-
214
- `asChild` (or `render`) makes your element the trigger, so a Button, a link-styled control or anything else can open the item. It is rendered as it is: the row's label copy, the chevron and the row padding are not added, so the element brings its own content and look. Base UI still wires `aria-expanded`, `aria-controls`, `data-panel-open` and the keys onto it, so style the open state with `data-[panel-open]`.
215
-
216
- <Accordion.Group type="single" collapsible defaultValue="one">
217
- <Accordion.Item value="one" index={0}>
218
- <Accordion.Trigger asChild>
219
- <Button variant="ghost" className="w-full justify-start">Billing</Button>
220
- </Accordion.Trigger>
221
- <Accordion.Content>
222
- Invoices, payment methods and receipts.
223
- </Accordion.Content>
224
- </Accordion.Item>
225
- <Accordion.Item value="two" index={1}>
226
- <Accordion.Trigger render={<Button variant="ghost" className="w-full justify-start" />}>
227
- Security
228
- </Accordion.Trigger>
229
- <Accordion.Content>
230
- Passwords, sessions and two-factor.
231
- </Accordion.Content>
232
- </Accordion.Item>
233
- </Accordion.Group>