@lobehub/ui 6.0.0-beta.1 → 6.0.0-beta.10

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 (1029) hide show
  1. package/README.md +3 -1
  2. package/es/Accordion/Accordion.mjs +3 -3
  3. package/es/Accordion/Accordion.mjs.map +1 -1
  4. package/es/Accordion/atoms.mjs +2 -2
  5. package/es/Accordion/atoms.mjs.map +1 -1
  6. package/es/Accordion/style.d.mts +1 -1
  7. package/es/ActionIcon/ActionIcon.mjs +2 -2
  8. package/es/ActionIcon/ActionIcon.mjs.map +1 -1
  9. package/es/ActionIcon/style.mjs +1 -1
  10. package/es/ActionIcon/style.mjs.map +1 -1
  11. package/es/ActionIcon/type.d.mts +1 -0
  12. package/es/Alert/Alert.mjs +5 -5
  13. package/es/Alert/Alert.mjs.map +1 -1
  14. package/es/Alert/type.d.mts +1 -0
  15. package/es/Anchor/Anchor.mjs +2 -2
  16. package/es/Anchor/Anchor.mjs.map +1 -1
  17. package/es/AutoComplete/AutoComplete.mjs +5 -5
  18. package/es/AutoComplete/AutoComplete.mjs.map +1 -1
  19. package/es/AutoComplete/style.d.mts +1 -0
  20. package/es/AutoComplete/style.mjs +2 -2
  21. package/es/AutoComplete/style.mjs.map +1 -1
  22. package/es/AutoComplete/type.d.mts +1 -0
  23. package/es/Avatar/Avatar.mjs +2 -2
  24. package/es/Avatar/Avatar.mjs.map +1 -1
  25. package/es/Avatar/AvatarGroup/index.mjs +2 -2
  26. package/es/Avatar/AvatarGroup/index.mjs.map +1 -1
  27. package/es/Breadcrumb/Breadcrumb.mjs +2 -2
  28. package/es/Breadcrumb/Breadcrumb.mjs.map +1 -1
  29. package/es/Button/Button.mjs +1 -1
  30. package/es/Button/Button.mjs.map +1 -1
  31. package/es/Button/style.d.mts +8 -1
  32. package/es/Button/style.mjs +41 -18
  33. package/es/Button/style.mjs.map +1 -1
  34. package/es/Button/type.d.mts +1 -0
  35. package/es/Carousel/Carousel.mjs +1 -1
  36. package/es/Carousel/Carousel.mjs.map +1 -1
  37. package/es/Checkbox/Checkbox.mjs +3 -3
  38. package/es/Checkbox/Checkbox.mjs.map +1 -1
  39. package/es/Checkbox/type.d.mts +1 -0
  40. package/es/CodeDiff/CodeDiff.mjs.map +1 -1
  41. package/es/CodeDiff/DiffPanel.mjs +4 -4
  42. package/es/CodeDiff/DiffPanel.mjs.map +1 -1
  43. package/es/CodeDiff/PatchDiff.mjs.map +1 -1
  44. package/es/CodeDiff/theme.mjs.map +1 -1
  45. package/es/CodeDiff/type.d.mts +2 -2
  46. package/es/CodeEditor/CodeEditor.mjs +5 -5
  47. package/es/CodeEditor/CodeEditor.mjs.map +1 -1
  48. package/es/ColorPicker/ColorInputs.mjs +136 -0
  49. package/es/ColorPicker/ColorInputs.mjs.map +1 -0
  50. package/es/ColorPicker/ColorPanel.mjs +145 -0
  51. package/es/ColorPicker/ColorPanel.mjs.map +1 -0
  52. package/es/ColorPicker/ColorPicker.mjs +63 -200
  53. package/es/ColorPicker/ColorPicker.mjs.map +1 -1
  54. package/es/ColorPicker/SaturationArea.mjs +2 -1
  55. package/es/ColorPicker/SaturationArea.mjs.map +1 -1
  56. package/es/ColorPicker/Swatch.mjs +24 -0
  57. package/es/ColorPicker/Swatch.mjs.map +1 -0
  58. package/es/ColorPicker/Swatches.mjs +66 -0
  59. package/es/ColorPicker/Swatches.mjs.map +1 -0
  60. package/es/ColorPicker/Trigger.mjs +112 -0
  61. package/es/ColorPicker/Trigger.mjs.map +1 -0
  62. package/es/ColorPicker/color.mjs +25 -1
  63. package/es/ColorPicker/color.mjs.map +1 -1
  64. package/es/ColorPicker/recent.mjs +25 -0
  65. package/es/ColorPicker/recent.mjs.map +1 -0
  66. package/es/ColorPicker/style.mjs +269 -70
  67. package/es/ColorPicker/style.mjs.map +1 -1
  68. package/es/ColorPicker/type.d.mts +15 -0
  69. package/es/ColorSwatches/ColorSwatches.mjs +18 -23
  70. package/es/ColorSwatches/ColorSwatches.mjs.map +1 -1
  71. package/es/ColorSwatches/CustomPicker.mjs +101 -0
  72. package/es/ColorSwatches/CustomPicker.mjs.map +1 -0
  73. package/es/ColorSwatches/index.d.mts +2 -2
  74. package/es/ColorSwatches/marker.stylex.mjs +9 -0
  75. package/es/ColorSwatches/marker.stylex.mjs.map +1 -0
  76. package/es/ColorSwatches/style.mjs +36 -0
  77. package/es/ColorSwatches/style.mjs.map +1 -1
  78. package/es/ColorSwatches/type.d.mts +12 -2
  79. package/es/ConfigProvider/cdnAssets.mjs +6 -0
  80. package/es/ConfigProvider/cdnAssets.mjs.map +1 -0
  81. package/es/ConfigProvider/index.mjs +2 -1
  82. package/es/ConfigProvider/index.mjs.map +1 -1
  83. package/es/ContextMenu/ContextMenuHost.mjs +2 -2
  84. package/es/ContextMenu/ContextMenuHost.mjs.map +1 -1
  85. package/es/ContextMenu/ContextMenuTrigger.mjs +2 -2
  86. package/es/ContextMenu/ContextMenuTrigger.mjs.map +1 -1
  87. package/es/ContextMenu/renderItems.mjs +3 -3
  88. package/es/ContextMenu/renderItems.mjs.map +1 -1
  89. package/es/ContextMenu/store.d.mts +0 -1
  90. package/es/ContextMenu/store.mjs.map +1 -1
  91. package/es/DatePicker/DatePicker.d.mts +9 -2
  92. package/es/DatePicker/DatePicker.mjs +15 -85
  93. package/es/DatePicker/DatePicker.mjs.map +1 -1
  94. package/es/DatePicker/DateRangePicker.d.mts +3 -2
  95. package/es/DatePicker/DateRangePicker.mjs +3 -125
  96. package/es/DatePicker/DateRangePicker.mjs.map +1 -1
  97. package/es/DatePicker/DayjsDatePicker.d.mts +12 -0
  98. package/es/DatePicker/DayjsDatePicker.mjs +19 -0
  99. package/es/DatePicker/DayjsDatePicker.mjs.map +1 -0
  100. package/es/DatePicker/DayjsDateRangePicker.d.mts +7 -0
  101. package/es/DatePicker/DayjsDateRangePicker.mjs +8 -0
  102. package/es/DatePicker/DayjsDateRangePicker.mjs.map +1 -0
  103. package/es/DatePicker/PurePanel.mjs +65 -0
  104. package/es/DatePicker/PurePanel.mjs.map +1 -0
  105. package/es/DatePicker/RangePicker.mjs +121 -0
  106. package/es/DatePicker/RangePicker.mjs.map +1 -0
  107. package/es/DatePicker/SinglePicker.mjs +134 -0
  108. package/es/DatePicker/SinglePicker.mjs.map +1 -0
  109. package/es/DatePicker/core/PickerInput/Popup/Footer.mjs +57 -0
  110. package/es/DatePicker/core/PickerInput/Popup/Footer.mjs.map +1 -0
  111. package/es/DatePicker/core/PickerInput/Popup/PopupPanel.mjs +57 -0
  112. package/es/DatePicker/core/PickerInput/Popup/PopupPanel.mjs.map +1 -0
  113. package/es/DatePicker/core/PickerInput/Popup/PresetPanel.mjs +29 -0
  114. package/es/DatePicker/core/PickerInput/Popup/PresetPanel.mjs.map +1 -0
  115. package/es/DatePicker/core/PickerInput/Popup/index.mjs +133 -0
  116. package/es/DatePicker/core/PickerInput/Popup/index.mjs.map +1 -0
  117. package/es/DatePicker/core/PickerInput/RangePicker.d.mts +51 -0
  118. package/es/DatePicker/core/PickerInput/RangePicker.mjs +343 -0
  119. package/es/DatePicker/core/PickerInput/RangePicker.mjs.map +1 -0
  120. package/es/DatePicker/core/PickerInput/Selector/ClearIcon.mjs +27 -0
  121. package/es/DatePicker/core/PickerInput/Selector/ClearIcon.mjs.map +1 -0
  122. package/es/DatePicker/core/PickerInput/Selector/Icon.mjs +19 -0
  123. package/es/DatePicker/core/PickerInput/Selector/Icon.mjs.map +1 -0
  124. package/es/DatePicker/core/PickerInput/Selector/Input.mjs +237 -0
  125. package/es/DatePicker/core/PickerInput/Selector/Input.mjs.map +1 -0
  126. package/es/DatePicker/core/PickerInput/Selector/MaskFormat.mjs +70 -0
  127. package/es/DatePicker/core/PickerInput/Selector/MaskFormat.mjs.map +1 -0
  128. package/es/DatePicker/core/PickerInput/Selector/RangeSelector.d.mts +8 -0
  129. package/es/DatePicker/core/PickerInput/Selector/RangeSelector.mjs +136 -0
  130. package/es/DatePicker/core/PickerInput/Selector/RangeSelector.mjs.map +1 -0
  131. package/es/DatePicker/core/PickerInput/Selector/SingleSelector/HoverSelector.mjs +28 -0
  132. package/es/DatePicker/core/PickerInput/Selector/SingleSelector/HoverSelector.mjs.map +1 -0
  133. package/es/DatePicker/core/PickerInput/Selector/SingleSelector/MultipleDates.mjs +69 -0
  134. package/es/DatePicker/core/PickerInput/Selector/SingleSelector/MultipleDates.mjs.map +1 -0
  135. package/es/DatePicker/core/PickerInput/Selector/SingleSelector/index.mjs +111 -0
  136. package/es/DatePicker/core/PickerInput/Selector/SingleSelector/index.mjs.map +1 -0
  137. package/es/DatePicker/core/PickerInput/Selector/hooks/useClearIcon.mjs +18 -0
  138. package/es/DatePicker/core/PickerInput/Selector/hooks/useClearIcon.mjs.map +1 -0
  139. package/es/DatePicker/core/PickerInput/Selector/hooks/useInputProps.mjs +108 -0
  140. package/es/DatePicker/core/PickerInput/Selector/hooks/useInputProps.mjs.map +1 -0
  141. package/es/DatePicker/core/PickerInput/Selector/hooks/useRootProps.mjs +11 -0
  142. package/es/DatePicker/core/PickerInput/Selector/hooks/useRootProps.mjs.map +1 -0
  143. package/es/DatePicker/core/PickerInput/Selector/util.mjs +20 -0
  144. package/es/DatePicker/core/PickerInput/Selector/util.mjs.map +1 -0
  145. package/es/DatePicker/core/PickerInput/SinglePicker.d.mts +55 -0
  146. package/es/DatePicker/core/PickerInput/SinglePicker.mjs +318 -0
  147. package/es/DatePicker/core/PickerInput/SinglePicker.mjs.map +1 -0
  148. package/es/DatePicker/core/PickerInput/context.mjs +7 -0
  149. package/es/DatePicker/core/PickerInput/context.mjs.map +1 -0
  150. package/es/DatePicker/core/PickerInput/hooks/useCellRender.mjs +30 -0
  151. package/es/DatePicker/core/PickerInput/hooks/useCellRender.mjs.map +1 -0
  152. package/es/DatePicker/core/PickerInput/hooks/useDelayState.mjs +37 -0
  153. package/es/DatePicker/core/PickerInput/hooks/useDelayState.mjs.map +1 -0
  154. package/es/DatePicker/core/PickerInput/hooks/useDisabledBoundary.mjs +18 -0
  155. package/es/DatePicker/core/PickerInput/hooks/useDisabledBoundary.mjs.map +1 -0
  156. package/es/DatePicker/core/PickerInput/hooks/useFieldFormat.mjs +20 -0
  157. package/es/DatePicker/core/PickerInput/hooks/useFieldFormat.mjs.map +1 -0
  158. package/es/DatePicker/core/PickerInput/hooks/useFieldsInvalidate.mjs +31 -0
  159. package/es/DatePicker/core/PickerInput/hooks/useFieldsInvalidate.mjs.map +1 -0
  160. package/es/DatePicker/core/PickerInput/hooks/useFilledProps.mjs +98 -0
  161. package/es/DatePicker/core/PickerInput/hooks/useFilledProps.mjs.map +1 -0
  162. package/es/DatePicker/core/PickerInput/hooks/useFocusEvents.mjs +41 -0
  163. package/es/DatePicker/core/PickerInput/hooks/useFocusEvents.mjs.map +1 -0
  164. package/es/DatePicker/core/PickerInput/hooks/useFocusLock.mjs +34 -0
  165. package/es/DatePicker/core/PickerInput/hooks/useFocusLock.mjs.map +1 -0
  166. package/es/DatePicker/core/PickerInput/hooks/useHoverStore.mjs +35 -0
  167. package/es/DatePicker/core/PickerInput/hooks/useHoverStore.mjs.map +1 -0
  168. package/es/DatePicker/core/PickerInput/hooks/useInputReadOnly.mjs +9 -0
  169. package/es/DatePicker/core/PickerInput/hooks/useInputReadOnly.mjs.map +1 -0
  170. package/es/DatePicker/core/PickerInput/hooks/useInvalidate.mjs +36 -0
  171. package/es/DatePicker/core/PickerInput/hooks/useInvalidate.mjs.map +1 -0
  172. package/es/DatePicker/core/PickerInput/hooks/useLockEffect.mjs +27 -0
  173. package/es/DatePicker/core/PickerInput/hooks/useLockEffect.mjs.map +1 -0
  174. package/es/DatePicker/core/PickerInput/hooks/useOpen.mjs +18 -0
  175. package/es/DatePicker/core/PickerInput/hooks/useOpen.mjs.map +1 -0
  176. package/es/DatePicker/core/PickerInput/hooks/usePickerRef.mjs +19 -0
  177. package/es/DatePicker/core/PickerInput/hooks/usePickerRef.mjs.map +1 -0
  178. package/es/DatePicker/core/PickerInput/hooks/usePresets.mjs +20 -0
  179. package/es/DatePicker/core/PickerInput/hooks/usePresets.mjs.map +1 -0
  180. package/es/DatePicker/core/PickerInput/hooks/useRangeDisabledDate.mjs +24 -0
  181. package/es/DatePicker/core/PickerInput/hooks/useRangeDisabledDate.mjs.map +1 -0
  182. package/es/DatePicker/core/PickerInput/hooks/useRangePickerValue.mjs +107 -0
  183. package/es/DatePicker/core/PickerInput/hooks/useRangePickerValue.mjs.map +1 -0
  184. package/es/DatePicker/core/PickerInput/hooks/useRangeValue.mjs +144 -0
  185. package/es/DatePicker/core/PickerInput/hooks/useRangeValue.mjs.map +1 -0
  186. package/es/DatePicker/core/PickerInput/hooks/useRangeValueChange.mjs +219 -0
  187. package/es/DatePicker/core/PickerInput/hooks/useRangeValueChange.mjs.map +1 -0
  188. package/es/DatePicker/core/PickerInput/hooks/useShowNow.mjs +11 -0
  189. package/es/DatePicker/core/PickerInput/hooks/useShowNow.mjs.map +1 -0
  190. package/es/DatePicker/core/PickerPanel/DatePanel/index.mjs +131 -0
  191. package/es/DatePicker/core/PickerPanel/DatePanel/index.mjs.map +1 -0
  192. package/es/DatePicker/core/PickerPanel/DateTimePanel/index.mjs +35 -0
  193. package/es/DatePicker/core/PickerPanel/DateTimePanel/index.mjs.map +1 -0
  194. package/es/DatePicker/core/PickerPanel/DecadePanel/index.mjs +84 -0
  195. package/es/DatePicker/core/PickerPanel/DecadePanel/index.mjs.map +1 -0
  196. package/es/DatePicker/core/PickerPanel/MonthPanel/index.mjs +73 -0
  197. package/es/DatePicker/core/PickerPanel/MonthPanel/index.mjs.map +1 -0
  198. package/es/DatePicker/core/PickerPanel/PanelBody.mjs +95 -0
  199. package/es/DatePicker/core/PickerPanel/PanelBody.mjs.map +1 -0
  200. package/es/DatePicker/core/PickerPanel/PanelHeader.mjs +130 -0
  201. package/es/DatePicker/core/PickerPanel/PanelHeader.mjs.map +1 -0
  202. package/es/DatePicker/core/PickerPanel/QuarterPanel/index.mjs +64 -0
  203. package/es/DatePicker/core/PickerPanel/QuarterPanel/index.mjs.map +1 -0
  204. package/es/DatePicker/core/PickerPanel/TimePanel/TimeClock/ClockDial.mjs +108 -0
  205. package/es/DatePicker/core/PickerPanel/TimePanel/TimeClock/ClockDial.mjs.map +1 -0
  206. package/es/DatePicker/core/PickerPanel/TimePanel/TimeClock/geometry.mjs +44 -0
  207. package/es/DatePicker/core/PickerPanel/TimePanel/TimeClock/geometry.mjs.map +1 -0
  208. package/es/DatePicker/core/PickerPanel/TimePanel/TimeClock/index.mjs +157 -0
  209. package/es/DatePicker/core/PickerPanel/TimePanel/TimeClock/index.mjs.map +1 -0
  210. package/es/DatePicker/core/PickerPanel/TimePanel/TimePanelBody/TimeColumn.mjs +100 -0
  211. package/es/DatePicker/core/PickerPanel/TimePanel/TimePanelBody/TimeColumn.mjs.map +1 -0
  212. package/es/DatePicker/core/PickerPanel/TimePanel/TimePanelBody/index.mjs +71 -0
  213. package/es/DatePicker/core/PickerPanel/TimePanel/TimePanelBody/index.mjs.map +1 -0
  214. package/es/DatePicker/core/PickerPanel/TimePanel/TimePanelBody/useScrollTo.mjs +62 -0
  215. package/es/DatePicker/core/PickerPanel/TimePanel/TimePanelBody/useScrollTo.mjs.map +1 -0
  216. package/es/DatePicker/core/PickerPanel/TimePanel/TimePanelBody/useTimeState.mjs +200 -0
  217. package/es/DatePicker/core/PickerPanel/TimePanel/TimePanelBody/useTimeState.mjs.map +1 -0
  218. package/es/DatePicker/core/PickerPanel/TimePanel/TimePanelBody/util.mjs +25 -0
  219. package/es/DatePicker/core/PickerPanel/TimePanel/TimePanelBody/util.mjs.map +1 -0
  220. package/es/DatePicker/core/PickerPanel/TimePanel/index.mjs +31 -0
  221. package/es/DatePicker/core/PickerPanel/TimePanel/index.mjs.map +1 -0
  222. package/es/DatePicker/core/PickerPanel/WeekPanel/index.mjs +34 -0
  223. package/es/DatePicker/core/PickerPanel/WeekPanel/index.mjs.map +1 -0
  224. package/es/DatePicker/core/PickerPanel/YearPanel/index.mjs +92 -0
  225. package/es/DatePicker/core/PickerPanel/YearPanel/index.mjs.map +1 -0
  226. package/es/DatePicker/core/PickerPanel/context.mjs +48 -0
  227. package/es/DatePicker/core/PickerPanel/context.mjs.map +1 -0
  228. package/es/DatePicker/core/PickerPanel/index.d.mts +1 -0
  229. package/es/DatePicker/core/PickerPanel/index.mjs +175 -0
  230. package/es/DatePicker/core/PickerPanel/index.mjs.map +1 -0
  231. package/es/DatePicker/core/PickerPopup.mjs +118 -0
  232. package/es/DatePicker/core/PickerPopup.mjs.map +1 -0
  233. package/es/DatePicker/core/generate/dayjs.mjs +109 -0
  234. package/es/DatePicker/core/generate/dayjs.mjs.map +1 -0
  235. package/es/DatePicker/core/generate/index.d.mts +40 -0
  236. package/es/DatePicker/core/hooks/react.mjs +58 -0
  237. package/es/DatePicker/core/hooks/react.mjs.map +1 -0
  238. package/es/DatePicker/core/hooks/useLocale.mjs +51 -0
  239. package/es/DatePicker/core/hooks/useLocale.mjs.map +1 -0
  240. package/es/DatePicker/core/hooks/useSemantic.mjs +20 -0
  241. package/es/DatePicker/core/hooks/useSemantic.mjs.map +1 -0
  242. package/es/DatePicker/core/hooks/useSyncState.mjs +25 -0
  243. package/es/DatePicker/core/hooks/useSyncState.mjs.map +1 -0
  244. package/es/DatePicker/core/hooks/useTimeConfig.mjs +173 -0
  245. package/es/DatePicker/core/hooks/useTimeConfig.mjs.map +1 -0
  246. package/es/DatePicker/core/hooks/useTimeInfo.mjs +110 -0
  247. package/es/DatePicker/core/hooks/useTimeInfo.mjs.map +1 -0
  248. package/es/DatePicker/core/hooks/useToggleDates.mjs +21 -0
  249. package/es/DatePicker/core/hooks/useToggleDates.mjs.map +1 -0
  250. package/es/DatePicker/core/index.d.mts +5 -0
  251. package/es/DatePicker/core/index.mjs +9 -0
  252. package/es/DatePicker/core/index.mjs.map +1 -0
  253. package/es/DatePicker/core/interface.d.mts +325 -0
  254. package/es/DatePicker/core/locale/common.mjs +11 -0
  255. package/es/DatePicker/core/locale/common.mjs.map +1 -0
  256. package/es/DatePicker/core/locale/en_US.mjs +39 -0
  257. package/es/DatePicker/core/locale/en_US.mjs.map +1 -0
  258. package/es/DatePicker/core/utils/common.mjs +73 -0
  259. package/es/DatePicker/core/utils/common.mjs.map +1 -0
  260. package/es/DatePicker/core/utils/dateUtil.mjs +106 -0
  261. package/es/DatePicker/core/utils/dateUtil.mjs.map +1 -0
  262. package/es/DatePicker/core/utils/miscUtil.mjs +46 -0
  263. package/es/DatePicker/core/utils/miscUtil.mjs.map +1 -0
  264. package/es/DatePicker/core/utils/uiUtil.mjs +9 -0
  265. package/es/DatePicker/core/utils/uiUtil.mjs.map +1 -0
  266. package/es/DatePicker/dateGenerateConfig.mjs +52 -0
  267. package/es/DatePicker/dateGenerateConfig.mjs.map +1 -0
  268. package/es/DatePicker/generateConfig.mjs +12 -0
  269. package/es/DatePicker/generateConfig.mjs.map +1 -0
  270. package/es/DatePicker/generatePicker.d.mts +12 -0
  271. package/es/DatePicker/generatePicker.mjs +22 -0
  272. package/es/DatePicker/generatePicker.mjs.map +1 -0
  273. package/es/DatePicker/index.d.mts +8 -3
  274. package/es/DatePicker/index.mjs +5 -1
  275. package/es/DatePicker/legacyDate.mjs +58 -0
  276. package/es/DatePicker/legacyDate.mjs.map +1 -0
  277. package/es/DatePicker/locale.d.mts +15 -0
  278. package/es/DatePicker/locale.mjs +143 -0
  279. package/es/DatePicker/locale.mjs.map +1 -0
  280. package/es/DatePicker/semantic.mjs +29 -0
  281. package/es/DatePicker/semantic.mjs.map +1 -0
  282. package/es/DatePicker/style.mjs +3 -155
  283. package/es/DatePicker/style.mjs.map +1 -1
  284. package/es/DatePicker/type.d.mts +294 -27
  285. package/es/DatePicker/usePanelKeyboard.mjs +230 -0
  286. package/es/DatePicker/usePanelKeyboard.mjs.map +1 -0
  287. package/es/DatePicker/usePickerShared.mjs +106 -0
  288. package/es/DatePicker/usePickerShared.mjs.map +1 -0
  289. package/es/DatePicker/usePresetActive.mjs +49 -0
  290. package/es/DatePicker/usePresetActive.mjs.map +1 -0
  291. package/es/DraggablePanel/atoms.mjs +6 -6
  292. package/es/DraggablePanel/atoms.mjs.map +1 -1
  293. package/es/DraggableSideNav/DraggableSideNav.mjs +5 -5
  294. package/es/DraggableSideNav/DraggableSideNav.mjs.map +1 -1
  295. package/es/Drawer/Drawer.mjs +2 -2
  296. package/es/Drawer/Drawer.mjs.map +1 -1
  297. package/es/Drawer/atoms.d.mts +1 -0
  298. package/es/Drawer/atoms.mjs +7 -7
  299. package/es/Drawer/atoms.mjs.map +1 -1
  300. package/es/Drawer/constants.d.mts +1 -0
  301. package/es/Drawer/style.mjs.map +1 -1
  302. package/es/DropdownMenu/atoms.mjs +23 -23
  303. package/es/DropdownMenu/atoms.mjs.map +1 -1
  304. package/es/DropdownMenu/sharedStyle.mjs +2 -2
  305. package/es/DropdownMenu/sharedStyle.mjs.map +1 -1
  306. package/es/EditableText/ControlInput.mjs +42 -29
  307. package/es/EditableText/ControlInput.mjs.map +1 -1
  308. package/es/EditableText/EditableText.mjs +2 -2
  309. package/es/EditableText/EditableText.mjs.map +1 -1
  310. package/es/EditorSlashMenu/atoms.mjs +12 -12
  311. package/es/EditorSlashMenu/atoms.mjs.map +1 -1
  312. package/es/EmojiPicker/EmojiPicker.mjs +10 -16
  313. package/es/EmojiPicker/EmojiPicker.mjs.map +1 -1
  314. package/es/EmojiPicker/loadEmojiData.mjs +6 -0
  315. package/es/EmojiPicker/loadEmojiData.mjs.map +1 -0
  316. package/es/EmojiPicker/useEmojiMartI18n.mjs +37 -0
  317. package/es/EmojiPicker/useEmojiMartI18n.mjs.map +1 -0
  318. package/es/FileTypeIcon/type.d.mts +1 -0
  319. package/es/FloatingPanel/FloatingPanel.mjs +2 -2
  320. package/es/FloatingPanel/FloatingPanel.mjs.map +1 -1
  321. package/es/FloatingPanel/style.mjs +3 -2
  322. package/es/FloatingPanel/style.mjs.map +1 -1
  323. package/es/Form/type.d.mts +1 -0
  324. package/es/FormKit/List.mjs +2 -2
  325. package/es/FormKit/List.mjs.map +1 -1
  326. package/es/FormKit/engine/tanstack.mjs +1 -1
  327. package/es/FormKit/engine/tanstack.mjs.map +1 -1
  328. package/es/Grid/style.mjs +1 -1
  329. package/es/Grid/style.mjs.map +1 -1
  330. package/es/GroupAvatar/type.d.mts +1 -0
  331. package/es/Highlighter/FullFeatured.mjs +2 -2
  332. package/es/Highlighter/FullFeatured.mjs.map +1 -1
  333. package/es/Highlighter/SyntaxHighlighter/StreamRenderer.mjs +2 -2
  334. package/es/Highlighter/SyntaxHighlighter/StreamRenderer.mjs.map +1 -1
  335. package/es/Highlighter/SyntaxHighlighter/index.mjs +4 -4
  336. package/es/Highlighter/SyntaxHighlighter/index.mjs.map +1 -1
  337. package/es/Highlighter/const.d.mts +1 -0
  338. package/es/Highlighter/style.mjs +2 -2
  339. package/es/Highlighter/style.mjs.map +1 -1
  340. package/es/HotkeyInput/HotkeyInput.mjs +1 -1
  341. package/es/HotkeyInput/HotkeyInput.mjs.map +1 -1
  342. package/es/HtmlPreview/HtmlPreview.mjs +2 -2
  343. package/es/HtmlPreview/HtmlPreview.mjs.map +1 -1
  344. package/es/Icon/Icon.mjs +2 -2
  345. package/es/Icon/Icon.mjs.map +1 -1
  346. package/es/Image/type.d.mts +1 -0
  347. package/es/Image/viewer/ImageViewer.mjs +2 -1
  348. package/es/Image/viewer/ImageViewer.mjs.map +1 -1
  349. package/es/Image/viewer/Toolbar.mjs +19 -6
  350. package/es/Image/viewer/Toolbar.mjs.map +1 -1
  351. package/es/Image/viewer/ViewerChrome.mjs.map +1 -1
  352. package/es/ImageSelect/ImageSelect.mjs +1 -1
  353. package/es/ImageSelect/ImageSelect.mjs.map +1 -1
  354. package/es/Input/Input.mjs +7 -5
  355. package/es/Input/Input.mjs.map +1 -1
  356. package/es/Input/TextArea.mjs +1 -1
  357. package/es/Input/TextArea.mjs.map +1 -1
  358. package/es/Input/style.d.mts +1 -0
  359. package/es/Input/style.mjs +3 -3
  360. package/es/Input/style.mjs.map +1 -1
  361. package/es/Input/type.d.mts +1 -0
  362. package/es/List/ListRow.mjs +3 -3
  363. package/es/List/ListRow.mjs.map +1 -1
  364. package/es/Markdown/Markdown.mjs +2 -2
  365. package/es/Markdown/Markdown.mjs.map +1 -1
  366. package/es/Markdown/Typography.mjs +2 -2
  367. package/es/Markdown/Typography.mjs.map +1 -1
  368. package/es/Markdown/plugins/remarkColor.d.mts +1 -0
  369. package/es/Markdown/plugins/remarkGfmPlus.d.mts +1 -0
  370. package/es/Markdown/plugins/remarkVideo.d.mts +1 -0
  371. package/es/Mermaid/FullFeatured.mjs +2 -2
  372. package/es/Mermaid/FullFeatured.mjs.map +1 -1
  373. package/es/Mermaid/SyntaxMermaid/index.mjs +4 -4
  374. package/es/Mermaid/SyntaxMermaid/index.mjs.map +1 -1
  375. package/es/Mermaid/const.d.mts +1 -0
  376. package/es/Modal/atoms.d.mts +1 -0
  377. package/es/Modal/atoms.mjs +8 -8
  378. package/es/Modal/atoms.mjs.map +1 -1
  379. package/es/Modal/constants.d.mts +1 -0
  380. package/es/Modal/type.d.mts +1 -0
  381. package/es/Pagination/Pagination.mjs +182 -42
  382. package/es/Pagination/Pagination.mjs.map +1 -1
  383. package/es/Pagination/helpers.mjs +3 -3
  384. package/es/Pagination/helpers.mjs.map +1 -1
  385. package/es/Pagination/index.d.mts +2 -2
  386. package/es/Pagination/marker.stylex.mjs +9 -0
  387. package/es/Pagination/marker.stylex.mjs.map +1 -0
  388. package/es/Pagination/style.mjs +74 -4
  389. package/es/Pagination/style.mjs.map +1 -1
  390. package/es/Pagination/type.d.mts +41 -3
  391. package/es/Popover/PopoverInGroup.mjs +3 -3
  392. package/es/Popover/PopoverInGroup.mjs.map +1 -1
  393. package/es/Popover/atoms.mjs +7 -7
  394. package/es/Popover/atoms.mjs.map +1 -1
  395. package/es/Popover/style.mjs +1 -1
  396. package/es/Popover/style.mjs.map +1 -1
  397. package/es/ProTable/ProTable.d.mts +11 -0
  398. package/es/ProTable/ProTable.mjs +208 -0
  399. package/es/ProTable/ProTable.mjs.map +1 -0
  400. package/es/ProTable/hooks/useColumnRequest.mjs +55 -0
  401. package/es/ProTable/hooks/useColumnRequest.mjs.map +1 -0
  402. package/es/ProTable/hooks/useColumnsState.mjs +37 -0
  403. package/es/ProTable/hooks/useColumnsState.mjs.map +1 -0
  404. package/es/ProTable/hooks/useDelayedFlag.mjs +18 -0
  405. package/es/ProTable/hooks/useDelayedFlag.mjs.map +1 -0
  406. package/es/ProTable/hooks/useDensity.mjs +15 -0
  407. package/es/ProTable/hooks/useDensity.mjs.map +1 -0
  408. package/es/ProTable/hooks/useFetchData.mjs +97 -0
  409. package/es/ProTable/hooks/useFetchData.mjs.map +1 -0
  410. package/es/ProTable/hooks/useFullscreen.mjs +22 -0
  411. package/es/ProTable/hooks/useFullscreen.mjs.map +1 -0
  412. package/es/ProTable/hooks/usePageInfo.mjs +35 -0
  413. package/es/ProTable/hooks/usePageInfo.mjs.map +1 -0
  414. package/es/ProTable/hooks/useProColumns.mjs +123 -0
  415. package/es/ProTable/hooks/useProColumns.mjs.map +1 -0
  416. package/es/ProTable/hooks/useProLoading.mjs +19 -0
  417. package/es/ProTable/hooks/useProLoading.mjs.map +1 -0
  418. package/es/ProTable/hooks/useProLocale.mjs +22 -0
  419. package/es/ProTable/hooks/useProLocale.mjs.map +1 -0
  420. package/es/ProTable/hooks/useProRequest.mjs +137 -0
  421. package/es/ProTable/hooks/useProRequest.mjs.map +1 -0
  422. package/es/ProTable/hooks/useRowCache.mjs +11 -0
  423. package/es/ProTable/hooks/useRowCache.mjs.map +1 -0
  424. package/es/ProTable/hooks/useSearchForm.mjs +141 -0
  425. package/es/ProTable/hooks/useSearchForm.mjs.map +1 -0
  426. package/es/ProTable/hooks/useTableBindings.mjs +39 -0
  427. package/es/ProTable/hooks/useTableBindings.mjs.map +1 -0
  428. package/es/ProTable/hooks/useTableSelection.mjs +14 -0
  429. package/es/ProTable/hooks/useTableSelection.mjs.map +1 -0
  430. package/es/ProTable/index.d.mts +4 -0
  431. package/es/ProTable/index.d.ts +1 -0
  432. package/es/ProTable/index.js +1 -0
  433. package/es/ProTable/index.mjs +3 -0
  434. package/es/ProTable/locale.d.mts +15 -0
  435. package/es/ProTable/locale.mjs +66 -0
  436. package/es/ProTable/locale.mjs.map +1 -0
  437. package/es/ProTable/parts/ColumnSetting.mjs +155 -0
  438. package/es/ProTable/parts/ColumnSetting.mjs.map +1 -0
  439. package/es/ProTable/parts/FieldControl.mjs +117 -0
  440. package/es/ProTable/parts/FieldControl.mjs.map +1 -0
  441. package/es/ProTable/parts/KeywordInput.mjs +19 -0
  442. package/es/ProTable/parts/KeywordInput.mjs.map +1 -0
  443. package/es/ProTable/parts/LightFilter.mjs +70 -0
  444. package/es/ProTable/parts/LightFilter.mjs.map +1 -0
  445. package/es/ProTable/parts/OptionPopover.mjs +17 -0
  446. package/es/ProTable/parts/OptionPopover.mjs.map +1 -0
  447. package/es/ProTable/parts/SearchForm.mjs +180 -0
  448. package/es/ProTable/parts/SearchForm.mjs.map +1 -0
  449. package/es/ProTable/parts/SearchSection.mjs +33 -0
  450. package/es/ProTable/parts/SearchSection.mjs.map +1 -0
  451. package/es/ProTable/parts/TableAlert.mjs +38 -0
  452. package/es/ProTable/parts/TableAlert.mjs.map +1 -0
  453. package/es/ProTable/parts/Toolbar.mjs +50 -0
  454. package/es/ProTable/parts/Toolbar.mjs.map +1 -0
  455. package/es/ProTable/parts/ToolbarOptions.mjs +103 -0
  456. package/es/ProTable/parts/ToolbarOptions.mjs.map +1 -0
  457. package/es/ProTable/parts/renderValue.mjs +118 -0
  458. package/es/ProTable/parts/renderValue.mjs.map +1 -0
  459. package/es/ProTable/style.mjs +278 -0
  460. package/es/ProTable/style.mjs.map +1 -0
  461. package/es/ProTable/type.d.mts +397 -0
  462. package/es/ProTable/utils.mjs +152 -0
  463. package/es/ProTable/utils.mjs.map +1 -0
  464. package/es/Radio/Radio.mjs +3 -3
  465. package/es/Radio/Radio.mjs.map +1 -1
  466. package/es/Radio/type.d.mts +1 -0
  467. package/es/Rate/Rate.mjs +1 -1
  468. package/es/Rate/Rate.mjs.map +1 -1
  469. package/es/ScrollArea/atoms.mjs +4 -4
  470. package/es/ScrollArea/atoms.mjs.map +1 -1
  471. package/es/ScrollShadow/ScrollShadow.mjs +1 -1
  472. package/es/ScrollShadow/ScrollShadow.mjs.map +1 -1
  473. package/es/SearchBar/SearchBar.mjs +31 -25
  474. package/es/SearchBar/SearchBar.mjs.map +1 -1
  475. package/es/Segmented/Segmented.mjs +4 -4
  476. package/es/Segmented/Segmented.mjs.map +1 -1
  477. package/es/Segmented/atoms.d.mts +1 -0
  478. package/es/Segmented/atoms.mjs +2 -2
  479. package/es/Segmented/atoms.mjs.map +1 -1
  480. package/es/Select/Select.mjs +22 -13
  481. package/es/Select/Select.mjs.map +1 -1
  482. package/es/Select/atoms.mjs +5 -5
  483. package/es/Select/atoms.mjs.map +1 -1
  484. package/es/Select/helpers.mjs +8 -1
  485. package/es/Select/helpers.mjs.map +1 -1
  486. package/es/Select/hooks.mjs +8 -4
  487. package/es/Select/hooks.mjs.map +1 -1
  488. package/es/Select/renderOptions.mjs +2 -2
  489. package/es/Select/renderOptions.mjs.map +1 -1
  490. package/es/Select/type.d.mts +7 -0
  491. package/es/Slider/type.d.mts +1 -0
  492. package/es/Switch/Switch.mjs +2 -2
  493. package/es/Switch/Switch.mjs.map +1 -1
  494. package/es/Switch/atoms.d.mts +1 -0
  495. package/es/Switch/atoms.mjs +3 -3
  496. package/es/Switch/atoms.mjs.map +1 -1
  497. package/es/Table/Column.d.mts +8 -0
  498. package/es/Table/Column.mjs +6 -0
  499. package/es/Table/Column.mjs.map +1 -0
  500. package/es/Table/ColumnGroup.d.mts +11 -0
  501. package/es/Table/ColumnGroup.mjs +6 -0
  502. package/es/Table/ColumnGroup.mjs.map +1 -0
  503. package/es/Table/Table.d.mts +16 -2
  504. package/es/Table/Table.mjs +149 -118
  505. package/es/Table/Table.mjs.map +1 -1
  506. package/es/Table/atoms/cells.d.mts +42 -0
  507. package/es/Table/atoms/cells.mjs +72 -0
  508. package/es/Table/atoms/cells.mjs.map +1 -0
  509. package/es/Table/atoms/index.d.mts +3 -0
  510. package/es/Table/atoms/layout.d.mts +44 -0
  511. package/es/Table/atoms/layout.mjs +62 -0
  512. package/es/Table/atoms/layout.mjs.map +1 -0
  513. package/es/Table/constants.mjs +16 -0
  514. package/es/Table/constants.mjs.map +1 -0
  515. package/es/Table/engine/fixed.d.mts +1 -0
  516. package/es/Table/engine/fixed.mjs +53 -0
  517. package/es/Table/engine/fixed.mjs.map +1 -0
  518. package/es/Table/engine/types.d.mts +1 -0
  519. package/es/Table/engine/useTableEngine.mjs +180 -0
  520. package/es/Table/engine/useTableEngine.mjs.map +1 -0
  521. package/es/Table/index.d.mts +7 -2
  522. package/es/Table/index.mjs +4 -1
  523. package/es/Table/internal.d.mts +3 -0
  524. package/es/Table/pipeline/columnUtils.d.mts +5 -0
  525. package/es/Table/pipeline/columnUtils.mjs +58 -0
  526. package/es/Table/pipeline/columnUtils.mjs.map +1 -0
  527. package/es/Table/pipeline/convertChildrenToColumns.mjs +24 -0
  528. package/es/Table/pipeline/convertChildrenToColumns.mjs.map +1 -0
  529. package/es/Table/pipeline/normalizeColumns.mjs +140 -0
  530. package/es/Table/pipeline/normalizeColumns.mjs.map +1 -0
  531. package/es/Table/pipeline/selectionUtils.d.mts +9 -0
  532. package/es/Table/pipeline/selectionUtils.mjs +115 -0
  533. package/es/Table/pipeline/selectionUtils.mjs.map +1 -0
  534. package/es/Table/pipeline/useBreakpoint.mjs +36 -0
  535. package/es/Table/pipeline/useBreakpoint.mjs.map +1 -0
  536. package/es/Table/pipeline/useExpandable.mjs +45 -0
  537. package/es/Table/pipeline/useExpandable.mjs.map +1 -0
  538. package/es/Table/pipeline/useFilter.mjs +52 -0
  539. package/es/Table/pipeline/useFilter.mjs.map +1 -0
  540. package/es/Table/pipeline/useSelection.mjs +302 -0
  541. package/es/Table/pipeline/useSelection.mjs.map +1 -0
  542. package/es/Table/pipeline/useSorter.mjs +146 -0
  543. package/es/Table/pipeline/useSorter.mjs.map +1 -0
  544. package/es/Table/pipeline/useTableLocale.mjs +30 -0
  545. package/es/Table/pipeline/useTableLocale.mjs.map +1 -0
  546. package/es/Table/pipeline/useTableState.mjs +118 -0
  547. package/es/Table/pipeline/useTableState.mjs.map +1 -0
  548. package/es/Table/pipeline/useVirtualLayout.mjs +80 -0
  549. package/es/Table/pipeline/useVirtualLayout.mjs.map +1 -0
  550. package/es/Table/render/Body.mjs +150 -0
  551. package/es/Table/render/Body.mjs.map +1 -0
  552. package/es/Table/render/BodyCell.mjs +87 -0
  553. package/es/Table/render/BodyCell.mjs.map +1 -0
  554. package/es/Table/render/CellShell.mjs +84 -0
  555. package/es/Table/render/CellShell.mjs.map +1 -0
  556. package/es/Table/render/ExpandIcon.mjs +28 -0
  557. package/es/Table/render/ExpandIcon.mjs.map +1 -0
  558. package/es/Table/render/FilterDropdown.mjs +139 -0
  559. package/es/Table/render/FilterDropdown.mjs.map +1 -0
  560. package/es/Table/render/FilterPanel.mjs +152 -0
  561. package/es/Table/render/FilterPanel.mjs.map +1 -0
  562. package/es/Table/render/FixedFrost.mjs +113 -0
  563. package/es/Table/render/FixedFrost.mjs.map +1 -0
  564. package/es/Table/render/FixedHolder.mjs +51 -0
  565. package/es/Table/render/FixedHolder.mjs.map +1 -0
  566. package/es/Table/render/Header.mjs +184 -0
  567. package/es/Table/render/Header.mjs.map +1 -0
  568. package/es/Table/render/LoadingSkeleton.mjs +78 -0
  569. package/es/Table/render/LoadingSkeleton.mjs.map +1 -0
  570. package/es/Table/render/PaginationBar.mjs +71 -0
  571. package/es/Table/render/PaginationBar.mjs.map +1 -0
  572. package/es/Table/render/SelectionCells.mjs +111 -0
  573. package/es/Table/render/SelectionCells.mjs.map +1 -0
  574. package/es/Table/render/StickyScrollBar.mjs +99 -0
  575. package/es/Table/render/StickyScrollBar.mjs.map +1 -0
  576. package/es/Table/render/Summary.d.mts +16 -0
  577. package/es/Table/render/Summary.mjs +58 -0
  578. package/es/Table/render/Summary.mjs.map +1 -0
  579. package/es/Table/render/TableView.mjs +215 -0
  580. package/es/Table/render/TableView.mjs.map +1 -0
  581. package/es/Table/render/VirtualBody.mjs +101 -0
  582. package/es/Table/render/VirtualBody.mjs.map +1 -0
  583. package/es/Table/render/context.mjs +15 -0
  584. package/es/Table/render/context.mjs.map +1 -0
  585. package/es/Table/render/filterUtils.mjs +22 -0
  586. package/es/Table/render/filterUtils.mjs.map +1 -0
  587. package/es/Table/render/tableHelpers.mjs +27 -0
  588. package/es/Table/render/tableHelpers.mjs.map +1 -0
  589. package/es/Table/render/useColGroups.mjs +23 -0
  590. package/es/Table/render/useColGroups.mjs.map +1 -0
  591. package/es/Table/render/useScrollSync.mjs +104 -0
  592. package/es/Table/render/useScrollSync.mjs.map +1 -0
  593. package/es/Table/render/useViewContexts.mjs +134 -0
  594. package/es/Table/render/useViewContexts.mjs.map +1 -0
  595. package/es/Table/semantic.mjs +45 -0
  596. package/es/Table/semantic.mjs.map +1 -0
  597. package/es/Table/store/createTableStore.d.mts +1 -0
  598. package/es/Table/store/createTableStore.mjs +40 -0
  599. package/es/Table/store/createTableStore.mjs.map +1 -0
  600. package/es/Table/store/hooks.mjs +24 -0
  601. package/es/Table/store/hooks.mjs.map +1 -0
  602. package/es/Table/style.mjs +175 -90
  603. package/es/Table/style.mjs.map +1 -1
  604. package/es/Table/type.d.mts +467 -37
  605. package/es/Table/useTableController.mjs +293 -0
  606. package/es/Table/useTableController.mjs.map +1 -0
  607. package/es/Tabs/Tabs.mjs +37 -23
  608. package/es/Tabs/Tabs.mjs.map +1 -1
  609. package/es/Tabs/atoms.mjs +2 -2
  610. package/es/Tabs/atoms.mjs.map +1 -1
  611. package/es/Tag/Tag.mjs +2 -2
  612. package/es/Tag/Tag.mjs.map +1 -1
  613. package/es/Text/Text.mjs +2 -2
  614. package/es/Text/Text.mjs.map +1 -1
  615. package/es/Text/style.d.mts +4 -3
  616. package/es/Text/style.mjs +3 -3
  617. package/es/Text/style.mjs.map +1 -1
  618. package/es/Toast/dodge.mjs +0 -1
  619. package/es/Toast/dodge.mjs.map +1 -1
  620. package/es/Toast/dodge.stylex.mjs +1 -4
  621. package/es/Toast/dodge.stylex.mjs.map +1 -1
  622. package/es/Toast/style.mjs +1 -1
  623. package/es/Toast/style.mjs.map +1 -1
  624. package/es/ToggleGroup/ToggleGroup.mjs +4 -4
  625. package/es/ToggleGroup/ToggleGroup.mjs.map +1 -1
  626. package/es/ToggleGroup/atoms.d.mts +1 -0
  627. package/es/ToggleGroup/atoms.mjs +2 -2
  628. package/es/ToggleGroup/atoms.mjs.map +1 -1
  629. package/es/Tooltip/TooltipGroup.mjs +3 -3
  630. package/es/Tooltip/TooltipGroup.mjs.map +1 -1
  631. package/es/Tooltip/TooltipInGroup.mjs +1 -1
  632. package/es/Tooltip/TooltipInGroup.mjs.map +1 -1
  633. package/es/Tooltip/TooltipStandalone.mjs +4 -4
  634. package/es/Tooltip/TooltipStandalone.mjs.map +1 -1
  635. package/es/Tooltip/style.mjs +2 -2
  636. package/es/Tooltip/style.mjs.map +1 -1
  637. package/es/Tree/Tree.mjs +3 -3
  638. package/es/Tree/Tree.mjs.map +1 -1
  639. package/es/Tree/TreeNode.mjs +2 -2
  640. package/es/Tree/TreeNode.mjs.map +1 -1
  641. package/es/Video/Video.mjs +46 -0
  642. package/es/Video/Video.mjs.map +1 -0
  643. package/es/Video/context.mjs +14 -0
  644. package/es/Video/context.mjs.map +1 -0
  645. package/es/Video/index.d.mts +23 -39
  646. package/es/Video/index.mjs +21 -111
  647. package/es/Video/index.mjs.map +1 -1
  648. package/es/Video/parts/Caption.d.mts +9 -0
  649. package/es/Video/parts/Caption.mjs +37 -0
  650. package/es/Video/parts/Caption.mjs.map +1 -0
  651. package/es/Video/parts/CenterPlay.d.mts +8 -0
  652. package/es/Video/parts/CenterPlay.mjs +34 -0
  653. package/es/Video/parts/CenterPlay.mjs.map +1 -0
  654. package/es/Video/parts/Controls.d.mts +9 -0
  655. package/es/Video/parts/Controls.mjs +128 -0
  656. package/es/Video/parts/Controls.mjs.map +1 -0
  657. package/es/Video/parts/Frame.d.mts +9 -0
  658. package/es/Video/parts/Frame.mjs +101 -0
  659. package/es/Video/parts/Frame.mjs.map +1 -0
  660. package/es/Video/parts/HoverPreview.mjs +93 -0
  661. package/es/Video/parts/HoverPreview.mjs.map +1 -0
  662. package/es/Video/parts/LoadError.d.mts +8 -0
  663. package/es/Video/parts/LoadError.mjs +47 -0
  664. package/es/Video/parts/LoadError.mjs.map +1 -0
  665. package/es/Video/parts/PlayPauseIcon.mjs +48 -0
  666. package/es/Video/parts/PlayPauseIcon.mjs.map +1 -0
  667. package/es/Video/parts/RateMenu.mjs +48 -0
  668. package/es/Video/parts/RateMenu.mjs.map +1 -0
  669. package/es/Video/parts/Root.d.mts +9 -0
  670. package/es/Video/parts/Root.mjs +110 -0
  671. package/es/Video/parts/Root.mjs.map +1 -0
  672. package/es/Video/parts/SectionList.d.mts +9 -0
  673. package/es/Video/parts/SectionList.mjs +32 -0
  674. package/es/Video/parts/SectionList.mjs.map +1 -0
  675. package/es/Video/parts/SectionMenu.mjs +63 -0
  676. package/es/Video/parts/SectionMenu.mjs.map +1 -0
  677. package/es/Video/parts/Timeline.d.mts +9 -0
  678. package/es/Video/parts/Timeline.mjs +169 -0
  679. package/es/Video/parts/Timeline.mjs.map +1 -0
  680. package/es/Video/store.mjs +241 -0
  681. package/es/Video/store.mjs.map +1 -0
  682. package/es/Video/style.mjs +393 -23
  683. package/es/Video/style.mjs.map +1 -1
  684. package/es/Video/time.mjs +60 -0
  685. package/es/Video/time.mjs.map +1 -0
  686. package/es/Video/type.d.mts +125 -0
  687. package/es/Video/useControlsIdle.mjs +39 -0
  688. package/es/Video/useControlsIdle.mjs.map +1 -0
  689. package/es/Video/useFullscreen.mjs +17 -0
  690. package/es/Video/useFullscreen.mjs.map +1 -0
  691. package/es/Video/useKeyboard.mjs +60 -0
  692. package/es/Video/useKeyboard.mjs.map +1 -0
  693. package/es/Video/useVideo.d.mts +9 -0
  694. package/es/Video/useVideo.mjs +17 -0
  695. package/es/Video/useVideo.mjs.map +1 -0
  696. package/es/awesome/Features/FeatureItem.mjs +2 -2
  697. package/es/awesome/Features/FeatureItem.mjs.map +1 -1
  698. package/es/awesome/Giscus/style.mjs +9 -9
  699. package/es/awesome/Giscus/style.mjs.map +1 -1
  700. package/es/awesome/Grainient/Grainient.d.mts +11 -0
  701. package/es/awesome/Grainient/Grainient.mjs +314 -0
  702. package/es/awesome/Grainient/Grainient.mjs.map +1 -0
  703. package/es/awesome/Grainient/index.d.mts +3 -0
  704. package/es/awesome/Grainient/style.mjs +23 -0
  705. package/es/awesome/Grainient/style.mjs.map +1 -0
  706. package/es/awesome/Grainient/type.d.mts +121 -0
  707. package/es/awesome/GridBackground/GridBackground.mjs +1 -1
  708. package/es/awesome/GridBackground/GridBackground.mjs.map +1 -1
  709. package/es/awesome/GridBackground/GridShowcase.mjs +4 -4
  710. package/es/awesome/GridBackground/GridShowcase.mjs.map +1 -1
  711. package/es/awesome/Hero/Hero.mjs +3 -3
  712. package/es/awesome/Hero/Hero.mjs.map +1 -1
  713. package/es/awesome/InstallBanner/InstallBanner.mjs +2 -2
  714. package/es/awesome/InstallBanner/InstallBanner.mjs.map +1 -1
  715. package/es/awesome/LandingHero/LandingHero.mjs +3 -3
  716. package/es/awesome/LandingHero/LandingHero.mjs.map +1 -1
  717. package/es/awesome/LogoMarquee/LogoMarquee.mjs +2 -2
  718. package/es/awesome/LogoMarquee/LogoMarquee.mjs.map +1 -1
  719. package/es/awesome/Spline/ParentSize.mjs +1 -1
  720. package/es/awesome/Spline/ParentSize.mjs.map +1 -1
  721. package/es/awesome/TypewriterEffect/TypewriterEffect.mjs +4 -4
  722. package/es/awesome/TypewriterEffect/TypewriterEffect.mjs.map +1 -1
  723. package/es/awesome/index.d.mts +4 -1
  724. package/es/awesome/index.mjs +2 -1
  725. package/es/awesome/landingActions.mjs +2 -2
  726. package/es/awesome/landingActions.mjs.map +1 -1
  727. package/es/chat/BackBottom/BackBottom.mjs +1 -1
  728. package/es/chat/BackBottom/BackBottom.mjs.map +1 -1
  729. package/es/chat/BackBottom/type.d.mts +2 -2
  730. package/es/chat/ChatItem/ChatItem.mjs +2 -2
  731. package/es/chat/ChatItem/ChatItem.mjs.map +1 -1
  732. package/es/chat/EditableMessage/EditableMessage.mjs +4 -4
  733. package/es/chat/EditableMessage/EditableMessage.mjs.map +1 -1
  734. package/es/chat/EditableMessageList/EditableMessageList.mjs +2 -2
  735. package/es/chat/EditableMessageList/EditableMessageList.mjs.map +1 -1
  736. package/es/chat/EditableMessageList/messageReducer.mjs +30 -23
  737. package/es/chat/EditableMessageList/messageReducer.mjs.map +1 -1
  738. package/es/chat/MessageInput/MessageInput.mjs +3 -3
  739. package/es/chat/MessageInput/MessageInput.mjs.map +1 -1
  740. package/es/chat/MessageModal/MessageModal.mjs +1 -1
  741. package/es/chat/MessageModal/MessageModal.mjs.map +1 -1
  742. package/es/chat/TokenTag/TokenTag.mjs +2 -3
  743. package/es/chat/TokenTag/TokenTag.mjs.map +1 -1
  744. package/es/color/status/error.mjs +67 -0
  745. package/es/color/status/error.mjs.map +1 -0
  746. package/es/color/status/index.mjs +15 -0
  747. package/es/color/status/index.mjs.map +1 -0
  748. package/es/color/status/info.mjs +67 -0
  749. package/es/color/status/info.mjs.map +1 -0
  750. package/es/color/status/success.mjs +67 -0
  751. package/es/color/status/success.mjs.map +1 -0
  752. package/es/color/status/warning.mjs +67 -0
  753. package/es/color/status/warning.mjs.map +1 -0
  754. package/es/color/types.d.mts +1 -0
  755. package/es/dashboard/AuthLayout/Aside.d.mts +10 -0
  756. package/es/dashboard/AuthLayout/Aside.mjs +31 -0
  757. package/es/dashboard/AuthLayout/Aside.mjs.map +1 -0
  758. package/es/dashboard/AuthLayout/AuthLayout.d.mts +3 -1
  759. package/es/dashboard/AuthLayout/AuthLayout.mjs +97 -37
  760. package/es/dashboard/AuthLayout/AuthLayout.mjs.map +1 -1
  761. package/es/dashboard/AuthLayout/index.d.mts +3 -2
  762. package/es/dashboard/AuthLayout/style.mjs +109 -1
  763. package/es/dashboard/AuthLayout/style.mjs.map +1 -1
  764. package/es/dashboard/AuthLayout/type.d.mts +38 -2
  765. package/es/dashboard/AuthTools/AuthLocaleSwitch.d.mts +10 -0
  766. package/es/dashboard/AuthTools/AuthLocaleSwitch.mjs +33 -0
  767. package/es/dashboard/AuthTools/AuthLocaleSwitch.mjs.map +1 -0
  768. package/es/dashboard/AuthTools/AuthThemeSwitch.d.mts +10 -0
  769. package/es/dashboard/AuthTools/AuthThemeSwitch.mjs +59 -0
  770. package/es/dashboard/AuthTools/AuthThemeSwitch.mjs.map +1 -0
  771. package/es/dashboard/AuthTools/index.d.mts +4 -0
  772. package/es/dashboard/AuthTools/style.mjs +27 -0
  773. package/es/dashboard/AuthTools/style.mjs.map +1 -0
  774. package/es/dashboard/AuthTools/type.d.mts +29 -0
  775. package/es/dashboard/ChartGrid/ChartGrid.d.mts +10 -0
  776. package/es/dashboard/ChartGrid/ChartGrid.mjs +19 -0
  777. package/es/dashboard/ChartGrid/ChartGrid.mjs.map +1 -0
  778. package/es/dashboard/ChartGrid/index.d.mts +3 -0
  779. package/es/dashboard/ChartGrid/style.mjs +18 -0
  780. package/es/dashboard/ChartGrid/style.mjs.map +1 -0
  781. package/es/dashboard/ChartGrid/type.d.mts +8 -0
  782. package/es/dashboard/ConsoleNav/ConsoleNav.mjs +3 -3
  783. package/es/dashboard/ConsoleNav/ConsoleNav.mjs.map +1 -1
  784. package/es/dashboard/ConsoleNav/Skeleton.d.mts +15 -0
  785. package/es/dashboard/ConsoleNav/Skeleton.mjs +82 -0
  786. package/es/dashboard/ConsoleNav/Skeleton.mjs.map +1 -0
  787. package/es/dashboard/ConsoleNav/index.d.mts +3 -2
  788. package/es/dashboard/ConsoleNav/style.mjs +20 -2
  789. package/es/dashboard/ConsoleNav/style.mjs.map +1 -1
  790. package/es/dashboard/ConsoleNav/type.d.mts +13 -0
  791. package/es/dashboard/ConsoleShell/ConsoleShell.d.mts +1 -1
  792. package/es/dashboard/ConsoleShell/ConsoleShell.mjs +26 -6
  793. package/es/dashboard/ConsoleShell/ConsoleShell.mjs.map +1 -1
  794. package/es/dashboard/ConsoleShell/style.mjs +11 -1
  795. package/es/dashboard/ConsoleShell/style.mjs.map +1 -1
  796. package/es/dashboard/ConsoleShell/type.d.mts +11 -0
  797. package/es/dashboard/FilterSidebar/FilterSidebar.mjs +18 -17
  798. package/es/dashboard/FilterSidebar/FilterSidebar.mjs.map +1 -1
  799. package/es/dashboard/FilterSidebar/style.mjs +2 -2
  800. package/es/dashboard/FilterSidebar/style.mjs.map +1 -1
  801. package/es/dashboard/FilterStrip/FilterStrip.d.mts +11 -0
  802. package/es/dashboard/FilterStrip/FilterStrip.mjs +55 -0
  803. package/es/dashboard/FilterStrip/FilterStrip.mjs.map +1 -0
  804. package/es/dashboard/FilterStrip/index.d.mts +3 -0
  805. package/es/dashboard/FilterStrip/style.mjs +78 -0
  806. package/es/dashboard/FilterStrip/style.mjs.map +1 -0
  807. package/es/dashboard/FilterStrip/type.d.mts +25 -0
  808. package/es/dashboard/LabelWithKey/LabelWithKey.d.mts +10 -0
  809. package/es/dashboard/LabelWithKey/LabelWithKey.mjs +18 -0
  810. package/es/dashboard/LabelWithKey/LabelWithKey.mjs.map +1 -0
  811. package/es/dashboard/LabelWithKey/index.d.mts +3 -0
  812. package/es/dashboard/LabelWithKey/type.d.mts +11 -0
  813. package/es/dashboard/MetricStrip/MetricCell.mjs +92 -0
  814. package/es/dashboard/MetricStrip/MetricCell.mjs.map +1 -0
  815. package/es/dashboard/MetricStrip/MetricStrip.d.mts +13 -0
  816. package/es/dashboard/MetricStrip/MetricStrip.mjs +47 -0
  817. package/es/dashboard/MetricStrip/MetricStrip.mjs.map +1 -0
  818. package/es/dashboard/MetricStrip/index.d.mts +3 -0
  819. package/es/dashboard/MetricStrip/style.mjs +169 -0
  820. package/es/dashboard/MetricStrip/style.mjs.map +1 -0
  821. package/es/dashboard/MetricStrip/type.d.mts +38 -0
  822. package/es/dashboard/PageSkeleton/PageSkeleton.mjs +20 -18
  823. package/es/dashboard/PageSkeleton/PageSkeleton.mjs.map +1 -1
  824. package/es/dashboard/PageSkeleton/style.mjs +2 -1
  825. package/es/dashboard/PageSkeleton/style.mjs.map +1 -1
  826. package/es/dashboard/PageToolbar/PageToolbar.d.mts +10 -0
  827. package/es/dashboard/PageToolbar/PageToolbar.mjs +22 -0
  828. package/es/dashboard/PageToolbar/PageToolbar.mjs.map +1 -0
  829. package/es/dashboard/PageToolbar/index.d.mts +3 -0
  830. package/es/dashboard/PageToolbar/style.mjs +36 -0
  831. package/es/dashboard/PageToolbar/style.mjs.map +1 -0
  832. package/es/dashboard/PageToolbar/type.d.mts +11 -0
  833. package/es/dashboard/PanelSurface/PanelSurface.d.mts +10 -0
  834. package/es/dashboard/PanelSurface/PanelSurface.mjs +40 -0
  835. package/es/dashboard/PanelSurface/PanelSurface.mjs.map +1 -0
  836. package/es/dashboard/PanelSurface/index.d.mts +3 -0
  837. package/es/dashboard/PanelSurface/style.mjs +25 -0
  838. package/es/dashboard/PanelSurface/style.mjs.map +1 -0
  839. package/es/dashboard/PanelSurface/type.d.mts +17 -0
  840. package/es/dashboard/Section/Section.d.mts +10 -0
  841. package/es/dashboard/Section/Section.mjs +81 -0
  842. package/es/dashboard/Section/Section.mjs.map +1 -0
  843. package/es/dashboard/Section/index.d.mts +3 -0
  844. package/es/dashboard/Section/style.mjs +31 -0
  845. package/es/dashboard/Section/style.mjs.map +1 -0
  846. package/es/dashboard/Section/type.d.mts +23 -0
  847. package/es/dashboard/StatCard/StatCard.d.mts +2 -1
  848. package/es/dashboard/StatCard/StatCard.mjs +29 -91
  849. package/es/dashboard/StatCard/StatCard.mjs.map +1 -1
  850. package/es/dashboard/StatCard/type.d.mts +18 -5
  851. package/es/dashboard/Surface/Surface.d.mts +4 -3
  852. package/es/dashboard/Surface/Surface.mjs +90 -8
  853. package/es/dashboard/Surface/Surface.mjs.map +1 -1
  854. package/es/dashboard/Surface/index.d.mts +3 -2
  855. package/es/dashboard/Surface/link.d.mts +16 -0
  856. package/es/dashboard/Surface/link.mjs +40 -0
  857. package/es/dashboard/Surface/link.mjs.map +1 -0
  858. package/es/dashboard/Surface/marker.stylex.mjs +9 -0
  859. package/es/dashboard/Surface/marker.stylex.mjs.map +1 -0
  860. package/es/dashboard/Surface/style.d.mts +2 -0
  861. package/es/dashboard/Surface/style.mjs +156 -14
  862. package/es/dashboard/Surface/style.mjs.map +1 -1
  863. package/es/dashboard/Surface/type.d.mts +29 -1
  864. package/es/dashboard/TableIconActions/TableIconActions.d.mts +17 -0
  865. package/es/dashboard/TableIconActions/TableIconActions.mjs +39 -0
  866. package/es/dashboard/TableIconActions/TableIconActions.mjs.map +1 -0
  867. package/es/dashboard/TableIconActions/index.d.mts +3 -0
  868. package/es/dashboard/TableIconActions/type.d.mts +17 -0
  869. package/es/dashboard/TitleWithTips/TitleWithTips.d.mts +10 -0
  870. package/es/dashboard/TitleWithTips/TitleWithTips.mjs +28 -0
  871. package/es/dashboard/TitleWithTips/TitleWithTips.mjs.map +1 -0
  872. package/es/dashboard/TitleWithTips/index.d.mts +3 -0
  873. package/es/dashboard/TitleWithTips/type.d.mts +10 -0
  874. package/es/dashboard/index.d.mts +38 -4
  875. package/es/dashboard/index.mjs +18 -4
  876. package/es/eslint/noBaseUiSubpath.mjs +2 -1
  877. package/es/eslint/noBaseUiSubpath.mjs.map +1 -1
  878. package/es/hooks/useControlledState.mjs +20 -0
  879. package/es/hooks/useControlledState.mjs.map +1 -0
  880. package/es/hooks/useHighlight.mjs +2 -2
  881. package/es/hooks/useHighlight.mjs.map +1 -1
  882. package/es/hooks/useHover.mjs +22 -0
  883. package/es/hooks/useHover.mjs.map +1 -0
  884. package/es/hooks/useMarkdown/utils.d.mts +1 -0
  885. package/es/hooks/useScroll.d.mts +8 -0
  886. package/es/hooks/useScroll.mjs +33 -0
  887. package/es/hooks/useScroll.mjs.map +1 -0
  888. package/es/hooks/useSize.mjs +26 -0
  889. package/es/hooks/useSize.mjs.map +1 -0
  890. package/es/i18n/resources/en/colorPicker.d.mts +5 -0
  891. package/es/i18n/resources/en/colorPicker.mjs +5 -0
  892. package/es/i18n/resources/en/colorPicker.mjs.map +1 -1
  893. package/es/i18n/resources/en/datePicker.d.mts +54 -0
  894. package/es/i18n/resources/en/datePicker.mjs +55 -1
  895. package/es/i18n/resources/en/datePicker.mjs.map +1 -1
  896. package/es/i18n/resources/en/index.d.mts +4 -2
  897. package/es/i18n/resources/en/index.mjs +6 -2
  898. package/es/i18n/resources/en/index.mjs.map +1 -1
  899. package/es/i18n/resources/en/table.d.mts +23 -0
  900. package/es/i18n/resources/en/table.mjs +24 -0
  901. package/es/i18n/resources/en/table.mjs.map +1 -0
  902. package/es/i18n/resources/en/video.d.mts +23 -0
  903. package/es/i18n/resources/en/video.mjs +24 -0
  904. package/es/i18n/resources/en/video.mjs.map +1 -0
  905. package/es/i18n/resources/zhCn/colorPicker.d.mts +5 -0
  906. package/es/i18n/resources/zhCn/colorPicker.mjs +5 -0
  907. package/es/i18n/resources/zhCn/colorPicker.mjs.map +1 -1
  908. package/es/i18n/resources/zhCn/datePicker.d.mts +54 -0
  909. package/es/i18n/resources/zhCn/datePicker.mjs +55 -1
  910. package/es/i18n/resources/zhCn/datePicker.mjs.map +1 -1
  911. package/es/i18n/resources/zhCn/index.d.mts +4 -2
  912. package/es/i18n/resources/zhCn/index.mjs +7 -3
  913. package/es/i18n/resources/zhCn/index.mjs.map +1 -1
  914. package/es/i18n/resources/zhCn/table.d.mts +23 -0
  915. package/es/i18n/resources/zhCn/table.mjs +24 -0
  916. package/es/i18n/resources/zhCn/table.mjs.map +1 -0
  917. package/es/i18n/resources/zhCn/video.d.mts +23 -0
  918. package/es/i18n/resources/zhCn/video.mjs +24 -0
  919. package/es/i18n/resources/zhCn/video.mjs.map +1 -0
  920. package/es/i18n/types.d.mts +4 -1
  921. package/es/index.d.mts +20 -8
  922. package/es/index.mjs +17 -9
  923. package/es/internal/menu/itemInterface.d.mts +1 -0
  924. package/es/internal/menu/renderUtils.d.mts +1 -0
  925. package/es/internal/overflow/OverflowList.mjs +71 -0
  926. package/es/internal/overflow/OverflowList.mjs.map +1 -0
  927. package/es/internal/virtual/VirtualScrollArea.mjs +1 -1
  928. package/es/internal/virtual/VirtualScrollArea.mjs.map +1 -1
  929. package/es/mdx/Callout/index.mjs +2 -2
  930. package/es/mdx/Callout/index.mjs.map +1 -1
  931. package/es/mdx/Cards/Card.mjs +2 -2
  932. package/es/mdx/Cards/Card.mjs.map +1 -1
  933. package/es/mdx/Cards/index.mjs +2 -2
  934. package/es/mdx/Cards/index.mjs.map +1 -1
  935. package/es/mdx/Mdx/index.mjs +2 -2
  936. package/es/mdx/Mdx/index.mjs.map +1 -1
  937. package/es/mdx/Steps/index.mjs +2 -2
  938. package/es/mdx/Steps/index.mjs.map +1 -1
  939. package/es/mdx/mdxComponents/Pre.mjs +5 -5
  940. package/es/mdx/mdxComponents/Pre.mjs.map +1 -1
  941. package/es/mdx/mdxComponents/Video.d.mts +2 -1
  942. package/es/mdx/mdxComponents/Video.mjs +5 -3
  943. package/es/mdx/mdxComponents/Video.mjs.map +1 -1
  944. package/es/mobile/ChatInputArea/ChatInputArea.mjs +1 -1
  945. package/es/mobile/ChatInputArea/ChatInputArea.mjs.map +1 -1
  946. package/es/mobile/TabBar/TabBar.mjs +1 -1
  947. package/es/mobile/TabBar/TabBar.mjs.map +1 -1
  948. package/es/node_modules/.pnpm/@eslint_core@1.2.1/node_modules/@eslint/core/dist/esm/types.d.mts +2 -46
  949. package/es/node_modules/.pnpm/@eslint_plugin-kit@0.7.3/node_modules/@eslint/plugin-kit/dist/cjs/index.d.mts +1 -1
  950. package/es/node_modules/.pnpm/@types_estree@1.0.9/node_modules/@types/estree/index.d.mts +1 -4
  951. package/es/node_modules/.pnpm/@types_mdx@2.0.14/node_modules/@types/mdx/types.d.mts +1 -0
  952. package/es/node_modules/.pnpm/eslint@10.12.0_jiti@2.6.1_supports-color@10.2.2/node_modules/eslint/lib/types/index.d.mts +2 -1
  953. package/es/storybook/StoryBook/style.mjs +2 -0
  954. package/es/storybook/StoryBook/style.mjs.map +1 -1
  955. package/es/style.css +3534 -978
  956. package/es/styles/createGlobalStyle.d.mts +1 -0
  957. package/es/styles/createGlobalStyle.mjs +1 -1
  958. package/es/styles/index.d.mts +3 -2
  959. package/es/styles/index.mjs +5 -4
  960. package/es/styles/stylex/cssVar.stylex.mjs +3 -0
  961. package/es/styles/stylex/cssVar.stylex.mjs.map +1 -1
  962. package/es/styles/stylex/props.mjs +2 -2
  963. package/es/styles/stylex/props.mjs.map +1 -1
  964. package/es/styles/theme/createLobeToken.d.mts +10 -6
  965. package/es/styles/theme/createLobeToken.mjs.map +1 -1
  966. package/es/styles/theme/customPrimary.d.mts +7 -0
  967. package/es/styles/theme/customPrimary.mjs +66 -0
  968. package/es/styles/theme/customPrimary.mjs.map +1 -0
  969. package/es/styles/theme/generateColorPalette.d.mts +1 -0
  970. package/es/styles/theme/scope.d.mts +5 -3
  971. package/es/styles/theme/scope.mjs +30 -8
  972. package/es/styles/theme/scope.mjs.map +1 -1
  973. package/es/styles/theme/themeCss.d.mts +2 -0
  974. package/es/styles/theme/themeCss.mjs +24 -2
  975. package/es/styles/theme/themeCss.mjs.map +1 -1
  976. package/es/styles/theme/token/legacy.mjs +12 -12
  977. package/es/styles/theme/token/legacy.mjs.map +1 -1
  978. package/es/styles/theme/token/neutral.mjs +17 -9
  979. package/es/styles/theme/token/neutral.mjs.map +1 -1
  980. package/es/styles/theme/token/neutralText.mjs +91 -0
  981. package/es/styles/theme/token/neutralText.mjs.map +1 -0
  982. package/es/styles/theme/token/palette.mjs +16 -41
  983. package/es/styles/theme/token/palette.mjs.map +1 -1
  984. package/es/styles/theme/token/primary.mjs +6 -2
  985. package/es/styles/theme/token/primary.mjs.map +1 -1
  986. package/es/styles/theme/token/static.mjs +3 -0
  987. package/es/styles/theme/token/static.mjs.map +1 -1
  988. package/es/theme.css +301 -290
  989. package/es/types/customToken.d.mts +1 -0
  990. package/es/utils/colorMath.mjs +52 -0
  991. package/es/utils/colorMath.mjs.map +1 -0
  992. package/es/utils/formatNumber.mjs +7 -0
  993. package/es/utils/formatNumber.mjs.map +1 -0
  994. package/es/utils/genCdnUrl.mjs +6 -3
  995. package/es/utils/genCdnUrl.mjs.map +1 -1
  996. package/es/utils/hashString.mjs +19 -0
  997. package/es/utils/hashString.mjs.map +1 -0
  998. package/es/utils/mergeRefs.mjs +20 -0
  999. package/es/utils/mergeRefs.mjs.map +1 -0
  1000. package/es/utils/placement.d.mts +5 -5
  1001. package/es/utils/placement.mjs.map +1 -1
  1002. package/package.json +25 -46
  1003. package/es/DatePicker/CalendarPanel.mjs +0 -189
  1004. package/es/DatePicker/CalendarPanel.mjs.map +0 -1
  1005. package/es/DatePicker/PickerShell.mjs +0 -43
  1006. package/es/DatePicker/PickerShell.mjs.map +0 -1
  1007. package/es/DatePicker/calendar.d.mts +0 -4
  1008. package/es/DatePicker/calendar.mjs +0 -46
  1009. package/es/DatePicker/calendar.mjs.map +0 -1
  1010. package/es/Table/FilterMenu.mjs +0 -45
  1011. package/es/Table/FilterMenu.mjs.map +0 -1
  1012. package/es/Table/TableBody.mjs +0 -67
  1013. package/es/Table/TableBody.mjs.map +0 -1
  1014. package/es/Table/TableHead.mjs +0 -58
  1015. package/es/Table/TableHead.mjs.map +0 -1
  1016. package/es/Table/features.mjs +0 -12
  1017. package/es/Table/features.mjs.map +0 -1
  1018. package/es/Table/fixedOffsets.mjs +0 -29
  1019. package/es/Table/fixedOffsets.mjs.map +0 -1
  1020. package/es/Table/marker.stylex.mjs +0 -9
  1021. package/es/Table/marker.stylex.mjs.map +0 -1
  1022. package/es/Table/toColumnDefs.mjs +0 -26
  1023. package/es/Table/toColumnDefs.mjs.map +0 -1
  1024. package/es/Table/useTableState.mjs +0 -99
  1025. package/es/Table/useTableState.mjs.map +0 -1
  1026. package/es/Video/marker.stylex.mjs +0 -9
  1027. package/es/Video/marker.stylex.mjs.map +0 -1
  1028. package/es/dashboard/StatCard/style.mjs +0 -105
  1029. package/es/dashboard/StatCard/style.mjs.map +0 -1
@@ -0,0 +1,101 @@
1
+ "use client";
2
+ import { cssVar } from "../styles/stylex/cssVar.stylex.mjs";
3
+ import Icon from "../Icon/Icon.mjs";
4
+ import { Tooltip } from "../Tooltip/Tooltip.mjs";
5
+ import { safeReadableColor } from "../utils/safeReadableColor.mjs";
6
+ import ColorPicker from "../ColorPicker/ColorPicker.mjs";
7
+ import { chipMarker } from "./marker.stylex.mjs";
8
+ import { styles } from "./style.mjs";
9
+ import { Fragment, jsx, jsxs } from "react/jsx-runtime";
10
+ import * as stylex from "@stylexjs/stylex";
11
+ import { CheckIcon, PencilIcon, PlusIcon } from "lucide-react";
12
+ //#region src/ColorSwatches/CustomPicker.tsx
13
+ const CustomPicker = ({ active, current, label, onChange, presets, shape, standalone, value }) => {
14
+ const borderRadius = shape === "circle" ? "50%" : cssVar.borderRadius;
15
+ if (standalone) return /* @__PURE__ */ jsx(Tooltip, {
16
+ title: label,
17
+ children: /* @__PURE__ */ jsx("span", {
18
+ style: { display: "inline-flex" },
19
+ children: /* @__PURE__ */ jsx(ColorPicker, {
20
+ presets,
21
+ value,
22
+ onChangeComplete: onChange,
23
+ children: /* @__PURE__ */ jsx("button", {
24
+ "aria-label": label,
25
+ type: "button",
26
+ ...stylex.props(styles.picker, active && styles.activePicker),
27
+ style: {
28
+ background: current,
29
+ borderRadius
30
+ }
31
+ })
32
+ })
33
+ })
34
+ });
35
+ const iconColor = value ? `color-mix(in srgb, ${safeReadableColor(value)} 33%, transparent)` : void 0;
36
+ return /* @__PURE__ */ jsxs(Fragment, { children: [
37
+ /* @__PURE__ */ jsx("span", {
38
+ "aria-hidden": true,
39
+ ...stylex.props(styles.divider)
40
+ }),
41
+ active && value && /* @__PURE__ */ jsx(ColorPicker, {
42
+ value,
43
+ onChangeComplete: onChange,
44
+ children: /* @__PURE__ */ jsxs("button", {
45
+ "aria-label": value,
46
+ "aria-pressed": "true",
47
+ type: "button",
48
+ ...stylex.props(styles.picker, styles.chip, styles.activePicker, chipMarker),
49
+ style: {
50
+ background: value,
51
+ borderRadius
52
+ },
53
+ children: [/* @__PURE__ */ jsx(Icon, {
54
+ className: stylex.props(styles.chipIcon, styles.chipCheck).className,
55
+ color: iconColor,
56
+ icon: CheckIcon,
57
+ size: {
58
+ size: 14,
59
+ strokeWidth: 4
60
+ }
61
+ }), /* @__PURE__ */ jsx(Icon, {
62
+ className: stylex.props(styles.chipIcon, styles.chipEdit).className,
63
+ color: iconColor,
64
+ icon: PencilIcon,
65
+ size: {
66
+ size: 12,
67
+ strokeWidth: 3
68
+ }
69
+ })]
70
+ })
71
+ }),
72
+ /* @__PURE__ */ jsx(Tooltip, {
73
+ title: label,
74
+ children: /* @__PURE__ */ jsx("span", {
75
+ style: { display: "inline-flex" },
76
+ children: /* @__PURE__ */ jsx(ColorPicker, {
77
+ value,
78
+ onChangeComplete: onChange,
79
+ children: /* @__PURE__ */ jsx("button", {
80
+ "aria-label": label,
81
+ type: "button",
82
+ ...stylex.props(styles.picker, styles.conic, styles.add),
83
+ style: { borderRadius },
84
+ children: /* @__PURE__ */ jsx(Icon, {
85
+ icon: PlusIcon,
86
+ size: {
87
+ size: 12,
88
+ strokeWidth: 3
89
+ }
90
+ })
91
+ })
92
+ })
93
+ })
94
+ })
95
+ ] });
96
+ };
97
+ CustomPicker.displayName = "ColorSwatchesCustomPicker";
98
+ //#endregion
99
+ export { CustomPicker as default };
100
+
101
+ //# sourceMappingURL=CustomPicker.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CustomPicker.mjs","names":[],"sources":["../../src/ColorSwatches/CustomPicker.tsx"],"sourcesContent":["'use client';\n\nimport * as stylex from '@stylexjs/stylex';\nimport { CheckIcon, PencilIcon, PlusIcon } from 'lucide-react';\nimport { type FC } from 'react';\n\nimport { ColorPicker } from '@/ColorPicker';\nimport Icon from '@/Icon';\nimport { cssVar } from '@/styles/stylex/cssVar.stylex';\nimport Tooltip from '@/Tooltip';\nimport { safeReadableColor } from '@/utils/safeReadableColor';\n\nimport { chipMarker } from './marker.stylex';\nimport { styles } from './style';\nimport type { ColorSwatchesPickerRenderProps } from './type';\n\ninterface CustomPickerProps extends ColorSwatchesPickerRenderProps {\n current?: string;\n label: string;\n standalone: boolean;\n}\n\nconst CustomPicker: FC<CustomPickerProps> = ({\n active,\n current,\n label,\n onChange,\n presets,\n shape,\n standalone,\n value,\n}) => {\n const borderRadius = shape === 'circle' ? '50%' : cssVar.borderRadius;\n\n if (standalone)\n return (\n <Tooltip title={label}>\n <span style={{ display: 'inline-flex' }}>\n <ColorPicker presets={presets} value={value} onChangeComplete={onChange}>\n <button\n aria-label={label}\n type=\"button\"\n {...stylex.props(styles.picker, active && styles.activePicker)}\n style={{ background: current, borderRadius }}\n />\n </ColorPicker>\n </span>\n </Tooltip>\n );\n\n const iconColor = value\n ? `color-mix(in srgb, ${safeReadableColor(value)} 33%, transparent)`\n : undefined;\n\n return (\n <>\n <span aria-hidden {...stylex.props(styles.divider)} />\n {active && value && (\n <ColorPicker value={value} onChangeComplete={onChange}>\n <button\n aria-label={value}\n aria-pressed=\"true\"\n type=\"button\"\n {...stylex.props(styles.picker, styles.chip, styles.activePicker, chipMarker)}\n style={{ background: value, borderRadius }}\n >\n <Icon\n className={stylex.props(styles.chipIcon, styles.chipCheck).className}\n color={iconColor}\n icon={CheckIcon}\n size={{ size: 14, strokeWidth: 4 }}\n />\n <Icon\n className={stylex.props(styles.chipIcon, styles.chipEdit).className}\n color={iconColor}\n icon={PencilIcon}\n size={{ size: 12, strokeWidth: 3 }}\n />\n </button>\n </ColorPicker>\n )}\n <Tooltip title={label}>\n <span style={{ display: 'inline-flex' }}>\n <ColorPicker value={value} onChangeComplete={onChange}>\n <button\n aria-label={label}\n type=\"button\"\n {...stylex.props(styles.picker, styles.conic, styles.add)}\n style={{ borderRadius }}\n >\n <Icon icon={PlusIcon} size={{ size: 12, strokeWidth: 3 }} />\n </button>\n </ColorPicker>\n </span>\n </Tooltip>\n </>\n );\n};\n\nCustomPicker.displayName = 'ColorSwatchesCustomPicker';\n\nexport default CustomPicker;\n"],"mappings":";;;;;;;;;;;;AAkBA,MAAM,gBAAuC,EAC3C,QACA,SACA,OACA,UACA,SACA,OACA,YACA,YACI;CACJ,MAAM,eAAe,UAAU,WAAW,QAAQ,OAAO;CACzD,IAAI,YAAY,OAAO,oBAAC,SAAD;EAAS,OAAO;EACjC,UAAA,oBAAC,QAAD;GAAM,OAAO,EACf,SAAS,cACX;GACM,UAAA,oBAAC,aAAD;IAAsB;IAAgB;IAAO,kBAAkB;IAC7D,UAAA,oBAAC,UAAD;KAAQ,cAAY;KAAO,MAAK;KAAS,GAAI,OAAO,MAAM,OAAO,QAAQ,UAAU,OAAO,YAAY;KAAG,OAAO;MAClH,YAAY;MACZ;KACF;IAAI,CAAA;GACW,CAAA;EACT,CAAA;CACC,CAAA;CACb,MAAM,YAAY,QAAQ,sBAAsB,kBAAkB,KAAK,EAAE,sBAAsB,KAAA;CAC/F,OAAO,qBAAA,UAAA,EAAA,UAAA;EACH,oBAAC,QAAD;GAAM,eAAA;GAAY,GAAI,OAAO,MAAM,OAAO,OAAO;EAAI,CAAA;EACpD,UAAU,SAAS,oBAAC,aAAD;GAAoB;GAAO,kBAAkB;GAC7D,UAAA,qBAAC,UAAD;IAAQ,cAAY;IAAO,gBAAa;IAAO,MAAK;IAAS,GAAI,OAAO,MAAM,OAAO,QAAQ,OAAO,MAAM,OAAO,cAAc,UAAU;IAAG,OAAO;KACrJ,YAAY;KACZ;IACF;IAHI,UAAA,CAIE,oBAAC,MAAD;KAAM,WAAW,OAAO,MAAM,OAAO,UAAU,OAAO,SAAS,CAAC,CAAC;KAAW,OAAO;KAAW,MAAM;KAAW,MAAM;MACvH,MAAM;MACN,aAAa;KACf;IAAI,CAAA,GACA,oBAAC,MAAD;KAAM,WAAW,OAAO,MAAM,OAAO,UAAU,OAAO,QAAQ,CAAC,CAAC;KAAW,OAAO;KAAW,MAAM;KAAY,MAAM;MACvH,MAAM;MACN,aAAa;KACf;IAAI,CAAA,CACM;;EACG,CAAA;EACf,oBAAC,SAAD;GAAS,OAAO;GACd,UAAA,oBAAC,QAAD;IAAM,OAAO,EACb,SAAS,cACX;IACI,UAAA,oBAAC,aAAD;KAAoB;KAAO,kBAAkB;KAC3C,UAAA,oBAAC,UAAD;MAAQ,cAAY;MAAO,MAAK;MAAS,GAAI,OAAO,MAAM,OAAO,QAAQ,OAAO,OAAO,OAAO,GAAG;MAAG,OAAO,EAC3G,aACF;MACI,UAAA,oBAAC,MAAD;OAAM,MAAM;OAAU,MAAM;QAC5B,MAAM;QACN,aAAa;OACf;MAAI,CAAA;KACI,CAAA;IACG,CAAA;GACT,CAAA;EACC,CAAA;CACT,EAAA,CAAA;AACN;AACA,aAAa,cAAc"}
@@ -1,3 +1,3 @@
1
- import { ColorSwatchesProps } from "./type.mjs";
1
+ import { ColorSwatchesPickerRenderProps, ColorSwatchesProps } from "./type.mjs";
2
2
  import ColorSwatches from "./ColorSwatches.mjs";
3
- export { ColorSwatchesProps, ColorSwatches as default };
3
+ export { ColorSwatchesPickerRenderProps, ColorSwatchesProps, ColorSwatches as default };
@@ -0,0 +1,9 @@
1
+ //#region src/ColorSwatches/marker.stylex.ts
2
+ const chipMarker = {
3
+ lb1pgf9nm: "lb1pgf9nm",
4
+ $$css: true
5
+ };
6
+ //#endregion
7
+ export { chipMarker };
8
+
9
+ //# sourceMappingURL=marker.stylex.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"marker.stylex.mjs","names":[],"sources":["../../src/ColorSwatches/marker.stylex.ts"],"sourcesContent":["import * as stylex from '@stylexjs/stylex';\n\nexport const chipMarker = stylex.defineMarker();\n"],"mappings":";AACA,MAAa,aAAa;CACxB,WAAW;CACX,OAAO;AACT"}
@@ -11,6 +11,33 @@ const styles = {
11
11
  kGVxlE: "lb1tp5pxa lb9jile0",
12
12
  $$css: true
13
13
  },
14
+ add: {
15
+ kGNEyG: "lb6s0dn4",
16
+ kMwMTN: "lbfungia",
17
+ k1xSpc: "lb3nfvp2",
18
+ kjj79g: "lbl56j7k",
19
+ $$css: true
20
+ },
21
+ chip: {
22
+ kgQiWS: "lb1ku5rj1",
23
+ k1xSpc: "lbrvj5dj",
24
+ $$css: true
25
+ },
26
+ chipCheck: {
27
+ kSiTet: "lb1hc1fzr lb1fz9fy1 lb1ilng6x",
28
+ $$css: true
29
+ },
30
+ chipEdit: {
31
+ kSiTet: "lbg01cxk lb1de8irz lbjygscn",
32
+ $$css: true
33
+ },
34
+ chipIcon: {
35
+ kBCFzs: "lbgkxs2y",
36
+ kbNqZ1: "lb1ms6mhf",
37
+ kmkexE: "lb13zw1ji",
38
+ kfzvcC: "lb47corl",
39
+ $$css: true
40
+ },
14
41
  conic: {
15
42
  kWkggS: "lbjbqb8w",
16
43
  kKwaWg: "lb9i5qys",
@@ -27,6 +54,15 @@ const styles = {
27
54
  kzqmXN: "lb4fkmq8",
28
55
  $$css: true
29
56
  },
57
+ divider: {
58
+ kUk6DE: "lb1okw0bk",
59
+ kUOVxO: "lb1dhlr3c",
60
+ kSGwAc: "lbamitd3",
61
+ kWkggS: "lbjjy28o",
62
+ kZKoxP: "lb8akbf1",
63
+ kzqmXN: "lb1i1rx1s",
64
+ $$css: true
65
+ },
30
66
  picker: {
31
67
  kmVPX3: "lb1717udv",
32
68
  kVAM5u: "lb181nr7w",
@@ -1 +1 @@
1
- {"version":3,"file":"style.mjs","names":[],"sources":["../../src/ColorSwatches/style.ts"],"sourcesContent":["import * as stylex from '@stylexjs/stylex';\n\nimport { cssVar } from '@/styles/stylex/cssVar.stylex';\n\nconst size = 'var(--color-swatches-size, 24px)';\nconst containerHover = `inset 0 0 0 1px rgb(0 0 0 / 5%), 0 0 0 2px ${cssVar.colorText}`;\nconst pickerHover = `inset 0 0 0 1px ${cssVar.colorFillSecondary}, 0 0 0 2px ${cssVar.colorText}`;\n\nexport const styles = stylex.create({\n activeContainer: {\n boxShadow: { 'default': `inset 0 0 0 1px ${cssVar.colorFill}`, ':hover': containerHover },\n },\n activePicker: {\n boxShadow: { 'default': `inset 0 0 0 1px ${cssVar.colorFill}`, ':hover': pickerHover },\n },\n conic: {\n backgroundColor: 'transparent',\n backgroundImage: `conic-gradient(${cssVar.red}, ${cssVar.volcano}, ${cssVar.orange}, ${cssVar.gold}, ${cssVar.yellow}, ${cssVar.lime}, ${cssVar.green}, ${cssVar.cyan}, ${cssVar.blue}, ${cssVar.geekblue}, ${cssVar.purple}, ${cssVar.magenta}, ${cssVar.red})`,\n },\n container: {\n flex: 'none',\n backgroundColor: cssVar.colorBgContainer,\n boxShadow: {\n 'default': `inset 0 0 0 1px ${cssVar.colorFillSecondary}`,\n ':hover': containerHover,\n },\n cursor: 'pointer',\n height: size,\n minHeight: size,\n minWidth: size,\n width: size,\n },\n picker: {\n padding: 0,\n borderColor: 'currentcolor',\n borderStyle: 'none',\n borderWidth: 'medium',\n flex: 'none',\n overflow: 'hidden',\n boxShadow: { 'default': `inset 0 0 0 1px ${cssVar.colorFillSecondary}`, ':hover': pickerHover },\n cursor: 'pointer',\n height: size,\n minHeight: size,\n minWidth: size,\n width: size,\n },\n transparent: {\n backgroundImage: `conic-gradient(${cssVar.colorFillSecondary} 25%, transparent 25% 50%, ${cssVar.colorFillSecondary} 50% 75%, transparent 75% 100%)`,\n backgroundSize: '50% 50%',\n },\n});\n"],"mappings":";;AAIuB,GAA8C,OAAO;AACxD,GAAmB,OAAO,qBAAiC,OAAO;AACtF,MAAa,SAAS;CACpB,iBAAiB;EACf,QAAQ;EACR,OAAO;CACT;CACA,cAAc;EACZ,QAAQ;EACR,OAAO;CACT;CACA,OAAO;EACL,QAAQ;EACR,QAAQ;EACR,OAAO;CACT;CACA,WAAW;EACT,QAAQ;EACR,QAAQ;EACR,QAAQ;EACR,QAAQ;EACR,QAAQ;EACR,QAAQ;EACR,QAAQ;EACR,QAAQ;EACR,OAAO;CACT;CACA,QAAQ;EACN,QAAQ;EACR,QAAQ;EACR,QAAQ;EACR,QAAQ;EACR,QAAQ;EACR,QAAQ;EACR,QAAQ;EACR,QAAQ;EACR,QAAQ;EACR,QAAQ;EACR,QAAQ;EACR,QAAQ;EACR,OAAO;CACT;CACA,aAAa;EACX,QAAQ;EACR,QAAQ;EACR,OAAO;CACT;AACF"}
1
+ {"version":3,"file":"style.mjs","names":[],"sources":["../../src/ColorSwatches/style.ts"],"sourcesContent":["import * as stylex from '@stylexjs/stylex';\n\nimport { cssVar } from '@/styles/stylex/cssVar.stylex';\n\nimport { chipMarker } from './marker.stylex';\n\nconst size = 'var(--color-swatches-size, 24px)';\nconst containerHover = `inset 0 0 0 1px rgb(0 0 0 / 5%), 0 0 0 2px ${cssVar.colorText}`;\nconst pickerHover = `inset 0 0 0 1px ${cssVar.colorFillSecondary}, 0 0 0 2px ${cssVar.colorText}`;\n\nexport const styles = stylex.create({\n activeContainer: {\n boxShadow: { 'default': `inset 0 0 0 1px ${cssVar.colorFill}`, ':hover': containerHover },\n },\n activePicker: {\n boxShadow: { 'default': `inset 0 0 0 1px ${cssVar.colorFill}`, ':hover': pickerHover },\n },\n add: {\n alignItems: 'center',\n color: '#fff',\n display: 'inline-flex',\n justifyContent: 'center',\n },\n chip: {\n placeItems: 'center',\n display: 'grid',\n },\n chipCheck: {\n opacity: {\n default: 1,\n [stylex.when.ancestor(':focus-visible', chipMarker)]: 0,\n [stylex.when.ancestor(':hover', chipMarker)]: 0,\n },\n },\n chipEdit: {\n opacity: {\n default: 0,\n [stylex.when.ancestor(':focus-visible', chipMarker)]: 1,\n [stylex.when.ancestor(':hover', chipMarker)]: 1,\n },\n },\n chipIcon: {\n gridColumn: 1,\n gridRow: 1,\n transition: `opacity 0.15s ${cssVar.motionEaseInOut}`,\n pointerEvents: 'none',\n },\n conic: {\n backgroundColor: 'transparent',\n backgroundImage: `conic-gradient(${cssVar.red}, ${cssVar.volcano}, ${cssVar.orange}, ${cssVar.gold}, ${cssVar.yellow}, ${cssVar.lime}, ${cssVar.green}, ${cssVar.cyan}, ${cssVar.blue}, ${cssVar.geekblue}, ${cssVar.purple}, ${cssVar.magenta}, ${cssVar.red})`,\n },\n container: {\n flex: 'none',\n backgroundColor: cssVar.colorBgContainer,\n boxShadow: {\n 'default': `inset 0 0 0 1px ${cssVar.colorFillSecondary}`,\n ':hover': containerHover,\n },\n cursor: 'pointer',\n height: size,\n minHeight: size,\n minWidth: size,\n width: size,\n },\n divider: {\n flex: 'none',\n marginInline: 2,\n alignSelf: 'center',\n backgroundColor: cssVar.colorFillSecondary,\n height: `calc(${size} * 0.75)`,\n width: 1,\n },\n picker: {\n padding: 0,\n borderColor: 'currentcolor',\n borderStyle: 'none',\n borderWidth: 'medium',\n flex: 'none',\n overflow: 'hidden',\n boxShadow: { 'default': `inset 0 0 0 1px ${cssVar.colorFillSecondary}`, ':hover': pickerHover },\n cursor: 'pointer',\n height: size,\n minHeight: size,\n minWidth: size,\n width: size,\n },\n transparent: {\n backgroundImage: `conic-gradient(${cssVar.colorFillSecondary} 25%, transparent 25% 50%, ${cssVar.colorFillSecondary} 50% 75%, transparent 75% 100%)`,\n backgroundSize: '50% 50%',\n },\n});\n"],"mappings":";;AAMuB,GAA8C,OAAO;AACxD,GAAmB,OAAO,qBAAiC,OAAO;AACtF,MAAa,SAAS;CACpB,iBAAiB;EACf,QAAQ;EACR,OAAO;CACT;CACA,cAAc;EACZ,QAAQ;EACR,OAAO;CACT;CACA,KAAK;EACH,QAAQ;EACR,QAAQ;EACR,QAAQ;EACR,QAAQ;EACR,OAAO;CACT;CACA,MAAM;EACJ,QAAQ;EACR,QAAQ;EACR,OAAO;CACT;CACA,WAAW;EACT,QAAQ;EACR,OAAO;CACT;CACA,UAAU;EACR,QAAQ;EACR,OAAO;CACT;CACA,UAAU;EACR,QAAQ;EACR,QAAQ;EACR,QAAQ;EACR,QAAQ;EACR,OAAO;CACT;CACA,OAAO;EACL,QAAQ;EACR,QAAQ;EACR,OAAO;CACT;CACA,WAAW;EACT,QAAQ;EACR,QAAQ;EACR,QAAQ;EACR,QAAQ;EACR,QAAQ;EACR,QAAQ;EACR,QAAQ;EACR,QAAQ;EACR,OAAO;CACT;CACA,SAAS;EACP,QAAQ;EACR,QAAQ;EACR,QAAQ;EACR,QAAQ;EACR,QAAQ;EACR,QAAQ;EACR,OAAO;CACT;CACA,QAAQ;EACN,QAAQ;EACR,QAAQ;EACR,QAAQ;EACR,QAAQ;EACR,QAAQ;EACR,QAAQ;EACR,QAAQ;EACR,QAAQ;EACR,QAAQ;EACR,QAAQ;EACR,QAAQ;EACR,QAAQ;EACR,OAAO;CACT;CACA,aAAa;EACX,QAAQ;EACR,QAAQ;EACR,OAAO;CACT;AACF"}
@@ -7,6 +7,14 @@ interface ColorSwatchesItemType {
7
7
  key?: Key;
8
8
  title?: ReactNode;
9
9
  }
10
+ export interface ColorSwatchesPickerRenderProps {
11
+ active: boolean;
12
+ onChange: (color?: string) => void;
13
+ presets: string[];
14
+ shape: 'circle' | 'square';
15
+ size: number;
16
+ value?: string;
17
+ }
10
18
  export interface ColorSwatchesProps extends Omit<FlexboxProps, 'onChange'> {
11
19
  colors: ColorSwatchesItemType[];
12
20
  defaultValue?: string;
@@ -14,13 +22,15 @@ export interface ColorSwatchesProps extends Omit<FlexboxProps, 'onChange'> {
14
22
  enableColorSwatches?: boolean;
15
23
  onChange?: (color?: string) => void;
16
24
  ref?: Ref<HTMLDivElement>;
25
+ renderPicker?: (props: ColorSwatchesPickerRenderProps, defaultPicker: ReactNode) => ReactNode;
17
26
  shape?: 'circle' | 'square';
18
27
  size?: number;
19
28
  texts?: {
20
- custom: string;
21
- presets: string;
29
+ custom?: string;
30
+ presets?: string;
22
31
  };
23
32
  value?: string;
24
33
  }
25
34
  //#endregion
35
+ export {};
26
36
  //# sourceMappingURL=type.d.mts.map
@@ -0,0 +1,6 @@
1
+ //#region src/ConfigProvider/cdnAssets.ts
2
+ const KATEX_CSS_VERSION = "0.19.0";
3
+ //#endregion
4
+ export { KATEX_CSS_VERSION };
5
+
6
+ //# sourceMappingURL=cdnAssets.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cdnAssets.mjs","names":[],"sources":["../../src/ConfigProvider/cdnAssets.ts"],"sourcesContent":["export const KATEX_CSS_VERSION = '0.19.0';\n"],"mappings":";AAAA,MAAa,oBAAoB"}
@@ -4,6 +4,7 @@ import { installGlobalFocusRing } from "../GlobalFocusRing/index.mjs";
4
4
  import { MotionComponent } from "../MotionProvider/index.mjs";
5
5
  import { genCdnUrl } from "../utils/genCdnUrl.mjs";
6
6
  import AppElementContext, { useAppElement } from "./AppElementContext.mjs";
7
+ import "./cdnAssets.mjs";
7
8
  import { createContext, memo, use, useEffect, useMemo, useRef, useState } from "react";
8
9
  import { jsx, jsxs } from "react/jsx-runtime";
9
10
  //#region src/ConfigProvider/index.tsx
@@ -112,7 +113,7 @@ const WebFonts = ({ customFonts }) => {
112
113
  genCdnUrl({
113
114
  path: "dist/katex.min.css",
114
115
  pkg: "katex",
115
- version: "0.18.1"
116
+ version: "0.19.0"
116
117
  })
117
118
  ], [customFonts, genCdnUrl]).map((url) => /* @__PURE__ */ jsx(FontLoader, { url }, url));
118
119
  };
@@ -1 +1 @@
1
- {"version":3,"file":"index.mjs","names":[],"sources":["../../src/ConfigProvider/index.tsx"],"sourcesContent":["'use client';\n\nimport {\n createContext,\n type CSSProperties,\n type ElementType,\n memo,\n type ReactNode,\n use,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from 'react';\n\nimport FontLoader from '@/FontLoader';\nimport { installGlobalFocusRing } from '@/GlobalFocusRing';\nimport {\n type I18nContextValue,\n type TranslationKey,\n type TranslationResourcesInput,\n type TranslationResourcesMap,\n} from '@/i18n/types';\nimport { MotionComponent, type MotionComponentType } from '@/MotionProvider';\nimport { type CDN, type CdnApi, genCdnUrl } from '@/utils/genCdnUrl';\n\nimport AppElementContext from './AppElementContext';\n\nexport const LOBE_THEME_APP_ID = 'lobe-ui-theme-app';\n\nexport type Direction = 'ltr' | 'rtl';\n\nexport interface Config {\n aAs?: ElementType;\n customCdnFn?: CdnFn;\n globalFocusRing?: boolean;\n imgAs?: ElementType;\n imgUnoptimized?: boolean;\n proxy?: CDN | 'custom';\n}\n\nexport const ConfigContext = createContext<Config | null>(null);\n\nconst DirectionContext = createContext<Direction>('ltr');\n\n// Internal i18n context\nconst I18nContextInternal = createContext<I18nContextValue>({\n locale: 'en',\n t: (key: TranslationKey) => key,\n});\n\nexport interface ConfigProviderProps {\n children: ReactNode;\n config?: Config;\n customFonts?: string[];\n direction?: Direction;\n enableCustomFonts?: boolean;\n // i18n props - flattened at top level\n locale?: string;\n motion: MotionComponentType;\n resources?: TranslationResourcesInput;\n}\n\nconst isThenable = (value: unknown): value is Promise<TranslationResourcesMap> =>\n typeof (value as { then?: unknown })?.then === 'function';\n\nconst ConfigProvider = memo<ConfigProviderProps>(\n ({\n children,\n config,\n customFonts,\n direction = 'ltr',\n enableCustomFonts = true,\n locale,\n resources,\n motion,\n }) => {\n const [portalHost, setPortalHost] = useState<HTMLDivElement | null>(null);\n\n useEffect(() => {\n if (config?.globalFocusRing === false) return;\n return installGlobalFocusRing();\n }, [config?.globalFocusRing]);\n\n const fallbackLocale = locale ?? 'en';\n const [resolvedResources, setResolvedResources] = useState<TranslationResourcesMap | undefined>(\n () => (resources && !isThenable(resources) ? resources : undefined),\n );\n const [resolvedLocale, setResolvedLocale] = useState(fallbackLocale);\n const latestRequestId = useRef(0);\n\n useEffect(() => {\n const requestId = ++latestRequestId.current;\n\n if (!resources) {\n setResolvedResources(undefined);\n setResolvedLocale(fallbackLocale);\n return;\n }\n\n if (isThenable(resources)) {\n const targetLocale = fallbackLocale;\n resources\n .then((nextResources) => {\n if (latestRequestId.current !== requestId) return;\n setResolvedResources(nextResources);\n setResolvedLocale(targetLocale);\n })\n .catch(() => {\n if (latestRequestId.current !== requestId) return;\n });\n return;\n }\n\n setResolvedResources(resources);\n setResolvedLocale(fallbackLocale);\n }, [fallbackLocale, resources]);\n\n const currentResources = isThenable(resources) ? resolvedResources : resources;\n const currentLocale = isThenable(resources) ? resolvedLocale : fallbackLocale;\n\n const i18nValue = useMemo((): I18nContextValue => {\n const resourceList = Array.isArray(currentResources)\n ? currentResources\n : currentResources\n ? Object.values(currentResources)\n : [];\n const mergedResources = Object.assign({}, ...resourceList);\n const t = (key: TranslationKey): string => mergedResources[key] || key;\n return { locale: currentLocale, t };\n }, [currentLocale, currentResources]);\n\n return (\n <I18nContextInternal value={i18nValue}>\n <ConfigContext value={config ?? null}>\n <DirectionContext value={direction}>\n <MotionComponent value={motion}>\n <AppElementContext value={portalHost}>\n {enableCustomFonts && <WebFonts customFonts={customFonts} />}\n {children}\n <div\n data-lobe-portal-host=\"\"\n id={LOBE_THEME_APP_ID}\n ref={setPortalHost}\n style={portalHostStyle}\n />\n </AppElementContext>\n </MotionComponent>\n </DirectionContext>\n </ConfigContext>\n </I18nContextInternal>\n );\n },\n);\n\n// `position: fixed` + `right: 0` gives base-ui Positioners a viewport-wide containing block and a\n// stacking context; no `pointer-events: none`, which popup descendants would inherit\nconst portalHostStyle: CSSProperties = {\n height: 0,\n left: 0,\n position: 'fixed',\n right: 0,\n top: 0,\n zIndex: 1100,\n};\n\nconst WebFonts = ({ customFonts }: { customFonts?: string[] }) => {\n const genCdnUrl = useCdnFn();\n const urls = useMemo(\n () =>\n customFonts || [\n genCdnUrl({ path: 'css/index.css', pkg: '@lobehub/webfont-mono', version: '1.0.0' }),\n genCdnUrl({\n path: 'css/index-full.css',\n pkg: '@lobehub/webfont-harmony-sans',\n version: '1.0.0',\n }),\n genCdnUrl({\n path: 'css/index.css',\n pkg: '@lobehub/webfont-harmony-sans-sc',\n version: '1.0.0',\n }),\n genCdnUrl({ path: 'dist/katex.min.css', pkg: 'katex', version: '0.18.1' }),\n ],\n [customFonts, genCdnUrl],\n );\n\n return urls.map((url) => <FontLoader key={url} url={url} />);\n};\n\nexport const useDirection = () => use(DirectionContext);\n\nexport { useAppElement } from './AppElementContext';\n\n// useCdnFn\nexport type CdnFn = ({ pkg, version, path }: CdnApi) => string;\n\nconst cdnFallback: CdnFn = ({ pkg, version, path }) =>\n genCdnUrl({ path, pkg, proxy: 'aliyun', version });\n\nexport const useCdnFn = (): CdnFn => {\n const config = use(ConfigContext);\n if (!config) return cdnFallback;\n if (config?.proxy !== 'custom')\n return ({ pkg, version, path }) =>\n genCdnUrl({ path, pkg, proxy: config.proxy as any, version });\n return config?.customCdnFn || cdnFallback;\n};\n\n// useI18n hook\nexport const useI18n = () => use(I18nContextInternal);\n\n// Export I18nContext for external reference\nexport { I18nContextInternal as I18nContext };\n\nexport default ConfigProvider;\n"],"mappings":"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"}
1
+ {"version":3,"file":"index.mjs","names":[],"sources":["../../src/ConfigProvider/index.tsx"],"sourcesContent":["'use client';\n\nimport {\n createContext,\n type CSSProperties,\n type ElementType,\n memo,\n type ReactNode,\n use,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from 'react';\n\nimport FontLoader from '@/FontLoader';\nimport { installGlobalFocusRing } from '@/GlobalFocusRing';\nimport {\n type I18nContextValue,\n type TranslationKey,\n type TranslationResourcesInput,\n type TranslationResourcesMap,\n} from '@/i18n/types';\nimport { MotionComponent, type MotionComponentType } from '@/MotionProvider';\nimport { type CDN, type CdnApi, genCdnUrl } from '@/utils/genCdnUrl';\n\nimport AppElementContext from './AppElementContext';\nimport { KATEX_CSS_VERSION } from './cdnAssets';\n\nexport const LOBE_THEME_APP_ID = 'lobe-ui-theme-app';\n\nexport type Direction = 'ltr' | 'rtl';\n\nexport interface Config {\n aAs?: ElementType;\n customCdnFn?: CdnFn;\n globalFocusRing?: boolean;\n imgAs?: ElementType;\n imgUnoptimized?: boolean;\n proxy?: CDN | 'custom';\n}\n\nexport const ConfigContext = createContext<Config | null>(null);\n\nconst DirectionContext = createContext<Direction>('ltr');\n\n// Internal i18n context\nconst I18nContextInternal = createContext<I18nContextValue>({\n locale: 'en',\n t: (key: TranslationKey) => key,\n});\n\nexport interface ConfigProviderProps {\n children: ReactNode;\n config?: Config;\n customFonts?: string[];\n direction?: Direction;\n enableCustomFonts?: boolean;\n // i18n props - flattened at top level\n locale?: string;\n motion: MotionComponentType;\n resources?: TranslationResourcesInput;\n}\n\nconst isThenable = (value: unknown): value is Promise<TranslationResourcesMap> =>\n typeof (value as { then?: unknown })?.then === 'function';\n\nconst ConfigProvider = memo<ConfigProviderProps>(\n ({\n children,\n config,\n customFonts,\n direction = 'ltr',\n enableCustomFonts = true,\n locale,\n resources,\n motion,\n }) => {\n const [portalHost, setPortalHost] = useState<HTMLDivElement | null>(null);\n\n useEffect(() => {\n if (config?.globalFocusRing === false) return;\n return installGlobalFocusRing();\n }, [config?.globalFocusRing]);\n\n const fallbackLocale = locale ?? 'en';\n const [resolvedResources, setResolvedResources] = useState<TranslationResourcesMap | undefined>(\n () => (resources && !isThenable(resources) ? resources : undefined),\n );\n const [resolvedLocale, setResolvedLocale] = useState(fallbackLocale);\n const latestRequestId = useRef(0);\n\n useEffect(() => {\n const requestId = ++latestRequestId.current;\n\n if (!resources) {\n setResolvedResources(undefined);\n setResolvedLocale(fallbackLocale);\n return;\n }\n\n if (isThenable(resources)) {\n const targetLocale = fallbackLocale;\n resources\n .then((nextResources) => {\n if (latestRequestId.current !== requestId) return;\n setResolvedResources(nextResources);\n setResolvedLocale(targetLocale);\n })\n .catch(() => {\n if (latestRequestId.current !== requestId) return;\n });\n return;\n }\n\n setResolvedResources(resources);\n setResolvedLocale(fallbackLocale);\n }, [fallbackLocale, resources]);\n\n const currentResources = isThenable(resources) ? resolvedResources : resources;\n const currentLocale = isThenable(resources) ? resolvedLocale : fallbackLocale;\n\n const i18nValue = useMemo((): I18nContextValue => {\n const resourceList = Array.isArray(currentResources)\n ? currentResources\n : currentResources\n ? Object.values(currentResources)\n : [];\n const mergedResources = Object.assign({}, ...resourceList);\n const t = (key: TranslationKey): string => mergedResources[key] || key;\n return { locale: currentLocale, t };\n }, [currentLocale, currentResources]);\n\n return (\n <I18nContextInternal value={i18nValue}>\n <ConfigContext value={config ?? null}>\n <DirectionContext value={direction}>\n <MotionComponent value={motion}>\n <AppElementContext value={portalHost}>\n {enableCustomFonts && <WebFonts customFonts={customFonts} />}\n {children}\n <div\n data-lobe-portal-host=\"\"\n id={LOBE_THEME_APP_ID}\n ref={setPortalHost}\n style={portalHostStyle}\n />\n </AppElementContext>\n </MotionComponent>\n </DirectionContext>\n </ConfigContext>\n </I18nContextInternal>\n );\n },\n);\n\n// `position: fixed` + `right: 0` gives base-ui Positioners a viewport-wide containing block and a\n// stacking context; no `pointer-events: none`, which popup descendants would inherit\nconst portalHostStyle: CSSProperties = {\n height: 0,\n left: 0,\n position: 'fixed',\n right: 0,\n top: 0,\n zIndex: 1100,\n};\n\nconst WebFonts = ({ customFonts }: { customFonts?: string[] }) => {\n const genCdnUrl = useCdnFn();\n const urls = useMemo(\n () =>\n customFonts || [\n genCdnUrl({ path: 'css/index.css', pkg: '@lobehub/webfont-mono', version: '1.0.0' }),\n genCdnUrl({\n path: 'css/index-full.css',\n pkg: '@lobehub/webfont-harmony-sans',\n version: '1.0.0',\n }),\n genCdnUrl({\n path: 'css/index.css',\n pkg: '@lobehub/webfont-harmony-sans-sc',\n version: '1.0.0',\n }),\n genCdnUrl({ path: 'dist/katex.min.css', pkg: 'katex', version: KATEX_CSS_VERSION }),\n ],\n [customFonts, genCdnUrl],\n );\n\n return urls.map((url) => <FontLoader key={url} url={url} />);\n};\n\nexport const useDirection = () => use(DirectionContext);\n\nexport { useAppElement } from './AppElementContext';\n\n// useCdnFn\nexport type CdnFn = ({ pkg, version, path }: CdnApi) => string;\n\nconst cdnFallback: CdnFn = ({ pkg, version, path }) =>\n genCdnUrl({ path, pkg, proxy: 'aliyun', version });\n\nexport const useCdnFn = (): CdnFn => {\n const config = use(ConfigContext);\n if (!config) return cdnFallback;\n if (config?.proxy !== 'custom')\n return ({ pkg, version, path }) =>\n genCdnUrl({ path, pkg, proxy: config.proxy as any, version });\n return config?.customCdnFn || cdnFallback;\n};\n\n// useI18n hook\nexport const useI18n = () => use(I18nContextInternal);\n\n// Export I18nContext for external reference\nexport { I18nContextInternal as I18nContext };\n\nexport default ConfigProvider;\n"],"mappings":"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"}
@@ -12,7 +12,7 @@ import { renderContextMenuItems } from "./renderItems.mjs";
12
12
  import { closeContextMenu, getServerSnapshot, getSnapshot, setContextMenuState, subscribe, updateLastPointer } from "./store.mjs";
13
13
  import { memo, useEffect, useMemo, useSyncExternalStore } from "react";
14
14
  import { jsx, jsxs } from "react/jsx-runtime";
15
- import clsx from "clsx";
15
+ import clsx$1 from "clsx";
16
16
  import * as stylex from "@stylexjs/stylex";
17
17
  import { ContextMenu } from "@base-ui/react/context-menu";
18
18
  //#region src/ContextMenu/ContextMenuHost.tsx
@@ -71,7 +71,7 @@ const ContextMenuHost = memo(() => {
71
71
  children: /* @__PURE__ */ jsxs(ContextMenu.Popup, {
72
72
  "data-has-footer": state.footer == null ? void 0 : "",
73
73
  "data-has-header": state.header == null ? void 0 : "",
74
- className: clsx(stylex.props(menuStyles.popup, hasSlots && menuStyles.popupWithSlots).className, menuClassNames.popup),
74
+ className: clsx$1(stylex.props(menuStyles.popup, hasSlots && menuStyles.popupWithSlots).className, menuClassNames.popup),
75
75
  onContextMenu: preventDefaultAndStopPropagation,
76
76
  children: [
77
77
  state.header == null ? null : /* @__PURE__ */ jsx("div", {
@@ -1 +1 @@
1
- {"version":3,"file":"ContextMenuHost.mjs","names":[],"sources":["../../src/ContextMenu/ContextMenuHost.tsx"],"sourcesContent":["'use client';\n\nimport { ContextMenu } from '@base-ui/react/context-menu';\nimport * as stylex from '@stylexjs/stylex';\nimport clsx from 'clsx';\nimport { memo, useEffect, useMemo, useSyncExternalStore } from 'react';\n\nimport { useAppElement } from '@/ConfigProvider/AppElementContext';\nimport { useIsClient } from '@/hooks/useIsClient';\nimport { getFloatingCollisionPadding } from '@/internal/floating';\nimport { MenuVirtualList } from '@/internal/virtual';\nimport { registerDevSingleton } from '@/utils/devSingleton';\nimport { preventDefaultAndStopPropagation } from '@/utils/dom';\n\nimport { useLayerZIndex } from '../internal/zIndex';\nimport { renderContextMenuItems } from './renderItems';\nimport {\n closeContextMenu,\n getServerSnapshot,\n getSnapshot,\n setContextMenuState,\n subscribe,\n updateLastPointer,\n} from './store';\nimport { menuClassNames, menuStyles, styles } from './style';\n\nconst noAnimationStyles = { '--lobe-dropdown-animation-duration': '0ms' } as React.CSSProperties;\n\nexport const ContextMenuHost = memo(() => {\n const isClient = useIsClient();\n const appElement = useAppElement();\n const state = useSyncExternalStore(subscribe, getSnapshot, getServerSnapshot);\n\n useEffect(() => {\n const DEV = process.env.NODE_ENV === 'development';\n if (!isClient || !DEV) return;\n return registerDevSingleton('ContextMenuHost', document.body);\n }, [isClient]);\n\n useEffect(() => {\n const handler = (event: MouseEvent | PointerEvent) => updateLastPointer(event);\n window.addEventListener('pointerdown', handler, true);\n window.addEventListener('contextmenu', handler, true);\n return () => {\n window.removeEventListener('pointerdown', handler, true);\n window.removeEventListener('contextmenu', handler, true);\n };\n }, []);\n\n const menuItems = useMemo(\n () =>\n renderContextMenuItems(state.items, [], {\n iconAlign: state.iconAlign,\n iconSpaceMode: state.iconSpaceMode,\n }),\n [state.items, state.iconAlign, state.iconSpaceMode],\n );\n const { zIndex, ref: zRef } = useLayerZIndex<HTMLDivElement>('floating');\n const hasSlots = state.header != null || state.footer != null;\n if (!isClient) return null;\n if (!state.open && state.items.length === 0) return null;\n\n return (\n <ContextMenu.Root\n open={state.open}\n onOpenChange={(open) => {\n if (open) {\n setContextMenuState({ open });\n return;\n }\n closeContextMenu();\n }}\n >\n <ContextMenu.Portal container={appElement}>\n <ContextMenu.Positioner\n anchor={state.anchor ?? undefined}\n className={styles.positioner}\n collisionPadding={getFloatingCollisionPadding()}\n ref={zRef as any}\n sideOffset={6}\n style={{ ...noAnimationStyles, zIndex }}\n >\n <ContextMenu.Popup\n data-has-footer={state.footer == null ? undefined : ''}\n data-has-header={state.header == null ? undefined : ''}\n className={clsx(\n stylex.props(menuStyles.popup, hasSlots && menuStyles.popupWithSlots).className,\n menuClassNames.popup,\n )}\n onContextMenu={preventDefaultAndStopPropagation}\n >\n {state.header == null ? null : <div className={styles.header}>{state.header}</div>}\n {state.virtual ? (\n <MenuVirtualList itemSize={state.listItemHeight}>{menuItems}</MenuVirtualList>\n ) : hasSlots ? (\n <div className={styles.slotViewport}>{menuItems}</div>\n ) : (\n menuItems\n )}\n {state.footer == null ? null : <div className={styles.footer}>{state.footer}</div>}\n </ContextMenu.Popup>\n </ContextMenu.Positioner>\n </ContextMenu.Portal>\n </ContextMenu.Root>\n );\n});\n\nContextMenuHost.displayName = 'ContextMenuHost';\n"],"mappings":";;;;;;;;;;;;;;;;;;AAgBA,MAAM,oBAAoB,EACxB,sCAAsC,MACxC;AACA,MAAa,kBAAkB,WAAW;CACxC,MAAM,WAAW,YAAY;CAC7B,MAAM,aAAa,cAAc;CACjC,MAAM,QAAQ,qBAAqB,WAAW,aAAa,iBAAiB;CAC5E,gBAAgB;EACd,MAAM,MAAM,QAAQ,IAAI,aAAa;EACrC,IAAI,CAAC,YAAY,CAAC,KAAK;EACvB,OAAO,qBAAqB,mBAAmB,SAAS,IAAI;CAC9D,GAAG,CAAC,QAAQ,CAAC;CACb,gBAAgB;EACd,MAAM,WAAW,UAAqC,kBAAkB,KAAK;EAC7E,OAAO,iBAAiB,eAAe,SAAS,IAAI;EACpD,OAAO,iBAAiB,eAAe,SAAS,IAAI;EACpD,aAAa;GACX,OAAO,oBAAoB,eAAe,SAAS,IAAI;GACvD,OAAO,oBAAoB,eAAe,SAAS,IAAI;EACzD;CACF,GAAG,CAAC,CAAC;CACL,MAAM,YAAY,cAAc,uBAAuB,MAAM,OAAO,CAAC,GAAG;EACtE,WAAW,MAAM;EACjB,eAAe,MAAM;CACvB,CAAC,GAAG;EAAC,MAAM;EAAO,MAAM;EAAW,MAAM;CAAa,CAAC;CACvD,MAAM,EACJ,QACA,KAAK,SACH,eAA+B,UAAU;CAC7C,MAAM,WAAW,MAAM,UAAU,QAAQ,MAAM,UAAU;CACzD,IAAI,CAAC,UAAU,OAAO;CACtB,IAAI,CAAC,MAAM,QAAQ,MAAM,MAAM,WAAW,GAAG,OAAO;CACpD,OAAO,oBAAC,YAAY,MAAb;EAAkB,MAAM,MAAM;EAAM,eAAc,SAAQ;GAC/D,IAAI,MAAM;IACR,oBAAoB,EAClB,KACF,CAAC;IACD;GACF;GACA,iBAAiB;EACnB;EACI,UAAA,oBAAC,YAAY,QAAb;GAAoB,WAAW;GAC7B,UAAA,oBAAC,YAAY,YAAb;IAAwB,QAAQ,MAAM,UAAU,KAAA;IAAW,WAAW,OAAO;IAAY,kBAAkB,4BAA4B;IAAG,KAAK;IAAa,YAAY;IAAG,OAAO;KAClL,GAAG;KACH;IACF;IACI,UAAA,qBAAC,YAAY,OAAb;KAAmB,mBAAiB,MAAM,UAAU,OAAO,KAAA,IAAY;KAAI,mBAAiB,MAAM,UAAU,OAAO,KAAA,IAAY;KAAI,WAAW,KAAK,OAAO,MAAM,WAAW,OAAO,YAAY,WAAW,cAAc,CAAC,CAAC,WAAW,eAAe,KAAK;KAAG,eAAe;KAA1Q,UAAA;MACG,MAAM,UAAU,OAAO,OAAO,oBAAC,OAAD;OAAK,WAAW,OAAO;OAAS,UAAA,MAAM;MAAY,CAAA;MAChF,MAAM,UAAU,oBAAC,iBAAD;OAAiB,UAAU,MAAM;OAAiB,UAAA;MAA2B,CAAA,IAAI,WAAW,oBAAC,OAAD;OAAK,WAAW,OAAO;OAAe,UAAA;MAAe,CAAA,IAAI;MACrK,MAAM,UAAU,OAAO,OAAO,oBAAC,OAAD;OAAK,WAAW,OAAO;OAAS,UAAA,MAAM;MAAY,CAAA;KAChE;;GACG,CAAA;EACN,CAAA;CACJ,CAAA;AACtB,CAAC;AACD,gBAAgB,cAAc"}
1
+ {"version":3,"file":"ContextMenuHost.mjs","names":["clsx"],"sources":["../../src/ContextMenu/ContextMenuHost.tsx"],"sourcesContent":["'use client';\n\nimport { ContextMenu } from '@base-ui/react/context-menu';\nimport * as stylex from '@stylexjs/stylex';\nimport clsx from 'clsx';\nimport { memo, useEffect, useMemo, useSyncExternalStore } from 'react';\n\nimport { useAppElement } from '@/ConfigProvider/AppElementContext';\nimport { useIsClient } from '@/hooks/useIsClient';\nimport { getFloatingCollisionPadding } from '@/internal/floating';\nimport { MenuVirtualList } from '@/internal/virtual';\nimport { registerDevSingleton } from '@/utils/devSingleton';\nimport { preventDefaultAndStopPropagation } from '@/utils/dom';\n\nimport { useLayerZIndex } from '../internal/zIndex';\nimport { renderContextMenuItems } from './renderItems';\nimport {\n closeContextMenu,\n getServerSnapshot,\n getSnapshot,\n setContextMenuState,\n subscribe,\n updateLastPointer,\n} from './store';\nimport { menuClassNames, menuStyles, styles } from './style';\n\nconst noAnimationStyles = { '--lobe-dropdown-animation-duration': '0ms' } as React.CSSProperties;\n\nexport const ContextMenuHost = memo(() => {\n const isClient = useIsClient();\n const appElement = useAppElement();\n const state = useSyncExternalStore(subscribe, getSnapshot, getServerSnapshot);\n\n useEffect(() => {\n const DEV = process.env.NODE_ENV === 'development';\n if (!isClient || !DEV) return;\n return registerDevSingleton('ContextMenuHost', document.body);\n }, [isClient]);\n\n useEffect(() => {\n const handler = (event: MouseEvent | PointerEvent) => updateLastPointer(event);\n window.addEventListener('pointerdown', handler, true);\n window.addEventListener('contextmenu', handler, true);\n return () => {\n window.removeEventListener('pointerdown', handler, true);\n window.removeEventListener('contextmenu', handler, true);\n };\n }, []);\n\n const menuItems = useMemo(\n () =>\n renderContextMenuItems(state.items, [], {\n iconAlign: state.iconAlign,\n iconSpaceMode: state.iconSpaceMode,\n }),\n [state.items, state.iconAlign, state.iconSpaceMode],\n );\n const { zIndex, ref: zRef } = useLayerZIndex<HTMLDivElement>('floating');\n const hasSlots = state.header != null || state.footer != null;\n if (!isClient) return null;\n if (!state.open && state.items.length === 0) return null;\n\n return (\n <ContextMenu.Root\n open={state.open}\n onOpenChange={(open) => {\n if (open) {\n setContextMenuState({ open });\n return;\n }\n closeContextMenu();\n }}\n >\n <ContextMenu.Portal container={appElement}>\n <ContextMenu.Positioner\n anchor={state.anchor ?? undefined}\n className={styles.positioner}\n collisionPadding={getFloatingCollisionPadding()}\n ref={zRef as any}\n sideOffset={6}\n style={{ ...noAnimationStyles, zIndex }}\n >\n <ContextMenu.Popup\n data-has-footer={state.footer == null ? undefined : ''}\n data-has-header={state.header == null ? undefined : ''}\n className={clsx(\n stylex.props(menuStyles.popup, hasSlots && menuStyles.popupWithSlots).className,\n menuClassNames.popup,\n )}\n onContextMenu={preventDefaultAndStopPropagation}\n >\n {state.header == null ? null : <div className={styles.header}>{state.header}</div>}\n {state.virtual ? (\n <MenuVirtualList itemSize={state.listItemHeight}>{menuItems}</MenuVirtualList>\n ) : hasSlots ? (\n <div className={styles.slotViewport}>{menuItems}</div>\n ) : (\n menuItems\n )}\n {state.footer == null ? null : <div className={styles.footer}>{state.footer}</div>}\n </ContextMenu.Popup>\n </ContextMenu.Positioner>\n </ContextMenu.Portal>\n </ContextMenu.Root>\n );\n});\n\nContextMenuHost.displayName = 'ContextMenuHost';\n"],"mappings":";;;;;;;;;;;;;;;;;;AAgBA,MAAM,oBAAoB,EACxB,sCAAsC,MACxC;AACA,MAAa,kBAAkB,WAAW;CACxC,MAAM,WAAW,YAAY;CAC7B,MAAM,aAAa,cAAc;CACjC,MAAM,QAAQ,qBAAqB,WAAW,aAAa,iBAAiB;CAC5E,gBAAgB;EACd,MAAM,MAAM,QAAQ,IAAI,aAAa;EACrC,IAAI,CAAC,YAAY,CAAC,KAAK;EACvB,OAAO,qBAAqB,mBAAmB,SAAS,IAAI;CAC9D,GAAG,CAAC,QAAQ,CAAC;CACb,gBAAgB;EACd,MAAM,WAAW,UAAqC,kBAAkB,KAAK;EAC7E,OAAO,iBAAiB,eAAe,SAAS,IAAI;EACpD,OAAO,iBAAiB,eAAe,SAAS,IAAI;EACpD,aAAa;GACX,OAAO,oBAAoB,eAAe,SAAS,IAAI;GACvD,OAAO,oBAAoB,eAAe,SAAS,IAAI;EACzD;CACF,GAAG,CAAC,CAAC;CACL,MAAM,YAAY,cAAc,uBAAuB,MAAM,OAAO,CAAC,GAAG;EACtE,WAAW,MAAM;EACjB,eAAe,MAAM;CACvB,CAAC,GAAG;EAAC,MAAM;EAAO,MAAM;EAAW,MAAM;CAAa,CAAC;CACvD,MAAM,EACJ,QACA,KAAK,SACH,eAA+B,UAAU;CAC7C,MAAM,WAAW,MAAM,UAAU,QAAQ,MAAM,UAAU;CACzD,IAAI,CAAC,UAAU,OAAO;CACtB,IAAI,CAAC,MAAM,QAAQ,MAAM,MAAM,WAAW,GAAG,OAAO;CACpD,OAAO,oBAAC,YAAY,MAAb;EAAkB,MAAM,MAAM;EAAM,eAAc,SAAQ;GAC/D,IAAI,MAAM;IACR,oBAAoB,EAClB,KACF,CAAC;IACD;GACF;GACA,iBAAiB;EACnB;EACI,UAAA,oBAAC,YAAY,QAAb;GAAoB,WAAW;GAC7B,UAAA,oBAAC,YAAY,YAAb;IAAwB,QAAQ,MAAM,UAAU,KAAA;IAAW,WAAW,OAAO;IAAY,kBAAkB,4BAA4B;IAAG,KAAK;IAAa,YAAY;IAAG,OAAO;KAClL,GAAG;KACH;IACF;IACI,UAAA,qBAAC,YAAY,OAAb;KAAmB,mBAAiB,MAAM,UAAU,OAAO,KAAA,IAAY;KAAI,mBAAiB,MAAM,UAAU,OAAO,KAAA,IAAY;KAAI,WAAWA,OAAK,OAAO,MAAM,WAAW,OAAO,YAAY,WAAW,cAAc,CAAC,CAAC,WAAW,eAAe,KAAK;KAAG,eAAe;KAA1Q,UAAA;MACG,MAAM,UAAU,OAAO,OAAO,oBAAC,OAAD;OAAK,WAAW,OAAO;OAAS,UAAA,MAAM;MAAY,CAAA;MAChF,MAAM,UAAU,oBAAC,iBAAD;OAAiB,UAAU,MAAM;OAAiB,UAAA;MAA2B,CAAA,IAAI,WAAW,oBAAC,OAAD;OAAK,WAAW,OAAO;OAAe,UAAA;MAAe,CAAA,IAAI;MACrK,MAAM,UAAU,OAAO,OAAO,oBAAC,OAAD;OAAK,WAAW,OAAO;OAAS,UAAA,MAAM;MAAY,CAAA;KAChE;;GACG,CAAA;EACN,CAAA;CACJ,CAAA;AACtB,CAAC;AACD,gBAAgB,cAAc"}
@@ -3,7 +3,7 @@ import { CLASSNAMES } from "../styles/classNames.mjs";
3
3
  import { getServerSnapshot, getSnapshot, showContextMenu, subscribe } from "./store.mjs";
4
4
  import React, { cloneElement, isValidElement, memo, useCallback, useId, useSyncExternalStore } from "react";
5
5
  import { jsx } from "react/jsx-runtime";
6
- import clsx from "clsx";
6
+ import clsx$1 from "clsx";
7
7
  import { mergeProps } from "@base-ui/react/merge-props";
8
8
  //#region src/ContextMenu/ContextMenuTrigger.tsx
9
9
  const styles = { trigger: { display: "contents" } };
@@ -34,7 +34,7 @@ const ContextMenuTrigger = memo(({ children, footer, header, items, listItemHeig
34
34
  const triggerProps = {
35
35
  ...rest,
36
36
  "aria-expanded": open || void 0,
37
- "className": clsx(CLASSNAMES.ContextTrigger, rest.className),
37
+ "className": clsx$1(CLASSNAMES.ContextTrigger, rest.className),
38
38
  "data-contextmenu-trigger": triggerId,
39
39
  "data-popup-open": open ? "" : void 0,
40
40
  "data-state": open ? "open" : void 0,
@@ -1 +1 @@
1
- {"version":3,"file":"ContextMenuTrigger.mjs","names":[],"sources":["../../src/ContextMenu/ContextMenuTrigger.tsx"],"sourcesContent":["'use client';\n\nimport { mergeProps } from '@base-ui/react/merge-props';\nimport clsx from 'clsx';\nimport React, {\n cloneElement,\n type HTMLAttributes,\n isValidElement,\n memo,\n type MouseEvent,\n type ReactNode,\n useCallback,\n useId,\n useSyncExternalStore,\n} from 'react';\n\nimport type { VirtualListProps } from '@/internal/virtual';\nimport { CLASSNAMES } from '@/styles/classNames';\n\nimport { getServerSnapshot, getSnapshot, showContextMenu, subscribe } from './store';\nimport { type ContextMenuItem } from './type';\n\nexport type ContextMenuTriggerProps = Pick<VirtualListProps, 'virtual' | 'listItemHeight'> & {\n children: ReactNode;\n /**\n * Footer slot pinned below the scrollable items area, with a divider border.\n */\n footer?: ReactNode;\n /**\n * Header slot pinned above the scrollable items area, with a divider border.\n */\n header?: ReactNode;\n /**\n * Menu items to display. Supports lazy rendering via function.\n * When provided, context menu will be automatically shown on right-click.\n */\n items?: ContextMenuItem[] | (() => ContextMenuItem[]);\n /**\n * Custom context menu handler. If `items` is provided, this is optional.\n */\n onContextMenu?: (event: MouseEvent<HTMLElement>) => void;\n} & Omit<HTMLAttributes<HTMLElement>, 'onContextMenu' | 'children'>;\n\nconst styles = {\n trigger: {\n display: 'contents',\n },\n};\n\nexport const ContextMenuTrigger = memo<ContextMenuTriggerProps>(\n ({ children, footer, header, items, listItemHeight, onContextMenu, virtual, ...rest }) => {\n const triggerId = useId();\n const state = useSyncExternalStore(subscribe, getSnapshot, getServerSnapshot);\n const open = state.open && state.triggerId === triggerId;\n\n const handleContextMenu = useCallback(\n (event: MouseEvent<HTMLElement>) => {\n if (items) {\n event.preventDefault();\n const resolvedItems = typeof items === 'function' ? items() : items;\n showContextMenu(resolvedItems, { footer, header, listItemHeight, virtual });\n }\n onContextMenu?.(event);\n },\n [items, onContextMenu, footer, header, listItemHeight, virtual],\n );\n\n const triggerProps = {\n ...rest,\n 'aria-expanded': open || undefined,\n 'className': clsx(CLASSNAMES.ContextTrigger, rest.className),\n 'data-contextmenu-trigger': triggerId,\n 'data-popup-open': open ? '' : undefined,\n 'data-state': open ? 'open' : undefined,\n 'onContextMenu': handleContextMenu,\n };\n\n if (isValidElement(children) && React.Children.only(children)) {\n return cloneElement(children, mergeProps(children.props as any, triggerProps));\n }\n\n return (\n <span style={styles.trigger} {...triggerProps}>\n {children}\n </span>\n );\n },\n);\n\nContextMenuTrigger.displayName = 'ContextMenuTrigger';\n"],"mappings":";;;;;;;;AA2CA,MAAM,SAAS,EACb,SAAS,EACP,SAAS,WACX,EACF;AAEA,MAAa,qBAAqB,MAC/B,EAAE,UAAU,QAAQ,QAAQ,OAAO,gBAAgB,eAAe,SAAS,GAAG,WAAW;CACxF,MAAM,YAAY,MAAM;CACxB,MAAM,QAAQ,qBAAqB,WAAW,aAAa,iBAAiB;CAC5E,MAAM,OAAO,MAAM,QAAQ,MAAM,cAAc;CAE/C,MAAM,oBAAoB,aACvB,UAAmC;EAClC,IAAI,OAAO;GACT,MAAM,eAAe;GACrB,MAAM,gBAAgB,OAAO,UAAU,aAAa,MAAM,IAAI;GAC9D,gBAAgB,eAAe;IAAE;IAAQ;IAAQ;IAAgB;GAAQ,CAAC;EAC5E;EACA,gBAAgB,KAAK;CACvB,GACA;EAAC;EAAO;EAAe;EAAQ;EAAQ;EAAgB;CAAO,CAChE;CAEA,MAAM,eAAe;EACnB,GAAG;EACH,iBAAiB,QAAQ,KAAA;EACzB,aAAa,KAAK,WAAW,gBAAgB,KAAK,SAAS;EAC3D,4BAA4B;EAC5B,mBAAmB,OAAO,KAAK,KAAA;EAC/B,cAAc,OAAO,SAAS,KAAA;EAC9B,iBAAiB;CACnB;CAEA,IAAI,eAAe,QAAQ,KAAK,MAAM,SAAS,KAAK,QAAQ,GAC1D,OAAO,aAAa,UAAU,WAAW,SAAS,OAAc,YAAY,CAAC;CAG/E,OACE,oBAAC,QAAD;EAAM,OAAO,OAAO;EAAS,GAAI;EAC9B;CACG,CAAA;AAEV,CACF;AAEA,mBAAmB,cAAc"}
1
+ {"version":3,"file":"ContextMenuTrigger.mjs","names":["clsx"],"sources":["../../src/ContextMenu/ContextMenuTrigger.tsx"],"sourcesContent":["'use client';\n\nimport { mergeProps } from '@base-ui/react/merge-props';\nimport clsx from 'clsx';\nimport React, {\n cloneElement,\n type HTMLAttributes,\n isValidElement,\n memo,\n type MouseEvent,\n type ReactNode,\n useCallback,\n useId,\n useSyncExternalStore,\n} from 'react';\n\nimport type { VirtualListProps } from '@/internal/virtual';\nimport { CLASSNAMES } from '@/styles/classNames';\n\nimport { getServerSnapshot, getSnapshot, showContextMenu, subscribe } from './store';\nimport { type ContextMenuItem } from './type';\n\nexport type ContextMenuTriggerProps = Pick<VirtualListProps, 'virtual' | 'listItemHeight'> & {\n children: ReactNode;\n /**\n * Footer slot pinned below the scrollable items area, with a divider border.\n */\n footer?: ReactNode;\n /**\n * Header slot pinned above the scrollable items area, with a divider border.\n */\n header?: ReactNode;\n /**\n * Menu items to display. Supports lazy rendering via function.\n * When provided, context menu will be automatically shown on right-click.\n */\n items?: ContextMenuItem[] | (() => ContextMenuItem[]);\n /**\n * Custom context menu handler. If `items` is provided, this is optional.\n */\n onContextMenu?: (event: MouseEvent<HTMLElement>) => void;\n} & Omit<HTMLAttributes<HTMLElement>, 'onContextMenu' | 'children'>;\n\nconst styles = {\n trigger: {\n display: 'contents',\n },\n};\n\nexport const ContextMenuTrigger = memo<ContextMenuTriggerProps>(\n ({ children, footer, header, items, listItemHeight, onContextMenu, virtual, ...rest }) => {\n const triggerId = useId();\n const state = useSyncExternalStore(subscribe, getSnapshot, getServerSnapshot);\n const open = state.open && state.triggerId === triggerId;\n\n const handleContextMenu = useCallback(\n (event: MouseEvent<HTMLElement>) => {\n if (items) {\n event.preventDefault();\n const resolvedItems = typeof items === 'function' ? items() : items;\n showContextMenu(resolvedItems, { footer, header, listItemHeight, virtual });\n }\n onContextMenu?.(event);\n },\n [items, onContextMenu, footer, header, listItemHeight, virtual],\n );\n\n const triggerProps = {\n ...rest,\n 'aria-expanded': open || undefined,\n 'className': clsx(CLASSNAMES.ContextTrigger, rest.className),\n 'data-contextmenu-trigger': triggerId,\n 'data-popup-open': open ? '' : undefined,\n 'data-state': open ? 'open' : undefined,\n 'onContextMenu': handleContextMenu,\n };\n\n if (isValidElement(children) && React.Children.only(children)) {\n return cloneElement(children, mergeProps(children.props as any, triggerProps));\n }\n\n return (\n <span style={styles.trigger} {...triggerProps}>\n {children}\n </span>\n );\n },\n);\n\nContextMenuTrigger.displayName = 'ContextMenuTrigger';\n"],"mappings":";;;;;;;;AA2CA,MAAM,SAAS,EACb,SAAS,EACP,SAAS,WACX,EACF;AAEA,MAAa,qBAAqB,MAC/B,EAAE,UAAU,QAAQ,QAAQ,OAAO,gBAAgB,eAAe,SAAS,GAAG,WAAW;CACxF,MAAM,YAAY,MAAM;CACxB,MAAM,QAAQ,qBAAqB,WAAW,aAAa,iBAAiB;CAC5E,MAAM,OAAO,MAAM,QAAQ,MAAM,cAAc;CAE/C,MAAM,oBAAoB,aACvB,UAAmC;EAClC,IAAI,OAAO;GACT,MAAM,eAAe;GACrB,MAAM,gBAAgB,OAAO,UAAU,aAAa,MAAM,IAAI;GAC9D,gBAAgB,eAAe;IAAE;IAAQ;IAAQ;IAAgB;GAAQ,CAAC;EAC5E;EACA,gBAAgB,KAAK;CACvB,GACA;EAAC;EAAO;EAAe;EAAQ;EAAQ;EAAgB;CAAO,CAChE;CAEA,MAAM,eAAe;EACnB,GAAG;EACH,iBAAiB,QAAQ,KAAA;EACzB,aAAaA,OAAK,WAAW,gBAAgB,KAAK,SAAS;EAC3D,4BAA4B;EAC5B,mBAAmB,OAAO,KAAK,KAAA;EAC/B,cAAc,OAAO,SAAS,KAAA;EAC9B,iBAAiB;CACnB;CAEA,IAAI,eAAe,QAAQ,KAAK,MAAM,SAAS,KAAK,QAAQ,GAC1D,OAAO,aAAa,UAAU,WAAW,SAAS,OAAc,YAAY,CAAC;CAG/E,OACE,oBAAC,QAAD;EAAM,OAAO,OAAO;EAAS,GAAI;EAC9B;CACG,CAAA;AAEV,CACF;AAEA,mBAAmB,cAAc"}
@@ -11,7 +11,7 @@ import { styles } from "../DropdownMenu/sharedStyle.mjs";
11
11
  import { preventDefaultAndStopPropagation } from "../utils/dom.mjs";
12
12
  import { memo, useCallback, useState } from "react";
13
13
  import { jsx, jsxs } from "react/jsx-runtime";
14
- import clsx from "clsx";
14
+ import clsx$1 from "clsx";
15
15
  import * as stylex from "@stylexjs/stylex";
16
16
  import { Check } from "lucide-react";
17
17
  import { ContextMenu } from "@base-ui/react/context-menu";
@@ -115,7 +115,7 @@ const renderItemContent = (item, options, iconNode) => {
115
115
  children: [
116
116
  shouldRenderIcon ? /* @__PURE__ */ jsx("span", {
117
117
  "aria-hidden": !hasIcon,
118
- className: clsx(stylex.props(menuStyles.icon, alignStart && menuStyles.iconAlignStart).className, menuClassNames.icon),
118
+ className: clsx$1(stylex.props(menuStyles.icon, alignStart && menuStyles.iconAlignStart).className, menuClassNames.icon),
119
119
  children: hasCustomIcon ? iconNode : hasIcon ? renderIcon(item.icon, "small") : null
120
120
  }) : null,
121
121
  labelNode,
@@ -245,7 +245,7 @@ const renderContextMenuItems = (items, keyPath = [], options) => {
245
245
  sideOffset: -1,
246
246
  onContextMenu: preventDefaultAndStopPropagation,
247
247
  children: /* @__PURE__ */ jsxs(ContextMenu.Popup, {
248
- className: clsx(stylex.props(menuStyles.popup, submenuHasSlots && menuStyles.popupWithSlots).className, menuClassNames.popup),
248
+ className: clsx$1(stylex.props(menuStyles.popup, submenuHasSlots && menuStyles.popupWithSlots).className, menuClassNames.popup),
249
249
  children: [
250
250
  submenu.header == null ? null : /* @__PURE__ */ jsx("div", {
251
251
  className: styles.header,
@@ -1 +1 @@
1
- {"version":3,"file":"renderItems.mjs","names":["common"],"sources":["../../src/ContextMenu/renderItems.tsx"],"sourcesContent":["import { ContextMenu } from '@base-ui/react/context-menu';\nimport * as stylex from '@stylexjs/stylex';\nimport clsx from 'clsx';\nimport { Check } from 'lucide-react';\nimport {\n type ComponentProps,\n type KeyboardEvent as ReactKeyboardEvent,\n type MouseEvent as ReactMouseEvent,\n type ReactNode,\n} from 'react';\nimport { memo, useCallback, useState } from 'react';\n\nimport { menuClassNames, menuStyles, styles } from '@/DropdownMenu/sharedStyle';\nimport common from '@/i18n/resources/en/common';\nimport { useTranslation } from '@/i18n/useTranslation';\nimport Icon from '@/Icon';\nimport { getFloatingCollisionPadding } from '@/internal/floating';\nimport type { BaseMenuItemGroupType, BaseSubMenuType } from '@/internal/menu/baseItem';\nimport {\n getItemKey,\n getItemLabel,\n hasAnyIcon,\n hasCheckboxAndIcon,\n renderIcon,\n type RenderItemContentOptions,\n type RenderOptions,\n} from '@/internal/menu/renderUtils';\nimport type { MenuDividerType, MenuInfo, MenuItemType } from '@/internal/menu/type';\nimport { SubmenuArrowIcon } from '@/internal/SubmenuArrowIcon';\nimport Switch from '@/Switch';\nimport { preventDefaultAndStopPropagation } from '@/utils/dom';\n\nimport { useLayerZIndex } from '../internal/zIndex';\nimport {\n type ContextMenuCheckboxItem,\n type ContextMenuItem,\n type ContextMenuSwitchItem,\n} from './type';\n\ntype ContextMenuPositionerProps = ComponentProps<typeof ContextMenu.Positioner>;\n\n/**\n * Submenu positioners are portaled outside the root menu, so they must allocate\n * their own layer z-index (same pattern as DropdownMenu) rather than relying on\n * the fixed CSS fallback that can fall behind after repeated root openings (#608).\n */\nconst ContextMenuSubmenuPositioner = memo(\n ({ collisionPadding, style, ...rest }: ContextMenuPositionerProps) => {\n const explicitZIndex =\n typeof style !== 'function' && style?.zIndex != null && typeof style.zIndex === 'number'\n ? style.zIndex\n : undefined;\n const { zIndex, ref: zRef } = useLayerZIndex<HTMLDivElement>('floating', explicitZIndex);\n\n const resolvedStyle =\n typeof style === 'function'\n ? (state: any) => ({ zIndex, ...style(state) })\n : { zIndex, ...style };\n\n return (\n <ContextMenu.Positioner\n {...rest}\n collisionPadding={collisionPadding ?? getFloatingCollisionPadding()}\n ref={zRef as any}\n style={resolvedStyle}\n />\n );\n },\n);\n\nContextMenuSubmenuPositioner.displayName = 'ContextMenuSubmenuPositioner';\n\nexport type { IconAlign, IconSpaceMode } from '@/internal/menu/renderUtils';\n\nconst EmptyMenuItem = memo(() => {\n const { t } = useTranslation(common);\n return (\n <ContextMenu.Item\n disabled\n className={stylex.props(menuStyles.item, menuStyles.empty).className}\n >\n <div className={styles.itemContent}>\n <span className={styles.label}>{t('common.empty')}</span>\n </div>\n </ContextMenu.Item>\n );\n});\n\nEmptyMenuItem.displayName = 'EmptyMenuItem';\n\ninterface ContextMenuSwitchItemInternalProps {\n checked?: boolean;\n children: ReactNode;\n closeOnClick?: boolean;\n danger?: boolean;\n defaultChecked?: boolean;\n disabled?: boolean;\n label?: string;\n onCheckedChange?: (checked: boolean) => void;\n}\n\nconst ContextMenuSwitchItemInternal = ({\n checked: checkedProp,\n children,\n closeOnClick = false,\n danger,\n defaultChecked,\n disabled,\n label,\n onCheckedChange,\n}: ContextMenuSwitchItemInternalProps) => {\n const [internalChecked, setInternalChecked] = useState(defaultChecked ?? false);\n const isControlled = checkedProp !== undefined;\n const checked = isControlled ? checkedProp : internalChecked;\n\n const handleCheckedChange = useCallback(\n (newChecked: boolean) => {\n if (!isControlled) {\n setInternalChecked(newChecked);\n }\n onCheckedChange?.(newChecked);\n },\n [isControlled, onCheckedChange],\n );\n\n return (\n <ContextMenu.Item\n className={stylex.props(menuStyles.item, danger && menuStyles.danger).className}\n closeOnClick={closeOnClick}\n disabled={disabled}\n label={label}\n onClick={(e) => {\n e.preventDefault();\n if (!disabled) {\n handleCheckedChange(!checked);\n }\n }}\n >\n {children}\n <span\n style={{ display: 'inline-flex', marginInlineStart: 16 }}\n onFocus={(e) => e.stopPropagation()}\n >\n <Switch\n checked={checked}\n disabled={disabled}\n size=\"small\"\n tabIndex={-1}\n onChange={handleCheckedChange}\n onClick={(_, e) => e.stopPropagation()}\n />\n </span>\n </ContextMenu.Item>\n );\n};\n\nconst renderItemContent = (\n item: MenuItemType | BaseSubMenuType | ContextMenuCheckboxItem | ContextMenuSwitchItem,\n options?: RenderItemContentOptions,\n iconNode?: ReactNode,\n) => {\n const label = getItemLabel(item);\n const desc = 'desc' in item ? item.desc : undefined;\n const extra = 'extra' in item ? item.extra : undefined;\n const indicatorOnRight = options?.indicatorOnRight;\n const alignStart = Boolean(desc) && options?.iconAlign === 'start';\n const hasCustomIcon = iconNode !== undefined && !indicatorOnRight;\n const hasIcon = hasCustomIcon ? Boolean(iconNode) : Boolean(item.icon);\n const shouldRenderIcon = hasCustomIcon\n ? Boolean(options?.reserveIconSpace || iconNode)\n : Boolean(hasIcon || options?.reserveIconSpace);\n\n const labelNode = desc ? (\n <div className={styles.labelGroup}>\n <span className={styles.label}>{label}</span>\n <span className={styles.desc}>{desc}</span>\n </div>\n ) : (\n <span className={styles.label}>{label}</span>\n );\n\n return (\n <div\n className={\n stylex.props(menuStyles.itemContent, alignStart && menuStyles.itemContentAlignStart)\n .className\n }\n >\n {shouldRenderIcon ? (\n <span\n aria-hidden={!hasIcon}\n className={clsx(\n stylex.props(menuStyles.icon, alignStart && menuStyles.iconAlignStart).className,\n menuClassNames.icon,\n )}\n >\n {hasCustomIcon ? iconNode : hasIcon ? renderIcon(item.icon, 'small') : null}\n </span>\n ) : null}\n {labelNode}\n {extra ? <span className={styles.extra}>{extra}</span> : null}\n {indicatorOnRight && iconNode ? iconNode : null}\n {options?.submenu ? (\n <span className={styles.submenuArrow}>\n <SubmenuArrowIcon />\n </span>\n ) : null}\n </div>\n );\n};\n\nconst invokeItemClick = (\n item: MenuItemType,\n keyPath: string[],\n event: ReactMouseEvent<HTMLElement> | ReactKeyboardEvent<HTMLElement>,\n) => {\n if (!item.onClick) return;\n const key = item.key ?? keyPath.at(-1) ?? '';\n const info: MenuInfo = {\n domEvent: event,\n item: event.currentTarget as MenuInfo['item'],\n key: String(key),\n keyPath,\n };\n item.onClick(info);\n};\n\nexport const renderContextMenuItems = (\n items: ContextMenuItem[],\n keyPath: string[] = [],\n options?: RenderOptions,\n): ReactNode[] => {\n const iconAlign = options?.iconAlign;\n const iconSpaceMode = options?.iconSpaceMode ?? 'global';\n const reserveIconSpace =\n options?.reserveIconSpace ?? hasAnyIcon(items, iconSpaceMode === 'global');\n const indicatorOnRight = options?.indicatorOnRight ?? hasCheckboxAndIcon(items);\n\n return items.map((item, index) => {\n if (!item) return null;\n\n const fallbackKey = `${keyPath.join('-') || 'root'}-${index}`;\n const itemKey = getItemKey(item, fallbackKey);\n const nextKeyPath = [...keyPath, String(itemKey)];\n\n if ((item as ContextMenuCheckboxItem).type === 'checkbox') {\n const checkboxItem = item as ContextMenuCheckboxItem;\n const label = getItemLabel(checkboxItem);\n const labelText = typeof label === 'string' ? label : undefined;\n const isDanger = Boolean(checkboxItem.danger);\n const indicator = (\n <ContextMenu.CheckboxItemIndicator>\n <Icon icon={Check} size={'small'} />\n </ContextMenu.CheckboxItemIndicator>\n );\n\n return (\n <ContextMenu.CheckboxItem\n checked={checkboxItem.checked}\n className={stylex.props(menuStyles.item, isDanger && menuStyles.danger).className}\n closeOnClick={checkboxItem.closeOnClick}\n defaultChecked={checkboxItem.defaultChecked}\n disabled={checkboxItem.disabled}\n key={itemKey}\n label={labelText}\n onCheckedChange={(checked) => checkboxItem.onCheckedChange?.(checked)}\n >\n {renderItemContent(\n checkboxItem,\n { iconAlign, indicatorOnRight, reserveIconSpace },\n indicator,\n )}\n </ContextMenu.CheckboxItem>\n );\n }\n\n if ((item as ContextMenuSwitchItem).type === 'switch') {\n const switchItem = item as ContextMenuSwitchItem;\n const label = getItemLabel(switchItem);\n const labelText = typeof label === 'string' ? label : undefined;\n const isDanger = Boolean(switchItem.danger);\n\n return (\n <ContextMenuSwitchItemInternal\n checked={switchItem.checked}\n closeOnClick={switchItem.closeOnClick}\n danger={isDanger}\n defaultChecked={switchItem.defaultChecked}\n disabled={switchItem.disabled}\n key={itemKey}\n label={labelText}\n onCheckedChange={switchItem.onCheckedChange}\n >\n {renderItemContent(switchItem, { iconAlign, reserveIconSpace })}\n </ContextMenuSwitchItemInternal>\n );\n }\n\n if ((item as MenuDividerType).type === 'divider') {\n return <ContextMenu.Separator className={styles.separator} key={itemKey} />;\n }\n\n if ((item as BaseMenuItemGroupType).type === 'group') {\n const group = item as BaseMenuItemGroupType;\n const groupReserveIconSpace =\n iconSpaceMode === 'group'\n ? group.children\n ? hasAnyIcon(group.children)\n : false\n : reserveIconSpace;\n const groupIndicatorOnRight = group.children ? hasCheckboxAndIcon(group.children) : false;\n return (\n <ContextMenu.Group key={itemKey}>\n {group.label ? (\n <ContextMenu.GroupLabel className={styles.groupLabel}>\n {group.label}\n </ContextMenu.GroupLabel>\n ) : null}\n {group.children\n ? renderContextMenuItems(group.children, nextKeyPath, {\n iconAlign,\n iconSpaceMode,\n indicatorOnRight: groupIndicatorOnRight,\n reserveIconSpace: groupReserveIconSpace,\n })\n : null}\n </ContextMenu.Group>\n );\n }\n\n if (\n (item as BaseSubMenuType).type === 'submenu' ||\n ('children' in item && (item as BaseSubMenuType).children)\n ) {\n const submenu = item as BaseSubMenuType;\n const label = getItemLabel(submenu);\n const labelText = typeof label === 'string' ? label : undefined;\n const isDanger = 'danger' in submenu && Boolean(submenu.danger);\n const submenuHasSlots = submenu.header != null || submenu.footer != null;\n const submenuBody =\n submenu.children && submenu.children.length > 0 ? (\n renderContextMenuItems(submenu.children, nextKeyPath, {\n iconAlign,\n iconSpaceMode,\n })\n ) : (\n <EmptyMenuItem />\n );\n\n return (\n <ContextMenu.SubmenuRoot\n defaultOpen={submenu.defaultOpen}\n key={itemKey}\n open={submenu.open}\n onOpenChange={submenu.onOpenChange}\n >\n <ContextMenu.SubmenuTrigger\n {...submenu.triggerProps}\n className={stylex.props(menuStyles.item, isDanger && menuStyles.danger).className}\n closeDelay={submenu.closeDelay}\n delay={submenu.delay}\n disabled={submenu.disabled}\n label={labelText}\n openOnHover={submenu.openOnHover}\n onClick={submenu.onClick}\n >\n {renderItemContent(submenu, {\n iconAlign,\n reserveIconSpace,\n submenu: true,\n })}\n </ContextMenu.SubmenuTrigger>\n <ContextMenu.Portal>\n <ContextMenuSubmenuPositioner\n alignOffset={-4}\n className={styles.positioner}\n data-submenu=\"\"\n sideOffset={-1}\n onContextMenu={preventDefaultAndStopPropagation}\n >\n <ContextMenu.Popup\n className={clsx(\n stylex.props(menuStyles.popup, submenuHasSlots && menuStyles.popupWithSlots)\n .className,\n menuClassNames.popup,\n )}\n >\n {submenu.header == null ? null : (\n <div className={styles.header}>{submenu.header}</div>\n )}\n {submenuHasSlots ? (\n <div className={styles.slotViewport}>{submenuBody}</div>\n ) : (\n submenuBody\n )}\n {submenu.footer == null ? null : (\n <div className={styles.footer}>{submenu.footer}</div>\n )}\n </ContextMenu.Popup>\n </ContextMenuSubmenuPositioner>\n </ContextMenu.Portal>\n </ContextMenu.SubmenuRoot>\n );\n }\n\n const menuItem = item as MenuItemType;\n const label = getItemLabel(menuItem);\n const labelText = typeof label === 'string' ? label : undefined;\n const isDanger = 'danger' in menuItem && Boolean(menuItem.danger);\n\n return (\n <ContextMenu.Item\n className={stylex.props(menuStyles.item, isDanger && menuStyles.danger).className}\n closeOnClick={menuItem.closeOnClick}\n disabled={menuItem.disabled}\n key={itemKey}\n label={labelText}\n onClick={(event) => invokeItemClick(menuItem, nextKeyPath, event)}\n >\n {renderItemContent(menuItem, { iconAlign, reserveIconSpace })}\n </ContextMenu.Item>\n );\n });\n};\n"],"mappings":"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"}
1
+ {"version":3,"file":"renderItems.mjs","names":["common","clsx"],"sources":["../../src/ContextMenu/renderItems.tsx"],"sourcesContent":["import { ContextMenu } from '@base-ui/react/context-menu';\nimport * as stylex from '@stylexjs/stylex';\nimport clsx from 'clsx';\nimport { Check } from 'lucide-react';\nimport {\n type ComponentProps,\n type KeyboardEvent as ReactKeyboardEvent,\n type MouseEvent as ReactMouseEvent,\n type ReactNode,\n} from 'react';\nimport { memo, useCallback, useState } from 'react';\n\nimport { menuClassNames, menuStyles, styles } from '@/DropdownMenu/sharedStyle';\nimport common from '@/i18n/resources/en/common';\nimport { useTranslation } from '@/i18n/useTranslation';\nimport Icon from '@/Icon';\nimport { getFloatingCollisionPadding } from '@/internal/floating';\nimport type { BaseMenuItemGroupType, BaseSubMenuType } from '@/internal/menu/baseItem';\nimport {\n getItemKey,\n getItemLabel,\n hasAnyIcon,\n hasCheckboxAndIcon,\n renderIcon,\n type RenderItemContentOptions,\n type RenderOptions,\n} from '@/internal/menu/renderUtils';\nimport type { MenuDividerType, MenuInfo, MenuItemType } from '@/internal/menu/type';\nimport { SubmenuArrowIcon } from '@/internal/SubmenuArrowIcon';\nimport Switch from '@/Switch';\nimport { preventDefaultAndStopPropagation } from '@/utils/dom';\n\nimport { useLayerZIndex } from '../internal/zIndex';\nimport {\n type ContextMenuCheckboxItem,\n type ContextMenuItem,\n type ContextMenuSwitchItem,\n} from './type';\n\ntype ContextMenuPositionerProps = ComponentProps<typeof ContextMenu.Positioner>;\n\n/**\n * Submenu positioners are portaled outside the root menu, so they must allocate\n * their own layer z-index (same pattern as DropdownMenu) rather than relying on\n * the fixed CSS fallback that can fall behind after repeated root openings (#608).\n */\nconst ContextMenuSubmenuPositioner = memo(\n ({ collisionPadding, style, ...rest }: ContextMenuPositionerProps) => {\n const explicitZIndex =\n typeof style !== 'function' && style?.zIndex != null && typeof style.zIndex === 'number'\n ? style.zIndex\n : undefined;\n const { zIndex, ref: zRef } = useLayerZIndex<HTMLDivElement>('floating', explicitZIndex);\n\n const resolvedStyle =\n typeof style === 'function'\n ? (state: any) => ({ zIndex, ...style(state) })\n : { zIndex, ...style };\n\n return (\n <ContextMenu.Positioner\n {...rest}\n collisionPadding={collisionPadding ?? getFloatingCollisionPadding()}\n ref={zRef as any}\n style={resolvedStyle}\n />\n );\n },\n);\n\nContextMenuSubmenuPositioner.displayName = 'ContextMenuSubmenuPositioner';\n\nexport type { IconAlign, IconSpaceMode } from '@/internal/menu/renderUtils';\n\nconst EmptyMenuItem = memo(() => {\n const { t } = useTranslation(common);\n return (\n <ContextMenu.Item\n disabled\n className={stylex.props(menuStyles.item, menuStyles.empty).className}\n >\n <div className={styles.itemContent}>\n <span className={styles.label}>{t('common.empty')}</span>\n </div>\n </ContextMenu.Item>\n );\n});\n\nEmptyMenuItem.displayName = 'EmptyMenuItem';\n\ninterface ContextMenuSwitchItemInternalProps {\n checked?: boolean;\n children: ReactNode;\n closeOnClick?: boolean;\n danger?: boolean;\n defaultChecked?: boolean;\n disabled?: boolean;\n label?: string;\n onCheckedChange?: (checked: boolean) => void;\n}\n\nconst ContextMenuSwitchItemInternal = ({\n checked: checkedProp,\n children,\n closeOnClick = false,\n danger,\n defaultChecked,\n disabled,\n label,\n onCheckedChange,\n}: ContextMenuSwitchItemInternalProps) => {\n const [internalChecked, setInternalChecked] = useState(defaultChecked ?? false);\n const isControlled = checkedProp !== undefined;\n const checked = isControlled ? checkedProp : internalChecked;\n\n const handleCheckedChange = useCallback(\n (newChecked: boolean) => {\n if (!isControlled) {\n setInternalChecked(newChecked);\n }\n onCheckedChange?.(newChecked);\n },\n [isControlled, onCheckedChange],\n );\n\n return (\n <ContextMenu.Item\n className={stylex.props(menuStyles.item, danger && menuStyles.danger).className}\n closeOnClick={closeOnClick}\n disabled={disabled}\n label={label}\n onClick={(e) => {\n e.preventDefault();\n if (!disabled) {\n handleCheckedChange(!checked);\n }\n }}\n >\n {children}\n <span\n style={{ display: 'inline-flex', marginInlineStart: 16 }}\n onFocus={(e) => e.stopPropagation()}\n >\n <Switch\n checked={checked}\n disabled={disabled}\n size=\"small\"\n tabIndex={-1}\n onChange={handleCheckedChange}\n onClick={(_, e) => e.stopPropagation()}\n />\n </span>\n </ContextMenu.Item>\n );\n};\n\nconst renderItemContent = (\n item: MenuItemType | BaseSubMenuType | ContextMenuCheckboxItem | ContextMenuSwitchItem,\n options?: RenderItemContentOptions,\n iconNode?: ReactNode,\n) => {\n const label = getItemLabel(item);\n const desc = 'desc' in item ? item.desc : undefined;\n const extra = 'extra' in item ? item.extra : undefined;\n const indicatorOnRight = options?.indicatorOnRight;\n const alignStart = Boolean(desc) && options?.iconAlign === 'start';\n const hasCustomIcon = iconNode !== undefined && !indicatorOnRight;\n const hasIcon = hasCustomIcon ? Boolean(iconNode) : Boolean(item.icon);\n const shouldRenderIcon = hasCustomIcon\n ? Boolean(options?.reserveIconSpace || iconNode)\n : Boolean(hasIcon || options?.reserveIconSpace);\n\n const labelNode = desc ? (\n <div className={styles.labelGroup}>\n <span className={styles.label}>{label}</span>\n <span className={styles.desc}>{desc}</span>\n </div>\n ) : (\n <span className={styles.label}>{label}</span>\n );\n\n return (\n <div\n className={\n stylex.props(menuStyles.itemContent, alignStart && menuStyles.itemContentAlignStart)\n .className\n }\n >\n {shouldRenderIcon ? (\n <span\n aria-hidden={!hasIcon}\n className={clsx(\n stylex.props(menuStyles.icon, alignStart && menuStyles.iconAlignStart).className,\n menuClassNames.icon,\n )}\n >\n {hasCustomIcon ? iconNode : hasIcon ? renderIcon(item.icon, 'small') : null}\n </span>\n ) : null}\n {labelNode}\n {extra ? <span className={styles.extra}>{extra}</span> : null}\n {indicatorOnRight && iconNode ? iconNode : null}\n {options?.submenu ? (\n <span className={styles.submenuArrow}>\n <SubmenuArrowIcon />\n </span>\n ) : null}\n </div>\n );\n};\n\nconst invokeItemClick = (\n item: MenuItemType,\n keyPath: string[],\n event: ReactMouseEvent<HTMLElement> | ReactKeyboardEvent<HTMLElement>,\n) => {\n if (!item.onClick) return;\n const key = item.key ?? keyPath.at(-1) ?? '';\n const info: MenuInfo = {\n domEvent: event,\n item: event.currentTarget as MenuInfo['item'],\n key: String(key),\n keyPath,\n };\n item.onClick(info);\n};\n\nexport const renderContextMenuItems = (\n items: ContextMenuItem[],\n keyPath: string[] = [],\n options?: RenderOptions,\n): ReactNode[] => {\n const iconAlign = options?.iconAlign;\n const iconSpaceMode = options?.iconSpaceMode ?? 'global';\n const reserveIconSpace =\n options?.reserveIconSpace ?? hasAnyIcon(items, iconSpaceMode === 'global');\n const indicatorOnRight = options?.indicatorOnRight ?? hasCheckboxAndIcon(items);\n\n return items.map((item, index) => {\n if (!item) return null;\n\n const fallbackKey = `${keyPath.join('-') || 'root'}-${index}`;\n const itemKey = getItemKey(item, fallbackKey);\n const nextKeyPath = [...keyPath, String(itemKey)];\n\n if ((item as ContextMenuCheckboxItem).type === 'checkbox') {\n const checkboxItem = item as ContextMenuCheckboxItem;\n const label = getItemLabel(checkboxItem);\n const labelText = typeof label === 'string' ? label : undefined;\n const isDanger = Boolean(checkboxItem.danger);\n const indicator = (\n <ContextMenu.CheckboxItemIndicator>\n <Icon icon={Check} size={'small'} />\n </ContextMenu.CheckboxItemIndicator>\n );\n\n return (\n <ContextMenu.CheckboxItem\n checked={checkboxItem.checked}\n className={stylex.props(menuStyles.item, isDanger && menuStyles.danger).className}\n closeOnClick={checkboxItem.closeOnClick}\n defaultChecked={checkboxItem.defaultChecked}\n disabled={checkboxItem.disabled}\n key={itemKey}\n label={labelText}\n onCheckedChange={(checked) => checkboxItem.onCheckedChange?.(checked)}\n >\n {renderItemContent(\n checkboxItem,\n { iconAlign, indicatorOnRight, reserveIconSpace },\n indicator,\n )}\n </ContextMenu.CheckboxItem>\n );\n }\n\n if ((item as ContextMenuSwitchItem).type === 'switch') {\n const switchItem = item as ContextMenuSwitchItem;\n const label = getItemLabel(switchItem);\n const labelText = typeof label === 'string' ? label : undefined;\n const isDanger = Boolean(switchItem.danger);\n\n return (\n <ContextMenuSwitchItemInternal\n checked={switchItem.checked}\n closeOnClick={switchItem.closeOnClick}\n danger={isDanger}\n defaultChecked={switchItem.defaultChecked}\n disabled={switchItem.disabled}\n key={itemKey}\n label={labelText}\n onCheckedChange={switchItem.onCheckedChange}\n >\n {renderItemContent(switchItem, { iconAlign, reserveIconSpace })}\n </ContextMenuSwitchItemInternal>\n );\n }\n\n if ((item as MenuDividerType).type === 'divider') {\n return <ContextMenu.Separator className={styles.separator} key={itemKey} />;\n }\n\n if ((item as BaseMenuItemGroupType).type === 'group') {\n const group = item as BaseMenuItemGroupType;\n const groupReserveIconSpace =\n iconSpaceMode === 'group'\n ? group.children\n ? hasAnyIcon(group.children)\n : false\n : reserveIconSpace;\n const groupIndicatorOnRight = group.children ? hasCheckboxAndIcon(group.children) : false;\n return (\n <ContextMenu.Group key={itemKey}>\n {group.label ? (\n <ContextMenu.GroupLabel className={styles.groupLabel}>\n {group.label}\n </ContextMenu.GroupLabel>\n ) : null}\n {group.children\n ? renderContextMenuItems(group.children, nextKeyPath, {\n iconAlign,\n iconSpaceMode,\n indicatorOnRight: groupIndicatorOnRight,\n reserveIconSpace: groupReserveIconSpace,\n })\n : null}\n </ContextMenu.Group>\n );\n }\n\n if (\n (item as BaseSubMenuType).type === 'submenu' ||\n ('children' in item && (item as BaseSubMenuType).children)\n ) {\n const submenu = item as BaseSubMenuType;\n const label = getItemLabel(submenu);\n const labelText = typeof label === 'string' ? label : undefined;\n const isDanger = 'danger' in submenu && Boolean(submenu.danger);\n const submenuHasSlots = submenu.header != null || submenu.footer != null;\n const submenuBody =\n submenu.children && submenu.children.length > 0 ? (\n renderContextMenuItems(submenu.children, nextKeyPath, {\n iconAlign,\n iconSpaceMode,\n })\n ) : (\n <EmptyMenuItem />\n );\n\n return (\n <ContextMenu.SubmenuRoot\n defaultOpen={submenu.defaultOpen}\n key={itemKey}\n open={submenu.open}\n onOpenChange={submenu.onOpenChange}\n >\n <ContextMenu.SubmenuTrigger\n {...submenu.triggerProps}\n className={stylex.props(menuStyles.item, isDanger && menuStyles.danger).className}\n closeDelay={submenu.closeDelay}\n delay={submenu.delay}\n disabled={submenu.disabled}\n label={labelText}\n openOnHover={submenu.openOnHover}\n onClick={submenu.onClick}\n >\n {renderItemContent(submenu, {\n iconAlign,\n reserveIconSpace,\n submenu: true,\n })}\n </ContextMenu.SubmenuTrigger>\n <ContextMenu.Portal>\n <ContextMenuSubmenuPositioner\n alignOffset={-4}\n className={styles.positioner}\n data-submenu=\"\"\n sideOffset={-1}\n onContextMenu={preventDefaultAndStopPropagation}\n >\n <ContextMenu.Popup\n className={clsx(\n stylex.props(menuStyles.popup, submenuHasSlots && menuStyles.popupWithSlots)\n .className,\n menuClassNames.popup,\n )}\n >\n {submenu.header == null ? null : (\n <div className={styles.header}>{submenu.header}</div>\n )}\n {submenuHasSlots ? (\n <div className={styles.slotViewport}>{submenuBody}</div>\n ) : (\n submenuBody\n )}\n {submenu.footer == null ? null : (\n <div className={styles.footer}>{submenu.footer}</div>\n )}\n </ContextMenu.Popup>\n </ContextMenuSubmenuPositioner>\n </ContextMenu.Portal>\n </ContextMenu.SubmenuRoot>\n );\n }\n\n const menuItem = item as MenuItemType;\n const label = getItemLabel(menuItem);\n const labelText = typeof label === 'string' ? label : undefined;\n const isDanger = 'danger' in menuItem && Boolean(menuItem.danger);\n\n return (\n <ContextMenu.Item\n className={stylex.props(menuStyles.item, isDanger && menuStyles.danger).className}\n closeOnClick={menuItem.closeOnClick}\n disabled={menuItem.disabled}\n key={itemKey}\n label={labelText}\n onClick={(event) => invokeItemClick(menuItem, nextKeyPath, event)}\n >\n {renderItemContent(menuItem, { iconAlign, reserveIconSpace })}\n </ContextMenu.Item>\n );\n });\n};\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AA0BA,MAAM,+BAA+B,MAAM,EACzC,kBACA,OACA,GAAG,WAC6B;CAChC,MAAM,iBAAiB,OAAO,UAAU,cAAc,OAAO,UAAU,QAAQ,OAAO,MAAM,WAAW,WAAW,MAAM,SAAS,KAAA;CACjI,MAAM,EACJ,QACA,KAAK,SACH,eAA+B,YAAY,cAAc;CAC7D,MAAM,gBAAgB,OAAO,UAAU,cAAc,WAAgB;EACnE;EACA,GAAG,MAAM,KAAK;CAChB,KAAK;EACH;EACA,GAAG;CACL;CACA,OAAO,oBAAC,YAAY,YAAb;EAAwB,GAAI;EAAM,kBAAkB,oBAAoB,4BAA4B;EAAG,KAAK;EAAa,OAAO;CAAgB,CAAA;AACzJ,CAAC;AACD,6BAA6B,cAAc;AAE3C,MAAM,gBAAgB,WAAW;CAC/B,MAAM,EACJ,MACE,eAAeA,cAAM;CACzB,OAAO,oBAAC,YAAY,MAAb;EAAkB,UAAA;EAAS,WAAW,OAAO,MAAM,WAAW,MAAM,WAAW,KAAK,CAAC,CAAC;EACzF,UAAA,oBAAC,OAAD;GAAK,WAAW,OAAO;GACrB,UAAA,oBAAC,QAAD;IAAM,WAAW,OAAO;IAAQ,UAAA,EAAE,cAAc;GAAQ,CAAA;EACrD,CAAA;CACW,CAAA;AACtB,CAAC;AACD,cAAc,cAAc;AAW5B,MAAM,iCAAiC,EACrC,SAAS,aACT,UACA,eAAe,OACf,QACA,gBACA,UACA,OACA,sBACwC;CACxC,MAAM,CAAC,iBAAiB,sBAAsB,SAAS,kBAAkB,KAAK;CAC9E,MAAM,eAAe,gBAAgB,KAAA;CACrC,MAAM,UAAU,eAAe,cAAc;CAC7C,MAAM,sBAAsB,aAAa,eAAwB;EAC/D,IAAI,CAAC,cACH,mBAAmB,UAAU;EAE/B,kBAAkB,UAAU;CAC9B,GAAG,CAAC,cAAc,eAAe,CAAC;CAClC,OAAO,qBAAC,YAAY,MAAb;EAAkB,WAAW,OAAO,MAAM,WAAW,MAAM,UAAU,WAAW,MAAM,CAAC,CAAC;EAAyB;EAAwB;EAAiB;EAAO,UAAS,MAAK;GACpL,EAAE,eAAe;GACjB,IAAI,CAAC,UACH,oBAAoB,CAAC,OAAO;EAEhC;EALO,UAAA,CAMF,UACD,oBAAC,QAAD;GAAM,OAAO;IACb,SAAS;IACT,mBAAmB;GACrB;GAAG,UAAS,MAAK,EAAE,gBAAgB;GAC/B,UAAA,oBAAC,QAAD;IAAiB;IAAmB;IAAU,MAAK;IAAQ,UAAU;IAAI,UAAU;IAAqB,UAAU,GAAG,MAAM,EAAE,gBAAgB;GAAI,CAAA;EAC7I,CAAA,CACU;;AACtB;AACA,MAAM,qBAAqB,MAAwF,SAAoC,aAAyB;CAC9K,MAAM,QAAQ,aAAa,IAAI;CAC/B,MAAM,OAAO,UAAU,OAAO,KAAK,OAAO,KAAA;CAC1C,MAAM,QAAQ,WAAW,OAAO,KAAK,QAAQ,KAAA;CAC7C,MAAM,mBAAmB,SAAS;CAClC,MAAM,aAAa,QAAQ,IAAI,KAAK,SAAS,cAAc;CAC3D,MAAM,gBAAgB,aAAa,KAAA,KAAa,CAAC;CACjD,MAAM,UAAU,gBAAgB,QAAQ,QAAQ,IAAI,QAAQ,KAAK,IAAI;CACrE,MAAM,mBAAmB,gBAAgB,QAAQ,SAAS,oBAAoB,QAAQ,IAAI,QAAQ,WAAW,SAAS,gBAAgB;CACtI,MAAM,YAAY,OAAO,qBAAC,OAAD;EAAK,WAAW,OAAO;EAAvB,UAAA,CACrB,oBAAC,QAAD;GAAM,WAAW,OAAO;GAAQ,UAAA;EAAY,CAAA,GAC5C,oBAAC,QAAD;GAAM,WAAW,OAAO;GAAO,UAAA;EAAW,CAAA,CACvC;CAAI,CAAA,IAAA,oBAAC,QAAD;EAAM,WAAW,OAAO;EAAQ,UAAA;CAAY,CAAA;CACvD,OAAO,qBAAC,OAAD;EAAK,WAAW,OAAO,MAAM,WAAW,aAAa,cAAc,WAAW,qBAAqB,CAAC,CAAC;EAArG,UAAA;GACF,mBAAmB,oBAAC,QAAD;IAAM,eAAa,CAAC;IAAS,WAAWC,OAAK,OAAO,MAAM,WAAW,MAAM,cAAc,WAAW,cAAc,CAAC,CAAC,WAAW,eAAe,IAAI;IACjK,UAAA,gBAAgB,WAAW,UAAU,WAAW,KAAK,MAAM,OAAO,IAAI;GACnE,CAAA,IAAI;GACX;GACA,QAAQ,oBAAC,QAAD;IAAM,WAAW,OAAO;IAAQ,UAAA;GAAY,CAAA,IAAI;GACxD,oBAAoB,WAAW,WAAW;GAC1C,SAAS,UAAU,oBAAC,QAAD;IAAM,WAAW,OAAO;IACxC,UAAA,oBAAC,kBAAD,CAAmB,CAAA;GACf,CAAA,IAAI;EACT;;AACT;AACA,MAAM,mBAAmB,MAAoB,SAAmB,UAA0E;CACxI,IAAI,CAAC,KAAK,SAAS;CACnB,MAAM,MAAM,KAAK,OAAO,QAAQ,GAAG,EAAE,KAAK;CAC1C,MAAM,OAAiB;EACrB,UAAU;EACV,MAAM,MAAM;EACZ,KAAK,OAAO,GAAG;EACf;CACF;CACA,KAAK,QAAQ,IAAI;AACnB;AACA,MAAa,0BAA0B,OAA0B,UAAoB,CAAC,GAAG,YAAyC;CAChI,MAAM,YAAY,SAAS;CAC3B,MAAM,gBAAgB,SAAS,iBAAiB;CAChD,MAAM,mBAAmB,SAAS,oBAAoB,WAAW,OAAO,kBAAkB,QAAQ;CAClG,MAAM,mBAAmB,SAAS,oBAAoB,mBAAmB,KAAK;CAC9E,OAAO,MAAM,KAAK,MAAM,UAAU;EAChC,IAAI,CAAC,MAAM,OAAO;EAClB,MAAM,cAAc,GAAG,QAAQ,KAAK,GAAG,KAAK,OAAO,GAAG;EACtD,MAAM,UAAU,WAAW,MAAM,WAAW;EAC5C,MAAM,cAAc,CAAC,GAAG,SAAS,OAAO,OAAO,CAAC;EAChD,IAAK,KAAiC,SAAS,YAAY;GACzD,MAAM,eAAe;GACrB,MAAM,QAAQ,aAAa,YAAY;GACvC,MAAM,YAAY,OAAO,UAAU,WAAW,QAAQ,KAAA;GACtD,MAAM,WAAW,QAAQ,aAAa,MAAM;GAC5C,MAAM,YAAY,oBAAC,YAAY,uBAAb,EAAA,UACd,oBAAC,MAAD;IAAM,MAAM;IAAO,MAAM;GAAU,CAAA,EACF,CAAA;GACrC,OAAO,oBAAC,YAAY,cAAb;IAA0B,SAAS,aAAa;IAAS,WAAW,OAAO,MAAM,WAAW,MAAM,YAAY,WAAW,MAAM,CAAC,CAAC;IAAW,cAAc,aAAa;IAAc,gBAAgB,aAAa;IAAgB,UAAU,aAAa;IAAwB,OAAO;IAAW,kBAAiB,YAAW,aAAa,kBAAkB,OAAO;IACvW,UAAA,kBAAkB,cAAc;KACjC;KACA;KACA;IACF,GAAG,SAAS;GACc,GANmP,OAMnP;EAC9B;EACA,IAAK,KAA+B,SAAS,UAAU;GACrD,MAAM,aAAa;GACnB,MAAM,QAAQ,aAAa,UAAU;GACrC,MAAM,YAAY,OAAO,UAAU,WAAW,QAAQ,KAAA;GACtD,MAAM,WAAW,QAAQ,WAAW,MAAM;GAC1C,OAAO,oBAAC,+BAAD;IAA+B,SAAS,WAAW;IAAS,cAAc,WAAW;IAAc,QAAQ;IAAU,gBAAgB,WAAW;IAAgB,UAAU,WAAW;IAAwB,OAAO;IAAW,iBAAiB,WAAW;IAC7P,UAAA,kBAAkB,YAAY;KAC/B;KACA;IACF,CAAC;GAC8B,GAL0K,OAK1K;EACnC;EACA,IAAK,KAAyB,SAAS,WACrC,OAAO,oBAAC,YAAY,WAAb,EAAuB,WAAW,OAAO,UAA0B,GAAV,OAAU;EAE5E,IAAK,KAA+B,SAAS,SAAS;GACpD,MAAM,QAAQ;GACd,MAAM,wBAAwB,kBAAkB,UAAU,MAAM,WAAW,WAAW,MAAM,QAAQ,IAAI,QAAQ;GAChH,MAAM,wBAAwB,MAAM,WAAW,mBAAmB,MAAM,QAAQ,IAAI;GACpF,OAAO,qBAAC,YAAY,OAAb,EAAA,UAAA,CACF,MAAM,QAAQ,oBAAC,YAAY,YAAb;IAAwB,WAAW,OAAO;IACpD,UAAA,MAAM;GACe,CAAA,IAAI,MAC7B,MAAM,WAAW,uBAAuB,MAAM,UAAU,aAAa;IACtE;IACA;IACA,kBAAkB;IAClB,kBAAkB;GACpB,CAAC,IAAI,IACc,EAAA,GAVU,OAUV;EACvB;EACA,IAAK,KAAyB,SAAS,aAAa,cAAc,QAAS,KAAyB,UAAU;GAC5G,MAAM,UAAU;GAChB,MAAM,QAAQ,aAAa,OAAO;GAClC,MAAM,YAAY,OAAO,UAAU,WAAW,QAAQ,KAAA;GACtD,MAAM,WAAW,YAAY,WAAW,QAAQ,QAAQ,MAAM;GAC9D,MAAM,kBAAkB,QAAQ,UAAU,QAAQ,QAAQ,UAAU;GACpE,MAAM,cAAc,QAAQ,YAAY,QAAQ,SAAS,SAAS,IAAI,uBAAuB,QAAQ,UAAU,aAAa;IAC1H;IACA;GACF,CAAC,IAAI,oBAAC,eAAD,CAAgB,CAAA;GACrB,OAAO,qBAAC,YAAY,aAAb;IAAyB,aAAa,QAAQ;IAA2B,MAAM,QAAQ;IAAM,cAAc,QAAQ;IAAnH,UAAA,CACH,oBAAC,YAAY,gBAAb;KAA4B,GAAI,QAAQ;KAAc,WAAW,OAAO,MAAM,WAAW,MAAM,YAAY,WAAW,MAAM,CAAC,CAAC;KAAW,YAAY,QAAQ;KAAY,OAAO,QAAQ;KAAO,UAAU,QAAQ;KAAU,OAAO;KAAW,aAAa,QAAQ;KAAa,SAAS,QAAQ;KAC7R,UAAA,kBAAkB,SAAS;MAC5B;MACA;MACA,SAAS;KACX,CAAC;IAC2B,CAAA,GAC5B,oBAAC,YAAY,QAAb,EAAA,UACE,oBAAC,8BAAD;KAA8B,aAAa;KAAI,WAAW,OAAO;KAAY,gBAAa;KAAG,YAAY;KAAI,eAAe;KAC1H,UAAA,qBAAC,YAAY,OAAb;MAAmB,WAAWA,OAAK,OAAO,MAAM,WAAW,OAAO,mBAAmB,WAAW,cAAc,CAAC,CAAC,WAAW,eAAe,KAAK;MAA/I,UAAA;OACG,QAAQ,UAAU,OAAO,OAAO,oBAAC,OAAD;QAAK,WAAW,OAAO;QAAS,UAAA,QAAQ;OAAY,CAAA;OACpF,kBAAkB,oBAAC,OAAD;QAAK,WAAW,OAAO;QAAe,UAAA;OAAiB,CAAA,IAAI;OAC7E,QAAQ,UAAU,OAAO,OAAO,oBAAC,OAAD;QAAK,WAAW,OAAO;QAAS,UAAA,QAAQ;OAAY,CAAA;MACpE;;IACS,CAAA,EACZ,CAAA,CACG;GAjB4C,GAAA,OAiB5C;EAC7B;EACA,MAAM,WAAW;EACjB,MAAM,QAAQ,aAAa,QAAQ;EACnC,MAAM,YAAY,OAAO,UAAU,WAAW,QAAQ,KAAA;EACtD,MAAM,WAAW,YAAY,YAAY,QAAQ,SAAS,MAAM;EAChE,OAAO,oBAAC,YAAY,MAAb;GAAkB,WAAW,OAAO,MAAM,WAAW,MAAM,YAAY,WAAW,MAAM,CAAC,CAAC;GAAW,cAAc,SAAS;GAAc,UAAU,SAAS;GAAwB,OAAO;GAAW,UAAS,UAAS,gBAAgB,UAAU,aAAa,KAAK;GACvQ,UAAA,kBAAkB,UAAU;IAC7B;IACA;GACF,CAAC;EACiB,GAL+J,OAK/J;CACtB,CAAC;AACH"}
@@ -5,7 +5,6 @@ import "../internal/menu/index.mjs";
5
5
  import { ContextMenuItem } from "./type.mjs";
6
6
  import "./renderItems.mjs";
7
7
  import { ReactNode } from "react";
8
- import "@floating-ui/react";
9
8
  //#region src/ContextMenu/store.d.ts
10
9
  export interface ShowContextMenuOptions extends Pick<VirtualListProps, 'virtual' | 'listItemHeight'> {
11
10
  footer?: ReactNode;
@@ -1 +1 @@
1
- {"version":3,"file":"store.mjs","names":[],"sources":["../../src/ContextMenu/store.ts"],"sourcesContent":["import type { VirtualElement } from '@floating-ui/react';\nimport type { ReactNode } from 'react';\n\nimport type { IconAlign } from '@/internal/menu';\nimport type { VirtualListProps } from '@/internal/virtual';\n\nimport type { IconSpaceMode } from './renderItems';\nimport type { ContextMenuItem } from './type';\n\nexport type ContextMenuState = Pick<VirtualListProps, 'virtual' | 'listItemHeight'> & {\n anchor: VirtualElement | null;\n footer?: ReactNode;\n header?: ReactNode;\n iconAlign?: IconAlign;\n iconSpaceMode: IconSpaceMode;\n items: ContextMenuItem[];\n open: boolean;\n triggerId: string | null;\n};\n\nconst emptyState: ContextMenuState = {\n anchor: null,\n iconSpaceMode: 'global',\n items: [],\n open: false,\n triggerId: null,\n};\n\nlet contextMenuState: ContextMenuState = emptyState;\nconst listeners = new Set<() => void>();\nconst lastPointer = { ready: false, triggerId: null as string | null, x: 0, y: 0 };\n\nconst notify = () => {\n listeners.forEach((listener) => listener());\n};\n\nexport const subscribe = (listener: () => void) => {\n listeners.add(listener);\n return () => listeners.delete(listener);\n};\n\nexport const getSnapshot = () => contextMenuState;\nexport const getServerSnapshot = () => emptyState;\n\nexport const updateLastPointer = (event: MouseEvent | PointerEvent) => {\n lastPointer.x = event.clientX;\n lastPointer.y = event.clientY;\n lastPointer.ready = true;\n if (event.target instanceof Element) {\n const trigger = event.target.closest<HTMLElement>('[data-contextmenu-trigger]');\n lastPointer.triggerId = trigger?.dataset.contextmenuTrigger ?? null;\n } else {\n lastPointer.triggerId = null;\n }\n};\n\nconst createVirtualElement = (point: { x: number; y: number }): VirtualElement => ({\n contextElement: typeof document === 'undefined' ? undefined : document.body,\n getBoundingClientRect: () =>\n ({\n bottom: point.y,\n height: 0,\n left: point.x,\n right: point.x,\n toJSON: () => undefined,\n top: point.y,\n width: 0,\n x: point.x,\n y: point.y,\n }) as DOMRect,\n});\n\nexport const setContextMenuState = (next: Partial<ContextMenuState>) => {\n contextMenuState = { ...contextMenuState, ...next };\n notify();\n};\n\nexport interface ShowContextMenuOptions extends Pick<\n VirtualListProps,\n 'virtual' | 'listItemHeight'\n> {\n footer?: ReactNode;\n header?: ReactNode;\n iconAlign?: IconAlign;\n iconSpaceMode?: IconSpaceMode;\n}\n\nexport interface ContextMenuInterceptor {\n close?: (fallback: () => void) => void;\n show?: (\n items: ContextMenuItem[],\n options: ShowContextMenuOptions | undefined,\n fallback: () => void,\n ) => void;\n}\n\nlet interceptor: ContextMenuInterceptor | null = null;\n\n/**\n * Register a global interceptor for every context menu — imperative\n * `showContextMenu`/`closeContextMenu` calls and `ContextMenuTrigger` alike.\n * The interceptor may render the menu through another system (e.g. a native\n * OS menu) or invoke `fallback()` to show the default web menu. Pass `null`\n * to restore the default behavior.\n */\nexport const setContextMenuInterceptor = (next: ContextMenuInterceptor | null) => {\n interceptor = next;\n};\n\nconst showWebContextMenu = (items: ContextMenuItem[], options?: ShowContextMenuOptions) => {\n const fallbackPoint = { x: window.innerWidth / 2, y: window.innerHeight / 2 };\n const point = lastPointer.ready ? { x: lastPointer.x, y: lastPointer.y } : fallbackPoint;\n\n setContextMenuState({\n anchor: createVirtualElement(point),\n footer: options?.footer,\n header: options?.header,\n iconAlign: options?.iconAlign,\n iconSpaceMode: options?.iconSpaceMode ?? 'global',\n items,\n listItemHeight: options?.listItemHeight,\n open: true,\n triggerId: lastPointer.triggerId ?? null,\n virtual: options?.virtual,\n });\n};\n\nexport const showContextMenu = (items: ContextMenuItem[], options?: ShowContextMenuOptions) => {\n if (typeof window === 'undefined') return;\n\n if (interceptor?.show) {\n interceptor.show(items, options, () => showWebContextMenu(items, options));\n return;\n }\n\n showWebContextMenu(items, options);\n};\n\n/**\n * Update menu items while keeping current anchor/position.\n * Useful for interactive menu items (e.g. checkbox) to avoid re-positioning.\n */\nexport const updateContextMenuItems = (items: ContextMenuItem[]) => {\n if (typeof window === 'undefined') return;\n setContextMenuState({ items });\n};\n\nconst closeWebContextMenu = () => {\n setContextMenuState({\n anchor: null,\n footer: undefined,\n header: undefined,\n iconSpaceMode: 'global',\n items: [],\n listItemHeight: undefined,\n open: false,\n triggerId: null,\n virtual: undefined,\n });\n};\n\nexport const closeContextMenu = () => {\n if (interceptor?.close) {\n interceptor.close(closeWebContextMenu);\n return;\n }\n\n closeWebContextMenu();\n};\n"],"mappings":";AAoBA,MAAM,aAA+B;CACnC,QAAQ;CACR,eAAe;CACf,OAAO,CAAC;CACR,MAAM;CACN,WAAW;AACb;AAEA,IAAI,mBAAqC;AACzC,MAAM,4BAAY,IAAI,IAAgB;AACtC,MAAM,cAAc;CAAE,OAAO;CAAO,WAAW;CAAuB,GAAG;CAAG,GAAG;AAAE;AAEjF,MAAM,eAAe;CACnB,UAAU,SAAS,aAAa,SAAS,CAAC;AAC5C;AAEA,MAAa,aAAa,aAAyB;CACjD,UAAU,IAAI,QAAQ;CACtB,aAAa,UAAU,OAAO,QAAQ;AACxC;AAEA,MAAa,oBAAoB;AACjC,MAAa,0BAA0B;AAEvC,MAAa,qBAAqB,UAAqC;CACrE,YAAY,IAAI,MAAM;CACtB,YAAY,IAAI,MAAM;CACtB,YAAY,QAAQ;CACpB,IAAI,MAAM,kBAAkB,SAAS;EACnC,MAAM,UAAU,MAAM,OAAO,QAAqB,4BAA4B;EAC9E,YAAY,YAAY,SAAS,QAAQ,sBAAsB;CACjE,OACE,YAAY,YAAY;AAE5B;AAEA,MAAM,wBAAwB,WAAqD;CACjF,gBAAgB,OAAO,aAAa,cAAc,KAAA,IAAY,SAAS;CACvE,8BACG;EACC,QAAQ,MAAM;EACd,QAAQ;EACR,MAAM,MAAM;EACZ,OAAO,MAAM;EACb,cAAc,KAAA;EACd,KAAK,MAAM;EACX,OAAO;EACP,GAAG,MAAM;EACT,GAAG,MAAM;CACX;AACJ;AAEA,MAAa,uBAAuB,SAAoC;CACtE,mBAAmB;EAAE,GAAG;EAAkB,GAAG;CAAK;CAClD,OAAO;AACT;AAqBA,IAAI,cAA6C;;;;;;;;AASjD,MAAa,6BAA6B,SAAwC;CAChF,cAAc;AAChB;AAEA,MAAM,sBAAsB,OAA0B,YAAqC;CACzF,MAAM,gBAAgB;EAAE,GAAG,OAAO,aAAa;EAAG,GAAG,OAAO,cAAc;CAAE;CAC5E,MAAM,QAAQ,YAAY,QAAQ;EAAE,GAAG,YAAY;EAAG,GAAG,YAAY;CAAE,IAAI;CAE3E,oBAAoB;EAClB,QAAQ,qBAAqB,KAAK;EAClC,QAAQ,SAAS;EACjB,QAAQ,SAAS;EACjB,WAAW,SAAS;EACpB,eAAe,SAAS,iBAAiB;EACzC;EACA,gBAAgB,SAAS;EACzB,MAAM;EACN,WAAW,YAAY,aAAa;EACpC,SAAS,SAAS;CACpB,CAAC;AACH;AAEA,MAAa,mBAAmB,OAA0B,YAAqC;CAC7F,IAAI,OAAO,WAAW,aAAa;CAEnC,IAAI,aAAa,MAAM;EACrB,YAAY,KAAK,OAAO,eAAe,mBAAmB,OAAO,OAAO,CAAC;EACzE;CACF;CAEA,mBAAmB,OAAO,OAAO;AACnC;;;;;AAMA,MAAa,0BAA0B,UAA6B;CAClE,IAAI,OAAO,WAAW,aAAa;CACnC,oBAAoB,EAAE,MAAM,CAAC;AAC/B;AAEA,MAAM,4BAA4B;CAChC,oBAAoB;EAClB,QAAQ;EACR,QAAQ,KAAA;EACR,QAAQ,KAAA;EACR,eAAe;EACf,OAAO,CAAC;EACR,gBAAgB,KAAA;EAChB,MAAM;EACN,WAAW;EACX,SAAS,KAAA;CACX,CAAC;AACH;AAEA,MAAa,yBAAyB;CACpC,IAAI,aAAa,OAAO;EACtB,YAAY,MAAM,mBAAmB;EACrC;CACF;CAEA,oBAAoB;AACtB"}
1
+ {"version":3,"file":"store.mjs","names":[],"sources":["../../src/ContextMenu/store.ts"],"sourcesContent":["import type { ReactNode } from 'react';\n\nimport type { IconAlign } from '@/internal/menu';\nimport type { VirtualListProps } from '@/internal/virtual';\n\nimport type { IconSpaceMode } from './renderItems';\nimport type { ContextMenuItem } from './type';\n\ninterface VirtualElement {\n contextElement?: Element;\n getBoundingClientRect: () => DOMRect;\n}\n\nexport type ContextMenuState = Pick<VirtualListProps, 'virtual' | 'listItemHeight'> & {\n anchor: VirtualElement | null;\n footer?: ReactNode;\n header?: ReactNode;\n iconAlign?: IconAlign;\n iconSpaceMode: IconSpaceMode;\n items: ContextMenuItem[];\n open: boolean;\n triggerId: string | null;\n};\n\nconst emptyState: ContextMenuState = {\n anchor: null,\n iconSpaceMode: 'global',\n items: [],\n open: false,\n triggerId: null,\n};\n\nlet contextMenuState: ContextMenuState = emptyState;\nconst listeners = new Set<() => void>();\nconst lastPointer = { ready: false, triggerId: null as string | null, x: 0, y: 0 };\n\nconst notify = () => {\n listeners.forEach((listener) => listener());\n};\n\nexport const subscribe = (listener: () => void) => {\n listeners.add(listener);\n return () => listeners.delete(listener);\n};\n\nexport const getSnapshot = () => contextMenuState;\nexport const getServerSnapshot = () => emptyState;\n\nexport const updateLastPointer = (event: MouseEvent | PointerEvent) => {\n lastPointer.x = event.clientX;\n lastPointer.y = event.clientY;\n lastPointer.ready = true;\n if (event.target instanceof Element) {\n const trigger = event.target.closest<HTMLElement>('[data-contextmenu-trigger]');\n lastPointer.triggerId = trigger?.dataset.contextmenuTrigger ?? null;\n } else {\n lastPointer.triggerId = null;\n }\n};\n\nconst createVirtualElement = (point: { x: number; y: number }): VirtualElement => ({\n contextElement: typeof document === 'undefined' ? undefined : document.body,\n getBoundingClientRect: () =>\n ({\n bottom: point.y,\n height: 0,\n left: point.x,\n right: point.x,\n toJSON: () => undefined,\n top: point.y,\n width: 0,\n x: point.x,\n y: point.y,\n }) as DOMRect,\n});\n\nexport const setContextMenuState = (next: Partial<ContextMenuState>) => {\n contextMenuState = { ...contextMenuState, ...next };\n notify();\n};\n\nexport interface ShowContextMenuOptions extends Pick<\n VirtualListProps,\n 'virtual' | 'listItemHeight'\n> {\n footer?: ReactNode;\n header?: ReactNode;\n iconAlign?: IconAlign;\n iconSpaceMode?: IconSpaceMode;\n}\n\nexport interface ContextMenuInterceptor {\n close?: (fallback: () => void) => void;\n show?: (\n items: ContextMenuItem[],\n options: ShowContextMenuOptions | undefined,\n fallback: () => void,\n ) => void;\n}\n\nlet interceptor: ContextMenuInterceptor | null = null;\n\n/**\n * Register a global interceptor for every context menu — imperative\n * `showContextMenu`/`closeContextMenu` calls and `ContextMenuTrigger` alike.\n * The interceptor may render the menu through another system (e.g. a native\n * OS menu) or invoke `fallback()` to show the default web menu. Pass `null`\n * to restore the default behavior.\n */\nexport const setContextMenuInterceptor = (next: ContextMenuInterceptor | null) => {\n interceptor = next;\n};\n\nconst showWebContextMenu = (items: ContextMenuItem[], options?: ShowContextMenuOptions) => {\n const fallbackPoint = { x: window.innerWidth / 2, y: window.innerHeight / 2 };\n const point = lastPointer.ready ? { x: lastPointer.x, y: lastPointer.y } : fallbackPoint;\n\n setContextMenuState({\n anchor: createVirtualElement(point),\n footer: options?.footer,\n header: options?.header,\n iconAlign: options?.iconAlign,\n iconSpaceMode: options?.iconSpaceMode ?? 'global',\n items,\n listItemHeight: options?.listItemHeight,\n open: true,\n triggerId: lastPointer.triggerId ?? null,\n virtual: options?.virtual,\n });\n};\n\nexport const showContextMenu = (items: ContextMenuItem[], options?: ShowContextMenuOptions) => {\n if (typeof window === 'undefined') return;\n\n if (interceptor?.show) {\n interceptor.show(items, options, () => showWebContextMenu(items, options));\n return;\n }\n\n showWebContextMenu(items, options);\n};\n\n/**\n * Update menu items while keeping current anchor/position.\n * Useful for interactive menu items (e.g. checkbox) to avoid re-positioning.\n */\nexport const updateContextMenuItems = (items: ContextMenuItem[]) => {\n if (typeof window === 'undefined') return;\n setContextMenuState({ items });\n};\n\nconst closeWebContextMenu = () => {\n setContextMenuState({\n anchor: null,\n footer: undefined,\n header: undefined,\n iconSpaceMode: 'global',\n items: [],\n listItemHeight: undefined,\n open: false,\n triggerId: null,\n virtual: undefined,\n });\n};\n\nexport const closeContextMenu = () => {\n if (interceptor?.close) {\n interceptor.close(closeWebContextMenu);\n return;\n }\n\n closeWebContextMenu();\n};\n"],"mappings":";AAwBA,MAAM,aAA+B;CACnC,QAAQ;CACR,eAAe;CACf,OAAO,CAAC;CACR,MAAM;CACN,WAAW;AACb;AAEA,IAAI,mBAAqC;AACzC,MAAM,4BAAY,IAAI,IAAgB;AACtC,MAAM,cAAc;CAAE,OAAO;CAAO,WAAW;CAAuB,GAAG;CAAG,GAAG;AAAE;AAEjF,MAAM,eAAe;CACnB,UAAU,SAAS,aAAa,SAAS,CAAC;AAC5C;AAEA,MAAa,aAAa,aAAyB;CACjD,UAAU,IAAI,QAAQ;CACtB,aAAa,UAAU,OAAO,QAAQ;AACxC;AAEA,MAAa,oBAAoB;AACjC,MAAa,0BAA0B;AAEvC,MAAa,qBAAqB,UAAqC;CACrE,YAAY,IAAI,MAAM;CACtB,YAAY,IAAI,MAAM;CACtB,YAAY,QAAQ;CACpB,IAAI,MAAM,kBAAkB,SAAS;EACnC,MAAM,UAAU,MAAM,OAAO,QAAqB,4BAA4B;EAC9E,YAAY,YAAY,SAAS,QAAQ,sBAAsB;CACjE,OACE,YAAY,YAAY;AAE5B;AAEA,MAAM,wBAAwB,WAAqD;CACjF,gBAAgB,OAAO,aAAa,cAAc,KAAA,IAAY,SAAS;CACvE,8BACG;EACC,QAAQ,MAAM;EACd,QAAQ;EACR,MAAM,MAAM;EACZ,OAAO,MAAM;EACb,cAAc,KAAA;EACd,KAAK,MAAM;EACX,OAAO;EACP,GAAG,MAAM;EACT,GAAG,MAAM;CACX;AACJ;AAEA,MAAa,uBAAuB,SAAoC;CACtE,mBAAmB;EAAE,GAAG;EAAkB,GAAG;CAAK;CAClD,OAAO;AACT;AAqBA,IAAI,cAA6C;;;;;;;;AASjD,MAAa,6BAA6B,SAAwC;CAChF,cAAc;AAChB;AAEA,MAAM,sBAAsB,OAA0B,YAAqC;CACzF,MAAM,gBAAgB;EAAE,GAAG,OAAO,aAAa;EAAG,GAAG,OAAO,cAAc;CAAE;CAC5E,MAAM,QAAQ,YAAY,QAAQ;EAAE,GAAG,YAAY;EAAG,GAAG,YAAY;CAAE,IAAI;CAE3E,oBAAoB;EAClB,QAAQ,qBAAqB,KAAK;EAClC,QAAQ,SAAS;EACjB,QAAQ,SAAS;EACjB,WAAW,SAAS;EACpB,eAAe,SAAS,iBAAiB;EACzC;EACA,gBAAgB,SAAS;EACzB,MAAM;EACN,WAAW,YAAY,aAAa;EACpC,SAAS,SAAS;CACpB,CAAC;AACH;AAEA,MAAa,mBAAmB,OAA0B,YAAqC;CAC7F,IAAI,OAAO,WAAW,aAAa;CAEnC,IAAI,aAAa,MAAM;EACrB,YAAY,KAAK,OAAO,eAAe,mBAAmB,OAAO,OAAO,CAAC;EACzE;CACF;CAEA,mBAAmB,OAAO,OAAO;AACnC;;;;;AAMA,MAAa,0BAA0B,UAA6B;CAClE,IAAI,OAAO,WAAW,aAAa;CACnC,oBAAoB,EAAE,MAAM,CAAC;AAC/B;AAEA,MAAM,4BAA4B;CAChC,oBAAoB;EAClB,QAAQ;EACR,QAAQ,KAAA;EACR,QAAQ,KAAA;EACR,eAAe;EACf,OAAO,CAAC;EACR,gBAAgB,KAAA;EAChB,MAAM;EACN,WAAW;EACX,SAAS,KAAA;CACX,CAAC;AACH;AAEA,MAAa,yBAAyB;CACpC,IAAI,aAAa,OAAO;EACtB,YAAY,MAAM,mBAAmB;EACrC;CACF;CAEA,oBAAoB;AACtB"}
@@ -1,6 +1,13 @@
1
- import { DatePickerProps } from "./type.mjs";
1
+ import { DatePickerType } from "./type.mjs";
2
2
  //#region src/DatePicker/DatePicker.d.ts
3
- declare const DatePicker: import("react").NamedExoticComponent<DatePickerProps>;
3
+ /**
4
+ * DatePicker over native `Date` — the previous lobe DatePicker API: values, `onChange`
5
+ * and `disabledDate` use `Date`, a cleared range is `[null, null]`; inputs may also be
6
+ * `Dayjs`, date strings or timestamps. Statics as in antd: `DatePicker.RangePicker`,
7
+ * `WeekPicker`, `MonthPicker`, `YearPicker`, `QuarterPicker`, `TimePicker`, the pure panels
8
+ * and `generatePicker`. For the antd `Dayjs` API use `DayjsDatePicker`.
9
+ */
10
+ declare const DatePicker: DatePickerType;
4
11
  //#endregion
5
12
  export { DatePicker as default };
6
13
  //# sourceMappingURL=DatePicker.d.mts.map