@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
@@ -0,0 +1,986 @@
1
+ import {
2
+ opensInPlace,
3
+ inPlaceOffset,
4
+ useMorphOrigin,
5
+ useMorph
6
+ } from "./components-hqeq3w9q.js";
7
+ import {
8
+ cn2
9
+ } from "./components-ezxhrmer.js";
10
+ import {
11
+ FluidHoverHighlight2
12
+ } from "./components-kvr7f9hy.js";
13
+ import {
14
+ MorphSurface
15
+ } from "./components-0q0sqfh4.js";
16
+ import {
17
+ shapeMap
18
+ } from "./components-cv16mryv.js";
19
+ import {
20
+ useSize2
21
+ } from "./components-0sn7ypjw.js";
22
+ import {
23
+ SURFACE_BG,
24
+ SURFACE_SHADOW,
25
+ useSurface2,
26
+ SurfaceProvider2
27
+ } from "./components-zx6b6yby.js";
28
+ import {
29
+ useControllableState
30
+ } from "./components-n7mjr357.js";
31
+ import {
32
+ useFluidHover2,
33
+ useRegisterFluidHoverItem2
34
+ } from "./components-59efxjd9.js";
35
+ import {
36
+ useSelectionRuns,
37
+ useMergeSplitBlocks,
38
+ SelectionBackgrounds
39
+ } from "./components-5xc2j8jz.js";
40
+ import {
41
+ ScrollArea2
42
+ } from "./components-b0eac83j.js";
43
+ import {
44
+ SizeProvider2
45
+ } from "./components-jjw69c4c.js";
46
+ import {
47
+ Elevated2
48
+ } from "./components-vc7vq5nz.js";
49
+ import {
50
+ useIcon
51
+ } from "./components-zrkzcayz.js";
52
+ import {
53
+ popupScrollAreaClass,
54
+ popupViewportClass,
55
+ isDisabledRow
56
+ } from "./components-vynjtrk6.js";
57
+ import {
58
+ spring2
59
+ } from "./components-1v7rxytx.js";
60
+
61
+ // components/overlays/dropdown/index.tsx
62
+ import { Menu } from "@base-ui/react/menu";
63
+ import { AnimatePresence as AnimatePresence2, motion as motion2 } from "motion/react";
64
+ import {
65
+ Children,
66
+ cloneElement,
67
+ createContext as createContext3,
68
+ forwardRef as forwardRef3,
69
+ isValidElement,
70
+ useCallback as useCallback2,
71
+ useContext as useContext3,
72
+ useEffect as useEffect3,
73
+ useImperativeHandle,
74
+ useMemo as useMemo2,
75
+ useRef as useRef3,
76
+ useState as useState2
77
+ } from "react";
78
+
79
+ // components/overlays/dropdown/dropdown-search.tsx
80
+ import {
81
+ createContext,
82
+ forwardRef,
83
+ useCallback,
84
+ useContext,
85
+ useEffect,
86
+ useMemo,
87
+ useRef,
88
+ useState
89
+ } from "react";
90
+ import { jsx, jsxs } from "react/jsx-runtime";
91
+ var DropdownSearchHostContext = createContext(null);
92
+ var DropdownFilterContext = createContext(null);
93
+ var ROW_SELECTOR = [
94
+ '[role="menuitem"]:not([aria-disabled="true"])',
95
+ '[role="menuitemradio"]:not([aria-disabled="true"])',
96
+ '[role="menuitemcheckbox"]:not([aria-disabled="true"])'
97
+ ].join(", ");
98
+ function menuRows(from) {
99
+ const menu = from?.closest('[role="menu"]');
100
+ return menu ? Array.from(menu.querySelectorAll(ROW_SELECTOR)) : [];
101
+ }
102
+ function useDropdownSearchHost(open, { containerRef, setActiveIndex }) {
103
+ const handleRef = useRef(null);
104
+ const [searchMounted, setSearchMounted] = useState(false);
105
+ const register = useCallback((handle) => {
106
+ handleRef.current = handle;
107
+ setSearchMounted(true);
108
+ return () => {
109
+ if (handleRef.current === handle) {
110
+ handleRef.current = null;
111
+ setSearchMounted(false);
112
+ }
113
+ };
114
+ }, []);
115
+ const highlightFirst = useCallback(() => {
116
+ const first = containerRef.current?.querySelector(ROW_SELECTOR);
117
+ const index = first?.getAttribute("data-fluid-hover-index");
118
+ setActiveIndex(index != null ? Number(index) : null);
119
+ }, [containerRef, setActiveIndex]);
120
+ const isSearchField = useCallback((target) => target !== null && target === handleRef.current?.input, []);
121
+ const host = useMemo(() => ({ register, open, highlightFirst }), [register, open, highlightFirst]);
122
+ const onKeyDownCapture = useCallback((e) => {
123
+ const handle = handleRef.current;
124
+ if (!handle?.input)
125
+ return;
126
+ if (e.target === handle.input)
127
+ return;
128
+ if (e.metaKey || e.ctrlKey || e.altKey)
129
+ return;
130
+ if (e.key.length === 1 && e.key !== " ") {
131
+ e.preventDefault();
132
+ e.stopPropagation();
133
+ handle.input.focus();
134
+ handle.append(e.key);
135
+ } else if (e.key === "Backspace") {
136
+ e.preventDefault();
137
+ e.stopPropagation();
138
+ handle.input.focus();
139
+ handle.deleteBackward();
140
+ }
141
+ }, []);
142
+ const hasSearch = useCallback(() => handleRef.current !== null, []);
143
+ return {
144
+ host,
145
+ hasSearch,
146
+ searchMounted,
147
+ onKeyDownCapture,
148
+ isSearchField,
149
+ highlightFirst
150
+ };
151
+ }
152
+ var DropdownSearch2 = forwardRef(({
153
+ value,
154
+ onValueChange,
155
+ filter = false,
156
+ placeholder = "Search…",
157
+ clearOnClose = true,
158
+ autoFocus = true,
159
+ className,
160
+ onKeyDown,
161
+ ...props
162
+ }, ref) => {
163
+ const SearchIcon = useIcon("search");
164
+ const sizeClasses = useSize2();
165
+ const compact = sizeClasses.variant === "compact";
166
+ const host = useContext(DropdownSearchHostContext);
167
+ const open = host?.open ?? true;
168
+ const panel = useContext(DropdownFilterContext);
169
+ const managed = filter ? panel : null;
170
+ const query = managed ? managed.query : value ?? "";
171
+ const setQuery = useCallback((next) => {
172
+ managed?.setQuery(next);
173
+ onValueChange?.(next);
174
+ }, [managed, onValueChange]);
175
+ const surface = useSurface2();
176
+ const inputRef = useRef(null);
177
+ const valueRef = useRef(query);
178
+ valueRef.current = query;
179
+ const onValueChangeRef = useRef(setQuery);
180
+ onValueChangeRef.current = setQuery;
181
+ const clearOnCloseRef = useRef(clearOnClose);
182
+ clearOnCloseRef.current = clearOnClose;
183
+ useEffect(() => {
184
+ if (!host)
185
+ return;
186
+ return host.register({
187
+ get input() {
188
+ return inputRef.current;
189
+ },
190
+ append: (text) => onValueChangeRef.current(valueRef.current + text),
191
+ deleteBackward: () => onValueChangeRef.current(valueRef.current.slice(0, -1))
192
+ });
193
+ }, [host]);
194
+ useEffect(() => {
195
+ if (!open)
196
+ return;
197
+ if (clearOnCloseRef.current && valueRef.current !== "") {
198
+ onValueChangeRef.current("");
199
+ }
200
+ if (!autoFocus)
201
+ return;
202
+ let inner;
203
+ const outer = requestAnimationFrame(() => {
204
+ inner = requestAnimationFrame(() => inputRef.current?.focus());
205
+ });
206
+ return () => {
207
+ cancelAnimationFrame(outer);
208
+ if (inner !== undefined)
209
+ cancelAnimationFrame(inner);
210
+ };
211
+ }, [open, autoFocus]);
212
+ useEffect(() => {
213
+ if (!host || document.activeElement !== inputRef.current)
214
+ return;
215
+ host.highlightFirst();
216
+ }, [host, query]);
217
+ useEffect(() => () => {
218
+ if (clearOnCloseRef.current && valueRef.current !== "") {
219
+ onValueChangeRef.current("");
220
+ }
221
+ }, []);
222
+ const handleKeyDown = (e) => {
223
+ onKeyDown?.(e);
224
+ if (e.defaultPrevented)
225
+ return;
226
+ if (e.key === "Escape" || e.key === "Tab")
227
+ return;
228
+ e.stopPropagation();
229
+ if (e.key === "ArrowDown" || e.key === "ArrowUp") {
230
+ const rows = menuRows(e.currentTarget);
231
+ if (rows.length === 0)
232
+ return;
233
+ e.preventDefault();
234
+ (e.key === "ArrowDown" ? rows[0] : rows[rows.length - 1])?.focus();
235
+ } else if (e.key === "Enter") {
236
+ e.preventDefault();
237
+ menuRows(e.currentTarget)[0]?.click();
238
+ }
239
+ };
240
+ return /* @__PURE__ */ jsxs("div", {
241
+ className: cn2("group/search sticky top-0 z-20 -mx-1 -mt-1 mb-0.5 flex shrink-0 items-center border-b border-border/60", SURFACE_BG[surface], sizeClasses.control, sizeClasses.gap, compact ? "px-2.5" : "px-3", className),
242
+ children: [
243
+ /* @__PURE__ */ jsx(SearchIcon, {
244
+ size: sizeClasses.icon,
245
+ strokeWidth: 1.5,
246
+ className: "shrink-0 text-muted-foreground transition-[color,stroke-width] duration-fast group-focus-within/search:text-foreground group-focus-within/search:stroke-[2]"
247
+ }),
248
+ /* @__PURE__ */ jsx("input", {
249
+ ref: (node) => {
250
+ inputRef.current = node;
251
+ if (typeof ref === "function")
252
+ ref(node);
253
+ else if (ref)
254
+ ref.current = node;
255
+ },
256
+ type: "text",
257
+ role: "searchbox",
258
+ autoComplete: "off",
259
+ autoCorrect: "off",
260
+ spellCheck: false,
261
+ value: query,
262
+ onChange: (e) => setQuery(e.target.value),
263
+ onKeyDown: handleKeyDown,
264
+ placeholder,
265
+ className: cn2("min-w-0 flex-1 rounded-none bg-transparent text-foreground placeholder:text-muted-foreground outline-none font-[inherit]", sizeClasses.text, compact ? "leading-5" : "leading-6"),
266
+ ...props
267
+ })
268
+ ]
269
+ });
270
+ });
271
+ DropdownSearch2.displayName = "DropdownSearch";
272
+ var DropdownEmpty2 = forwardRef(({ className, ...props }, ref) => {
273
+ const sizeClasses = useSize2();
274
+ return /* @__PURE__ */ jsx("div", {
275
+ ref,
276
+ role: "status",
277
+ "aria-live": "polite",
278
+ className: cn2("px-2 py-6 text-center text-muted-foreground", sizeClasses.text, className),
279
+ ...props
280
+ });
281
+ });
282
+ DropdownEmpty2.displayName = "DropdownEmpty";
283
+
284
+ // components/overlays/dropdown/menu-item.tsx
285
+ import { AnimatePresence, motion } from "motion/react";
286
+ import {
287
+ createContext as createContext2,
288
+ forwardRef as forwardRef2,
289
+ useContext as useContext2,
290
+ useEffect as useEffect2,
291
+ useRef as useRef2
292
+ } from "react";
293
+ import { jsx as jsx2, jsxs as jsxs2, Fragment } from "react/jsx-runtime";
294
+ var shape = shapeMap.rounded;
295
+ var DropdownContext = createContext2(null);
296
+ function useDropdown2() {
297
+ const ctx = useContext2(DropdownContext);
298
+ if (!ctx)
299
+ throw new Error("useDropdown must be used within a Dropdown");
300
+ return ctx;
301
+ }
302
+ function useDropdownMaybe2() {
303
+ return useContext2(DropdownContext);
304
+ }
305
+ var MenuItem2 = forwardRef2(({ icon: Icon, label, index, checked, onSelect, disabled, closeOnClick, sourceIndex, className, onClick, ...props }, ref) => {
306
+ const internalRef = useRef2(null);
307
+ const hasMounted = useRef2(false);
308
+ const {
309
+ registerItem,
310
+ activeIndex,
311
+ checkedIndex,
312
+ multiple,
313
+ checkedIndices,
314
+ renderMenuItem,
315
+ selfManaged,
316
+ toggleIndex
317
+ } = useDropdown2();
318
+ const panelChecked = multiple ? checkedIndices?.includes(index) ?? false : checkedIndex === index;
319
+ const isChecked = checked ?? (selfManaged ? panelChecked : undefined);
320
+ const isCheckbox = !!multiple && typeof isChecked === "boolean";
321
+ useRegisterFluidHoverItem2(registerItem, index, internalRef);
322
+ useEffect2(() => {
323
+ hasMounted.current = true;
324
+ }, []);
325
+ const isActive = activeIndex === index;
326
+ const skipAnimation = !hasMounted.current;
327
+ const sizeClasses = useSize2();
328
+ const mergeRef = (node) => {
329
+ internalRef.current = node;
330
+ if (typeof ref === "function")
331
+ ref(node);
332
+ else if (ref)
333
+ ref.current = node;
334
+ };
335
+ const activate = () => {
336
+ onSelect?.();
337
+ if (selfManaged)
338
+ toggleIndex?.(sourceIndex ?? index);
339
+ };
340
+ const handleActivate = disabled ? undefined : (e) => {
341
+ onClick?.(e);
342
+ activate();
343
+ };
344
+ const itemClassName = cn2(`relative z-10 flex ${sizeClasses.control} shrink-0 items-center ${sizeClasses.gap} ${shape.item} ${sizeClasses.itemPx} cursor-pointer outline-none`, disabled && "opacity-50 pointer-events-none", className);
345
+ const content = /* @__PURE__ */ jsxs2(Fragment, {
346
+ children: [
347
+ Icon && /* @__PURE__ */ jsxs2("span", {
348
+ className: "inline-grid",
349
+ children: [
350
+ /* @__PURE__ */ jsx2("span", {
351
+ className: "col-start-1 row-start-1 invisible",
352
+ children: /* @__PURE__ */ jsx2(Icon, {
353
+ size: sizeClasses.icon,
354
+ strokeWidth: 2
355
+ })
356
+ }),
357
+ /* @__PURE__ */ jsx2(Icon, {
358
+ size: sizeClasses.icon,
359
+ strokeWidth: isActive || isChecked ? 2 : 1.5,
360
+ className: cn2("col-start-1 row-start-1 transition-[color,stroke-width] duration-fast", isActive || isChecked ? "text-foreground" : "text-muted-foreground")
361
+ })
362
+ ]
363
+ }),
364
+ /* @__PURE__ */ jsxs2("span", {
365
+ className: cn2("inline-grid flex-1", sizeClasses.text),
366
+ children: [
367
+ /* @__PURE__ */ jsx2("span", {
368
+ className: "col-start-1 row-start-1 invisible [text-box:trim-both_cap_alphabetic] weight-semibold",
369
+ "aria-hidden": "true",
370
+ children: label
371
+ }),
372
+ /* @__PURE__ */ jsx2("span", {
373
+ className: cn2("col-start-1 row-start-1 transition-[color,font-variation-settings] duration-fast [text-box:trim-both_cap_alphabetic]", isActive || isChecked ? "text-foreground" : "text-muted-foreground", isChecked ? "weight-semibold" : "weight-normal"),
374
+ children: label
375
+ })
376
+ ]
377
+ }),
378
+ /* @__PURE__ */ jsx2(AnimatePresence, {
379
+ children: isChecked && /* @__PURE__ */ jsx2(motion.svg, {
380
+ width: sizeClasses.icon,
381
+ height: sizeClasses.icon,
382
+ viewBox: "0 0 24 24",
383
+ fill: "none",
384
+ stroke: "currentColor",
385
+ strokeWidth: 2,
386
+ strokeLinecap: "round",
387
+ strokeLinejoin: "round",
388
+ className: "text-foreground shrink-0",
389
+ initial: { opacity: 1 },
390
+ animate: { opacity: 1 },
391
+ exit: { opacity: 1 },
392
+ children: /* @__PURE__ */ jsx2(motion.path, {
393
+ d: "M4 12L9 17L20 6",
394
+ initial: { pathLength: skipAnimation ? 1 : 0 },
395
+ animate: {
396
+ pathLength: 1,
397
+ transition: { duration: spring2.fast.duration, ease: "easeOut" }
398
+ },
399
+ exit: {
400
+ pathLength: 0,
401
+ transition: { duration: 0.04, ease: "easeIn" }
402
+ }
403
+ })
404
+ }, "check")
405
+ })
406
+ ]
407
+ });
408
+ if (renderMenuItem) {
409
+ return renderMenuItem({
410
+ radio: !isCheckbox && typeof isChecked === "boolean",
411
+ checkbox: isCheckbox,
412
+ checked: isChecked,
413
+ value: index,
414
+ disabled,
415
+ label,
416
+ closeOnClick: closeOnClick ?? !multiple,
417
+ onClick: handleActivate,
418
+ element: /* @__PURE__ */ jsx2("div", {
419
+ ref: mergeRef,
420
+ "data-fluid-hover-index": index,
421
+ "aria-label": label,
422
+ className: itemClassName,
423
+ ...props
424
+ }),
425
+ children: content
426
+ });
427
+ }
428
+ return /* @__PURE__ */ jsx2("div", {
429
+ ref: mergeRef,
430
+ "data-fluid-hover-index": index,
431
+ tabIndex: !disabled && index === (checkedIndex ?? checkedIndices?.[0] ?? 0) ? 0 : -1,
432
+ role: isCheckbox ? "menuitemcheckbox" : typeof isChecked === "boolean" ? "menuitemradio" : "menuitem",
433
+ "aria-checked": typeof isChecked === "boolean" ? isChecked : undefined,
434
+ "aria-disabled": disabled || undefined,
435
+ "aria-label": label,
436
+ onClick: handleActivate,
437
+ onKeyDown: (e) => {
438
+ if (disabled)
439
+ return;
440
+ if (e.key === " " || e.key === "Enter") {
441
+ e.preventDefault();
442
+ activate();
443
+ }
444
+ },
445
+ className: itemClassName,
446
+ ...props,
447
+ children: content
448
+ });
449
+ });
450
+ MenuItem2.displayName = "MenuItem";
451
+
452
+ // components/overlays/dropdown/index.tsx
453
+ import { jsx as jsx3, jsxs as jsxs3 } from "react/jsx-runtime";
454
+ var shape2 = shapeMap.rounded;
455
+ var NONE = -1;
456
+ var NO_INDICES = [];
457
+ var NO_RECTS = [];
458
+ function usePanelSelection({
459
+ checkedIndex,
460
+ defaultCheckedIndex,
461
+ onCheckedIndexChange,
462
+ checkedIndices,
463
+ defaultCheckedIndices,
464
+ onCheckedIndicesChange
465
+ }, sourceOf, filtering) {
466
+ const [single, setSingle] = useControllableState(defaultCheckedIndex === undefined ? checkedIndex ?? NONE : undefined, defaultCheckedIndex ?? NONE, (index) => onCheckedIndexChange?.(index === NONE ? undefined : index));
467
+ const [many, setMany] = useControllableState(defaultCheckedIndices === undefined ? checkedIndices ?? NO_INDICES : undefined, defaultCheckedIndices ?? NO_INDICES, (indices) => onCheckedIndicesChange?.(indices));
468
+ const multiple = checkedIndices != null || defaultCheckedIndices != null;
469
+ const selfManaged = defaultCheckedIndex !== undefined || defaultCheckedIndices !== undefined;
470
+ const toggleIndex = useCallback2((source) => {
471
+ if (multiple) {
472
+ setMany((prev) => prev.includes(source) ? prev.filter((i) => i !== source) : [...prev, source].sort((a, b) => a - b));
473
+ return;
474
+ }
475
+ setSingle(source);
476
+ }, [multiple, setMany, setSingle]);
477
+ const renderedIndex = useMemo2(() => {
478
+ if (single === NONE)
479
+ return;
480
+ const i = filtering ? sourceOf.indexOf(single) : single;
481
+ return i === -1 ? undefined : i;
482
+ }, [single, filtering, sourceOf]);
483
+ const renderedIndices = useMemo2(() => {
484
+ if (!multiple)
485
+ return;
486
+ if (!filtering)
487
+ return many;
488
+ return many.map((s) => sourceOf.indexOf(s)).filter((i) => i !== -1);
489
+ }, [multiple, many, filtering, sourceOf]);
490
+ return {
491
+ checkedIndex: renderedIndex,
492
+ checkedIndices: renderedIndices,
493
+ multiple,
494
+ selfManaged,
495
+ toggleIndex
496
+ };
497
+ }
498
+ function usePanelRows(children) {
499
+ const [query, setQuery] = useState2("");
500
+ const filtering = useMemo2(() => Children.toArray(children).some((child) => isValidElement(child) && child.type === DropdownSearch2 && child.props.filter), [children]);
501
+ const filterCtx = useMemo2(() => ({ query, setQuery }), [query]);
502
+ const { content, sourceOf } = useMemo2(() => {
503
+ if (!filtering)
504
+ return { content: children, sourceOf: NO_INDICES };
505
+ const needle = query.trim().toLowerCase();
506
+ const rendered = [];
507
+ const empties = [];
508
+ const sources = [];
509
+ for (const child of Children.toArray(children)) {
510
+ if (!isValidElement(child)) {
511
+ rendered.push(child);
512
+ continue;
513
+ }
514
+ if (child.type === DropdownEmpty2) {
515
+ empties.push(child);
516
+ continue;
517
+ }
518
+ const rowProps = child.props;
519
+ if (typeof rowProps.label !== "string" || typeof rowProps.index !== "number") {
520
+ rendered.push(child);
521
+ continue;
522
+ }
523
+ if (needle && !rowProps.label.toLowerCase().includes(needle))
524
+ continue;
525
+ rendered.push(cloneElement(child, {
526
+ index: sources.length,
527
+ sourceIndex: rowProps.index
528
+ }));
529
+ sources.push(rowProps.index);
530
+ }
531
+ if (sources.length === 0)
532
+ rendered.push(...empties);
533
+ return { content: rendered, sourceOf: sources };
534
+ }, [children, filtering, query]);
535
+ return { content, sourceOf, filtering, filterCtx: filtering ? filterCtx : null };
536
+ }
537
+ var Dropdown2 = forwardRef3(({
538
+ children,
539
+ checkedIndex,
540
+ defaultCheckedIndex,
541
+ onCheckedIndexChange,
542
+ checkedIndices,
543
+ defaultCheckedIndices,
544
+ onCheckedIndicesChange,
545
+ size,
546
+ className,
547
+ ...props
548
+ }, ref) => {
549
+ const containerRef = useRef3(null);
550
+ const hover = useFluidHover2(containerRef, { isItemDisabled: isDisabledRow });
551
+ const { activeIndex, setActiveIndex, itemRects, handlers, registerItem } = hover;
552
+ const [focusedIndex, setFocusedIndex] = useState2(null);
553
+ const rows = usePanelRows(children);
554
+ const selection = usePanelSelection({
555
+ checkedIndex,
556
+ defaultCheckedIndex,
557
+ onCheckedIndexChange,
558
+ checkedIndices,
559
+ defaultCheckedIndices,
560
+ onCheckedIndicesChange
561
+ }, rows.sourceOf, rows.filtering);
562
+ const multiple = selection.multiple;
563
+ const checkedRect = !multiple && selection.checkedIndex != null ? itemRects[selection.checkedIndex] : null;
564
+ const focusRect = focusedIndex !== null ? itemRects[focusedIndex] : null;
565
+ const runs = useSelectionRuns(selection.checkedIndices ?? NO_INDICES);
566
+ const blocks = useMergeSplitBlocks(runs, itemRects, shape2.bgRadius);
567
+ const panelCtx = useMemo2(() => ({
568
+ registerItem,
569
+ activeIndex,
570
+ checkedIndex: selection.checkedIndex,
571
+ multiple,
572
+ checkedIndices: selection.checkedIndices,
573
+ selfManaged: selection.selfManaged,
574
+ toggleIndex: selection.toggleIndex
575
+ }), [
576
+ registerItem,
577
+ activeIndex,
578
+ selection.checkedIndex,
579
+ multiple,
580
+ selection.checkedIndices,
581
+ selection.selfManaged,
582
+ selection.toggleIndex
583
+ ]);
584
+ const panel = /* @__PURE__ */ jsx3(DropdownContext.Provider, {
585
+ value: panelCtx,
586
+ children: /* @__PURE__ */ jsx3(DropdownFilterContext.Provider, {
587
+ value: rows.filterCtx,
588
+ children: /* @__PURE__ */ jsxs3(Elevated2, {
589
+ offset: 2,
590
+ shadowLevel: 3,
591
+ ref: (node) => {
592
+ containerRef.current = node;
593
+ if (typeof ref === "function")
594
+ ref(node);
595
+ else if (ref)
596
+ ref.current = node;
597
+ },
598
+ onMouseEnter: handlers.onMouseEnter,
599
+ onMouseMove: handlers.onMouseMove,
600
+ onMouseLeave: handlers.onMouseLeave,
601
+ onClick: handlers.onClick,
602
+ onFocus: (e) => {
603
+ const indexAttr = e.target.closest("[data-fluid-hover-index]")?.getAttribute("data-fluid-hover-index");
604
+ if (indexAttr != null) {
605
+ const idx = Number(indexAttr);
606
+ setActiveIndex(idx);
607
+ setFocusedIndex(e.target.matches(":focus-visible") ? idx : null);
608
+ }
609
+ },
610
+ onBlur: (e) => {
611
+ if (containerRef.current?.contains(e.relatedTarget))
612
+ return;
613
+ setFocusedIndex(null);
614
+ setActiveIndex(null);
615
+ },
616
+ onKeyDown: (e) => {
617
+ const items = Array.from(containerRef.current?.querySelectorAll('[role="menuitem"], [role="menuitemradio"], [role="menuitemcheckbox"]') ?? []);
618
+ const currentIdx = items.indexOf(e.target);
619
+ if (currentIdx === -1)
620
+ return;
621
+ if (["ArrowDown", "ArrowUp", "ArrowRight", "ArrowLeft"].includes(e.key)) {
622
+ e.preventDefault();
623
+ const next = ["ArrowDown", "ArrowRight"].includes(e.key) ? (currentIdx + 1) % items.length : (currentIdx - 1 + items.length) % items.length;
624
+ items[next]?.focus();
625
+ } else if (e.key === "Home") {
626
+ e.preventDefault();
627
+ items[0]?.focus();
628
+ } else if (e.key === "End") {
629
+ e.preventDefault();
630
+ items[items.length - 1]?.focus();
631
+ }
632
+ },
633
+ role: "group",
634
+ className: cn2(`relative flex flex-col w-72 max-w-full p-1 select-none`, className),
635
+ ...props,
636
+ children: [
637
+ multiple && /* @__PURE__ */ jsx3(SelectionBackgrounds, {
638
+ blocks
639
+ }),
640
+ /* @__PURE__ */ jsx3(AnimatePresence2, {
641
+ children: checkedRect && /* @__PURE__ */ jsx3(motion2.div, {
642
+ className: `absolute ${shape2.bg} bg-active pointer-events-none`,
643
+ initial: false,
644
+ animate: {
645
+ top: checkedRect.top,
646
+ left: checkedRect.left,
647
+ width: checkedRect.width,
648
+ height: checkedRect.height,
649
+ opacity: 1
650
+ },
651
+ exit: { opacity: 0, transition: spring2.moderate.exit },
652
+ transition: {
653
+ ...spring2.moderate,
654
+ opacity: { duration: spring2.fast.duration }
655
+ }
656
+ })
657
+ }),
658
+ /* @__PURE__ */ jsx3(FluidHoverHighlight2, {
659
+ hover,
660
+ from: checkedRect,
661
+ className: shape2.bg
662
+ }),
663
+ /* @__PURE__ */ jsx3(AnimatePresence2, {
664
+ children: focusRect && /* @__PURE__ */ jsx3(motion2.div, {
665
+ className: `absolute ${shape2.focusRing} pointer-events-none z-20 border border-focus-ring`,
666
+ initial: false,
667
+ animate: {
668
+ left: focusRect.left - 2,
669
+ top: focusRect.top - 2,
670
+ width: focusRect.width + 4,
671
+ height: focusRect.height + 4
672
+ },
673
+ exit: { opacity: 0, transition: spring2.fast.exit },
674
+ transition: {
675
+ ...spring2.fast,
676
+ opacity: { duration: spring2.fast.duration }
677
+ }
678
+ })
679
+ }),
680
+ rows.content
681
+ ]
682
+ })
683
+ })
684
+ });
685
+ return size ? /* @__PURE__ */ jsx3(SizeProvider2, {
686
+ size,
687
+ children: panel
688
+ }) : panel;
689
+ });
690
+ Dropdown2.displayName = "Dropdown";
691
+ var DropdownMenuContext = createContext3(null);
692
+ function useDropdownMenuContext() {
693
+ const ctx = useContext3(DropdownMenuContext);
694
+ if (!ctx)
695
+ throw new Error("DropdownMenu compound components must be inside <DropdownMenu>");
696
+ return ctx;
697
+ }
698
+ function DropdownMenu2({
699
+ children,
700
+ open: openProp,
701
+ defaultOpen = false,
702
+ onOpenChange,
703
+ disabled = false,
704
+ size
705
+ }) {
706
+ const [internalOpen, setInternalOpen] = useState2(defaultOpen);
707
+ const open = openProp !== undefined ? openProp : internalOpen;
708
+ const { origin, capture } = useMorphOrigin();
709
+ const handleOpenChange = useCallback2((next, details) => {
710
+ if (next)
711
+ capture(details);
712
+ if (openProp === undefined)
713
+ setInternalOpen(next);
714
+ onOpenChange?.(next);
715
+ }, [openProp, onOpenChange, capture]);
716
+ const ctx = useMemo2(() => ({ open, origin }), [open, origin]);
717
+ const root = /* @__PURE__ */ jsx3(DropdownMenuContext.Provider, {
718
+ value: ctx,
719
+ children: /* @__PURE__ */ jsx3(Menu.Root, {
720
+ open,
721
+ onOpenChange: handleOpenChange,
722
+ disabled,
723
+ modal: false,
724
+ children
725
+ })
726
+ });
727
+ return size ? /* @__PURE__ */ jsx3(SizeProvider2, {
728
+ size,
729
+ children: root
730
+ }) : root;
731
+ }
732
+ DropdownMenu2.displayName = "DropdownMenu";
733
+ var DropdownTrigger2 = Menu.Trigger;
734
+ var DropdownContent2 = forwardRef3(({
735
+ className,
736
+ children,
737
+ checkedIndex,
738
+ defaultCheckedIndex,
739
+ onCheckedIndexChange,
740
+ checkedIndices,
741
+ defaultCheckedIndices,
742
+ onCheckedIndicesChange,
743
+ side = "bottom",
744
+ align = "start",
745
+ sideOffset = 6,
746
+ from,
747
+ effect,
748
+ hideSource,
749
+ tier = "moderate"
750
+ }, ref) => {
751
+ const { open, origin } = useDropdownMenuContext();
752
+ const morph = useMorph(open, origin, { from, effect, hideSource, tier });
753
+ useImperativeHandle(ref, () => morph.popup, [morph.popup]);
754
+ const level = Math.min(useSurface2() + 2, 8);
755
+ const containerRef = useRef3(null);
756
+ const hover = useFluidHover2(containerRef, { isItemDisabled: isDisabledRow });
757
+ const { activeIndex, setActiveIndex, itemRects, handlers, registerItem, remeasure } = hover;
758
+ const rows = usePanelRows(children);
759
+ const selection = usePanelSelection({
760
+ checkedIndex,
761
+ defaultCheckedIndex,
762
+ onCheckedIndexChange,
763
+ checkedIndices,
764
+ defaultCheckedIndices,
765
+ onCheckedIndicesChange
766
+ }, rows.sourceOf, rows.filtering);
767
+ const {
768
+ host: searchHost,
769
+ hasSearch,
770
+ searchMounted,
771
+ onKeyDownCapture: redirectTypingToSearch,
772
+ isSearchField,
773
+ highlightFirst
774
+ } = useDropdownSearchHost(open, { containerRef, setActiveIndex });
775
+ useEffect3(() => {
776
+ if (!open)
777
+ return;
778
+ let inner;
779
+ const outer = requestAnimationFrame(() => {
780
+ inner = requestAnimationFrame(() => {
781
+ if (hasSearch())
782
+ return;
783
+ const container = containerRef.current;
784
+ if (!container || container.contains(document.activeElement) && document.activeElement !== container)
785
+ return;
786
+ const first = container.querySelector('[role="menuitem"]:not([aria-disabled="true"]), [role="menuitemradio"]:not([aria-disabled="true"]), [role="menuitemcheckbox"]:not([aria-disabled="true"])');
787
+ first?.focus();
788
+ });
789
+ });
790
+ return () => {
791
+ cancelAnimationFrame(outer);
792
+ if (inner !== undefined)
793
+ cancelAnimationFrame(inner);
794
+ };
795
+ }, [open, hasSearch]);
796
+ useEffect3(() => {
797
+ if (!open)
798
+ return;
799
+ remeasure();
800
+ }, [open, remeasure]);
801
+ const multiple = selection.multiple;
802
+ const checkedRect = !multiple && selection.checkedIndex != null ? itemRects[selection.checkedIndex] : null;
803
+ const runs = useSelectionRuns(selection.checkedIndices ?? NO_INDICES);
804
+ const blocks = useMergeSplitBlocks(runs, open ? itemRects : NO_RECTS, shape2.bgRadius);
805
+ const renderMenuItem = useCallback2(({
806
+ radio,
807
+ checkbox,
808
+ checked,
809
+ value,
810
+ disabled,
811
+ label,
812
+ closeOnClick,
813
+ onClick,
814
+ element,
815
+ children
816
+ }) => checkbox ? /* @__PURE__ */ jsx3(Menu.CheckboxItem, {
817
+ checked: !!checked,
818
+ disabled,
819
+ label,
820
+ closeOnClick,
821
+ onClick,
822
+ render: element,
823
+ children
824
+ }) : radio ? /* @__PURE__ */ jsx3(Menu.RadioItem, {
825
+ value,
826
+ disabled,
827
+ label,
828
+ closeOnClick,
829
+ onClick,
830
+ render: element,
831
+ children
832
+ }) : /* @__PURE__ */ jsx3(Menu.Item, {
833
+ disabled,
834
+ label,
835
+ closeOnClick,
836
+ onClick,
837
+ render: element,
838
+ children
839
+ }), []);
840
+ const contentCtx = useMemo2(() => ({
841
+ registerItem,
842
+ activeIndex,
843
+ checkedIndex: selection.checkedIndex,
844
+ multiple,
845
+ checkedIndices: selection.checkedIndices,
846
+ inMenu: true,
847
+ renderMenuItem,
848
+ selfManaged: selection.selfManaged,
849
+ toggleIndex: selection.toggleIndex
850
+ }), [
851
+ registerItem,
852
+ activeIndex,
853
+ selection.checkedIndex,
854
+ multiple,
855
+ selection.checkedIndices,
856
+ selection.selfManaged,
857
+ selection.toggleIndex,
858
+ renderMenuItem
859
+ ]);
860
+ return /* @__PURE__ */ jsx3(Menu.Portal, {
861
+ children: /* @__PURE__ */ jsx3(Menu.Positioner, {
862
+ side,
863
+ align,
864
+ sideOffset: opensInPlace({ effect, hideSource }) ? inPlaceOffset : sideOffset,
865
+ className: "z-50 outline-none",
866
+ children: /* @__PURE__ */ jsx3(DropdownContext.Provider, {
867
+ value: contentCtx,
868
+ children: /* @__PURE__ */ jsx3(DropdownFilterContext.Provider, {
869
+ value: rows.filterCtx,
870
+ children: /* @__PURE__ */ jsx3(DropdownSearchHostContext.Provider, {
871
+ value: searchHost,
872
+ children: /* @__PURE__ */ jsx3(Menu.Popup, {
873
+ ref: morph.popupRef,
874
+ onKeyDownCapture: redirectTypingToSearch,
875
+ onMouseEnter: handlers.onMouseEnter,
876
+ onMouseMove: handlers.onMouseMove,
877
+ onClick: handlers.onClick,
878
+ onMouseLeave: () => {
879
+ handlers.onMouseLeave();
880
+ if (isSearchField(document.activeElement))
881
+ highlightFirst();
882
+ },
883
+ onFocus: (e) => {
884
+ const indexAttr = e.target.closest("[data-fluid-hover-index]")?.getAttribute("data-fluid-hover-index");
885
+ if (indexAttr != null) {
886
+ setActiveIndex(Number(indexAttr));
887
+ } else if (isSearchField(e.target)) {
888
+ highlightFirst();
889
+ } else if (e.target !== e.currentTarget) {
890
+ setActiveIndex(null);
891
+ }
892
+ },
893
+ onBlur: (e) => {
894
+ if (e.currentTarget.contains(e.relatedTarget))
895
+ return;
896
+ setActiveIndex(null);
897
+ },
898
+ className: "relative select-none outline-none",
899
+ children: /* @__PURE__ */ jsx3(SurfaceProvider2, {
900
+ value: level,
901
+ children: /* @__PURE__ */ jsx3(MorphSurface, {
902
+ morph,
903
+ bg: SURFACE_BG[level],
904
+ shadow: SURFACE_SHADOW[3],
905
+ radius: shape2.container,
906
+ className: cn2(`flex flex-col w-72 max-w-full min-w-[var(--anchor-width)] max-h-[min(480px,var(--available-height))] overflow-hidden ${shape2.container}`, className),
907
+ children: /* @__PURE__ */ jsx3(ScrollArea2, {
908
+ className: popupScrollAreaClass,
909
+ viewportClassName: cn2(popupViewportClass, !searchMounted && "scroll-fade"),
910
+ children: /* @__PURE__ */ jsxs3("div", {
911
+ ref: containerRef,
912
+ className: "relative flex flex-col p-1",
913
+ children: [
914
+ multiple && /* @__PURE__ */ jsx3(SelectionBackgrounds, {
915
+ blocks
916
+ }),
917
+ /* @__PURE__ */ jsx3(AnimatePresence2, {
918
+ children: checkedRect && /* @__PURE__ */ jsx3(motion2.div, {
919
+ className: `absolute ${shape2.bg} bg-active pointer-events-none`,
920
+ initial: false,
921
+ animate: {
922
+ top: checkedRect.top,
923
+ left: checkedRect.left,
924
+ width: checkedRect.width,
925
+ height: checkedRect.height,
926
+ opacity: 1
927
+ },
928
+ exit: { opacity: 0, transition: spring2.moderate.exit },
929
+ transition: {
930
+ ...spring2.moderate,
931
+ opacity: { duration: spring2.fast.duration }
932
+ }
933
+ })
934
+ }),
935
+ /* @__PURE__ */ jsx3(FluidHoverHighlight2, {
936
+ hover,
937
+ from: checkedRect,
938
+ className: shape2.bg
939
+ }),
940
+ /* @__PURE__ */ jsx3(Menu.RadioGroup, {
941
+ value: selection.checkedIndex ?? null,
942
+ className: "contents",
943
+ children: rows.content
944
+ })
945
+ ]
946
+ })
947
+ })
948
+ })
949
+ })
950
+ })
951
+ })
952
+ })
953
+ })
954
+ })
955
+ });
956
+ });
957
+ DropdownContent2.displayName = "DropdownContent";
958
+ var DropdownLabel2 = forwardRef3(({ className, ...props }, ref) => {
959
+ const compact = useSize2().variant === "compact";
960
+ return /* @__PURE__ */ jsx3("div", {
961
+ ref,
962
+ className: cn2("px-2 py-1.5 shrink-0 text-muted-foreground", compact ? "text-caption-compact" : "text-caption", className),
963
+ ...props
964
+ });
965
+ });
966
+ DropdownLabel2.displayName = "DropdownLabel";
967
+ var DropdownSeparator2 = forwardRef3(({ className, ...props }, ref) => /* @__PURE__ */ jsx3("div", {
968
+ ref,
969
+ role: "separator",
970
+ className: cn2("my-1 -mx-1 h-px shrink-0 bg-border/60", className),
971
+ ...props
972
+ }));
973
+ DropdownSeparator2.displayName = "DropdownSeparator";
974
+ Object.assign(Dropdown2, {
975
+ Menu: DropdownMenu2,
976
+ Trigger: DropdownTrigger2,
977
+ Content: DropdownContent2,
978
+ Item: MenuItem2,
979
+ Label: DropdownLabel2,
980
+ Separator: DropdownSeparator2,
981
+ Search: DropdownSearch2,
982
+ Empty: DropdownEmpty2
983
+ });
984
+ var dropdown_default = Dropdown2;
985
+
986
+ export { DropdownSearch2, DropdownEmpty2, DropdownContext, useDropdown2, useDropdownMaybe2, MenuItem2, Dropdown2, DropdownMenu2, DropdownTrigger2, DropdownContent2, DropdownLabel2, DropdownSeparator2, dropdown_default };