@lobehub/ui 6.0.0-beta.6 → 6.0.0-beta.8

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 (682) hide show
  1. package/es/Accordion/Accordion.mjs +3 -3
  2. package/es/Accordion/Accordion.mjs.map +1 -1
  3. package/es/Accordion/atoms.mjs +2 -2
  4. package/es/Accordion/atoms.mjs.map +1 -1
  5. package/es/Accordion/style.d.mts +1 -1
  6. package/es/ActionIcon/ActionIcon.mjs +2 -2
  7. package/es/ActionIcon/ActionIcon.mjs.map +1 -1
  8. package/es/Alert/Alert.mjs +5 -5
  9. package/es/Alert/Alert.mjs.map +1 -1
  10. package/es/AutoComplete/AutoComplete.mjs +5 -5
  11. package/es/AutoComplete/AutoComplete.mjs.map +1 -1
  12. package/es/AutoComplete/style.mjs +2 -2
  13. package/es/AutoComplete/style.mjs.map +1 -1
  14. package/es/Avatar/Avatar.mjs +2 -2
  15. package/es/Avatar/Avatar.mjs.map +1 -1
  16. package/es/Avatar/AvatarGroup/index.mjs +2 -2
  17. package/es/Avatar/AvatarGroup/index.mjs.map +1 -1
  18. package/es/Breadcrumb/Breadcrumb.mjs +2 -2
  19. package/es/Breadcrumb/Breadcrumb.mjs.map +1 -1
  20. package/es/Button/Button.mjs +1 -1
  21. package/es/Button/Button.mjs.map +1 -1
  22. package/es/Button/style.d.mts +8 -1
  23. package/es/Button/style.mjs +41 -18
  24. package/es/Button/style.mjs.map +1 -1
  25. package/es/Checkbox/Checkbox.mjs +3 -3
  26. package/es/Checkbox/Checkbox.mjs.map +1 -1
  27. package/es/CodeDiff/DiffPanel.mjs +4 -4
  28. package/es/CodeDiff/DiffPanel.mjs.map +1 -1
  29. package/es/CodeEditor/CodeEditor.mjs +4 -4
  30. package/es/CodeEditor/CodeEditor.mjs.map +1 -1
  31. package/es/ColorPicker/ColorInputs.mjs +136 -0
  32. package/es/ColorPicker/ColorInputs.mjs.map +1 -0
  33. package/es/ColorPicker/ColorPanel.mjs +145 -0
  34. package/es/ColorPicker/ColorPanel.mjs.map +1 -0
  35. package/es/ColorPicker/ColorPicker.mjs +62 -199
  36. package/es/ColorPicker/ColorPicker.mjs.map +1 -1
  37. package/es/ColorPicker/SaturationArea.mjs +2 -1
  38. package/es/ColorPicker/SaturationArea.mjs.map +1 -1
  39. package/es/ColorPicker/Swatch.mjs +24 -0
  40. package/es/ColorPicker/Swatch.mjs.map +1 -0
  41. package/es/ColorPicker/Swatches.mjs +66 -0
  42. package/es/ColorPicker/Swatches.mjs.map +1 -0
  43. package/es/ColorPicker/Trigger.mjs +112 -0
  44. package/es/ColorPicker/Trigger.mjs.map +1 -0
  45. package/es/ColorPicker/color.mjs +25 -1
  46. package/es/ColorPicker/color.mjs.map +1 -1
  47. package/es/ColorPicker/recent.mjs +25 -0
  48. package/es/ColorPicker/recent.mjs.map +1 -0
  49. package/es/ColorPicker/style.mjs +269 -70
  50. package/es/ColorPicker/style.mjs.map +1 -1
  51. package/es/ColorPicker/type.d.mts +15 -0
  52. package/es/ColorSwatches/type.d.mts +2 -2
  53. package/es/ContextMenu/ContextMenuHost.mjs +2 -2
  54. package/es/ContextMenu/ContextMenuHost.mjs.map +1 -1
  55. package/es/ContextMenu/ContextMenuTrigger.mjs +2 -2
  56. package/es/ContextMenu/ContextMenuTrigger.mjs.map +1 -1
  57. package/es/ContextMenu/renderItems.mjs +3 -3
  58. package/es/ContextMenu/renderItems.mjs.map +1 -1
  59. package/es/DatePicker/DatePicker.d.mts +7 -2
  60. package/es/DatePicker/DatePicker.mjs +13 -85
  61. package/es/DatePicker/DatePicker.mjs.map +1 -1
  62. package/es/DatePicker/DateRangePicker.d.mts +3 -2
  63. package/es/DatePicker/DateRangePicker.mjs +3 -125
  64. package/es/DatePicker/DateRangePicker.mjs.map +1 -1
  65. package/es/DatePicker/PurePanel.mjs +65 -0
  66. package/es/DatePicker/PurePanel.mjs.map +1 -0
  67. package/es/DatePicker/RangePicker.mjs +115 -0
  68. package/es/DatePicker/RangePicker.mjs.map +1 -0
  69. package/es/DatePicker/SinglePicker.mjs +132 -0
  70. package/es/DatePicker/SinglePicker.mjs.map +1 -0
  71. package/es/DatePicker/core/PickerInput/Popup/Footer.mjs +57 -0
  72. package/es/DatePicker/core/PickerInput/Popup/Footer.mjs.map +1 -0
  73. package/es/DatePicker/core/PickerInput/Popup/PopupPanel.mjs +57 -0
  74. package/es/DatePicker/core/PickerInput/Popup/PopupPanel.mjs.map +1 -0
  75. package/es/DatePicker/core/PickerInput/Popup/PresetPanel.mjs +29 -0
  76. package/es/DatePicker/core/PickerInput/Popup/PresetPanel.mjs.map +1 -0
  77. package/es/DatePicker/core/PickerInput/Popup/index.mjs +133 -0
  78. package/es/DatePicker/core/PickerInput/Popup/index.mjs.map +1 -0
  79. package/es/DatePicker/core/PickerInput/RangePicker.d.mts +51 -0
  80. package/es/DatePicker/core/PickerInput/RangePicker.mjs +343 -0
  81. package/es/DatePicker/core/PickerInput/RangePicker.mjs.map +1 -0
  82. package/es/DatePicker/core/PickerInput/Selector/ClearIcon.mjs +27 -0
  83. package/es/DatePicker/core/PickerInput/Selector/ClearIcon.mjs.map +1 -0
  84. package/es/DatePicker/core/PickerInput/Selector/Icon.mjs +19 -0
  85. package/es/DatePicker/core/PickerInput/Selector/Icon.mjs.map +1 -0
  86. package/es/DatePicker/core/PickerInput/Selector/Input.mjs +237 -0
  87. package/es/DatePicker/core/PickerInput/Selector/Input.mjs.map +1 -0
  88. package/es/DatePicker/core/PickerInput/Selector/MaskFormat.mjs +70 -0
  89. package/es/DatePicker/core/PickerInput/Selector/MaskFormat.mjs.map +1 -0
  90. package/es/DatePicker/core/PickerInput/Selector/RangeSelector.d.mts +8 -0
  91. package/es/DatePicker/core/PickerInput/Selector/RangeSelector.mjs +136 -0
  92. package/es/DatePicker/core/PickerInput/Selector/RangeSelector.mjs.map +1 -0
  93. package/es/DatePicker/core/PickerInput/Selector/SingleSelector/HoverSelector.mjs +28 -0
  94. package/es/DatePicker/core/PickerInput/Selector/SingleSelector/HoverSelector.mjs.map +1 -0
  95. package/es/DatePicker/core/PickerInput/Selector/SingleSelector/MultipleDates.mjs +69 -0
  96. package/es/DatePicker/core/PickerInput/Selector/SingleSelector/MultipleDates.mjs.map +1 -0
  97. package/es/DatePicker/core/PickerInput/Selector/SingleSelector/index.mjs +111 -0
  98. package/es/DatePicker/core/PickerInput/Selector/SingleSelector/index.mjs.map +1 -0
  99. package/es/DatePicker/core/PickerInput/Selector/hooks/useClearIcon.mjs +18 -0
  100. package/es/DatePicker/core/PickerInput/Selector/hooks/useClearIcon.mjs.map +1 -0
  101. package/es/DatePicker/core/PickerInput/Selector/hooks/useInputProps.mjs +108 -0
  102. package/es/DatePicker/core/PickerInput/Selector/hooks/useInputProps.mjs.map +1 -0
  103. package/es/DatePicker/core/PickerInput/Selector/hooks/useRootProps.mjs +11 -0
  104. package/es/DatePicker/core/PickerInput/Selector/hooks/useRootProps.mjs.map +1 -0
  105. package/es/DatePicker/core/PickerInput/Selector/util.mjs +20 -0
  106. package/es/DatePicker/core/PickerInput/Selector/util.mjs.map +1 -0
  107. package/es/DatePicker/core/PickerInput/SinglePicker.d.mts +55 -0
  108. package/es/DatePicker/core/PickerInput/SinglePicker.mjs +318 -0
  109. package/es/DatePicker/core/PickerInput/SinglePicker.mjs.map +1 -0
  110. package/es/DatePicker/core/PickerInput/context.mjs +7 -0
  111. package/es/DatePicker/core/PickerInput/context.mjs.map +1 -0
  112. package/es/DatePicker/core/PickerInput/hooks/useCellRender.mjs +30 -0
  113. package/es/DatePicker/core/PickerInput/hooks/useCellRender.mjs.map +1 -0
  114. package/es/DatePicker/core/PickerInput/hooks/useDelayState.mjs +37 -0
  115. package/es/DatePicker/core/PickerInput/hooks/useDelayState.mjs.map +1 -0
  116. package/es/DatePicker/core/PickerInput/hooks/useDisabledBoundary.mjs +18 -0
  117. package/es/DatePicker/core/PickerInput/hooks/useDisabledBoundary.mjs.map +1 -0
  118. package/es/DatePicker/core/PickerInput/hooks/useFieldFormat.mjs +20 -0
  119. package/es/DatePicker/core/PickerInput/hooks/useFieldFormat.mjs.map +1 -0
  120. package/es/DatePicker/core/PickerInput/hooks/useFieldsInvalidate.mjs +31 -0
  121. package/es/DatePicker/core/PickerInput/hooks/useFieldsInvalidate.mjs.map +1 -0
  122. package/es/DatePicker/core/PickerInput/hooks/useFilledProps.mjs +98 -0
  123. package/es/DatePicker/core/PickerInput/hooks/useFilledProps.mjs.map +1 -0
  124. package/es/DatePicker/core/PickerInput/hooks/useFocusEvents.mjs +41 -0
  125. package/es/DatePicker/core/PickerInput/hooks/useFocusEvents.mjs.map +1 -0
  126. package/es/DatePicker/core/PickerInput/hooks/useFocusLock.mjs +34 -0
  127. package/es/DatePicker/core/PickerInput/hooks/useFocusLock.mjs.map +1 -0
  128. package/es/DatePicker/core/PickerInput/hooks/useHoverStore.mjs +35 -0
  129. package/es/DatePicker/core/PickerInput/hooks/useHoverStore.mjs.map +1 -0
  130. package/es/DatePicker/core/PickerInput/hooks/useInputReadOnly.mjs +9 -0
  131. package/es/DatePicker/core/PickerInput/hooks/useInputReadOnly.mjs.map +1 -0
  132. package/es/DatePicker/core/PickerInput/hooks/useInvalidate.mjs +36 -0
  133. package/es/DatePicker/core/PickerInput/hooks/useInvalidate.mjs.map +1 -0
  134. package/es/DatePicker/core/PickerInput/hooks/useLockEffect.mjs +27 -0
  135. package/es/DatePicker/core/PickerInput/hooks/useLockEffect.mjs.map +1 -0
  136. package/es/DatePicker/core/PickerInput/hooks/useOpen.mjs +18 -0
  137. package/es/DatePicker/core/PickerInput/hooks/useOpen.mjs.map +1 -0
  138. package/es/DatePicker/core/PickerInput/hooks/usePickerRef.mjs +19 -0
  139. package/es/DatePicker/core/PickerInput/hooks/usePickerRef.mjs.map +1 -0
  140. package/es/DatePicker/core/PickerInput/hooks/usePresets.mjs +20 -0
  141. package/es/DatePicker/core/PickerInput/hooks/usePresets.mjs.map +1 -0
  142. package/es/DatePicker/core/PickerInput/hooks/useRangeDisabledDate.mjs +24 -0
  143. package/es/DatePicker/core/PickerInput/hooks/useRangeDisabledDate.mjs.map +1 -0
  144. package/es/DatePicker/core/PickerInput/hooks/useRangePickerValue.mjs +107 -0
  145. package/es/DatePicker/core/PickerInput/hooks/useRangePickerValue.mjs.map +1 -0
  146. package/es/DatePicker/core/PickerInput/hooks/useRangeValue.mjs +144 -0
  147. package/es/DatePicker/core/PickerInput/hooks/useRangeValue.mjs.map +1 -0
  148. package/es/DatePicker/core/PickerInput/hooks/useRangeValueChange.mjs +219 -0
  149. package/es/DatePicker/core/PickerInput/hooks/useRangeValueChange.mjs.map +1 -0
  150. package/es/DatePicker/core/PickerInput/hooks/useShowNow.mjs +11 -0
  151. package/es/DatePicker/core/PickerInput/hooks/useShowNow.mjs.map +1 -0
  152. package/es/DatePicker/core/PickerPanel/DatePanel/index.mjs +131 -0
  153. package/es/DatePicker/core/PickerPanel/DatePanel/index.mjs.map +1 -0
  154. package/es/DatePicker/core/PickerPanel/DateTimePanel/index.mjs +35 -0
  155. package/es/DatePicker/core/PickerPanel/DateTimePanel/index.mjs.map +1 -0
  156. package/es/DatePicker/core/PickerPanel/DecadePanel/index.mjs +84 -0
  157. package/es/DatePicker/core/PickerPanel/DecadePanel/index.mjs.map +1 -0
  158. package/es/DatePicker/core/PickerPanel/MonthPanel/index.mjs +73 -0
  159. package/es/DatePicker/core/PickerPanel/MonthPanel/index.mjs.map +1 -0
  160. package/es/DatePicker/core/PickerPanel/PanelBody.mjs +95 -0
  161. package/es/DatePicker/core/PickerPanel/PanelBody.mjs.map +1 -0
  162. package/es/DatePicker/core/PickerPanel/PanelHeader.mjs +130 -0
  163. package/es/DatePicker/core/PickerPanel/PanelHeader.mjs.map +1 -0
  164. package/es/DatePicker/core/PickerPanel/QuarterPanel/index.mjs +64 -0
  165. package/es/DatePicker/core/PickerPanel/QuarterPanel/index.mjs.map +1 -0
  166. package/es/DatePicker/core/PickerPanel/TimePanel/TimeClock/ClockDial.mjs +108 -0
  167. package/es/DatePicker/core/PickerPanel/TimePanel/TimeClock/ClockDial.mjs.map +1 -0
  168. package/es/DatePicker/core/PickerPanel/TimePanel/TimeClock/geometry.mjs +44 -0
  169. package/es/DatePicker/core/PickerPanel/TimePanel/TimeClock/geometry.mjs.map +1 -0
  170. package/es/DatePicker/core/PickerPanel/TimePanel/TimeClock/index.mjs +157 -0
  171. package/es/DatePicker/core/PickerPanel/TimePanel/TimeClock/index.mjs.map +1 -0
  172. package/es/DatePicker/core/PickerPanel/TimePanel/TimePanelBody/TimeColumn.mjs +100 -0
  173. package/es/DatePicker/core/PickerPanel/TimePanel/TimePanelBody/TimeColumn.mjs.map +1 -0
  174. package/es/DatePicker/core/PickerPanel/TimePanel/TimePanelBody/index.mjs +71 -0
  175. package/es/DatePicker/core/PickerPanel/TimePanel/TimePanelBody/index.mjs.map +1 -0
  176. package/es/DatePicker/core/PickerPanel/TimePanel/TimePanelBody/useScrollTo.mjs +62 -0
  177. package/es/DatePicker/core/PickerPanel/TimePanel/TimePanelBody/useScrollTo.mjs.map +1 -0
  178. package/es/DatePicker/core/PickerPanel/TimePanel/TimePanelBody/useTimeState.mjs +200 -0
  179. package/es/DatePicker/core/PickerPanel/TimePanel/TimePanelBody/useTimeState.mjs.map +1 -0
  180. package/es/DatePicker/core/PickerPanel/TimePanel/TimePanelBody/util.mjs +25 -0
  181. package/es/DatePicker/core/PickerPanel/TimePanel/TimePanelBody/util.mjs.map +1 -0
  182. package/es/DatePicker/core/PickerPanel/TimePanel/index.mjs +31 -0
  183. package/es/DatePicker/core/PickerPanel/TimePanel/index.mjs.map +1 -0
  184. package/es/DatePicker/core/PickerPanel/WeekPanel/index.mjs +34 -0
  185. package/es/DatePicker/core/PickerPanel/WeekPanel/index.mjs.map +1 -0
  186. package/es/DatePicker/core/PickerPanel/YearPanel/index.mjs +92 -0
  187. package/es/DatePicker/core/PickerPanel/YearPanel/index.mjs.map +1 -0
  188. package/es/DatePicker/core/PickerPanel/context.mjs +48 -0
  189. package/es/DatePicker/core/PickerPanel/context.mjs.map +1 -0
  190. package/es/DatePicker/core/PickerPanel/index.d.mts +1 -0
  191. package/es/DatePicker/core/PickerPanel/index.mjs +175 -0
  192. package/es/DatePicker/core/PickerPanel/index.mjs.map +1 -0
  193. package/es/DatePicker/core/PickerPopup.mjs +118 -0
  194. package/es/DatePicker/core/PickerPopup.mjs.map +1 -0
  195. package/es/DatePicker/core/generate/dayjs.mjs +109 -0
  196. package/es/DatePicker/core/generate/dayjs.mjs.map +1 -0
  197. package/es/DatePicker/core/generate/index.d.mts +40 -0
  198. package/es/DatePicker/core/hooks/react.mjs +58 -0
  199. package/es/DatePicker/core/hooks/react.mjs.map +1 -0
  200. package/es/DatePicker/core/hooks/useLocale.mjs +51 -0
  201. package/es/DatePicker/core/hooks/useLocale.mjs.map +1 -0
  202. package/es/DatePicker/core/hooks/useSemantic.mjs +20 -0
  203. package/es/DatePicker/core/hooks/useSemantic.mjs.map +1 -0
  204. package/es/DatePicker/core/hooks/useSyncState.mjs +25 -0
  205. package/es/DatePicker/core/hooks/useSyncState.mjs.map +1 -0
  206. package/es/DatePicker/core/hooks/useTimeConfig.mjs +173 -0
  207. package/es/DatePicker/core/hooks/useTimeConfig.mjs.map +1 -0
  208. package/es/DatePicker/core/hooks/useTimeInfo.mjs +110 -0
  209. package/es/DatePicker/core/hooks/useTimeInfo.mjs.map +1 -0
  210. package/es/DatePicker/core/hooks/useToggleDates.mjs +21 -0
  211. package/es/DatePicker/core/hooks/useToggleDates.mjs.map +1 -0
  212. package/es/DatePicker/core/index.d.mts +5 -0
  213. package/es/DatePicker/core/index.mjs +9 -0
  214. package/es/DatePicker/core/index.mjs.map +1 -0
  215. package/es/DatePicker/core/interface.d.mts +325 -0
  216. package/es/DatePicker/core/locale/common.mjs +11 -0
  217. package/es/DatePicker/core/locale/common.mjs.map +1 -0
  218. package/es/DatePicker/core/locale/en_US.mjs +39 -0
  219. package/es/DatePicker/core/locale/en_US.mjs.map +1 -0
  220. package/es/DatePicker/core/utils/common.mjs +73 -0
  221. package/es/DatePicker/core/utils/common.mjs.map +1 -0
  222. package/es/DatePicker/core/utils/dateUtil.mjs +106 -0
  223. package/es/DatePicker/core/utils/dateUtil.mjs.map +1 -0
  224. package/es/DatePicker/core/utils/miscUtil.mjs +46 -0
  225. package/es/DatePicker/core/utils/miscUtil.mjs.map +1 -0
  226. package/es/DatePicker/core/utils/uiUtil.mjs +9 -0
  227. package/es/DatePicker/core/utils/uiUtil.mjs.map +1 -0
  228. package/es/DatePicker/generateConfig.mjs +12 -0
  229. package/es/DatePicker/generateConfig.mjs.map +1 -0
  230. package/es/DatePicker/generatePicker.d.mts +12 -0
  231. package/es/DatePicker/generatePicker.mjs +22 -0
  232. package/es/DatePicker/generatePicker.mjs.map +1 -0
  233. package/es/DatePicker/index.d.mts +6 -3
  234. package/es/DatePicker/index.mjs +3 -1
  235. package/es/DatePicker/locale.d.mts +15 -0
  236. package/es/DatePicker/locale.mjs +143 -0
  237. package/es/DatePicker/locale.mjs.map +1 -0
  238. package/es/DatePicker/semantic.mjs +29 -0
  239. package/es/DatePicker/semantic.mjs.map +1 -0
  240. package/es/DatePicker/style.mjs +3 -155
  241. package/es/DatePicker/style.mjs.map +1 -1
  242. package/es/DatePicker/type.d.mts +268 -27
  243. package/es/DatePicker/usePanelKeyboard.mjs +230 -0
  244. package/es/DatePicker/usePanelKeyboard.mjs.map +1 -0
  245. package/es/DatePicker/usePickerShared.mjs +106 -0
  246. package/es/DatePicker/usePickerShared.mjs.map +1 -0
  247. package/es/DatePicker/usePresetActive.mjs +48 -0
  248. package/es/DatePicker/usePresetActive.mjs.map +1 -0
  249. package/es/DraggablePanel/atoms.mjs +5 -5
  250. package/es/DraggablePanel/atoms.mjs.map +1 -1
  251. package/es/DraggableSideNav/DraggableSideNav.mjs +3 -3
  252. package/es/DraggableSideNav/DraggableSideNav.mjs.map +1 -1
  253. package/es/Drawer/Drawer.mjs +2 -2
  254. package/es/Drawer/Drawer.mjs.map +1 -1
  255. package/es/Drawer/atoms.mjs +6 -6
  256. package/es/Drawer/atoms.mjs.map +1 -1
  257. package/es/DropdownMenu/atoms.mjs +22 -22
  258. package/es/DropdownMenu/atoms.mjs.map +1 -1
  259. package/es/DropdownMenu/sharedStyle.mjs +2 -2
  260. package/es/DropdownMenu/sharedStyle.mjs.map +1 -1
  261. package/es/EditableText/EditableText.mjs +1 -1
  262. package/es/EditorSlashMenu/atoms.mjs +12 -12
  263. package/es/EditorSlashMenu/atoms.mjs.map +1 -1
  264. package/es/EmojiPicker/EmojiPicker.mjs +7 -7
  265. package/es/EmojiPicker/EmojiPicker.mjs.map +1 -1
  266. package/es/EmojiPicker/loadEmojiData.mjs +6 -0
  267. package/es/EmojiPicker/loadEmojiData.mjs.map +1 -0
  268. package/es/FloatingPanel/FloatingPanel.mjs +2 -2
  269. package/es/FloatingPanel/FloatingPanel.mjs.map +1 -1
  270. package/es/FormKit/List.mjs +2 -2
  271. package/es/FormKit/List.mjs.map +1 -1
  272. package/es/Highlighter/FullFeatured.mjs +2 -2
  273. package/es/Highlighter/FullFeatured.mjs.map +1 -1
  274. package/es/Highlighter/SyntaxHighlighter/StreamRenderer.mjs +2 -2
  275. package/es/Highlighter/SyntaxHighlighter/StreamRenderer.mjs.map +1 -1
  276. package/es/Highlighter/SyntaxHighlighter/index.mjs +4 -4
  277. package/es/Highlighter/SyntaxHighlighter/index.mjs.map +1 -1
  278. package/es/Highlighter/style.mjs +2 -2
  279. package/es/Highlighter/style.mjs.map +1 -1
  280. package/es/HtmlPreview/HtmlPreview.mjs +2 -2
  281. package/es/HtmlPreview/HtmlPreview.mjs.map +1 -1
  282. package/es/Icon/Icon.mjs +2 -2
  283. package/es/Icon/Icon.mjs.map +1 -1
  284. package/es/List/ListRow.mjs +3 -3
  285. package/es/List/ListRow.mjs.map +1 -1
  286. package/es/Markdown/Markdown.mjs +2 -2
  287. package/es/Markdown/Markdown.mjs.map +1 -1
  288. package/es/Markdown/Typography.mjs +2 -2
  289. package/es/Markdown/Typography.mjs.map +1 -1
  290. package/es/Mermaid/FullFeatured.mjs +2 -2
  291. package/es/Mermaid/FullFeatured.mjs.map +1 -1
  292. package/es/Mermaid/SyntaxMermaid/index.mjs +4 -4
  293. package/es/Mermaid/SyntaxMermaid/index.mjs.map +1 -1
  294. package/es/Modal/atoms.mjs +6 -6
  295. package/es/Modal/atoms.mjs.map +1 -1
  296. package/es/Pagination/Pagination.mjs +181 -41
  297. package/es/Pagination/Pagination.mjs.map +1 -1
  298. package/es/Pagination/helpers.mjs +3 -3
  299. package/es/Pagination/helpers.mjs.map +1 -1
  300. package/es/Pagination/index.d.mts +2 -2
  301. package/es/Pagination/marker.stylex.mjs +9 -0
  302. package/es/Pagination/marker.stylex.mjs.map +1 -0
  303. package/es/Pagination/style.mjs +74 -4
  304. package/es/Pagination/style.mjs.map +1 -1
  305. package/es/Pagination/type.d.mts +41 -3
  306. package/es/Popover/PopoverInGroup.mjs +2 -2
  307. package/es/Popover/PopoverInGroup.mjs.map +1 -1
  308. package/es/Popover/atoms.mjs +6 -6
  309. package/es/Popover/atoms.mjs.map +1 -1
  310. package/es/ProTable/ProTable.d.mts +11 -0
  311. package/es/ProTable/ProTable.mjs +208 -0
  312. package/es/ProTable/ProTable.mjs.map +1 -0
  313. package/es/ProTable/hooks/useColumnRequest.mjs +55 -0
  314. package/es/ProTable/hooks/useColumnRequest.mjs.map +1 -0
  315. package/es/ProTable/hooks/useColumnsState.mjs +37 -0
  316. package/es/ProTable/hooks/useColumnsState.mjs.map +1 -0
  317. package/es/ProTable/hooks/useDelayedFlag.mjs +18 -0
  318. package/es/ProTable/hooks/useDelayedFlag.mjs.map +1 -0
  319. package/es/ProTable/hooks/useDensity.mjs +15 -0
  320. package/es/ProTable/hooks/useDensity.mjs.map +1 -0
  321. package/es/ProTable/hooks/useFetchData.mjs +97 -0
  322. package/es/ProTable/hooks/useFetchData.mjs.map +1 -0
  323. package/es/ProTable/hooks/useFullscreen.mjs +22 -0
  324. package/es/ProTable/hooks/useFullscreen.mjs.map +1 -0
  325. package/es/ProTable/hooks/usePageInfo.mjs +35 -0
  326. package/es/ProTable/hooks/usePageInfo.mjs.map +1 -0
  327. package/es/ProTable/hooks/useProColumns.mjs +123 -0
  328. package/es/ProTable/hooks/useProColumns.mjs.map +1 -0
  329. package/es/ProTable/hooks/useProLoading.mjs +19 -0
  330. package/es/ProTable/hooks/useProLoading.mjs.map +1 -0
  331. package/es/ProTable/hooks/useProLocale.mjs +22 -0
  332. package/es/ProTable/hooks/useProLocale.mjs.map +1 -0
  333. package/es/ProTable/hooks/useProRequest.mjs +137 -0
  334. package/es/ProTable/hooks/useProRequest.mjs.map +1 -0
  335. package/es/ProTable/hooks/useRowCache.mjs +11 -0
  336. package/es/ProTable/hooks/useRowCache.mjs.map +1 -0
  337. package/es/ProTable/hooks/useSearchForm.mjs +141 -0
  338. package/es/ProTable/hooks/useSearchForm.mjs.map +1 -0
  339. package/es/ProTable/hooks/useTableBindings.mjs +39 -0
  340. package/es/ProTable/hooks/useTableBindings.mjs.map +1 -0
  341. package/es/ProTable/hooks/useTableSelection.mjs +14 -0
  342. package/es/ProTable/hooks/useTableSelection.mjs.map +1 -0
  343. package/es/ProTable/index.d.mts +4 -0
  344. package/es/ProTable/index.d.ts +1 -0
  345. package/es/ProTable/index.js +1 -0
  346. package/es/ProTable/index.mjs +3 -0
  347. package/es/ProTable/locale.d.mts +15 -0
  348. package/es/ProTable/locale.mjs +66 -0
  349. package/es/ProTable/locale.mjs.map +1 -0
  350. package/es/ProTable/parts/ColumnSetting.mjs +155 -0
  351. package/es/ProTable/parts/ColumnSetting.mjs.map +1 -0
  352. package/es/ProTable/parts/FieldControl.mjs +117 -0
  353. package/es/ProTable/parts/FieldControl.mjs.map +1 -0
  354. package/es/ProTable/parts/KeywordInput.mjs +19 -0
  355. package/es/ProTable/parts/KeywordInput.mjs.map +1 -0
  356. package/es/ProTable/parts/LightFilter.mjs +70 -0
  357. package/es/ProTable/parts/LightFilter.mjs.map +1 -0
  358. package/es/ProTable/parts/OptionPopover.mjs +17 -0
  359. package/es/ProTable/parts/OptionPopover.mjs.map +1 -0
  360. package/es/ProTable/parts/SearchForm.mjs +180 -0
  361. package/es/ProTable/parts/SearchForm.mjs.map +1 -0
  362. package/es/ProTable/parts/SearchSection.mjs +33 -0
  363. package/es/ProTable/parts/SearchSection.mjs.map +1 -0
  364. package/es/ProTable/parts/TableAlert.mjs +38 -0
  365. package/es/ProTable/parts/TableAlert.mjs.map +1 -0
  366. package/es/ProTable/parts/Toolbar.mjs +50 -0
  367. package/es/ProTable/parts/Toolbar.mjs.map +1 -0
  368. package/es/ProTable/parts/ToolbarOptions.mjs +103 -0
  369. package/es/ProTable/parts/ToolbarOptions.mjs.map +1 -0
  370. package/es/ProTable/parts/renderValue.mjs +118 -0
  371. package/es/ProTable/parts/renderValue.mjs.map +1 -0
  372. package/es/ProTable/style.mjs +278 -0
  373. package/es/ProTable/style.mjs.map +1 -0
  374. package/es/ProTable/type.d.mts +397 -0
  375. package/es/ProTable/utils.mjs +152 -0
  376. package/es/ProTable/utils.mjs.map +1 -0
  377. package/es/Radio/Radio.mjs +3 -3
  378. package/es/Radio/Radio.mjs.map +1 -1
  379. package/es/ScrollArea/atoms.mjs +4 -4
  380. package/es/ScrollArea/atoms.mjs.map +1 -1
  381. package/es/Segmented/Segmented.mjs +3 -3
  382. package/es/Segmented/Segmented.mjs.map +1 -1
  383. package/es/Segmented/atoms.mjs +2 -2
  384. package/es/Segmented/atoms.mjs.map +1 -1
  385. package/es/Select/Select.mjs +22 -13
  386. package/es/Select/Select.mjs.map +1 -1
  387. package/es/Select/atoms.mjs +4 -4
  388. package/es/Select/atoms.mjs.map +1 -1
  389. package/es/Select/helpers.mjs +8 -1
  390. package/es/Select/helpers.mjs.map +1 -1
  391. package/es/Select/hooks.mjs +8 -4
  392. package/es/Select/hooks.mjs.map +1 -1
  393. package/es/Select/renderOptions.mjs +2 -2
  394. package/es/Select/renderOptions.mjs.map +1 -1
  395. package/es/Select/type.d.mts +7 -0
  396. package/es/Switch/Switch.mjs +2 -2
  397. package/es/Switch/Switch.mjs.map +1 -1
  398. package/es/Switch/atoms.mjs +2 -2
  399. package/es/Switch/atoms.mjs.map +1 -1
  400. package/es/Table/Column.d.mts +8 -0
  401. package/es/Table/Column.mjs +6 -0
  402. package/es/Table/Column.mjs.map +1 -0
  403. package/es/Table/ColumnGroup.d.mts +11 -0
  404. package/es/Table/ColumnGroup.mjs +6 -0
  405. package/es/Table/ColumnGroup.mjs.map +1 -0
  406. package/es/Table/Table.d.mts +16 -2
  407. package/es/Table/Table.mjs +149 -118
  408. package/es/Table/Table.mjs.map +1 -1
  409. package/es/Table/atoms/cells.d.mts +42 -0
  410. package/es/Table/atoms/cells.mjs +72 -0
  411. package/es/Table/atoms/cells.mjs.map +1 -0
  412. package/es/Table/atoms/index.d.mts +3 -0
  413. package/es/Table/atoms/layout.d.mts +44 -0
  414. package/es/Table/atoms/layout.mjs +62 -0
  415. package/es/Table/atoms/layout.mjs.map +1 -0
  416. package/es/Table/constants.mjs +16 -0
  417. package/es/Table/constants.mjs.map +1 -0
  418. package/es/Table/engine/fixed.d.mts +1 -0
  419. package/es/Table/engine/fixed.mjs +53 -0
  420. package/es/Table/engine/fixed.mjs.map +1 -0
  421. package/es/Table/engine/types.d.mts +1 -0
  422. package/es/Table/engine/useTableEngine.mjs +180 -0
  423. package/es/Table/engine/useTableEngine.mjs.map +1 -0
  424. package/es/Table/index.d.mts +7 -2
  425. package/es/Table/index.mjs +4 -1
  426. package/es/Table/internal.d.mts +3 -0
  427. package/es/Table/pipeline/columnUtils.d.mts +5 -0
  428. package/es/Table/pipeline/columnUtils.mjs +58 -0
  429. package/es/Table/pipeline/columnUtils.mjs.map +1 -0
  430. package/es/Table/pipeline/convertChildrenToColumns.mjs +24 -0
  431. package/es/Table/pipeline/convertChildrenToColumns.mjs.map +1 -0
  432. package/es/Table/pipeline/normalizeColumns.mjs +140 -0
  433. package/es/Table/pipeline/normalizeColumns.mjs.map +1 -0
  434. package/es/Table/pipeline/selectionUtils.d.mts +9 -0
  435. package/es/Table/pipeline/selectionUtils.mjs +115 -0
  436. package/es/Table/pipeline/selectionUtils.mjs.map +1 -0
  437. package/es/Table/pipeline/useBreakpoint.mjs +36 -0
  438. package/es/Table/pipeline/useBreakpoint.mjs.map +1 -0
  439. package/es/Table/pipeline/useExpandable.mjs +45 -0
  440. package/es/Table/pipeline/useExpandable.mjs.map +1 -0
  441. package/es/Table/pipeline/useFilter.mjs +52 -0
  442. package/es/Table/pipeline/useFilter.mjs.map +1 -0
  443. package/es/Table/pipeline/useSelection.mjs +302 -0
  444. package/es/Table/pipeline/useSelection.mjs.map +1 -0
  445. package/es/Table/pipeline/useSorter.mjs +146 -0
  446. package/es/Table/pipeline/useSorter.mjs.map +1 -0
  447. package/es/Table/pipeline/useTableLocale.mjs +30 -0
  448. package/es/Table/pipeline/useTableLocale.mjs.map +1 -0
  449. package/es/Table/pipeline/useTableState.mjs +118 -0
  450. package/es/Table/pipeline/useTableState.mjs.map +1 -0
  451. package/es/Table/pipeline/useVirtualLayout.mjs +80 -0
  452. package/es/Table/pipeline/useVirtualLayout.mjs.map +1 -0
  453. package/es/Table/render/Body.mjs +150 -0
  454. package/es/Table/render/Body.mjs.map +1 -0
  455. package/es/Table/render/BodyCell.mjs +87 -0
  456. package/es/Table/render/BodyCell.mjs.map +1 -0
  457. package/es/Table/render/CellShell.mjs +84 -0
  458. package/es/Table/render/CellShell.mjs.map +1 -0
  459. package/es/Table/render/ExpandIcon.mjs +28 -0
  460. package/es/Table/render/ExpandIcon.mjs.map +1 -0
  461. package/es/Table/render/FilterDropdown.mjs +139 -0
  462. package/es/Table/render/FilterDropdown.mjs.map +1 -0
  463. package/es/Table/render/FilterPanel.mjs +152 -0
  464. package/es/Table/render/FilterPanel.mjs.map +1 -0
  465. package/es/Table/render/FixedFrost.mjs +113 -0
  466. package/es/Table/render/FixedFrost.mjs.map +1 -0
  467. package/es/Table/render/FixedHolder.mjs +51 -0
  468. package/es/Table/render/FixedHolder.mjs.map +1 -0
  469. package/es/Table/render/Header.mjs +184 -0
  470. package/es/Table/render/Header.mjs.map +1 -0
  471. package/es/Table/render/LoadingSkeleton.mjs +78 -0
  472. package/es/Table/render/LoadingSkeleton.mjs.map +1 -0
  473. package/es/Table/render/PaginationBar.mjs +71 -0
  474. package/es/Table/render/PaginationBar.mjs.map +1 -0
  475. package/es/Table/render/SelectionCells.mjs +111 -0
  476. package/es/Table/render/SelectionCells.mjs.map +1 -0
  477. package/es/Table/render/StickyScrollBar.mjs +99 -0
  478. package/es/Table/render/StickyScrollBar.mjs.map +1 -0
  479. package/es/Table/render/Summary.d.mts +16 -0
  480. package/es/Table/render/Summary.mjs +58 -0
  481. package/es/Table/render/Summary.mjs.map +1 -0
  482. package/es/Table/render/TableView.mjs +215 -0
  483. package/es/Table/render/TableView.mjs.map +1 -0
  484. package/es/Table/render/VirtualBody.mjs +101 -0
  485. package/es/Table/render/VirtualBody.mjs.map +1 -0
  486. package/es/Table/render/context.mjs +15 -0
  487. package/es/Table/render/context.mjs.map +1 -0
  488. package/es/Table/render/filterUtils.mjs +22 -0
  489. package/es/Table/render/filterUtils.mjs.map +1 -0
  490. package/es/Table/render/tableHelpers.mjs +27 -0
  491. package/es/Table/render/tableHelpers.mjs.map +1 -0
  492. package/es/Table/render/useColGroups.mjs +23 -0
  493. package/es/Table/render/useColGroups.mjs.map +1 -0
  494. package/es/Table/render/useScrollSync.mjs +104 -0
  495. package/es/Table/render/useScrollSync.mjs.map +1 -0
  496. package/es/Table/render/useViewContexts.mjs +134 -0
  497. package/es/Table/render/useViewContexts.mjs.map +1 -0
  498. package/es/Table/semantic.mjs +45 -0
  499. package/es/Table/semantic.mjs.map +1 -0
  500. package/es/Table/store/createTableStore.d.mts +1 -0
  501. package/es/Table/store/createTableStore.mjs +40 -0
  502. package/es/Table/store/createTableStore.mjs.map +1 -0
  503. package/es/Table/store/hooks.mjs +24 -0
  504. package/es/Table/store/hooks.mjs.map +1 -0
  505. package/es/Table/style.mjs +175 -90
  506. package/es/Table/style.mjs.map +1 -1
  507. package/es/Table/type.d.mts +467 -37
  508. package/es/Table/useTableController.mjs +293 -0
  509. package/es/Table/useTableController.mjs.map +1 -0
  510. package/es/Tabs/Tabs.mjs +2 -2
  511. package/es/Tabs/Tabs.mjs.map +1 -1
  512. package/es/Tabs/atoms.mjs +2 -2
  513. package/es/Tabs/atoms.mjs.map +1 -1
  514. package/es/Tabs/style.d.mts +1 -1
  515. package/es/Tag/Tag.mjs +2 -2
  516. package/es/Tag/Tag.mjs.map +1 -1
  517. package/es/Text/Text.mjs +2 -2
  518. package/es/Text/Text.mjs.map +1 -1
  519. package/es/Text/style.d.mts +3 -3
  520. package/es/Text/style.mjs +3 -3
  521. package/es/Text/style.mjs.map +1 -1
  522. package/es/ToggleGroup/ToggleGroup.mjs +3 -3
  523. package/es/ToggleGroup/ToggleGroup.mjs.map +1 -1
  524. package/es/ToggleGroup/atoms.mjs +2 -2
  525. package/es/ToggleGroup/atoms.mjs.map +1 -1
  526. package/es/Tooltip/TooltipGroup.mjs +3 -3
  527. package/es/Tooltip/TooltipGroup.mjs.map +1 -1
  528. package/es/Tooltip/TooltipStandalone.mjs +3 -3
  529. package/es/Tooltip/TooltipStandalone.mjs.map +1 -1
  530. package/es/Tree/Tree.mjs +2 -2
  531. package/es/Tree/Tree.mjs.map +1 -1
  532. package/es/Tree/TreeNode.mjs +2 -2
  533. package/es/Tree/TreeNode.mjs.map +1 -1
  534. package/es/Video/Video.mjs +2 -2
  535. package/es/Video/Video.mjs.map +1 -1
  536. package/es/awesome/Features/FeatureItem.mjs +2 -2
  537. package/es/awesome/Features/FeatureItem.mjs.map +1 -1
  538. package/es/awesome/Hero/Hero.mjs +3 -3
  539. package/es/awesome/Hero/Hero.mjs.map +1 -1
  540. package/es/awesome/InstallBanner/InstallBanner.mjs +2 -2
  541. package/es/awesome/InstallBanner/InstallBanner.mjs.map +1 -1
  542. package/es/awesome/LandingHero/LandingHero.mjs +3 -3
  543. package/es/awesome/LandingHero/LandingHero.mjs.map +1 -1
  544. package/es/awesome/LogoMarquee/LogoMarquee.mjs +2 -2
  545. package/es/awesome/LogoMarquee/LogoMarquee.mjs.map +1 -1
  546. package/es/awesome/TypewriterEffect/TypewriterEffect.mjs +4 -4
  547. package/es/awesome/TypewriterEffect/TypewriterEffect.mjs.map +1 -1
  548. package/es/awesome/landingActions.mjs +2 -2
  549. package/es/awesome/landingActions.mjs.map +1 -1
  550. package/es/chat/ChatItem/ChatItem.mjs +2 -2
  551. package/es/chat/ChatItem/ChatItem.mjs.map +1 -1
  552. package/es/chat/EditableMessage/EditableMessage.mjs +3 -3
  553. package/es/chat/EditableMessage/EditableMessage.mjs.map +1 -1
  554. package/es/chat/EditableMessageList/EditableMessageList.mjs +1 -1
  555. package/es/chat/MessageInput/MessageInput.mjs +3 -3
  556. package/es/chat/MessageInput/MessageInput.mjs.map +1 -1
  557. package/es/dashboard/AuthLayout/AuthLayout.mjs +8 -4
  558. package/es/dashboard/AuthLayout/AuthLayout.mjs.map +1 -1
  559. package/es/dashboard/AuthLayout/style.mjs +14 -3
  560. package/es/dashboard/AuthLayout/style.mjs.map +1 -1
  561. package/es/dashboard/AuthTools/AuthLocaleSwitch.mjs +2 -2
  562. package/es/dashboard/AuthTools/AuthLocaleSwitch.mjs.map +1 -1
  563. package/es/dashboard/AuthTools/AuthThemeSwitch.mjs +2 -2
  564. package/es/dashboard/AuthTools/AuthThemeSwitch.mjs.map +1 -1
  565. package/es/dashboard/ConsoleNav/ConsoleNav.mjs +3 -3
  566. package/es/dashboard/ConsoleNav/ConsoleNav.mjs.map +1 -1
  567. package/es/dashboard/ConsoleNav/style.mjs +2 -2
  568. package/es/dashboard/ConsoleNav/style.mjs.map +1 -1
  569. package/es/dashboard/ConsoleShell/style.mjs +1 -1
  570. package/es/dashboard/ConsoleShell/style.mjs.map +1 -1
  571. package/es/dashboard/FilterSidebar/FilterSidebar.mjs +1 -1
  572. package/es/dashboard/FilterSidebar/style.mjs +2 -2
  573. package/es/dashboard/FilterSidebar/style.mjs.map +1 -1
  574. package/es/dashboard/FilterStrip/style.mjs +1 -1
  575. package/es/dashboard/FilterStrip/style.mjs.map +1 -1
  576. package/es/dashboard/MetricStrip/MetricCell.mjs +25 -14
  577. package/es/dashboard/MetricStrip/MetricCell.mjs.map +1 -1
  578. package/es/dashboard/MetricStrip/style.mjs +14 -1
  579. package/es/dashboard/MetricStrip/style.mjs.map +1 -1
  580. package/es/dashboard/MetricStrip/type.d.mts +2 -0
  581. package/es/dashboard/PageSkeleton/style.mjs +2 -1
  582. package/es/dashboard/PageSkeleton/style.mjs.map +1 -1
  583. package/es/dashboard/StatCard/StatCard.d.mts +1 -1
  584. package/es/dashboard/StatCard/StatCard.mjs +2 -1
  585. package/es/dashboard/StatCard/StatCard.mjs.map +1 -1
  586. package/es/dashboard/StatCard/type.d.mts +2 -0
  587. package/es/dashboard/Surface/Surface.mjs +3 -4
  588. package/es/dashboard/Surface/Surface.mjs.map +1 -1
  589. package/es/dashboard/Surface/link.mjs +1 -1
  590. package/es/dashboard/Surface/link.mjs.map +1 -1
  591. package/es/dashboard/Surface/style.mjs +15 -14
  592. package/es/dashboard/Surface/style.mjs.map +1 -1
  593. package/es/dashboard/index.mjs +2 -2
  594. package/es/eslint/noBaseUiSubpath.mjs +2 -1
  595. package/es/eslint/noBaseUiSubpath.mjs.map +1 -1
  596. package/es/i18n/resources/en/colorPicker.d.mts +5 -0
  597. package/es/i18n/resources/en/colorPicker.mjs +5 -0
  598. package/es/i18n/resources/en/colorPicker.mjs.map +1 -1
  599. package/es/i18n/resources/en/datePicker.d.mts +54 -0
  600. package/es/i18n/resources/en/datePicker.mjs +55 -1
  601. package/es/i18n/resources/en/datePicker.mjs.map +1 -1
  602. package/es/i18n/resources/en/index.d.mts +4 -3
  603. package/es/i18n/resources/en/index.mjs +3 -1
  604. package/es/i18n/resources/en/index.mjs.map +1 -1
  605. package/es/i18n/resources/en/table.d.mts +23 -0
  606. package/es/i18n/resources/en/table.mjs +24 -0
  607. package/es/i18n/resources/en/table.mjs.map +1 -0
  608. package/es/i18n/resources/zhCn/colorPicker.d.mts +5 -0
  609. package/es/i18n/resources/zhCn/colorPicker.mjs +5 -0
  610. package/es/i18n/resources/zhCn/colorPicker.mjs.map +1 -1
  611. package/es/i18n/resources/zhCn/datePicker.d.mts +54 -0
  612. package/es/i18n/resources/zhCn/datePicker.mjs +55 -1
  613. package/es/i18n/resources/zhCn/datePicker.mjs.map +1 -1
  614. package/es/i18n/resources/zhCn/index.d.mts +4 -3
  615. package/es/i18n/resources/zhCn/index.mjs +4 -2
  616. package/es/i18n/resources/zhCn/index.mjs.map +1 -1
  617. package/es/i18n/resources/zhCn/table.d.mts +23 -0
  618. package/es/i18n/resources/zhCn/table.mjs +24 -0
  619. package/es/i18n/resources/zhCn/table.mjs.map +1 -0
  620. package/es/i18n/types.d.mts +3 -2
  621. package/es/index.d.mts +15 -7
  622. package/es/index.mjs +14 -9
  623. package/es/internal/overflow/OverflowList.mjs +71 -0
  624. package/es/internal/overflow/OverflowList.mjs.map +1 -0
  625. package/es/mdx/Callout/index.mjs +2 -2
  626. package/es/mdx/Callout/index.mjs.map +1 -1
  627. package/es/mdx/Cards/Card.mjs +2 -2
  628. package/es/mdx/Cards/Card.mjs.map +1 -1
  629. package/es/mdx/Cards/index.mjs +2 -2
  630. package/es/mdx/Cards/index.mjs.map +1 -1
  631. package/es/mdx/Mdx/index.mjs +2 -2
  632. package/es/mdx/Mdx/index.mjs.map +1 -1
  633. package/es/mdx/Steps/index.mjs +2 -2
  634. package/es/mdx/Steps/index.mjs.map +1 -1
  635. package/es/mdx/mdxComponents/Pre.mjs +5 -5
  636. package/es/mdx/mdxComponents/Pre.mjs.map +1 -1
  637. package/es/storybook/StoryBook/style.mjs +2 -0
  638. package/es/storybook/StoryBook/style.mjs.map +1 -1
  639. package/es/style.css +2966 -957
  640. package/es/styles/createGlobalStyle.mjs +1 -1
  641. package/es/styles/index.d.mts +3 -2
  642. package/es/styles/index.mjs +5 -4
  643. package/es/styles/stylex/props.mjs +2 -2
  644. package/es/styles/stylex/props.mjs.map +1 -1
  645. package/es/styles/theme/createLobeToken.d.mts +3 -2
  646. package/es/styles/theme/createLobeToken.mjs.map +1 -1
  647. package/es/styles/theme/customPrimary.d.mts +7 -0
  648. package/es/styles/theme/customPrimary.mjs +66 -0
  649. package/es/styles/theme/customPrimary.mjs.map +1 -0
  650. package/es/styles/theme/scope.d.mts +4 -3
  651. package/es/styles/theme/scope.mjs +30 -8
  652. package/es/styles/theme/scope.mjs.map +1 -1
  653. package/es/styles/theme/themeCss.d.mts +2 -0
  654. package/es/styles/theme/themeCss.mjs +24 -2
  655. package/es/styles/theme/themeCss.mjs.map +1 -1
  656. package/es/styles/theme/token/primary.mjs +6 -2
  657. package/es/styles/theme/token/primary.mjs.map +1 -1
  658. package/es/theme.css +8 -0
  659. package/package.json +6 -1
  660. package/es/DatePicker/CalendarPanel.mjs +0 -189
  661. package/es/DatePicker/CalendarPanel.mjs.map +0 -1
  662. package/es/DatePicker/PickerShell.mjs +0 -43
  663. package/es/DatePicker/PickerShell.mjs.map +0 -1
  664. package/es/DatePicker/calendar.d.mts +0 -4
  665. package/es/DatePicker/calendar.mjs +0 -46
  666. package/es/DatePicker/calendar.mjs.map +0 -1
  667. package/es/Table/FilterMenu.mjs +0 -45
  668. package/es/Table/FilterMenu.mjs.map +0 -1
  669. package/es/Table/TableBody.mjs +0 -67
  670. package/es/Table/TableBody.mjs.map +0 -1
  671. package/es/Table/TableHead.mjs +0 -58
  672. package/es/Table/TableHead.mjs.map +0 -1
  673. package/es/Table/features.mjs +0 -12
  674. package/es/Table/features.mjs.map +0 -1
  675. package/es/Table/fixedOffsets.mjs +0 -29
  676. package/es/Table/fixedOffsets.mjs.map +0 -1
  677. package/es/Table/marker.stylex.mjs +0 -9
  678. package/es/Table/marker.stylex.mjs.map +0 -1
  679. package/es/Table/toColumnDefs.mjs +0 -26
  680. package/es/Table/toColumnDefs.mjs.map +0 -1
  681. package/es/Table/useTableState.mjs +0 -99
  682. package/es/Table/useTableState.mjs.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"HtmlPreview.mjs","names":["Flexbox"],"sources":["../../src/HtmlPreview/HtmlPreview.tsx"],"sourcesContent":["'use client';\n\nimport * as stylex from '@stylexjs/stylex';\nimport clsx from 'clsx';\nimport { Download, Expand } from 'lucide-react';\nimport { memo, type ReactNode, useCallback, useEffect, useMemo, useRef, useState } from 'react';\n\nimport ActionIcon from '@/ActionIcon';\nimport CopyButton from '@/CopyButton';\nimport { Flexbox } from '@/Flex';\nimport { actionsHoverCls, rootClassName, rootStyles } from '@/Highlighter/style';\nimport SyntaxHighlighter from '@/Highlighter/SyntaxHighlighter';\nimport Segmented, { type SegmentedStyles } from '@/Segmented';\nimport Spin from '@/Spin';\nimport { cssVar } from '@/styles/stylex/cssVar.stylex';\nimport { styleProps } from '@/styles/stylex/props';\nimport { stopPropagation } from '@/utils/dom';\nimport { downloadBlob } from '@/utils/downloadBlob';\n\nimport { containsScript, DEFAULT_HEIGHT, isFullHtmlDocument, isHtmlContentClosed } from './const';\nimport HtmlPreviewIframe from './Iframe';\nimport { styles } from './style';\nimport type { HtmlPreviewMode, HtmlPreviewProps } from './type';\n\nconst segmentedStyles: SegmentedStyles = {\n indicator: { borderRadius: cssVar.borderRadiusXS },\n item: {\n borderRadius: cssVar.borderRadiusXS,\n fontSize: 14,\n fontWeight: 400,\n height: 23,\n paddingInline: 7,\n },\n root: { borderRadius: cssVar.borderRadiusSM, gap: 0, padding: 2 },\n};\n\nconst themeBackground = (theme?: 'light' | 'dark') => {\n if (theme === 'dark') return '#1f1f1f';\n if (theme === 'light') return '#ffffff';\n return undefined;\n};\n\nconst downloadHtml = async (content: string, fileName: string) => {\n const blob = new Blob([content], { type: 'text/html;charset=utf-8' });\n const url = URL.createObjectURL(blob);\n try {\n await downloadBlob(url, fileName);\n } finally {\n URL.revokeObjectURL(url);\n }\n};\n\nconst HtmlPreview = memo<HtmlPreviewProps>(\n ({\n actionIconSize,\n actionsRender,\n animated,\n bodyRender,\n children,\n className,\n classNames,\n copyable = true,\n defaultHeight,\n defaultMode = 'preview',\n downloadable = true,\n fileName,\n language = 'html',\n onExpand,\n sandbox,\n shadow,\n streamingMode = 'auto',\n style,\n styles: customStyles,\n theme,\n variant = 'filled',\n // `fullFeatured` / `showLanguage` / `defaultExpand` are accepted for API\n // compatibility with the rest of the Pre family but no longer drive a\n // separate header — the inline toolbar is always rendered.\n fullFeatured: _fullFeatured,\n showLanguage: _showLanguage,\n defaultExpand: _defaultExpand,\n ...rest\n }) => {\n const trimmedChildren = useMemo(() => (children || '').trim(), [children]);\n const isFragment = useMemo(() => !isFullHtmlDocument(trimmedChildren), [trimmedChildren]);\n\n // Per-session tracking. Reset on `animated` edge false → true.\n const [scriptLocked, setScriptLocked] = useState(false);\n const [headClosed, setHeadClosed] = useState(false);\n const [liveCommitted, setLiveCommitted] = useState(false);\n const prevAnimatedRef = useRef(animated);\n const lastCommitRef = useRef(0);\n const pendingTimerRef = useRef<ReturnType<typeof setTimeout> | null>(null);\n const latestContentRef = useRef(trimmedChildren);\n useEffect(() => {\n latestContentRef.current = trimmedChildren;\n }, [trimmedChildren]);\n useEffect(() => {\n if (animated && !prevAnimatedRef.current) {\n setScriptLocked(false);\n setHeadClosed(false);\n setLiveCommitted(false);\n lastCommitRef.current = 0;\n if (pendingTimerRef.current) {\n clearTimeout(pendingTimerRef.current);\n pendingTimerRef.current = null;\n }\n }\n prevAnimatedRef.current = animated;\n }, [animated]);\n\n // Sticky script detection: once a `<script>` appears in this session,\n // auto mode locks into defer.\n useEffect(() => {\n if (animated && !scriptLocked && containsScript(trimmedChildren)) {\n setScriptLocked(true);\n }\n }, [trimmedChildren, animated, scriptLocked]);\n\n // Track whether the head section has closed. Until it does, the iframe\n // would render either nothing or invalid HTML (style tag mid-stream).\n // After `</head>` (or `</style>` as a fallback for documents that skip\n // an explicit head close) we know the visual baseline is locked in.\n useEffect(() => {\n if (animated && !headClosed) {\n const lowered = trimmedChildren.toLowerCase();\n if (lowered.includes('</head>') || lowered.includes('</style>')) {\n setHeadClosed(true);\n }\n }\n }, [trimmedChildren, animated, headClosed]);\n\n // Two-phase streaming commit:\n // Phase 1 (head still streaming) — don't mount iframe at all. There's\n // nothing meaningful to render and styles aren't applied yet.\n // Phase 2 (head closed, body streaming) — commit at most once every\n // ~250ms. Important: this is a TRUE throttle, not a debounce. The\n // pending timer is held in a ref so it survives effect re-runs;\n // when it fires it commits the latest content (via another ref)\n // and clears itself, allowing a fresh schedule. If chunks come in\n // faster than the throttle window (which they do at ~50/sec) we\n // still get a commit every 250ms instead of waiting for streaming\n // to pause.\n // On streaming end → flush immediately, cancel any pending timer.\n const [throttledContent, setThrottledContent] = useState(trimmedChildren);\n useEffect(() => {\n if (!animated) {\n if (pendingTimerRef.current) {\n clearTimeout(pendingTimerRef.current);\n pendingTimerRef.current = null;\n }\n lastCommitRef.current = Date.now();\n setThrottledContent(trimmedChildren);\n return;\n }\n if (!headClosed) return;\n\n const throttleMs = 250;\n const now = Date.now();\n const elapsed = now - lastCommitRef.current;\n\n if (elapsed >= throttleMs) {\n if (pendingTimerRef.current) {\n clearTimeout(pendingTimerRef.current);\n pendingTimerRef.current = null;\n }\n lastCommitRef.current = now;\n setThrottledContent(trimmedChildren);\n return;\n }\n\n // Schedule a future commit, but only if one isn't already pending —\n // every chunk arrival re-runs this effect; we don't want to reset\n // the timer each time (that's debounce, and during continuous\n // streaming it would never fire).\n if (pendingTimerRef.current === null) {\n pendingTimerRef.current = setTimeout(() => {\n lastCommitRef.current = Date.now();\n pendingTimerRef.current = null;\n setThrottledContent(latestContentRef.current);\n }, throttleMs - elapsed);\n }\n }, [trimmedChildren, animated, headClosed]);\n useEffect(\n () => () => {\n if (pendingTimerRef.current) clearTimeout(pendingTimerRef.current);\n },\n [],\n );\n\n // Live-streaming commitment is sticky for the rest of the session. The\n // decision is made the moment the head seals:\n // • `live` → commit unconditionally\n // • `auto` → commit only if no `<script>` has appeared yet (script-\n // bearing docs go down the defer path to avoid running setup() on\n // partial source)\n // • `defer` → never commit; wait for `</html>`\n // Sticky-ness matters for `auto`: if a `<script>` arrives *after* the\n // head has already closed and we've started live-streaming, we keep\n // streaming rather than yanking the rendered content back into a\n // loading state mid-flight. The shell→static swap at end of streaming\n // re-runs the document cleanly anyway.\n useEffect(() => {\n if (!animated || liveCommitted || !headClosed) return;\n if (streamingMode === 'live' || (streamingMode === 'auto' && !scriptLocked)) {\n setLiveCommitted(true);\n }\n }, [animated, headClosed, liveCommitted, scriptLocked, streamingMode]);\n\n // Streaming gate. The iframe can mount in three situations:\n // 1. content is no longer animating\n // 2. `</html>` has arrived\n // 3. live streaming has been committed this session\n const isStable = !animated || isHtmlContentClosed(trimmedChildren) || liveCommitted;\n\n const [mode, setMode] = useState<HtmlPreviewMode>(defaultMode);\n\n // Fragments cannot meaningfully render in preview — force source view.\n // For streaming content that's not yet stable we keep the user's mode\n // choice and substitute a loading placeholder in the body instead, so\n // the toggle UI doesn't flip back and forth as content arrives.\n const effectiveMode: HtmlPreviewMode = isFragment ? 'source' : mode;\n\n const contentRef = useRef(trimmedChildren);\n useEffect(() => {\n contentRef.current = trimmedChildren;\n }, [trimmedChildren]);\n\n // Tail-follow the streaming source visible during Phase 1 — anchor\n // the scroll position to the latest tokens so a slow model's output\n // doesn't sit pinned to the document head while the user waits.\n const loadingSourceRef = useRef<HTMLDivElement | null>(null);\n useEffect(() => {\n if (isStable) return;\n const node = loadingSourceRef.current;\n if (!node) return;\n node.scrollTop = node.scrollHeight;\n }, [trimmedChildren, isStable]);\n\n const getCopyContent = useCallback(() => contentRef.current, []);\n\n const handleDownload = useCallback(() => {\n void downloadHtml(contentRef.current, fileName || 'preview.html');\n }, [fileName]);\n\n const handleExpand = useCallback(() => {\n onExpand?.(contentRef.current);\n }, [onExpand]);\n\n const background = themeBackground(theme);\n\n const sourceBody = useMemo(\n () => (\n <SyntaxHighlighter\n animated={animated}\n className={classNames?.content}\n language={'html'}\n style={{ height: '100%', ...customStyles?.content }}\n variant={variant}\n >\n {trimmedChildren}\n </SyntaxHighlighter>\n ),\n [animated, classNames?.content, customStyles?.content, trimmedChildren, variant],\n );\n\n const iframeBody = useMemo(\n () => (\n <HtmlPreviewIframe\n animated={animated}\n background={background}\n className={classNames?.iframe}\n content={throttledContent}\n defaultHeight={defaultHeight}\n sandbox={sandbox}\n style={customStyles?.iframe}\n />\n ),\n [\n background,\n classNames?.iframe,\n customStyles?.iframe,\n defaultHeight,\n sandbox,\n throttledContent,\n ],\n );\n\n // Shown when the user is on preview mode but the iframe isn't ready\n // yet (Phase 1 of streaming: head still arriving). Holds the eventual\n // iframe height to avoid layout shift on mount.\n //\n // Stream the raw source through `SyntaxHighlighter` at low opacity so\n // the user sees real progress on slow models (a 30-tps DeepSeek\n // pumping a ~5 KB head can otherwise sit on a static spinner for\n // 20+ seconds). A small \"Preparing preview…\" badge keeps the loading\n // state unambiguous. Tail-follow keeps the visible region anchored\n // to the latest tokens — see the `useEffect` below.\n const loadingBody = useMemo(\n () => (\n <div\n {...stylex.props(styles.loadingRoot)}\n style={{ height: defaultHeight ?? DEFAULT_HEIGHT }}\n >\n <div\n ref={loadingSourceRef}\n {...styleProps(styles.loadingSource, 'lobe-html-preview-loading-source')}\n >\n <SyntaxHighlighter animated={animated} language={'html'} variant={'borderless'}>\n {trimmedChildren}\n </SyntaxHighlighter>\n </div>\n <div {...stylex.props(styles.loadingBackdrop)} />\n <div {...stylex.props(styles.loadingBadge)}>\n <Spin size={16} variant=\"network\" />\n <span>Preparing preview…</span>\n </div>\n </div>\n ),\n [animated, defaultHeight, trimmedChildren],\n );\n\n const previewBody = isStable ? iframeBody : loadingBody;\n\n const defaultBody = effectiveMode === 'preview' ? previewBody : sourceBody;\n\n const body = useMemo(() => {\n if (!bodyRender) return defaultBody;\n return bodyRender({\n content: trimmedChildren,\n mode: effectiveMode,\n originalNode: defaultBody,\n });\n }, [bodyRender, defaultBody, effectiveMode, trimmedChildren]);\n\n const segmentOptions = useMemo(\n () => [\n { label: 'Preview', value: 'preview' as const },\n { label: 'Source', value: 'source' as const },\n ],\n [],\n );\n\n const iconSize = actionIconSize || 'small';\n\n const originalActions: ReactNode = (\n <>\n {!isFragment && (\n <Segmented\n options={segmentOptions}\n size={'small'}\n styles={segmentedStyles}\n value={effectiveMode}\n onChange={(v) => setMode(v as HtmlPreviewMode)}\n />\n )}\n {copyable && <CopyButton content={getCopyContent} size={iconSize} />}\n {downloadable && (\n <ActionIcon\n icon={Download}\n size={iconSize}\n title={'Download HTML'}\n onClick={handleDownload}\n />\n )}\n {onExpand && (\n <ActionIcon\n icon={Expand}\n size={iconSize}\n title={'Open full preview'}\n onClick={handleExpand}\n />\n )}\n </>\n );\n\n const actions = actionsRender\n ? actionsRender({\n actionIconSize: iconSize,\n content: trimmedChildren,\n getContent: getCopyContent,\n mode: effectiveMode,\n originalNode: originalActions,\n setMode,\n })\n : originalActions;\n\n return (\n <div\n data-code-type=\"html-preview\"\n data-html-preview-language={language}\n {...rest}\n {...styleProps(rootStyles({ shadow, variant }), rootClassName(false, className), style)}\n >\n <Flexbox\n horizontal\n align={'center'}\n flex={'none'}\n gap={4}\n padding={4}\n onClick={stopPropagation}\n {...styleProps(\n styles.toolbar,\n clsx(actionsHoverCls, classNames?.header),\n customStyles?.header,\n )}\n >\n {actions}\n </Flexbox>\n {body}\n </div>\n );\n },\n);\n\nHtmlPreview.displayName = 'HtmlPreview';\n\nexport default HtmlPreview;\n"],"mappings":"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"}
1
+ {"version":3,"file":"HtmlPreview.mjs","names":["Flexbox","clsx"],"sources":["../../src/HtmlPreview/HtmlPreview.tsx"],"sourcesContent":["'use client';\n\nimport * as stylex from '@stylexjs/stylex';\nimport clsx from 'clsx';\nimport { Download, Expand } from 'lucide-react';\nimport { memo, type ReactNode, useCallback, useEffect, useMemo, useRef, useState } from 'react';\n\nimport ActionIcon from '@/ActionIcon';\nimport CopyButton from '@/CopyButton';\nimport { Flexbox } from '@/Flex';\nimport { actionsHoverCls, rootClassName, rootStyles } from '@/Highlighter/style';\nimport SyntaxHighlighter from '@/Highlighter/SyntaxHighlighter';\nimport Segmented, { type SegmentedStyles } from '@/Segmented';\nimport Spin from '@/Spin';\nimport { cssVar } from '@/styles/stylex/cssVar.stylex';\nimport { styleProps } from '@/styles/stylex/props';\nimport { stopPropagation } from '@/utils/dom';\nimport { downloadBlob } from '@/utils/downloadBlob';\n\nimport { containsScript, DEFAULT_HEIGHT, isFullHtmlDocument, isHtmlContentClosed } from './const';\nimport HtmlPreviewIframe from './Iframe';\nimport { styles } from './style';\nimport type { HtmlPreviewMode, HtmlPreviewProps } from './type';\n\nconst segmentedStyles: SegmentedStyles = {\n indicator: { borderRadius: cssVar.borderRadiusXS },\n item: {\n borderRadius: cssVar.borderRadiusXS,\n fontSize: 14,\n fontWeight: 400,\n height: 23,\n paddingInline: 7,\n },\n root: { borderRadius: cssVar.borderRadiusSM, gap: 0, padding: 2 },\n};\n\nconst themeBackground = (theme?: 'light' | 'dark') => {\n if (theme === 'dark') return '#1f1f1f';\n if (theme === 'light') return '#ffffff';\n return undefined;\n};\n\nconst downloadHtml = async (content: string, fileName: string) => {\n const blob = new Blob([content], { type: 'text/html;charset=utf-8' });\n const url = URL.createObjectURL(blob);\n try {\n await downloadBlob(url, fileName);\n } finally {\n URL.revokeObjectURL(url);\n }\n};\n\nconst HtmlPreview = memo<HtmlPreviewProps>(\n ({\n actionIconSize,\n actionsRender,\n animated,\n bodyRender,\n children,\n className,\n classNames,\n copyable = true,\n defaultHeight,\n defaultMode = 'preview',\n downloadable = true,\n fileName,\n language = 'html',\n onExpand,\n sandbox,\n shadow,\n streamingMode = 'auto',\n style,\n styles: customStyles,\n theme,\n variant = 'filled',\n // `fullFeatured` / `showLanguage` / `defaultExpand` are accepted for API\n // compatibility with the rest of the Pre family but no longer drive a\n // separate header — the inline toolbar is always rendered.\n fullFeatured: _fullFeatured,\n showLanguage: _showLanguage,\n defaultExpand: _defaultExpand,\n ...rest\n }) => {\n const trimmedChildren = useMemo(() => (children || '').trim(), [children]);\n const isFragment = useMemo(() => !isFullHtmlDocument(trimmedChildren), [trimmedChildren]);\n\n // Per-session tracking. Reset on `animated` edge false → true.\n const [scriptLocked, setScriptLocked] = useState(false);\n const [headClosed, setHeadClosed] = useState(false);\n const [liveCommitted, setLiveCommitted] = useState(false);\n const prevAnimatedRef = useRef(animated);\n const lastCommitRef = useRef(0);\n const pendingTimerRef = useRef<ReturnType<typeof setTimeout> | null>(null);\n const latestContentRef = useRef(trimmedChildren);\n useEffect(() => {\n latestContentRef.current = trimmedChildren;\n }, [trimmedChildren]);\n useEffect(() => {\n if (animated && !prevAnimatedRef.current) {\n setScriptLocked(false);\n setHeadClosed(false);\n setLiveCommitted(false);\n lastCommitRef.current = 0;\n if (pendingTimerRef.current) {\n clearTimeout(pendingTimerRef.current);\n pendingTimerRef.current = null;\n }\n }\n prevAnimatedRef.current = animated;\n }, [animated]);\n\n // Sticky script detection: once a `<script>` appears in this session,\n // auto mode locks into defer.\n useEffect(() => {\n if (animated && !scriptLocked && containsScript(trimmedChildren)) {\n setScriptLocked(true);\n }\n }, [trimmedChildren, animated, scriptLocked]);\n\n // Track whether the head section has closed. Until it does, the iframe\n // would render either nothing or invalid HTML (style tag mid-stream).\n // After `</head>` (or `</style>` as a fallback for documents that skip\n // an explicit head close) we know the visual baseline is locked in.\n useEffect(() => {\n if (animated && !headClosed) {\n const lowered = trimmedChildren.toLowerCase();\n if (lowered.includes('</head>') || lowered.includes('</style>')) {\n setHeadClosed(true);\n }\n }\n }, [trimmedChildren, animated, headClosed]);\n\n // Two-phase streaming commit:\n // Phase 1 (head still streaming) — don't mount iframe at all. There's\n // nothing meaningful to render and styles aren't applied yet.\n // Phase 2 (head closed, body streaming) — commit at most once every\n // ~250ms. Important: this is a TRUE throttle, not a debounce. The\n // pending timer is held in a ref so it survives effect re-runs;\n // when it fires it commits the latest content (via another ref)\n // and clears itself, allowing a fresh schedule. If chunks come in\n // faster than the throttle window (which they do at ~50/sec) we\n // still get a commit every 250ms instead of waiting for streaming\n // to pause.\n // On streaming end → flush immediately, cancel any pending timer.\n const [throttledContent, setThrottledContent] = useState(trimmedChildren);\n useEffect(() => {\n if (!animated) {\n if (pendingTimerRef.current) {\n clearTimeout(pendingTimerRef.current);\n pendingTimerRef.current = null;\n }\n lastCommitRef.current = Date.now();\n setThrottledContent(trimmedChildren);\n return;\n }\n if (!headClosed) return;\n\n const throttleMs = 250;\n const now = Date.now();\n const elapsed = now - lastCommitRef.current;\n\n if (elapsed >= throttleMs) {\n if (pendingTimerRef.current) {\n clearTimeout(pendingTimerRef.current);\n pendingTimerRef.current = null;\n }\n lastCommitRef.current = now;\n setThrottledContent(trimmedChildren);\n return;\n }\n\n // Schedule a future commit, but only if one isn't already pending —\n // every chunk arrival re-runs this effect; we don't want to reset\n // the timer each time (that's debounce, and during continuous\n // streaming it would never fire).\n if (pendingTimerRef.current === null) {\n pendingTimerRef.current = setTimeout(() => {\n lastCommitRef.current = Date.now();\n pendingTimerRef.current = null;\n setThrottledContent(latestContentRef.current);\n }, throttleMs - elapsed);\n }\n }, [trimmedChildren, animated, headClosed]);\n useEffect(\n () => () => {\n if (pendingTimerRef.current) clearTimeout(pendingTimerRef.current);\n },\n [],\n );\n\n // Live-streaming commitment is sticky for the rest of the session. The\n // decision is made the moment the head seals:\n // • `live` → commit unconditionally\n // • `auto` → commit only if no `<script>` has appeared yet (script-\n // bearing docs go down the defer path to avoid running setup() on\n // partial source)\n // • `defer` → never commit; wait for `</html>`\n // Sticky-ness matters for `auto`: if a `<script>` arrives *after* the\n // head has already closed and we've started live-streaming, we keep\n // streaming rather than yanking the rendered content back into a\n // loading state mid-flight. The shell→static swap at end of streaming\n // re-runs the document cleanly anyway.\n useEffect(() => {\n if (!animated || liveCommitted || !headClosed) return;\n if (streamingMode === 'live' || (streamingMode === 'auto' && !scriptLocked)) {\n setLiveCommitted(true);\n }\n }, [animated, headClosed, liveCommitted, scriptLocked, streamingMode]);\n\n // Streaming gate. The iframe can mount in three situations:\n // 1. content is no longer animating\n // 2. `</html>` has arrived\n // 3. live streaming has been committed this session\n const isStable = !animated || isHtmlContentClosed(trimmedChildren) || liveCommitted;\n\n const [mode, setMode] = useState<HtmlPreviewMode>(defaultMode);\n\n // Fragments cannot meaningfully render in preview — force source view.\n // For streaming content that's not yet stable we keep the user's mode\n // choice and substitute a loading placeholder in the body instead, so\n // the toggle UI doesn't flip back and forth as content arrives.\n const effectiveMode: HtmlPreviewMode = isFragment ? 'source' : mode;\n\n const contentRef = useRef(trimmedChildren);\n useEffect(() => {\n contentRef.current = trimmedChildren;\n }, [trimmedChildren]);\n\n // Tail-follow the streaming source visible during Phase 1 — anchor\n // the scroll position to the latest tokens so a slow model's output\n // doesn't sit pinned to the document head while the user waits.\n const loadingSourceRef = useRef<HTMLDivElement | null>(null);\n useEffect(() => {\n if (isStable) return;\n const node = loadingSourceRef.current;\n if (!node) return;\n node.scrollTop = node.scrollHeight;\n }, [trimmedChildren, isStable]);\n\n const getCopyContent = useCallback(() => contentRef.current, []);\n\n const handleDownload = useCallback(() => {\n void downloadHtml(contentRef.current, fileName || 'preview.html');\n }, [fileName]);\n\n const handleExpand = useCallback(() => {\n onExpand?.(contentRef.current);\n }, [onExpand]);\n\n const background = themeBackground(theme);\n\n const sourceBody = useMemo(\n () => (\n <SyntaxHighlighter\n animated={animated}\n className={classNames?.content}\n language={'html'}\n style={{ height: '100%', ...customStyles?.content }}\n variant={variant}\n >\n {trimmedChildren}\n </SyntaxHighlighter>\n ),\n [animated, classNames?.content, customStyles?.content, trimmedChildren, variant],\n );\n\n const iframeBody = useMemo(\n () => (\n <HtmlPreviewIframe\n animated={animated}\n background={background}\n className={classNames?.iframe}\n content={throttledContent}\n defaultHeight={defaultHeight}\n sandbox={sandbox}\n style={customStyles?.iframe}\n />\n ),\n [\n background,\n classNames?.iframe,\n customStyles?.iframe,\n defaultHeight,\n sandbox,\n throttledContent,\n ],\n );\n\n // Shown when the user is on preview mode but the iframe isn't ready\n // yet (Phase 1 of streaming: head still arriving). Holds the eventual\n // iframe height to avoid layout shift on mount.\n //\n // Stream the raw source through `SyntaxHighlighter` at low opacity so\n // the user sees real progress on slow models (a 30-tps DeepSeek\n // pumping a ~5 KB head can otherwise sit on a static spinner for\n // 20+ seconds). A small \"Preparing preview…\" badge keeps the loading\n // state unambiguous. Tail-follow keeps the visible region anchored\n // to the latest tokens — see the `useEffect` below.\n const loadingBody = useMemo(\n () => (\n <div\n {...stylex.props(styles.loadingRoot)}\n style={{ height: defaultHeight ?? DEFAULT_HEIGHT }}\n >\n <div\n ref={loadingSourceRef}\n {...styleProps(styles.loadingSource, 'lobe-html-preview-loading-source')}\n >\n <SyntaxHighlighter animated={animated} language={'html'} variant={'borderless'}>\n {trimmedChildren}\n </SyntaxHighlighter>\n </div>\n <div {...stylex.props(styles.loadingBackdrop)} />\n <div {...stylex.props(styles.loadingBadge)}>\n <Spin size={16} variant=\"network\" />\n <span>Preparing preview…</span>\n </div>\n </div>\n ),\n [animated, defaultHeight, trimmedChildren],\n );\n\n const previewBody = isStable ? iframeBody : loadingBody;\n\n const defaultBody = effectiveMode === 'preview' ? previewBody : sourceBody;\n\n const body = useMemo(() => {\n if (!bodyRender) return defaultBody;\n return bodyRender({\n content: trimmedChildren,\n mode: effectiveMode,\n originalNode: defaultBody,\n });\n }, [bodyRender, defaultBody, effectiveMode, trimmedChildren]);\n\n const segmentOptions = useMemo(\n () => [\n { label: 'Preview', value: 'preview' as const },\n { label: 'Source', value: 'source' as const },\n ],\n [],\n );\n\n const iconSize = actionIconSize || 'small';\n\n const originalActions: ReactNode = (\n <>\n {!isFragment && (\n <Segmented\n options={segmentOptions}\n size={'small'}\n styles={segmentedStyles}\n value={effectiveMode}\n onChange={(v) => setMode(v as HtmlPreviewMode)}\n />\n )}\n {copyable && <CopyButton content={getCopyContent} size={iconSize} />}\n {downloadable && (\n <ActionIcon\n icon={Download}\n size={iconSize}\n title={'Download HTML'}\n onClick={handleDownload}\n />\n )}\n {onExpand && (\n <ActionIcon\n icon={Expand}\n size={iconSize}\n title={'Open full preview'}\n onClick={handleExpand}\n />\n )}\n </>\n );\n\n const actions = actionsRender\n ? actionsRender({\n actionIconSize: iconSize,\n content: trimmedChildren,\n getContent: getCopyContent,\n mode: effectiveMode,\n originalNode: originalActions,\n setMode,\n })\n : originalActions;\n\n return (\n <div\n data-code-type=\"html-preview\"\n data-html-preview-language={language}\n {...rest}\n {...styleProps(rootStyles({ shadow, variant }), rootClassName(false, className), style)}\n >\n <Flexbox\n horizontal\n align={'center'}\n flex={'none'}\n gap={4}\n padding={4}\n onClick={stopPropagation}\n {...styleProps(\n styles.toolbar,\n clsx(actionsHoverCls, classNames?.header),\n customStyles?.header,\n )}\n >\n {actions}\n </Flexbox>\n {body}\n </div>\n );\n },\n);\n\nHtmlPreview.displayName = 'HtmlPreview';\n\nexport default HtmlPreview;\n"],"mappings":"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"}
package/es/Icon/Icon.mjs CHANGED
@@ -5,7 +5,7 @@ import { calcSize } from "./components/utils.mjs";
5
5
  import { styles } from "./style.mjs";
6
6
  import { isValidElement, memo, useMemo } from "react";
7
7
  import { jsx } from "react/jsx-runtime";
8
- import clsx from "clsx";
8
+ import clsx$1 from "clsx";
9
9
  //#region src/Icon/Icon.tsx
10
10
  const Icon = memo(({ icon, size: iconSize, color, fill = "transparent", className, focusable, spin, fillRule, fillOpacity, ref, ...rest }) => {
11
11
  const { color: colorConfig, fill: fillConfig, fillOpacity: fillOpacityConfig, fillRule: fillRuleConfig, focusable: focusableConfig, className: classNameConfig, size: sizeConfig, ...restConfig } = useIconContext();
@@ -13,7 +13,7 @@ const Icon = memo(({ icon, size: iconSize, color, fill = "transparent", classNam
13
13
  const SvgIcon = icon;
14
14
  return /* @__PURE__ */ jsx("span", {
15
15
  role: "img",
16
- className: styleProps([styles.root, spin && styles.spin], clsx("anticon", classNameConfig, className)).className,
16
+ className: styleProps([styles.root, spin && styles.spin], clsx$1("anticon", classNameConfig, className)).className,
17
17
  ...restConfig,
18
18
  ...rest,
19
19
  children: icon && (isValidElement(icon) ? icon : /* @__PURE__ */ jsx(SvgIcon, {
@@ -1 +1 @@
1
- {"version":3,"file":"Icon.mjs","names":[],"sources":["../../src/Icon/Icon.tsx"],"sourcesContent":["'use client';\n\nimport clsx from 'clsx';\nimport type { LucideIcon } from 'lucide-react';\nimport { isValidElement, memo, useMemo } from 'react';\n\nimport { styleProps } from '@/styles/stylex/props';\n\nimport { useIconContext } from './components/IconProvider';\nimport { calcSize } from './components/utils';\nimport { styles } from './style';\nimport type { IconProps } from './type';\n\nconst Icon = memo<IconProps>(\n ({\n icon,\n size: iconSize,\n color,\n fill = 'transparent',\n className,\n focusable,\n spin,\n fillRule,\n fillOpacity,\n ref,\n ...rest\n }) => {\n const {\n color: colorConfig,\n fill: fillConfig,\n fillOpacity: fillOpacityConfig,\n fillRule: fillRuleConfig,\n focusable: focusableConfig,\n className: classNameConfig,\n size: sizeConfig,\n ...restConfig\n } = useIconContext();\n\n const { size, strokeWidth } = useMemo(\n () => calcSize(iconSize || sizeConfig),\n [iconSize, sizeConfig],\n );\n\n const SvgIcon = icon as LucideIcon;\n\n return (\n <span\n role=\"img\"\n className={\n styleProps(\n [styles.root, spin && styles.spin],\n clsx('anticon', classNameConfig, className),\n ).className\n }\n {...restConfig}\n {...rest}\n >\n {icon &&\n (isValidElement(icon) ? (\n icon\n ) : (\n <SvgIcon\n color={color || colorConfig}\n fill={fill || fillConfig}\n fillOpacity={fillOpacity || fillOpacityConfig}\n fillRule={fillRule || fillRuleConfig}\n focusable={focusable || focusableConfig}\n height={size}\n ref={ref}\n size={size}\n strokeWidth={strokeWidth}\n width={size}\n />\n ))}\n </span>\n );\n },\n);\n\nIcon.displayName = 'Icon';\n\nexport default Icon;\n"],"mappings":";;;;;;;;;AAaA,MAAM,OAAO,MACV,EACC,MACA,MAAM,UACN,OACA,OAAO,eACP,WACA,WACA,MACA,UACA,aACA,KACA,GAAG,WACC;CACJ,MAAM,EACJ,OAAO,aACP,MAAM,YACN,aAAa,mBACb,UAAU,gBACV,WAAW,iBACX,WAAW,iBACX,MAAM,YACN,GAAG,eACD,eAAe;CAEnB,MAAM,EAAE,MAAM,gBAAgB,cACtB,SAAS,YAAY,UAAU,GACrC,CAAC,UAAU,UAAU,CACvB;CAEA,MAAM,UAAU;CAEhB,OACE,oBAAC,QAAD;EACE,MAAK;EACL,WACE,WACE,CAAC,OAAO,MAAM,QAAQ,OAAO,IAAI,GACjC,KAAK,WAAW,iBAAiB,SAAS,CAC5C,CAAC,CAAC;EAEJ,GAAI;EACJ,GAAI;EAEH,UAAA,SACE,eAAe,IAAI,IAClB,OAEA,oBAAC,SAAD;GACE,OAAO,SAAS;GAChB,MAAM,QAAQ;GACd,aAAa,eAAe;GAC5B,UAAU,YAAY;GACtB,WAAW,aAAa;GACxB,QAAQ;GACH;GACC;GACO;GACb,OAAO;EACR,CAAA;CAED,CAAA;AAEV,CACF;AAEA,KAAK,cAAc"}
1
+ {"version":3,"file":"Icon.mjs","names":["clsx"],"sources":["../../src/Icon/Icon.tsx"],"sourcesContent":["'use client';\n\nimport clsx from 'clsx';\nimport type { LucideIcon } from 'lucide-react';\nimport { isValidElement, memo, useMemo } from 'react';\n\nimport { styleProps } from '@/styles/stylex/props';\n\nimport { useIconContext } from './components/IconProvider';\nimport { calcSize } from './components/utils';\nimport { styles } from './style';\nimport type { IconProps } from './type';\n\nconst Icon = memo<IconProps>(\n ({\n icon,\n size: iconSize,\n color,\n fill = 'transparent',\n className,\n focusable,\n spin,\n fillRule,\n fillOpacity,\n ref,\n ...rest\n }) => {\n const {\n color: colorConfig,\n fill: fillConfig,\n fillOpacity: fillOpacityConfig,\n fillRule: fillRuleConfig,\n focusable: focusableConfig,\n className: classNameConfig,\n size: sizeConfig,\n ...restConfig\n } = useIconContext();\n\n const { size, strokeWidth } = useMemo(\n () => calcSize(iconSize || sizeConfig),\n [iconSize, sizeConfig],\n );\n\n const SvgIcon = icon as LucideIcon;\n\n return (\n <span\n role=\"img\"\n className={\n styleProps(\n [styles.root, spin && styles.spin],\n clsx('anticon', classNameConfig, className),\n ).className\n }\n {...restConfig}\n {...rest}\n >\n {icon &&\n (isValidElement(icon) ? (\n icon\n ) : (\n <SvgIcon\n color={color || colorConfig}\n fill={fill || fillConfig}\n fillOpacity={fillOpacity || fillOpacityConfig}\n fillRule={fillRule || fillRuleConfig}\n focusable={focusable || focusableConfig}\n height={size}\n ref={ref}\n size={size}\n strokeWidth={strokeWidth}\n width={size}\n />\n ))}\n </span>\n );\n },\n);\n\nIcon.displayName = 'Icon';\n\nexport default Icon;\n"],"mappings":";;;;;;;;;AAaA,MAAM,OAAO,MACV,EACC,MACA,MAAM,UACN,OACA,OAAO,eACP,WACA,WACA,MACA,UACA,aACA,KACA,GAAG,WACC;CACJ,MAAM,EACJ,OAAO,aACP,MAAM,YACN,aAAa,mBACb,UAAU,gBACV,WAAW,iBACX,WAAW,iBACX,MAAM,YACN,GAAG,eACD,eAAe;CAEnB,MAAM,EAAE,MAAM,gBAAgB,cACtB,SAAS,YAAY,UAAU,GACrC,CAAC,UAAU,UAAU,CACvB;CAEA,MAAM,UAAU;CAEhB,OACE,oBAAC,QAAD;EACE,MAAK;EACL,WACE,WACE,CAAC,OAAO,MAAM,QAAQ,OAAO,IAAI,GACjCA,OAAK,WAAW,iBAAiB,SAAS,CAC5C,CAAC,CAAC;EAEJ,GAAI;EACJ,GAAI;EAEH,UAAA,SACE,eAAe,IAAI,IAClB,OAEA,oBAAC,SAAD;GACE,OAAO,SAAS;GAChB,MAAM,QAAQ;GACd,aAAa,eAAe;GAC5B,UAAU,YAAY;GACtB,WAAW,aAAa;GACxB,QAAQ;GACH;GACC;GACO;GACb,OAAO;EACR,CAAA;CAED,CAAA;AAEV,CACF;AAEA,KAAK,cAAc"}
@@ -7,7 +7,7 @@ import { listItemMarker } from "./marker.stylex.mjs";
7
7
  import { styles } from "./style.mjs";
8
8
  import { memo } from "react";
9
9
  import { Fragment as Fragment$1, jsx, jsxs } from "react/jsx-runtime";
10
- import clsx from "clsx";
10
+ import clsx$1 from "clsx";
11
11
  import * as stylex from "@stylexjs/stylex";
12
12
  //#region src/List/ListRow.tsx
13
13
  const ListRow = memo(({ active, classNames, compact, item, onSelect, styles: customStyles, xstyle }) => {
@@ -27,7 +27,7 @@ const ListRow = memo(({ active, classNames, compact, item, onSelect, styles: cus
27
27
  danger && styles.danger,
28
28
  disabled && styles.disabled,
29
29
  xstyle?.(item, active)
30
- ], clsx(classNames?.item, item.className)).className;
30
+ ], clsx$1(classNames?.item, item.className)).className;
31
31
  const rowStyle = {
32
32
  ...customStyles?.item,
33
33
  ...item.style
@@ -40,7 +40,7 @@ const ListRow = memo(({ active, classNames, compact, item, onSelect, styles: cus
40
40
  /* @__PURE__ */ jsxs("span", {
41
41
  ...stylex.props(styles.body),
42
42
  children: [/* @__PURE__ */ jsx("span", {
43
- ...styleProps(styles.label, clsx("lobe-list-label", classNames?.label), customStyles?.label),
43
+ ...styleProps(styles.label, clsx$1("lobe-list-label", classNames?.label), customStyles?.label),
44
44
  children: label
45
45
  }), description != null && /* @__PURE__ */ jsx("span", {
46
46
  ...styleProps(styles.description, classNames?.description, customStyles?.description),
@@ -1 +1 @@
1
- {"version":3,"file":"ListRow.mjs","names":[],"sources":["../../src/List/ListRow.tsx"],"sourcesContent":["'use client';\n\nimport './style.css';\n\nimport * as stylex from '@stylexjs/stylex';\nimport clsx from 'clsx';\nimport { memo, type MouseEvent } from 'react';\n\nimport A from '@/A';\nimport Icon from '@/Icon';\nimport { focusRing } from '@/styles/stylex/focusRing';\nimport { styleProps } from '@/styles/stylex/props';\n\nimport { listItemMarker } from './marker.stylex';\nimport { styles } from './style';\nimport type { ListItemType, ListProps } from './type';\n\nexport type ListRowXstyle = (\n item: ListItemType,\n active: boolean,\n) => Parameters<typeof styleProps>[0];\n\ninterface ListRowProps {\n active: boolean;\n classNames?: ListProps['classNames'];\n compact: boolean;\n item: ListItemType;\n onSelect: (item: ListItemType, event: MouseEvent<HTMLElement>) => void;\n styles?: ListProps['styles'];\n xstyle?: ListRowXstyle;\n}\n\nconst ListRow = memo<ListRowProps>(\n ({ active, classNames, compact, item, onSelect, styles: customStyles, xstyle }) => {\n const { actions, avatar, danger, description, disabled, extra, href, icon, label, showAction } =\n item;\n\n const handleClick = (event: MouseEvent<HTMLElement>) => {\n if (disabled) {\n event.preventDefault();\n return;\n }\n onSelect(item, event);\n };\n\n const rowClassName = styleProps(\n [\n focusRing.info,\n styles.row,\n compact && styles.compactRow,\n active && styles.active,\n danger && styles.danger,\n disabled && styles.disabled,\n xstyle?.(item, active),\n ],\n clsx(classNames?.item, item.className),\n ).className;\n const rowStyle = { ...customStyles?.item, ...item.style };\n\n const content = (\n <>\n {avatar ?? (icon ? <Icon icon={icon} size={16} /> : null)}\n <span {...stylex.props(styles.body)}>\n <span\n {...styleProps(\n styles.label,\n clsx('lobe-list-label', classNames?.label),\n customStyles?.label,\n )}\n >\n {label}\n </span>\n {description != null && (\n <span\n {...styleProps(\n styles.description,\n classNames?.description,\n customStyles?.description,\n )}\n >\n {description}\n </span>\n )}\n </span>\n {extra != null && (\n <span {...styleProps(styles.extra, classNames?.extra, customStyles?.extra)}>{extra}</span>\n )}\n </>\n );\n\n return (\n <li {...stylex.props(styles.item, listItemMarker)}>\n {href && !disabled ? (\n <A\n aria-current={active ? 'page' : undefined}\n className={rowClassName}\n href={href}\n style={rowStyle}\n onClick={handleClick}\n >\n {content}\n </A>\n ) : (\n <button\n aria-current={active ? 'true' : undefined}\n aria-disabled={disabled || undefined}\n className={rowClassName}\n style={rowStyle}\n type=\"button\"\n onClick={handleClick}\n >\n {content}\n </button>\n )}\n {actions != null && (\n <span\n {...styleProps(\n [styles.actions, showAction && styles.showAction],\n classNames?.actions,\n customStyles?.actions,\n )}\n >\n {actions}\n </span>\n )}\n </li>\n );\n },\n);\n\nListRow.displayName = 'ListRow';\n\nexport default ListRow;\n"],"mappings":";;;;;;;;;;;;AAuBA,MAAM,UAAU,MAAoB,EAClC,QACA,YACA,SACA,MACA,UACA,QAAQ,cACR,aACI;CACJ,MAAM,EACJ,SACA,QACA,QACA,aACA,UACA,OACA,MACA,MACA,OACA,eACE;CACJ,MAAM,eAAe,UAAmC;EACtD,IAAI,UAAU;GACZ,MAAM,eAAe;GACrB;EACF;EACA,SAAS,MAAM,KAAK;CACtB;CACA,MAAM,eAAe,WAAW;EAAC,UAAU;EAAM,OAAO;EAAK,WAAW,OAAO;EAAY,UAAU,OAAO;EAAQ,UAAU,OAAO;EAAQ,YAAY,OAAO;EAAU,SAAS,MAAM,MAAM;CAAC,GAAG,KAAK,YAAY,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC;CAC3O,MAAM,WAAW;EACf,GAAG,cAAc;EACjB,GAAG,KAAK;CACV;CACA,MAAM,UAAU,qBAAA,YAAA,EAAA,UAAA;EACT,WAAW,OAAO,oBAAC,MAAD;GAAY;GAAM,MAAM;EAAK,CAAA,IAAI;EACpD,qBAAC,QAAD;GAAM,GAAI,OAAO,MAAM,OAAO,IAAI;GAAlC,UAAA,CACE,oBAAC,QAAD;IAAM,GAAI,WAAW,OAAO,OAAO,KAAK,mBAAmB,YAAY,KAAK,GAAG,cAAc,KAAK;IAC/F,UAAA;GACG,CAAA,GACL,eAAe,QAAQ,oBAAC,QAAD;IAAM,GAAI,WAAW,OAAO,aAAa,YAAY,aAAa,cAAc,WAAW;IAC9G,UAAA;GACG,CAAA,CACJ;;EACL,SAAS,QAAQ,oBAAC,QAAD;GAAM,GAAI,WAAW,OAAO,OAAO,YAAY,OAAO,cAAc,KAAK;GAAI,UAAA;EAAY,CAAA;CAC3G,EAAA,CAAA;CACN,OAAO,qBAAC,MAAD;EAAI,GAAI,OAAO,MAAM,OAAO,MAAM,cAAc;EAAhD,UAAA,CACA,QAAQ,CAAC,WAAW,oBAAC,GAAD;GAAG,gBAAc,SAAS,SAAS,KAAA;GAAW,WAAW;GAAoB;GAAM,OAAO;GAAU,SAAS;GAC7H,UAAA;EACA,CAAA,IAAI,oBAAC,UAAD;GAAQ,gBAAc,SAAS,SAAS,KAAA;GAAW,iBAAe,YAAY,KAAA;GAAW,WAAW;GAAc,OAAO;GAAU,MAAK;GAAS,SAAS;GAC9J,UAAA;EACK,CAAA,GACT,WAAW,QAAQ,oBAAC,QAAD;GAAM,GAAI,WAAW,CAAC,OAAO,SAAS,cAAc,OAAO,UAAU,GAAG,YAAY,SAAS,cAAc,OAAO;GACjI,UAAA;EACG,CAAA,CACN;;AACV,CAAC;AACD,QAAQ,cAAc"}
1
+ {"version":3,"file":"ListRow.mjs","names":["clsx"],"sources":["../../src/List/ListRow.tsx"],"sourcesContent":["'use client';\n\nimport './style.css';\n\nimport * as stylex from '@stylexjs/stylex';\nimport clsx from 'clsx';\nimport { memo, type MouseEvent } from 'react';\n\nimport A from '@/A';\nimport Icon from '@/Icon';\nimport { focusRing } from '@/styles/stylex/focusRing';\nimport { styleProps } from '@/styles/stylex/props';\n\nimport { listItemMarker } from './marker.stylex';\nimport { styles } from './style';\nimport type { ListItemType, ListProps } from './type';\n\nexport type ListRowXstyle = (\n item: ListItemType,\n active: boolean,\n) => Parameters<typeof styleProps>[0];\n\ninterface ListRowProps {\n active: boolean;\n classNames?: ListProps['classNames'];\n compact: boolean;\n item: ListItemType;\n onSelect: (item: ListItemType, event: MouseEvent<HTMLElement>) => void;\n styles?: ListProps['styles'];\n xstyle?: ListRowXstyle;\n}\n\nconst ListRow = memo<ListRowProps>(\n ({ active, classNames, compact, item, onSelect, styles: customStyles, xstyle }) => {\n const { actions, avatar, danger, description, disabled, extra, href, icon, label, showAction } =\n item;\n\n const handleClick = (event: MouseEvent<HTMLElement>) => {\n if (disabled) {\n event.preventDefault();\n return;\n }\n onSelect(item, event);\n };\n\n const rowClassName = styleProps(\n [\n focusRing.info,\n styles.row,\n compact && styles.compactRow,\n active && styles.active,\n danger && styles.danger,\n disabled && styles.disabled,\n xstyle?.(item, active),\n ],\n clsx(classNames?.item, item.className),\n ).className;\n const rowStyle = { ...customStyles?.item, ...item.style };\n\n const content = (\n <>\n {avatar ?? (icon ? <Icon icon={icon} size={16} /> : null)}\n <span {...stylex.props(styles.body)}>\n <span\n {...styleProps(\n styles.label,\n clsx('lobe-list-label', classNames?.label),\n customStyles?.label,\n )}\n >\n {label}\n </span>\n {description != null && (\n <span\n {...styleProps(\n styles.description,\n classNames?.description,\n customStyles?.description,\n )}\n >\n {description}\n </span>\n )}\n </span>\n {extra != null && (\n <span {...styleProps(styles.extra, classNames?.extra, customStyles?.extra)}>{extra}</span>\n )}\n </>\n );\n\n return (\n <li {...stylex.props(styles.item, listItemMarker)}>\n {href && !disabled ? (\n <A\n aria-current={active ? 'page' : undefined}\n className={rowClassName}\n href={href}\n style={rowStyle}\n onClick={handleClick}\n >\n {content}\n </A>\n ) : (\n <button\n aria-current={active ? 'true' : undefined}\n aria-disabled={disabled || undefined}\n className={rowClassName}\n style={rowStyle}\n type=\"button\"\n onClick={handleClick}\n >\n {content}\n </button>\n )}\n {actions != null && (\n <span\n {...styleProps(\n [styles.actions, showAction && styles.showAction],\n classNames?.actions,\n customStyles?.actions,\n )}\n >\n {actions}\n </span>\n )}\n </li>\n );\n },\n);\n\nListRow.displayName = 'ListRow';\n\nexport default ListRow;\n"],"mappings":";;;;;;;;;;;;AAuBA,MAAM,UAAU,MAAoB,EAClC,QACA,YACA,SACA,MACA,UACA,QAAQ,cACR,aACI;CACJ,MAAM,EACJ,SACA,QACA,QACA,aACA,UACA,OACA,MACA,MACA,OACA,eACE;CACJ,MAAM,eAAe,UAAmC;EACtD,IAAI,UAAU;GACZ,MAAM,eAAe;GACrB;EACF;EACA,SAAS,MAAM,KAAK;CACtB;CACA,MAAM,eAAe,WAAW;EAAC,UAAU;EAAM,OAAO;EAAK,WAAW,OAAO;EAAY,UAAU,OAAO;EAAQ,UAAU,OAAO;EAAQ,YAAY,OAAO;EAAU,SAAS,MAAM,MAAM;CAAC,GAAGA,OAAK,YAAY,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC;CAC3O,MAAM,WAAW;EACf,GAAG,cAAc;EACjB,GAAG,KAAK;CACV;CACA,MAAM,UAAU,qBAAA,YAAA,EAAA,UAAA;EACT,WAAW,OAAO,oBAAC,MAAD;GAAY;GAAM,MAAM;EAAK,CAAA,IAAI;EACpD,qBAAC,QAAD;GAAM,GAAI,OAAO,MAAM,OAAO,IAAI;GAAlC,UAAA,CACE,oBAAC,QAAD;IAAM,GAAI,WAAW,OAAO,OAAOA,OAAK,mBAAmB,YAAY,KAAK,GAAG,cAAc,KAAK;IAC/F,UAAA;GACG,CAAA,GACL,eAAe,QAAQ,oBAAC,QAAD;IAAM,GAAI,WAAW,OAAO,aAAa,YAAY,aAAa,cAAc,WAAW;IAC9G,UAAA;GACG,CAAA,CACJ;;EACL,SAAS,QAAQ,oBAAC,QAAD;GAAM,GAAI,WAAW,OAAO,OAAO,YAAY,OAAO,cAAc,KAAK;GAAI,UAAA;EAAY,CAAA;CAC3G,EAAA,CAAA;CACN,OAAO,qBAAC,MAAD;EAAI,GAAI,OAAO,MAAM,OAAO,MAAM,cAAc;EAAhD,UAAA,CACA,QAAQ,CAAC,WAAW,oBAAC,GAAD;GAAG,gBAAc,SAAS,SAAS,KAAA;GAAW,WAAW;GAAoB;GAAM,OAAO;GAAU,SAAS;GAC7H,UAAA;EACA,CAAA,IAAI,oBAAC,UAAD;GAAQ,gBAAc,SAAS,SAAS,KAAA;GAAW,iBAAe,YAAY,KAAA;GAAW,WAAW;GAAc,OAAO;GAAU,MAAK;GAAS,SAAS;GAC9J,UAAA;EACK,CAAA,GACT,WAAW,QAAQ,oBAAC,QAAD;GAAM,GAAI,WAAW,CAAC,OAAO,SAAS,cAAc,OAAO,UAAU,GAAG,YAAY,SAAS,cAAc,OAAO;GACjI,UAAA;EACG,CAAA,CACN;;AACV,CAAC;AACD,QAAQ,cAAc"}
@@ -9,7 +9,7 @@ import { StreamdownRender } from "./SyntaxMarkdown/StreamdownRender.mjs";
9
9
  import { TypographyImpl } from "./Typography.mjs";
10
10
  import { memo, useCallback } from "react";
11
11
  import { jsx } from "react/jsx-runtime";
12
- import clsx from "clsx";
12
+ import clsx$1 from "clsx";
13
13
  //#region src/Markdown/Markdown.tsx
14
14
  const Markdown = memo((props) => {
15
15
  const { ref, children = "", className, style, fullFeaturedCodeBlock, onDoubleClick, animated, enableHtmlPreview = false, enableLatex = true, enableMermaid = true, enableImageGallery, enableCustomFootnotes, enableGithubAlert, enableStream = true, componentProps, rehypePluginsAhead, allowHtml, borderRadius, fontSize = props.variant === "chat" ? 14 : void 0, headerMultiple = props.variant === "chat" ? .25 : void 0, marginMultiple = props.variant === "chat" ? 1 : void 0, variant = "default", reactMarkdownProps, lineHeight = props.variant === "chat" ? 1.6 : void 0, rehypePlugins, remarkPlugins, remarkPluginsAhead, components = {}, customRender, showFootnotes = true, streamAnimationGranularity, streamSmoothingPreset, citations, ...rest } = props;
@@ -35,7 +35,7 @@ const Markdown = memo((props) => {
35
35
  ref,
36
36
  style,
37
37
  xstyle: rootStyles.root,
38
- className: clsx(variant === "chat" && styles.chat, enableLatex && styles.latex, styles.gfm, className),
38
+ className: clsx$1(variant === "chat" && styles.chat, enableLatex && styles.latex, styles.gfm, className),
39
39
  onDoubleClick,
40
40
  ...rest,
41
41
  children: /* @__PURE__ */ jsx(MarkdownProvider, {
@@ -1 +1 @@
1
- {"version":3,"file":"Markdown.mjs","names":["MarkdownRender"],"sources":["../../src/Markdown/Markdown.tsx"],"sourcesContent":["'use client';\n\nimport clsx from 'clsx';\nimport { memo, useCallback } from 'react';\n\nimport { useStableValue } from '@/hooks/useStableValue';\nimport { PreviewGroup } from '@/Image';\n\nimport { MarkdownProvider } from './components/MarkdownProvider';\nimport { useDelayedAnimated } from './components/useDelayedAnimated';\nimport { rootStyles, styles } from './style';\nimport { MarkdownRender, StreamdownRender } from './SyntaxMarkdown';\nimport { type MarkdownProps } from './type';\nimport { TypographyImpl } from './Typography';\n\nconst Markdown = memo<MarkdownProps>((props) => {\n const {\n ref,\n children = '',\n className,\n style,\n fullFeaturedCodeBlock,\n onDoubleClick,\n animated,\n enableHtmlPreview = false,\n enableLatex = true,\n enableMermaid = true,\n enableImageGallery,\n enableCustomFootnotes,\n enableGithubAlert,\n enableStream = true,\n componentProps,\n rehypePluginsAhead,\n allowHtml,\n borderRadius,\n fontSize = props.variant === 'chat' ? 14 : undefined,\n headerMultiple = props.variant === 'chat' ? 0.25 : undefined,\n marginMultiple = props.variant === 'chat' ? 1 : undefined,\n variant = 'default',\n reactMarkdownProps,\n lineHeight = props.variant === 'chat' ? 1.6 : undefined,\n rehypePlugins,\n remarkPlugins,\n remarkPluginsAhead,\n components = {},\n customRender,\n showFootnotes = true,\n streamAnimationGranularity,\n streamSmoothingPreset,\n citations,\n ...rest\n } = props;\n\n const delayedAnimated = useDelayedAnimated(animated);\n\n // Stabilise structural props so an inline `componentProps={{ html:\n // {...} }}` from the caller doesn't cascade through MarkdownProvider →\n // useMarkdownComponents → react-markdown's `components` and remount the\n // entire code-block subtree (including the HtmlPreview iframe) on\n // every parent render. The deep-equal compare treats inline literals\n // as the same object as long as their structure matches. Inline\n // callbacks (`actionsRender`, custom `components`) still need\n // `useCallback` at the call site — function bodies aren't compared.\n const stableComponentProps = useStableValue(componentProps);\n const stableComponents = useStableValue(components);\n\n const Render = useCallback(\n ({\n enableStream,\n children,\n reactMarkdownProps,\n }: Pick<MarkdownProps, 'children' | 'enableStream' | 'reactMarkdownProps'>) => {\n const DefaultRender = enableStream ? StreamdownRender : MarkdownRender;\n const defaultDOM = <DefaultRender {...reactMarkdownProps}>{children}</DefaultRender>;\n return customRender ? customRender(defaultDOM, { text: children }) : defaultDOM;\n },\n [customRender],\n );\n\n return (\n <PreviewGroup enable={enableImageGallery}>\n <TypographyImpl\n borderRadius={borderRadius}\n data-code-type=\"markdown\"\n fontSize={fontSize}\n headerMultiple={headerMultiple}\n lineHeight={lineHeight}\n marginMultiple={marginMultiple}\n ref={ref}\n style={style}\n xstyle={rootStyles.root}\n className={clsx(\n variant === 'chat' && styles.chat,\n enableLatex && styles.latex,\n styles.gfm,\n className,\n )}\n onDoubleClick={onDoubleClick}\n {...rest}\n >\n <MarkdownProvider\n allowHtml={allowHtml}\n animated={delayedAnimated}\n citations={citations}\n componentProps={stableComponentProps}\n components={stableComponents}\n enableCustomFootnotes={enableCustomFootnotes}\n enableGithubAlert={enableGithubAlert}\n enableHtmlPreview={enableHtmlPreview}\n enableLatex={enableLatex}\n enableMermaid={enableMermaid}\n fullFeaturedCodeBlock={fullFeaturedCodeBlock}\n rehypePlugins={rehypePlugins}\n rehypePluginsAhead={rehypePluginsAhead}\n remarkPlugins={remarkPlugins}\n remarkPluginsAhead={remarkPluginsAhead}\n showFootnotes={showFootnotes}\n streamAnimationGranularity={streamAnimationGranularity}\n streamSmoothingPreset={streamSmoothingPreset}\n variant={variant}\n >\n <Render\n enableStream={enableStream && delayedAnimated}\n reactMarkdownProps={reactMarkdownProps}\n >\n {children}\n </Render>\n </MarkdownProvider>\n </TypographyImpl>\n </PreviewGroup>\n );\n});\n\nMarkdown.displayName = 'Markdown';\n\nexport default Markdown;\n"],"mappings":";;;;;;;;;;;;;AAeA,MAAM,WAAW,MAAqB,UAAU;CAC9C,MAAM,EACJ,KACA,WAAW,IACX,WACA,OACA,uBACA,eACA,UACA,oBAAoB,OACpB,cAAc,MACd,gBAAgB,MAChB,oBACA,uBACA,mBACA,eAAe,MACf,gBACA,oBACA,WACA,cACA,WAAW,MAAM,YAAY,SAAS,KAAK,KAAA,GAC3C,iBAAiB,MAAM,YAAY,SAAS,MAAO,KAAA,GACnD,iBAAiB,MAAM,YAAY,SAAS,IAAI,KAAA,GAChD,UAAU,WACV,oBACA,aAAa,MAAM,YAAY,SAAS,MAAM,KAAA,GAC9C,eACA,eACA,oBACA,aAAa,CAAC,GACd,cACA,gBAAgB,MAChB,4BACA,uBACA,WACA,GAAG,SACD;CAEJ,MAAM,kBAAkB,mBAAmB,QAAQ;CAUnD,MAAM,uBAAuB,eAAe,cAAc;CAC1D,MAAM,mBAAmB,eAAe,UAAU;CAElD,MAAM,SAAS,aACZ,EACC,cACA,UACA,yBAC6E;EAE7E,MAAM,aAAa,oBADG,eAAe,mBAAmBA,kBACrC;GAAe,GAAI;GAAqB;EAAwB,CAAA;EACnF,OAAO,eAAe,aAAa,YAAY,EAAE,MAAM,SAAS,CAAC,IAAI;CACvE,GACA,CAAC,YAAY,CACf;CAEA,OACE,oBAAC,cAAD;EAAc,QAAQ;EACpB,UAAA,oBAAC,gBAAD;GACgB;GACd,kBAAe;GACL;GACM;GACJ;GACI;GACX;GACE;GACP,QAAQ,WAAW;GACnB,WAAW,KACT,YAAY,UAAU,OAAO,MAC7B,eAAe,OAAO,OACtB,OAAO,KACP,SACF;GACe;GACf,GAAI;GAEJ,UAAA,oBAAC,kBAAD;IACa;IACX,UAAU;IACC;IACX,gBAAgB;IAChB,YAAY;IACW;IACJ;IACA;IACN;IACE;IACQ;IACR;IACK;IACL;IACK;IACL;IACa;IACL;IACd;IAET,UAAA,oBAAC,QAAD;KACE,cAAc,gBAAgB;KACV;KAEnB;IACK,CAAA;GACQ,CAAA;EACJ,CAAA;CACJ,CAAA;AAElB,CAAC;AAED,SAAS,cAAc"}
1
+ {"version":3,"file":"Markdown.mjs","names":["MarkdownRender","clsx"],"sources":["../../src/Markdown/Markdown.tsx"],"sourcesContent":["'use client';\n\nimport clsx from 'clsx';\nimport { memo, useCallback } from 'react';\n\nimport { useStableValue } from '@/hooks/useStableValue';\nimport { PreviewGroup } from '@/Image';\n\nimport { MarkdownProvider } from './components/MarkdownProvider';\nimport { useDelayedAnimated } from './components/useDelayedAnimated';\nimport { rootStyles, styles } from './style';\nimport { MarkdownRender, StreamdownRender } from './SyntaxMarkdown';\nimport { type MarkdownProps } from './type';\nimport { TypographyImpl } from './Typography';\n\nconst Markdown = memo<MarkdownProps>((props) => {\n const {\n ref,\n children = '',\n className,\n style,\n fullFeaturedCodeBlock,\n onDoubleClick,\n animated,\n enableHtmlPreview = false,\n enableLatex = true,\n enableMermaid = true,\n enableImageGallery,\n enableCustomFootnotes,\n enableGithubAlert,\n enableStream = true,\n componentProps,\n rehypePluginsAhead,\n allowHtml,\n borderRadius,\n fontSize = props.variant === 'chat' ? 14 : undefined,\n headerMultiple = props.variant === 'chat' ? 0.25 : undefined,\n marginMultiple = props.variant === 'chat' ? 1 : undefined,\n variant = 'default',\n reactMarkdownProps,\n lineHeight = props.variant === 'chat' ? 1.6 : undefined,\n rehypePlugins,\n remarkPlugins,\n remarkPluginsAhead,\n components = {},\n customRender,\n showFootnotes = true,\n streamAnimationGranularity,\n streamSmoothingPreset,\n citations,\n ...rest\n } = props;\n\n const delayedAnimated = useDelayedAnimated(animated);\n\n // Stabilise structural props so an inline `componentProps={{ html:\n // {...} }}` from the caller doesn't cascade through MarkdownProvider →\n // useMarkdownComponents → react-markdown's `components` and remount the\n // entire code-block subtree (including the HtmlPreview iframe) on\n // every parent render. The deep-equal compare treats inline literals\n // as the same object as long as their structure matches. Inline\n // callbacks (`actionsRender`, custom `components`) still need\n // `useCallback` at the call site — function bodies aren't compared.\n const stableComponentProps = useStableValue(componentProps);\n const stableComponents = useStableValue(components);\n\n const Render = useCallback(\n ({\n enableStream,\n children,\n reactMarkdownProps,\n }: Pick<MarkdownProps, 'children' | 'enableStream' | 'reactMarkdownProps'>) => {\n const DefaultRender = enableStream ? StreamdownRender : MarkdownRender;\n const defaultDOM = <DefaultRender {...reactMarkdownProps}>{children}</DefaultRender>;\n return customRender ? customRender(defaultDOM, { text: children }) : defaultDOM;\n },\n [customRender],\n );\n\n return (\n <PreviewGroup enable={enableImageGallery}>\n <TypographyImpl\n borderRadius={borderRadius}\n data-code-type=\"markdown\"\n fontSize={fontSize}\n headerMultiple={headerMultiple}\n lineHeight={lineHeight}\n marginMultiple={marginMultiple}\n ref={ref}\n style={style}\n xstyle={rootStyles.root}\n className={clsx(\n variant === 'chat' && styles.chat,\n enableLatex && styles.latex,\n styles.gfm,\n className,\n )}\n onDoubleClick={onDoubleClick}\n {...rest}\n >\n <MarkdownProvider\n allowHtml={allowHtml}\n animated={delayedAnimated}\n citations={citations}\n componentProps={stableComponentProps}\n components={stableComponents}\n enableCustomFootnotes={enableCustomFootnotes}\n enableGithubAlert={enableGithubAlert}\n enableHtmlPreview={enableHtmlPreview}\n enableLatex={enableLatex}\n enableMermaid={enableMermaid}\n fullFeaturedCodeBlock={fullFeaturedCodeBlock}\n rehypePlugins={rehypePlugins}\n rehypePluginsAhead={rehypePluginsAhead}\n remarkPlugins={remarkPlugins}\n remarkPluginsAhead={remarkPluginsAhead}\n showFootnotes={showFootnotes}\n streamAnimationGranularity={streamAnimationGranularity}\n streamSmoothingPreset={streamSmoothingPreset}\n variant={variant}\n >\n <Render\n enableStream={enableStream && delayedAnimated}\n reactMarkdownProps={reactMarkdownProps}\n >\n {children}\n </Render>\n </MarkdownProvider>\n </TypographyImpl>\n </PreviewGroup>\n );\n});\n\nMarkdown.displayName = 'Markdown';\n\nexport default Markdown;\n"],"mappings":";;;;;;;;;;;;;AAeA,MAAM,WAAW,MAAqB,UAAU;CAC9C,MAAM,EACJ,KACA,WAAW,IACX,WACA,OACA,uBACA,eACA,UACA,oBAAoB,OACpB,cAAc,MACd,gBAAgB,MAChB,oBACA,uBACA,mBACA,eAAe,MACf,gBACA,oBACA,WACA,cACA,WAAW,MAAM,YAAY,SAAS,KAAK,KAAA,GAC3C,iBAAiB,MAAM,YAAY,SAAS,MAAO,KAAA,GACnD,iBAAiB,MAAM,YAAY,SAAS,IAAI,KAAA,GAChD,UAAU,WACV,oBACA,aAAa,MAAM,YAAY,SAAS,MAAM,KAAA,GAC9C,eACA,eACA,oBACA,aAAa,CAAC,GACd,cACA,gBAAgB,MAChB,4BACA,uBACA,WACA,GAAG,SACD;CAEJ,MAAM,kBAAkB,mBAAmB,QAAQ;CAUnD,MAAM,uBAAuB,eAAe,cAAc;CAC1D,MAAM,mBAAmB,eAAe,UAAU;CAElD,MAAM,SAAS,aACZ,EACC,cACA,UACA,yBAC6E;EAE7E,MAAM,aAAa,oBADG,eAAe,mBAAmBA,kBACrC;GAAe,GAAI;GAAqB;EAAwB,CAAA;EACnF,OAAO,eAAe,aAAa,YAAY,EAAE,MAAM,SAAS,CAAC,IAAI;CACvE,GACA,CAAC,YAAY,CACf;CAEA,OACE,oBAAC,cAAD;EAAc,QAAQ;EACpB,UAAA,oBAAC,gBAAD;GACgB;GACd,kBAAe;GACL;GACM;GACJ;GACI;GACX;GACE;GACP,QAAQ,WAAW;GACnB,WAAWC,OACT,YAAY,UAAU,OAAO,MAC7B,eAAe,OAAO,OACtB,OAAO,KACP,SACF;GACe;GACf,GAAI;GAEJ,UAAA,oBAAC,kBAAD;IACa;IACX,UAAU;IACC;IACX,gBAAgB;IAChB,YAAY;IACW;IACJ;IACA;IACN;IACE;IACQ;IACR;IACK;IACL;IACK;IACL;IACa;IACL;IACd;IAET,UAAA,oBAAC,QAAD;KACE,cAAc,gBAAgB;KACV;KAEnB;IACK,CAAA;GACQ,CAAA;EACJ,CAAA;CACJ,CAAA;AAElB,CAAC;AAED,SAAS,cAAc"}
@@ -2,12 +2,12 @@
2
2
  import { styleProps } from "../styles/stylex/props.mjs";
3
3
  import { memo } from "react";
4
4
  import { jsx } from "react/jsx-runtime";
5
- import clsx from "clsx";
5
+ import clsx$1 from "clsx";
6
6
  //#region src/Markdown/Typography.tsx
7
7
  const TypographyImpl = ({ ref, children, className, fontSize = 16, headerMultiple = 1, marginMultiple = 2, lineHeight = 1.8, borderRadius = 8, style, xstyle, ...rest }) => {
8
8
  return /* @__PURE__ */ jsx("article", {
9
9
  ref,
10
- ...styleProps(xstyle, clsx("lobe-markdown", className), {
10
+ ...styleProps(xstyle, clsx$1("lobe-markdown", className), {
11
11
  "--lobe-markdown-border-radius": borderRadius,
12
12
  "--lobe-markdown-font-size": `${fontSize}px`,
13
13
  "--lobe-markdown-header-multiple": headerMultiple,
@@ -1 +1 @@
1
- {"version":3,"file":"Typography.mjs","names":[],"sources":["../../src/Markdown/Typography.tsx"],"sourcesContent":["'use client';\n\nimport './style.css';\n\nimport clsx from 'clsx';\nimport { type CSSProperties, memo } from 'react';\n\nimport { styleProps } from '@/styles/stylex/props';\n\nimport type { TypographyProps } from './type';\n\nexport const TypographyImpl = ({\n ref,\n children,\n className,\n fontSize = 16,\n headerMultiple = 1,\n marginMultiple = 2,\n lineHeight = 1.8,\n borderRadius = 8,\n style,\n xstyle,\n ...rest\n}: TypographyProps & { xstyle?: Parameters<typeof styleProps>[0] }) => {\n return (\n <article\n ref={ref}\n {...styleProps(xstyle, clsx('lobe-markdown', className), {\n '--lobe-markdown-border-radius': borderRadius,\n '--lobe-markdown-font-size': `${fontSize}px`,\n '--lobe-markdown-header-multiple': headerMultiple,\n '--lobe-markdown-line-height': lineHeight,\n '--lobe-markdown-margin-multiple': marginMultiple,\n ...style,\n } as CSSProperties)}\n {...rest}\n >\n {children}\n </article>\n );\n};\n\nconst Typography = memo<TypographyProps>((props) => <TypographyImpl {...props} />);\n\nTypography.displayName = 'Typography';\n\nexport default Typography;\n"],"mappings":";;;;;;AAWA,MAAa,kBAAkB,EAC7B,KACA,UACA,WACA,WAAW,IACX,iBAAiB,GACjB,iBAAiB,GACjB,aAAa,KACb,eAAe,GACf,OACA,QACA,GAAG,WACkE;CACrE,OACE,oBAAC,WAAD;EACO;EACL,GAAI,WAAW,QAAQ,KAAK,iBAAiB,SAAS,GAAG;GACvD,iCAAiC;GACjC,6BAA6B,GAAG,SAAS;GACzC,mCAAmC;GACnC,+BAA+B;GAC/B,mCAAmC;GACnC,GAAG;EACL,CAAkB;EAClB,GAAI;EAEH;CACM,CAAA;AAEb;AAEA,MAAM,aAAa,MAAuB,UAAU,oBAAC,gBAAD,EAAgB,GAAI,MAAQ,CAAA,CAAC;AAEjF,WAAW,cAAc"}
1
+ {"version":3,"file":"Typography.mjs","names":["clsx"],"sources":["../../src/Markdown/Typography.tsx"],"sourcesContent":["'use client';\n\nimport './style.css';\n\nimport clsx from 'clsx';\nimport { type CSSProperties, memo } from 'react';\n\nimport { styleProps } from '@/styles/stylex/props';\n\nimport type { TypographyProps } from './type';\n\nexport const TypographyImpl = ({\n ref,\n children,\n className,\n fontSize = 16,\n headerMultiple = 1,\n marginMultiple = 2,\n lineHeight = 1.8,\n borderRadius = 8,\n style,\n xstyle,\n ...rest\n}: TypographyProps & { xstyle?: Parameters<typeof styleProps>[0] }) => {\n return (\n <article\n ref={ref}\n {...styleProps(xstyle, clsx('lobe-markdown', className), {\n '--lobe-markdown-border-radius': borderRadius,\n '--lobe-markdown-font-size': `${fontSize}px`,\n '--lobe-markdown-header-multiple': headerMultiple,\n '--lobe-markdown-line-height': lineHeight,\n '--lobe-markdown-margin-multiple': marginMultiple,\n ...style,\n } as CSSProperties)}\n {...rest}\n >\n {children}\n </article>\n );\n};\n\nconst Typography = memo<TypographyProps>((props) => <TypographyImpl {...props} />);\n\nTypography.displayName = 'Typography';\n\nexport default Typography;\n"],"mappings":";;;;;;AAWA,MAAa,kBAAkB,EAC7B,KACA,UACA,WACA,WAAW,IACX,iBAAiB,GACjB,iBAAiB,GACjB,aAAa,KACb,eAAe,GACf,OACA,QACA,GAAG,WACkE;CACrE,OACE,oBAAC,WAAD;EACO;EACL,GAAI,WAAW,QAAQA,OAAK,iBAAiB,SAAS,GAAG;GACvD,iCAAiC;GACjC,6BAA6B,GAAG,SAAS;GACzC,mCAAmC;GACnC,+BAA+B;GAC/B,mCAAmC;GACnC,GAAG;EACL,CAAkB;EAClB,GAAI;EAEH;CACM,CAAA;AAEb;AAEA,MAAM,aAAa,MAAuB,UAAU,oBAAC,gBAAD,EAAgB,GAAI,MAAQ,CAAA,CAAC;AAEjF,WAAW,cAAc"}
@@ -9,7 +9,7 @@ import CopyButton from "../CopyButton/CopyButton.mjs";
9
9
  import { bodyStyles, headerFlexProps, headerStyles, rootClassName, rootStyles } from "../Highlighter/style.mjs";
10
10
  import { memo, useCallback, useEffect, useMemo, useRef, useState } from "react";
11
11
  import { jsx, jsxs } from "react/jsx-runtime";
12
- import clsx from "clsx";
12
+ import clsx$1 from "clsx";
13
13
  import { ChevronDown, ChevronRight } from "lucide-react";
14
14
  //#region src/Mermaid/FullFeatured.tsx
15
15
  const MermaidHeaderLanguage = memo(({ fileName, language, showLanguage }) => {
@@ -106,7 +106,7 @@ const MermaidFullFeatured = memo(({ showLanguage, styles: customStyles, classNam
106
106
  })]
107
107
  }), /* @__PURE__ */ jsx(FlexBasic_default, {
108
108
  height: expand ? void 0 : 0,
109
- ...styleProps(bodyStyles(expand, variant), clsx(expand && "ant-highlighter-highlighter-body-expand", classNames?.body), customStyles?.body),
109
+ ...styleProps(bodyStyles(expand, variant), clsx$1(expand && "ant-highlighter-highlighter-body-expand", classNames?.body), customStyles?.body),
110
110
  children
111
111
  })]
112
112
  });
@@ -1 +1 @@
1
- {"version":3,"file":"FullFeatured.mjs","names":["Flexbox"],"sources":["../../src/Mermaid/FullFeatured.tsx"],"sourcesContent":["'use client';\n\nimport clsx from 'clsx';\nimport { ChevronDown, ChevronRight } from 'lucide-react';\nimport { memo, type ReactNode, useCallback, useEffect, useMemo, useRef, useState } from 'react';\n\nimport ActionIcon from '@/ActionIcon';\nimport CopyButton from '@/CopyButton';\nimport { Flexbox } from '@/Flex';\nimport {\n bodyStyles,\n expandCls,\n headerFlexProps,\n headerStyles,\n rootClassName,\n rootStyles,\n} from '@/Highlighter/style';\nimport MaterialFileTypeIcon from '@/MaterialFileTypeIcon';\nimport { styleProps } from '@/styles/stylex/props';\nimport Text from '@/Text';\nimport { stopPropagation } from '@/utils/dom';\n\nimport { type MermaidProps } from './type';\n\nconst MermaidHeaderLanguage = memo(\n ({\n fileName,\n language,\n showLanguage,\n }: {\n fileName?: string;\n language: string;\n showLanguage?: boolean;\n }) => {\n if (!showLanguage) return null;\n\n return (\n <Flexbox\n horizontal\n align={'center'}\n className={'language-title'}\n flex={1}\n gap={4}\n justify={'flex-start'}\n paddingInline={8}\n >\n <MaterialFileTypeIcon\n fallbackUnknownType={false}\n filename={fileName || language}\n size={18}\n type={'file'}\n variant={'raw'}\n />\n\n <Text ellipsis fontSize={13}>\n {fileName || 'Mermaid'}\n </Text>\n </Flexbox>\n );\n },\n (prev, next) =>\n prev.fileName === next.fileName &&\n prev.language === next.language &&\n prev.showLanguage === next.showLanguage,\n);\n\nexport interface MermaidFullFeaturedProps extends Omit<MermaidProps, 'children'> {\n children: ReactNode;\n content: string;\n}\n\nexport const MermaidFullFeatured = memo<MermaidFullFeaturedProps>(\n ({\n showLanguage,\n styles: customStyles,\n classNames,\n content,\n children,\n className,\n copyable,\n actionsRender,\n style,\n variant,\n shadow,\n language = 'mermaid',\n fileName,\n defaultExpand = true,\n ...rest\n }) => {\n const [expand, setExpand] = useState(defaultExpand);\n const contentRef = useRef(content);\n\n useEffect(() => {\n contentRef.current = content;\n }, [content]);\n\n const getContent = useCallback(() => contentRef.current, []);\n\n const originalActions = useMemo(() => {\n if (!copyable) return null;\n return <CopyButton content={getContent} size={'small'} />;\n }, [copyable, getContent]);\n\n const actions = useMemo(() => {\n if (!actionsRender) return originalActions;\n return actionsRender({\n actionIconSize: 'small',\n content,\n getContent,\n originalNode: originalActions,\n });\n }, [actionsRender, content, getContent, originalActions]);\n\n const handleToggleExpand = useCallback(() => {\n setExpand((prev) => !prev);\n }, []);\n\n return (\n <Flexbox\n data-code-type=\"mermaid\"\n width={'100%'}\n {...rest}\n {...styleProps(rootStyles({ shadow, variant }), rootClassName(false, className), style)}\n >\n <Flexbox\n horizontal\n align={'center'}\n justify={'space-between'}\n onClick={handleToggleExpand}\n {...headerFlexProps(variant)}\n {...styleProps(headerStyles(variant), classNames?.header, customStyles?.header)}\n >\n <MermaidHeaderLanguage\n fileName={fileName}\n language={language}\n showLanguage={showLanguage}\n />\n <Flexbox horizontal align={'center'} flex={'none'} gap={4} onClick={stopPropagation}>\n <Flexbox horizontal align={'center'} className={'panel-actions'} flex={'none'} gap={4}>\n {actions}\n </Flexbox>\n <ActionIcon\n icon={expand ? ChevronDown : ChevronRight}\n size={'small'}\n onClick={handleToggleExpand}\n />\n </Flexbox>\n </Flexbox>\n <Flexbox\n height={expand ? undefined : 0}\n {...styleProps(\n bodyStyles(expand, variant),\n clsx(expand && expandCls, classNames?.body),\n customStyles?.body,\n )}\n >\n {children}\n </Flexbox>\n </Flexbox>\n );\n },\n);\n\nexport default MermaidFullFeatured;\n"],"mappings":";;;;;;;;;;;;;;AAwBA,MAAM,wBAAwB,MAC3B,EACC,UACA,UACA,mBAKI;CACJ,IAAI,CAAC,cAAc,OAAO;CAE1B,OACE,qBAACA,mBAAD;EACE,YAAA;EACA,OAAO;EACP,WAAW;EACX,MAAM;EACN,KAAK;EACL,SAAS;EACT,eAAe;EAPjB,UAAA,CASE,oBAAC,sBAAD;GACE,qBAAqB;GACrB,UAAU,YAAY;GACtB,MAAM;GACN,MAAM;GACN,SAAS;EACV,CAAA,GAED,oBAAC,MAAD;GAAM,UAAA;GAAS,UAAU;GACtB,UAAA,YAAY;EACT,CAAA,CACC;;AAEb,IACC,MAAM,SACL,KAAK,aAAa,KAAK,YACvB,KAAK,aAAa,KAAK,YACvB,KAAK,iBAAiB,KAAK,YAC/B;AAOA,MAAa,sBAAsB,MAChC,EACC,cACA,QAAQ,cACR,YACA,SACA,UACA,WACA,UACA,eACA,OACA,SACA,QACA,WAAW,WACX,UACA,gBAAgB,MAChB,GAAG,WACC;CACJ,MAAM,CAAC,QAAQ,aAAa,SAAS,aAAa;CAClD,MAAM,aAAa,OAAO,OAAO;CAEjC,gBAAgB;EACd,WAAW,UAAU;CACvB,GAAG,CAAC,OAAO,CAAC;CAEZ,MAAM,aAAa,kBAAkB,WAAW,SAAS,CAAC,CAAC;CAE3D,MAAM,kBAAkB,cAAc;EACpC,IAAI,CAAC,UAAU,OAAO;EACtB,OAAO,oBAAC,YAAD;GAAY,SAAS;GAAY,MAAM;EAAU,CAAA;CAC1D,GAAG,CAAC,UAAU,UAAU,CAAC;CAEzB,MAAM,UAAU,cAAc;EAC5B,IAAI,CAAC,eAAe,OAAO;EAC3B,OAAO,cAAc;GACnB,gBAAgB;GAChB;GACA;GACA,cAAc;EAChB,CAAC;CACH,GAAG;EAAC;EAAe;EAAS;EAAY;CAAe,CAAC;CAExD,MAAM,qBAAqB,kBAAkB;EAC3C,WAAW,SAAS,CAAC,IAAI;CAC3B,GAAG,CAAC,CAAC;CAEL,OACE,qBAACA,mBAAD;EACE,kBAAe;EACf,OAAO;EACP,GAAI;EACJ,GAAI,WAAW,WAAW;GAAE;GAAQ;EAAQ,CAAC,GAAG,cAAc,OAAO,SAAS,GAAG,KAAK;EAJxF,UAAA,CAME,qBAACA,mBAAD;GACE,YAAA;GACA,OAAO;GACP,SAAS;GACT,SAAS;GACT,GAAI,gBAAgB,OAAO;GAC3B,GAAI,WAAW,aAAa,OAAO,GAAG,YAAY,QAAQ,cAAc,MAAM;GANhF,UAAA,CAQE,oBAAC,uBAAD;IACY;IACA;IACI;GACf,CAAA,GACD,qBAACA,mBAAD;IAAS,YAAA;IAAW,OAAO;IAAU,MAAM;IAAQ,KAAK;IAAG,SAAS;IAApE,UAAA,CACE,oBAACA,mBAAD;KAAS,YAAA;KAAW,OAAO;KAAU,WAAW;KAAiB,MAAM;KAAQ,KAAK;KACjF,UAAA;IACM,CAAA,GACT,oBAAC,YAAD;KACE,MAAM,SAAS,cAAc;KAC7B,MAAM;KACN,SAAS;IACV,CAAA,CACM;GACF,CAAA,CAAA;EACT,CAAA,GAAA,oBAACA,mBAAD;GACE,QAAQ,SAAS,KAAA,IAAY;GAC7B,GAAI,WACF,WAAW,QAAQ,OAAO,GAC1B,KAAK,UAAA,2CAAqB,YAAY,IAAI,GAC1C,cAAc,IAChB;GAEC;EACM,CAAA,CACF;;AAEb,CACF"}
1
+ {"version":3,"file":"FullFeatured.mjs","names":["Flexbox","clsx"],"sources":["../../src/Mermaid/FullFeatured.tsx"],"sourcesContent":["'use client';\n\nimport clsx from 'clsx';\nimport { ChevronDown, ChevronRight } from 'lucide-react';\nimport { memo, type ReactNode, useCallback, useEffect, useMemo, useRef, useState } from 'react';\n\nimport ActionIcon from '@/ActionIcon';\nimport CopyButton from '@/CopyButton';\nimport { Flexbox } from '@/Flex';\nimport {\n bodyStyles,\n expandCls,\n headerFlexProps,\n headerStyles,\n rootClassName,\n rootStyles,\n} from '@/Highlighter/style';\nimport MaterialFileTypeIcon from '@/MaterialFileTypeIcon';\nimport { styleProps } from '@/styles/stylex/props';\nimport Text from '@/Text';\nimport { stopPropagation } from '@/utils/dom';\n\nimport { type MermaidProps } from './type';\n\nconst MermaidHeaderLanguage = memo(\n ({\n fileName,\n language,\n showLanguage,\n }: {\n fileName?: string;\n language: string;\n showLanguage?: boolean;\n }) => {\n if (!showLanguage) return null;\n\n return (\n <Flexbox\n horizontal\n align={'center'}\n className={'language-title'}\n flex={1}\n gap={4}\n justify={'flex-start'}\n paddingInline={8}\n >\n <MaterialFileTypeIcon\n fallbackUnknownType={false}\n filename={fileName || language}\n size={18}\n type={'file'}\n variant={'raw'}\n />\n\n <Text ellipsis fontSize={13}>\n {fileName || 'Mermaid'}\n </Text>\n </Flexbox>\n );\n },\n (prev, next) =>\n prev.fileName === next.fileName &&\n prev.language === next.language &&\n prev.showLanguage === next.showLanguage,\n);\n\nexport interface MermaidFullFeaturedProps extends Omit<MermaidProps, 'children'> {\n children: ReactNode;\n content: string;\n}\n\nexport const MermaidFullFeatured = memo<MermaidFullFeaturedProps>(\n ({\n showLanguage,\n styles: customStyles,\n classNames,\n content,\n children,\n className,\n copyable,\n actionsRender,\n style,\n variant,\n shadow,\n language = 'mermaid',\n fileName,\n defaultExpand = true,\n ...rest\n }) => {\n const [expand, setExpand] = useState(defaultExpand);\n const contentRef = useRef(content);\n\n useEffect(() => {\n contentRef.current = content;\n }, [content]);\n\n const getContent = useCallback(() => contentRef.current, []);\n\n const originalActions = useMemo(() => {\n if (!copyable) return null;\n return <CopyButton content={getContent} size={'small'} />;\n }, [copyable, getContent]);\n\n const actions = useMemo(() => {\n if (!actionsRender) return originalActions;\n return actionsRender({\n actionIconSize: 'small',\n content,\n getContent,\n originalNode: originalActions,\n });\n }, [actionsRender, content, getContent, originalActions]);\n\n const handleToggleExpand = useCallback(() => {\n setExpand((prev) => !prev);\n }, []);\n\n return (\n <Flexbox\n data-code-type=\"mermaid\"\n width={'100%'}\n {...rest}\n {...styleProps(rootStyles({ shadow, variant }), rootClassName(false, className), style)}\n >\n <Flexbox\n horizontal\n align={'center'}\n justify={'space-between'}\n onClick={handleToggleExpand}\n {...headerFlexProps(variant)}\n {...styleProps(headerStyles(variant), classNames?.header, customStyles?.header)}\n >\n <MermaidHeaderLanguage\n fileName={fileName}\n language={language}\n showLanguage={showLanguage}\n />\n <Flexbox horizontal align={'center'} flex={'none'} gap={4} onClick={stopPropagation}>\n <Flexbox horizontal align={'center'} className={'panel-actions'} flex={'none'} gap={4}>\n {actions}\n </Flexbox>\n <ActionIcon\n icon={expand ? ChevronDown : ChevronRight}\n size={'small'}\n onClick={handleToggleExpand}\n />\n </Flexbox>\n </Flexbox>\n <Flexbox\n height={expand ? undefined : 0}\n {...styleProps(\n bodyStyles(expand, variant),\n clsx(expand && expandCls, classNames?.body),\n customStyles?.body,\n )}\n >\n {children}\n </Flexbox>\n </Flexbox>\n );\n },\n);\n\nexport default MermaidFullFeatured;\n"],"mappings":";;;;;;;;;;;;;;AAwBA,MAAM,wBAAwB,MAC3B,EACC,UACA,UACA,mBAKI;CACJ,IAAI,CAAC,cAAc,OAAO;CAE1B,OACE,qBAACA,mBAAD;EACE,YAAA;EACA,OAAO;EACP,WAAW;EACX,MAAM;EACN,KAAK;EACL,SAAS;EACT,eAAe;EAPjB,UAAA,CASE,oBAAC,sBAAD;GACE,qBAAqB;GACrB,UAAU,YAAY;GACtB,MAAM;GACN,MAAM;GACN,SAAS;EACV,CAAA,GAED,oBAAC,MAAD;GAAM,UAAA;GAAS,UAAU;GACtB,UAAA,YAAY;EACT,CAAA,CACC;;AAEb,IACC,MAAM,SACL,KAAK,aAAa,KAAK,YACvB,KAAK,aAAa,KAAK,YACvB,KAAK,iBAAiB,KAAK,YAC/B;AAOA,MAAa,sBAAsB,MAChC,EACC,cACA,QAAQ,cACR,YACA,SACA,UACA,WACA,UACA,eACA,OACA,SACA,QACA,WAAW,WACX,UACA,gBAAgB,MAChB,GAAG,WACC;CACJ,MAAM,CAAC,QAAQ,aAAa,SAAS,aAAa;CAClD,MAAM,aAAa,OAAO,OAAO;CAEjC,gBAAgB;EACd,WAAW,UAAU;CACvB,GAAG,CAAC,OAAO,CAAC;CAEZ,MAAM,aAAa,kBAAkB,WAAW,SAAS,CAAC,CAAC;CAE3D,MAAM,kBAAkB,cAAc;EACpC,IAAI,CAAC,UAAU,OAAO;EACtB,OAAO,oBAAC,YAAD;GAAY,SAAS;GAAY,MAAM;EAAU,CAAA;CAC1D,GAAG,CAAC,UAAU,UAAU,CAAC;CAEzB,MAAM,UAAU,cAAc;EAC5B,IAAI,CAAC,eAAe,OAAO;EAC3B,OAAO,cAAc;GACnB,gBAAgB;GAChB;GACA;GACA,cAAc;EAChB,CAAC;CACH,GAAG;EAAC;EAAe;EAAS;EAAY;CAAe,CAAC;CAExD,MAAM,qBAAqB,kBAAkB;EAC3C,WAAW,SAAS,CAAC,IAAI;CAC3B,GAAG,CAAC,CAAC;CAEL,OACE,qBAACA,mBAAD;EACE,kBAAe;EACf,OAAO;EACP,GAAI;EACJ,GAAI,WAAW,WAAW;GAAE;GAAQ;EAAQ,CAAC,GAAG,cAAc,OAAO,SAAS,GAAG,KAAK;EAJxF,UAAA,CAME,qBAACA,mBAAD;GACE,YAAA;GACA,OAAO;GACP,SAAS;GACT,SAAS;GACT,GAAI,gBAAgB,OAAO;GAC3B,GAAI,WAAW,aAAa,OAAO,GAAG,YAAY,QAAQ,cAAc,MAAM;GANhF,UAAA,CAQE,oBAAC,uBAAD;IACY;IACA;IACI;GACf,CAAA,GACD,qBAACA,mBAAD;IAAS,YAAA;IAAW,OAAO;IAAU,MAAM;IAAQ,KAAK;IAAG,SAAS;IAApE,UAAA,CACE,oBAACA,mBAAD;KAAS,YAAA;KAAW,OAAO;KAAU,WAAW;KAAiB,MAAM;KAAQ,KAAK;KACjF,UAAA;IACM,CAAA,GACT,oBAAC,YAAD;KACE,MAAM,SAAS,cAAc;KAC7B,MAAM;KACN,SAAS;IACV,CAAA,CACM;GACF,CAAA,CAAA;EACT,CAAA,GAAA,oBAACA,mBAAD;GACE,QAAQ,SAAS,KAAA,IAAY;GAC7B,GAAI,WACF,WAAW,QAAQ,OAAO,GAC1BC,OAAK,UAAA,2CAAqB,YAAY,IAAI,GAC1C,cAAc,IAChB;GAEC;EACM,CAAA,CACF;;AAEb,CACF"}
@@ -5,20 +5,20 @@ import StreamMermaid from "./StreamMermaid.mjs";
5
5
  import { styles } from "./style.mjs";
6
6
  import { memo } from "react";
7
7
  import { jsx } from "react/jsx-runtime";
8
- import clsx from "clsx";
8
+ import clsx$1 from "clsx";
9
9
  //#region src/Mermaid/SyntaxMermaid/index.tsx
10
10
  const SyntaxMermaid = memo(({ animated, children, className, fallbackClassName, ref, style, theme: customTheme, variant = "borderless" }) => {
11
11
  const isDefaultTheme = customTheme === "lobe-theme" || !customTheme;
12
12
  const showBackground = !isDefaultTheme && variant === "filled";
13
13
  const resolvedTheme = isDefaultTheme ? void 0 : customTheme;
14
- const classes = clsx(!showBackground && "lobe-mermaid-transparent", animated && "lobe-mermaid-animated");
14
+ const classes = clsx$1(!showBackground && "lobe-mermaid-transparent", animated && "lobe-mermaid-animated");
15
15
  const padded = variant !== "borderless" && styles.padded;
16
- const mermaidClassName = styleProps([styles.root, padded], clsx("ant-mermaid-mermaid lobe-mermaid", classes, className)).className;
16
+ const mermaidClassName = styleProps([styles.root, padded], clsx$1("ant-mermaid-mermaid lobe-mermaid", classes, className)).className;
17
17
  const fallback = styleProps([
18
18
  styles.root,
19
19
  styles.unmermaid,
20
20
  padded
21
- ], clsx(classes, fallbackClassName)).className;
21
+ ], clsx$1(classes, fallbackClassName)).className;
22
22
  if (animated) return /* @__PURE__ */ jsx(StreamMermaid, {
23
23
  className: mermaidClassName,
24
24
  fallbackClassName: fallback,
@@ -1 +1 @@
1
- {"version":3,"file":"index.mjs","names":[],"sources":["../../../src/Mermaid/SyntaxMermaid/index.tsx"],"sourcesContent":["'use client';\n\nimport clsx from 'clsx';\nimport { memo } from 'react';\n\nimport { styleProps } from '@/styles/stylex/props';\n\nimport type { SyntaxMermaidProps } from '../type';\nimport StaticMermaid from './StaticMermaid';\nimport StreamMermaid from './StreamMermaid';\nimport { styles } from './style';\n\nconst SyntaxMermaid = memo<SyntaxMermaidProps>(\n ({\n animated,\n children,\n className,\n fallbackClassName,\n ref,\n style,\n theme: customTheme,\n variant = 'borderless',\n }) => {\n const isDefaultTheme = customTheme === 'lobe-theme' || !customTheme;\n const showBackground = !isDefaultTheme && variant === 'filled';\n const resolvedTheme = isDefaultTheme ? undefined : customTheme;\n\n const classes = clsx(\n !showBackground && 'lobe-mermaid-transparent',\n animated && 'lobe-mermaid-animated',\n );\n const padded = variant !== 'borderless' && styles.padded;\n const mermaidClassName = styleProps(\n [styles.root, padded],\n clsx('ant-mermaid-mermaid lobe-mermaid', classes, className),\n ).className;\n const fallback = styleProps(\n [styles.root, styles.unmermaid, padded],\n clsx(classes, fallbackClassName),\n ).className;\n\n if (animated) {\n return (\n <StreamMermaid\n className={mermaidClassName}\n fallbackClassName={fallback}\n ref={ref}\n style={style}\n theme={resolvedTheme}\n variant={variant}\n >\n {children}\n </StreamMermaid>\n );\n }\n\n return (\n <StaticMermaid\n className={mermaidClassName}\n fallbackClassName={fallback}\n ref={ref}\n style={style}\n theme={resolvedTheme}\n variant={variant}\n >\n {children}\n </StaticMermaid>\n );\n },\n (prevProps, nextProps) =>\n prevProps.children === nextProps.children && prevProps.animated === nextProps.animated,\n);\n\nSyntaxMermaid.displayName = 'SyntaxMermaid';\n\nexport default SyntaxMermaid;\n"],"mappings":";;;;;;;;;AAYA,MAAM,gBAAgB,MACnB,EACC,UACA,UACA,WACA,mBACA,KACA,OACA,OAAO,aACP,UAAU,mBACN;CACJ,MAAM,iBAAiB,gBAAgB,gBAAgB,CAAC;CACxD,MAAM,iBAAiB,CAAC,kBAAkB,YAAY;CACtD,MAAM,gBAAgB,iBAAiB,KAAA,IAAY;CAEnD,MAAM,UAAU,KACd,CAAC,kBAAkB,4BACnB,YAAY,uBACd;CACA,MAAM,SAAS,YAAY,gBAAgB,OAAO;CAClD,MAAM,mBAAmB,WACvB,CAAC,OAAO,MAAM,MAAM,GACpB,KAAK,oCAAoC,SAAS,SAAS,CAC7D,CAAC,CAAC;CACF,MAAM,WAAW,WACf;EAAC,OAAO;EAAM,OAAO;EAAW;CAAM,GACtC,KAAK,SAAS,iBAAiB,CACjC,CAAC,CAAC;CAEF,IAAI,UACF,OACE,oBAAC,eAAD;EACE,WAAW;EACX,mBAAmB;EACd;EACE;EACP,OAAO;EACE;EAER;CACY,CAAA;CAInB,OACE,oBAAC,eAAD;EACE,WAAW;EACX,mBAAmB;EACd;EACE;EACP,OAAO;EACE;EAER;CACY,CAAA;AAEnB,IACC,WAAW,cACV,UAAU,aAAa,UAAU,YAAY,UAAU,aAAa,UAAU,QAClF;AAEA,cAAc,cAAc"}
1
+ {"version":3,"file":"index.mjs","names":["clsx"],"sources":["../../../src/Mermaid/SyntaxMermaid/index.tsx"],"sourcesContent":["'use client';\n\nimport clsx from 'clsx';\nimport { memo } from 'react';\n\nimport { styleProps } from '@/styles/stylex/props';\n\nimport type { SyntaxMermaidProps } from '../type';\nimport StaticMermaid from './StaticMermaid';\nimport StreamMermaid from './StreamMermaid';\nimport { styles } from './style';\n\nconst SyntaxMermaid = memo<SyntaxMermaidProps>(\n ({\n animated,\n children,\n className,\n fallbackClassName,\n ref,\n style,\n theme: customTheme,\n variant = 'borderless',\n }) => {\n const isDefaultTheme = customTheme === 'lobe-theme' || !customTheme;\n const showBackground = !isDefaultTheme && variant === 'filled';\n const resolvedTheme = isDefaultTheme ? undefined : customTheme;\n\n const classes = clsx(\n !showBackground && 'lobe-mermaid-transparent',\n animated && 'lobe-mermaid-animated',\n );\n const padded = variant !== 'borderless' && styles.padded;\n const mermaidClassName = styleProps(\n [styles.root, padded],\n clsx('ant-mermaid-mermaid lobe-mermaid', classes, className),\n ).className;\n const fallback = styleProps(\n [styles.root, styles.unmermaid, padded],\n clsx(classes, fallbackClassName),\n ).className;\n\n if (animated) {\n return (\n <StreamMermaid\n className={mermaidClassName}\n fallbackClassName={fallback}\n ref={ref}\n style={style}\n theme={resolvedTheme}\n variant={variant}\n >\n {children}\n </StreamMermaid>\n );\n }\n\n return (\n <StaticMermaid\n className={mermaidClassName}\n fallbackClassName={fallback}\n ref={ref}\n style={style}\n theme={resolvedTheme}\n variant={variant}\n >\n {children}\n </StaticMermaid>\n );\n },\n (prevProps, nextProps) =>\n prevProps.children === nextProps.children && prevProps.animated === nextProps.animated,\n);\n\nSyntaxMermaid.displayName = 'SyntaxMermaid';\n\nexport default SyntaxMermaid;\n"],"mappings":";;;;;;;;;AAYA,MAAM,gBAAgB,MACnB,EACC,UACA,UACA,WACA,mBACA,KACA,OACA,OAAO,aACP,UAAU,mBACN;CACJ,MAAM,iBAAiB,gBAAgB,gBAAgB,CAAC;CACxD,MAAM,iBAAiB,CAAC,kBAAkB,YAAY;CACtD,MAAM,gBAAgB,iBAAiB,KAAA,IAAY;CAEnD,MAAM,UAAUA,OACd,CAAC,kBAAkB,4BACnB,YAAY,uBACd;CACA,MAAM,SAAS,YAAY,gBAAgB,OAAO;CAClD,MAAM,mBAAmB,WACvB,CAAC,OAAO,MAAM,MAAM,GACpBA,OAAK,oCAAoC,SAAS,SAAS,CAC7D,CAAC,CAAC;CACF,MAAM,WAAW,WACf;EAAC,OAAO;EAAM,OAAO;EAAW;CAAM,GACtCA,OAAK,SAAS,iBAAiB,CACjC,CAAC,CAAC;CAEF,IAAI,UACF,OACE,oBAAC,eAAD;EACE,WAAW;EACX,mBAAmB;EACd;EACE;EACP,OAAO;EACE;EAER;CACY,CAAA;CAInB,OACE,oBAAC,eAAD;EACE,WAAW;EACX,mBAAmB;EACd;EACE;EACP,OAAO;EACE;EAER;CACY,CAAA;AAEnB,IACC,WAAW,cACV,UAAU,aAAa,UAAU,YAAY,UAAU,aAAa,UAAU,QAClF;AAEA,cAAc,cAAc"}
@@ -11,7 +11,7 @@ import { ModalLayerProvider, useModalLayer } from "./ModalLayerContext.mjs";
11
11
  import { styles } from "./style.mjs";
12
12
  import { cloneElement, createContext, createElement, isValidElement, use, useCallback, useEffect, useMemo, useState } from "react";
13
13
  import { jsx } 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 { X } from "lucide-react";
17
17
  import { mergeProps } from "@base-ui/react/merge-props";
@@ -20,8 +20,8 @@ import { AnimatePresence } from "motion/react";
20
20
  //#region src/Modal/atoms.tsx
21
21
  const mergeStateClassName = (xstyle, className) => {
22
22
  const base = stylex.props(xstyle).className;
23
- if (typeof className === "function") return (state) => clsx(base, className(state));
24
- return clsx(base, className);
23
+ if (typeof className === "function") return (state) => clsx$1(base, className(state));
24
+ return clsx$1(base, className);
25
25
  };
26
26
  const ModalOpenContext = createContext(null);
27
27
  const ModalActionsContext = createContext(null);
@@ -100,7 +100,7 @@ const ModalBackdrop = ({ className, style, ...rest }) => {
100
100
  const layerStyle = layer?.zIndex !== void 0 ? { zIndex: layer.zIndex } : void 0;
101
101
  if (open !== null) return /* @__PURE__ */ jsx(Dialog.Backdrop, {
102
102
  ...rest,
103
- className: clsx(stylex.props(styles.backdrop).className, className),
103
+ className: clsx$1(stylex.props(styles.backdrop).className, className),
104
104
  style: {
105
105
  ...layerStyle,
106
106
  ...style,
@@ -130,7 +130,7 @@ const ModalPopupImpl = ({ className, children, width, style, motionProps, panelC
130
130
  const composedRef = useMergeRefs([forwardedRef, layer?.popupRef]);
131
131
  if (open !== null && actions) return /* @__PURE__ */ jsx(Dialog.Popup, {
132
132
  ...rest,
133
- className: clsx(stylex.props(styles.popup, xstyle).className, className),
133
+ className: clsx$1(stylex.props(styles.popup, xstyle).className, className),
134
134
  ref: composedRef,
135
135
  style: {
136
136
  ...popupZIndexStyle,
@@ -147,7 +147,7 @@ const ModalPopupImpl = ({ className, children, width, style, motionProps, panelC
147
147
  transition: "none",
148
148
  ...style
149
149
  },
150
- className: clsx(stylex.props(styles.popupInner, panelXstyle).className, panelClassName)
150
+ className: clsx$1(stylex.props(styles.popupInner, panelXstyle).className, panelClassName)
151
151
  }, children) : null
152
152
  })
153
153
  });
@@ -1 +1 @@
1
- {"version":3,"file":"atoms.mjs","names":[],"sources":["../../src/Modal/atoms.tsx"],"sourcesContent":["'use client';\n\nimport { Dialog } from '@base-ui/react/dialog';\nimport { mergeProps } from '@base-ui/react/merge-props';\nimport * as stylex from '@stylexjs/stylex';\nimport clsx from 'clsx';\nimport { X } from 'lucide-react';\nimport { AnimatePresence } from 'motion/react';\nimport type React from 'react';\nimport {\n cloneElement,\n createContext,\n isValidElement,\n use,\n useCallback,\n useEffect,\n useMemo,\n useState,\n} from 'react';\n\nimport { useAppElement } from '@/ConfigProvider/AppElementContext';\nimport { useNativeButton } from '@/hooks/useNativeButton';\nimport { useMotionComponent } from '@/MotionProvider';\nimport { focusRing } from '@/styles/stylex/focusRing';\nimport { styleProps } from '@/styles/stylex/props';\nimport { mergeRefs, useMergeRefs } from '@/utils/mergeRefs';\n\nimport { useLayerZIndex } from '../internal/zIndex';\nimport { backdropTransition, modalMotionConfig } from './constants';\nimport { ModalLayerProvider, useModalLayer } from './ModalLayerContext';\nimport { styles } from './style';\n\ntype XStyle = Parameters<typeof styleProps>[0];\n\nconst mergeStateClassName = <TState,>(\n xstyle: XStyle,\n className: string | ((state: TState) => string | undefined) | undefined,\n) => {\n const base = stylex.props(xstyle).className;\n if (typeof className === 'function') return (state: TState) => clsx(base, className(state));\n return clsx(base, className);\n};\n\n// --- Animation Contexts (granular to minimize re-renders) ---\n\n// State: open boolean, null = non-animated mode\nconst ModalOpenContext = createContext<boolean | null>(null);\n\n// Actions: stable callbacks, null = non-animated mode\ninterface ModalAnimationActions {\n onExitComplete: () => void;\n}\nconst ModalActionsContext = createContext<ModalAnimationActions | null>(null);\n\nexport const useModalOpen = () => use(ModalOpenContext);\nexport const useModalActions = () => use(ModalActionsContext);\n\n// --- Root ---\nexport type ModalRootProps = Dialog.Root.Props & {\n onExitComplete?: () => void;\n zIndex?: number;\n};\n\nconst AnimatedModalRoot = ({\n open,\n children,\n onExitComplete: onExitCompleteProp,\n zIndex: explicitZIndex,\n ...rest\n}: Omit<ModalRootProps, 'open'> & { open: boolean }) => {\n const [isPresent, setIsPresent] = useState(!!open);\n\n useEffect(() => {\n if (open) setIsPresent(true);\n }, [open]);\n\n const handleExitComplete = useCallback(() => {\n setIsPresent(false);\n onExitCompleteProp?.();\n }, [onExitCompleteProp]);\n\n const actions = useMemo(() => ({ onExitComplete: handleExitComplete }), [handleExitComplete]);\n\n const { zIndex, ref: popupRef } = useLayerZIndex<HTMLDivElement>('modal', explicitZIndex);\n const layer = useMemo(\n () => ({ popupRef: popupRef as (node: HTMLElement | null) => void, zIndex }),\n [zIndex, popupRef],\n );\n\n if (!isPresent) return null;\n\n return (\n <ModalOpenContext value={open}>\n <ModalActionsContext value={actions}>\n <ModalLayerProvider value={layer}>\n <Dialog.Root modal open {...rest}>\n {children}\n </Dialog.Root>\n </ModalLayerProvider>\n </ModalActionsContext>\n </ModalOpenContext>\n );\n};\n\nconst NonAnimatedModalRoot = ({ zIndex: explicitZIndex, children, ...rest }: ModalRootProps) => {\n const { zIndex, ref: popupRef } = useLayerZIndex<HTMLDivElement>('modal', explicitZIndex);\n const layer = useMemo(\n () => ({ popupRef: popupRef as (node: HTMLElement | null) => void, zIndex }),\n [zIndex, popupRef],\n );\n return (\n <ModalLayerProvider value={layer}>\n <Dialog.Root modal {...rest}>\n {children}\n </Dialog.Root>\n </ModalLayerProvider>\n );\n};\n\nexport const ModalRoot = ({ open, onExitComplete, ...rest }: ModalRootProps) => {\n if (open !== undefined) {\n return <AnimatedModalRoot open={open} onExitComplete={onExitComplete} {...rest} />;\n }\n return <NonAnimatedModalRoot {...rest} />;\n};\n\n// --- Portal ---\nexport type ModalPortalProps = React.ComponentProps<typeof Dialog.Portal> & {\n container?: HTMLElement | null;\n};\nexport const ModalPortal = ({ container, ...rest }: ModalPortalProps) => {\n const appElement = useAppElement();\n return <Dialog.Portal container={container ?? appElement ?? undefined} {...rest} />;\n};\n\n// --- Viewport ---\nexport type ModalViewportProps = React.ComponentProps<typeof Dialog.Viewport>;\nexport const ModalViewport = ({ className, ...rest }: ModalViewportProps) => (\n <Dialog.Viewport\n {...rest}\n className={mergeStateClassName(styles.viewport, className as any) as any}\n />\n);\n\n// --- Backdrop ---\nexport type ModalBackdropProps = React.ComponentProps<typeof Dialog.Backdrop>;\nexport const ModalBackdrop = ({ className, style, ...rest }: ModalBackdropProps) => {\n const open = useModalOpen();\n const layer = useModalLayer();\n const Motion = useMotionComponent();\n const layerStyle = layer?.zIndex !== undefined ? { zIndex: layer.zIndex } : undefined;\n\n if (open !== null) {\n return (\n <Dialog.Backdrop\n {...rest}\n className={clsx(stylex.props(styles.backdrop).className, className as string)}\n style={{ ...layerStyle, ...style, transition: 'none' }}\n render={\n <Motion.div\n animate={{ opacity: open ? 1 : 0 }}\n initial={{ opacity: 0 }}\n transition={backdropTransition}\n />\n }\n />\n );\n }\n\n return (\n <Dialog.Backdrop\n {...rest}\n className={mergeStateClassName(styles.backdrop, className as any) as any}\n style={{ ...layerStyle, ...style }}\n />\n );\n};\n\n// --- Popup ---\nexport type ModalPopupProps = React.ComponentProps<typeof Dialog.Popup> & {\n motionProps?: Record<string, any>;\n panelClassName?: string;\n popupStyle?: React.CSSProperties;\n width?: number | string;\n};\nexport const ModalPopupImpl = ({\n className,\n children,\n width,\n style,\n motionProps,\n panelClassName,\n panelXstyle,\n popupStyle,\n ref: forwardedRef,\n xstyle,\n ...rest\n}: ModalPopupProps & { panelXstyle?: XStyle; xstyle?: XStyle }) => {\n const open = useModalOpen();\n const actions = useModalActions();\n const layer = useModalLayer();\n const Motion = useMotionComponent();\n const popupZIndexStyle = layer?.zIndex !== undefined ? { zIndex: layer.zIndex + 1 } : undefined;\n const composedRef = useMergeRefs([forwardedRef, layer?.popupRef]);\n\n if (open !== null && actions) {\n return (\n <Dialog.Popup\n {...rest}\n className={clsx(stylex.props(styles.popup, xstyle).className, className as string)}\n ref={composedRef as any}\n style={{ ...popupZIndexStyle, ...popupStyle }}\n >\n <AnimatePresence onExitComplete={actions.onExitComplete}>\n {open ? (\n <Motion.div\n {...modalMotionConfig}\n {...motionProps}\n key=\"modal-popup-panel\"\n style={{ maxWidth: width ?? undefined, transition: 'none', ...style }}\n className={clsx(\n stylex.props(styles.popupInner, panelXstyle).className,\n panelClassName,\n )}\n >\n {children}\n </Motion.div>\n ) : null}\n </AnimatePresence>\n </Dialog.Popup>\n );\n }\n\n return (\n <Dialog.Popup\n {...rest}\n className={mergeStateClassName([styles.popup, xstyle], className as any) as any}\n ref={composedRef as any}\n style={{ ...popupZIndexStyle, ...popupStyle }}\n >\n <div\n {...styleProps([styles.popupInner, panelXstyle], panelClassName, {\n maxWidth: width ?? undefined,\n ...style,\n })}\n >\n {children}\n </div>\n </Dialog.Popup>\n );\n};\n\nexport const ModalPopup: React.FC<ModalPopupProps> = ModalPopupImpl;\n\n// --- Header ---\nexport type ModalHeaderProps = React.HTMLAttributes<HTMLDivElement> & {\n ref?: React.Ref<HTMLDivElement>;\n};\nexport const ModalHeaderImpl = ({\n className,\n style,\n xstyle,\n ...rest\n}: ModalHeaderProps & { xstyle?: XStyle }) => (\n <div {...rest} {...styleProps([styles.header, xstyle], className, style)} />\n);\nexport const ModalHeader: React.FC<ModalHeaderProps> = ModalHeaderImpl;\n\n// --- Title ---\nexport type ModalTitleProps = React.ComponentProps<typeof Dialog.Title>;\nexport const ModalTitleImpl = ({\n className,\n xstyle,\n ...rest\n}: ModalTitleProps & { xstyle?: XStyle }) => (\n <Dialog.Title\n {...rest}\n className={mergeStateClassName([styles.title, xstyle], className as any) as any}\n />\n);\nexport const ModalTitle: React.FC<ModalTitleProps> = ModalTitleImpl;\n\n// --- Description ---\nexport type ModalDescriptionProps = React.ComponentProps<typeof Dialog.Description>;\nexport const ModalDescription: React.FC<ModalDescriptionProps> = Dialog.Description;\n\n// --- Content ---\nexport type ModalContentProps = React.HTMLAttributes<HTMLDivElement> & {\n ref?: React.Ref<HTMLDivElement>;\n};\nexport const ModalContentImpl = ({\n className,\n style,\n xstyle,\n ...rest\n}: ModalContentProps & { xstyle?: XStyle }) => (\n <div {...rest} {...styleProps([styles.content, xstyle], className, style)} />\n);\nexport const ModalContent: React.FC<ModalContentProps> = ModalContentImpl;\n\n// --- Footer ---\nexport type ModalFooterProps = React.HTMLAttributes<HTMLDivElement> & {\n ref?: React.Ref<HTMLDivElement>;\n};\nexport const ModalFooterImpl = ({\n className,\n style,\n xstyle,\n ...rest\n}: ModalFooterProps & { xstyle?: XStyle }) => (\n <div {...rest} {...styleProps([styles.footer, xstyle], className, style)} />\n);\nexport const ModalFooter: React.FC<ModalFooterProps> = ModalFooterImpl;\n\n// --- Close ---\nexport type ModalCloseProps = React.ComponentProps<typeof Dialog.Close>;\nexport const ModalCloseImpl = ({\n className,\n children,\n xstyle,\n ...rest\n}: ModalCloseProps & { xstyle?: XStyle }) => (\n <Dialog.Close\n {...rest}\n className={\n mergeStateClassName(\n [styles.closeInline, styles.close, focusRing.info, xstyle],\n className as any,\n ) as any\n }\n >\n {children ?? <X size={16} />}\n </Dialog.Close>\n);\nexport const ModalClose: React.FC<ModalCloseProps> = ModalCloseImpl;\n\n// --- Trigger ---\nexport type ModalTriggerProps = Omit<\n React.ComponentPropsWithRef<typeof Dialog.Trigger>,\n 'children' | 'render'\n> & {\n children?: React.ReactNode;\n nativeButton?: boolean;\n};\n\nexport const ModalTrigger = ({\n children,\n className,\n nativeButton,\n ref: refProp,\n ...rest\n}: ModalTriggerProps) => {\n const { isNativeButtonTriggerElement, resolvedNativeButton } = useNativeButton({\n children,\n nativeButton,\n });\n\n const renderer = (props: any) => {\n const resolvedProps = (() => {\n if (isNativeButtonTriggerElement) return props as any;\n // eslint-disable-next-line unused-imports/no-unused-vars\n const { type, ...restProps } = props as any;\n return restProps;\n })();\n\n const mergedProps = mergeProps((children as any).props, resolvedProps);\n return cloneElement(children as any, {\n ...mergedProps,\n ref: mergeRefs([(children as any).ref, (props as any).ref, refProp]),\n });\n };\n\n if (isValidElement(children)) {\n return (\n <Dialog.Trigger\n {...rest}\n className={className}\n nativeButton={resolvedNativeButton}\n render={renderer as any}\n />\n );\n }\n\n return (\n <Dialog.Trigger\n {...rest}\n className={className}\n nativeButton={resolvedNativeButton}\n ref={refProp as any}\n >\n {children}\n </Dialog.Trigger>\n );\n};\n"],"mappings":"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"}
1
+ {"version":3,"file":"atoms.mjs","names":["clsx"],"sources":["../../src/Modal/atoms.tsx"],"sourcesContent":["'use client';\n\nimport { Dialog } from '@base-ui/react/dialog';\nimport { mergeProps } from '@base-ui/react/merge-props';\nimport * as stylex from '@stylexjs/stylex';\nimport clsx from 'clsx';\nimport { X } from 'lucide-react';\nimport { AnimatePresence } from 'motion/react';\nimport type React from 'react';\nimport {\n cloneElement,\n createContext,\n isValidElement,\n use,\n useCallback,\n useEffect,\n useMemo,\n useState,\n} from 'react';\n\nimport { useAppElement } from '@/ConfigProvider/AppElementContext';\nimport { useNativeButton } from '@/hooks/useNativeButton';\nimport { useMotionComponent } from '@/MotionProvider';\nimport { focusRing } from '@/styles/stylex/focusRing';\nimport { styleProps } from '@/styles/stylex/props';\nimport { mergeRefs, useMergeRefs } from '@/utils/mergeRefs';\n\nimport { useLayerZIndex } from '../internal/zIndex';\nimport { backdropTransition, modalMotionConfig } from './constants';\nimport { ModalLayerProvider, useModalLayer } from './ModalLayerContext';\nimport { styles } from './style';\n\ntype XStyle = Parameters<typeof styleProps>[0];\n\nconst mergeStateClassName = <TState,>(\n xstyle: XStyle,\n className: string | ((state: TState) => string | undefined) | undefined,\n) => {\n const base = stylex.props(xstyle).className;\n if (typeof className === 'function') return (state: TState) => clsx(base, className(state));\n return clsx(base, className);\n};\n\n// --- Animation Contexts (granular to minimize re-renders) ---\n\n// State: open boolean, null = non-animated mode\nconst ModalOpenContext = createContext<boolean | null>(null);\n\n// Actions: stable callbacks, null = non-animated mode\ninterface ModalAnimationActions {\n onExitComplete: () => void;\n}\nconst ModalActionsContext = createContext<ModalAnimationActions | null>(null);\n\nexport const useModalOpen = () => use(ModalOpenContext);\nexport const useModalActions = () => use(ModalActionsContext);\n\n// --- Root ---\nexport type ModalRootProps = Dialog.Root.Props & {\n onExitComplete?: () => void;\n zIndex?: number;\n};\n\nconst AnimatedModalRoot = ({\n open,\n children,\n onExitComplete: onExitCompleteProp,\n zIndex: explicitZIndex,\n ...rest\n}: Omit<ModalRootProps, 'open'> & { open: boolean }) => {\n const [isPresent, setIsPresent] = useState(!!open);\n\n useEffect(() => {\n if (open) setIsPresent(true);\n }, [open]);\n\n const handleExitComplete = useCallback(() => {\n setIsPresent(false);\n onExitCompleteProp?.();\n }, [onExitCompleteProp]);\n\n const actions = useMemo(() => ({ onExitComplete: handleExitComplete }), [handleExitComplete]);\n\n const { zIndex, ref: popupRef } = useLayerZIndex<HTMLDivElement>('modal', explicitZIndex);\n const layer = useMemo(\n () => ({ popupRef: popupRef as (node: HTMLElement | null) => void, zIndex }),\n [zIndex, popupRef],\n );\n\n if (!isPresent) return null;\n\n return (\n <ModalOpenContext value={open}>\n <ModalActionsContext value={actions}>\n <ModalLayerProvider value={layer}>\n <Dialog.Root modal open {...rest}>\n {children}\n </Dialog.Root>\n </ModalLayerProvider>\n </ModalActionsContext>\n </ModalOpenContext>\n );\n};\n\nconst NonAnimatedModalRoot = ({ zIndex: explicitZIndex, children, ...rest }: ModalRootProps) => {\n const { zIndex, ref: popupRef } = useLayerZIndex<HTMLDivElement>('modal', explicitZIndex);\n const layer = useMemo(\n () => ({ popupRef: popupRef as (node: HTMLElement | null) => void, zIndex }),\n [zIndex, popupRef],\n );\n return (\n <ModalLayerProvider value={layer}>\n <Dialog.Root modal {...rest}>\n {children}\n </Dialog.Root>\n </ModalLayerProvider>\n );\n};\n\nexport const ModalRoot = ({ open, onExitComplete, ...rest }: ModalRootProps) => {\n if (open !== undefined) {\n return <AnimatedModalRoot open={open} onExitComplete={onExitComplete} {...rest} />;\n }\n return <NonAnimatedModalRoot {...rest} />;\n};\n\n// --- Portal ---\nexport type ModalPortalProps = React.ComponentProps<typeof Dialog.Portal> & {\n container?: HTMLElement | null;\n};\nexport const ModalPortal = ({ container, ...rest }: ModalPortalProps) => {\n const appElement = useAppElement();\n return <Dialog.Portal container={container ?? appElement ?? undefined} {...rest} />;\n};\n\n// --- Viewport ---\nexport type ModalViewportProps = React.ComponentProps<typeof Dialog.Viewport>;\nexport const ModalViewport = ({ className, ...rest }: ModalViewportProps) => (\n <Dialog.Viewport\n {...rest}\n className={mergeStateClassName(styles.viewport, className as any) as any}\n />\n);\n\n// --- Backdrop ---\nexport type ModalBackdropProps = React.ComponentProps<typeof Dialog.Backdrop>;\nexport const ModalBackdrop = ({ className, style, ...rest }: ModalBackdropProps) => {\n const open = useModalOpen();\n const layer = useModalLayer();\n const Motion = useMotionComponent();\n const layerStyle = layer?.zIndex !== undefined ? { zIndex: layer.zIndex } : undefined;\n\n if (open !== null) {\n return (\n <Dialog.Backdrop\n {...rest}\n className={clsx(stylex.props(styles.backdrop).className, className as string)}\n style={{ ...layerStyle, ...style, transition: 'none' }}\n render={\n <Motion.div\n animate={{ opacity: open ? 1 : 0 }}\n initial={{ opacity: 0 }}\n transition={backdropTransition}\n />\n }\n />\n );\n }\n\n return (\n <Dialog.Backdrop\n {...rest}\n className={mergeStateClassName(styles.backdrop, className as any) as any}\n style={{ ...layerStyle, ...style }}\n />\n );\n};\n\n// --- Popup ---\nexport type ModalPopupProps = React.ComponentProps<typeof Dialog.Popup> & {\n motionProps?: Record<string, any>;\n panelClassName?: string;\n popupStyle?: React.CSSProperties;\n width?: number | string;\n};\nexport const ModalPopupImpl = ({\n className,\n children,\n width,\n style,\n motionProps,\n panelClassName,\n panelXstyle,\n popupStyle,\n ref: forwardedRef,\n xstyle,\n ...rest\n}: ModalPopupProps & { panelXstyle?: XStyle; xstyle?: XStyle }) => {\n const open = useModalOpen();\n const actions = useModalActions();\n const layer = useModalLayer();\n const Motion = useMotionComponent();\n const popupZIndexStyle = layer?.zIndex !== undefined ? { zIndex: layer.zIndex + 1 } : undefined;\n const composedRef = useMergeRefs([forwardedRef, layer?.popupRef]);\n\n if (open !== null && actions) {\n return (\n <Dialog.Popup\n {...rest}\n className={clsx(stylex.props(styles.popup, xstyle).className, className as string)}\n ref={composedRef as any}\n style={{ ...popupZIndexStyle, ...popupStyle }}\n >\n <AnimatePresence onExitComplete={actions.onExitComplete}>\n {open ? (\n <Motion.div\n {...modalMotionConfig}\n {...motionProps}\n key=\"modal-popup-panel\"\n style={{ maxWidth: width ?? undefined, transition: 'none', ...style }}\n className={clsx(\n stylex.props(styles.popupInner, panelXstyle).className,\n panelClassName,\n )}\n >\n {children}\n </Motion.div>\n ) : null}\n </AnimatePresence>\n </Dialog.Popup>\n );\n }\n\n return (\n <Dialog.Popup\n {...rest}\n className={mergeStateClassName([styles.popup, xstyle], className as any) as any}\n ref={composedRef as any}\n style={{ ...popupZIndexStyle, ...popupStyle }}\n >\n <div\n {...styleProps([styles.popupInner, panelXstyle], panelClassName, {\n maxWidth: width ?? undefined,\n ...style,\n })}\n >\n {children}\n </div>\n </Dialog.Popup>\n );\n};\n\nexport const ModalPopup: React.FC<ModalPopupProps> = ModalPopupImpl;\n\n// --- Header ---\nexport type ModalHeaderProps = React.HTMLAttributes<HTMLDivElement> & {\n ref?: React.Ref<HTMLDivElement>;\n};\nexport const ModalHeaderImpl = ({\n className,\n style,\n xstyle,\n ...rest\n}: ModalHeaderProps & { xstyle?: XStyle }) => (\n <div {...rest} {...styleProps([styles.header, xstyle], className, style)} />\n);\nexport const ModalHeader: React.FC<ModalHeaderProps> = ModalHeaderImpl;\n\n// --- Title ---\nexport type ModalTitleProps = React.ComponentProps<typeof Dialog.Title>;\nexport const ModalTitleImpl = ({\n className,\n xstyle,\n ...rest\n}: ModalTitleProps & { xstyle?: XStyle }) => (\n <Dialog.Title\n {...rest}\n className={mergeStateClassName([styles.title, xstyle], className as any) as any}\n />\n);\nexport const ModalTitle: React.FC<ModalTitleProps> = ModalTitleImpl;\n\n// --- Description ---\nexport type ModalDescriptionProps = React.ComponentProps<typeof Dialog.Description>;\nexport const ModalDescription: React.FC<ModalDescriptionProps> = Dialog.Description;\n\n// --- Content ---\nexport type ModalContentProps = React.HTMLAttributes<HTMLDivElement> & {\n ref?: React.Ref<HTMLDivElement>;\n};\nexport const ModalContentImpl = ({\n className,\n style,\n xstyle,\n ...rest\n}: ModalContentProps & { xstyle?: XStyle }) => (\n <div {...rest} {...styleProps([styles.content, xstyle], className, style)} />\n);\nexport const ModalContent: React.FC<ModalContentProps> = ModalContentImpl;\n\n// --- Footer ---\nexport type ModalFooterProps = React.HTMLAttributes<HTMLDivElement> & {\n ref?: React.Ref<HTMLDivElement>;\n};\nexport const ModalFooterImpl = ({\n className,\n style,\n xstyle,\n ...rest\n}: ModalFooterProps & { xstyle?: XStyle }) => (\n <div {...rest} {...styleProps([styles.footer, xstyle], className, style)} />\n);\nexport const ModalFooter: React.FC<ModalFooterProps> = ModalFooterImpl;\n\n// --- Close ---\nexport type ModalCloseProps = React.ComponentProps<typeof Dialog.Close>;\nexport const ModalCloseImpl = ({\n className,\n children,\n xstyle,\n ...rest\n}: ModalCloseProps & { xstyle?: XStyle }) => (\n <Dialog.Close\n {...rest}\n className={\n mergeStateClassName(\n [styles.closeInline, styles.close, focusRing.info, xstyle],\n className as any,\n ) as any\n }\n >\n {children ?? <X size={16} />}\n </Dialog.Close>\n);\nexport const ModalClose: React.FC<ModalCloseProps> = ModalCloseImpl;\n\n// --- Trigger ---\nexport type ModalTriggerProps = Omit<\n React.ComponentPropsWithRef<typeof Dialog.Trigger>,\n 'children' | 'render'\n> & {\n children?: React.ReactNode;\n nativeButton?: boolean;\n};\n\nexport const ModalTrigger = ({\n children,\n className,\n nativeButton,\n ref: refProp,\n ...rest\n}: ModalTriggerProps) => {\n const { isNativeButtonTriggerElement, resolvedNativeButton } = useNativeButton({\n children,\n nativeButton,\n });\n\n const renderer = (props: any) => {\n const resolvedProps = (() => {\n if (isNativeButtonTriggerElement) return props as any;\n // eslint-disable-next-line unused-imports/no-unused-vars\n const { type, ...restProps } = props as any;\n return restProps;\n })();\n\n const mergedProps = mergeProps((children as any).props, resolvedProps);\n return cloneElement(children as any, {\n ...mergedProps,\n ref: mergeRefs([(children as any).ref, (props as any).ref, refProp]),\n });\n };\n\n if (isValidElement(children)) {\n return (\n <Dialog.Trigger\n {...rest}\n className={className}\n nativeButton={resolvedNativeButton}\n render={renderer as any}\n />\n );\n }\n\n return (\n <Dialog.Trigger\n {...rest}\n className={className}\n nativeButton={resolvedNativeButton}\n ref={refProp as any}\n >\n {children}\n </Dialog.Trigger>\n );\n};\n"],"mappings":"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"}