@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,69 +0,0 @@
1
- import NumberInput from './index'
2
- import Field from '../field'
3
-
4
- # Basics
5
-
6
- ## Number input
7
-
8
- Type a number, or step it with minus and plus. Hold a button to repeat; the arrow keys step too, Shift by ten.
9
-
10
- <div className="w-56 max-w-full">
11
- <NumberInput variant="bordered" defaultValue={4} min={0} max={20} inputProps={{ 'aria-label': 'Quantity' }} />
12
- </div>
13
-
14
- ## Formats
15
-
16
- `format` takes `Intl.NumberFormat` options and `locale` the locale. Typing in the shown form parses back.
17
-
18
- <div className="flex flex-col gap-3 w-56 max-w-full">
19
- <NumberInput variant="bordered" defaultValue={1234.5} format={{ style: 'currency', currency: 'EUR' }} locale="en-US" inputProps={{ 'aria-label': 'Price in euros, US format' }} />
20
- <NumberInput variant="bordered" defaultValue={1234.5} format={{ style: 'currency', currency: 'EUR' }} locale="sk-SK" inputProps={{ 'aria-label': 'Price in euros, Slovak format' }} />
21
- <NumberInput variant="bordered" defaultValue={0.25} step={0.05} format={{ style: 'percent' }} inputProps={{ 'aria-label': 'Discount' }} />
22
- </div>
23
-
24
- ## Units and scrubbing
25
-
26
- `endAdornment` holds a unit. With `scrub`, the start adornment is a handle: drag it sideways to change the value.
27
-
28
- <div className="flex flex-col gap-3 w-56 max-w-full">
29
- <NumberInput variant="bordered" defaultValue={72} endAdornment="kg" inputProps={{ 'aria-label': 'Weight in kilograms' }} />
30
- <NumberInput variant="bordered" defaultValue={320} min={0} startAdornment="W" scrub stepper={false} inputProps={{ 'aria-label': 'Width' }} />
31
- </div>
32
-
33
- ## Compact
34
-
35
- The compact step shrinks the box, the text and the steppers together.
36
-
37
- <div className="w-44 max-w-full">
38
- <NumberInput size="compact" variant="bordered" defaultValue={10} step={5} inputProps={{ 'aria-label': 'Spacing' }} />
39
- </div>
40
-
41
- # Composition
42
-
43
- ## In a Field
44
-
45
- Inside a Field it is labelled and takes the field's state: here invalid, with its message.
46
-
47
- <Field invalid className="w-56 max-w-full">
48
- <Field.Label>Guests</Field.Label>
49
- <NumberInput defaultValue={12} max={10} inputProps={{ 'aria-label': 'Guests' }} />
50
- <Field.Error>The room seats ten.</Field.Error>
51
- </Field>
52
-
53
- ## Input props
54
-
55
- `inputProps` goes onto the `<input>` itself, after the field's own, so an accessible name, `autoFocus`, `autoComplete`, `inputMode` or a key handler reaches it. `onValueChange` also hears Base UI's change details; `reason` tells typing from a stepper press.
56
-
57
- <div className="w-56 max-w-full">
58
- <NumberInput variant="bordered" defaultValue={2} min={0} inputProps={{ 'aria-label': 'Seats', 'aria-describedby': 'seats-help', autoComplete: 'off', inputMode: 'numeric' }} />
59
- <p id="seats-help" className="mt-1 text-caption text-muted-foreground">Described by this line.</p>
60
- </div>
61
-
62
- # States
63
-
64
- Disabled dims the field and its steppers; read-only hides the steppers and keeps the value selectable.
65
-
66
- <div className="flex flex-col gap-3 w-56 max-w-full">
67
- <NumberInput variant="bordered" defaultValue={3} disabled inputProps={{ 'aria-label': 'Disabled count' }} />
68
- <NumberInput variant="bordered" defaultValue={3} readOnly inputProps={{ 'aria-label': 'Read-only count' }} />
69
- </div>
@@ -1,221 +0,0 @@
1
- /*
2
- * Local addition (not part of Fluid Functionalism): a number field on Base
3
- * UI's NumberField, drawn on the shared field box (`useFieldBox` in
4
- * `lib/field-classes.ts`) like Input, with its steppers as field actions
5
- * (`FIELD_ACTION_BOX` / `FIELD_ACTION_END` in `lib/field-variants.ts`).
6
- * `inputProps` reaches the `<input>` (last, so `aria-*`, `autoFocus`, handlers and `id`
7
- * win), and `onValueChange` hears Base UI's change details as a second argument.
8
- */
9
-
10
- import { NumberField, type NumberFieldRootChangeEventDetails } from '@base-ui/react/number-field'
11
- import { forwardRef, type InputHTMLAttributes, type ReactNode, useRef } from 'react'
12
- import {
13
- FIELD_ACTION_BOX,
14
- FIELD_ACTION_END,
15
- FIELD_ACTION_RADIUS,
16
- type FieldVariant,
17
- fieldActionClasses,
18
- focusControlOnPress,
19
- useFieldBox,
20
- } from '../../../lib/field-classes'
21
- import { useIcon } from '../../../lib/icon-context'
22
- import { useShape } from '../../../lib/shape-context'
23
- import type { SizeVariant } from '../../../lib/size-context'
24
- import { cn } from '../../../lib/utils'
25
- import { InputAdornment } from '../input'
26
-
27
- interface NumberInputProps {
28
- /** Controlled value; `null` while the field is empty. Pair with `onValueChange`. */
29
- value?: number | null
30
- /** Initial value when uncontrolled. Empty when unset. */
31
- defaultValue?: number
32
- /** Called with the new value as it changes (typing, steppers, arrow keys, scrubbing); `null` when cleared. The second argument is Base UI's change details: `reason` names the cause (`"input-change"`, `"keyboard"`, `"increment-press"`, `"scrub"`, …) and `event` the DOM event. */
33
- onValueChange?: (value: number | null, details: NumberFieldRootChangeEventDetails) => void
34
- /** Called once a change is done: on blur after typing, on release after a stepper press or a scrub. */
35
- onValueCommitted?: (value: number | null) => void
36
- /** Lowest value the steppers, arrow keys and blur clamp to. */
37
- min?: number
38
- /** Highest value the steppers, arrow keys and blur clamp to. */
39
- max?: number
40
- /** Amount a stepper press or an arrow key adds. Defaults to `1`. */
41
- step?: number
42
- /** Amount with Alt held. Defaults to `0.1`. */
43
- smallStep?: number
44
- /** Amount with Shift held. Defaults to `10`. */
45
- largeStep?: number
46
- /** How the value is shown and read back: `Intl.NumberFormat` options, e.g. `{ style: 'currency', currency: 'EUR' }` or `{ style: 'percent' }`. */
47
- format?: Intl.NumberFormatOptions
48
- /** Locale for formatting and parsing (`"sk-SK"` writes `1 234,5`). Defaults to the browser's. */
49
- locale?: Intl.LocalesArgument
50
- /** Placeholder text while empty. */
51
- placeholder?: string
52
- /** Shows the minus and plus buttons. Defaults to `true`. */
53
- stepper?: boolean
54
- /** Turns `startAdornment` into a scrub handle: drag it sideways to change the value. Defaults to `false`. */
55
- scrub?: boolean
56
- /** Lets the mouse wheel change the value while the field is focused and hovered. Defaults to `false`. */
57
- wheel?: boolean
58
- /** Content before the number: a label such as `"W"` (a scrub handle with `scrub`), a currency sign, an icon. */
59
- startAdornment?: ReactNode
60
- /** Content after the number, before the steppers: a unit such as `"kg"`. */
61
- endAdornment?: ReactNode
62
- /** Accessible name of the minus button. Defaults to `"Decrease"`. */
63
- decrementLabel?: string
64
- /** Accessible name of the plus button. Defaults to `"Increase"`. */
65
- incrementLabel?: string
66
- /** Names the value when the form is submitted. */
67
- name?: string
68
- /** Id of the input, for a `Label`'s `htmlFor`. Inside a Field it is wired for you. */
69
- id?: string
70
- /** Marks the value required. Defaults to the surrounding Field's `required`. */
71
- required?: boolean
72
- /** Framed at rest, or invisible until hovered or focused. Defaults to `"borderless"`. */
73
- variant?: FieldVariant
74
- /** Marks the value invalid: the field turns destructive and sets `aria-invalid`. Defaults to `false`. */
75
- invalid?: boolean
76
- /** Disables the field and its steppers. Defaults to `false`. */
77
- disabled?: boolean
78
- /** Shows the value without letting it change; the steppers hide. Defaults to `false`. */
79
- readOnly?: boolean
80
- /** Pins the field to one step of the size ladder (36px default, 28px compact). Defaults to the surrounding SizeProvider. */
81
- size?: SizeVariant
82
- /** Classes for the ringed box. */
83
- className?: string
84
- /** Props for the `<input>` itself, applied last so they win: `aria-label`, `aria-describedby`, `autoFocus`, `onKeyDown`, `id`, `autoComplete`, `inputMode`. Use the root `name`; a `name` here posts the formatted text. `disabled`, `required`, `readOnly` and `type` stay with the root props and the surrounding Field; a `className` joins the input's own. */
85
- inputProps?: Omit<InputHTMLAttributes<HTMLInputElement>, 'value' | 'defaultValue' | 'onChange' | 'size'>
86
- }
87
-
88
- /**
89
- * Number field with steppers, formatting and an optional scrub handle.
90
- *
91
- * It sits on the same ground as Input: bare at rest (or framed with
92
- * `variant="bordered"`), a muted wash on hover, the card on focus, a
93
- * destructive ring when `invalid`. Minus and plus sit inside the ring at the
94
- * end; holding one repeats, the arrow keys step (Shift for `largeStep`, Alt
95
- * for `smallStep`), and both stop at `min` / `max`. `format` takes
96
- * `Intl.NumberFormat` options and `locale` the locale, so a value reads
97
- * `€1,234.50` or `1 234,5 %` and typing in that form parses back. With
98
- * `scrub`, the start adornment becomes a handle: drag it sideways to change
99
- * the value, as in a design tool. The value is a number, or `null` while
100
- * empty: uncontrolled with `defaultValue`, controlled with `value` +
101
- * `onValueChange`. Behavior comes from Base UI's NumberField; inside a Field
102
- * it is labelled and takes the field's state.
103
- *
104
- * @example {@include ./examples.mdx}
105
- */
106
- const NumberInput = forwardRef<HTMLInputElement, NumberInputProps>(
107
- (
108
- {
109
- value,
110
- defaultValue,
111
- onValueChange,
112
- onValueCommitted,
113
- format,
114
- locale,
115
- placeholder,
116
- stepper = true,
117
- scrub = false,
118
- wheel = false,
119
- startAdornment,
120
- endAdornment,
121
- decrementLabel = 'Decrease',
122
- incrementLabel = 'Increase',
123
- id,
124
- variant = 'borderless',
125
- invalid,
126
- disabled,
127
- readOnly,
128
- required,
129
- size,
130
- className,
131
- inputProps,
132
- ...props
133
- },
134
- ref,
135
- ) => {
136
- const inputRef = useRef<HTMLInputElement | null>(null)
137
- const box = useFieldBox({ variant, invalid, disabled, readOnly, required, size })
138
- const shape = useShape()
139
- const Minus = useIcon('minus')
140
- const Plus = useIcon('plus')
141
- const Arrows = useIcon('chevrons-up-down')
142
- const stepClasses = cn(fieldActionClasses, FIELD_ACTION_BOX[box.size.variant], FIELD_ACTION_RADIUS[shape.variant])
143
-
144
- const start = startAdornment != null && (
145
- <InputAdornment size={size}>
146
- {scrub ? (
147
- <NumberField.ScrubArea className="cursor-ew-resize select-none">
148
- {startAdornment}
149
- {/* The pointer is locked while scrubbing; this stands in for it. */}
150
- <NumberField.ScrubAreaCursor className="text-foreground">
151
- <Arrows size={box.size.icon} strokeWidth={2} className="rotate-90" />
152
- </NumberField.ScrubAreaCursor>
153
- </NumberField.ScrubArea>
154
- ) : (
155
- startAdornment
156
- )}
157
- </InputAdornment>
158
- )
159
-
160
- return (
161
- <NumberField.Root
162
- id={id}
163
- value={value}
164
- defaultValue={defaultValue}
165
- onValueChange={(next, details) => onValueChange?.(next, details)}
166
- onValueCommitted={next => onValueCommitted?.(next)}
167
- format={format}
168
- locale={locale}
169
- allowWheelScrub={wheel}
170
- disabled={box.disabled}
171
- readOnly={box.readOnly}
172
- required={box.required}
173
- {...props}
174
- >
175
- <NumberField.Group
176
- onMouseDown={focusControlOnPress(inputRef)}
177
- {...box.props}
178
- className={cn(box.props.className, 'flex items-center', box.size.gap, box.size.control, className)}
179
- >
180
- {start}
181
- <NumberField.Input
182
- ref={node => {
183
- inputRef.current = node
184
- if (typeof ref === 'function') ref(node)
185
- else if (ref) ref.current = node
186
- }}
187
- placeholder={placeholder}
188
- aria-invalid={box.invalid || undefined}
189
- {...inputProps}
190
- className={cn(
191
- 'w-full min-w-0 rounded-none bg-transparent text-foreground tabular-nums placeholder:text-muted-foreground outline-none font-[inherit] weight-normal',
192
- box.size.text,
193
- inputProps?.className,
194
- )}
195
- />
196
- <InputAdornment size={size}>{endAdornment}</InputAdornment>
197
- {stepper && !box.readOnly && (
198
- // The steppers sit side by side, the last 4px inside the ring.
199
- <span className="flex shrink-0 items-center">
200
- <NumberField.Decrement aria-label={decrementLabel} className={stepClasses}>
201
- <Minus size={box.size.icon} strokeWidth={1.5} />
202
- </NumberField.Decrement>
203
- <NumberField.Increment
204
- aria-label={incrementLabel}
205
- className={cn(stepClasses, FIELD_ACTION_END[box.size.variant])}
206
- >
207
- <Plus size={box.size.icon} strokeWidth={1.5} />
208
- </NumberField.Increment>
209
- </span>
210
- )}
211
- </NumberField.Group>
212
- </NumberField.Root>
213
- )
214
- },
215
- )
216
-
217
- NumberInput.displayName = 'NumberInput'
218
-
219
- export type { NumberInputProps }
220
- export { NumberInput }
221
- export default NumberInput
@@ -1,77 +0,0 @@
1
- import Radio from './index'
2
- import { Label } from '../input'
3
-
4
- # Basic
5
-
6
- One option at a time; the selected background follows the pick.
7
-
8
- <Radio.Group defaultSelectedIndex={0}>
9
- {['Option A', 'Option B', 'Option C'].map(label => (
10
- <Radio key={label} label={label} />
11
- ))}
12
- </Radio.Group>
13
-
14
- # Compact
15
-
16
- `size="compact"` pins every row to the 28px step of the size ladder.
17
-
18
- <Radio.Group size="compact" defaultSelectedIndex={1}>
19
- {['Option A', 'Option B', 'Option C'].map(label => (
20
- <Radio key={label} label={label} />
21
- ))}
22
- </Radio.Group>
23
-
24
- # By value
25
-
26
- Give rows a `value` and select by it; the group then renders Base UI radios
27
- for form integration.
28
-
29
- <Radio.Group defaultValue="weekly">
30
- <Radio value="daily" label="Daily digest" />
31
- <Radio value="weekly" label="Weekly summary" />
32
- <Radio value="never" label="Never" />
33
- </Radio.Group>
34
-
35
- # Bare
36
-
37
- A `Radio` without a `label` is just the circle, picked by its `value`. Lay bare radios out however you like inside a value-mode group, here with a description line each; the group draws no rows of its own and the arrow keys move between the circles.
38
-
39
- <Radio.Group defaultValue="standard" aria-label="Shipping" className="w-80 max-w-full gap-3">
40
- <div className="flex items-start gap-3">
41
- <Radio id="ship-standard" value="standard" className="mt-0.5" />
42
- <div className="flex flex-col gap-1">
43
- <Label htmlFor="ship-standard">Standard</Label>
44
- <span className="text-caption text-muted-foreground">4–6 business days</span>
45
- </div>
46
- </div>
47
- <div className="flex items-start gap-3">
48
- <Radio id="ship-express" value="express" className="mt-0.5" />
49
- <div className="flex flex-col gap-1">
50
- <Label htmlFor="ship-express">Express</Label>
51
- <span className="text-caption text-muted-foreground">1–2 business days</span>
52
- </div>
53
- </div>
54
- <div className="flex items-start gap-3">
55
- <Radio id="ship-pickup" value="pickup" disabled className="mt-0.5" />
56
- <div className="flex flex-col gap-1">
57
- <Label htmlFor="ship-pickup">Pick up in store</Label>
58
- <span className="text-caption text-muted-foreground">Not available for this order</span>
59
- </div>
60
- </div>
61
- </Radio.Group>
62
-
63
- # Disabled
64
-
65
- `disabled` on a row dims it and the hover and arrow keys skip it; on the group it turns every radio off.
66
-
67
- <div className="flex flex-col gap-3">
68
- <Radio.Group defaultValue="monthly">
69
- <Radio value="monthly" label="Monthly" />
70
- <Radio value="yearly" label="Yearly (coming soon)" disabled />
71
- <Radio value="lifetime" label="Lifetime" />
72
- </Radio.Group>
73
- <Radio.Group defaultValue="monthly" disabled>
74
- <Radio value="monthly" label="Monthly" />
75
- <Radio value="yearly" label="Yearly" />
76
- </Radio.Group>
77
- </div>