@jbpark/ui-kit 10.3.0 → 10.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (252) hide show
  1. package/README.ko.md +97 -76
  2. package/README.md +91 -70
  3. package/dist/AutoComplete.mjs +1 -1
  4. package/dist/Breadcrumb.mjs +1 -1
  5. package/dist/Cascader.mjs +2 -2
  6. package/dist/Checkbox.d.mts +10 -0
  7. package/dist/Checkbox.d.mts.map +1 -0
  8. package/dist/Checkbox.mjs +9 -0
  9. package/dist/Checkbox.mjs.map +1 -0
  10. package/dist/CodeEditor.d.mts +8 -2
  11. package/dist/CodeEditor.d.mts.map +1 -1
  12. package/dist/CodeEditor.mjs +9 -4
  13. package/dist/CodeEditor.mjs.map +1 -1
  14. package/dist/{components/molecules/collapse.d.mts → Collapse.d.mts} +1 -1
  15. package/dist/Collapse.d.mts.map +1 -0
  16. package/dist/{components/molecules/collapse.mjs → Collapse.mjs} +3 -3
  17. package/dist/Collapse.mjs.map +1 -0
  18. package/dist/{components/atoms/color-picker.d.mts → ColorPicker.d.mts} +1 -1
  19. package/dist/ColorPicker.d.mts.map +1 -0
  20. package/dist/{components/atoms/color-picker.mjs → ColorPicker.mjs} +3 -3
  21. package/dist/ColorPicker.mjs.map +1 -0
  22. package/dist/{components/templates/container.d.mts → Container.d.mts} +1 -1
  23. package/dist/Container.d.mts.map +1 -0
  24. package/dist/{components/templates/container.mjs → Container.mjs} +2 -2
  25. package/dist/Container.mjs.map +1 -0
  26. package/dist/{components/atoms/date-picker.d.mts → DatePicker.d.mts} +1 -1
  27. package/dist/DatePicker.d.mts.map +1 -0
  28. package/dist/{components/atoms/date-picker.mjs → DatePicker.mjs} +6 -6
  29. package/dist/DatePicker.mjs.map +1 -0
  30. package/dist/{components/organisms/drawer.d.mts → Drawer.d.mts} +1 -1
  31. package/dist/Drawer.d.mts.map +1 -0
  32. package/dist/{components/organisms/drawer.mjs → Drawer.mjs} +5 -5
  33. package/dist/Drawer.mjs.map +1 -0
  34. package/dist/{components/molecules/dropdown.d.mts → Dropdown.d.mts} +2 -2
  35. package/dist/Dropdown.d.mts.map +1 -0
  36. package/dist/{components/molecules/dropdown.mjs → Dropdown.mjs} +4 -4
  37. package/dist/Dropdown.mjs.map +1 -0
  38. package/dist/{components/templates/empty.d.mts → Empty.d.mts} +2 -2
  39. package/dist/Empty.d.mts.map +1 -0
  40. package/dist/{components/templates/empty.mjs → Empty.mjs} +3 -3
  41. package/dist/Empty.mjs.map +1 -0
  42. package/dist/FloatButton.d.mts +10 -0
  43. package/dist/FloatButton.d.mts.map +1 -0
  44. package/dist/FloatButton.mjs +9 -0
  45. package/dist/FloatButton.mjs.map +1 -0
  46. package/dist/Input.d.mts +16 -0
  47. package/dist/Input.d.mts.map +1 -0
  48. package/dist/Input.mjs +15 -0
  49. package/dist/Input.mjs.map +1 -0
  50. package/dist/{components/organisms/list/index.d.mts → List.d.mts} +3 -3
  51. package/dist/List.d.mts.map +1 -0
  52. package/dist/List.mjs +9 -0
  53. package/dist/List.mjs.map +1 -0
  54. package/dist/Marquees.d.mts +10 -0
  55. package/dist/Marquees.d.mts.map +1 -0
  56. package/dist/Marquees.mjs +9 -0
  57. package/dist/Marquees.mjs.map +1 -0
  58. package/dist/Mentions.d.mts.map +1 -1
  59. package/dist/Mentions.mjs +8 -7
  60. package/dist/Mentions.mjs.map +1 -1
  61. package/dist/{components/organisms/modal.d.mts → Modal.d.mts} +1 -1
  62. package/dist/Modal.d.mts.map +1 -0
  63. package/dist/{components/organisms/modal.mjs → Modal.mjs} +6 -6
  64. package/dist/Modal.mjs.map +1 -0
  65. package/dist/{components/templates/page-header.d.mts → PageHeader.d.mts} +1 -1
  66. package/dist/PageHeader.d.mts.map +1 -0
  67. package/dist/{components/templates/page-header.mjs → PageHeader.mjs} +4 -4
  68. package/dist/PageHeader.mjs.map +1 -0
  69. package/dist/Pagination.mjs +2 -2
  70. package/dist/Popconfirm.d.mts +1 -1
  71. package/dist/Popconfirm.mjs +1 -1
  72. package/dist/{components/atoms/popover.d.mts → Popover.d.mts} +1 -1
  73. package/dist/Popover.d.mts.map +1 -0
  74. package/dist/{components/atoms/popover.mjs → Popover.mjs} +4 -4
  75. package/dist/Popover.mjs.map +1 -0
  76. package/dist/{components/atoms/progress.d.mts → Progress.d.mts} +1 -1
  77. package/dist/Progress.d.mts.map +1 -0
  78. package/dist/{components/atoms/progress.mjs → Progress.mjs} +3 -3
  79. package/dist/Progress.mjs.map +1 -0
  80. package/dist/Radio.d.mts +10 -0
  81. package/dist/Radio.d.mts.map +1 -0
  82. package/dist/Radio.mjs +9 -0
  83. package/dist/Radio.mjs.map +1 -0
  84. package/dist/{components/templates/result.d.mts → Result.d.mts} +1 -1
  85. package/dist/Result.d.mts.map +1 -0
  86. package/dist/{components/templates/result.mjs → Result.mjs} +2 -2
  87. package/dist/Result.mjs.map +1 -0
  88. package/dist/RichTextEditor.d.mts +3 -0
  89. package/dist/RichTextEditor.mjs +1 -0
  90. package/dist/{components/atoms/select.d.mts → Select.d.mts} +5 -5
  91. package/dist/Select.d.mts.map +1 -0
  92. package/dist/{components/atoms/select.mjs → Select.mjs} +5 -5
  93. package/dist/Select.mjs.map +1 -0
  94. package/dist/Skeleton.d.mts +12 -0
  95. package/dist/Skeleton.d.mts.map +1 -0
  96. package/dist/Skeleton.mjs +11 -0
  97. package/dist/Skeleton.mjs.map +1 -0
  98. package/dist/Slider.d.mts +2 -0
  99. package/dist/{components/atoms/slider/index.mjs → Slider.mjs} +2 -2
  100. package/dist/Slider.mjs.map +1 -0
  101. package/dist/Space.d.mts +3 -2
  102. package/dist/Space.d.mts.map +1 -1
  103. package/dist/Space.mjs +13 -4
  104. package/dist/Space.mjs.map +1 -1
  105. package/dist/{components/atoms/spin.d.mts → Spin.d.mts} +1 -1
  106. package/dist/Spin.d.mts.map +1 -0
  107. package/dist/{components/atoms/spin.mjs → Spin.mjs} +3 -3
  108. package/dist/Spin.mjs.map +1 -0
  109. package/dist/Splitter.d.mts +10 -0
  110. package/dist/Splitter.d.mts.map +1 -0
  111. package/dist/Splitter.mjs +9 -0
  112. package/dist/Splitter.mjs.map +1 -0
  113. package/dist/Statistic.mjs +1 -1
  114. package/dist/Swiper.d.mts +10 -0
  115. package/dist/Swiper.d.mts.map +1 -0
  116. package/dist/Swiper.mjs +9 -0
  117. package/dist/Swiper.mjs.map +1 -0
  118. package/dist/{components/atoms/switch.d.mts → Switch.d.mts} +2 -2
  119. package/dist/Switch.d.mts.map +1 -0
  120. package/dist/{components/atoms/switch.mjs → Switch.mjs} +4 -4
  121. package/dist/Switch.mjs.map +1 -0
  122. package/dist/Table.mjs +2 -2
  123. package/dist/Table.mjs.map +1 -1
  124. package/dist/{components/molecules/tabs.d.mts → Tabs.d.mts} +3 -3
  125. package/dist/Tabs.d.mts.map +1 -0
  126. package/dist/{components/molecules/tabs.mjs → Tabs.mjs} +3 -3
  127. package/dist/Tabs.mjs.map +1 -0
  128. package/dist/TimePicker.mjs +1 -1
  129. package/dist/{components/organisms/toast.d.mts → Toast.d.mts} +12 -2
  130. package/dist/Toast.d.mts.map +1 -0
  131. package/dist/Toast.mjs +198 -0
  132. package/dist/Toast.mjs.map +1 -0
  133. package/dist/ToggleGroup.d.mts +28 -0
  134. package/dist/ToggleGroup.d.mts.map +1 -0
  135. package/dist/ToggleGroup.mjs +58 -0
  136. package/dist/ToggleGroup.mjs.map +1 -0
  137. package/dist/{components/atoms/tooltip.d.mts → Tooltip.d.mts} +1 -1
  138. package/dist/Tooltip.d.mts.map +1 -0
  139. package/dist/{components/atoms/tooltip.mjs → Tooltip.mjs} +2 -2
  140. package/dist/Tooltip.mjs.map +1 -0
  141. package/dist/Tour.d.mts.map +1 -1
  142. package/dist/Tour.mjs +47 -64
  143. package/dist/Tour.mjs.map +1 -1
  144. package/dist/Transfer.mjs +2 -2
  145. package/dist/Tree.mjs +1 -1
  146. package/dist/{components/molecules/upload.d.mts → Upload.d.mts} +1 -1
  147. package/dist/Upload.d.mts.map +1 -0
  148. package/dist/{components/molecules/upload.mjs → Upload.mjs} +7 -7
  149. package/dist/Upload.mjs.map +1 -0
  150. package/dist/components/atoms/index.d.mts +34 -27
  151. package/dist/components/atoms/input/input.d.mts +2 -1
  152. package/dist/components/atoms/input/input.d.mts.map +1 -1
  153. package/dist/components/atoms/input/input.mjs.map +1 -1
  154. package/dist/components/atoms/rich-text-editor/toolbar-presets.mjs +4 -4
  155. package/dist/components/atoms/select-multiple.mjs +1 -1
  156. package/dist/components/atoms/select-searchable.mjs +1 -1
  157. package/dist/components/molecules/index.d.mts +22 -21
  158. package/dist/components/organisms/form/control.mjs +1 -1
  159. package/dist/components/organisms/imperative-stack.mjs +16 -1
  160. package/dist/components/organisms/imperative-stack.mjs.map +1 -1
  161. package/dist/components/organisms/index.d.mts +15 -15
  162. package/dist/components/organisms/list/list.d.mts +1 -1
  163. package/dist/components/organisms/list/list.mjs +1 -1
  164. package/dist/components/organisms/swiper/swiper.d.mts +6 -0
  165. package/dist/components/organisms/swiper/swiper.d.mts.map +1 -1
  166. package/dist/components/organisms/swiper/swiper.mjs +1 -1
  167. package/dist/components/templates/index.d.mts +11 -12
  168. package/dist/components/templates/layout/sider.d.mts.map +1 -1
  169. package/dist/components/templates/layout/sider.mjs +4 -6
  170. package/dist/components/templates/layout/sider.mjs.map +1 -1
  171. package/dist/core/badge.d.mts +1 -1
  172. package/dist/core/button.d.mts +2 -2
  173. package/dist/index.d.mts +81 -74
  174. package/dist/index.mjs +31 -30
  175. package/dist/style.css +21 -0
  176. package/package.json +157 -2
  177. package/dist/components/atoms/checkbox/index.d.mts +0 -10
  178. package/dist/components/atoms/checkbox/index.d.mts.map +0 -1
  179. package/dist/components/atoms/checkbox/index.mjs +0 -9
  180. package/dist/components/atoms/checkbox/index.mjs.map +0 -1
  181. package/dist/components/atoms/color-picker.d.mts.map +0 -1
  182. package/dist/components/atoms/color-picker.mjs.map +0 -1
  183. package/dist/components/atoms/date-picker.d.mts.map +0 -1
  184. package/dist/components/atoms/date-picker.mjs.map +0 -1
  185. package/dist/components/atoms/float-button/index.d.mts +0 -10
  186. package/dist/components/atoms/float-button/index.d.mts.map +0 -1
  187. package/dist/components/atoms/float-button/index.mjs +0 -9
  188. package/dist/components/atoms/float-button/index.mjs.map +0 -1
  189. package/dist/components/atoms/input/index.d.mts +0 -16
  190. package/dist/components/atoms/input/index.d.mts.map +0 -1
  191. package/dist/components/atoms/input/index.mjs +0 -15
  192. package/dist/components/atoms/input/index.mjs.map +0 -1
  193. package/dist/components/atoms/popover.d.mts.map +0 -1
  194. package/dist/components/atoms/popover.mjs.map +0 -1
  195. package/dist/components/atoms/progress.d.mts.map +0 -1
  196. package/dist/components/atoms/progress.mjs.map +0 -1
  197. package/dist/components/atoms/radio/index.d.mts +0 -10
  198. package/dist/components/atoms/radio/index.d.mts.map +0 -1
  199. package/dist/components/atoms/radio/index.mjs +0 -9
  200. package/dist/components/atoms/radio/index.mjs.map +0 -1
  201. package/dist/components/atoms/rich-text-editor/index.d.mts +0 -3
  202. package/dist/components/atoms/select.d.mts.map +0 -1
  203. package/dist/components/atoms/select.mjs.map +0 -1
  204. package/dist/components/atoms/skeleton/index.d.mts +0 -12
  205. package/dist/components/atoms/skeleton/index.d.mts.map +0 -1
  206. package/dist/components/atoms/skeleton/index.mjs +0 -11
  207. package/dist/components/atoms/skeleton/index.mjs.map +0 -1
  208. package/dist/components/atoms/slider/index.mjs.map +0 -1
  209. package/dist/components/atoms/spin.d.mts.map +0 -1
  210. package/dist/components/atoms/spin.mjs.map +0 -1
  211. package/dist/components/atoms/switch.d.mts.map +0 -1
  212. package/dist/components/atoms/switch.mjs.map +0 -1
  213. package/dist/components/atoms/tooltip.d.mts.map +0 -1
  214. package/dist/components/atoms/tooltip.mjs.map +0 -1
  215. package/dist/components/molecules/collapse.d.mts.map +0 -1
  216. package/dist/components/molecules/collapse.mjs.map +0 -1
  217. package/dist/components/molecules/dropdown.d.mts.map +0 -1
  218. package/dist/components/molecules/dropdown.mjs.map +0 -1
  219. package/dist/components/molecules/marquees/index.d.mts +0 -10
  220. package/dist/components/molecules/marquees/index.d.mts.map +0 -1
  221. package/dist/components/molecules/marquees/index.mjs +0 -9
  222. package/dist/components/molecules/marquees/index.mjs.map +0 -1
  223. package/dist/components/molecules/splitter/index.d.mts +0 -10
  224. package/dist/components/molecules/splitter/index.d.mts.map +0 -1
  225. package/dist/components/molecules/splitter/index.mjs +0 -9
  226. package/dist/components/molecules/splitter/index.mjs.map +0 -1
  227. package/dist/components/molecules/tabs.d.mts.map +0 -1
  228. package/dist/components/molecules/tabs.mjs.map +0 -1
  229. package/dist/components/molecules/upload.d.mts.map +0 -1
  230. package/dist/components/molecules/upload.mjs.map +0 -1
  231. package/dist/components/organisms/drawer.d.mts.map +0 -1
  232. package/dist/components/organisms/drawer.mjs.map +0 -1
  233. package/dist/components/organisms/list/index.d.mts.map +0 -1
  234. package/dist/components/organisms/list/index.mjs +0 -9
  235. package/dist/components/organisms/list/index.mjs.map +0 -1
  236. package/dist/components/organisms/modal.d.mts.map +0 -1
  237. package/dist/components/organisms/modal.mjs.map +0 -1
  238. package/dist/components/organisms/swiper/index.d.mts +0 -10
  239. package/dist/components/organisms/swiper/index.d.mts.map +0 -1
  240. package/dist/components/organisms/swiper/index.mjs +0 -9
  241. package/dist/components/organisms/swiper/index.mjs.map +0 -1
  242. package/dist/components/organisms/toast.d.mts.map +0 -1
  243. package/dist/components/organisms/toast.mjs +0 -126
  244. package/dist/components/organisms/toast.mjs.map +0 -1
  245. package/dist/components/templates/container.d.mts.map +0 -1
  246. package/dist/components/templates/container.mjs.map +0 -1
  247. package/dist/components/templates/empty.d.mts.map +0 -1
  248. package/dist/components/templates/empty.mjs.map +0 -1
  249. package/dist/components/templates/page-header.d.mts.map +0 -1
  250. package/dist/components/templates/page-header.mjs.map +0 -1
  251. package/dist/components/templates/result.d.mts.map +0 -1
  252. package/dist/components/templates/result.mjs.map +0 -1
@@ -44,8 +44,9 @@ function createImperativeStack({ createRootElement, StackItem }) {
44
44
  }, [container]);
45
45
  const getSnapshot = useCallback(() => getContainerState(container).stack, [container]);
46
46
  const stack = useSyncExternalStore(subscribe, getSnapshot, getSnapshot);
47
- return /* @__PURE__ */ jsx(ConfigSnapshotProvider, { children: stack.map(({ id, ...props }) => /* @__PURE__ */ jsx(StackItem, {
47
+ return /* @__PURE__ */ jsx(ConfigSnapshotProvider, { children: stack.map(({ id, ...props }, index) => /* @__PURE__ */ jsx(StackItem, {
48
48
  id,
49
+ index,
49
50
  ...props
50
51
  }, id)) });
51
52
  };
@@ -67,6 +68,19 @@ function createImperativeStack({ createRootElement, StackItem }) {
67
68
  state.update?.();
68
69
  return id;
69
70
  };
71
+ const update = (id, next) => {
72
+ for (const state of containerStates.values()) {
73
+ const index = state.stack.findIndex((item) => item.id === id);
74
+ if (index === -1) continue;
75
+ state.stack = state.stack.map((item, position) => position === index ? {
76
+ ...next(item),
77
+ id
78
+ } : item);
79
+ state.update?.();
80
+ return true;
81
+ }
82
+ return false;
83
+ };
70
84
  const destroy = (id) => {
71
85
  if (!id) {
72
86
  containerStates.forEach((state) => {
@@ -97,6 +111,7 @@ function createImperativeStack({ createRootElement, StackItem }) {
97
111
  };
98
112
  return {
99
113
  render,
114
+ update,
100
115
  destroy,
101
116
  getRootElement
102
117
  };
@@ -1 +1 @@
1
- {"version":3,"file":"imperative-stack.mjs","names":[],"sources":["../../../src/components/organisms/imperative-stack.tsx"],"sourcesContent":["'use client';\n\nimport { useCallback, useSyncExternalStore } from 'react';\nimport { Root, createRoot } from 'react-dom/client';\n\nimport { ConfigSnapshotProvider, getRootConfigValue } from '@repo/ui/providers';\n\n// Monotonic per-session counter for stack item ids. These ids are internal\n// handles (React keys + destroy(id) lookups), not cryptographic, so a plain\n// counter is enough and avoids a runtime `uuid` dependency.\nlet idCounter = 0;\nconst nextId = () => `stack-${(idCounter += 1)}`;\n\n// Shared machinery behind Modal.info/success/error/warning/confirm and\n// Toast.info/success/error/warning — both used to independently\n// reimplement ~120 near-identical lines of this (container-scoped stack,\n// a React root per container, imperative render/destroy). The only parts\n// that actually differ between the two are the DOM node their stack\n// mounts into (position/ARIA) and which component renders each stack\n// entry — everything else here is generic over that.\n\nexport const isBrowser =\n typeof window !== 'undefined' && typeof document !== 'undefined';\n\ntype ContainerState<TProps> = {\n stack: (TProps & { id: string })[];\n update: (() => void) | null;\n};\n\nexport interface ImperativeStack<\n TProps extends { id?: string; container?: HTMLElement },\n> {\n render: (props: TProps) => string | undefined;\n destroy: (id?: string) => void;\n getRootElement: (container?: HTMLElement) => HTMLElement | null;\n}\n\nexport interface ImperativeStackOptions<\n TProps extends { id?: string; container?: HTMLElement },\n> {\n /** Creates the DOM node this stack's React root mounts into — not yet\n * attached to the document; the factory appends it to the target\n * container itself. Called once per distinct container. */\n createRootElement: () => HTMLElement;\n /** Renders one stack entry — typically each caller's \"Static<Thing>\"\n * component, which owns its own createPortal(..., getRootElement()). */\n StackItem: React.ComponentType<TProps & { id: string }>;\n}\n\nexport function createImperativeStack<\n TProps extends { id?: string; container?: HTMLElement },\n>({\n createRootElement,\n StackItem,\n}: ImperativeStackOptions<TProps>): ImperativeStack<TProps> {\n const containerStates = new Map<HTMLElement, ContainerState<TProps>>();\n const rootElements = new WeakMap<HTMLElement, HTMLElement>();\n const reactRoots = new Map<HTMLElement, Root>();\n\n const getContainerState = (\n container: HTMLElement,\n ): ContainerState<TProps> => {\n let state = containerStates.get(container);\n\n if (!state) {\n state = { stack: [], update: null };\n containerStates.set(container, state);\n }\n\n return state;\n };\n\n // Shared by `render` and `getRootElement` so both agree on the same\n // target container whenever the caller doesn't pass one explicitly — the\n // stack's React root (created once, in `render`) and the DOM node a\n // `StackItem` (e.g. StaticToast) later portals into (calling\n // `getRootElement` again with the same, possibly-undefined `container`)\n // would otherwise resolve two different containers here, splitting the\n // React tree (correctly under the root Config, via ConfigSnapshotProvider\n // above) from the actual visible DOM (silently back under `document.body`,\n // outside the Config's themed wrapper — undoing this fix's whole point).\n const resolveContainer = (container?: HTMLElement): HTMLElement =>\n container || getRootConfigValue()?.getContainer() || document.body;\n\n const getRootElement = (container?: HTMLElement): HTMLElement | null => {\n if (!isBrowser) {\n return null;\n }\n\n const targetContainer = resolveContainer(container);\n let rootEl = rootElements.get(targetContainer);\n\n if (!rootEl) {\n rootEl = createRootElement();\n targetContainer.appendChild(rootEl);\n rootElements.set(targetContainer, rootEl);\n }\n\n return rootEl;\n };\n\n const StackRenderer = ({ container }: { container: HTMLElement }) => {\n const subscribe = useCallback(\n (onStoreChange: () => void) => {\n const state = getContainerState(container);\n state.update = onStoreChange;\n return () => {\n state.update = null;\n };\n },\n [container],\n );\n\n const getSnapshot = useCallback(\n () => getContainerState(container).stack,\n [container],\n );\n\n const stack = useSyncExternalStore(subscribe, getSnapshot, getSnapshot);\n\n return (\n <ConfigSnapshotProvider>\n {stack.map(({ id, ...props }) => (\n <StackItem key={id} id={id} {...(props as TProps)} />\n ))}\n </ConfigSnapshotProvider>\n );\n };\n\n const render = (props: TProps): string | undefined => {\n if (!isBrowser) {\n return;\n }\n\n // An explicit `container` prop always wins (it may be chosen for\n // layout reasons unrelated to theming); otherwise mount into the root\n // Config's own themed wrapper element (if one renders — see\n // `needsWrapper` in config.tsx) so CSS custom properties and the\n // `.dark` class cascade to this stack via normal DOM inheritance, not\n // just `document.body` sitting as an unthemed sibling of it.\n const targetContainer = resolveContainer(props.container);\n const rootElement = getRootElement(targetContainer)!;\n\n if (!reactRoots.has(targetContainer)) {\n const root = createRoot(rootElement);\n reactRoots.set(targetContainer, root);\n root.render(<StackRenderer container={targetContainer} />);\n }\n\n const state = getContainerState(targetContainer);\n const id = props.id || nextId();\n state.stack = [...state.stack, { ...props, id }];\n state.update?.();\n\n return id;\n };\n\n const destroy = (id?: string) => {\n if (!id) {\n containerStates.forEach(state => {\n state.stack = [];\n state.update?.();\n });\n reactRoots.forEach((root, container) => {\n root.unmount();\n rootElements.get(container)?.remove();\n rootElements.delete(container);\n });\n reactRoots.clear();\n containerStates.clear();\n return;\n }\n\n containerStates.forEach((state, container) => {\n if (!state.stack.some(item => item.id === id)) {\n return;\n }\n\n state.stack = state.stack.filter(item => item.id !== id);\n state.update?.();\n\n if (!state.stack.length) {\n reactRoots.get(container)?.unmount();\n reactRoots.delete(container);\n containerStates.delete(container);\n rootElements.get(container)?.remove();\n rootElements.delete(container);\n }\n });\n };\n\n return { render, destroy, getRootElement };\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"imperative-stack.mjs","names":[],"sources":["../../../src/components/organisms/imperative-stack.tsx"],"sourcesContent":["'use client';\n\nimport { useCallback, useSyncExternalStore } from 'react';\nimport { Root, createRoot } from 'react-dom/client';\n\nimport { ConfigSnapshotProvider, getRootConfigValue } from '@repo/ui/providers';\n\n// Monotonic per-session counter for stack item ids. These ids are internal\n// handles (React keys + destroy(id) lookups), not cryptographic, so a plain\n// counter is enough and avoids a runtime `uuid` dependency.\nlet idCounter = 0;\nconst nextId = () => `stack-${(idCounter += 1)}`;\n\n// Shared machinery behind Modal.info/success/error/warning/confirm and\n// Toast.info/success/error/warning — both used to independently\n// reimplement ~120 near-identical lines of this (container-scoped stack,\n// a React root per container, imperative render/destroy). The only parts\n// that actually differ between the two are the DOM node their stack\n// mounts into (position/ARIA) and which component renders each stack\n// entry — everything else here is generic over that.\n\nexport const isBrowser =\n typeof window !== 'undefined' && typeof document !== 'undefined';\n\ntype ContainerState<TProps> = {\n stack: (TProps & { id: string })[];\n update: (() => void) | null;\n};\n\nexport interface ImperativeStack<\n TProps extends { id?: string; container?: HTMLElement },\n> {\n render: (props: TProps) => string | undefined;\n // Replaces an existing entry's props in place, keeping its position in the\n // stack; returns false when no container holds `id`.\n update: (id: string, next: (current: TProps) => TProps) => boolean;\n destroy: (id?: string) => void;\n getRootElement: (container?: HTMLElement) => HTMLElement | null;\n}\n\nexport interface ImperativeStackOptions<\n TProps extends { id?: string; container?: HTMLElement },\n> {\n /** Creates the DOM node this stack's React root mounts into — not yet\n * attached to the document; the factory appends it to the target\n * container itself. Called once per distinct container. */\n createRootElement: () => HTMLElement;\n /** Renders one stack entry — typically each caller's \"Static<Thing>\"\n * component, which owns its own createPortal(..., getRootElement()).\n * `index` is the entry's position in its container's stack, oldest first. */\n StackItem: React.ComponentType<TProps & { id: string; index: number }>;\n}\n\nexport function createImperativeStack<\n TProps extends { id?: string; container?: HTMLElement },\n>({\n createRootElement,\n StackItem,\n}: ImperativeStackOptions<TProps>): ImperativeStack<TProps> {\n const containerStates = new Map<HTMLElement, ContainerState<TProps>>();\n const rootElements = new WeakMap<HTMLElement, HTMLElement>();\n const reactRoots = new Map<HTMLElement, Root>();\n\n const getContainerState = (\n container: HTMLElement,\n ): ContainerState<TProps> => {\n let state = containerStates.get(container);\n\n if (!state) {\n state = { stack: [], update: null };\n containerStates.set(container, state);\n }\n\n return state;\n };\n\n // Shared by `render` and `getRootElement` so both agree on the same\n // target container whenever the caller doesn't pass one explicitly — the\n // stack's React root (created once, in `render`) and the DOM node a\n // `StackItem` (e.g. StaticToast) later portals into (calling\n // `getRootElement` again with the same, possibly-undefined `container`)\n // would otherwise resolve two different containers here, splitting the\n // React tree (correctly under the root Config, via ConfigSnapshotProvider\n // above) from the actual visible DOM (silently back under `document.body`,\n // outside the Config's themed wrapper — undoing this fix's whole point).\n const resolveContainer = (container?: HTMLElement): HTMLElement =>\n container || getRootConfigValue()?.getContainer() || document.body;\n\n const getRootElement = (container?: HTMLElement): HTMLElement | null => {\n if (!isBrowser) {\n return null;\n }\n\n const targetContainer = resolveContainer(container);\n let rootEl = rootElements.get(targetContainer);\n\n if (!rootEl) {\n rootEl = createRootElement();\n targetContainer.appendChild(rootEl);\n rootElements.set(targetContainer, rootEl);\n }\n\n return rootEl;\n };\n\n const StackRenderer = ({ container }: { container: HTMLElement }) => {\n const subscribe = useCallback(\n (onStoreChange: () => void) => {\n const state = getContainerState(container);\n state.update = onStoreChange;\n return () => {\n state.update = null;\n };\n },\n [container],\n );\n\n const getSnapshot = useCallback(\n () => getContainerState(container).stack,\n [container],\n );\n\n const stack = useSyncExternalStore(subscribe, getSnapshot, getSnapshot);\n\n return (\n <ConfigSnapshotProvider>\n {stack.map(({ id, ...props }, index) => (\n <StackItem key={id} id={id} index={index} {...(props as TProps)} />\n ))}\n </ConfigSnapshotProvider>\n );\n };\n\n const render = (props: TProps): string | undefined => {\n if (!isBrowser) {\n return;\n }\n\n // An explicit `container` prop always wins (it may be chosen for\n // layout reasons unrelated to theming); otherwise mount into the root\n // Config's own themed wrapper element (if one renders — see\n // `needsWrapper` in config.tsx) so CSS custom properties and the\n // `.dark` class cascade to this stack via normal DOM inheritance, not\n // just `document.body` sitting as an unthemed sibling of it.\n const targetContainer = resolveContainer(props.container);\n const rootElement = getRootElement(targetContainer)!;\n\n if (!reactRoots.has(targetContainer)) {\n const root = createRoot(rootElement);\n reactRoots.set(targetContainer, root);\n root.render(<StackRenderer container={targetContainer} />);\n }\n\n const state = getContainerState(targetContainer);\n const id = props.id || nextId();\n state.stack = [...state.stack, { ...props, id }];\n state.update?.();\n\n return id;\n };\n\n const update = (id: string, next: (current: TProps) => TProps): boolean => {\n for (const state of containerStates.values()) {\n const index = state.stack.findIndex(item => item.id === id);\n\n if (index === -1) {\n continue;\n }\n\n state.stack = state.stack.map((item, position) =>\n position === index ? { ...next(item), id } : item,\n );\n state.update?.();\n\n return true;\n }\n\n return false;\n };\n\n const destroy = (id?: string) => {\n if (!id) {\n containerStates.forEach(state => {\n state.stack = [];\n state.update?.();\n });\n reactRoots.forEach((root, container) => {\n root.unmount();\n rootElements.get(container)?.remove();\n rootElements.delete(container);\n });\n reactRoots.clear();\n containerStates.clear();\n return;\n }\n\n containerStates.forEach((state, container) => {\n if (!state.stack.some(item => item.id === id)) {\n return;\n }\n\n state.stack = state.stack.filter(item => item.id !== id);\n state.update?.();\n\n if (!state.stack.length) {\n reactRoots.get(container)?.unmount();\n reactRoots.delete(container);\n containerStates.delete(container);\n rootElements.get(container)?.remove();\n rootElements.delete(container);\n }\n });\n };\n\n return { render, update, destroy, getRootElement };\n}\n"],"mappings":"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"}
@@ -1,17 +1,17 @@
1
1
  import Calendar, { Props } from "../../Calendar.mjs";
2
- import { Props as Props$1 } from "./form/control.mjs";
3
- import { Props as Props$2 } from "./form/field.mjs";
4
- import { Props as Props$3 } from "./form/form.mjs";
2
+ import Drawer, { Props as Props$1 } from "../../Drawer.mjs";
3
+ import { Props as Props$2 } from "./form/control.mjs";
4
+ import { Props as Props$3 } from "./form/field.mjs";
5
+ import { Props as Props$4 } from "./form/form.mjs";
5
6
  import Form from "../../Form.mjs";
6
- import Table, { Column, PaginationOptions, Props as Props$4 } from "../../Table.mjs";
7
- import Tour, { Props as Props$5, Step } from "../../Tour.mjs";
8
- import Tree, { Actions, ExpandInfo, LoadOptions, Node, Props as Props$6, ScrollOptions } from "../../Tree.mjs";
9
- import TreeSelect, { Props as Props$7 } from "../../TreeSelect.mjs";
10
- import Drawer, { Props as Props$8 } from "./drawer.mjs";
11
- import { Props as Props$9 } from "./list/list.mjs";
12
- import List from "./list/index.mjs";
13
- import Modal, { Props as Props$10 } from "./modal.mjs";
14
- import { Props as Props$11 } from "./swiper/swiper.mjs";
15
- import Swiper from "./swiper/index.mjs";
16
- import Toast, { ToastOptions as StaticProps } from "./toast.mjs";
17
- export { Calendar, type Props as CalendarProps, Drawer, type Props$8 as DrawerProps, Form, type Props$1 as FormControlProps, type Props$2 as FormFieldProps, type Props$3 as FormProps, List, type Props$9 as ListProps, Modal, type Props$10 as ModalProps, Swiper, type Props$11 as SwiperProps, Table, type Column as TableColumn, type PaginationOptions as TablePaginationOptions, type Props$4 as TableProps, Toast, type StaticProps as ToastOptions, Tour, type Props$5 as TourProps, type Step as TourStep, Tree, type Actions as TreeActions, type ExpandInfo as TreeExpandInfo, type LoadOptions as TreeLoadOptions, type Node as TreeNode, type Props$6 as TreeProps, type ScrollOptions as TreeScrollOptions, TreeSelect, type Node as TreeSelectNode, type Props$7 as TreeSelectProps };
7
+ import { Props as Props$5 } from "./list/list.mjs";
8
+ import List from "../../List.mjs";
9
+ import Modal, { Props as Props$6 } from "../../Modal.mjs";
10
+ import { Props as Props$7 } from "./swiper/swiper.mjs";
11
+ import Swiper from "../../Swiper.mjs";
12
+ import Table, { Column, PaginationOptions, Props as Props$8 } from "../../Table.mjs";
13
+ import Toast, { GlobalConfig, Placement, ToastOptions as StaticProps } from "../../Toast.mjs";
14
+ import Tour, { Props as Props$9, Step } from "../../Tour.mjs";
15
+ import Tree, { Actions, ExpandInfo, LoadOptions, Node, Props as Props$10, ScrollOptions } from "../../Tree.mjs";
16
+ import TreeSelect, { Props as Props$11 } from "../../TreeSelect.mjs";
17
+ export { Calendar, type Props as CalendarProps, Drawer, type Props$1 as DrawerProps, Form, type Props$2 as FormControlProps, type Props$3 as FormFieldProps, type Props$4 as FormProps, List, type Props$5 as ListProps, Modal, type Props$6 as ModalProps, Swiper, type Props$7 as SwiperProps, Table, type Column as TableColumn, type PaginationOptions as TablePaginationOptions, type Props$8 as TableProps, Toast, type GlobalConfig as ToastConfig, type StaticProps as ToastOptions, type Placement as ToastPlacement, Tour, type Props$9 as TourProps, type Step as TourStep, Tree, type Actions as TreeActions, type ExpandInfo as TreeExpandInfo, type LoadOptions as TreeLoadOptions, type Node as TreeNode, type Props$10 as TreeProps, type ScrollOptions as TreeScrollOptions, TreeSelect, type Node as TreeSelectNode, type Props$11 as TreeSelectProps };
@@ -1,4 +1,4 @@
1
- import Skeleton from "../../atoms/skeleton/index.mjs";
1
+ import Skeleton from "../../../Skeleton.mjs";
2
2
  import React from "react";
3
3
  //#region src/components/organisms/list/list.d.ts
4
4
  export interface Props<T> extends Omit<React.ComponentPropsWithoutRef<'div'>, 'title'> {
@@ -1,7 +1,7 @@
1
1
  "use client";
2
2
  import { cn, renderConditional } from "../../../utils.mjs";
3
3
  import Title from "../../atoms/typography/title.mjs";
4
- import Skeleton from "../../atoms/skeleton/index.mjs";
4
+ import Skeleton from "../../../Skeleton.mjs";
5
5
  import { useEffect, useRef } from "react";
6
6
  import { useIntersectionObserver } from "@jbpark/use-hooks";
7
7
  import { Fragment as Fragment$1, jsx, jsxs } from "react/jsx-runtime";
@@ -2,6 +2,12 @@ import { SwiperProps } from "swiper/react";
2
2
  import "swiper/css";
3
3
  import { SwiperModule, SwiperOptions } from "swiper/types";
4
4
  //#region src/components/organisms/swiper/swiper.d.ts
5
+ /**
6
+ * Baseline Swiper options. `navigation` / `autoplay` are inert unless the
7
+ * matching modules are passed through the `modules` prop — see the README next
8
+ * to this file.
9
+ */
10
+ export declare const initialOptions: SwiperOptions;
5
11
  export interface Props<T> extends SwiperProps {
6
12
  loading?: boolean;
7
13
  loader?: React.ReactNode;
@@ -1 +1 @@
1
- {"version":3,"file":"swiper.d.mts","names":["Swiper"],"sources":["../../../../src/components/organisms/swiper/swiper.tsx"],"mappings":";;;;iBA+BiB,MAAM,WAAW;EAChC;EACA,SAAS,MAAM;EACf;EACA,UAAU;;;;;;;;;;;;;;;EAeV,UAAU;EACV,MAAM;EACN,WAAW,MAAM,GAAG,cAAc,MAAM;;cAGpCA,WAAU,KAAI,SAAA,QAAA,SAAA,SAAA,MAAA,OAAA,WAAA,YAAA,qBAAA,SAWjB,MAAM,uBAAE,IAAA"}
1
+ {"version":3,"file":"swiper.d.mts","names":["Swiper"],"sources":["../../../../src/components/organisms/swiper/swiper.tsx"],"mappings":";;;;;;;;;qBAkBa,gBAAgB;iBAaZ,MAAM,WAAW;EAChC;EACA,SAAS,MAAM;EACf;EACA,UAAU;;;;;;;;;;;;;;;EAeV,UAAU;EACV,MAAM;EACN,WAAW,MAAM,GAAG,cAAc,MAAM;;cAGpCA,WAAU,KAAI,SAAA,QAAA,SAAA,SAAA,MAAA,OAAA,WAAA,YAAA,qBAAA,SAWjB,MAAM,uBAAE,IAAA"}
@@ -1,6 +1,6 @@
1
1
  "use client";
2
2
  import { cn } from "../../../utils.mjs";
3
- import Spin from "../../atoms/spin.mjs";
3
+ import Spin from "../../../Spin.mjs";
4
4
  import { cloneElement, isValidElement } from "react";
5
5
  import { jsx } from "react/jsx-runtime";
6
6
  import { Swiper } from "swiper/react";
@@ -1,13 +1,12 @@
1
- import { Props } from "./layout/content.mjs";
2
- import { Props as Props$1 } from "./layout/footer.mjs";
3
- import { Props as Props$2 } from "./layout/header.mjs";
4
- import { Props as Props$3 } from "./layout/layout.mjs";
5
- import { Props as Props$4 } from "./layout/sider.mjs";
1
+ import Container, { Props } from "../../Container.mjs";
2
+ import { Props as Props$1 } from "./layout/content.mjs";
3
+ import { Props as Props$2 } from "./layout/footer.mjs";
4
+ import { Props as Props$3 } from "./layout/header.mjs";
5
+ import { Props as Props$4 } from "./layout/layout.mjs";
6
+ import { Props as Props$5 } from "./layout/sider.mjs";
6
7
  import Layout from "../../Layout.mjs";
7
- import Container, { Props as Props$5 } from "./container.mjs";
8
- import Empty, { Props as Props$6 } from "./empty.mjs";
9
- import Result, { Props as Props$7 } from "./result.mjs";
10
- import PageHeader, { Props as Props$8 } from "./page-header.mjs";
11
- import Row, { Props as Props$9 } from "./grid/row.mjs";
12
- import Col, { Props as Props$10 } from "./grid/col.mjs";
13
- export { Col, type Props$10 as ColProps, Container, type Props$5 as ContainerProps, type Props as ContentProps, Empty, type Props$6 as EmptyProps, type Props$1 as FooterProps, type Props$2 as HeaderProps, Layout, type Props$3 as LayoutProps, PageHeader, type Props$8 as PageHeaderProps, Result, type Props$7 as ResultProps, Row, type Props$9 as RowProps, type Props$4 as SiderProps };
8
+ import PageHeader, { Props as Props$6 } from "../../PageHeader.mjs";
9
+ import Result, { Props as Props$7 } from "../../Result.mjs";
10
+ import Row, { Props as Props$8 } from "./grid/row.mjs";
11
+ import Col, { Props as Props$9 } from "./grid/col.mjs";
12
+ export { Col, type Props$9 as ColProps, Container, type Props as ContainerProps, type Props$1 as ContentProps, type Props$2 as FooterProps, type Props$3 as HeaderProps, Layout, type Props$4 as LayoutProps, PageHeader, type Props$6 as PageHeaderProps, Result, type Props$7 as ResultProps, Row, type Props$8 as RowProps, type Props$5 as SiderProps };
@@ -1 +1 @@
1
- {"version":3,"file":"sider.d.mts","names":[],"sources":["../../../../src/components/templates/layout/sider.tsx"],"mappings":";KAYK;iBAQY,cAAc,KAC7B,MAAM;EAGN;EACA;EACA;EACA;EACA;EACA;EACA;EACA,UAAU,MAAM;EAChB;IACE;;EAEF,aAAa;EACb,cAAc;EACd,gBAAgB;;cAMZ,UAAS,UAAA,WAAA,YAAA,OAAA,OAAA,gBAAA,aAAA,kBAAA,WAAA,YAAA,WAAA,cAAA,SAAA,YAAA,YAAA,iBAAA,SAiBZ,0BAAK,IAAA"}
1
+ {"version":3,"file":"sider.d.mts","names":[],"sources":["../../../../src/components/templates/layout/sider.tsx"],"mappings":";KAgBK;iBAQY,cAAc,KAC7B,MAAM;EAGN;EACA;EACA;EACA;EACA;EACA;EACA;EACA,UAAU,MAAM;EAChB;IACE;;EAEF,aAAa;EACb,cAAc;EACd,gBAAgB;;cAMZ,UAAS,UAAA,WAAA,YAAA,OAAA,OAAA,gBAAA,aAAA,kBAAA,WAAA,YAAA,WAAA,cAAA,SAAA,YAAA,YAAA,iBAAA,SAiBZ,0BAAK,IAAA"}
@@ -3,7 +3,7 @@ import { cn } from "../../../utils.mjs";
3
3
  import { DEFAULT_LOCALE, useConfig } from "../../../providers/config/context.mjs";
4
4
  import { useRegisterSider } from "./sider-context.mjs";
5
5
  import { useEffect, useId, useRef } from "react";
6
- import { useControllableState, useResponsiveSize } from "@jbpark/use-hooks";
6
+ import { useControllableState, useLatest, useResponsiveSize } from "@jbpark/use-hooks";
7
7
  import { jsx, jsxs } from "react/jsx-runtime";
8
8
  import { PanelLeftClose, PanelLeftOpen } from "lucide-react";
9
9
  //#region src/components/templates/layout/sider.tsx
@@ -30,10 +30,7 @@ const Sider = ({ children, className, classNames, style, width = 200, collapsedW
30
30
  const latestBrokenRef = useRef(broken);
31
31
  const previousBrokenRef = useRef(null);
32
32
  const microtaskScheduledRef = useRef(false);
33
- const onBreakpointRef = useRef(onBreakpoint);
34
- useEffect(() => {
35
- onBreakpointRef.current = onBreakpoint;
36
- });
33
+ const onBreakpointRef = useLatest(onBreakpoint);
37
34
  useEffect(() => {
38
35
  if (!breakpoint) return;
39
36
  latestBrokenRef.current = broken;
@@ -50,7 +47,8 @@ const Sider = ({ children, className, classNames, style, width = 200, collapsedW
50
47
  }, [
51
48
  broken,
52
49
  breakpoint,
53
- setCollapsed
50
+ setCollapsed,
51
+ onBreakpointRef
54
52
  ]);
55
53
  const onTriggerClick = () => {
56
54
  setCollapsed(!collapsed);
@@ -1 +1 @@
1
- {"version":3,"file":"sider.mjs","names":[],"sources":["../../../../src/components/templates/layout/sider.tsx"],"sourcesContent":["'use client';\n\nimport { useEffect, useId, useRef } from 'react';\n\nimport { useControllableState, useResponsiveSize } from '@jbpark/use-hooks';\nimport { PanelLeftClose, PanelLeftOpen } from 'lucide-react';\n\nimport { DEFAULT_LOCALE, useConfig } from '@repo/ui/providers';\nimport { cn } from '@repo/ui/utils';\n\nimport { useRegisterSider } from './sider-context';\n\ntype Breakpoint = 'xs' | 'sm' | 'md' | 'lg' | 'xl' | '2xl';\n\n// Order matters here, not the values — used to compare the current\n// viewport tier against the configured `breakpoint` ordinally, since\n// `useResponsiveSize` reports which named tier the viewport is currently\n// in rather than a raw pixel width.\nconst BREAKPOINT_ORDER: Breakpoint[] = ['xs', 'sm', 'md', 'lg', 'xl', '2xl'];\n\nexport interface Props extends Omit<\n React.ComponentProps<'aside'>,\n 'onCollapse'\n> {\n width?: number | string;\n collapsedWidth?: number | string;\n collapsible?: boolean;\n defaultCollapsed?: boolean;\n collapsed?: boolean;\n placement?: 'left' | 'right';\n reverseArrow?: boolean;\n trigger?: React.ReactNode;\n classNames?: {\n trigger?: string;\n };\n breakpoint?: Breakpoint;\n onCollapse?: (collapsed: boolean) => void;\n onBreakpoint?: (broken: boolean) => void;\n}\n\nconst toCssSize = (value: number | string) =>\n typeof value === 'number' ? `${value}px` : value;\n\nconst Sider = ({\n children,\n className,\n classNames,\n style,\n width = 200,\n collapsedWidth = 80,\n collapsible = false,\n defaultCollapsed = false,\n collapsed: _collapsed,\n placement = 'left',\n reverseArrow = false,\n trigger,\n breakpoint,\n onCollapse,\n onBreakpoint,\n ...props\n}: Props) => {\n useRegisterSider();\n\n const { locale } = useConfig();\n const contentId = useId();\n const [collapsed, setCollapsed] = useControllableState<boolean>({\n value: _collapsed,\n defaultValue: defaultCollapsed,\n onChange: onCollapse,\n });\n\n const { breakpoint: viewportBreakpoint } = useResponsiveSize({\n viewport: true,\n });\n const broken = breakpoint\n ? BREAKPOINT_ORDER.indexOf(viewportBreakpoint.current) <\n BREAKPOINT_ORDER.indexOf(breakpoint)\n : false;\n\n const latestBrokenRef = useRef(broken);\n const previousBrokenRef = useRef<boolean | null>(null);\n const microtaskScheduledRef = useRef(false);\n const onBreakpointRef = useRef(onBreakpoint);\n\n useEffect(() => {\n onBreakpointRef.current = onBreakpoint;\n });\n\n // `useResponsiveSize`'s own initial measurement resolves through its own\n // layout effect, which (since it's called earlier in this component)\n // commits and — if the real viewport differs from its SSR-safe 'xs'\n // placeholder default — triggers a synchronous corrective re-render, all\n // before the browser paints. Both the placeholder-derived render and the\n // corrected one get their own effect pass (React doesn't coalesce\n // same-tick synchronous re-commits into a single effect flush), so\n // reacting to `broken` directly — in a layout or passive effect either\n // way — fires once with the wrong placeholder value, then again with the\n // corrected one.\n //\n // Coalescing through a microtask sidesteps that: every effect pass just\n // records its `broken` into a ref and schedules (at most once) a\n // microtask that reads whatever ended up latest once the synchronous\n // cascade has fully settled, and acts on that single, correct value.\n //\n // The `previousBrokenRef` guard is the separate fix for #227 point 3:\n // without it, an inline `onCollapse`/`onBreakpoint` (a fresh identity\n // every render) would change `setCollapsed`'s own identity and re-run\n // this effect on every unrelated parent re-render, reapplying `broken`\n // and undoing a user's manual toggle. Only a genuine change should act.\n useEffect(() => {\n if (!breakpoint) {\n return;\n }\n\n latestBrokenRef.current = broken;\n\n if (microtaskScheduledRef.current) {\n return;\n }\n microtaskScheduledRef.current = true;\n\n queueMicrotask(() => {\n microtaskScheduledRef.current = false;\n\n const settledBroken = latestBrokenRef.current;\n\n if (previousBrokenRef.current === settledBroken) {\n return;\n }\n\n previousBrokenRef.current = settledBroken;\n setCollapsed(settledBroken);\n onBreakpointRef.current?.(settledBroken);\n });\n }, [broken, breakpoint, setCollapsed]);\n\n const onTriggerClick = () => {\n setCollapsed(!collapsed);\n };\n\n // A right-placed Sider's collapse icon should default to pointing the\n // opposite way from a left-placed one (it's opening/closing a panel on\n // the other side of the content), so `placement` flips the effective\n // direction on top of whatever `reverseArrow` already requests —\n // `reverseArrow` still layers on as a manual override either way.\n const effectiveReverseArrow = reverseArrow !== (placement === 'right');\n const TriggerIcon =\n collapsed !== effectiveReverseArrow ? PanelLeftOpen : PanelLeftClose;\n\n return (\n <aside\n data-slot=\"layout-sider\"\n className={cn(\n // Below Header — and below every other floating/overlay primitive\n // in this library, which all share OVERLAY_LAYER (lib/z-layers.ts).\n // Sider is a static layout column, not floating chrome, and\n // previously outranked Header with an arbitrary z-100, covering it\n // once Header stuck to the viewport top on scroll. Kept as a small\n // absolute value rather than tracking OVERLAY_LAYER: it only has to\n // stay under that layer, and raising it in step would defeat this.\n 'z-10 flex h-full shrink-0 flex-col overflow-hidden',\n 'transition-[width] duration-200',\n // Lets a Sider visually sit on the right without needing to\n // reorder JSX/children — useful since Sider's presence is\n // detected via context (sider-context.ts) rather than requiring\n // it to be a specific direct child in a specific position.\n placement === 'right' && 'order-last',\n className,\n //\n )}\n style={{\n width: toCssSize(collapsed ? collapsedWidth : width),\n ...style,\n }}\n {...props}\n >\n <div id={contentId} className=\"min-h-0 flex-1 overflow-auto\">\n {children}\n </div>\n {collapsible && trigger !== null && (\n <button\n type=\"button\"\n data-slot=\"layout-sider-trigger\"\n aria-label={\n collapsed\n ? (locale.expand ?? DEFAULT_LOCALE.expand)\n : (locale.collapse ?? DEFAULT_LOCALE.collapse)\n }\n aria-expanded={!collapsed}\n aria-controls={contentId}\n onClick={onTriggerClick}\n className={cn(\n 'flex w-full shrink-0 items-center justify-center py-2',\n 'cursor-pointer transition-colors hover:bg-black/5',\n classNames?.trigger,\n //\n )}\n >\n {trigger === undefined ? <TriggerIcon className=\"size-4\" /> : trigger}\n </button>\n )}\n </aside>\n );\n};\n\nexport default Sider;\n"],"mappings":";;;;;;;;;AAkBA,MAAM,mBAAiC;CAAC;CAAM;CAAM;CAAM;CAAM;CAAM;AAAK;AAsB3E,MAAM,aAAa,UACjB,OAAO,UAAU,WAAW,GAAG,MAAM,MAAM;AAE7C,MAAM,SAAS,EACb,UACA,WACA,YACA,OACA,QAAQ,KACR,iBAAiB,IACjB,cAAc,OACd,mBAAmB,OACnB,WAAW,YACX,YAAY,QACZ,eAAe,OACf,SACA,YACA,YACA,cACA,GAAG,YACQ;CACX,iBAAiB;CAEjB,MAAM,EAAE,WAAW,UAAU;CAC7B,MAAM,YAAY,MAAM;CACxB,MAAM,CAAC,WAAW,gBAAgB,qBAA8B;EAC9D,OAAO;EACP,cAAc;EACd,UAAU;CACZ,CAAC;CAED,MAAM,EAAE,YAAY,uBAAuB,kBAAkB,EAC3D,UAAU,KACZ,CAAC;CACD,MAAM,SAAS,aACX,iBAAiB,QAAQ,mBAAmB,OAAO,IACnD,iBAAiB,QAAQ,UAAU,IACnC;CAEJ,MAAM,kBAAkB,OAAO,MAAM;CACrC,MAAM,oBAAoB,OAAuB,IAAI;CACrD,MAAM,wBAAwB,OAAO,KAAK;CAC1C,MAAM,kBAAkB,OAAO,YAAY;CAE3C,gBAAgB;EACd,gBAAgB,UAAU;CAC5B,CAAC;CAuBD,gBAAgB;EACd,IAAI,CAAC,YACH;EAGF,gBAAgB,UAAU;EAE1B,IAAI,sBAAsB,SACxB;EAEF,sBAAsB,UAAU;EAEhC,qBAAqB;GACnB,sBAAsB,UAAU;GAEhC,MAAM,gBAAgB,gBAAgB;GAEtC,IAAI,kBAAkB,YAAY,eAChC;GAGF,kBAAkB,UAAU;GAC5B,aAAa,aAAa;GAC1B,gBAAgB,UAAU,aAAa;EACzC,CAAC;CACH,GAAG;EAAC;EAAQ;EAAY;CAAY,CAAC;CAErC,MAAM,uBAAuB;EAC3B,aAAa,CAAC,SAAS;CACzB;CAQA,MAAM,cACJ,eAF4B,kBAAkB,cAAc,YAEtB,gBAAgB;CAExD,OACE,qBAAC,SAAD;EACE,aAAU;EACV,WAAW,GAQT,sDACA,mCAKA,cAAc,WAAW,cACzB,SAEF;EACA,OAAO;GACL,OAAO,UAAU,YAAY,iBAAiB,KAAK;GACnD,GAAG;EACL;EACA,GAAI;EAxBN,UAAA,CA0BE,oBAAC,OAAD;GAAK,IAAI;GAAW,WAAU;GAC3B;EACE,CAAA,GACJ,eAAe,YAAY,QAC1B,oBAAC,UAAD;GACE,MAAK;GACL,aAAU;GACV,cACE,YACK,OAAO,UAAU,eAAe,SAChC,OAAO,YAAY,eAAe;GAEzC,iBAAe,CAAC;GAChB,iBAAe;GACf,SAAS;GACT,WAAW,GACT,yDACA,qDACA,YAAY,OAEd;GAEC,UAAA,YAAY,KAAA,IAAY,oBAAC,aAAD,EAAa,WAAU,SAAU,CAAA,IAAI;EACxD,CAAA,CAEL;;AAEX"}
1
+ {"version":3,"file":"sider.mjs","names":[],"sources":["../../../../src/components/templates/layout/sider.tsx"],"sourcesContent":["'use client';\n\nimport { useEffect, useId, useRef } from 'react';\n\nimport {\n useControllableState,\n useLatest,\n useResponsiveSize,\n} from '@jbpark/use-hooks';\nimport { PanelLeftClose, PanelLeftOpen } from 'lucide-react';\n\nimport { DEFAULT_LOCALE, useConfig } from '@repo/ui/providers';\nimport { cn } from '@repo/ui/utils';\n\nimport { useRegisterSider } from './sider-context';\n\ntype Breakpoint = 'xs' | 'sm' | 'md' | 'lg' | 'xl' | '2xl';\n\n// Order matters here, not the values — used to compare the current\n// viewport tier against the configured `breakpoint` ordinally, since\n// `useResponsiveSize` reports which named tier the viewport is currently\n// in rather than a raw pixel width.\nconst BREAKPOINT_ORDER: Breakpoint[] = ['xs', 'sm', 'md', 'lg', 'xl', '2xl'];\n\nexport interface Props extends Omit<\n React.ComponentProps<'aside'>,\n 'onCollapse'\n> {\n width?: number | string;\n collapsedWidth?: number | string;\n collapsible?: boolean;\n defaultCollapsed?: boolean;\n collapsed?: boolean;\n placement?: 'left' | 'right';\n reverseArrow?: boolean;\n trigger?: React.ReactNode;\n classNames?: {\n trigger?: string;\n };\n breakpoint?: Breakpoint;\n onCollapse?: (collapsed: boolean) => void;\n onBreakpoint?: (broken: boolean) => void;\n}\n\nconst toCssSize = (value: number | string) =>\n typeof value === 'number' ? `${value}px` : value;\n\nconst Sider = ({\n children,\n className,\n classNames,\n style,\n width = 200,\n collapsedWidth = 80,\n collapsible = false,\n defaultCollapsed = false,\n collapsed: _collapsed,\n placement = 'left',\n reverseArrow = false,\n trigger,\n breakpoint,\n onCollapse,\n onBreakpoint,\n ...props\n}: Props) => {\n useRegisterSider();\n\n const { locale } = useConfig();\n const contentId = useId();\n const [collapsed, setCollapsed] = useControllableState<boolean>({\n value: _collapsed,\n defaultValue: defaultCollapsed,\n onChange: onCollapse,\n });\n\n const { breakpoint: viewportBreakpoint } = useResponsiveSize({\n viewport: true,\n });\n const broken = breakpoint\n ? BREAKPOINT_ORDER.indexOf(viewportBreakpoint.current) <\n BREAKPOINT_ORDER.indexOf(breakpoint)\n : false;\n\n const latestBrokenRef = useRef(broken);\n const previousBrokenRef = useRef<boolean | null>(null);\n const microtaskScheduledRef = useRef(false);\n const onBreakpointRef = useLatest(onBreakpoint);\n\n // `useResponsiveSize`'s own initial measurement resolves through its own\n // layout effect, which (since it's called earlier in this component)\n // commits and — if the real viewport differs from its SSR-safe 'xs'\n // placeholder default — triggers a synchronous corrective re-render, all\n // before the browser paints. Both the placeholder-derived render and the\n // corrected one get their own effect pass (React doesn't coalesce\n // same-tick synchronous re-commits into a single effect flush), so\n // reacting to `broken` directly — in a layout or passive effect either\n // way — fires once with the wrong placeholder value, then again with the\n // corrected one.\n //\n // Coalescing through a microtask sidesteps that: every effect pass just\n // records its `broken` into a ref and schedules (at most once) a\n // microtask that reads whatever ended up latest once the synchronous\n // cascade has fully settled, and acts on that single, correct value.\n //\n // The `previousBrokenRef` guard is the separate fix for #227 point 3:\n // without it, an inline `onCollapse`/`onBreakpoint` (a fresh identity\n // every render) would change `setCollapsed`'s own identity and re-run\n // this effect on every unrelated parent re-render, reapplying `broken`\n // and undoing a user's manual toggle. Only a genuine change should act.\n useEffect(() => {\n if (!breakpoint) {\n return;\n }\n\n latestBrokenRef.current = broken;\n\n if (microtaskScheduledRef.current) {\n return;\n }\n microtaskScheduledRef.current = true;\n\n queueMicrotask(() => {\n microtaskScheduledRef.current = false;\n\n const settledBroken = latestBrokenRef.current;\n\n if (previousBrokenRef.current === settledBroken) {\n return;\n }\n\n previousBrokenRef.current = settledBroken;\n setCollapsed(settledBroken);\n onBreakpointRef.current?.(settledBroken);\n });\n }, [broken, breakpoint, setCollapsed, onBreakpointRef]);\n\n const onTriggerClick = () => {\n setCollapsed(!collapsed);\n };\n\n // A right-placed Sider's collapse icon should default to pointing the\n // opposite way from a left-placed one (it's opening/closing a panel on\n // the other side of the content), so `placement` flips the effective\n // direction on top of whatever `reverseArrow` already requests —\n // `reverseArrow` still layers on as a manual override either way.\n const effectiveReverseArrow = reverseArrow !== (placement === 'right');\n const TriggerIcon =\n collapsed !== effectiveReverseArrow ? PanelLeftOpen : PanelLeftClose;\n\n return (\n <aside\n data-slot=\"layout-sider\"\n className={cn(\n // Below Header — and below every other floating/overlay primitive\n // in this library, which all share OVERLAY_LAYER (lib/z-layers.ts).\n // Sider is a static layout column, not floating chrome, and\n // previously outranked Header with an arbitrary z-100, covering it\n // once Header stuck to the viewport top on scroll. Kept as a small\n // absolute value rather than tracking OVERLAY_LAYER: it only has to\n // stay under that layer, and raising it in step would defeat this.\n 'z-10 flex h-full shrink-0 flex-col overflow-hidden',\n 'transition-[width] duration-200',\n // Lets a Sider visually sit on the right without needing to\n // reorder JSX/children — useful since Sider's presence is\n // detected via context (sider-context.ts) rather than requiring\n // it to be a specific direct child in a specific position.\n placement === 'right' && 'order-last',\n className,\n //\n )}\n style={{\n width: toCssSize(collapsed ? collapsedWidth : width),\n ...style,\n }}\n {...props}\n >\n <div id={contentId} className=\"min-h-0 flex-1 overflow-auto\">\n {children}\n </div>\n {collapsible && trigger !== null && (\n <button\n type=\"button\"\n data-slot=\"layout-sider-trigger\"\n aria-label={\n collapsed\n ? (locale.expand ?? DEFAULT_LOCALE.expand)\n : (locale.collapse ?? DEFAULT_LOCALE.collapse)\n }\n aria-expanded={!collapsed}\n aria-controls={contentId}\n onClick={onTriggerClick}\n className={cn(\n 'flex w-full shrink-0 items-center justify-center py-2',\n 'cursor-pointer transition-colors hover:bg-black/5',\n classNames?.trigger,\n //\n )}\n >\n {trigger === undefined ? <TriggerIcon className=\"size-4\" /> : trigger}\n </button>\n )}\n </aside>\n );\n};\n\nexport default Sider;\n"],"mappings":";;;;;;;;;AAsBA,MAAM,mBAAiC;CAAC;CAAM;CAAM;CAAM;CAAM;CAAM;AAAK;AAsB3E,MAAM,aAAa,UACjB,OAAO,UAAU,WAAW,GAAG,MAAM,MAAM;AAE7C,MAAM,SAAS,EACb,UACA,WACA,YACA,OACA,QAAQ,KACR,iBAAiB,IACjB,cAAc,OACd,mBAAmB,OACnB,WAAW,YACX,YAAY,QACZ,eAAe,OACf,SACA,YACA,YACA,cACA,GAAG,YACQ;CACX,iBAAiB;CAEjB,MAAM,EAAE,WAAW,UAAU;CAC7B,MAAM,YAAY,MAAM;CACxB,MAAM,CAAC,WAAW,gBAAgB,qBAA8B;EAC9D,OAAO;EACP,cAAc;EACd,UAAU;CACZ,CAAC;CAED,MAAM,EAAE,YAAY,uBAAuB,kBAAkB,EAC3D,UAAU,KACZ,CAAC;CACD,MAAM,SAAS,aACX,iBAAiB,QAAQ,mBAAmB,OAAO,IACnD,iBAAiB,QAAQ,UAAU,IACnC;CAEJ,MAAM,kBAAkB,OAAO,MAAM;CACrC,MAAM,oBAAoB,OAAuB,IAAI;CACrD,MAAM,wBAAwB,OAAO,KAAK;CAC1C,MAAM,kBAAkB,UAAU,YAAY;CAuB9C,gBAAgB;EACd,IAAI,CAAC,YACH;EAGF,gBAAgB,UAAU;EAE1B,IAAI,sBAAsB,SACxB;EAEF,sBAAsB,UAAU;EAEhC,qBAAqB;GACnB,sBAAsB,UAAU;GAEhC,MAAM,gBAAgB,gBAAgB;GAEtC,IAAI,kBAAkB,YAAY,eAChC;GAGF,kBAAkB,UAAU;GAC5B,aAAa,aAAa;GAC1B,gBAAgB,UAAU,aAAa;EACzC,CAAC;CACH,GAAG;EAAC;EAAQ;EAAY;EAAc;CAAe,CAAC;CAEtD,MAAM,uBAAuB;EAC3B,aAAa,CAAC,SAAS;CACzB;CAQA,MAAM,cACJ,eAF4B,kBAAkB,cAAc,YAEtB,gBAAgB;CAExD,OACE,qBAAC,SAAD;EACE,aAAU;EACV,WAAW,GAQT,sDACA,mCAKA,cAAc,WAAW,cACzB,SAEF;EACA,OAAO;GACL,OAAO,UAAU,YAAY,iBAAiB,KAAK;GACnD,GAAG;EACL;EACA,GAAI;EAxBN,UAAA,CA0BE,oBAAC,OAAD;GAAK,IAAI;GAAW,WAAU;GAC3B;EACE,CAAA,GACJ,eAAe,YAAY,QAC1B,oBAAC,UAAD;GACE,MAAK;GACL,aAAU;GACV,cACE,YACK,OAAO,UAAU,eAAe,SAChC,OAAO,YAAY,eAAe;GAEzC,iBAAe,CAAC;GAChB,iBAAe;GACf,SAAS;GACT,WAAW,GACT,yDACA,qDACA,YAAY,OAEd;GAEC,UAAA,YAAY,KAAA,IAAY,oBAAC,aAAD,EAAa,WAAU,SAAU,CAAA,IAAI;EACxD,CAAA,CAEL;;AAEX"}
@@ -4,7 +4,7 @@ declare namespace badge_d_exports {
4
4
  export { Badge, Props, badgeVariants };
5
5
  }
6
6
  declare const badgeVariants: (props?: ({
7
- variant?: "link" | "default" | "secondary" | "destructive" | "outline" | "ghost" | null | undefined;
7
+ variant?: "link" | "default" | "destructive" | "outline" | "secondary" | "ghost" | null | undefined;
8
8
  } & import("class-variance-authority/types").ClassProp) | undefined) => string;
9
9
  type Props = Omit<useRender.ComponentProps<'span'>, 'className'> & VariantProps<typeof badgeVariants> & {
10
10
  className?: string;
@@ -5,8 +5,8 @@ declare namespace button_d_exports {
5
5
  export { Button$1 as Button, Props, buttonVariants };
6
6
  }
7
7
  declare const buttonVariants: (props?: ({
8
- variant?: "link" | "default" | "secondary" | "destructive" | "outline" | "ghost" | null | undefined;
9
- size?: "default" | "sm" | "lg" | "icon" | "xs" | "icon-xs" | "icon-sm" | "icon-lg" | null | undefined;
8
+ variant?: "link" | "default" | "destructive" | "outline" | "secondary" | "ghost" | null | undefined;
9
+ size?: "icon" | "default" | "xs" | "sm" | "lg" | "icon-xs" | "icon-sm" | "icon-lg" | null | undefined;
10
10
  } & import("class-variance-authority/types").ClassProp) | undefined) => string;
11
11
  type Props = Omit<React$1.ComponentProps<typeof Button>, 'className'> & VariantProps<typeof buttonVariants> & {
12
12
  className?: string;
package/dist/index.d.mts CHANGED
@@ -1,91 +1,98 @@
1
1
  import AutoComplete, { Option, Props as Props$2 } from "./AutoComplete.mjs";
2
2
  import { ComponentSize, DefaultProps, Locale, ThemeConfig, ThemeToken } from "./providers/config/types.mjs";
3
3
  import { DEFAULT_LOCALE, useConfig } from "./providers/config/context.mjs";
4
- import Config, { Props as Props$11 } from "./providers/config/config.mjs";
4
+ import Config, { Props as Props$14 } from "./providers/config/config.mjs";
5
5
  import { ConfigSnapshotProvider, getRootConfigValue } from "./providers/config/registry.mjs";
6
6
  import Avatar, { Props as Props$3 } from "./Avatar.mjs";
7
7
  import Badge, { Props as Props$4 } from "./Badge.mjs";
8
- import Button from "./Button.mjs";
9
- import Cascader, { Option as Option$1, Props as Props$8 } from "./Cascader.mjs";
10
- import Divider, { Props as Props$16 } from "./Divider.mjs";
11
- import Mentions, { Option as Option$2, Props as Props$30 } from "./Mentions.mjs";
12
- import Rate, { Props as Props$36 } from "./Rate.mjs";
13
- import Segmented, { Props as Props$41 } from "./Segmented.mjs";
14
- import Tag from "./Tag.mjs";
15
- import TimePicker, { Props as Props$50 } from "./TimePicker.mjs";
8
+ import Button, { Props as Props$6 } from "./Button.mjs";
9
+ import Cascader, { Option as Option$1, Props as Props$9 } from "./Cascader.mjs";
10
+ import { Props as Props$10 } from "./components/atoms/checkbox/checkbox.mjs";
11
+ import Checkbox from "./Checkbox.mjs";
12
+ import ColorPicker, { Props as Props$13 } from "./ColorPicker.mjs";
13
+ import DatePicker, { Props as Props$18 } from "./DatePicker.mjs";
14
+ import Divider, { Props as Props$20 } from "./Divider.mjs";
15
+ import { Props as Props$24 } from "./components/atoms/float-button/float-button.mjs";
16
+ import FloatButton from "./FloatButton.mjs";
17
+ import { Props as Props$32 } from "./components/atoms/input/input.mjs";
18
+ import { Props as Props$30 } from "./components/atoms/input/number.mjs";
19
+ import { Props as Props$31 } from "./components/atoms/input/otp.mjs";
20
+ import Input from "./Input.mjs";
21
+ import Mentions, { Option as Option$2, Props as Props$36 } from "./Mentions.mjs";
22
+ import Popover, { Props as Props$42 } from "./Popover.mjs";
23
+ import Progress, { Props as Props$43 } from "./Progress.mjs";
24
+ import { Props as Props$44 } from "./components/atoms/radio/radio.mjs";
25
+ import Radio from "./Radio.mjs";
26
+ import Rate, { Props as Props$45 } from "./Rate.mjs";
27
+ import RichTextEditor, { Props as Props$48 } from "./components/atoms/rich-text-editor/rich-text-editor.mjs";
28
+ import Segmented, { Props as Props$51 } from "./Segmented.mjs";
29
+ import Select, { Props as Props$52 } from "./Select.mjs";
30
+ import { Props as Props$54 } from "./components/atoms/skeleton/skeleton.mjs";
31
+ import Skeleton from "./Skeleton.mjs";
32
+ import Slider, { Props as Props$55 } from "./components/atoms/slider/slider.mjs";
33
+ import Spin, { Props as Props$57 } from "./Spin.mjs";
34
+ import Switch, { Props as Props$62 } from "./Switch.mjs";
35
+ import Tag, { Props as Props$65 } from "./Tag.mjs";
36
+ import TimePicker, { Props as Props$66 } from "./TimePicker.mjs";
37
+ import ToggleGroup, { Option as Option$3, Props as Props$68 } from "./ToggleGroup.mjs";
38
+ import Tooltip, { Props as Props$69 } from "./Tooltip.mjs";
39
+ import { Props as Props$74 } from "./components/atoms/typography/typography.mjs";
16
40
  import Typography from "./Typography.mjs";
17
41
  import Alert, { Props } from "./Alert.mjs";
18
42
  import Anchor, { Item, Props as Props$1 } from "./Anchor.mjs";
19
43
  import Breadcrumb, { Props as Props$5 } from "./Breadcrumb.mjs";
20
- import Card, { Props as Props$7 } from "./Card.mjs";
21
- import ContextMenu, { Item as Item$1, Props as Props$14 } from "./ContextMenu.mjs";
22
- import Descriptions, { Columns, Item as Item$2, Props as Props$15 } from "./Descriptions.mjs";
23
- import Menu, { Props as Props$31 } from "./components/molecules/menu/menu.mjs";
24
- import Pagination, { Props as Props$34 } from "./Pagination.mjs";
25
- import Popover from "./components/atoms/popover.mjs";
26
- import Popconfirm, { Props as Props$35 } from "./Popconfirm.mjs";
27
- import { Props as Props$38 } from "./components/molecules/reveals/reveals.mjs";
44
+ import Card, { Props as Props$8 } from "./Card.mjs";
45
+ import Collapse, { Props as Props$12 } from "./Collapse.mjs";
46
+ import ContextMenu, { Item as Item$1, Props as Props$17 } from "./ContextMenu.mjs";
47
+ import Descriptions, { Columns, Item as Item$2, Props as Props$19 } from "./Descriptions.mjs";
48
+ import Menu, { Props as Props$37 } from "./components/molecules/menu/menu.mjs";
49
+ import Dropdown, { Props as Props$22 } from "./Dropdown.mjs";
50
+ import Empty, { Props as Props$23 } from "./Empty.mjs";
51
+ import { Props as Props$35 } from "./components/molecules/marquees/marquees.mjs";
52
+ import Marquees from "./Marquees.mjs";
53
+ import Pagination, { Props as Props$40 } from "./Pagination.mjs";
54
+ import Popconfirm, { Props as Props$41 } from "./Popconfirm.mjs";
55
+ import { Props as Props$47 } from "./components/molecules/reveals/reveals.mjs";
28
56
  import Reveals from "./Reveals.mjs";
29
- import ScrollArea, { Props as Props$40 } from "./ScrollArea.mjs";
30
- import Space, { Props as Props$43 } from "./Space.mjs";
31
- import Statistic, { Props as Props$45 } from "./Statistic.mjs";
32
- import Steps, { Item as Item$3, Props as Props$46 } from "./Steps.mjs";
33
- import Timeline, { Item as Item$4, Props as Props$51, Timestamp } from "./Timeline.mjs";
34
- import Transfer, { Item as Item$5, Props as Props$53 } from "./Transfer.mjs";
35
- import Calendar, { Props as Props$6 } from "./Calendar.mjs";
36
- import { Props as Props$21 } from "./components/organisms/form/control.mjs";
37
- import { Props as Props$22 } from "./components/organisms/form/field.mjs";
38
- import { Props as Props$23 } from "./components/organisms/form/form.mjs";
57
+ import ScrollArea, { Props as Props$50 } from "./ScrollArea.mjs";
58
+ import Space, { Props as Props$56 } from "./Space.mjs";
59
+ import { Props as Props$58 } from "./components/molecules/splitter/splitter.mjs";
60
+ import Splitter from "./Splitter.mjs";
61
+ import Statistic, { Props as Props$59 } from "./Statistic.mjs";
62
+ import Steps, { Item as Item$3, Props as Props$60 } from "./Steps.mjs";
63
+ import Tabs, { Props as Props$64 } from "./Tabs.mjs";
64
+ import Timeline, { Item as Item$4, Props as Props$67, Timestamp } from "./Timeline.mjs";
65
+ import Transfer, { Item as Item$5, Props as Props$71 } from "./Transfer.mjs";
66
+ import Upload, { Props as Props$75, UploadFile } from "./Upload.mjs";
67
+ import Calendar, { Props as Props$7 } from "./Calendar.mjs";
68
+ import Drawer, { Props as Props$21 } from "./Drawer.mjs";
69
+ import { Props as Props$26 } from "./components/organisms/form/control.mjs";
70
+ import { Props as Props$27 } from "./components/organisms/form/field.mjs";
71
+ import { Props as Props$28 } from "./components/organisms/form/form.mjs";
39
72
  import Form from "./Form.mjs";
40
- import Table, { Column, PaginationOptions, Props as Props$48 } from "./Table.mjs";
41
- import Tour, { Props as Props$52, Step } from "./Tour.mjs";
42
- import Tree, { Actions, ExpandInfo, LoadOptions, Node, Props as Props$54, ScrollOptions } from "./Tree.mjs";
43
- import TreeSelect, { Props as Props$55 } from "./TreeSelect.mjs";
44
- import { Props as Props$13 } from "./components/templates/layout/content.mjs";
45
- import { Props as Props$20 } from "./components/templates/layout/footer.mjs";
46
- import { Props as Props$24 } from "./components/templates/layout/header.mjs";
47
- import { Props as Props$27 } from "./components/templates/layout/layout.mjs";
48
- import { Props as Props$42 } from "./components/templates/layout/sider.mjs";
73
+ import { Props as Props$34 } from "./components/organisms/list/list.mjs";
74
+ import List from "./List.mjs";
75
+ import Modal, { Props as Props$38 } from "./Modal.mjs";
76
+ import { Props as Props$61 } from "./components/organisms/swiper/swiper.mjs";
77
+ import Swiper from "./Swiper.mjs";
78
+ import Table, { Column, PaginationOptions, Props as Props$63 } from "./Table.mjs";
79
+ import Toast, { GlobalConfig, Placement, ToastOptions as StaticProps } from "./Toast.mjs";
80
+ import Tour, { Props as Props$70, Step } from "./Tour.mjs";
81
+ import Tree, { Actions, ExpandInfo, LoadOptions, Node, Props as Props$72, ScrollOptions } from "./Tree.mjs";
82
+ import TreeSelect, { Props as Props$73 } from "./TreeSelect.mjs";
83
+ import Container, { Props as Props$15 } from "./Container.mjs";
84
+ import { Props as Props$16 } from "./components/templates/layout/content.mjs";
85
+ import { Props as Props$25 } from "./components/templates/layout/footer.mjs";
86
+ import { Props as Props$29 } from "./components/templates/layout/header.mjs";
87
+ import { Props as Props$33 } from "./components/templates/layout/layout.mjs";
88
+ import { Props as Props$53 } from "./components/templates/layout/sider.mjs";
49
89
  import Layout from "./Layout.mjs";
50
- import Checkbox from "./components/atoms/checkbox/index.mjs";
51
- import ColorPicker from "./components/atoms/color-picker.mjs";
52
- import DatePicker from "./components/atoms/date-picker.mjs";
53
- import FloatButton from "./components/atoms/float-button/index.mjs";
54
- import { Props as Props$25 } from "./components/atoms/input/number.mjs";
55
- import { Props as Props$26 } from "./components/atoms/input/otp.mjs";
56
- import Input from "./components/atoms/input/index.mjs";
57
- import Progress from "./components/atoms/progress.mjs";
58
- import Radio from "./components/atoms/radio/index.mjs";
59
- import RichTextEditor from "./components/atoms/rich-text-editor/rich-text-editor.mjs";
60
- import Select from "./components/atoms/select.mjs";
61
- import Skeleton from "./components/atoms/skeleton/index.mjs";
62
- import Slider from "./components/atoms/slider/slider.mjs";
63
- import Spin from "./components/atoms/spin.mjs";
64
- import Switch from "./components/atoms/switch.mjs";
65
- import Tooltip from "./components/atoms/tooltip.mjs";
90
+ import PageHeader, { Props as Props$39 } from "./PageHeader.mjs";
91
+ import Result, { Props as Props$46 } from "./Result.mjs";
66
92
  import "./components/atoms/index.mjs";
67
- import Collapse, { Props as Props$10 } from "./components/molecules/collapse.mjs";
68
- import Dropdown, { Props as Props$18 } from "./components/molecules/dropdown.mjs";
69
- import { Props as Props$29 } from "./components/molecules/marquees/marquees.mjs";
70
- import Marquees from "./components/molecules/marquees/index.mjs";
71
- import { Props as Props$44 } from "./components/molecules/splitter/splitter.mjs";
72
- import Splitter from "./components/molecules/splitter/index.mjs";
73
- import Tabs, { Props as Props$49 } from "./components/molecules/tabs.mjs";
74
- import Upload, { Props as Props$56, UploadFile } from "./components/molecules/upload.mjs";
75
93
  import "./components/molecules/index.mjs";
76
- import Drawer, { Props as Props$17 } from "./components/organisms/drawer.mjs";
77
- import { Props as Props$28 } from "./components/organisms/list/list.mjs";
78
- import List from "./components/organisms/list/index.mjs";
79
- import Modal, { Props as Props$32 } from "./components/organisms/modal.mjs";
80
- import { Props as Props$47 } from "./components/organisms/swiper/swiper.mjs";
81
- import Swiper from "./components/organisms/swiper/index.mjs";
82
- import Toast, { ToastOptions as StaticProps } from "./components/organisms/toast.mjs";
83
94
  import "./components/organisms/index.mjs";
84
- import Container, { Props as Props$12 } from "./components/templates/container.mjs";
85
- import Empty, { Props as Props$19 } from "./components/templates/empty.mjs";
86
- import Result, { Props as Props$37 } from "./components/templates/result.mjs";
87
- import PageHeader, { Props as Props$33 } from "./components/templates/page-header.mjs";
88
- import Row, { Props as Props$39 } from "./components/templates/grid/row.mjs";
89
- import Col, { Props as Props$9 } from "./components/templates/grid/col.mjs";
95
+ import Row, { Props as Props$49 } from "./components/templates/grid/row.mjs";
96
+ import Col, { Props as Props$11 } from "./components/templates/grid/col.mjs";
90
97
  import "./components/templates/index.mjs";
91
- export { Alert, type Props as AlertProps, Anchor, type Item as AnchorItem, type Props$1 as AnchorProps, AutoComplete, type Option as AutoCompleteOption, type Props$2 as AutoCompleteProps, Avatar, type Props$3 as AvatarProps, Badge, type Props$4 as BadgeProps, Breadcrumb, type Props$5 as BreadcrumbProps, Button, Calendar, type Props$6 as CalendarProps, Card, type Props$7 as CardProps, Cascader, type Option$1 as CascaderOption, type Props$8 as CascaderProps, Checkbox, Col, type Props$9 as ColProps, Collapse, type Props$10 as CollapseProps, ColorPicker, type ComponentSize, Config, type Props$11 as ConfigProps, ConfigSnapshotProvider, Container, type Props$12 as ContainerProps, type Props$13 as ContentProps, ContextMenu, type Item$1 as ContextMenuItem, type Props$14 as ContextMenuProps, DEFAULT_LOCALE, DatePicker, type DefaultProps, type Item$2 as DescriptionItem, Descriptions, type Columns as DescriptionsColumns, type Props$15 as DescriptionsProps, Divider, type Props$16 as DividerProps, Drawer, type Props$17 as DrawerProps, Dropdown, type Props$18 as DropdownProps, Empty, type Props$19 as EmptyProps, FloatButton, type Props$20 as FooterProps, Form, type Props$21 as FormControlProps, type Props$22 as FormFieldProps, type Props$23 as FormProps, type Props$24 as HeaderProps, Input, type Props$25 as InputNumberProps, type Props$26 as InputOTPProps, Layout, type Props$27 as LayoutProps, List, type Props$28 as ListProps, type Locale, Marquees, type Props$29 as MarqueesProps, Mentions, type Option$2 as MentionsOption, type Props$30 as MentionsProps, Menu, type Props$31 as MenuProps, Modal, type Props$32 as ModalProps, PageHeader, type Props$33 as PageHeaderProps, Pagination, type Props$34 as PaginationProps, Popconfirm, type Props$35 as PopconfirmProps, Popover, Progress, Radio, Rate, type Props$36 as RateProps, Result, type Props$37 as ResultProps, Reveals, type Props$38 as RevealsProps, RichTextEditor, Row, type Props$39 as RowProps, ScrollArea, type Props$40 as ScrollAreaProps, Segmented, type Props$41 as SegmentedProps, Select, type Props$42 as SiderProps, Skeleton, Slider, Space, type Props$43 as SpaceProps, Spin, Splitter, type Props$44 as SplitterProps, Statistic, type Props$45 as StatisticProps, type Item$3 as StepItem, Steps, type Props$46 as StepsProps, Swiper, type Props$47 as SwiperProps, Switch, Table, type Column as TableColumn, type PaginationOptions as TablePaginationOptions, type Props$48 as TableProps, Tabs, type Props$49 as TabsProps, Tag, type ThemeConfig, type ThemeToken, TimePicker, type Props$50 as TimePickerProps, Timeline, type Item$4 as TimelineItem, type Props$51 as TimelineProps, type Timestamp as TimelineTimestamp, Toast, type StaticProps as ToastOptions, Tooltip, Tour, type Props$52 as TourProps, type Step as TourStep, Transfer, type Item$5 as TransferItem, type Props$53 as TransferProps, Tree, type Actions as TreeActions, type ExpandInfo as TreeExpandInfo, type LoadOptions as TreeLoadOptions, type Node as TreeNode, type Props$54 as TreeProps, type ScrollOptions as TreeScrollOptions, TreeSelect, type Node as TreeSelectNode, type Props$55 as TreeSelectProps, Typography, Upload, type UploadFile, type Props$56 as UploadProps, getRootConfigValue, useConfig };
98
+ export { Alert, type Props as AlertProps, Anchor, type Item as AnchorItem, type Props$1 as AnchorProps, AutoComplete, type Option as AutoCompleteOption, type Props$2 as AutoCompleteProps, Avatar, type Props$3 as AvatarProps, Badge, type Props$4 as BadgeProps, Breadcrumb, type Props$5 as BreadcrumbProps, Button, type Props$6 as ButtonProps, Calendar, type Props$7 as CalendarProps, Card, type Props$8 as CardProps, Cascader, type Option$1 as CascaderOption, type Props$9 as CascaderProps, Checkbox, type Props$10 as CheckboxProps, Col, type Props$11 as ColProps, Collapse, type Props$12 as CollapseProps, ColorPicker, type Props$13 as ColorPickerProps, type ComponentSize, Config, type Props$14 as ConfigProps, ConfigSnapshotProvider, Container, type Props$15 as ContainerProps, type Props$16 as ContentProps, ContextMenu, type Item$1 as ContextMenuItem, type Props$17 as ContextMenuProps, DEFAULT_LOCALE, DatePicker, type Props$18 as DatePickerProps, type DefaultProps, type Item$2 as DescriptionItem, Descriptions, type Columns as DescriptionsColumns, type Props$19 as DescriptionsProps, Divider, type Props$20 as DividerProps, Drawer, type Props$21 as DrawerProps, Dropdown, type Props$22 as DropdownProps, Empty, type Props$23 as EmptyProps, FloatButton, type Props$24 as FloatButtonProps, type Props$25 as FooterProps, Form, type Props$26 as FormControlProps, type Props$27 as FormFieldProps, type Props$28 as FormProps, type Props$29 as HeaderProps, Input, type Props$30 as InputNumberProps, type Props$31 as InputOTPProps, type Props$32 as InputProps, Layout, type Props$33 as LayoutProps, List, type Props$34 as ListProps, type Locale, Marquees, type Props$35 as MarqueesProps, Mentions, type Option$2 as MentionsOption, type Props$36 as MentionsProps, Menu, type Props$37 as MenuProps, Modal, type Props$38 as ModalProps, PageHeader, type Props$39 as PageHeaderProps, Pagination, type Props$40 as PaginationProps, Popconfirm, type Props$41 as PopconfirmProps, Popover, type Props$42 as PopoverProps, Progress, type Props$43 as ProgressProps, Radio, type Props$44 as RadioProps, Rate, type Props$45 as RateProps, Result, type Props$46 as ResultProps, Reveals, type Props$47 as RevealsProps, RichTextEditor, type Props$48 as RichTextEditorProps, Row, type Props$49 as RowProps, ScrollArea, type Props$50 as ScrollAreaProps, Segmented, type Props$51 as SegmentedProps, Select, type Props$52 as SelectProps, type Props$53 as SiderProps, Skeleton, type Props$54 as SkeletonProps, Slider, type Props$55 as SliderProps, Space, type Props$56 as SpaceProps, Spin, type Props$57 as SpinProps, Splitter, type Props$58 as SplitterProps, Statistic, type Props$59 as StatisticProps, type Item$3 as StepItem, Steps, type Props$60 as StepsProps, Swiper, type Props$61 as SwiperProps, Switch, type Props$62 as SwitchProps, Table, type Column as TableColumn, type PaginationOptions as TablePaginationOptions, type Props$63 as TableProps, Tabs, type Props$64 as TabsProps, Tag, type Props$65 as TagProps, type ThemeConfig, type ThemeToken, TimePicker, type Props$66 as TimePickerProps, Timeline, type Item$4 as TimelineItem, type Props$67 as TimelineProps, type Timestamp as TimelineTimestamp, Toast, type GlobalConfig as ToastConfig, type StaticProps as ToastOptions, type Placement as ToastPlacement, ToggleGroup, type Option$3 as ToggleGroupOption, type Props$68 as ToggleGroupProps, Tooltip, type Props$69 as TooltipProps, Tour, type Props$70 as TourProps, type Step as TourStep, Transfer, type Item$5 as TransferItem, type Props$71 as TransferProps, Tree, type Actions as TreeActions, type ExpandInfo as TreeExpandInfo, type LoadOptions as TreeLoadOptions, type Node as TreeNode, type Props$72 as TreeProps, type ScrollOptions as TreeScrollOptions, TreeSelect, type Node as TreeSelectNode, type Props$73 as TreeSelectProps, Typography, type Props$74 as TypographyProps, Upload, type UploadFile, type Props$75 as UploadProps, getRootConfigValue, useConfig };