@iamfiro/design 0.0.0-stage → 0.1.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 (264) hide show
  1. package/AGENTS.md +81 -0
  2. package/README.md +15 -2
  3. package/agents/INDEX.md +156 -0
  4. package/agents/accordion/AGENTS.md +279 -0
  5. package/agents/action-bar/AGENTS.md +90 -0
  6. package/agents/alert/AGENTS.md +212 -0
  7. package/agents/alert-dialog/AGENTS.md +193 -0
  8. package/agents/app-shell/AGENTS.md +409 -0
  9. package/agents/area-chart/AGENTS.md +183 -0
  10. package/agents/aspect-ratio/AGENTS.md +143 -0
  11. package/agents/avatar/AGENTS.md +130 -0
  12. package/agents/badge/AGENTS.md +217 -0
  13. package/agents/bar-chart/AGENTS.md +386 -0
  14. package/agents/bar-list/AGENTS.md +223 -0
  15. package/agents/brand-icon/AGENTS.md +82 -0
  16. package/agents/breadcrumb/AGENTS.md +133 -0
  17. package/agents/button/AGENTS.md +195 -0
  18. package/agents/card/AGENTS.md +141 -0
  19. package/agents/card-frame/AGENTS.md +227 -0
  20. package/agents/chat-bubble/AGENTS.md +266 -0
  21. package/agents/chat-composer/AGENTS.md +251 -0
  22. package/agents/checkbox/AGENTS.md +113 -0
  23. package/agents/code-block/AGENTS.md +144 -0
  24. package/agents/color-dot/AGENTS.md +120 -0
  25. package/agents/color-picker/AGENTS.md +224 -0
  26. package/agents/colors/AGENTS.md +168 -0
  27. package/agents/combobox/AGENTS.md +218 -0
  28. package/agents/command-menu/AGENTS.md +169 -0
  29. package/agents/comment/AGENTS.md +206 -0
  30. package/agents/context-menu/AGENTS.md +303 -0
  31. package/agents/copy-button/AGENTS.md +84 -0
  32. package/agents/count-badge/AGENTS.md +115 -0
  33. package/agents/countdown/AGENTS.md +101 -0
  34. package/agents/data-grid/AGENTS.md +460 -0
  35. package/agents/date-picker/AGENTS.md +197 -0
  36. package/agents/delta/AGENTS.md +114 -0
  37. package/agents/description-list/AGENTS.md +251 -0
  38. package/agents/dialog/AGENTS.md +391 -0
  39. package/agents/drawer/AGENTS.md +471 -0
  40. package/agents/dropdown-menu/AGENTS.md +322 -0
  41. package/agents/dropzone/AGENTS.md +116 -0
  42. package/agents/elapsed/AGENTS.md +160 -0
  43. package/agents/empty-state/AGENTS.md +203 -0
  44. package/agents/file-chip/AGENTS.md +79 -0
  45. package/agents/file-icon/AGENTS.md +66 -0
  46. package/agents/file-upload/AGENTS.md +168 -0
  47. package/agents/filter-chips/AGENTS.md +167 -0
  48. package/agents/flag/AGENTS.md +67 -0
  49. package/agents/funnel-chart/AGENTS.md +131 -0
  50. package/agents/highlight/AGENTS.md +119 -0
  51. package/agents/hover-card/AGENTS.md +271 -0
  52. package/agents/icon-stack/AGENTS.md +120 -0
  53. package/agents/icon-tile/AGENTS.md +94 -0
  54. package/agents/inline-diff/AGENTS.md +211 -0
  55. package/agents/input/AGENTS.md +261 -0
  56. package/agents/kanban/AGENTS.md +352 -0
  57. package/agents/kbd/AGENTS.md +160 -0
  58. package/agents/layout/AGENTS.md +351 -0
  59. package/agents/line-chart/AGENTS.md +393 -0
  60. package/agents/link/AGENTS.md +53 -0
  61. package/agents/list/AGENTS.md +392 -0
  62. package/agents/marker/AGENTS.md +142 -0
  63. package/agents/masked-text/AGENTS.md +127 -0
  64. package/agents/menubar/AGENTS.md +276 -0
  65. package/agents/multi-select/AGENTS.md +159 -0
  66. package/agents/navigation-menu/AGENTS.md +315 -0
  67. package/agents/notice-stack/AGENTS.md +101 -0
  68. package/agents/number-stepper/AGENTS.md +96 -0
  69. package/agents/otp-input/AGENTS.md +162 -0
  70. package/agents/pagination/AGENTS.md +189 -0
  71. package/agents/phone-input/AGENTS.md +131 -0
  72. package/agents/pie-chart/AGENTS.md +243 -0
  73. package/agents/popover/AGENTS.md +190 -0
  74. package/agents/progress/AGENTS.md +273 -0
  75. package/agents/progress-tracker/AGENTS.md +305 -0
  76. package/agents/rating/AGENTS.md +165 -0
  77. package/agents/relative-time/AGENTS.md +103 -0
  78. package/agents/resizable/AGENTS.md +390 -0
  79. package/agents/scaled-preview/AGENTS.md +111 -0
  80. package/agents/scatter-chart/AGENTS.md +160 -0
  81. package/agents/scroll-area/AGENTS.md +271 -0
  82. package/agents/search-input/AGENTS.md +105 -0
  83. package/agents/segmented-control/AGENTS.md +153 -0
  84. package/agents/select/AGENTS.md +159 -0
  85. package/agents/selector-button/AGENTS.md +122 -0
  86. package/agents/sidebar/AGENTS.md +201 -0
  87. package/agents/skeleton/AGENTS.md +166 -0
  88. package/agents/slider/AGENTS.md +181 -0
  89. package/agents/spark-chart/AGENTS.md +257 -0
  90. package/agents/sparkbar/AGENTS.md +92 -0
  91. package/agents/spinner/AGENTS.md +123 -0
  92. package/agents/split-view/AGENTS.md +290 -0
  93. package/agents/stat/AGENTS.md +138 -0
  94. package/agents/status-icon/AGENTS.md +243 -0
  95. package/agents/step-list/AGENTS.md +313 -0
  96. package/agents/table/AGENTS.md +286 -0
  97. package/agents/tabs/AGENTS.md +305 -0
  98. package/agents/tag-input/AGENTS.md +246 -0
  99. package/agents/time-picker/AGENTS.md +228 -0
  100. package/agents/timeline/AGENTS.md +1018 -0
  101. package/agents/toast/AGENTS.md +266 -0
  102. package/agents/toggle-group/AGENTS.md +216 -0
  103. package/agents/toolbar/AGENTS.md +277 -0
  104. package/agents/tooltip/AGENTS.md +154 -0
  105. package/agents/tracker/AGENTS.md +158 -0
  106. package/agents/tree-diagram/AGENTS.md +260 -0
  107. package/agents/tree-view/AGENTS.md +329 -0
  108. package/agents/typography/AGENTS.md +396 -0
  109. package/lib/index.js +17914 -0
  110. package/lib/style.css +2 -0
  111. package/lib/types/components/Accordion/Accordion.d.ts +57 -0
  112. package/lib/types/components/ActionBar/ActionBar.d.ts +24 -0
  113. package/lib/types/components/Alert/Alert.d.ts +36 -0
  114. package/lib/types/components/AppShell/AppShell.d.ts +38 -0
  115. package/lib/types/components/AreaChart/AreaChart.d.ts +17 -0
  116. package/lib/types/components/BarChart/BarChart.d.ts +57 -0
  117. package/lib/types/components/BarList/BarList.d.ts +56 -0
  118. package/lib/types/components/Breadcrumb/Breadcrumb.d.ts +15 -0
  119. package/lib/types/components/Calendar/Calendar.d.ts +34 -0
  120. package/lib/types/components/Calendar/DatePicker.d.ts +45 -0
  121. package/lib/types/components/Calendar/date.d.ts +32 -0
  122. package/lib/types/components/Card/Card.d.ts +64 -0
  123. package/lib/types/components/CardFrame/CardFrame.d.ts +15 -0
  124. package/lib/types/components/Chart/ChartParts.d.ts +38 -0
  125. package/lib/types/components/Chart/chart.d.ts +46 -0
  126. package/lib/types/components/Chart/useChartInteraction.d.ts +39 -0
  127. package/lib/types/components/ChatBubble/ChatBubble.d.ts +61 -0
  128. package/lib/types/components/ChatBubble/formatChatTime.d.ts +2 -0
  129. package/lib/types/components/ChatComposer/ChatComposer.d.ts +42 -0
  130. package/lib/types/components/CodeBlock/CodeBlock.d.ts +18 -0
  131. package/lib/types/components/CodeBlock/highlight.d.ts +10 -0
  132. package/lib/types/components/ColorPicker/ColorPicker.d.ts +61 -0
  133. package/lib/types/components/ColorPicker/color.d.ts +48 -0
  134. package/lib/types/components/ColorPicker/presets.d.ts +7 -0
  135. package/lib/types/components/Combobox/Combobox.d.ts +48 -0
  136. package/lib/types/components/CommandMenu/CommandMenu.d.ts +51 -0
  137. package/lib/types/components/Comment/Comment.d.ts +45 -0
  138. package/lib/types/components/ContextMenu/ContextMenu.d.ts +40 -0
  139. package/lib/types/components/DataGrid/DataGrid.d.ts +43 -0
  140. package/lib/types/components/DataGrid/GridPopover.d.ts +43 -0
  141. package/lib/types/components/DataGrid/anchor.d.ts +5 -0
  142. package/lib/types/components/DataGrid/model.d.ts +61 -0
  143. package/lib/types/components/DataGrid/panels.d.ts +63 -0
  144. package/lib/types/components/DataGrid/typeMeta.d.ts +6 -0
  145. package/lib/types/components/DataGrid/types.d.ts +77 -0
  146. package/lib/types/components/DescriptionList/DescriptionList.d.ts +77 -0
  147. package/lib/types/components/Dialog/AlertDialog.d.ts +26 -0
  148. package/lib/types/components/Dialog/Dialog.d.ts +42 -0
  149. package/lib/types/components/Dialog/modal.d.ts +38 -0
  150. package/lib/types/components/Drawer/Drawer.d.ts +62 -0
  151. package/lib/types/components/DropdownMenu/DropdownMenu.d.ts +97 -0
  152. package/lib/types/components/DropdownMenu/menuCore.d.ts +23 -0
  153. package/lib/types/components/Dropzone/Dropzone.d.ts +30 -0
  154. package/lib/types/components/EmptyState/EmptyState.d.ts +26 -0
  155. package/lib/types/components/FileChip/FileChip.d.ts +32 -0
  156. package/lib/types/components/FileUpload/FileUpload.d.ts +52 -0
  157. package/lib/types/components/FilterChips/FilterChips.d.ts +37 -0
  158. package/lib/types/components/FunnelChart/FunnelChart.d.ts +38 -0
  159. package/lib/types/components/FunnelChart/funnel.d.ts +25 -0
  160. package/lib/types/components/Highlight/Highlight.d.ts +35 -0
  161. package/lib/types/components/HoverCard/HoverCard.d.ts +47 -0
  162. package/lib/types/components/InlineDiff/InlineDiff.d.ts +36 -0
  163. package/lib/types/components/InlineDiff/diff.d.ts +42 -0
  164. package/lib/types/components/InlineDiff/useDiffReview.d.ts +57 -0
  165. package/lib/types/components/Kanban/Kanban.d.ts +64 -0
  166. package/lib/types/components/Kanban/KanbanCard.d.ts +35 -0
  167. package/lib/types/components/Kanban/move.d.ts +25 -0
  168. package/lib/types/components/LineChart/LineChart.d.ts +85 -0
  169. package/lib/types/components/List/List.d.ts +62 -0
  170. package/lib/types/components/Listbox/Listbox.d.ts +60 -0
  171. package/lib/types/components/Marker/Marker.d.ts +28 -0
  172. package/lib/types/components/Menubar/Menubar.d.ts +50 -0
  173. package/lib/types/components/MultiSelect/MultiSelect.d.ts +38 -0
  174. package/lib/types/components/NavigationMenu/NavigationMenu.d.ts +101 -0
  175. package/lib/types/components/NoticeStack/NoticeStack.d.ts +41 -0
  176. package/lib/types/components/NumberStepper/NumberStepper.d.ts +32 -0
  177. package/lib/types/components/OtpInput/OtpInput.d.ts +31 -0
  178. package/lib/types/components/Pagination/Pagination.d.ts +54 -0
  179. package/lib/types/components/Pagination/paginationRange.d.ts +7 -0
  180. package/lib/types/components/PhoneInput/PhoneInput.d.ts +47 -0
  181. package/lib/types/components/PieChart/PieChart.d.ts +67 -0
  182. package/lib/types/components/PieChart/arc.d.ts +26 -0
  183. package/lib/types/components/PieChart/useArcTween.d.ts +15 -0
  184. package/lib/types/components/Popover/Popover.d.ts +28 -0
  185. package/lib/types/components/ProgressTracker/ProgressTracker.d.ts +64 -0
  186. package/lib/types/components/Rating/Rating.d.ts +42 -0
  187. package/lib/types/components/Resizable/Resizable.d.ts +50 -0
  188. package/lib/types/components/Resizable/layout.d.ts +31 -0
  189. package/lib/types/components/ScaledPreview/ScaledPreview.d.ts +38 -0
  190. package/lib/types/components/ScatterChart/ScatterChart.d.ts +81 -0
  191. package/lib/types/components/ScatterChart/scatter.d.ts +14 -0
  192. package/lib/types/components/ScrollArea/ScrollArea.d.ts +34 -0
  193. package/lib/types/components/Select/Select.d.ts +39 -0
  194. package/lib/types/components/Sidebar/Sidebar.d.ts +39 -0
  195. package/lib/types/components/Skeleton/Skeleton.d.ts +47 -0
  196. package/lib/types/components/Slider/Slider.d.ts +36 -0
  197. package/lib/types/components/SparkChart/SparkChart.d.ts +55 -0
  198. package/lib/types/components/SparkChart/spark.d.ts +16 -0
  199. package/lib/types/components/Sparkbar/Sparkbar.d.ts +39 -0
  200. package/lib/types/components/SplitView/SplitView.d.ts +31 -0
  201. package/lib/types/components/Stat/Stat.d.ts +58 -0
  202. package/lib/types/components/StepList/StepList.d.ts +61 -0
  203. package/lib/types/components/Table/Table.d.ts +39 -0
  204. package/lib/types/components/Tabs/Tabs.d.ts +47 -0
  205. package/lib/types/components/TagInput/TagInput.d.ts +46 -0
  206. package/lib/types/components/TimePicker/TimePicker.d.ts +43 -0
  207. package/lib/types/components/TimePicker/time.d.ts +15 -0
  208. package/lib/types/components/Timeline/Timeline.d.ts +154 -0
  209. package/lib/types/components/Timeline/scale.d.ts +22 -0
  210. package/lib/types/components/Toast/Toaster.d.ts +19 -0
  211. package/lib/types/components/Toast/index.d.ts +4 -0
  212. package/lib/types/components/Toast/store.d.ts +75 -0
  213. package/lib/types/components/ToggleGroup/ToggleGroup.d.ts +28 -0
  214. package/lib/types/components/Toolbar/Toolbar.d.ts +70 -0
  215. package/lib/types/components/Tracker/Tracker.d.ts +43 -0
  216. package/lib/types/components/TreeDiagram/TreeDiagram.d.ts +68 -0
  217. package/lib/types/components/TreeView/TreeView.d.ts +107 -0
  218. package/lib/types/components/index.d.ts +186 -0
  219. package/lib/types/hooks/index.d.ts +17 -0
  220. package/lib/types/hooks/timing.d.ts +29 -0
  221. package/lib/types/hooks/useControllableState.d.ts +5 -0
  222. package/lib/types/hooks/useCountdown.d.ts +19 -0
  223. package/lib/types/hooks/useDigitInput.d.ts +24 -0
  224. package/lib/types/hooks/useDismiss.d.ts +3 -0
  225. package/lib/types/hooks/useElapsed.d.ts +28 -0
  226. package/lib/types/hooks/useFloating.d.ts +21 -0
  227. package/lib/types/hooks/useFocusTrap.d.ts +7 -0
  228. package/lib/types/hooks/usePresence.d.ts +8 -0
  229. package/lib/types/hooks/usePressToOpen.d.ts +20 -0
  230. package/lib/types/hooks/useScrollLock.d.ts +2 -0
  231. package/lib/types/hooks/useSelection.d.ts +29 -0
  232. package/lib/types/index.d.ts +5 -0
  233. package/lib/types/primitives/AspectRatio.d.ts +14 -0
  234. package/lib/types/primitives/BrandIcon.d.ts +12 -0
  235. package/lib/types/primitives/ColorDot.d.ts +20 -0
  236. package/lib/types/primitives/CopyButton.d.ts +12 -0
  237. package/lib/types/primitives/CountBadge.d.ts +28 -0
  238. package/lib/types/primitives/Countdown.d.ts +21 -0
  239. package/lib/types/primitives/Delta.d.ts +33 -0
  240. package/lib/types/primitives/Elapsed.d.ts +23 -0
  241. package/lib/types/primitives/FileIcon.d.ts +17 -0
  242. package/lib/types/primitives/Flag.d.ts +15 -0
  243. package/lib/types/primitives/IconStack.d.ts +27 -0
  244. package/lib/types/primitives/IconTile.d.ts +24 -0
  245. package/lib/types/primitives/Kbd.d.ts +19 -0
  246. package/lib/types/primitives/Layout.d.ts +64 -0
  247. package/lib/types/primitives/Link.d.ts +12 -0
  248. package/lib/types/primitives/MaskedText.d.ts +28 -0
  249. package/lib/types/primitives/Progress.d.ts +52 -0
  250. package/lib/types/primitives/RelativeTime.d.ts +22 -0
  251. package/lib/types/primitives/SearchInput.d.ts +8 -0
  252. package/lib/types/primitives/SelectorButton.d.ts +23 -0
  253. package/lib/types/primitives/Spinner.d.ts +15 -0
  254. package/lib/types/primitives/StatusIcon.d.ts +40 -0
  255. package/lib/types/primitives/Swatch.d.ts +11 -0
  256. package/lib/types/primitives/Tooltip.d.ts +17 -0
  257. package/lib/types/primitives/Typography.d.ts +48 -0
  258. package/lib/types/primitives/formatCountdown.d.ts +2 -0
  259. package/lib/types/primitives/formatElapsed.d.ts +8 -0
  260. package/lib/types/primitives/formatRelativeTime.d.ts +16 -0
  261. package/lib/types/primitives/hotkey.d.ts +10 -0
  262. package/lib/types/primitives/index.d.ts +188 -0
  263. package/lib/types/primitives/maskValue.d.ts +24 -0
  264. package/package.json +54 -4
@@ -0,0 +1,50 @@
1
+ import { type ReactNode } from 'react';
2
+ import { DropdownMenuCheckboxItem, DropdownMenuItem, DropdownMenuLabel, DropdownMenuRadioGroup, DropdownMenuRadioItem, DropdownMenuSeparator, DropdownMenuSub } from '../DropdownMenu/DropdownMenu';
3
+ import '../Popover/Popover.css';
4
+ import './Menubar.css';
5
+ export interface MenubarProps {
6
+ /** `MenubarMenu`s, in order. */
7
+ children: ReactNode;
8
+ /** The open menu's `value` (null = none), to control it from outside. */
9
+ value?: string | null;
10
+ defaultValue?: string | null;
11
+ onValueChange?: (value: string | null) => void;
12
+ 'aria-label'?: string;
13
+ className?: string;
14
+ }
15
+ /**
16
+ * A row of menus like a desktop app's 파일 · 편집 · 보기. Click opens one; while one is open,
17
+ * pointing at another trigger switches to it at once. ←/→ move between menus (also from inside
18
+ * an open menu, outside submenus), ↓/Enter/Space open, ↑ opens at the last item. One Tab stop.
19
+ */
20
+ export declare function Menubar({ children, value: valueProp, defaultValue, onValueChange, 'aria-label': ariaLabel, className }: MenubarProps): import("react").JSX.Element;
21
+ export declare namespace Menubar {
22
+ var Menu: typeof MenubarMenu;
23
+ var Item: typeof DropdownMenuItem;
24
+ var CheckboxItem: typeof DropdownMenuCheckboxItem;
25
+ var RadioGroup: typeof DropdownMenuRadioGroup;
26
+ var RadioItem: typeof DropdownMenuRadioItem;
27
+ var Label: typeof DropdownMenuLabel;
28
+ var Separator: typeof DropdownMenuSeparator;
29
+ var Sub: typeof DropdownMenuSub;
30
+ }
31
+ export interface MenubarMenuProps {
32
+ /** Trigger text, e.g. 파일. */
33
+ label: ReactNode;
34
+ /** Items, labels, separators and submenus — the same parts as DropdownMenu. */
35
+ children: ReactNode;
36
+ /** Identifies this menu for `Menubar value`. Defaults to an internal id. */
37
+ value?: string;
38
+ disabled?: boolean;
39
+ /** Minimum panel width in px. */
40
+ minWidth?: number;
41
+ }
42
+ /** One top-level menu of a `Menubar`: its trigger and its panel. */
43
+ export declare function MenubarMenu({ label, children, value: valueProp, disabled, minWidth }: MenubarMenuProps): import("react").JSX.Element;
44
+ export declare const MenubarItem: typeof DropdownMenuItem;
45
+ export declare const MenubarCheckboxItem: typeof DropdownMenuCheckboxItem;
46
+ export declare const MenubarRadioGroup: typeof DropdownMenuRadioGroup;
47
+ export declare const MenubarRadioItem: typeof DropdownMenuRadioItem;
48
+ export declare const MenubarLabel: typeof DropdownMenuLabel;
49
+ export declare const MenubarSeparator: typeof DropdownMenuSeparator;
50
+ export declare const MenubarSub: typeof DropdownMenuSub;
@@ -0,0 +1,38 @@
1
+ import { type ReactNode } from 'react';
2
+ import { type ListOption, type OptionState } from '../Listbox/Listbox';
3
+ import '../Select/Select.css';
4
+ import './MultiSelect.css';
5
+ export interface MultiSelectProps<V extends string> {
6
+ options: ListOption<V>[];
7
+ value?: V[];
8
+ defaultValue?: V[];
9
+ onValueChange?: (value: V[]) => void;
10
+ open?: boolean;
11
+ onOpenChange?: (open: boolean) => void;
12
+ placeholder?: ReactNode;
13
+ size?: 'sm' | 'md' | 'lg';
14
+ disabled?: boolean;
15
+ invalid?: boolean;
16
+ leading?: ReactNode;
17
+ /** How the trigger shows picks: removable tags, or a "n개 선택" summary. */
18
+ display?: 'tags' | 'count';
19
+ /** Tags shown before collapsing the rest into "+N". */
20
+ maxTags?: number;
21
+ /** Adds a "전체 선택" row at the top of the list (also Ctrl/⌘ + A while open). */
22
+ selectAll?: boolean;
23
+ selectAllLabel?: ReactNode;
24
+ formatCount?: (count: number) => ReactNode;
25
+ /** Submits each value as a separate `name` field. */
26
+ name?: string;
27
+ id?: string;
28
+ className?: string;
29
+ maxHeight?: number;
30
+ renderOption?: (option: ListOption<V>, state: OptionState) => ReactNode;
31
+ 'aria-label'?: string;
32
+ 'aria-labelledby'?: string;
33
+ }
34
+ /**
35
+ * Select for several values. The list stays open while picking; Space/Enter toggle the
36
+ * active row, picks show as tags that can be removed from the trigger.
37
+ */
38
+ export declare function MultiSelect<V extends string>({ options, value: valueProp, defaultValue, onValueChange, open: openProp, onOpenChange, placeholder, size, disabled, invalid, leading, display, maxTags, selectAll, selectAllLabel, formatCount, name, id, className, maxHeight, renderOption, 'aria-label': ariaLabel, 'aria-labelledby': ariaLabelledby, }: MultiSelectProps<V>): import("react").JSX.Element;
@@ -0,0 +1,101 @@
1
+ import { type ComponentPropsWithRef, type CSSProperties, type ElementType, type ReactNode, type RefObject } from 'react';
2
+ import '../Popover/Popover.css';
3
+ import './NavigationMenu.css';
4
+ export interface NavigationMenuProps {
5
+ /** `NavigationMenuItem`s (open a panel) and top-level `NavigationMenuLink`s, in order. */
6
+ children: ReactNode;
7
+ /** The open item's `value` (null = closed), to control it from outside. */
8
+ value?: string | null;
9
+ defaultValue?: string | null;
10
+ onValueChange?: (value: string | null) => void;
11
+ /** hover: rest on a trigger to open, then pointing at another switches at once · click: only a press opens. */
12
+ openOn?: 'hover' | 'click';
13
+ /**
14
+ * stretch: the panel spans `viewportAnchor` (default: the nav itself), like a mega menu ·
15
+ * trigger: the panel takes its content's width, centered under the open trigger.
16
+ */
17
+ panelAlign?: 'stretch' | 'trigger';
18
+ /** The element whose width and bottom edge the panel follows — usually the whole header. */
19
+ viewportAnchor?: RefObject<HTMLElement | null>;
20
+ /** inverse: light triggers for a dark header. The panel stays white. */
21
+ tone?: 'default' | 'inverse';
22
+ 'aria-label'?: string;
23
+ className?: string;
24
+ style?: CSSProperties;
25
+ }
26
+ /**
27
+ * A site header's menus: triggers that open one shared panel. Resting on a trigger opens it after
28
+ * the hover intent delay; once open, pointing at a neighbour switches at once — the panel morphs
29
+ * to the new size and the content slides in from that side. ←/→ move between items, ↓ / Enter
30
+ * open into the first link, Esc returns to the trigger.
31
+ */
32
+ export declare function NavigationMenu({ children, value: valueProp, defaultValue, onValueChange, openOn, panelAlign, viewportAnchor, tone, 'aria-label': ariaLabel, className, style, }: NavigationMenuProps): import("react").JSX.Element;
33
+ export declare namespace NavigationMenu {
34
+ var Item: typeof NavigationMenuItem;
35
+ var Link: typeof NavigationMenuLink;
36
+ var Group: typeof NavigationMenuGroup;
37
+ var Feature: typeof NavigationMenuFeature;
38
+ }
39
+ export interface NavigationMenuItemProps {
40
+ /** Trigger text, e.g. 제품. */
41
+ label: ReactNode;
42
+ /** The panel content — any layout; `NavigationMenuGroup`, `NavigationMenuLink` and `NavigationMenuFeature` are the usual parts. */
43
+ children: ReactNode;
44
+ /** Identifies this item for `NavigationMenu value`. Defaults to an internal id. */
45
+ value?: string;
46
+ /** A 16px icon before the label. */
47
+ icon?: ReactNode;
48
+ disabled?: boolean;
49
+ /** Content width for `panelAlign="trigger"` (px or any CSS width). Defaults to the content's own width. */
50
+ width?: number | string;
51
+ }
52
+ /** One top-level menu: a trigger in the bar and the content it shows in the shared panel. */
53
+ export declare function NavigationMenuItem({ label, children, value: valueProp, icon, disabled, width }: NavigationMenuItemProps): import("react").JSX.Element;
54
+ interface NavigationMenuLinkOwnProps<E extends ElementType> {
55
+ /** Render as your router's link (`as={RouterLink}`); defaults to `<a>`. */
56
+ as?: E;
57
+ label: ReactNode;
58
+ /** Muted line under the label (inside a panel). */
59
+ description?: ReactNode;
60
+ /** Icon or IconTile before the label (inside a panel). */
61
+ icon?: ReactNode;
62
+ /** The current page: `aria-current="page"` and a stronger label. */
63
+ active?: boolean;
64
+ /** Extra content after the label, e.g. a `Badge`. */
65
+ badge?: ReactNode;
66
+ className?: string;
67
+ }
68
+ export type NavigationMenuLinkProps<E extends ElementType = 'a'> = NavigationMenuLinkOwnProps<E> & Omit<ComponentPropsWithRef<E>, keyof NavigationMenuLinkOwnProps<E>>;
69
+ /**
70
+ * A link. Directly in `NavigationMenu` it's a bar item (요금); inside an item's content it's a
71
+ * row with a label and description. Following a link closes the panel.
72
+ */
73
+ export declare function NavigationMenuLink<E extends ElementType = 'a'>({ as, label, description, icon, active, badge, className, onClick, onPointerEnter, ...rest }: NavigationMenuLinkProps<E>): import("react").JSX.Element;
74
+ export interface NavigationMenuGroupProps {
75
+ /** Small muted heading above the links (제품, 활용). */
76
+ title?: ReactNode;
77
+ /** `NavigationMenuLink`s. */
78
+ children: ReactNode;
79
+ className?: string;
80
+ }
81
+ /** A titled column of links inside a panel. */
82
+ export declare function NavigationMenuGroup({ title, children, className }: NavigationMenuGroupProps): import("react").JSX.Element;
83
+ export interface NavigationMenuFeatureProps {
84
+ /** Small line at the top (제품 둘러보기). */
85
+ eyebrow?: ReactNode;
86
+ title: ReactNode;
87
+ description?: ReactNode;
88
+ /** A button or link at the bottom. */
89
+ action?: ReactNode;
90
+ /** Image or illustration filling the card behind the text (cover). */
91
+ media?: ReactNode;
92
+ /** Any CSS background behind the text when there's no `media`. Defaults to a light gray panel. */
93
+ background?: string;
94
+ /** inverse: white text for a dark `media` / `background`. */
95
+ tone?: 'default' | 'inverse';
96
+ className?: string;
97
+ style?: CSSProperties;
98
+ }
99
+ /** A promo card that usually takes the last column of a panel: eyebrow, title, media and an action. */
100
+ export declare function NavigationMenuFeature({ eyebrow, title, description, action, media, background, tone, className, style, }: NavigationMenuFeatureProps): import("react").JSX.Element;
101
+ export {};
@@ -0,0 +1,41 @@
1
+ import { type CSSProperties, type ReactNode } from 'react';
2
+ import './NoticeStack.css';
3
+ export interface NoticeItem {
4
+ id: string;
5
+ /** Small blue line above the title ("새 기능", "10월 업데이트"). */
6
+ eyebrow?: ReactNode;
7
+ title: ReactNode;
8
+ description?: ReactNode;
9
+ /** A row at the bottom, e.g. a "전체 변경 기록 ›" link button. */
10
+ footer?: ReactNode;
11
+ /** Set false for a card that can't be closed. */
12
+ dismissible?: boolean;
13
+ }
14
+ export interface NoticeStackProps {
15
+ /** Front card first. */
16
+ items: NoticeItem[];
17
+ /**
18
+ * Called once a card has finished animating away. Remove it from `items` here; if you don't,
19
+ * the stack keeps it hidden on its own.
20
+ */
21
+ onDismiss?: (id: string) => void;
22
+ /** How many cards show (peeking behind the front one, or spread out). */
23
+ visible?: number;
24
+ /** Always spread out instead of only on hover / focus. */
25
+ expanded?: boolean;
26
+ /** up: cards behind peek out above and the deck spreads upward (bottom of a sidebar) · down: the reverse. */
27
+ direction?: 'up' | 'down';
28
+ /** Space between spread-out cards, px. */
29
+ gap?: number;
30
+ /** aria-label of each card's × button. */
31
+ dismissLabel?: string;
32
+ className?: string;
33
+ style?: CSSProperties;
34
+ 'aria-label'?: string;
35
+ }
36
+ /**
37
+ * A deck of dismissible announcement cards ("새 기능" notes, tips). Collapsed, the cards behind
38
+ * the front one peek out at the edge; hovering (after a short pause) or focusing spreads them out.
39
+ * Closing a card plays its entrance in reverse while the next one slides into its place.
40
+ */
41
+ export declare function NoticeStack({ items, onDismiss, visible, expanded: expandedProp, direction, gap, dismissLabel, className, style, 'aria-label': ariaLabel, }: NoticeStackProps): import("react").JSX.Element | null;
@@ -0,0 +1,32 @@
1
+ import { type CSSProperties, type ReactNode } from 'react';
2
+ import './NumberStepper.css';
3
+ export interface NumberStepperProps {
4
+ value?: number;
5
+ defaultValue?: number;
6
+ onValueChange?: (value: number) => void;
7
+ min?: number;
8
+ max?: number;
9
+ step?: number;
10
+ /** PageUp / PageDown jump. Defaults to 10 steps. */
11
+ largeStep?: number;
12
+ size?: 'sm' | 'md';
13
+ disabled?: boolean;
14
+ /** How the number reads, e.g. `(v) => \`${v}개\``. Also used for `aria-valuetext`. */
15
+ formatValue?: (value: number) => ReactNode;
16
+ /** Names the spinbutton, e.g. "동시 작업 수". */
17
+ 'aria-label'?: string;
18
+ 'aria-labelledby'?: string;
19
+ decrementLabel?: string;
20
+ incrementLabel?: string;
21
+ /** For forms: a hidden input with this name carries the value. */
22
+ name?: string;
23
+ id?: string;
24
+ className?: string;
25
+ style?: CSSProperties;
26
+ }
27
+ /**
28
+ * − value + for small counts (workers, seats, retries). The number is an ARIA spinbutton:
29
+ * ↑/→ and ↓/← step, PageUp/PageDown jump, Home/End go to min/max. Holding a button repeats
30
+ * after a pause (a short press is one ordinary click), and the number slides in the direction it moved.
31
+ */
32
+ export declare function NumberStepper({ value: valueProp, defaultValue, onValueChange, min, max, step, largeStep, size, disabled, formatValue, 'aria-label': ariaLabel, 'aria-labelledby': ariaLabelledby, decrementLabel, incrementLabel, name, id, className, style, }: NumberStepperProps): import("react").JSX.Element;
@@ -0,0 +1,31 @@
1
+ import './OtpInput.css';
2
+ export type OtpPattern = 'numeric' | 'alphanumeric';
3
+ export interface OtpInputProps {
4
+ /** Number of characters. */
5
+ length?: number;
6
+ /** Visual grouping, e.g. [3, 3] draws a dash between "123" and "456". Must add up to `length`. */
7
+ groups?: number[];
8
+ value?: string;
9
+ defaultValue?: string;
10
+ onValueChange?: (value: string) => void;
11
+ /** Fires once every slot is filled — verify here. */
12
+ onComplete?: (value: string) => void;
13
+ /** numeric: 0–9 only · alphanumeric: letters and digits (uppercased). */
14
+ pattern?: OtpPattern;
15
+ /** loading: gray slots with a shimmer · error: red slots that shake · success: green slots. Loading and success lock the input. */
16
+ status?: 'loading' | 'error' | 'success';
17
+ /** Show dots instead of characters. */
18
+ mask?: boolean;
19
+ size?: 'md' | 'lg';
20
+ disabled?: boolean;
21
+ autoFocus?: boolean;
22
+ name?: string;
23
+ id?: string;
24
+ className?: string;
25
+ 'aria-label'?: string;
26
+ }
27
+ /**
28
+ * One-time code input. A single real <input> sits under the slots, so typing, pasting
29
+ * ("123-456" → 123456), SMS autofill and IMEs all work; the slots only draw it.
30
+ */
31
+ export declare const OtpInput: import("react").ForwardRefExoticComponent<OtpInputProps & import("react").RefAttributes<HTMLInputElement>>;
@@ -0,0 +1,54 @@
1
+ import { type CSSProperties, type ReactNode } from 'react';
2
+ import './Pagination.css';
3
+ export type PaginationSize = 'sm' | 'md' | 'lg';
4
+ export interface PaginationRangeInfo {
5
+ /** First item on the page (1-based). */
6
+ start: number;
7
+ /** Last item on the page. */
8
+ end: number;
9
+ total: number;
10
+ }
11
+ export interface PaginationProps {
12
+ /** Current page, 1-based (controlled). */
13
+ page?: number;
14
+ /** First page when uncontrolled. */
15
+ defaultPage?: number;
16
+ onPageChange?: (page: number) => void;
17
+ /** Number of pages. Or give `totalItems` (+ `pageSize`) and it's worked out. */
18
+ totalPages?: number;
19
+ /** Number of items in all pages; enables the "1–20 / 248개" range text. */
20
+ totalItems?: number;
21
+ /** Items per page (controlled). */
22
+ pageSize?: number;
23
+ defaultPageSize?: number;
24
+ onPageSizeChange?: (pageSize: number) => void;
25
+ /** Shows a "페이지당 N개" Select with these choices. */
26
+ pageSizeOptions?: number[];
27
+ /** Pages shown on each side of the current one. */
28
+ siblingCount?: number;
29
+ /** Pages always shown at each end. */
30
+ boundaryCount?: number;
31
+ /** default: page numbers · simple: only "3 / 12" between the arrows. */
32
+ variant?: 'default' | 'simple';
33
+ /** neutral: gray chip on the current page · primary: near-black chip. */
34
+ tone?: 'neutral' | 'primary';
35
+ size?: PaginationSize;
36
+ /** First / last page buttons at the ends. */
37
+ showFirstLast?: boolean;
38
+ /** "1–20 / 248개" before the controls (needs `totalItems`). Defaults to on when `totalItems` is given. */
39
+ showRange?: boolean;
40
+ /** A small field to type a page number and jump (Enter). */
41
+ showJump?: boolean;
42
+ formatRange?: (info: PaginationRangeInfo) => ReactNode;
43
+ disabled?: boolean;
44
+ /** Name of the navigation landmark. */
45
+ 'aria-label'?: string;
46
+ className?: string;
47
+ style?: CSSProperties;
48
+ }
49
+ /**
50
+ * Page navigation. The current page is a filled chip that glides to the new number; arrows
51
+ * at the ends disable themselves. Works with a page count or with total items + page size,
52
+ * optionally with a page-size Select, range text and a jump-to-page field.
53
+ */
54
+ export declare function Pagination({ page: pageProp, defaultPage, onPageChange, totalPages, totalItems, pageSize: pageSizeProp, defaultPageSize, onPageSizeChange, pageSizeOptions, siblingCount, boundaryCount, variant, tone, size, showFirstLast, showRange, showJump, formatRange, disabled, 'aria-label': ariaLabel, className, style, }: PaginationProps): import("react").JSX.Element;
@@ -0,0 +1,7 @@
1
+ export type PaginationItem = number | 'start-ellipsis' | 'end-ellipsis';
2
+ /**
3
+ * The page numbers to show: `boundaryCount` pages at each end, `siblingCount` on each side of
4
+ * `page`, and an ellipsis for every gap. A gap of exactly one page shows that page instead of "…",
5
+ * so the number of slots stays the same while paging (nothing jumps).
6
+ */
7
+ export declare function paginationRange(page: number, count: number, siblingCount?: number, boundaryCount?: number): PaginationItem[];
@@ -0,0 +1,47 @@
1
+ import { type FlagCode } from '../../primitives';
2
+ export interface PhoneCountry {
3
+ code: FlagCode;
4
+ name: string;
5
+ /** Country calling code without "+". */
6
+ dial: string;
7
+ /** National number layout, one `#` per digit ("###-####-####"). Its `#` count is the max length. */
8
+ pattern: string;
9
+ /** A typical national number, shown formatted as the placeholder. */
10
+ example: string;
11
+ /** A leading 0 typed at home (010…) is dropped in the international number (+82 10…). */
12
+ trunk?: boolean;
13
+ }
14
+ export declare const PHONE_COUNTRIES: PhoneCountry[];
15
+ /** Lays digits into a pattern, stopping at the last digit so no dash dangles while typing. */
16
+ export declare function formatPhone(digits: string, pattern: string): string;
17
+ /** International (E.164) form of a national number: "+821012345678". Empty when there are no digits. */
18
+ export declare function toE164(digits: string, country: PhoneCountry): string;
19
+ export interface PhoneInputProps {
20
+ /** National digits only ("01012345678"). */
21
+ value?: string;
22
+ defaultValue?: string;
23
+ onValueChange?: (digits: string, detail: {
24
+ country: PhoneCountry;
25
+ e164: string;
26
+ }) => void;
27
+ country?: FlagCode;
28
+ defaultCountry?: FlagCode;
29
+ onCountryChange?: (country: FlagCode) => void;
30
+ /** Countries offered, in this order. Defaults to PHONE_COUNTRIES. */
31
+ countries?: PhoneCountry[];
32
+ size?: 'sm' | 'md' | 'lg';
33
+ invalid?: boolean;
34
+ disabled?: boolean;
35
+ /** Defaults to the country's example number. */
36
+ placeholder?: string;
37
+ /** Submits the E.164 number with forms. */
38
+ name?: string;
39
+ id?: string;
40
+ 'aria-label'?: string;
41
+ }
42
+ /**
43
+ * Phone number field: a country picker (flag + dial code) inside an Input that only takes digits
44
+ * and lays them out the way that country writes them. Pasting "+82 10-1234-5678" switches the
45
+ * country and keeps the number.
46
+ */
47
+ export declare function PhoneInput({ value: valueProp, defaultValue, onValueChange, country: countryProp, defaultCountry, onCountryChange, countries, size, invalid, disabled, placeholder, name, id, 'aria-label': ariaLabel, }: PhoneInputProps): import("react").JSX.Element;
@@ -0,0 +1,67 @@
1
+ import { type CSSProperties, type ReactNode } from 'react';
2
+ import './PieChart.css';
3
+ export interface PieSlice {
4
+ key: string;
5
+ label: string;
6
+ value: number;
7
+ /** CSS variable (`--chart-1`) or any color. Defaults to the chart palette in order. */
8
+ color?: string;
9
+ }
10
+ /** What the centre shows; handed to a `centerLabel` render function. */
11
+ export interface PieCenterContext {
12
+ /** Sum of all values. */
13
+ total: number;
14
+ /** The `max` prop, when the donut is a progress ring. */
15
+ max?: number;
16
+ /** The highlighted segment (hover, keyboard, legend), or null. */
17
+ active: {
18
+ slice: PieSlice;
19
+ index: number;
20
+ color: string;
21
+ share: number;
22
+ } | null;
23
+ formatValue: (value: number, slice?: PieSlice) => string;
24
+ }
25
+ export interface PieChartProps {
26
+ data: PieSlice[];
27
+ /** donut (default) or a solid pie. `innerRadius={0}` also makes a pie. */
28
+ variant?: 'donut' | 'pie';
29
+ /** Diameter in px. */
30
+ size?: number;
31
+ /** Ring thickness in px. Defaults to about 9% of the size (a thin ring). */
32
+ thickness?: number;
33
+ /** Hole size as a share of the radius (older API; `thickness` wins). 0 = pie. */
34
+ innerRadius?: number;
35
+ /** Gap between segments in degrees (measured at the middle of the ring; the gap keeps one width). */
36
+ padAngle?: number;
37
+ /** Rounding of segment corners in px. Shrinks on its own for thin or short segments. */
38
+ cornerRadius?: number;
39
+ /** Full scale of the ring (a progress donut). The rest stays empty over the track. */
40
+ max?: number;
41
+ /** Faint ring behind the segments. On by default when `max` is set. */
42
+ track?: boolean;
43
+ /** Slice values; also the donut total (called without a slice). */
44
+ formatValue?: (value: number, slice?: PieSlice) => string;
45
+ /** Caption under the centre number, or a function that renders the whole centre. */
46
+ centerLabel?: ReactNode | ((ctx: PieCenterContext) => ReactNode);
47
+ /** Centre number when nothing is highlighted. Defaults to the total (or the share of `max`). */
48
+ centerValue?: ReactNode;
49
+ /** true / 'side': a list beside the chart (value · share) · 'bottom': a row of keys under it. */
50
+ legend?: boolean | 'side' | 'bottom';
51
+ /** Show the share (%) next to legend values. */
52
+ showPercent?: boolean;
53
+ /** Value card next to the highlighted segment. Defaults on for a pie; a donut reads out in its centre. */
54
+ tooltip?: boolean;
55
+ activeIndex?: number | null;
56
+ defaultActiveIndex?: number | null;
57
+ onActiveIndexChange?: (index: number | null) => void;
58
+ 'aria-label'?: string;
59
+ className?: string;
60
+ style?: CSSProperties;
61
+ }
62
+ /**
63
+ * A donut (or pie). Segments sweep in from 12 o'clock and morph when the data changes. The highlighted
64
+ * segment grows outward and the rest fade; a donut reads it out in the centre (the total otherwise).
65
+ * ←/→ cycle through segments and the value is announced.
66
+ */
67
+ export declare function PieChart({ data, variant, size, thickness, innerRadius, padAngle, cornerRadius, max, track, formatValue, centerLabel, centerValue, legend, showPercent, tooltip, activeIndex, defaultActiveIndex, onActiveIndexChange, 'aria-label': ariaLabel, className, style, }: PieChartProps): import("react").JSX.Element;
@@ -0,0 +1,26 @@
1
+ export interface SegmentShape {
2
+ cx: number;
3
+ cy: number;
4
+ /** Outer radius. */
5
+ outer: number;
6
+ /** Inner radius; 0 = a pie wedge. */
7
+ inner: number;
8
+ a0: number;
9
+ a1: number;
10
+ /** Gap to each neighbour in px. Edges stay parallel, so the gap has one width from hole to rim. */
11
+ gap?: number;
12
+ /** Rounding of the four corners in px; shrinks on its own when a segment is too thin or too short. */
13
+ cornerRadius?: number;
14
+ }
15
+ /**
16
+ * Path of one segment: an annular sector (or a wedge when `inner` is 0) with a constant-width gap
17
+ * to its neighbours and rounded corners.
18
+ *
19
+ * Small segments never invert: each corner radius is capped so its circle still fits between the
20
+ * two edges (outer: `(R·sin h − g) / (1 + sin h)`, inner: `(ρ·sin h − g) / (1 − sin h)`, h = half the
21
+ * sweep), and by half the ring thickness. When the edges meet before reaching the hole, the inner side
22
+ * collapses to the point where they cross. When the gap is wider than the segment, nothing is drawn.
23
+ */
24
+ export declare function segmentPath({ cx, cy, outer, inner, a0, a1, gap, cornerRadius }: SegmentShape): string;
25
+ /** cubic-bezier(x1, y1, x2, y2) as a function of progress 0…1 (bisection on x). */
26
+ export declare function cubicBezier(x1: number, y1: number, x2: number, y2: number): (x: number) => number;
@@ -0,0 +1,15 @@
1
+ export interface TweenArc {
2
+ key: string;
3
+ a0: number;
4
+ a1: number;
5
+ color: string;
6
+ }
7
+ /**
8
+ * Angles that animate toward `target`: the first time they sweep in from 12 o'clock, after that each
9
+ * segment morphs from where it is. New keys grow from their start edge, removed keys shrink to their
10
+ * middle and then drop out. Runs with rAF, so it keeps going under reduced motion too.
11
+ */
12
+ export declare function useArcTween(target: TweenArc[], { enter, update }?: {
13
+ enter?: number;
14
+ update?: number;
15
+ }): TweenArc[];
@@ -0,0 +1,28 @@
1
+ import { type ReactNode } from 'react';
2
+ import './Popover.css';
3
+ export interface PopoverProps {
4
+ /** The element that opens it (usually a Button). */
5
+ trigger: ReactNode;
6
+ /** Content, or a render function that receives `close`. */
7
+ children: ReactNode | ((close: () => void) => ReactNode);
8
+ open?: boolean;
9
+ defaultOpen?: boolean;
10
+ onOpenChange?: (open: boolean) => void;
11
+ /** click: toggles on press · hover: opens after a short rest, closes after a grace period ·
12
+ * manual: the trigger does nothing by itself — you drive `open` (e.g. a typeable field). Outside press / Esc still close it. */
13
+ openOn?: 'click' | 'hover' | 'manual';
14
+ align?: 'start' | 'center' | 'end';
15
+ /** Panel width in px (or any CSS width). */
16
+ width?: number | string;
17
+ /** Inner padding; 'none' for menus / media that draw their own. */
18
+ padding?: 'none' | 'sm' | 'md';
19
+ /** Move focus into the panel when it opens (click mode). */
20
+ autoFocus?: boolean;
21
+ className?: string;
22
+ 'aria-label'?: string;
23
+ }
24
+ /**
25
+ * A small floating panel anchored to a trigger. It escapes overflow:hidden parents, flips above
26
+ * when there's no room below, and animates both in and out.
27
+ */
28
+ export declare function Popover({ trigger, children, open: openProp, defaultOpen, onOpenChange, openOn, align, width, padding, autoFocus, className, 'aria-label': ariaLabel, }: PopoverProps): import("react").JSX.Element;
@@ -0,0 +1,64 @@
1
+ import { type CSSProperties, type ReactNode } from 'react';
2
+ import './ProgressTracker.css';
3
+ export interface TrackerStep {
4
+ id: string;
5
+ label: ReactNode;
6
+ /** Second line in gray. */
7
+ description?: ReactNode;
8
+ /** Something to click on the right, e.g. a "연결" button. Hidden once the step is done. */
9
+ action?: ReactNode;
10
+ disabled?: boolean;
11
+ }
12
+ export interface TrackerGroup {
13
+ id: string;
14
+ /** Section title. Struck through once every step in it is done. */
15
+ title: ReactNode;
16
+ steps: TrackerStep[];
17
+ }
18
+ export interface ProgressTrackerProps {
19
+ title: ReactNode;
20
+ /** The steps, as one flat list. Leave out when you pass `groups`. */
21
+ steps?: TrackerStep[];
22
+ /**
23
+ * Steps in folding sections (a setup guide). The open section sits on a soft gray panel, rows lead
24
+ * with a StatusIcon (current · pending · done), and the "n/total" counter moves beside the bar.
25
+ */
26
+ groups?: TrackerGroup[];
27
+ /** With `groups`: single keeps one section open (finishing one opens the next) · multiple lets any stay open. */
28
+ groupMode?: 'single' | 'multiple';
29
+ /** With `groups`: ids of the open sections (controlled). */
30
+ openGroups?: string[];
31
+ /** With `groups`: sections open at first. Defaults to the first unfinished one. */
32
+ defaultOpenGroups?: string[];
33
+ onOpenGroupsChange?: (open: string[]) => void;
34
+ /** Buttons at the right of the title (편집, minimize, close). */
35
+ actions?: ReactNode;
36
+ /** Ids of finished steps (controlled). */
37
+ completed?: string[];
38
+ defaultCompleted?: string[];
39
+ onCompletedChange?: (completed: string[]) => void;
40
+ /** Steps can't be ticked by hand (completion comes from your app). */
41
+ readOnly?: boolean;
42
+ /** Shown under the bar once every step is done. */
43
+ doneMessage?: ReactNode;
44
+ /**
45
+ * Folds the steps away behind a chevron, leaving the title, bar and `summary` —
46
+ * a compact card for the bottom of a sidebar. The steps slide open to their real height.
47
+ */
48
+ collapsible?: boolean;
49
+ open?: boolean;
50
+ /** With `collapsible`: start open. */
51
+ defaultOpen?: boolean;
52
+ onOpenChange?: (open: boolean) => void;
53
+ /** A caption under the bar. Defaults to "13% 완료" when collapsible. */
54
+ summary?: ReactNode | ((done: number, total: number) => ReactNode);
55
+ className?: string;
56
+ style?: CSSProperties;
57
+ }
58
+ /**
59
+ * An onboarding checklist assembled only from existing components: Card (Header / Body) +
60
+ * Progress + List rows with a circle Checkbox — or, with `groups`, Accordion (filled) sections of
61
+ * List rows led by StatusIcon. The card padding and the row padding line up on the same left edge;
62
+ * its only CSS is the fold of `collapsible`.
63
+ */
64
+ export declare function ProgressTracker({ title, steps, groups, groupMode, openGroups, defaultOpenGroups, onOpenGroupsChange, actions, completed, defaultCompleted, onCompletedChange, readOnly, doneMessage, collapsible, open: openProp, defaultOpen, onOpenChange, summary, className, style, }: ProgressTrackerProps): import("react").JSX.Element;