@epilot/zenith-react 0.2.0-next.3 → 0.2.0-next.4

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 (269) hide show
  1. package/README.md +25 -0
  2. package/codemods/README.md +168 -0
  3. package/codemods/migrate/base-elements/accordion.ts +132 -0
  4. package/codemods/migrate/base-elements/alert.ts +81 -0
  5. package/codemods/migrate/base-elements/avatar.ts +116 -0
  6. package/codemods/migrate/base-elements/button.ts +188 -0
  7. package/codemods/migrate/base-elements/checkbox.ts +17 -0
  8. package/codemods/migrate/base-elements/chip.ts +87 -0
  9. package/codemods/migrate/base-elements/chip360.ts +162 -0
  10. package/codemods/migrate/base-elements/circular-progress.ts +73 -0
  11. package/codemods/migrate/base-elements/dialog.ts +323 -0
  12. package/codemods/migrate/base-elements/divider.ts +61 -0
  13. package/codemods/migrate/base-elements/feedback-message.ts +95 -0
  14. package/codemods/migrate/base-elements/icon-button.ts +203 -0
  15. package/codemods/migrate/base-elements/index.ts +55 -0
  16. package/codemods/migrate/base-elements/mui-props.ts +29 -0
  17. package/codemods/migrate/base-elements/notification.ts +98 -0
  18. package/codemods/migrate/base-elements/paper.ts +78 -0
  19. package/codemods/migrate/base-elements/select.ts +328 -0
  20. package/codemods/migrate/base-elements/shared.ts +910 -0
  21. package/codemods/migrate/base-elements/skeleton.ts +83 -0
  22. package/codemods/migrate/base-elements/switch.ts +19 -0
  23. package/codemods/migrate/base-elements/tabs.ts +222 -0
  24. package/codemods/migrate/base-elements/text-field.ts +425 -0
  25. package/codemods/migrate/base-elements/toggle-button.ts +185 -0
  26. package/codemods/migrate/base-elements/tooltip.ts +231 -0
  27. package/codemods/migrate/base-elements/typography.ts +247 -0
  28. package/codemods/migrate/base-elements/unsupported.ts +277 -0
  29. package/codemods/migrate/from-base-elements.ts +20 -0
  30. package/codemods/migrate/from-volt.ts +20 -0
  31. package/codemods/migrate/lib/imports.ts +399 -0
  32. package/codemods/migrate/lib/jsx.ts +313 -0
  33. package/codemods/migrate/lib/run-migration.ts +528 -0
  34. package/codemods/migrate/lib/source.ts +6 -0
  35. package/codemods/migrate/lib/todo.ts +107 -0
  36. package/codemods/migrate/lib/types.ts +114 -0
  37. package/codemods/migrate/volt/class-helpers.ts +37 -0
  38. package/codemods/migrate/volt/index.ts +18 -0
  39. package/codemods/migrate/volt/pagination.ts +26 -0
  40. package/codemods/migrate/volt/same-name.ts +293 -0
  41. package/codemods/migrate/volt/stylesheets.ts +18 -0
  42. package/codemods/migrate/volt/tanstack-types.ts +20 -0
  43. package/codemods/radix-to-base-ui.ts +389 -0
  44. package/dist/_virtual/_zenith-runtime-family_accordion.js +7 -0
  45. package/dist/_virtual/_zenith-runtime-family_accordion.js.map +1 -0
  46. package/dist/_virtual/_zenith-runtime-family_alert-dialog.js +7 -0
  47. package/dist/_virtual/_zenith-runtime-family_alert-dialog.js.map +1 -0
  48. package/dist/_virtual/_zenith-runtime-family_avatar.js +7 -0
  49. package/dist/_virtual/_zenith-runtime-family_avatar.js.map +1 -0
  50. package/dist/_virtual/_zenith-runtime-family_button.js +7 -0
  51. package/dist/_virtual/_zenith-runtime-family_button.js.map +1 -0
  52. package/dist/_virtual/_zenith-runtime-family_checkbox.js +7 -0
  53. package/dist/_virtual/_zenith-runtime-family_checkbox.js.map +1 -0
  54. package/dist/_virtual/_zenith-runtime-family_csp-provider.js +7 -0
  55. package/dist/_virtual/_zenith-runtime-family_csp-provider.js.map +1 -0
  56. package/dist/_virtual/_zenith-runtime-family_dialog.js +7 -0
  57. package/dist/_virtual/_zenith-runtime-family_dialog.js.map +1 -0
  58. package/dist/_virtual/_zenith-runtime-family_direction-provider.js +8 -0
  59. package/dist/_virtual/_zenith-runtime-family_direction-provider.js.map +1 -0
  60. package/dist/_virtual/_zenith-runtime-family_menu.js +7 -0
  61. package/dist/_virtual/_zenith-runtime-family_menu.js.map +1 -0
  62. package/dist/_virtual/_zenith-runtime-family_merge-props.js +11 -0
  63. package/dist/_virtual/_zenith-runtime-family_merge-props.js.map +1 -0
  64. package/dist/_virtual/_zenith-runtime-family_popover.js +7 -0
  65. package/dist/_virtual/_zenith-runtime-family_popover.js.map +1 -0
  66. package/dist/_virtual/_zenith-runtime-family_radio-group.js +7 -0
  67. package/dist/_virtual/_zenith-runtime-family_radio-group.js.map +1 -0
  68. package/dist/_virtual/_zenith-runtime-family_radio.js +7 -0
  69. package/dist/_virtual/_zenith-runtime-family_radio.js.map +1 -0
  70. package/dist/_virtual/_zenith-runtime-family_scroll-area.js +7 -0
  71. package/dist/_virtual/_zenith-runtime-family_scroll-area.js.map +1 -0
  72. package/dist/_virtual/_zenith-runtime-family_select.js +7 -0
  73. package/dist/_virtual/_zenith-runtime-family_select.js.map +1 -0
  74. package/dist/_virtual/_zenith-runtime-family_separator.js +7 -0
  75. package/dist/_virtual/_zenith-runtime-family_separator.js.map +1 -0
  76. package/dist/_virtual/_zenith-runtime-family_switch.js +7 -0
  77. package/dist/_virtual/_zenith-runtime-family_switch.js.map +1 -0
  78. package/dist/_virtual/_zenith-runtime-family_tabs.js +7 -0
  79. package/dist/_virtual/_zenith-runtime-family_tabs.js.map +1 -0
  80. package/dist/_virtual/_zenith-runtime-family_toast.js +7 -0
  81. package/dist/_virtual/_zenith-runtime-family_toast.js.map +1 -0
  82. package/dist/_virtual/_zenith-runtime-family_toggle-group.js +7 -0
  83. package/dist/_virtual/_zenith-runtime-family_toggle-group.js.map +1 -0
  84. package/dist/_virtual/_zenith-runtime-family_toggle.js +7 -0
  85. package/dist/_virtual/_zenith-runtime-family_toggle.js.map +1 -0
  86. package/dist/_virtual/_zenith-runtime-family_tooltip.js +7 -0
  87. package/dist/_virtual/_zenith-runtime-family_tooltip.js.map +1 -0
  88. package/dist/_virtual/_zenith-runtime-family_use-render.js +7 -0
  89. package/dist/_virtual/_zenith-runtime-family_use-render.js.map +1 -0
  90. package/dist/components/accordion/accordion.js +179 -96
  91. package/dist/components/accordion/accordion.js.map +1 -1
  92. package/dist/components/alert-dialog/alert-dialog.js +243 -206
  93. package/dist/components/alert-dialog/alert-dialog.js.map +1 -1
  94. package/dist/components/avatar/avatar.js +94 -82
  95. package/dist/components/avatar/avatar.js.map +1 -1
  96. package/dist/components/badge/badge.js +11 -11
  97. package/dist/components/breadcrumb/breadcrumb.js +69 -70
  98. package/dist/components/breadcrumb/breadcrumb.js.map +1 -1
  99. package/dist/components/button/button.js +119 -102
  100. package/dist/components/button/button.js.map +1 -1
  101. package/dist/components/checkbox/checkbox.js +68 -51
  102. package/dist/components/checkbox/checkbox.js.map +1 -1
  103. package/dist/components/date-range-picker/date-range-picker.js +100 -90
  104. package/dist/components/date-range-picker/date-range-picker.js.map +1 -1
  105. package/dist/components/date-time-picker/date-time-picker-input.js +118 -108
  106. package/dist/components/date-time-picker/date-time-picker-input.js.map +1 -1
  107. package/dist/components/date-time-picker/date-time-picker-panel.js +91 -94
  108. package/dist/components/date-time-picker/date-time-picker-panel.js.map +1 -1
  109. package/dist/components/dialog/dialog.js +238 -228
  110. package/dist/components/dialog/dialog.js.map +1 -1
  111. package/dist/components/drawer/drawer.js +259 -321
  112. package/dist/components/drawer/drawer.js.map +1 -1
  113. package/dist/components/dropdown-menu/dropdown-menu.js +533 -279
  114. package/dist/components/dropdown-menu/dropdown-menu.js.map +1 -1
  115. package/dist/components/field/field-combobox.js +87 -77
  116. package/dist/components/field/field-combobox.js.map +1 -1
  117. package/dist/components/list/list-sortable.js +104 -0
  118. package/dist/components/list/list-sortable.js.map +1 -0
  119. package/dist/components/list/list.js +246 -324
  120. package/dist/components/list/list.js.map +1 -1
  121. package/dist/components/option-card/option-card.js +121 -117
  122. package/dist/components/option-card/option-card.js.map +1 -1
  123. package/dist/components/pill/pill.js +7 -7
  124. package/dist/components/popover/popover.js +223 -127
  125. package/dist/components/popover/popover.js.map +1 -1
  126. package/dist/components/radio/radio-group-base.js +54 -0
  127. package/dist/components/radio/radio-group-base.js.map +1 -0
  128. package/dist/components/radio/radio.js +71 -60
  129. package/dist/components/radio/radio.js.map +1 -1
  130. package/dist/components/scroll-area/scroll-area.js +142 -108
  131. package/dist/components/scroll-area/scroll-area.js.map +1 -1
  132. package/dist/components/scroll-overflow/scroll-overflow.js +156 -127
  133. package/dist/components/scroll-overflow/scroll-overflow.js.map +1 -1
  134. package/dist/components/segmented-control/segmented-control.js +93 -81
  135. package/dist/components/segmented-control/segmented-control.js.map +1 -1
  136. package/dist/components/select/select.js +485 -310
  137. package/dist/components/select/select.js.map +1 -1
  138. package/dist/components/separator/separator.js.map +1 -1
  139. package/dist/components/slot/compose-as-child.js +15 -12
  140. package/dist/components/slot/compose-as-child.js.map +1 -1
  141. package/dist/components/switch/switch.js +75 -68
  142. package/dist/components/switch/switch.js.map +1 -1
  143. package/dist/components/table/table-pagination.js +212 -175
  144. package/dist/components/table/table-pagination.js.map +1 -1
  145. package/dist/components/tabs/tabs.js +193 -190
  146. package/dist/components/tabs/tabs.js.map +1 -1
  147. package/dist/components/toast/toast.js +610 -148
  148. package/dist/components/toast/toast.js.map +1 -1
  149. package/dist/components/toggle/toggle-group.js +143 -32
  150. package/dist/components/toggle/toggle-group.js.map +1 -1
  151. package/dist/components/toggle/toggle.js +83 -53
  152. package/dist/components/toggle/toggle.js.map +1 -1
  153. package/dist/components/tooltip/tooltip.js +298 -138
  154. package/dist/components/tooltip/tooltip.js.map +1 -1
  155. package/dist/index.d.ts +2335 -2129
  156. package/dist/index.js +24 -23
  157. package/dist/list/sortable/index.d.ts +29 -0
  158. package/dist/list/sortable/index.js +5 -0
  159. package/dist/{_virtual → list/sortable}/index.js.map +1 -1
  160. package/dist/packages/tokens/dist/delivery/index.js +10 -10
  161. package/dist/packages/tokens/dist/delivery/index.js.map +1 -1
  162. package/dist/packages/tokens/dist/generated/core.generated.js +6 -15
  163. package/dist/packages/tokens/dist/generated/core.generated.js.map +1 -1
  164. package/dist/packages/tokens/dist/generated/palette.generated.js +4 -5
  165. package/dist/packages/tokens/dist/generated/palette.generated.js.map +1 -1
  166. package/dist/packages/tokens/dist/generated/palette.meta.generated.js +5 -0
  167. package/dist/packages/tokens/dist/generated/palette.meta.generated.js.map +1 -0
  168. package/dist/packages/tokens/dist/install.js +40 -17
  169. package/dist/packages/tokens/dist/install.js.map +1 -1
  170. package/dist/renderer/runtime-contract.generated.js +8 -0
  171. package/dist/renderer/runtime-contract.generated.js.map +1 -0
  172. package/dist/renderer/served.js +34 -0
  173. package/dist/renderer/served.js.map +1 -0
  174. package/dist/tokens/core.meta.generated.js +2 -2
  175. package/dist/tokens/core.meta.generated.js.map +1 -1
  176. package/dist/tokens/index.d.ts +1028 -1028
  177. package/dist/tokens/index.js +863 -863
  178. package/dist/tokens/index.js.map +1 -1
  179. package/dist/tokens/palette.meta.generated.js +5 -0
  180. package/dist/tokens/palette.meta.generated.js.map +1 -0
  181. package/dist/tokens.json +1 -1
  182. package/dist/vendor/.bun/@radix-ui_react-dialog@1.1.15_2b23df507bdda662/vendor/@radix-ui/react-dialog/dist/index.js +57 -62
  183. package/dist/vendor/.bun/@radix-ui_react-dialog@1.1.15_2b23df507bdda662/vendor/@radix-ui/react-dialog/dist/index.js.map +1 -1
  184. package/dist/vendor/.bun/@radix-ui_react-slot@1.2.3_0ac650c021fb1b59/vendor/@radix-ui/react-slot/dist/index.js +32 -38
  185. package/dist/vendor/.bun/@radix-ui_react-slot@1.2.3_0ac650c021fb1b59/vendor/@radix-ui/react-slot/dist/index.js.map +1 -1
  186. package/package.json +28 -21
  187. package/scripts/migration-diagnostics-core.mjs +18 -10
  188. package/scripts/migration-diagnostics.mjs +31 -8
  189. package/dist/_virtual/index.js +0 -6
  190. package/dist/_virtual/index2.js +0 -5
  191. package/dist/_virtual/index2.js.map +0 -1
  192. package/dist/_virtual/use-sync-external-store-shim.development.js +0 -5
  193. package/dist/_virtual/use-sync-external-store-shim.development.js.map +0 -1
  194. package/dist/_virtual/use-sync-external-store-shim.production.js +0 -5
  195. package/dist/_virtual/use-sync-external-store-shim.production.js.map +0 -1
  196. package/dist/tokens/palette.generated.js +0 -5
  197. package/dist/tokens/palette.generated.js.map +0 -1
  198. package/dist/vendor/.bun/@floating-ui_core@1.8.0/vendor/@floating-ui/core/dist/floating-ui.core.js +0 -512
  199. package/dist/vendor/.bun/@floating-ui_core@1.8.0/vendor/@floating-ui/core/dist/floating-ui.core.js.map +0 -1
  200. package/dist/vendor/.bun/@floating-ui_dom@1.8.0/vendor/@floating-ui/dom/dist/floating-ui.dom.js +0 -396
  201. package/dist/vendor/.bun/@floating-ui_dom@1.8.0/vendor/@floating-ui/dom/dist/floating-ui.dom.js.map +0 -1
  202. package/dist/vendor/.bun/@floating-ui_react-dom@2.1.9_6f4b9a1cfb20c0ae/vendor/@floating-ui/react-dom/dist/floating-ui.react-dom.js +0 -233
  203. package/dist/vendor/.bun/@floating-ui_react-dom@2.1.9_6f4b9a1cfb20c0ae/vendor/@floating-ui/react-dom/dist/floating-ui.react-dom.js.map +0 -1
  204. package/dist/vendor/.bun/@floating-ui_utils@0.2.12/vendor/@floating-ui/utils/dist/floating-ui.utils.dom.js +0 -137
  205. package/dist/vendor/.bun/@floating-ui_utils@0.2.12/vendor/@floating-ui/utils/dist/floating-ui.utils.dom.js.map +0 -1
  206. package/dist/vendor/.bun/@floating-ui_utils@0.2.12/vendor/@floating-ui/utils/dist/floating-ui.utils.js +0 -129
  207. package/dist/vendor/.bun/@floating-ui_utils@0.2.12/vendor/@floating-ui/utils/dist/floating-ui.utils.js.map +0 -1
  208. package/dist/vendor/.bun/@radix-ui_number@1.1.1/vendor/@radix-ui/number/dist/index.js +0 -7
  209. package/dist/vendor/.bun/@radix-ui_number@1.1.1/vendor/@radix-ui/number/dist/index.js.map +0 -1
  210. package/dist/vendor/.bun/@radix-ui_react-accordion@1.2.12_2b23df507bdda662/vendor/@radix-ui/react-accordion/dist/index.js +0 -240
  211. package/dist/vendor/.bun/@radix-ui_react-accordion@1.2.12_2b23df507bdda662/vendor/@radix-ui/react-accordion/dist/index.js.map +0 -1
  212. package/dist/vendor/.bun/@radix-ui_react-alert-dialog@1.1.15_2b23df507bdda662/vendor/@radix-ui/react-alert-dialog/dist/index.js +0 -128
  213. package/dist/vendor/.bun/@radix-ui_react-alert-dialog@1.1.15_2b23df507bdda662/vendor/@radix-ui/react-alert-dialog/dist/index.js.map +0 -1
  214. package/dist/vendor/.bun/@radix-ui_react-arrow@1.1.7_2b23df507bdda662/vendor/@radix-ui/react-arrow/dist/index.js +0 -25
  215. package/dist/vendor/.bun/@radix-ui_react-arrow@1.1.7_2b23df507bdda662/vendor/@radix-ui/react-arrow/dist/index.js.map +0 -1
  216. package/dist/vendor/.bun/@radix-ui_react-avatar@1.1.10_2b23df507bdda662/vendor/@radix-ui/react-avatar/dist/index.js +0 -76
  217. package/dist/vendor/.bun/@radix-ui_react-avatar@1.1.10_2b23df507bdda662/vendor/@radix-ui/react-avatar/dist/index.js.map +0 -1
  218. package/dist/vendor/.bun/@radix-ui_react-checkbox@1.3.3_2b23df507bdda662/vendor/@radix-ui/react-checkbox/dist/index.js +0 -252
  219. package/dist/vendor/.bun/@radix-ui_react-checkbox@1.3.3_2b23df507bdda662/vendor/@radix-ui/react-checkbox/dist/index.js.map +0 -1
  220. package/dist/vendor/.bun/@radix-ui_react-collapsible@1.1.12_2b23df507bdda662/vendor/@radix-ui/react-collapsible/dist/index.js +0 -121
  221. package/dist/vendor/.bun/@radix-ui_react-collapsible@1.1.12_2b23df507bdda662/vendor/@radix-ui/react-collapsible/dist/index.js.map +0 -1
  222. package/dist/vendor/.bun/@radix-ui_react-collection@1.1.7_2b23df507bdda662/vendor/@radix-ui/react-collection/dist/index.js +0 -49
  223. package/dist/vendor/.bun/@radix-ui_react-collection@1.1.7_2b23df507bdda662/vendor/@radix-ui/react-collection/dist/index.js.map +0 -1
  224. package/dist/vendor/.bun/@radix-ui_react-direction@1.1.1_0ac650c021fb1b59/vendor/@radix-ui/react-direction/dist/index.js +0 -11
  225. package/dist/vendor/.bun/@radix-ui_react-direction@1.1.1_0ac650c021fb1b59/vendor/@radix-ui/react-direction/dist/index.js.map +0 -1
  226. package/dist/vendor/.bun/@radix-ui_react-dropdown-menu@2.1.16_2b23df507bdda662/vendor/@radix-ui/react-dropdown-menu/dist/index.js +0 -228
  227. package/dist/vendor/.bun/@radix-ui_react-dropdown-menu@2.1.16_2b23df507bdda662/vendor/@radix-ui/react-dropdown-menu/dist/index.js.map +0 -1
  228. package/dist/vendor/.bun/@radix-ui_react-menu@2.1.16_2b23df507bdda662/vendor/@radix-ui/react-menu/dist/index.js +0 -653
  229. package/dist/vendor/.bun/@radix-ui_react-menu@2.1.16_2b23df507bdda662/vendor/@radix-ui/react-menu/dist/index.js.map +0 -1
  230. package/dist/vendor/.bun/@radix-ui_react-popover@1.1.15_2b23df507bdda662/vendor/@radix-ui/react-popover/dist/index.js +0 -244
  231. package/dist/vendor/.bun/@radix-ui_react-popover@1.1.15_2b23df507bdda662/vendor/@radix-ui/react-popover/dist/index.js.map +0 -1
  232. package/dist/vendor/.bun/@radix-ui_react-popper@1.2.8_2b23df507bdda662/vendor/@radix-ui/react-popper/dist/index.js +0 -222
  233. package/dist/vendor/.bun/@radix-ui_react-popper@1.2.8_2b23df507bdda662/vendor/@radix-ui/react-popper/dist/index.js.map +0 -1
  234. package/dist/vendor/.bun/@radix-ui_react-radio-group@1.3.8_2b23df507bdda662/vendor/@radix-ui/react-radio-group/dist/index.js +0 -239
  235. package/dist/vendor/.bun/@radix-ui_react-radio-group@1.3.8_2b23df507bdda662/vendor/@radix-ui/react-radio-group/dist/index.js.map +0 -1
  236. package/dist/vendor/.bun/@radix-ui_react-roving-focus@1.1.11_2b23df507bdda662/vendor/@radix-ui/react-roving-focus/dist/index.js +0 -184
  237. package/dist/vendor/.bun/@radix-ui_react-roving-focus@1.1.11_2b23df507bdda662/vendor/@radix-ui/react-roving-focus/dist/index.js.map +0 -1
  238. package/dist/vendor/.bun/@radix-ui_react-scroll-area@1.2.10_2b23df507bdda662/vendor/@radix-ui/react-scroll-area/dist/index.js +0 -535
  239. package/dist/vendor/.bun/@radix-ui_react-scroll-area@1.2.10_2b23df507bdda662/vendor/@radix-ui/react-scroll-area/dist/index.js.map +0 -1
  240. package/dist/vendor/.bun/@radix-ui_react-select@2.2.6_2b23df507bdda662/vendor/@radix-ui/react-select/dist/index.js +0 -863
  241. package/dist/vendor/.bun/@radix-ui_react-select@2.2.6_2b23df507bdda662/vendor/@radix-ui/react-select/dist/index.js.map +0 -1
  242. package/dist/vendor/.bun/@radix-ui_react-slot@1.2.4_0ac650c021fb1b59/vendor/@radix-ui/react-slot/dist/index.js +0 -63
  243. package/dist/vendor/.bun/@radix-ui_react-slot@1.2.4_0ac650c021fb1b59/vendor/@radix-ui/react-slot/dist/index.js.map +0 -1
  244. package/dist/vendor/.bun/@radix-ui_react-switch@1.2.6_2b23df507bdda662/vendor/@radix-ui/react-switch/dist/index.js +0 -133
  245. package/dist/vendor/.bun/@radix-ui_react-switch@1.2.6_2b23df507bdda662/vendor/@radix-ui/react-switch/dist/index.js.map +0 -1
  246. package/dist/vendor/.bun/@radix-ui_react-tabs@1.1.13_2b23df507bdda662/vendor/@radix-ui/react-tabs/dist/index.js +0 -164
  247. package/dist/vendor/.bun/@radix-ui_react-tabs@1.1.13_2b23df507bdda662/vendor/@radix-ui/react-tabs/dist/index.js.map +0 -1
  248. package/dist/vendor/.bun/@radix-ui_react-toggle-group@1.1.11_2b23df507bdda662/vendor/@radix-ui/react-toggle-group/dist/index.js +0 -138
  249. package/dist/vendor/.bun/@radix-ui_react-toggle-group@1.1.11_2b23df507bdda662/vendor/@radix-ui/react-toggle-group/dist/index.js.map +0 -1
  250. package/dist/vendor/.bun/@radix-ui_react-toggle@1.1.10_2b23df507bdda662/vendor/@radix-ui/react-toggle/dist/index.js +0 -34
  251. package/dist/vendor/.bun/@radix-ui_react-toggle@1.1.10_2b23df507bdda662/vendor/@radix-ui/react-toggle/dist/index.js.map +0 -1
  252. package/dist/vendor/.bun/@radix-ui_react-tooltip@1.2.8_2b23df507bdda662/vendor/@radix-ui/react-tooltip/dist/index.js +0 -340
  253. package/dist/vendor/.bun/@radix-ui_react-tooltip@1.2.8_2b23df507bdda662/vendor/@radix-ui/react-tooltip/dist/index.js.map +0 -1
  254. package/dist/vendor/.bun/@radix-ui_react-use-is-hydrated@0.1.0_0ac650c021fb1b59/vendor/@radix-ui/react-use-is-hydrated/dist/index.js +0 -16
  255. package/dist/vendor/.bun/@radix-ui_react-use-is-hydrated@0.1.0_0ac650c021fb1b59/vendor/@radix-ui/react-use-is-hydrated/dist/index.js.map +0 -1
  256. package/dist/vendor/.bun/@radix-ui_react-use-previous@1.1.1_0ac650c021fb1b59/vendor/@radix-ui/react-use-previous/dist/index.js +0 -9
  257. package/dist/vendor/.bun/@radix-ui_react-use-previous@1.1.1_0ac650c021fb1b59/vendor/@radix-ui/react-use-previous/dist/index.js.map +0 -1
  258. package/dist/vendor/.bun/@radix-ui_react-use-size@1.1.1_0ac650c021fb1b59/vendor/@radix-ui/react-use-size/dist/index.js +0 -28
  259. package/dist/vendor/.bun/@radix-ui_react-use-size@1.1.1_0ac650c021fb1b59/vendor/@radix-ui/react-use-size/dist/index.js.map +0 -1
  260. package/dist/vendor/.bun/@radix-ui_react-visually-hidden@1.2.3_2b23df507bdda662/vendor/@radix-ui/react-visually-hidden/dist/index.js +0 -33
  261. package/dist/vendor/.bun/@radix-ui_react-visually-hidden@1.2.3_2b23df507bdda662/vendor/@radix-ui/react-visually-hidden/dist/index.js.map +0 -1
  262. package/dist/vendor/.bun/sonner@2.0.7_6f4b9a1cfb20c0ae/vendor/sonner/dist/index.js +0 -747
  263. package/dist/vendor/.bun/sonner@2.0.7_6f4b9a1cfb20c0ae/vendor/sonner/dist/index.js.map +0 -1
  264. package/dist/vendor/.bun/use-sync-external-store@1.7.0_62547eec5a2188e3/vendor/use-sync-external-store/cjs/use-sync-external-store-shim.development.js +0 -68
  265. package/dist/vendor/.bun/use-sync-external-store@1.7.0_62547eec5a2188e3/vendor/use-sync-external-store/cjs/use-sync-external-store-shim.development.js.map +0 -1
  266. package/dist/vendor/.bun/use-sync-external-store@1.7.0_62547eec5a2188e3/vendor/use-sync-external-store/cjs/use-sync-external-store-shim.production.js +0 -56
  267. package/dist/vendor/.bun/use-sync-external-store@1.7.0_62547eec5a2188e3/vendor/use-sync-external-store/cjs/use-sync-external-store-shim.production.js.map +0 -1
  268. package/dist/vendor/.bun/use-sync-external-store@1.7.0_62547eec5a2188e3/vendor/use-sync-external-store/shim/index.js +0 -11
  269. package/dist/vendor/.bun/use-sync-external-store@1.7.0_62547eec5a2188e3/vendor/use-sync-external-store/shim/index.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"dropdown-menu.js","sources":["../../../src/components/dropdown-menu/dropdown-menu.tsx"],"sourcesContent":["import * as React from \"react\"\n\nimport * as DropdownMenuPrimitive from \"@radix-ui/react-dropdown-menu\"\nimport { mergeClasses, shorthands } from \"@epilot/zenith-runtime/v1\"\n\nimport { useAppearanceAttributes } from \"../appearance-boundary/appearance-boundary\"\nimport { useDensity } from \"../density-provider/density-provider\"\nimport { SLOT_ATTR } from \"../../renderer/contract\"\nimport { makeZenithStyles } from \"../../styles/make-styles\"\nimport { boxModel, nativeControl } from \"../../styles/host-reset\"\nimport { OVERLAY_Z_INDEX } from \"../../styles/overlay-layer\"\nimport * as tokens from \"../../tokens\"\n\nconst CheckIcon = (props: React.SVGProps<SVGSVGElement>) => (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n height=\"16px\"\n viewBox=\"0 -960 960 960\"\n width=\"16px\"\n fill=\"currentColor\"\n {...props}\n >\n <path d=\"m382-354 339-339q12-12 28-12t28 12q12 12 12 28.5T777-636L410-268q-12 12-28 12t-28-12L182-440q-12-12-11.5-28.5T183-497q12-12 28.5-12t28.5 12l142 143Z\" />\n </svg>\n)\n\nconst ChevronRightIcon = (props: React.SVGProps<SVGSVGElement>) => (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n height=\"16px\"\n viewBox=\"0 -960 960 960\"\n width=\"16px\"\n fill=\"currentColor\"\n {...props}\n >\n <path d=\"M504-480 348-636q-11-11-11-28t11-28q11-11 28-11t28 11l184 184q6 6 8.5 13t2.5 15q0 8-2.5 15t-8.5 13L404-268q-11 11-28 11t-28-11q-11-11-11-28t11-28l156-156Z\" />\n </svg>\n)\n\nconst CircleIcon = (props: React.SVGProps<SVGSVGElement>) => (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n height=\"8px\"\n viewBox=\"0 -960 960 960\"\n width=\"8px\"\n fill=\"currentColor\"\n {...props}\n >\n <path d=\"M480-80q-83 0-156-31.5T197-197q-54-54-85.5-127T80-480q0-83 31.5-156T197-763q54-54 127-85.5T480-880q83 0 156 31.5T763-763q54 54 85.5 127T880-480q0 83-31.5 156T763-197q-54 54-127 85.5T480-80Z\" />\n </svg>\n)\n\nconst useStyles = makeZenithStyles({\n // For the bare native `<button>` a Trigger/Close renders. Not applied under `asChild`, where the\n // child owns its own element and two atom sets would race for the same properties.\n triggerReset: {\n ...nativeControl,\n },\n trigger: {\n color: tokens.accentA11,\n },\n portal: {\n display: \"contents\",\n },\n popup: {\n ...boxModel,\n backgroundColor: tokens.body,\n color: tokens.grayA12,\n minWidth: \"10rem\",\n overflow: \"hidden\",\n ...shorthands.borderRadius(tokens.radiusXl),\n ...shorthands.padding(tokens.spacingElement1),\n // v1 shadow-lg\n boxShadow: \"0 10px 15px -3px #0000001a, 0 4px 6px -4px #0000001a\",\n outlineStyle: \"none\",\n zIndex: OVERLAY_Z_INDEX,\n transformOrigin: \"var(--radix-dropdown-menu-content-transform-origin)\",\n \"@media (prefers-reduced-motion: reduce)\": {\n animationDuration: \"0.01ms\",\n animationIterationCount: \"1\",\n \"&[data-state='open']\": {\n animationDuration: \"0.01ms\",\n },\n \"&[data-state='closed']\": {\n animationDuration: \"0.01ms\",\n },\n },\n \"&[data-state='open']\": {\n animationName: {\n from: { opacity: 0, transform: \"scale(0.95)\" },\n to: { opacity: 1, transform: \"scale(1)\" },\n },\n animationDuration: \"150ms\",\n animationTimingFunction: \"cubic-bezier(0.4, 0, 0.2, 1)\",\n },\n \"&[data-state='open'][data-side='bottom']\": {\n animationName: {\n from: {\n opacity: 0,\n transform: `translateY(-${tokens.spacingElement2}) scale(0.95)`,\n },\n to: { opacity: 1, transform: \"translateY(0) scale(1)\" },\n },\n },\n \"&[data-state='open'][data-side='left']\": {\n animationName: {\n from: {\n opacity: 0,\n transform: `translateX(${tokens.spacingElement2}) scale(0.95)`,\n },\n to: { opacity: 1, transform: \"translateX(0) scale(1)\" },\n },\n },\n \"&[data-state='open'][data-side='right']\": {\n animationName: {\n from: {\n opacity: 0,\n transform: `translateX(-${tokens.spacingElement2}) scale(0.95)`,\n },\n to: { opacity: 1, transform: \"translateX(0) scale(1)\" },\n },\n },\n \"&[data-state='open'][data-side='top']\": {\n animationName: {\n from: {\n opacity: 0,\n transform: `translateY(${tokens.spacingElement2}) scale(0.95)`,\n },\n to: { opacity: 1, transform: \"translateY(0) scale(1)\" },\n },\n },\n \"&[data-state='closed']\": {\n animationName: {\n from: { opacity: 1, transform: \"scale(1)\" },\n to: { opacity: 0, transform: \"scale(0.95)\" },\n },\n animationDuration: \"100ms\",\n animationTimingFunction: \"cubic-bezier(0.4, 0, 1, 1)\",\n },\n },\n item: {\n ...boxModel,\n position: \"relative\",\n display: \"flex\",\n cursor: \"pointer\",\n userSelect: \"none\",\n alignItems: \"center\",\n ...shorthands.gap(tokens.spacingElement2),\n ...shorthands.borderRadius(tokens.radiusMd),\n paddingLeft: tokens.spacingElement2,\n paddingRight: tokens.spacingElement2,\n paddingTop: \"0.375rem\",\n paddingBottom: \"0.375rem\",\n fontSize: tokens.textSm,\n lineHeight: tokens.leadingSm,\n outlineStyle: \"none\",\n transitionProperty:\n \"color, background-color, border-color, text-decoration-color, fill, stroke\",\n transitionDuration: \"150ms\",\n transitionTimingFunction: \"cubic-bezier(0.4, 0, 0.2, 1)\",\n \":hover\": {\n backgroundColor: tokens.accentSoft,\n },\n \":focus-visible\": {\n backgroundColor: tokens.accentSoft,\n },\n \"&[data-highlighted]\": {\n backgroundColor: tokens.accentSoft,\n },\n \"&[data-disabled]\": {\n pointerEvents: \"none\",\n opacity: 0.5,\n },\n \"& svg\": {\n pointerEvents: \"none\",\n width: \"1rem\",\n height: \"1rem\",\n flexShrink: 0,\n },\n },\n itemInset: {\n ...boxModel,\n paddingLeft: \"2rem\",\n },\n itemDestructive: {\n color: tokens.errorA11,\n \":hover\": {\n backgroundColor: tokens.errorSoft,\n },\n \":focus-visible\": {\n backgroundColor: tokens.errorSoft,\n outlineWidth: \"2px\",\n outlineStyle: \"solid\",\n outlineColor: tokens.errorA8,\n },\n \"&[data-highlighted]\": {\n backgroundColor: tokens.errorSoft,\n },\n },\n itemCheckboxRadio: {\n ...boxModel,\n paddingLeft: \"2rem\",\n paddingRight: tokens.spacingElement2,\n },\n itemIndicatorWrapper: {\n ...boxModel,\n position: \"absolute\",\n left: tokens.spacingElement2,\n display: \"flex\",\n height: \"0.875rem\",\n width: \"0.875rem\",\n alignItems: \"center\",\n justifyContent: \"center\",\n },\n itemIndicator: {\n display: \"inline-flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n },\n subTrigger: {\n \"&[data-state='open']\": {\n backgroundColor: tokens.accentSoft,\n },\n },\n subTriggerChevron: {\n ...boxModel,\n marginLeft: \"auto\",\n width: \"1rem\",\n height: \"1rem\",\n flexShrink: 0,\n pointerEvents: \"none\",\n },\n label: {\n ...boxModel,\n paddingLeft: tokens.spacingElement2,\n paddingRight: tokens.spacingElement2,\n paddingTop: \"0.375rem\",\n paddingBottom: \"0.375rem\",\n fontSize: tokens.textSm,\n lineHeight: tokens.leadingSm,\n fontWeight: tokens.fontWeightSemibold,\n },\n separator: {\n ...boxModel,\n marginLeft: `calc(-1 * ${tokens.spacingElement1})`,\n marginRight: `calc(-1 * ${tokens.spacingElement1})`,\n marginTop: tokens.spacingElement1,\n marginBottom: tokens.spacingElement1,\n height: \"1px\",\n backgroundColor: tokens.grayA3,\n },\n shortcut: {\n marginLeft: \"auto\",\n fontSize: tokens.textXs,\n lineHeight: tokens.leadingXs,\n letterSpacing: \"0.1em\",\n color: tokens.grayA11,\n },\n})\n\nexport type DropdownMenuProps = React.ComponentProps<\n typeof DropdownMenuPrimitive.Root\n>\n\nexport const DropdownMenu = React.forwardRef<HTMLElement, DropdownMenuProps>(\n function DropdownMenu(props, _ref) {\n return <DropdownMenuPrimitive.Root data-slot=\"dropdown-menu\" {...props} />\n }\n)\n\nexport type DropdownMenuTriggerProps = React.ComponentProps<\n typeof DropdownMenuPrimitive.Trigger\n>\n\nexport const DropdownMenuTrigger = React.forwardRef<\n React.ElementRef<typeof DropdownMenuPrimitive.Trigger>,\n DropdownMenuTriggerProps\n>(function DropdownMenuTrigger({ className, ...props }, ref) {\n const styles = useStyles()\n\n return (\n <DropdownMenuPrimitive.Trigger\n ref={ref}\n data-slot=\"dropdown-menu-trigger\"\n {...{ [SLOT_ATTR]: \"dropdown-menu-trigger\" }}\n className={mergeClasses(\n !props.asChild && styles.triggerReset,\n styles.trigger,\n className\n )}\n {...props}\n />\n )\n})\n\nexport type DropdownMenuGroupProps = React.ComponentProps<\n typeof DropdownMenuPrimitive.Group\n>\n\nexport const DropdownMenuGroup = React.forwardRef<\n React.ElementRef<typeof DropdownMenuPrimitive.Group>,\n DropdownMenuGroupProps\n>(function DropdownMenuGroup({ className, ...props }, ref) {\n return (\n <DropdownMenuPrimitive.Group\n ref={ref}\n data-slot=\"dropdown-menu-group\"\n {...{ [SLOT_ATTR]: \"dropdown-menu-group\" }}\n className={className}\n {...props}\n />\n )\n})\n\nexport type DropdownMenuPortalProps = React.ComponentProps<\n typeof DropdownMenuPrimitive.Portal\n>\n\nexport const DropdownMenuPortal = React.forwardRef<\n HTMLElement,\n DropdownMenuPortalProps\n>(function DropdownMenuPortal(props, _ref) {\n return (\n <DropdownMenuPrimitive.Portal\n data-slot=\"dropdown-menu-portal\"\n {...{ [SLOT_ATTR]: \"dropdown-menu-portal\" }}\n {...props}\n />\n )\n})\n\nexport type DropdownMenuSubProps = React.ComponentProps<\n typeof DropdownMenuPrimitive.Sub\n>\n\nexport const DropdownMenuSub = React.forwardRef<\n HTMLElement,\n DropdownMenuSubProps\n>(function DropdownMenuSub(props, _ref) {\n return <DropdownMenuPrimitive.Sub data-slot=\"dropdown-menu-sub\" {...props} />\n})\n\nexport type DropdownMenuRadioGroupProps = React.ComponentProps<\n typeof DropdownMenuPrimitive.RadioGroup\n>\n\nexport const DropdownMenuRadioGroup = React.forwardRef<\n React.ElementRef<typeof DropdownMenuPrimitive.RadioGroup>,\n DropdownMenuRadioGroupProps\n>(function DropdownMenuRadioGroup({ className, ...props }, ref) {\n return (\n <DropdownMenuPrimitive.RadioGroup\n ref={ref}\n data-slot=\"dropdown-menu-radio-group\"\n {...{ [SLOT_ATTR]: \"dropdown-menu-radio-group\" }}\n className={className}\n {...props}\n />\n )\n})\n\nexport type DropdownMenuSubTriggerProps = React.ComponentProps<\n typeof DropdownMenuPrimitive.SubTrigger\n> & {\n inset?: boolean\n}\n\nexport const DropdownMenuSubTrigger = React.forwardRef<\n React.ElementRef<typeof DropdownMenuPrimitive.SubTrigger>,\n DropdownMenuSubTriggerProps\n>(function DropdownMenuSubTrigger(\n { className, inset, children, ...props },\n ref\n) {\n const styles = useStyles()\n\n return (\n <DropdownMenuPrimitive.SubTrigger\n ref={ref}\n data-slot=\"dropdown-menu-sub-trigger\"\n {...{ [SLOT_ATTR]: \"dropdown-menu-sub-trigger\" }}\n className={mergeClasses(\n styles.item,\n styles.subTrigger,\n inset && styles.itemInset,\n className\n )}\n {...props}\n >\n {children}\n <ChevronRightIcon className={styles.subTriggerChevron} />\n </DropdownMenuPrimitive.SubTrigger>\n )\n})\n\nexport type DropdownMenuSubContentProps = React.ComponentProps<\n typeof DropdownMenuPrimitive.SubContent\n>\n\nexport const DropdownMenuSubContent = React.forwardRef<\n React.ElementRef<typeof DropdownMenuPrimitive.SubContent>,\n DropdownMenuSubContentProps\n>(function DropdownMenuSubContent({ className, ...props }, ref) {\n const styles = useStyles()\n // DENSITY-SPEC.md §4.4 — portal content boundary; see dialog.tsx's identical comment. Radix's\n // `Menu.SubContent` does not self-portal (confirmed from `@radix-ui/react-menu`'s source: it\n // renders `MenuContentImpl` directly) — callers place it inside a `DropdownMenuPortal` alongside\n // top-level `DropdownMenuContent`, so it needs the same independent stamp.\n const override = useDensity()\n // SPEC.md §2 rule 3 — the same portal asymmetry, for the appearance pair: re-stamp the\n // nearest explicit AppearanceBoundary's mode+surface, or neither attribute when there is\n // none, leaving live shell inheritance in place.\n const appearance = useAppearanceAttributes()\n\n return (\n <DropdownMenuPrimitive.SubContent\n ref={ref}\n data-slot=\"dropdown-menu-sub-content\"\n {...{ [SLOT_ATTR]: \"dropdown-menu-sub-content\" }}\n {...(override !== undefined ? { \"data-density\": override } : {})}\n {...appearance}\n className={mergeClasses(styles.popup, className)}\n {...props}\n />\n )\n})\n\nexport type DropdownMenuContentProps = React.ComponentProps<\n typeof DropdownMenuPrimitive.Content\n> & {\n container?: React.ComponentProps<\n typeof DropdownMenuPrimitive.Portal\n >[\"container\"]\n}\n\nexport const DropdownMenuContent = React.forwardRef<\n React.ElementRef<typeof DropdownMenuPrimitive.Content>,\n DropdownMenuContentProps\n>(function DropdownMenuContent(\n { className, sideOffset = 4, container, ...props },\n ref\n) {\n const styles = useStyles()\n // DENSITY-SPEC.md §4.4 — portal content boundary; see dialog.tsx's identical comment.\n const override = useDensity()\n // SPEC.md §2 rule 3 — the same portal asymmetry, for the appearance pair: re-stamp the\n // nearest explicit AppearanceBoundary's mode+surface, or neither attribute when there is\n // none, leaving live shell inheritance in place.\n const appearance = useAppearanceAttributes()\n\n return (\n <DropdownMenuPrimitive.Portal container={container}>\n <DropdownMenuPrimitive.Content\n ref={ref}\n data-slot=\"dropdown-menu-content\"\n {...{ [SLOT_ATTR]: \"dropdown-menu-content\" }}\n {...(override !== undefined ? { \"data-density\": override } : {})}\n {...appearance}\n sideOffset={sideOffset}\n className={mergeClasses(styles.popup, className)}\n {...props}\n />\n </DropdownMenuPrimitive.Portal>\n )\n})\n\nexport type DropdownMenuItemProps = React.ComponentProps<\n typeof DropdownMenuPrimitive.Item\n> & {\n inset?: boolean\n destructive?: boolean\n}\n\nexport const DropdownMenuItem = React.forwardRef<\n React.ElementRef<typeof DropdownMenuPrimitive.Item>,\n DropdownMenuItemProps\n>(function DropdownMenuItem({ className, inset, destructive, ...props }, ref) {\n const styles = useStyles()\n\n return (\n <DropdownMenuPrimitive.Item\n ref={ref}\n data-slot=\"dropdown-menu-item\"\n {...{ [SLOT_ATTR]: \"dropdown-menu-item\" }}\n className={mergeClasses(\n styles.item,\n inset && styles.itemInset,\n destructive && styles.itemDestructive,\n className\n )}\n {...props}\n />\n )\n})\n\nexport type DropdownMenuCheckboxItemProps = React.ComponentProps<\n typeof DropdownMenuPrimitive.CheckboxItem\n>\n\nexport const DropdownMenuCheckboxItem = React.forwardRef<\n React.ElementRef<typeof DropdownMenuPrimitive.CheckboxItem>,\n DropdownMenuCheckboxItemProps\n>(function DropdownMenuCheckboxItem(\n { className, children, checked, ...props },\n ref\n) {\n const styles = useStyles()\n\n return (\n <DropdownMenuPrimitive.CheckboxItem\n ref={ref}\n data-slot=\"dropdown-menu-checkbox-item\"\n {...{ [SLOT_ATTR]: \"dropdown-menu-checkbox-item\" }}\n className={mergeClasses(styles.item, styles.itemCheckboxRadio, className)}\n checked={checked}\n {...props}\n >\n <span className={styles.itemIndicatorWrapper}>\n <DropdownMenuPrimitive.ItemIndicator className={styles.itemIndicator}>\n <CheckIcon />\n </DropdownMenuPrimitive.ItemIndicator>\n </span>\n {children}\n </DropdownMenuPrimitive.CheckboxItem>\n )\n})\n\nexport type DropdownMenuRadioItemProps = React.ComponentProps<\n typeof DropdownMenuPrimitive.RadioItem\n>\n\nexport const DropdownMenuRadioItem = React.forwardRef<\n React.ElementRef<typeof DropdownMenuPrimitive.RadioItem>,\n DropdownMenuRadioItemProps\n>(function DropdownMenuRadioItem({ className, children, ...props }, ref) {\n const styles = useStyles()\n\n return (\n <DropdownMenuPrimitive.RadioItem\n ref={ref}\n data-slot=\"dropdown-menu-radio-item\"\n {...{ [SLOT_ATTR]: \"dropdown-menu-radio-item\" }}\n className={mergeClasses(styles.item, styles.itemCheckboxRadio, className)}\n {...props}\n >\n <span className={styles.itemIndicatorWrapper}>\n <DropdownMenuPrimitive.ItemIndicator className={styles.itemIndicator}>\n <CircleIcon />\n </DropdownMenuPrimitive.ItemIndicator>\n </span>\n {children}\n </DropdownMenuPrimitive.RadioItem>\n )\n})\n\nexport type DropdownMenuLabelProps = React.ComponentProps<\n typeof DropdownMenuPrimitive.Label\n> & {\n inset?: boolean\n}\n\nexport const DropdownMenuLabel = React.forwardRef<\n React.ElementRef<typeof DropdownMenuPrimitive.Label>,\n DropdownMenuLabelProps\n>(function DropdownMenuLabel({ className, inset, ...props }, ref) {\n const styles = useStyles()\n\n return (\n <DropdownMenuPrimitive.Label\n ref={ref}\n data-slot=\"dropdown-menu-label\"\n {...{ [SLOT_ATTR]: \"dropdown-menu-label\" }}\n className={mergeClasses(\n styles.label,\n inset && styles.itemInset,\n className\n )}\n {...props}\n />\n )\n})\n\nexport type DropdownMenuSeparatorProps = React.ComponentProps<\n typeof DropdownMenuPrimitive.Separator\n>\n\nexport const DropdownMenuSeparator = React.forwardRef<\n React.ElementRef<typeof DropdownMenuPrimitive.Separator>,\n DropdownMenuSeparatorProps\n>(function DropdownMenuSeparator({ className, ...props }, ref) {\n const styles = useStyles()\n\n return (\n <DropdownMenuPrimitive.Separator\n ref={ref}\n data-slot=\"dropdown-menu-separator\"\n {...{ [SLOT_ATTR]: \"dropdown-menu-separator\" }}\n className={mergeClasses(styles.separator, className)}\n {...props}\n />\n )\n})\n\nexport type DropdownMenuShortcutProps = React.ComponentProps<\"span\">\n\nexport const DropdownMenuShortcut = React.forwardRef<\n HTMLSpanElement,\n DropdownMenuShortcutProps\n>(function DropdownMenuShortcut({ className, ...props }, ref) {\n const styles = useStyles()\n\n return (\n <span\n ref={ref}\n data-slot=\"dropdown-menu-shortcut\"\n {...{ [SLOT_ATTR]: \"dropdown-menu-shortcut\" }}\n className={mergeClasses(styles.shortcut, className)}\n {...props}\n />\n )\n})\n"],"names":["CheckIcon","props","jsx","ChevronRightIcon","CircleIcon","useStyles","makeZenithStyles","nativeControl","tokens.accentA11","boxModel","tokens.body","tokens.grayA12","shorthands","tokens.radiusXl","tokens.spacingElement1","OVERLAY_Z_INDEX","tokens.spacingElement2","tokens.radiusMd","tokens.textSm","tokens.leadingSm","tokens.accentSoft","tokens.errorA11","tokens.errorSoft","tokens.errorA8","tokens.fontWeightSemibold","tokens.grayA3","tokens.textXs","tokens.leadingXs","tokens.grayA11","DropdownMenu","React","_ref","DropdownMenuPrimitive.Root","DropdownMenuTrigger","className","ref","styles","DropdownMenuPrimitive.Trigger","SLOT_ATTR","mergeClasses","DropdownMenuGroup","DropdownMenuPrimitive.Group","DropdownMenuPortal","DropdownMenuPrimitive.Portal","DropdownMenuSub","DropdownMenuPrimitive.Sub","DropdownMenuRadioGroup","DropdownMenuPrimitive.RadioGroup","DropdownMenuSubTrigger","inset","children","jsxs","DropdownMenuPrimitive.SubTrigger","DropdownMenuSubContent","override","useDensity","appearance","useAppearanceAttributes","DropdownMenuPrimitive.SubContent","DropdownMenuContent","sideOffset","container","DropdownMenuPrimitive.Content","DropdownMenuItem","destructive","DropdownMenuPrimitive.Item","DropdownMenuCheckboxItem","checked","DropdownMenuPrimitive.CheckboxItem","DropdownMenuPrimitive.ItemIndicator","DropdownMenuRadioItem","DropdownMenuPrimitive.RadioItem","DropdownMenuLabel","DropdownMenuPrimitive.Label","DropdownMenuSeparator","DropdownMenuPrimitive.Separator","DropdownMenuShortcut"],"mappings":"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"}
1
+ {"version":3,"file":"dropdown-menu.js","sources":["../../../src/components/dropdown-menu/dropdown-menu.tsx"],"sourcesContent":["import * as React from \"react\"\n\nimport { DirectionProvider } from \"@base-ui/react/direction-provider\"\nimport { Menu as MenuPrimitive } from \"@base-ui/react/menu\"\nimport { mergeProps } from \"@base-ui/react/merge-props\"\nimport { Separator as SeparatorPrimitive } from \"@base-ui/react/separator\"\nimport { useRender } from \"@base-ui/react/use-render\"\nimport { mergeClasses, shorthands } from \"@epilot/zenith-runtime/v1\"\n\nimport { useAppearanceAttributes } from \"../appearance-boundary/appearance-boundary\"\nimport { useDensity } from \"../density-provider/density-provider\"\nimport { SLOT_ATTR } from \"../../renderer/contract\"\nimport { makeZenithStyles } from \"../../styles/make-styles\"\nimport { boxModel, nativeControl } from \"../../styles/host-reset\"\nimport { OVERLAY_Z_INDEX } from \"../../styles/overlay-layer\"\nimport * as tokens from \"../../tokens\"\n\nconst CheckIcon = (props: React.SVGProps<SVGSVGElement>) => (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n height=\"16px\"\n viewBox=\"0 -960 960 960\"\n width=\"16px\"\n fill=\"currentColor\"\n {...props}\n >\n <path d=\"m382-354 339-339q12-12 28-12t28 12q12 12 12 28.5T777-636L410-268q-12 12-28 12t-28-12L182-440q-12-12-11.5-28.5T183-497q12-12 28.5-12t28.5 12l142 143Z\" />\n </svg>\n)\n\nconst ChevronRightIcon = (props: React.SVGProps<SVGSVGElement>) => (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n height=\"16px\"\n viewBox=\"0 -960 960 960\"\n width=\"16px\"\n fill=\"currentColor\"\n {...props}\n >\n <path d=\"M504-480 348-636q-11-11-11-28t11-28q11-11 28-11t28 11l184 184q6 6 8.5 13t2.5 15q0 8-2.5 15t-8.5 13L404-268q-11 11-28 11t-28-11q-11-11-11-28t11-28l156-156Z\" />\n </svg>\n)\n\nconst CircleIcon = (props: React.SVGProps<SVGSVGElement>) => (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n height=\"8px\"\n viewBox=\"0 -960 960 960\"\n width=\"8px\"\n fill=\"currentColor\"\n {...props}\n >\n <path d=\"M480-80q-83 0-156-31.5T197-197q-54-54-85.5-127T80-480q0-83 31.5-156T197-763q54-54 127-85.5T480-880q83 0 156 31.5T763-763q54 54 85.5 127T880-480q0 83-31.5 156T763-197q-54 54-127 85.5T480-80Z\" />\n </svg>\n)\n\nconst easeOut = \"cubic-bezier(0.4, 0, 0.2, 1)\"\nconst easeIn = \"cubic-bezier(0.4, 0, 1, 1)\"\n\nconst useStyles = makeZenithStyles({\n // For the bare native `<button>` a Trigger/Close renders. Not applied under `asChild`, where the\n // child owns its own element and two atom sets would race for the same properties.\n triggerReset: {\n ...nativeControl,\n },\n trigger: {\n color: tokens.accentA11,\n },\n // The positioner is what stacks against other layers, as Radix's popper wrapper did; it also\n // keeps that wrapper's `max-content` floor so the content wraps the same way.\n positioner: {\n zIndex: OVERLAY_Z_INDEX,\n minWidth: \"max-content\",\n outlineStyle: \"none\",\n },\n // Radix's `hideWhenDetached`: Base UI marks the positioner when its anchor scrolls out of view.\n positionerHideWhenDetached: {\n \"&[data-anchor-hidden]\": {\n visibility: \"hidden\",\n pointerEvents: \"none\",\n },\n },\n popup: {\n ...boxModel,\n backgroundColor: tokens.body,\n color: tokens.grayA12,\n minWidth: \"10rem\",\n overflow: \"hidden\",\n ...shorthands.borderRadius(tokens.radiusXl),\n ...shorthands.padding(tokens.spacingElement1),\n // v1 shadow-lg\n boxShadow: \"0 10px 15px -3px #0000001a, 0 4px 6px -4px #0000001a\",\n outlineStyle: \"none\",\n zIndex: OVERLAY_Z_INDEX,\n transformOrigin: \"var(--transform-origin)\",\n transitionProperty: \"opacity, transform\",\n transitionDuration: \"150ms\",\n transitionTimingFunction: easeOut,\n \"&[data-starting-style]\": {\n opacity: 0,\n transform: \"scale(0.95)\",\n },\n \"&[data-starting-style][data-side='bottom']\": {\n transform: `translateY(-${tokens.spacingElement2}) scale(0.95)`,\n },\n \"&[data-starting-style][data-side='left']\": {\n transform: `translateX(${tokens.spacingElement2}) scale(0.95)`,\n },\n \"&[data-starting-style][data-side='right']\": {\n transform: `translateX(-${tokens.spacingElement2}) scale(0.95)`,\n },\n \"&[data-starting-style][data-side='top']\": {\n transform: `translateY(${tokens.spacingElement2}) scale(0.95)`,\n },\n \"&[data-ending-style]\": {\n opacity: 0,\n transform: \"scale(0.95)\",\n transitionDuration: \"100ms\",\n transitionTimingFunction: easeIn,\n },\n \"@media (prefers-reduced-motion: reduce)\": {\n transitionDuration: \"0.01ms\",\n \"&[data-ending-style]\": {\n transitionDuration: \"0.01ms\",\n },\n },\n },\n item: {\n ...boxModel,\n position: \"relative\",\n display: \"flex\",\n cursor: \"pointer\",\n userSelect: \"none\",\n alignItems: \"center\",\n ...shorthands.gap(tokens.spacingElement2),\n ...shorthands.borderRadius(tokens.radiusMd),\n paddingLeft: tokens.spacingElement2,\n paddingRight: tokens.spacingElement2,\n paddingTop: \"0.375rem\",\n paddingBottom: \"0.375rem\",\n fontSize: tokens.textSm,\n lineHeight: tokens.leadingSm,\n outlineStyle: \"none\",\n transitionProperty:\n \"color, background-color, border-color, text-decoration-color, fill, stroke\",\n transitionDuration: \"150ms\",\n transitionTimingFunction: \"cubic-bezier(0.4, 0, 0.2, 1)\",\n \":hover\": {\n backgroundColor: tokens.accentSoft,\n },\n \":focus-visible\": {\n backgroundColor: tokens.accentSoft,\n },\n \"&[data-highlighted]\": {\n backgroundColor: tokens.accentSoft,\n },\n \"&[data-disabled]\": {\n pointerEvents: \"none\",\n opacity: 0.5,\n },\n \"& svg\": {\n pointerEvents: \"none\",\n width: \"1rem\",\n height: \"1rem\",\n flexShrink: 0,\n },\n },\n itemInset: {\n ...boxModel,\n paddingLeft: \"2rem\",\n },\n itemDestructive: {\n color: tokens.errorA11,\n \":hover\": {\n backgroundColor: tokens.errorSoft,\n },\n \":focus-visible\": {\n backgroundColor: tokens.errorSoft,\n outlineWidth: \"2px\",\n outlineStyle: \"solid\",\n outlineColor: tokens.errorA8,\n },\n \"&[data-highlighted]\": {\n backgroundColor: tokens.errorSoft,\n },\n },\n itemCheckboxRadio: {\n ...boxModel,\n paddingLeft: \"2rem\",\n paddingRight: tokens.spacingElement2,\n },\n itemIndicatorWrapper: {\n ...boxModel,\n position: \"absolute\",\n left: tokens.spacingElement2,\n display: \"flex\",\n height: \"0.875rem\",\n width: \"0.875rem\",\n alignItems: \"center\",\n justifyContent: \"center\",\n },\n itemIndicator: {\n display: \"inline-flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n },\n subTrigger: {\n \"&[data-popup-open]\": {\n backgroundColor: tokens.accentSoft,\n },\n },\n subTriggerChevron: {\n ...boxModel,\n marginLeft: \"auto\",\n width: \"1rem\",\n height: \"1rem\",\n flexShrink: 0,\n pointerEvents: \"none\",\n },\n label: {\n ...boxModel,\n paddingLeft: tokens.spacingElement2,\n paddingRight: tokens.spacingElement2,\n paddingTop: \"0.375rem\",\n paddingBottom: \"0.375rem\",\n fontSize: tokens.textSm,\n lineHeight: tokens.leadingSm,\n fontWeight: tokens.fontWeightSemibold,\n },\n separator: {\n ...boxModel,\n marginLeft: `calc(-1 * ${tokens.spacingElement1})`,\n marginRight: `calc(-1 * ${tokens.spacingElement1})`,\n marginTop: tokens.spacingElement1,\n marginBottom: tokens.spacingElement1,\n height: \"1px\",\n backgroundColor: tokens.grayA3,\n },\n shortcut: {\n marginLeft: \"auto\",\n fontSize: tokens.textXs,\n lineHeight: tokens.leadingXs,\n letterSpacing: \"0.1em\",\n color: tokens.grayA11,\n },\n})\n\n// A single child can arrive wrapped in a one-element array depending on the JSX runtime (MDX call\n// sites do this). Radix's Slot normalised that, so the `asChild` shim has to as well.\nfunction onlySlotChild(children: React.ReactNode) {\n const elements = React.Children.toArray(children).filter(React.isValidElement)\n return elements.length === 1 ? elements[0] : undefined\n}\n\n/**\n * Radix's `asChild` over Base UI's `render`: the single child element becomes the part and keeps\n * its own children, since Base UI lets the rendered element's props win the merge.\n */\nfunction slotProps(asChild: boolean, children: React.ReactNode) {\n const child = asChild ? onlySlotChild(children) : undefined\n return child ? { render: child } : { children }\n}\n\n/**\n * A part's props as they were under Radix: its native element's own (DOM attributes, React's\n * handler types, a `CSSProperties` style, a string `className`, `ref`) plus `asChild`. Base UI's\n * prop types widen `style` and `className` to functions of the part's state, wrap every handler's\n * event in `BaseUIEvent` and add props of their own; none of that reaches the public surface.\n */\ntype NativePartProps<Tag extends \"button\" | \"div\"> =\n React.ComponentProps<Tag> & {\n /** Renders the single child element as this part, merging its props and behaviour onto it. */\n asChild?: boolean\n }\n\n/**\n * Radix-shaped focus interception over Base UI's `finalFocus`. `preventDefault()` leaves focus\n * where it is; otherwise the default move happens, because Base UI reads a callback that returns\n * `undefined` as \"move nothing\".\n */\nfunction radixFocusCallback(handler: ((event: Event) => void) | undefined) {\n if (!handler) return undefined\n\n return () => {\n const event = new Event(\"focus\", { cancelable: true })\n const before = document.activeElement\n handler(event)\n const moved = document.activeElement\n // Base UI calls `finalFocus` inside React's commit, and React then restores the focus it saw\n // before the commit. Radix ran this handler after the commit, so a handler that moves focus\n // itself has its move applied again once the commit is done.\n if (moved !== before && moved instanceof HTMLElement) {\n queueMicrotask(() => moved.focus())\n }\n return !event.defaultPrevented\n }\n}\n\n/**\n * What `onOpenChange` receives as its second argument, on the menu and on a submenu: Base UI's\n * change details, declared in Zenith. Base UI's own type drags its menu store into the published\n * declarations, and TypeScript 4 cannot parse that store. `event` narrows with `reason`, as it does\n * in Base UI.\n */\ntype DropdownMenuOpenChangeDetails = (\n | {\n reason: \"trigger-press\"\n event: MouseEvent | PointerEvent | TouchEvent | KeyboardEvent\n }\n | { reason: \"trigger-hover\"; event: MouseEvent }\n | { reason: \"trigger-focus\"; event: FocusEvent }\n | { reason: \"outside-press\"; event: MouseEvent | PointerEvent | TouchEvent }\n | { reason: \"focus-out\"; event: FocusEvent | KeyboardEvent }\n | { reason: \"list-navigation\"; event: KeyboardEvent }\n | { reason: \"escape-key\"; event: KeyboardEvent }\n | { reason: \"item-press\"; event: MouseEvent | KeyboardEvent | PointerEvent }\n | { reason: \"close-press\"; event: MouseEvent | KeyboardEvent | PointerEvent }\n | { reason: \"sibling-open\"; event: Event }\n | { reason: \"cancel-open\"; event: MouseEvent }\n | { reason: \"imperative-action\"; event: Event }\n | { reason: \"none\"; event: Event }\n) & {\n /** Keeps the menu in its current state. */\n cancel: () => void\n /** Lets the event propagate where the menu would otherwise stop it. */\n allowPropagation: () => void\n isCanceled: boolean\n isPropagationAllowed: boolean\n /** The element that caused the change, if any. */\n trigger: Element | undefined\n /** Keeps the menu's elements mounted after it closes. */\n preventUnmountOnClose: () => void\n}\n\ntype OpenChangeHandler = (\n open: boolean,\n eventDetails: DropdownMenuOpenChangeDetails\n) => void\n\n// The Escapes a submenu closed on, which then close the menu above it (`closeParentOnEsc`). Base\n// UI's submenu prevents the event before the parent menu hears of it, so the parent would read it\n// as handled by some other layer.\nconst escapesClosingASubmenu = new WeakSet<Event>()\n\n/**\n * A layer inside the menu (a Volt popover or tooltip, which run on Radix, or a control handling\n * the key itself) prevents the Escape it consumes, but Base UI dismisses regardless, so one Escape\n * would close both. Honour the handled event. Consumers still mix Zenith with Volt on one page,\n * so this stays after the Radix teardown (D12).\n */\nfunction honourHandledEscape(\n onOpenChange: OpenChangeHandler | undefined,\n { submenu = false } = {}\n) {\n return (open: boolean, eventDetails: DropdownMenuOpenChangeDetails) => {\n const escape =\n eventDetails.reason === \"escape-key\" ? eventDetails.event : undefined\n if (escape?.defaultPrevented && !escapesClosingASubmenu.has(escape)) {\n eventDetails.cancel()\n return\n }\n onOpenChange?.(open, eventDetails)\n if (submenu && escape && !eventDetails.isCanceled) {\n escapesClosingASubmenu.add(escape)\n }\n }\n}\n\n/**\n * What the content of a menu or submenu hands up to its root: Radix took `loop` on the content,\n * Base UI takes `loopFocus` on the root. Both roots start from `false`, Radix's default, where\n * Base UI's menus wrap.\n */\nconst MenuLoopContext = React.createContext<(loop: boolean) => void>(() => {})\n\ntype Direction = \"ltr\" | \"rtl\"\n\n/** The root's `dir`, which Radix also stamped on the content. */\nconst MenuDirContext = React.createContext<Direction | undefined>(undefined)\n\nfunction useLoopOnRoot(loop: boolean | undefined) {\n const setLoop = React.useContext(MenuLoopContext)\n React.useEffect(() => {\n setLoop(loop ?? false)\n }, [setLoop, loop])\n}\n\nexport type DropdownMenuProps = {\n children?: React.ReactNode\n /** The reading direction of the menu and its submenus. Inherits the document's when omitted. */\n dir?: Direction\n open?: boolean\n defaultOpen?: boolean\n /**\n * Called when the menu opens or closes. `eventDetails.reason` says why (`trigger-press`,\n * `escape-key`, `outside-press`, `item-press`, `focus-out`, …) and `eventDetails.cancel()` keeps\n * the menu in its current state.\n */\n onOpenChange?: OpenChangeHandler\n /**\n * While open, the menu locks page scroll and blocks pointer interaction outside it.\n * @default true\n */\n modal?: boolean\n}\n\nexport const DropdownMenu = React.forwardRef<HTMLElement, DropdownMenuProps>(\n function DropdownMenu({ dir, onOpenChange, children, ...props }, _ref) {\n const [loop, setLoop] = React.useState(false)\n\n const root = (\n <MenuPrimitive.Root\n data-slot=\"dropdown-menu\"\n loopFocus={loop}\n onOpenChange={honourHandledEscape(onOpenChange)}\n {...props}\n >\n <MenuLoopContext.Provider value={setLoop}>\n <MenuDirContext.Provider value={dir}>\n {children}\n </MenuDirContext.Provider>\n </MenuLoopContext.Provider>\n </MenuPrimitive.Root>\n )\n\n return dir ? (\n <DirectionProvider direction={dir}>{root}</DirectionProvider>\n ) : (\n root\n )\n }\n)\n\nexport type DropdownMenuTriggerProps = NativePartProps<\"button\">\n\nexport const DropdownMenuTrigger = React.forwardRef<\n HTMLButtonElement,\n DropdownMenuTriggerProps\n>(function DropdownMenuTrigger(\n { asChild = false, children, className, ...props },\n ref\n) {\n const styles = useStyles()\n const child = asChild ? onlySlotChild(children) : undefined\n // Base UI drives a native <button> unless told otherwise; a child that is another intrinsic\n // element gets the ARIA button behaviour Radix's Slot gave it.\n const nativeButton =\n !child || typeof child.type !== \"string\" || child.type === \"button\"\n\n return (\n <MenuPrimitive.Trigger\n ref={ref}\n data-slot=\"dropdown-menu-trigger\"\n {...{ [SLOT_ATTR]: \"dropdown-menu-trigger\" }}\n nativeButton={nativeButton}\n className={mergeClasses(\n !asChild && styles.triggerReset,\n styles.trigger,\n className\n )}\n {...props}\n {...(child ? { render: child } : { children })}\n />\n )\n})\n\nexport type DropdownMenuGroupProps = NativePartProps<\"div\">\n\nexport const DropdownMenuGroup = React.forwardRef<\n HTMLDivElement,\n DropdownMenuGroupProps\n>(function DropdownMenuGroup({ asChild = false, children, ...props }, ref) {\n return (\n <MenuPrimitive.Group\n ref={ref}\n data-slot=\"dropdown-menu-group\"\n {...{ [SLOT_ATTR]: \"dropdown-menu-group\" }}\n {...props}\n {...slotProps(asChild, children)}\n />\n )\n})\n\n// Lets the content use an enclosing DropdownMenuPortal instead of portalling itself, as Base UI's\n// Popup needs exactly one Portal above it. Content resets it, so a submenu inside portals on its\n// own unless a DropdownMenuPortal of its own wraps it.\nconst DropdownMenuPortalPresenceContext = React.createContext(false)\n\n// The element the content portalled into, so a submenu portals next to it rather than into the\n// body; Radix rendered submenus inline in their parent's content.\nconst DropdownMenuContainerContext = React.createContext<\n HTMLElement | undefined\n>(undefined)\n\n/** Radix took any Element or DocumentFragment, null meaning the body; Base UI reads null as \"wait for one\". */\nfunction portalContainer(\n container: Element | DocumentFragment | null | undefined\n) {\n return (container ?? undefined) as HTMLElement | undefined\n}\n\nexport type DropdownMenuPortalProps = {\n children?: React.ReactNode\n /** The element the content portals into; `document.body` when omitted or null. */\n container?: Element | DocumentFragment | null\n /** Keeps the content mounted while the menu is closed. */\n forceMount?: true\n}\n\nexport const DropdownMenuPortal = React.forwardRef<\n HTMLElement,\n DropdownMenuPortalProps\n>(function DropdownMenuPortal({ container, forceMount, ...props }, ref) {\n return (\n <DropdownMenuPortalPresenceContext.Provider value={true}>\n <DropdownMenuContainerContext.Provider value={portalContainer(container)}>\n <MenuPrimitive.Portal\n // Base UI types the ref as its portal div, which any HTMLElement ref can hold.\n ref={ref as React.Ref<HTMLDivElement>}\n data-slot=\"dropdown-menu-portal\"\n {...{ [SLOT_ATTR]: \"dropdown-menu-portal\" }}\n container={portalContainer(container)}\n keepMounted={forceMount}\n {...props}\n />\n </DropdownMenuContainerContext.Provider>\n </DropdownMenuPortalPresenceContext.Provider>\n )\n})\n\nexport type DropdownMenuSubProps = {\n children?: React.ReactNode\n open?: boolean\n defaultOpen?: boolean\n /**\n * Called when the submenu opens or closes, with the same `eventDetails` as DropdownMenu's\n * `onOpenChange`.\n */\n onOpenChange?: OpenChangeHandler\n}\n\nexport const DropdownMenuSub = React.forwardRef<\n HTMLElement,\n DropdownMenuSubProps\n>(function DropdownMenuSub({ onOpenChange, children, ...props }, _ref) {\n const [loop, setLoop] = React.useState(false)\n\n return (\n <MenuPrimitive.SubmenuRoot\n data-slot=\"dropdown-menu-sub\"\n loopFocus={loop}\n // Escape inside a Radix submenu closed the whole menu.\n closeParentOnEsc\n onOpenChange={honourHandledEscape(onOpenChange, { submenu: true })}\n {...props}\n >\n <MenuLoopContext.Provider value={setLoop}>\n {children}\n </MenuLoopContext.Provider>\n </MenuPrimitive.SubmenuRoot>\n )\n})\n\ntype RadixItemProps = {\n disabled?: boolean\n /**\n * Called when the item is chosen by pointer or keyboard. Under Base UI the menu closes\n * regardless; `preventDefault()` no longer keeps it open.\n */\n onSelect?: (event: Event) => void\n /** The text typeahead matches, when the item's content is not plain text. */\n textValue?: string\n}\n\n/** Radix's `onSelect` over Base UI's click handling, which covers pointer and keyboard selection. */\nfunction selectOnClick<Element>(\n onClick: React.MouseEventHandler<Element> | undefined,\n onSelect: ((event: Event) => void) | undefined\n): React.MouseEventHandler<Element> {\n return (event) => {\n onClick?.(event)\n onSelect?.(event.nativeEvent)\n }\n}\n\nexport type DropdownMenuRadioGroupProps = NativePartProps<\"div\"> & {\n value?: string\n onValueChange?: (value: string) => void\n}\n\nexport const DropdownMenuRadioGroup = React.forwardRef<\n HTMLDivElement,\n DropdownMenuRadioGroupProps\n>(function DropdownMenuRadioGroup(\n { asChild = false, children, onValueChange, ...props },\n ref\n) {\n return (\n <MenuPrimitive.RadioGroup\n ref={ref}\n data-slot=\"dropdown-menu-radio-group\"\n {...{ [SLOT_ATTR]: \"dropdown-menu-radio-group\" }}\n onValueChange={\n onValueChange ? (value: string) => onValueChange(value) : undefined\n }\n {...props}\n {...slotProps(asChild, children)}\n />\n )\n})\n\nexport type DropdownMenuSubTriggerProps = NativePartProps<\"div\"> &\n Omit<RadixItemProps, \"onSelect\"> & {\n inset?: boolean\n }\n\nexport const DropdownMenuSubTrigger = React.forwardRef<\n HTMLDivElement,\n DropdownMenuSubTriggerProps\n>(function DropdownMenuSubTrigger(\n { asChild = false, className, inset, textValue, children, ...props },\n ref\n) {\n const styles = useStyles()\n const chevron = <ChevronRightIcon className={styles.subTriggerChevron} />\n const child = asChild ? onlySlotChild(children) : undefined\n // The child keeps its own children, so the chevron joins them there.\n const content = child\n ? {\n render: React.cloneElement(\n child,\n undefined,\n (child.props as { children?: React.ReactNode }).children,\n chevron\n ),\n }\n : {\n children: (\n <>\n {children}\n {chevron}\n </>\n ),\n }\n\n return (\n <MenuPrimitive.SubmenuTrigger\n ref={ref}\n data-slot=\"dropdown-menu-sub-trigger\"\n {...{ [SLOT_ATTR]: \"dropdown-menu-sub-trigger\" }}\n label={textValue}\n className={mergeClasses(\n styles.item,\n styles.subTrigger,\n inset && styles.itemInset,\n className\n )}\n {...props}\n {...content}\n />\n )\n})\n\ntype Side = \"top\" | \"right\" | \"bottom\" | \"left\"\ntype Boundary = Element | null\n\n/** Radix's popper props, translated onto Base UI's Positioner. */\ntype PositioningProps = {\n side?: \"top\" | \"right\" | \"bottom\" | \"left\"\n sideOffset?: number\n align?: \"start\" | \"center\" | \"end\"\n alignOffset?: number\n /** Flips and shifts the content to keep it inside the collision boundary. */\n avoidCollisions?: boolean\n collisionBoundary?: Boundary | Boundary[]\n /** Distance from the boundary's edges; `0` unless set. */\n collisionPadding?: number | Partial<Record<Side, number>>\n arrowPadding?: number\n /** `always` keeps the content in the boundary even when its trigger leaves it. */\n sticky?: \"partial\" | \"always\"\n /** Hides the content while its trigger is scrolled out of view. */\n hideWhenDetached?: boolean\n /**\n * Kept for compatibility; has no effect. Base UI repositions the content whenever its trigger\n * or the page moves, and has no per-frame mode.\n */\n updatePositionStrategy?: \"optimized\" | \"always\"\n}\n\nfunction positionerProps({\n side,\n sideOffset,\n align,\n alignOffset,\n avoidCollisions = true,\n collisionBoundary,\n collisionPadding = 0,\n arrowPadding,\n sticky = \"partial\",\n}: PositioningProps) {\n const boundary = (\n Array.isArray(collisionBoundary) ? collisionBoundary : [collisionBoundary]\n ).filter((element): element is Element => element != null)\n\n return {\n side,\n sideOffset,\n align,\n alignOffset,\n arrowPadding,\n collisionPadding,\n sticky: sticky === \"always\",\n ...(boundary.length > 0\n ? { collisionBoundary: boundary.length === 1 ? boundary[0] : boundary }\n : {}),\n ...(avoidCollisions\n ? {}\n : {\n collisionAvoidance: {\n side: \"none\",\n align: \"none\",\n fallbackAxisSide: \"none\",\n } as const,\n }),\n }\n}\n\n/** The menu's open content, nested the way Base UI needs it: Portal > Positioner > Popup. */\nfunction MenuPopupLayer({\n container,\n forceMount,\n hideWhenDetached,\n placement,\n popup,\n}: {\n container: Element | DocumentFragment | null | undefined\n forceMount: true | undefined\n hideWhenDetached: boolean | undefined\n placement: ReturnType<typeof positionerProps>\n popup: React.ReactElement\n}) {\n const styles = useStyles()\n const hasPortal = React.useContext(DropdownMenuPortalPresenceContext)\n const inheritedContainer = React.useContext(DropdownMenuContainerContext)\n const ownContainer =\n container === undefined ? inheritedContainer : portalContainer(container)\n\n const positioner = (\n <MenuPrimitive.Positioner\n className={mergeClasses(\n styles.positioner,\n hideWhenDetached && styles.positionerHideWhenDetached\n )}\n {...placement}\n >\n <DropdownMenuPortalPresenceContext.Provider value={false}>\n <DropdownMenuContainerContext.Provider value={ownContainer}>\n {popup}\n </DropdownMenuContainerContext.Provider>\n </DropdownMenuPortalPresenceContext.Provider>\n </MenuPrimitive.Positioner>\n )\n\n // Base UI's Popup requires a Portal ancestor. An enclosing DropdownMenuPortal is that portal\n // unless the content names a container of its own, as its own portal did under Radix.\n return hasPortal && container === undefined ? (\n positioner\n ) : (\n <MenuPrimitive.Portal container={ownContainer} keepMounted={forceMount}>\n {positioner}\n </MenuPrimitive.Portal>\n )\n}\n\n// Radix's content took no `dir`: the root's applies.\nexport type DropdownMenuSubContentProps = Omit<NativePartProps<\"div\">, \"dir\"> &\n Omit<PositioningProps, \"side\" | \"align\"> & {\n /** Keeps the submenu's content mounted while it is closed. */\n forceMount?: true\n /** Moves the highlight from the last item to the first and back with the arrow keys. */\n loop?: boolean\n }\n\nexport const DropdownMenuSubContent = React.forwardRef<\n HTMLDivElement,\n DropdownMenuSubContentProps\n>(function DropdownMenuSubContent(\n {\n asChild = false,\n className,\n children,\n forceMount,\n loop,\n hideWhenDetached,\n updatePositionStrategy: _updatePositionStrategy,\n sideOffset,\n alignOffset,\n avoidCollisions,\n collisionBoundary,\n collisionPadding,\n arrowPadding,\n sticky,\n ...props\n },\n ref\n) {\n const styles = useStyles()\n // DENSITY-SPEC.md §4.4 — portal content boundary; see dialog.tsx's identical comment. A submenu\n // portals on its own, so it needs the same independent stamp as the top-level content.\n const override = useDensity()\n // SPEC.md §2 rule 3 — the same portal asymmetry, for the appearance pair: re-stamp the\n // nearest explicit AppearanceBoundary's mode+surface, or neither attribute when there is\n // none, leaving live shell inheritance in place.\n const appearance = useAppearanceAttributes()\n const dir = React.useContext(MenuDirContext)\n useLoopOnRoot(loop)\n\n return (\n <MenuPopupLayer\n container={undefined}\n forceMount={forceMount}\n hideWhenDetached={hideWhenDetached}\n placement={positionerProps({\n sideOffset,\n alignOffset,\n avoidCollisions,\n collisionBoundary,\n collisionPadding,\n arrowPadding,\n sticky,\n })}\n popup={\n <MenuPrimitive.Popup\n ref={ref}\n data-slot=\"dropdown-menu-sub-content\"\n {...{ [SLOT_ATTR]: \"dropdown-menu-sub-content\" }}\n {...(override !== undefined ? { \"data-density\": override } : {})}\n {...appearance}\n {...(dir ? { dir } : {})}\n className={mergeClasses(styles.popup, className)}\n {...props}\n {...slotProps(asChild, children)}\n />\n }\n />\n )\n})\n\nexport type DropdownMenuContentProps = Omit<NativePartProps<\"div\">, \"dir\"> &\n PositioningProps & {\n /** The element the content portals into; `document.body` when omitted or null. */\n container?: Element | DocumentFragment | null\n /** Keeps the content mounted while the menu is closed. */\n forceMount?: true\n /** Moves the highlight from the last item to the first and back with the arrow keys. */\n loop?: boolean\n /** Called before focus returns to the trigger on close; `preventDefault()` skips the return. */\n onCloseAutoFocus?: (event: Event) => void\n }\n\nexport const DropdownMenuContent = React.forwardRef<\n HTMLDivElement,\n DropdownMenuContentProps\n>(function DropdownMenuContent(\n {\n asChild = false,\n className,\n children,\n container,\n forceMount,\n loop,\n onCloseAutoFocus,\n hideWhenDetached,\n updatePositionStrategy: _updatePositionStrategy,\n side,\n sideOffset = 4,\n align,\n alignOffset,\n avoidCollisions,\n collisionBoundary,\n collisionPadding,\n arrowPadding,\n sticky,\n ...props\n },\n ref\n) {\n const styles = useStyles()\n // DENSITY-SPEC.md §4.4 — portal content boundary; see dialog.tsx's identical comment.\n const override = useDensity()\n // SPEC.md §2 rule 3 — the same portal asymmetry, for the appearance pair: re-stamp the\n // nearest explicit AppearanceBoundary's mode+surface, or neither attribute when there is\n // none, leaving live shell inheritance in place.\n const appearance = useAppearanceAttributes()\n const dir = React.useContext(MenuDirContext)\n useLoopOnRoot(loop)\n\n return (\n <MenuPopupLayer\n container={container}\n forceMount={forceMount}\n hideWhenDetached={hideWhenDetached}\n placement={positionerProps({\n side,\n sideOffset,\n align,\n alignOffset,\n avoidCollisions,\n collisionBoundary,\n collisionPadding,\n arrowPadding,\n sticky,\n })}\n popup={\n <MenuPrimitive.Popup\n ref={ref}\n data-slot=\"dropdown-menu-content\"\n {...{ [SLOT_ATTR]: \"dropdown-menu-content\" }}\n {...(override !== undefined ? { \"data-density\": override } : {})}\n {...appearance}\n {...(dir ? { dir } : {})}\n finalFocus={radixFocusCallback(onCloseAutoFocus)}\n className={mergeClasses(styles.popup, className)}\n {...props}\n {...slotProps(asChild, children)}\n />\n }\n />\n )\n})\n\nexport type DropdownMenuItemProps = Omit<NativePartProps<\"div\">, \"onSelect\"> &\n RadixItemProps & {\n inset?: boolean\n destructive?: boolean\n }\n\nexport const DropdownMenuItem = React.forwardRef<\n HTMLDivElement,\n DropdownMenuItemProps\n>(function DropdownMenuItem(\n {\n asChild = false,\n children,\n className,\n inset,\n destructive,\n textValue,\n onClick,\n onSelect,\n ...props\n },\n ref\n) {\n const styles = useStyles()\n\n return (\n <MenuPrimitive.Item\n ref={ref}\n data-slot=\"dropdown-menu-item\"\n {...{ [SLOT_ATTR]: \"dropdown-menu-item\" }}\n label={textValue}\n onClick={selectOnClick(onClick, onSelect)}\n className={mergeClasses(\n styles.item,\n inset && styles.itemInset,\n destructive && styles.itemDestructive,\n className\n )}\n {...props}\n {...slotProps(asChild, children)}\n />\n )\n})\n\ntype CheckedState = boolean | \"indeterminate\"\n\nexport type DropdownMenuCheckboxItemProps = Omit<\n NativePartProps<\"div\">,\n \"onSelect\"\n> &\n RadixItemProps & {\n /** `indeterminate` shows the check and reads as mixed; toggling it checks the item. */\n checked?: CheckedState\n /** Called with the new state. Under Base UI the menu stays open after a toggle. */\n onCheckedChange?: (checked: boolean) => void\n }\n\nexport const DropdownMenuCheckboxItem = React.forwardRef<\n HTMLDivElement,\n DropdownMenuCheckboxItemProps\n>(function DropdownMenuCheckboxItem(\n {\n asChild = false,\n className,\n children,\n checked,\n onCheckedChange,\n textValue,\n onClick,\n onSelect,\n ...props\n },\n ref\n) {\n const styles = useStyles()\n const indeterminate = checked === \"indeterminate\"\n const indicator = (\n <span className={styles.itemIndicatorWrapper}>\n <MenuPrimitive.CheckboxItemIndicator className={styles.itemIndicator}>\n <CheckIcon />\n </MenuPrimitive.CheckboxItemIndicator>\n </span>\n )\n const child = asChild ? onlySlotChild(children) : undefined\n\n return (\n <MenuPrimitive.CheckboxItem\n ref={ref}\n data-slot=\"dropdown-menu-checkbox-item\"\n {...{ [SLOT_ATTR]: \"dropdown-menu-checkbox-item\" }}\n label={textValue}\n onClick={selectOnClick(onClick, onSelect)}\n className={mergeClasses(styles.item, styles.itemCheckboxRadio, className)}\n // Base UI's checkbox item has no mixed state: show it checked, announce it mixed, and check\n // it on toggle, as Radix did.\n checked={indeterminate ? true : checked}\n {...(indeterminate ? { \"aria-checked\": \"mixed\" as const } : {})}\n onCheckedChange={\n onCheckedChange\n ? (next: boolean) => onCheckedChange(indeterminate ? true : next)\n : undefined\n }\n {...props}\n {...(child\n ? {\n render: React.cloneElement(\n child,\n undefined,\n indicator,\n (child.props as { children?: React.ReactNode }).children\n ),\n }\n : {\n children: (\n <>\n {indicator}\n {children}\n </>\n ),\n })}\n />\n )\n})\n\nexport type DropdownMenuRadioItemProps = Omit<\n NativePartProps<\"div\">,\n \"onSelect\"\n> &\n RadixItemProps & {\n value: string\n }\n\nexport const DropdownMenuRadioItem = React.forwardRef<\n HTMLDivElement,\n DropdownMenuRadioItemProps\n>(function DropdownMenuRadioItem(\n {\n asChild = false,\n className,\n children,\n textValue,\n onClick,\n onSelect,\n ...props\n },\n ref\n) {\n const styles = useStyles()\n const indicator = (\n <span className={styles.itemIndicatorWrapper}>\n <MenuPrimitive.RadioItemIndicator className={styles.itemIndicator}>\n <CircleIcon />\n </MenuPrimitive.RadioItemIndicator>\n </span>\n )\n const child = asChild ? onlySlotChild(children) : undefined\n\n return (\n <MenuPrimitive.RadioItem\n ref={ref}\n data-slot=\"dropdown-menu-radio-item\"\n {...{ [SLOT_ATTR]: \"dropdown-menu-radio-item\" }}\n label={textValue}\n onClick={selectOnClick(onClick, onSelect)}\n className={mergeClasses(styles.item, styles.itemCheckboxRadio, className)}\n {...props}\n {...(child\n ? {\n render: React.cloneElement(\n child,\n undefined,\n indicator,\n (child.props as { children?: React.ReactNode }).children\n ),\n }\n : {\n children: (\n <>\n {indicator}\n {children}\n </>\n ),\n })}\n />\n )\n})\n\nexport type DropdownMenuLabelProps = NativePartProps<\"div\"> & {\n inset?: boolean\n}\n\n// Base UI's GroupLabel throws outside a Group, and labels stand alone at most call sites (data-table\n// included), so the label stays the plain element Radix rendered.\nexport const DropdownMenuLabel = React.forwardRef<\n HTMLDivElement,\n DropdownMenuLabelProps\n>(function DropdownMenuLabel(\n { asChild = false, children, className, inset, ...props },\n ref\n) {\n const styles = useStyles()\n const slot = slotProps(asChild, children)\n\n return useRender({\n render: \"render\" in slot ? slot.render : <div />,\n ref,\n props: mergeProps<\"div\">(\n {\n \"data-slot\": \"dropdown-menu-label\",\n [SLOT_ATTR]: \"dropdown-menu-label\",\n className: mergeClasses(\n styles.label,\n inset && styles.itemInset,\n className\n ),\n } as React.ComponentProps<\"div\">,\n props,\n \"children\" in slot ? { children: slot.children } : {}\n ),\n })\n})\n\nexport type DropdownMenuSeparatorProps = NativePartProps<\"div\">\n\nexport const DropdownMenuSeparator = React.forwardRef<\n HTMLDivElement,\n DropdownMenuSeparatorProps\n>(function DropdownMenuSeparator(\n { asChild = false, children, className, ...props },\n ref\n) {\n const styles = useStyles()\n\n return (\n <SeparatorPrimitive\n ref={ref}\n data-slot=\"dropdown-menu-separator\"\n {...{ [SLOT_ATTR]: \"dropdown-menu-separator\" }}\n className={mergeClasses(styles.separator, className)}\n {...props}\n {...slotProps(asChild, children)}\n />\n )\n})\n\nexport type DropdownMenuShortcutProps = React.ComponentProps<\"span\">\n\nexport const DropdownMenuShortcut = React.forwardRef<\n HTMLSpanElement,\n DropdownMenuShortcutProps\n>(function DropdownMenuShortcut({ className, ...props }, ref) {\n const styles = useStyles()\n\n return (\n <span\n ref={ref}\n data-slot=\"dropdown-menu-shortcut\"\n {...{ [SLOT_ATTR]: \"dropdown-menu-shortcut\" }}\n className={mergeClasses(styles.shortcut, className)}\n {...props}\n />\n )\n})\n"],"names":["CheckIcon","props","jsx","ChevronRightIcon","CircleIcon","easeOut","easeIn","useStyles","makeZenithStyles","nativeControl","tokens.accentA11","OVERLAY_Z_INDEX","boxModel","tokens.body","tokens.grayA12","shorthands","tokens.radiusXl","tokens.spacingElement1","tokens.spacingElement2","tokens.radiusMd","tokens.textSm","tokens.leadingSm","tokens.accentSoft","tokens.errorA11","tokens.errorSoft","tokens.errorA8","tokens.fontWeightSemibold","tokens.grayA3","tokens.textXs","tokens.leadingXs","tokens.grayA11","onlySlotChild","children","elements","React","slotProps","asChild","child","radixFocusCallback","handler","event","before","moved","escapesClosingASubmenu","honourHandledEscape","onOpenChange","submenu","open","eventDetails","escape","MenuLoopContext","MenuDirContext","useLoopOnRoot","loop","setLoop","DropdownMenu","dir","_ref","root","MenuPrimitive","DirectionProvider","DropdownMenuTrigger","className","ref","styles","nativeButton","SLOT_ATTR","mergeClasses","DropdownMenuGroup","DropdownMenuPortalPresenceContext","DropdownMenuContainerContext","portalContainer","container","DropdownMenuPortal","forceMount","DropdownMenuSub","selectOnClick","onClick","onSelect","DropdownMenuRadioGroup","onValueChange","value","DropdownMenuSubTrigger","inset","textValue","chevron","content","jsxs","Fragment","positionerProps","side","sideOffset","align","alignOffset","avoidCollisions","collisionBoundary","collisionPadding","arrowPadding","sticky","boundary","element","MenuPopupLayer","hideWhenDetached","placement","popup","hasPortal","inheritedContainer","ownContainer","positioner","DropdownMenuSubContent","_updatePositionStrategy","override","useDensity","appearance","useAppearanceAttributes","DropdownMenuContent","onCloseAutoFocus","DropdownMenuItem","destructive","DropdownMenuCheckboxItem","checked","onCheckedChange","indeterminate","indicator","next","DropdownMenuRadioItem","DropdownMenuLabel","slot","useRender","mergeProps","DropdownMenuSeparator","SeparatorPrimitive","DropdownMenuShortcut"],"mappings":"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"}
@@ -1,12 +1,12 @@
1
1
  import { jsx as n, jsxs as I } from "react/jsx-runtime";
2
2
  import * as s from "react";
3
- import { SLOT_ATTR as u, mergeClasses as c, shorthands as m } from "@epilot/zenith-runtime/v1";
3
+ import { SLOT_ATTR as c, mergeClasses as d, shorthands as m } from "@epilot/zenith-runtime/v1";
4
4
  import { makeZenithStyles as L } from "../../styles/make-styles.js";
5
5
  import { boxModel as l, nativeControl as F } from "../../styles/host-reset.js";
6
- import { grayA8 as N, focusRing as v, accentA11 as q, spacingElement2 as p, spacingGroup1 as f, grayA11 as h, spacingElement1 as R, graySoft as P, leadingXs as T, textXs as V, fontWeightSemibold as D, leadingSm as C, textSm as w, grayA12 as g, radiusMd as B, radiusLg as G } from "../../tokens/index.js";
7
- import { Command as k, CommandEmpty as A, CommandGroup as E, CommandInput as j, CommandItem as H, CommandList as W, CommandLoading as z, CommandSeparator as M } from "../command/command.js";
6
+ import { grayA8 as N, focusRing as v, accentA11 as q, spacingElement2 as u, spacingGroup1 as f, grayA11 as h, spacingElement1 as R, graySoft as T, leadingXs as P, textXs as V, fontWeightSemibold as D, leadingSm as C, textSm as w, grayA12 as g, radiusMd as B, radiusLg as G } from "../../tokens/index.js";
7
+ import { Command as k, CommandEmpty as A, CommandGroup as E, CommandInput as j, CommandItem as z, CommandList as H, CommandLoading as W, CommandSeparator as M } from "../command/command.js";
8
8
  import { Label as O } from "../label/label.js";
9
- import { Popover as Z, PopoverPortal as X, PopoverContent as _, PopoverTrigger as $ } from "../popover/popover.js";
9
+ import { Popover as Z, PopoverPortal as X, PopoverContent as $, PopoverTrigger as _ } from "../popover/popover.js";
10
10
  import { useOptionalFieldContext as J } from "./field.js";
11
11
  const K = (a) => /* @__PURE__ */ n(
12
12
  "svg",
@@ -41,14 +41,14 @@ const K = (a) => /* @__PURE__ */ n(
41
41
  ...a,
42
42
  children: /* @__PURE__ */ n("path", { d: "M480-424 284-228q-11 11-28 11t-28-11q-11-11-11-28t11-28l196-196-196-196q-11-11-11-28t11-28q11-11 28-11t28 11l196 196 196-196q11-11 28-11t28 11q11 11 11 28t-11 28L536-480l196 196q11 11 11 28t-11 28q-11 11-28 11t-28-11L480-424Z" })
43
43
  }
44
- ), d = L({
44
+ ), b = L({
45
45
  trigger: {
46
46
  ...F,
47
47
  width: "100%",
48
48
  display: "flex",
49
49
  alignItems: "center",
50
50
  justifyContent: "space-between",
51
- ...m.gap(p),
51
+ ...m.gap(u),
52
52
  ...m.borderRadius(G),
53
53
  backgroundColor: "transparent",
54
54
  fontSize: w,
@@ -66,6 +66,11 @@ const K = (a) => /* @__PURE__ */ n(
66
66
  ":disabled": {
67
67
  cursor: "not-allowed",
68
68
  opacity: 0.5
69
+ },
70
+ // The open-state chevron rotation is declared HERE, on the trigger that carries the state
71
+ // attribute, reaching the chevron by SLOT_ATTR.
72
+ [`&[data-popup-open] [${c}="combobox-icon"]`]: {
73
+ transform: "rotate(180deg)"
69
74
  }
70
75
  },
71
76
  triggerChevron: {
@@ -75,13 +80,11 @@ const K = (a) => /* @__PURE__ */ n(
75
80
  flexShrink: 0,
76
81
  transitionProperty: "transform",
77
82
  transitionDuration: "150ms",
83
+ transitionTimingFunction: "cubic-bezier(0.4, 0, 0.2, 1)",
78
84
  "@media (prefers-reduced-motion: reduce)": {
79
85
  transitionDuration: "0.01ms"
80
86
  },
81
- color: h,
82
- "&[data-popup-open], &[data-open]": {
83
- transform: "rotate(180deg)"
84
- }
87
+ color: h
85
88
  },
86
89
  value: {
87
90
  ...l,
@@ -90,7 +93,7 @@ const K = (a) => /* @__PURE__ */ n(
90
93
  textAlign: "left",
91
94
  flexWrap: "wrap",
92
95
  display: "flex",
93
- ...m.gap(p),
96
+ ...m.gap(u),
94
97
  position: "relative",
95
98
  whiteSpace: "normal",
96
99
  marginRight: "1.25rem"
@@ -110,7 +113,7 @@ const K = (a) => /* @__PURE__ */ n(
110
113
  },
111
114
  list: {
112
115
  ...l,
113
- ...m.padding(p)
116
+ ...m.padding(u)
114
117
  },
115
118
  item: {
116
119
  ...l,
@@ -124,7 +127,7 @@ const K = (a) => /* @__PURE__ */ n(
124
127
  width: "100%",
125
128
  cursor: "default",
126
129
  alignItems: "center",
127
- ...m.gap(p),
130
+ ...m.gap(u),
128
131
  ...m.borderRadius(B),
129
132
  fontSize: w,
130
133
  lineHeight: C,
@@ -134,7 +137,7 @@ const K = (a) => /* @__PURE__ */ n(
134
137
  itemCheckIcon: {
135
138
  ...l,
136
139
  position: "absolute",
137
- right: p,
140
+ right: u,
138
141
  display: "flex",
139
142
  width: "1rem",
140
143
  height: "1rem",
@@ -164,21 +167,21 @@ const K = (a) => /* @__PURE__ */ n(
164
167
  ...l,
165
168
  color: h,
166
169
  fontWeight: D,
167
- paddingLeft: p,
168
- paddingRight: p,
169
- paddingTop: p,
170
- paddingBottom: p,
170
+ paddingLeft: u,
171
+ paddingRight: u,
172
+ paddingTop: u,
173
+ paddingBottom: u,
171
174
  fontSize: V,
172
- lineHeight: T
175
+ lineHeight: P
173
176
  },
174
177
  separator: {
175
178
  ...l,
176
- backgroundColor: P,
179
+ backgroundColor: T,
177
180
  pointerEvents: "none",
178
181
  marginLeft: `calc(-1 * ${R})`,
179
182
  marginRight: `calc(-1 * ${R})`,
180
- marginTop: p,
181
- marginBottom: p,
183
+ marginTop: u,
184
+ marginBottom: u,
182
185
  height: "1px"
183
186
  },
184
187
  loading: {
@@ -186,8 +189,8 @@ const K = (a) => /* @__PURE__ */ n(
186
189
  color: h,
187
190
  paddingLeft: f,
188
191
  paddingRight: f,
189
- paddingTop: p,
190
- paddingBottom: p
192
+ paddingTop: u,
193
+ paddingBottom: u
191
194
  },
192
195
  clear: {
193
196
  ...l,
@@ -242,45 +245,52 @@ const K = (a) => /* @__PURE__ */ n(
242
245
  Z,
243
246
  {
244
247
  "data-slot": "combobox",
245
- [u]: "combobox",
248
+ [c]: "combobox",
246
249
  ...t
247
250
  }
248
251
  );
249
252
  }
250
253
  ), mo = s.forwardRef(function({ className: t, children: o, ...r }, e) {
251
254
  var y;
252
- const b = d(), i = ((y = J()) == null ? void 0 : y.inputRef) ?? null;
255
+ const p = b(), i = ((y = J()) == null ? void 0 : y.inputRef) ?? null;
253
256
  return /* @__PURE__ */ I(
254
- $,
257
+ _,
255
258
  {
256
259
  ref: (x) => {
257
260
  i && (i.current = x), typeof e == "function" ? e(x) : e && (e.current = x);
258
261
  },
259
262
  "data-slot": "select-trigger",
260
- [u]: "select-trigger",
261
- className: c(b.trigger, t),
263
+ [c]: "select-trigger",
264
+ className: d(p.trigger, t),
262
265
  ...r,
263
266
  children: [
264
267
  o,
265
- /* @__PURE__ */ n(Q, { className: b.triggerChevron })
268
+ /* @__PURE__ */ n(
269
+ Q,
270
+ {
271
+ "data-slot": "combobox-icon",
272
+ [c]: "combobox-icon",
273
+ className: p.triggerChevron
274
+ }
275
+ )
266
276
  ]
267
277
  }
268
278
  );
269
- }), co = s.forwardRef(function({ className: t, children: o, container: r, ...e }, b) {
270
- const i = d();
279
+ }), co = s.forwardRef(function({ className: t, children: o, container: r, ...e }, p) {
280
+ const i = b();
271
281
  return /* @__PURE__ */ n(X, { container: r, children: /* @__PURE__ */ n(
272
- _,
282
+ $,
273
283
  {
274
- ref: b,
284
+ ref: p,
275
285
  "data-slot": "combobox-content",
276
- [u]: "combobox-content",
277
- className: c(i.content, t),
286
+ [c]: "combobox-content",
287
+ className: d(i.content, t),
278
288
  ...e,
279
289
  children: /* @__PURE__ */ n(
280
290
  k,
281
291
  {
282
292
  "data-slot": "combobox-command",
283
- [u]: "combobox-command",
293
+ [c]: "combobox-command",
284
294
  className: i.command,
285
295
  children: o
286
296
  }
@@ -288,135 +298,135 @@ const K = (a) => /* @__PURE__ */ n(
288
298
  }
289
299
  ) });
290
300
  }), bo = s.forwardRef(function({ className: t, children: o, ...r }, e) {
291
- const b = d();
301
+ const p = b();
292
302
  return /* @__PURE__ */ n(
293
303
  "div",
294
304
  {
295
305
  ref: e,
296
306
  "data-slot": "combobox-value",
297
- [u]: "combobox-value",
298
- className: c(b.value, t),
307
+ [c]: "combobox-value",
308
+ className: d(p.value, t),
299
309
  ...r,
300
310
  children: o
301
311
  }
302
312
  );
303
313
  }), po = s.forwardRef(function({ className: t, ...o }, r) {
304
- const e = d();
314
+ const e = b();
305
315
  return /* @__PURE__ */ n(
306
316
  j,
307
317
  {
308
318
  ref: r,
309
319
  "data-slot": "combobox-command-input",
310
- [u]: "combobox-command-input",
311
- className: c(e.input, t),
320
+ [c]: "combobox-command-input",
321
+ className: d(e.input, t),
312
322
  ...o
313
323
  }
314
324
  );
315
325
  }), uo = s.forwardRef(function({ className: t, ...o }, r) {
316
- const e = d();
326
+ const e = b();
317
327
  return /* @__PURE__ */ n(
318
- W,
328
+ H,
319
329
  {
320
330
  ref: r,
321
331
  "data-slot": "combobox-command-list",
322
- [u]: "combobox-command-list",
323
- className: c(e.list, t),
332
+ [c]: "combobox-command-list",
333
+ className: d(e.list, t),
324
334
  ...o
325
335
  }
326
336
  );
327
337
  }), go = s.forwardRef(function({ className: t, children: o, ...r }, e) {
328
- const b = d();
338
+ const p = b();
329
339
  return /* @__PURE__ */ n(
330
- H,
340
+ z,
331
341
  {
332
342
  ref: e,
333
343
  "data-slot": "combobox-item",
334
- [u]: "combobox-item",
335
- className: c(b.item, t),
344
+ [c]: "combobox-item",
345
+ className: d(p.item, t),
336
346
  ...r,
337
347
  children: o
338
348
  }
339
349
  );
340
350
  }), xo = s.forwardRef(function({ className: t, ...o }, r) {
341
- const e = d();
351
+ const e = b();
342
352
  return /* @__PURE__ */ n(
343
353
  "span",
344
354
  {
345
355
  ref: r,
346
- className: c(e.itemCheckIcon, t),
356
+ className: d(e.itemCheckIcon, t),
347
357
  ...o,
348
358
  children: /* @__PURE__ */ n(K, { className: e.checkSvg })
349
359
  }
350
360
  );
351
361
  }), fo = s.forwardRef(function({ className: t, ...o }, r) {
352
- const e = d();
362
+ const e = b();
353
363
  return /* @__PURE__ */ n(
354
364
  A,
355
365
  {
356
366
  ref: r,
357
367
  "data-slot": "combobox-empty",
358
- [u]: "combobox-empty",
359
- className: c(e.empty, t),
368
+ [c]: "combobox-empty",
369
+ className: d(e.empty, t),
360
370
  ...o
361
371
  }
362
372
  );
363
373
  }), ho = s.forwardRef(function({ className: t, ...o }, r) {
364
- const e = d();
374
+ const e = b();
365
375
  return /* @__PURE__ */ n(
366
376
  E,
367
377
  {
368
378
  ref: r,
369
379
  "data-slot": "combobox-group",
370
- [u]: "combobox-group",
371
- className: c(e.group, t),
380
+ [c]: "combobox-group",
381
+ className: d(e.group, t),
372
382
  ...o
373
383
  }
374
384
  );
375
385
  }), Co = s.forwardRef(function({ className: t, ...o }, r) {
376
- const e = d();
386
+ const e = b();
377
387
  return /* @__PURE__ */ n(
378
388
  O,
379
389
  {
380
390
  ref: r,
381
391
  "data-slot": "combobox-group-label",
382
- [u]: "combobox-group-label",
383
- className: c(e.groupLabel, t),
392
+ [c]: "combobox-group-label",
393
+ className: d(e.groupLabel, t),
384
394
  ...o
385
395
  }
386
396
  );
387
397
  }), wo = s.forwardRef(function({ className: t, ...o }, r) {
388
- const e = d();
398
+ const e = b();
389
399
  return /* @__PURE__ */ n(
390
400
  M,
391
401
  {
392
402
  ref: r,
393
403
  "data-slot": "select-separator",
394
- [u]: "select-separator",
395
- className: c(e.separator, t),
404
+ [c]: "select-separator",
405
+ className: d(e.separator, t),
396
406
  ...o
397
407
  }
398
408
  );
399
409
  }), yo = s.forwardRef(function({ className: t, ...o }, r) {
400
- const e = d();
410
+ const e = b();
401
411
  return /* @__PURE__ */ n(
402
- z,
412
+ W,
403
413
  {
404
414
  ref: r,
405
415
  "data-slot": "combobox-command-loading",
406
- [u]: "combobox-command-loading",
407
- className: c(e.loading, t),
416
+ [c]: "combobox-command-loading",
417
+ className: d(e.loading, t),
408
418
  ...o
409
419
  }
410
420
  );
411
421
  }), Fo = s.forwardRef(function({ className: t, onClick: o, ...r }, e) {
412
- const b = d();
422
+ const p = b();
413
423
  return /* @__PURE__ */ n(
414
424
  "span",
415
425
  {
416
426
  ref: e,
417
427
  role: "button",
418
428
  tabIndex: 0,
419
- className: c(b.clear, t),
429
+ className: d(p.clear, t),
420
430
  onPointerDown: (i) => {
421
431
  i.preventDefault(), i.stopPropagation();
422
432
  },
@@ -424,28 +434,28 @@ const K = (a) => /* @__PURE__ */ n(
424
434
  i.preventDefault(), i.stopPropagation(), o == null || o(i);
425
435
  },
426
436
  ...r,
427
- children: /* @__PURE__ */ n(S, { className: b.clearSvg })
437
+ children: /* @__PURE__ */ n(S, { className: p.clearSvg })
428
438
  }
429
439
  );
430
440
  }), vo = s.forwardRef(function({ className: t, ...o }, r) {
431
- const e = d();
441
+ const e = b();
432
442
  return /* @__PURE__ */ n(
433
443
  "span",
434
444
  {
435
445
  ref: r,
436
- className: c(e.placeholder, t),
446
+ className: d(e.placeholder, t),
437
447
  ...o
438
448
  }
439
449
  );
440
450
  }), Ro = s.forwardRef(function({ className: t, onClick: o, ...r }, e) {
441
- const b = d();
451
+ const p = b();
442
452
  return /* @__PURE__ */ n(
443
453
  "span",
444
454
  {
445
455
  ref: e,
446
456
  role: "button",
447
457
  tabIndex: 0,
448
- className: c(b.clearValue, t),
458
+ className: d(p.clearValue, t),
449
459
  onPointerDown: (i) => {
450
460
  i.preventDefault(), i.stopPropagation();
451
461
  },
@@ -453,7 +463,7 @@ const K = (a) => /* @__PURE__ */ n(
453
463
  i.preventDefault(), i.stopPropagation(), o == null || o(i);
454
464
  },
455
465
  ...r,
456
- children: /* @__PURE__ */ n(S, { className: b.clearValueSvg })
466
+ children: /* @__PURE__ */ n(S, { className: p.clearValueSvg })
457
467
  }
458
468
  );
459
469
  });