@1money/component-ui 0.0.42 → 0.0.44

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 (68) hide show
  1. package/README.md +19 -24
  2. package/es/components/Dropdown/Dropdown.js +11 -3
  3. package/es/components/Icons/interface.d.ts +3 -0
  4. package/es/components/Input/FieldShell/FieldShell.css +1 -1
  5. package/es/components/Input/FieldShell/FieldShell.js +2 -3
  6. package/es/components/Select/Select.js +130 -91
  7. package/es/components/Select/SelectCustom.d.ts +6 -0
  8. package/es/components/Select/SelectCustom.js +232 -0
  9. package/es/components/Select/SelectFieldShell.d.ts +2 -0
  10. package/es/components/Select/SelectFieldShell.js +12 -4
  11. package/es/components/Select/SelectOptionContent.d.ts +8 -0
  12. package/es/components/Select/SelectOptionContent.js +20 -11
  13. package/es/components/Select/SelectSearchControl.d.ts +3 -0
  14. package/es/components/Select/SelectSearchControl.js +9 -4
  15. package/es/components/Select/index.d.ts +5 -2
  16. package/es/components/Select/index.js +8 -3
  17. package/es/components/Select/interface.d.ts +147 -1
  18. package/es/components/Select/interface.js +1 -1
  19. package/es/components/Select/style/Select.css +1 -1
  20. package/es/components/Select/useSelectShell.d.ts +34 -0
  21. package/es/components/Select/useSelectShell.js +106 -0
  22. package/es/components/Trigger/Trigger.js +33 -8
  23. package/es/components/Trigger/interface.d.ts +25 -2
  24. package/es/components/Upload/interface.d.ts +2 -0
  25. package/es/hooks/index.d.ts +2 -0
  26. package/es/hooks/index.js +2 -0
  27. package/es/hooks/useFloatingAnimation.d.ts +24 -0
  28. package/es/hooks/useFloatingAnimation.js +45 -0
  29. package/es/index.css +1 -1
  30. package/es/index.d.ts +2 -2
  31. package/es/index.js +1 -1
  32. package/es/stories/docs/ComponentDocsPage.js +2 -2
  33. package/es/stories/docs/componentDocMeta.js +1 -4
  34. package/lib/components/Dropdown/Dropdown.js +11 -3
  35. package/lib/components/Icons/interface.d.ts +3 -0
  36. package/lib/components/Input/FieldShell/FieldShell.css +1 -1
  37. package/lib/components/Input/FieldShell/FieldShell.js +2 -3
  38. package/lib/components/Select/Select.js +129 -90
  39. package/lib/components/Select/SelectCustom.d.ts +6 -0
  40. package/lib/components/Select/SelectCustom.js +242 -0
  41. package/lib/components/Select/SelectFieldShell.d.ts +2 -0
  42. package/lib/components/Select/SelectFieldShell.js +12 -4
  43. package/lib/components/Select/SelectOptionContent.d.ts +8 -0
  44. package/lib/components/Select/SelectOptionContent.js +21 -12
  45. package/lib/components/Select/SelectSearchControl.d.ts +3 -0
  46. package/lib/components/Select/SelectSearchControl.js +9 -4
  47. package/lib/components/Select/index.d.ts +5 -2
  48. package/lib/components/Select/index.js +9 -17
  49. package/lib/components/Select/interface.d.ts +147 -1
  50. package/lib/components/Select/interface.js +1 -1
  51. package/lib/components/Select/style/Select.css +1 -1
  52. package/lib/components/Select/useSelectShell.d.ts +34 -0
  53. package/lib/components/Select/useSelectShell.js +114 -0
  54. package/lib/components/Trigger/Trigger.js +32 -7
  55. package/lib/components/Trigger/interface.d.ts +25 -2
  56. package/lib/components/Upload/interface.d.ts +2 -0
  57. package/lib/hooks/index.d.ts +2 -0
  58. package/lib/hooks/index.js +13 -0
  59. package/lib/hooks/useFloatingAnimation.d.ts +24 -0
  60. package/lib/hooks/useFloatingAnimation.js +51 -0
  61. package/lib/index.css +1 -1
  62. package/lib/index.d.ts +2 -2
  63. package/lib/index.js +1 -1
  64. package/lib/stories/docs/ComponentDocsPage.js +2 -2
  65. package/lib/stories/docs/componentDocMeta.js +1 -4
  66. package/package.json +1 -1
  67. package/scripts/mcp-server/examples.generated.json +549 -519
  68. package/scripts/mcp-server/index.generated.json +887 -583
@@ -37,12 +37,6 @@
37
37
  "source": "readme",
38
38
  "compilable": true
39
39
  },
40
- "02eb41ce0715973b9fe2fb88cf59851f0fa8962318df7f86a9405a50cfe907b2": {
41
- "title": "Canonical usage",
42
- "code": "import { Checkbox } from '@1money/components-ui';\n// or\nimport { Checkbox } from '@1money/components-ui/Checkbox';",
43
- "source": "canonical",
44
- "compilable": true
45
- },
46
40
  "034773bdaca67ca0d5a236ca92c3d84403ca823cb8249eacea2414545523ab3d": {
47
41
  "title": "Grouped",
48
42
  "code": "{\n const [value, setValue] = useState<string | number | undefined>('usdt');\n\n return (\n <Select\n {...args}\n value={value}\n onChange={(nextValue, option) => {\n setValue(nextValue as string | number | undefined);\n args.onChange?.(nextValue, option);\n }}\n />\n );\n }",
@@ -67,18 +61,18 @@
67
61
  "source": "stories",
68
62
  "compilable": false
69
63
  },
70
- "0438a4317a7d7a552850cb51936a9650a74930e6c8b9e8a6f8c36de31ab885a0": {
71
- "title": "Canonical usage",
72
- "code": "import { Trigger } from '@1money/components-ui';\n// or\nimport { Trigger } from '@1money/components-ui/Trigger';",
73
- "source": "canonical",
74
- "compilable": true
75
- },
76
64
  "047c2f9b4e0f29aa1bfa1d29f631e05af609d686dc8ddcf1ab8a44f3838c16a5": {
77
65
  "title": "Default",
78
66
  "code": "<DashboardTemplate />",
79
67
  "source": "stories",
80
68
  "compilable": true
81
69
  },
70
+ "059d700d7a0e1ac3f3128b3461d9f1e718e140448690ccb50db0915c49cd7461": {
71
+ "title": "Canonical usage",
72
+ "code": "import { Alert } from '@1money/component-ui';\n// or\nimport { Alert } from '@1money/component-ui/Alert';",
73
+ "source": "canonical",
74
+ "compilable": true
75
+ },
82
76
  "06b3a8e6513382a6e7d5bd530b625d83a008bbb52aa5f05cb2812e54e8854b3a": {
83
77
  "title": "Api Examples",
84
78
  "code": "<div style={DEMO_SECTION_STYLE}>\n <Row\n gutter={GRID_GUTTER_SPACED}\n align={GRID_ALIGN.middle}\n justify={GRID_JUSTIFY.spaceBetween}\n wrap={WRAP_DISABLED}\n prefixCls={GRID_ROW_PREFIX}\n >\n <Col span={SPAN_HALF} prefixCls={GRID_COL_PREFIX}><div style={DEMO_BOX_STYLE}>Span</div></Col>\n <Col span={SPAN_HALF} prefixCls={GRID_COL_PREFIX}><div style={DEMO_BOX_STYLE}>Span</div></Col>\n </Row>\n\n <Row gutter={GRID_GUTTER_COMPACT} prefixCls={GRID_ROW_PREFIX}>\n <Col span={SPAN_QUARTER} offset={OFFSET_SMALL} prefixCls={GRID_COL_PREFIX}>\n <div style={DEMO_BOX_STYLE}>Offset</div>\n </Col>\n <Col span={SPAN_QUARTER} prefixCls={GRID_COL_PREFIX}>\n <div style={DEMO_BOX_STYLE}>Offset</div>\n </Col>\n </Row>\n\n <Row gutter={GRID_GUTTER_COMPACT} prefixCls={GRID_ROW_PREFIX}>\n <Col span={SPAN_QUARTER} push={PUSH_SMALL} prefixCls={GRID_COL_PREFIX}>\n <div style={DEMO_BOX_STYLE}>Push</div>\n </Col>\n <Col span={SPAN_QUARTER} pull={PULL_SMALL} prefixCls={GRID_COL_PREFIX}>\n <div style={DEMO_BOX_STYLE}>Pull</div>\n </Col>\n </Row>\n\n <Row gutter={GRID_GUTTER_RESPONSIVE} prefixCls={GRID_ROW_PREFIX}>\n <Col span={SPAN_HALF} prefixCls={GRID_COL_PREFIX}>\n <div style={DEMO_BOX_STYLE}>Responsive Gutter</div>\n </Col>\n <Col span={SPAN_HALF} prefixCls={GRID_COL_PREFIX}>\n <div style={DEMO_BOX_STYLE}>Responsive Gutter</div>\n </Col>\n </Row>\n\n <Row gutter={GRID_GUTTER_REM} prefixCls={GRID_ROW_PREFIX}>\n <Col span={SPAN_HALF} prefixCls={GRID_COL_PREFIX}>\n <div style={DEMO_BOX_STYLE}>String Gutter</div>\n </Col>\n <Col span={SPAN_HALF} prefixCls={GRID_COL_PREFIX}>\n <div style={DEMO_BOX_STYLE}>String Gutter</div>\n </Col>\n </Row>\n\n <Row gutter={GRID_GUTTER_COMPACT} prefixCls={GRID_ROW_PREFIX}>\n <Col span={SPAN_QUARTER} order={ORDER_LAST} prefixCls={GRID_COL_PREFIX}>\n <div style={DEMO_BOX_STYLE}>Order</div>\n </Col>\n <Col span={SPAN_QUARTER} order={ORDER_FIRST} prefixCls={GRID_COL_PREFIX}>\n <div style={DEMO_BOX_STYLE}>Order</div>\n </Col>\n </Row>\n\n <Row gutter={GRID_GUTTER_COMPACT} prefixCls={GRID_ROW_PREFIX}>\n <Col flex={FLEX_ONE} prefixCls={GRID_COL_PREFIX}>\n <div style={DEMO_BOX_STYLE}>Flex 1</div>\n </Col>\n <Col flex={FLEX_TWO} prefixCls={GRID_COL_PREFIX}>\n <div style={DEMO_BOX_STYLE}>Flex 2</div>\n </Col>\n </Row>\n\n <Row gutter={GRID_GUTTER_SPACED} wrap={WRAP_ENABLED} prefixCls={GRID_ROW_PREFIX}>\n <Col span={SPAN_BASE} sm={SPAN_SM} md={{ span: SPAN_MD, offset: OFFSET_SMALL }} lg={SPAN_LG} prefixCls={GRID_COL_PREFIX}>\n <div style={DEMO_BOX_STYLE}>Responsive</div>\n </Col>\n </Row>\n\n <Row gutter={GRID_GUTTER_SPACED} justify={JUSTIFY_RESPONSIVE} prefixCls={GRID_ROW_PREFIX}>\n <Col span={SPAN_HALF} prefixCls={GRID_COL_PREFIX}>\n <div style={DEMO_BOX_STYLE}>Justify Responsive</div>\n </Col>\n <Col span={SPAN_HALF} prefixCls={GRID_COL_PREFIX}>\n <div style={DEMO_BOX_STYLE}>Justify Responsive</div>\n </Col>\n </Row>\n\n </div>",
@@ -103,21 +97,27 @@
103
97
  "source": "stories",
104
98
  "compilable": true
105
99
  },
100
+ "07987ce3193833ae5e02466d3b7ea1e51372a52d41cdafaa11450f4bab575130": {
101
+ "title": "Canonical usage",
102
+ "code": "import { Dropdown } from '@1money/component-ui';\n// or\nimport { Dropdown } from '@1money/component-ui/Dropdown';",
103
+ "source": "canonical",
104
+ "compilable": true
105
+ },
106
106
  "07a4236cc3c96aa1a14a8ab647fef5e00704b05042314ec5815451b3dd3b5ba0": {
107
107
  "title": "Usage",
108
108
  "code": "<Typography.Display size=\"lg\">Account Overview</Typography.Display>\n\n<Typography.Headline size=\"md\">Settlement Timeline</Typography.Headline>\n\n<Typography.Title size=\"sm\" strong>\n Customer Details\n</Typography.Title>\n\n<Typography.Body size=\"md\" as=\"p\">\n Semantic body copy keeps product text aligned with the shared typography scale.\n</Typography.Body>\n\n<Typography.Body size=\"md\" ellipsis={{ tooltip: true }} copyable>\n 0x814f0d3a9b2c7e1f5d6a8b4c3e2f1a0d9c8b7a6f749f\n</Typography.Body>\n\n<Typography.Label size=\"sm\" htmlFor=\"email\">\n Email\n</Typography.Label>\n\n<Typography.Link size=\"md\" href=\"https://ant.design/components/typography/\" target=\"_blank\">\n Typography reference\n</Typography.Link>",
109
109
  "source": "readme",
110
110
  "compilable": true
111
111
  },
112
- "08af6791ed777b4f8ea419b22b1309470e98f6762ccd1ac6fc23e09d6676587b": {
113
- "title": "Canonical usage",
114
- "code": "import { Progress } from '@1money/components-ui';\n// or\nimport { Progress } from '@1money/components-ui/Progress';",
115
- "source": "canonical",
112
+ "07cacb15e560cfbe8f05e93459b5f0d51faf5fd0a01b0995368a360610e18d30": {
113
+ "title": "Import",
114
+ "code": "import {\n ProForm,\n ProFormText,\n ProFormSelect,\n DialogForm,\n QueryFilter,\n} from '@1money/component-ui';\n// or\nimport { ProForm, ProFormText } from '@1money/component-ui/ProForm';",
115
+ "source": "readme",
116
116
  "compilable": true
117
117
  },
118
- "08d86e1e9a9ccea86e7168af88595e9da0ef259cf44907a5be70520cdb1e4a4a": {
118
+ "08616eb7b07c701d8cd3872fb1e802eac207a2cf2a3a802b28360fc7112d1ca8": {
119
119
  "title": "Import",
120
- "code": "import { Link } from '@1money/components-ui';\n// or\nimport { Link } from '@1money/components-ui/Link';",
120
+ "code": "import { Calendar } from '@1money/component-ui';\n// or\nimport { Calendar } from '@1money/component-ui/Calendar';",
121
121
  "source": "readme",
122
122
  "compilable": true
123
123
  },
@@ -133,10 +133,10 @@
133
133
  "source": "stories",
134
134
  "compilable": true
135
135
  },
136
- "0c268f0ec6b90f7352970d3db858c53364c60f2321af3c578568fc93082425bb": {
137
- "title": "Canonical usage",
138
- "code": "import { Tabs } from '@1money/components-ui';\n// or\nimport { Tabs } from '@1money/components-ui/Tabs';",
139
- "source": "canonical",
136
+ "0af966e9349f745d71c776d3f6e0547aecbbb0d12fb0a9964b1ec02d8a61baae": {
137
+ "title": "Import",
138
+ "code": "import { Dialog } from '@1money/component-ui';\n// or\nimport { Dialog } from '@1money/component-ui/Dialog';",
139
+ "source": "readme",
140
140
  "compilable": true
141
141
  },
142
142
  "0c7c04366337519cd94b38f5358dfa8f9eec80c8f289ba172def5f00e1a89ba3": {
@@ -145,30 +145,48 @@
145
145
  "source": "stories",
146
146
  "compilable": false
147
147
  },
148
+ "0c865e04e29af2a17146034e78e156e8271e4c6700f4b8d431d67f0ba04a6d6a": {
149
+ "title": "Canonical usage",
150
+ "code": "import {\n ProForm,\n ProFormText,\n ProFormSelect,\n DialogForm,\n QueryFilter,\n} from '@1money/component-ui';\n// or\nimport { ProForm, ProFormText } from '@1money/component-ui/ProForm';",
151
+ "source": "canonical",
152
+ "compilable": true
153
+ },
148
154
  "0caa8e66489f540fb7f7969ee8d11091048124739a3d26ddcbc22e6ba567048f": {
149
155
  "title": "No Submitter",
150
156
  "code": "<ProForm {...args} submitter={false}>\n <ProFormText name=\"search\" label=\"Search\" placeholder=\"Type to search...\" />\n </ProForm>",
151
157
  "source": "stories",
152
158
  "compilable": false
153
159
  },
160
+ "0cda435f1e77eae5e9d6a2c883f7b45f34643b77a9a4f8ca3d23ea33a09b9a01": {
161
+ "title": "Responsive Usage",
162
+ "code": "const GRID_GUTTER = { sm: 8, md: 16, lg: 24 };\nconst SPAN_BASE = 12;\nconst SPAN_SM = 6;\nconst SPAN_MD = 4;\nconst OFFSET_MD = 2;\nconst SPAN_LARGE = 3;\n\nimport { GRID_JUSTIFY } from '@1money/component-ui/Grid';\n\nconst GRID_JUSTIFY_RESPONSIVE = {\n sm: GRID_JUSTIFY.start,\n md: GRID_JUSTIFY.spaceBetween,\n lg: GRID_JUSTIFY.end\n};\nconst PUSH_COL = 1;\nconst PULL_COL = 1;\n\n<Grid gutter={GRID_GUTTER}>\n <Grid.Col span={SPAN_BASE} sm={SPAN_SM} md={{ span: SPAN_MD, offset: OFFSET_MD }} lg={SPAN_LARGE} />\n</Grid>\n\n<Grid gutter={GRID_GUTTER} justify={GRID_JUSTIFY_RESPONSIVE}>\n <Grid.Col span={SPAN_BASE} sm={SPAN_SM} md={{ span: SPAN_MD, offset: OFFSET_MD }} lg={SPAN_LARGE} />\n <Grid.Col span={SPAN_BASE} push={PUSH_COL} pull={PULL_COL} />\n</Grid>",
163
+ "source": "readme",
164
+ "compilable": true
165
+ },
154
166
  "0df7d43ad53f6a66386ebad5a61eaaf088d0b9200a5fb97e51f6c4964aefd05e": {
155
167
  "title": "Usage",
156
168
  "code": "<Switch label=\"Notifications\" onChange={(checked) => console.log(checked)} />\n\n<Switch\n label=\"Dark Mode\"\n description=\"Enable dark theme across the app\"\n defaultChecked\n/>",
157
169
  "source": "readme",
158
170
  "compilable": true
159
171
  },
172
+ "10c3dc4b995524ead942626d1a9e7ef96f11e52235700d42ddbf138090b3a9ad": {
173
+ "title": "Canonical usage",
174
+ "code": "import { Slider } from '@1money/component-ui';\n// or\nimport { Slider } from '@1money/component-ui/Slider';",
175
+ "source": "canonical",
176
+ "compilable": true
177
+ },
178
+ "11a75effde4de419507479c188f4208bc45d4e54ee6928476375f622ea51f29d": {
179
+ "title": "Canonical usage",
180
+ "code": "import { ResizeObserver, useResizeObserver } from '@1money/component-ui';\n// or\nimport { ResizeObserver, Collection, useResizeObserver } from '@1money/component-ui/ResizeObserver';",
181
+ "source": "canonical",
182
+ "compilable": true
183
+ },
160
184
  "11f60c018746e51bd823c5ce8039341a2200f2e132e62e58f99f23cfe2166cbd": {
161
185
  "title": "All Variants",
162
186
  "code": "<div style={{ display: 'flex', flexDirection: 'column', gap: 32 }}>\n {PROGRESS_COLORS.map(color => (\n <div key={color} style={{ display: 'flex', flexDirection: 'column', gap: 16 }}>\n <h3 style={{ margin: 0 }}>{color}</h3>\n {PROGRESS_PLACEMENTS.map(placement => (\n <div key={`${color}-${placement}`} style={{ display: 'flex', flexDirection: 'column', gap: 16 }}>\n <h4 style={{ margin: 0 }}>{placement}</h4>\n {PROGRESS_STATES.map(state => (\n <Progress\n {...args}\n key={`${color}-${placement}-${state}`}\n color={color}\n placement={placement}\n state={state}\n percent={state === 'success' ? 100 : state === 'not-started' ? 0 : 25}\n feedback={state === 'error' ? 'Feedback' : undefined}\n />\n ))}\n </div>\n ))}\n </div>\n ))}\n </div>",
163
187
  "source": "stories",
164
188
  "compilable": false
165
189
  },
166
- "121fd04bd739e98c6ccc312a1be13069715c343ad66bcbd8e3b076ee2611f60a": {
167
- "title": "Canonical usage",
168
- "code": "import type { IconsProps } from '@1money/component-ui';",
169
- "source": "canonical",
170
- "compilable": true
171
- },
172
190
  "123291e7b1b33126adc91e8204e4002c37c71a74eb5bfca67a4da71b9aec2f6a": {
173
191
  "title": "Default",
174
192
  "code": "{\n const [value, setValue] = useState<string | number | undefined>('btc');\n\n return (\n <Select\n {...args}\n value={value}\n onChange={(nextValue, option) => {\n setValue(nextValue as string | number | undefined);\n args.onChange?.(nextValue, option);\n }}\n />\n );\n }",
@@ -181,18 +199,24 @@
181
199
  "source": "stories",
182
200
  "compilable": false
183
201
  },
184
- "124abe44040ddcd13aa6aad8f0dd237bae86b652e64005957c39324a2182b934": {
185
- "title": "Import",
186
- "code": "import { Typography } from '@1money/components-ui';\n// or\nimport { Typography } from '@1money/components-ui/Typography';",
187
- "source": "readme",
188
- "compilable": true
189
- },
190
202
  "144e248f0e0e1f5a681bdd8625add8d71643d3cca3f40bd840d914b057970d9a": {
191
203
  "title": "All Variants",
192
204
  "code": "<div style={{ display: 'flex', flexDirection: 'column', gap: 16 }}>\n <div>\n <p style={{ marginBottom: 8 }}>Default</p>\n <Copy {...args} contained/>\n </div>\n <div>\n <Copy {...args} contained={false} />\n </div>\n </div>",
193
205
  "source": "stories",
194
206
  "compilable": false
195
207
  },
208
+ "1673418288f034d6e46db906f3b2fb8a2079625c30f15ed4c7c35c0e4568f940": {
209
+ "title": "Basic Usage",
210
+ "code": "import { Grid } from '@1money/component-ui';\nimport { GRID_ALIGN, GRID_JUSTIFY } from '@1money/component-ui/Grid';\n\nconst GRID_GUTTER: [number, number] = [16, 8];\nconst SPAN_HALF = 6;\n\n<Grid gutter={GRID_GUTTER} justify={GRID_JUSTIFY.spaceBetween} align={GRID_ALIGN.middle}>\n <Grid.Col span={SPAN_HALF}>Left</Grid.Col>\n <Grid.Col span={SPAN_HALF}>Right</Grid.Col>\n</Grid>",
211
+ "source": "readme",
212
+ "compilable": true
213
+ },
214
+ "17a413d259fae192ca2f0c09fc23af856852b5f5ca65c1efa9dcb95480776ede": {
215
+ "title": "Disabled Vs Read Only",
216
+ "code": "<div style={{ display: 'flex', gap: 24 }}>\n <div style={storyContainerStyle}>\n <Select\n label=\"Disabled\"\n options={OPTIONS}\n value=\"btc\"\n disabled\n />\n </div>\n <div style={storyContainerStyle}>\n <Select\n label=\"Read only\"\n options={OPTIONS}\n value=\"btc\"\n readOnly\n />\n </div>\n </div>",
217
+ "source": "stories",
218
+ "compilable": true
219
+ },
196
220
  "17aad2a9b23bb7f9a4768f770a9b9b5b06d74dab24c5200037505b0047ec2391": {
197
221
  "title": "Controlled",
198
222
  "code": "{\n const [open, setOpen] = useState(false);\n return (\n <div style={ANCHOR_WRAPPER_STYLE}>\n <button id=\"tooltip-controlled\">Anchor</button>\n <div style={CONTROL_ROW_STYLE}>\n <button onClick={() => setOpen(true)}>Open</button>\n <button onClick={() => setOpen(false)}>Close</button>\n <button onClick={() => setOpen((v) => !v)}>Toggle</button>\n </div>\n <Tooltip\n anchorSelect=\"#tooltip-controlled\"\n title=\"Controlled\"\n body=\"This tooltip is controlled externally.\"\n open={open}\n onOpenChange={setOpen}\n />\n </div>\n );\n }",
@@ -205,12 +229,36 @@
205
229
  "source": "readme",
206
230
  "compilable": true
207
231
  },
232
+ "19d1f168d6381a52a225b4e4518a55b8dec5b0305e036f4c57f63a77465435b2": {
233
+ "title": "Import",
234
+ "code": "import { Step } from '@1money/component-ui';\n// or\nimport { Step } from '@1money/component-ui/Step';",
235
+ "source": "readme",
236
+ "compilable": true
237
+ },
208
238
  "1ad3863a7ccae5d72cf0b223899e03501462831ed16ae711d9f497c103c00008": {
209
239
  "title": "Group Cell Options",
210
240
  "code": "{\n const [value, setValue] = React.useState<string | number>('swift');\n\n const handleChange = (event: RadioChangeEvent) => {\n if (event.target.value !== undefined) {\n setValue(event.target.value);\n }\n };\n\n return (\n <RadioGroup\n value={value}\n variant=\"cell\"\n size=\"large\"\n alignment=\"left\"\n direction=\"horizontal\"\n onChange={handleChange}\n options={[\n {\n value: 'swift',\n label: 'SWIFT',\n description: 'Receive via bank rails',\n icon: 'swift',\n },\n {\n value: 'global',\n label: 'Global account',\n description: 'International settlement',\n icon: 'language',\n },\n ]}\n />\n );\n }",
211
241
  "source": "stories",
212
242
  "compilable": true
213
243
  },
244
+ "1b3e0014243a3c2fc49f18ec95bf7915a97bf89be93ea39221e905dc26aa7035": {
245
+ "title": "Import",
246
+ "code": "import { Portal } from '@1money/component-ui';\n// or\nimport { Portal } from '@1money/component-ui/Portal';",
247
+ "source": "readme",
248
+ "compilable": true
249
+ },
250
+ "1b62b166b8cc556e31e7ffa0b7d5ea66b965e65e6bf73b737499332aa8b0ce15": {
251
+ "title": "Canonical usage",
252
+ "code": "import { Tooltip } from '@1money/component-ui';\n// or\nimport { Tooltip } from '@1money/component-ui/Tooltip';",
253
+ "source": "canonical",
254
+ "compilable": true
255
+ },
256
+ "1cc244bf13712c43e79b378e25198234696ed488d0a147473327f0eb16c461bc": {
257
+ "title": "Searchable Sizes",
258
+ "code": "{\n const [largeValue, setLargeValue] = useState<string | number | undefined>('usdt');\n const [smallValue, setSmallValue] = useState<string | number | undefined>('usdt');\n\n return (\n <div style={{ display: 'flex', flexDirection: 'column', gap: 24, width: 320 }}>\n <Select\n {...args}\n size=\"large\"\n label=\"Large\"\n value={largeValue}\n onChange={(nextValue, option) => {\n setLargeValue(nextValue as string | number | undefined);\n args.onChange?.(nextValue, option);\n }}\n />\n <Select\n {...args}\n size=\"small\"\n label=\"Small\"\n filterInputAutoFocus={false}\n value={smallValue}\n onChange={(nextValue, option) => {\n setSmallValue(nextValue as string | number | undefined);\n args.onChange?.(nextValue, option);\n }}\n />\n </div>\n );\n }",
259
+ "source": "stories",
260
+ "compilable": false
261
+ },
214
262
  "1d0cc410e4f667fa13d9ad249ca801acda6fd51fc78c87c3b00209163c48df6b": {
215
263
  "title": "Range Selection",
216
264
  "code": "<Calendar\n label=\"Date Range\"\n selectionMode=\"range\"\n numberOfMonths={2}\n/>",
@@ -241,30 +289,42 @@
241
289
  "source": "stories",
242
290
  "compilable": false
243
291
  },
292
+ "1f1b7a95b5907a8f4904dcc20ae03f7dd509d1e5ea1570f9fd663a0d8baf1f2a": {
293
+ "title": "Canonical usage",
294
+ "code": "import { Input } from '@1money/component-ui';\n// or\nimport { Input } from '@1money/component-ui/Input';",
295
+ "source": "canonical",
296
+ "compilable": true
297
+ },
298
+ "1f2928ec0a947db2a5fec3cc4241fef3b241c19c1d121bfc46c37aec0af0edbe": {
299
+ "title": "Usage",
300
+ "code": "import { Button } from '@1money/component-ui';\n\n<Dropdown\n content={({ close }) => (\n <button type=\"button\" onClick={close}>\n Close\n </button>\n )}\n placement=\"bottom-start\"\n>\n <Button>Open menu</Button>\n</Dropdown>",
301
+ "source": "readme",
302
+ "compilable": true
303
+ },
244
304
  "1f944ea3bc1de41179d6d298524b5c3604ace798b878bacd31dc65416b264e80": {
245
305
  "title": "Brand Spinner with Message",
246
306
  "code": "<Spinner\n type=\"brand\"\n size={56}\n title=\"Hang tight\"\n body=\"We're processing your request\"\n/>",
247
307
  "source": "readme",
248
308
  "compilable": true
249
309
  },
310
+ "20d57203520c799fa33716a33d4bc15c62ab5180b8628139aa313d443bf3c802": {
311
+ "title": "Import",
312
+ "code": "import { Tooltip } from '@1money/component-ui';\n// or\nimport { Tooltip } from '@1money/component-ui/Tooltip';",
313
+ "source": "readme",
314
+ "compilable": true
315
+ },
316
+ "20ec463b0b6df55a2fa2c5df4836735067151eb22ca13e76ea7b7795465b3141": {
317
+ "title": "Without Portal",
318
+ "code": "{\n const [value, setValue] = useState<string | number | undefined>('btc');\n\n return (\n <div style={{ position: 'relative' }}>\n <Select\n {...args}\n portal={false}\n value={value}\n onChange={(nextValue, option) => {\n setValue(nextValue as string | number | undefined);\n args.onChange?.(nextValue, option);\n }}\n />\n </div>\n );\n }",
319
+ "source": "stories",
320
+ "compilable": false
321
+ },
250
322
  "216b625401b1ee29a2c8f02427f776e18dd670858e53fd87ea414473832ba9c9": {
251
323
  "title": "With Title",
252
324
  "code": "<div style={ANCHOR_WRAPPER_STYLE}>\n <button id=\"tooltip-title\">Hover me</button>\n <Tooltip {...args} anchorSelect=\"#tooltip-title\" />\n </div>",
253
325
  "source": "stories",
254
326
  "compilable": false
255
327
  },
256
- "2179af6a270bc4891095e10b5a182d62e7767a442d309c3641e1cfea330c5d5f": {
257
- "title": "Import",
258
- "code": "import { Popconfirm } from '@1money/components-ui';\nimport '@1money/components-ui/index.css';",
259
- "source": "readme",
260
- "compilable": true
261
- },
262
- "21cf92888ecabc84d2f36ba71a1b5a30b1fc75a963b72b6bd4ad911c20be6142": {
263
- "title": "Canonical usage",
264
- "code": "import type { IconName } from '@1money/component-ui';",
265
- "source": "canonical",
266
- "compilable": true
267
- },
268
328
  "21e145efeaada4cb2c7e716099dd9261f34d38e9df00905994175c1a5e9aabb5": {
269
329
  "title": "Dynamic Data",
270
330
  "code": "{\n const [count, setCount] = useState(100);\n const data = generateData(count);\n\n return (\n <div>\n <div style={{ marginBottom: 12, display: 'flex', gap: 8 }}>\n <button style={btnStyle} onClick={() => setCount((c) => c + 100)}>\n Add 100 items ({count} total)\n </button>\n <button style={btnStyle} onClick={() => setCount((c) => Math.max(0, c - 100))}>\n Remove 100 items\n </button>\n <button style={btnStyle} onClick={() => setCount(0)}>\n Clear\n </button>\n </div>\n <div style={containerStyle}>\n <VirtualList\n data={data}\n height={300}\n itemHeight={30}\n itemKey=\"id\"\n >\n {(item: Item) => (\n <div style={itemStyle(item.height)}>\n <span>Item {item.id}</span>\n </div>\n )}\n </VirtualList>\n </div>\n </div>\n );\n }",
@@ -283,12 +343,6 @@
283
343
  "source": "stories",
284
344
  "compilable": false
285
345
  },
286
- "226ab361064aae3c8c8f47bb5d32f8dd315bb5427d7c7a1e8cf5d4f10a0d325c": {
287
- "title": "Canonical usage",
288
- "code": "import { VirtualList } from '@1money/components-ui';\n// or\nimport { VirtualList } from '@1money/components-ui/VirtualList';",
289
- "source": "canonical",
290
- "compilable": true
291
- },
292
346
  "22701739de59f3ff8757908dd59dec110a126e3b95861d3ad523cb1552deeed7": {
293
347
  "title": "All Variants",
294
348
  "code": "<div style={{ display: 'flex', flexDirection: 'column', gap: 32 }}>\n {VARIANTS.map((variant) => (\n <div key={variant}>\n <h3 style={{ marginBottom: 12 }}>{variant}</h3>\n <Empty {...args} variant={variant} />\n </div>\n ))}\n </div>",
@@ -307,6 +361,18 @@
307
361
  "source": "stories",
308
362
  "compilable": true
309
363
  },
364
+ "231cba24b4a9f1ba3a3ac60ae9526c919f6067a6a5e5147a00bec11fd9e57067": {
365
+ "title": "Import",
366
+ "code": "import { Grid, Row, Col } from '@1money/component-ui';\n// or\nimport { Grid, Row, Col } from '@1money/component-ui/Grid';\nimport { GRID_ALIGN, GRID_JUSTIFY } from '@1money/component-ui/Grid';",
367
+ "source": "readme",
368
+ "compilable": true
369
+ },
370
+ "23592116b9596d1493aa1b0ad242483fc2358a83e24e126eb5db3a4265391b98": {
371
+ "title": "Canonical usage",
372
+ "code": "import { CoachMark } from '@1money/component-ui';\n// or\nimport { CoachMark } from '@1money/component-ui/CoachMark';",
373
+ "source": "canonical",
374
+ "compilable": true
375
+ },
310
376
  "23bda2a849d16045cdaa73e374c204db1099cbca913ff14a7ef5f02f346f50b6": {
311
377
  "title": "Usage",
312
378
  "code": "// Basic\n<Button color=\"primary\" size=\"medium\">Submit</Button>\n\n// With icons\n<Button color=\"secondary\" iconStart={<Icons name=\"add\" size={16} />}>\n Add Item\n</Button>\n\n<Button color=\"grey\" iconEnd={<Icons name=\"arrowRight\" size={16} />}>\n Next\n</Button>\n\n// Loading state\n<Button loading>Processing...</Button>\n\n// Disabled\n<Button disabled>Unavailable</Button>",
@@ -373,39 +439,33 @@
373
439
  "source": "stories",
374
440
  "compilable": false
375
441
  },
376
- "285dd42c2ca63f8f2eb21d39bf4dd6649d9b1383834a94ba626d242b9acc24a1": {
377
- "title": "Import",
378
- "code": "import { Upload, UploadFileBar } from '@1money/components-ui';\n// or\nimport { Upload, UploadFileBar } from '@1money/components-ui/Upload';",
379
- "source": "readme",
380
- "compilable": true
381
- },
382
442
  "28a4918e2bb83aaa273cf3846c84c67dca51a5280decbef71e82f997dda9baac": {
383
443
  "title": "Usage",
384
444
  "code": "<ResizeObserver\n onResize={(size, element) => {\n console.log(size.width, element);\n }}\n>\n <div>Measured content</div>\n</ResizeObserver>",
385
445
  "source": "readme",
386
446
  "compilable": true
387
447
  },
448
+ "28d655b4312a50e5d20bbbf1d018d4583bd377ee502b3ffee72ca3f17a1bb072": {
449
+ "title": "Import",
450
+ "code": "import { Progress } from '@1money/component-ui';\n// or\nimport { Progress } from '@1money/component-ui/Progress';",
451
+ "source": "readme",
452
+ "compilable": true
453
+ },
388
454
  "28dcbb40d407a6c3c48dcdb51a06d11466a26d831324f8c583ab6b877bc5eb7d": {
389
455
  "title": "Vertical Layout",
390
456
  "code": "<Space direction={SPACE_DIRECTION.vertical} size={SPACE_SIZE.large}>\n <div>Top</div>\n <div>Bottom</div>\n</Space>",
391
457
  "source": "readme",
392
458
  "compilable": true
393
459
  },
394
- "29a8d3d4fdc2b1b61574ec8e8a8a2ffb57226781120cdc378f8d179d101a0032": {
460
+ "29453274a03adf14b66bc942588fe73c83d286a864658c26536b67a996236cc7": {
395
461
  "title": "Canonical usage",
396
- "code": "import { Tour } from '@1money/components-ui';\n// or\nimport { Tour } from '@1money/components-ui/Tour';",
462
+ "code": "import { Radio, RadioGroup } from '@1money/component-ui';\n// or tree-shakeable\nimport { Radio, RadioGroup } from '@1money/component-ui/Radio';",
397
463
  "source": "canonical",
398
464
  "compilable": true
399
465
  },
400
- "29e2310b26c2aecedef7a08fdce046f6fada2887312516d227bf0467d9691185": {
401
- "title": "Import",
402
- "code": "import {\n ProForm,\n ProFormText,\n ProFormSelect,\n DialogForm,\n QueryFilter,\n} from '@1money/components-ui';\n// or\nimport { ProForm, ProFormText } from '@1money/components-ui/ProForm';",
403
- "source": "readme",
404
- "compilable": true
405
- },
406
- "2a00b4740e301b8a7ac79f978053cc5d0d9e28704a3496719ce12b34448697d2": {
466
+ "2982842534ed88247ac07099dc694a4b0087d1d1ed1f59eda5d9efaaf888f40c": {
407
467
  "title": "Import",
408
- "code": "import { Accordion } from '@1money/components-ui';\n// or\nimport { Accordion } from '@1money/components-ui/Accordion';",
468
+ "code": "import { Upload, UploadFileBar } from '@1money/component-ui';\n// or\nimport { Upload, UploadFileBar } from '@1money/component-ui/Upload';",
409
469
  "source": "readme",
410
470
  "compilable": true
411
471
  },
@@ -415,36 +475,54 @@
415
475
  "source": "stories",
416
476
  "compilable": true
417
477
  },
478
+ "2cca976a647db275dfb45ce8bb53bc85d304e49c3d91f76e5987d11e95b604c1": {
479
+ "title": "Import",
480
+ "code": "import { Cell } from '@1money/component-ui';\n// or\nimport { Cell } from '@1money/component-ui/Cell';",
481
+ "source": "readme",
482
+ "compilable": true
483
+ },
418
484
  "2db7958f91085606312d3dea5983e6a87724bdaaaeb755893810034b5be459a2": {
419
485
  "title": "Copyable",
420
486
  "code": "<Typography.Link\n size=\"md\"\n href=\"https://example.com/reference\"\n copyable={{ text: 'https://example.com/reference' }}\n>\n https://example.com/reference\n</Typography.Link>",
421
487
  "source": "readme",
422
488
  "compilable": true
423
489
  },
490
+ "2f014c8b7fe8bf6d1251bf341df8d93d7b3d3d66a185b95d0cabfa7328259e4b": {
491
+ "title": "Canonical usage",
492
+ "code": "import { Tabs } from '@1money/component-ui';\n// or\nimport { Tabs } from '@1money/component-ui/Tabs';",
493
+ "source": "canonical",
494
+ "compilable": true
495
+ },
424
496
  "2f65549d43490603034b9f30beadb2efd27c2c0f454242a54f434f213d051491": {
425
497
  "title": "Omit Nil",
426
498
  "code": "<ProForm\n {...args}\n omitNil\n initialValues={{ name: '', email: '', note: null }}\n onFinish={(values) => {\n alert('Nil values stripped:\\n' + JSON.stringify(values, null, 2));\n }}\n >\n <ProFormText name=\"name\" label=\"Name (leave empty to omit)\" />\n <ProFormText name=\"email\" label=\"Email (leave empty to omit)\" />\n <ProFormText name=\"note\" label=\"Note (null → omitted)\" />\n </ProForm>",
427
499
  "source": "stories",
428
500
  "compilable": false
429
501
  },
502
+ "31040a7ff19f27a25e9ba2a3b39168650944f1c7a3f0056e5b2b51ee4581d1af": {
503
+ "title": "Import",
504
+ "code": "import { Popconfirm } from '@1money/component-ui';\nimport '@1money/component-ui/index.css';",
505
+ "source": "readme",
506
+ "compilable": true
507
+ },
430
508
  "31dd5c9e926c0deeefba1a4028848b13ee819e42fbdf5ba0438329ffa1907e66": {
431
509
  "title": "Width Presets",
432
510
  "code": "<ProForm {...args}>\n <ProFormText name=\"sm\" label=\"Small (sm = 160px)\" width=\"sm\" />\n <ProFormText name=\"md\" label=\"Medium (md = 240px)\" width=\"md\" />\n <ProFormText name=\"lg\" label=\"Large (lg = 320px)\" width=\"lg\" />\n <ProFormText name=\"xl\" label=\"XL (xl = 420px)\" width=\"xl\" />\n <ProFormText name=\"custom\" label=\"Custom (200px)\" width={200} />\n </ProForm>",
433
511
  "source": "stories",
434
512
  "compilable": false
435
513
  },
436
- "323997b5e7fbded862fcafd3b54089dd9dfae28d4b7c04fbe3d26f612a7b2406": {
437
- "title": "Canonical usage",
438
- "code": "import { Tooltip } from '@1money/components-ui';\n// or\nimport { Tooltip } from '@1money/components-ui/Tooltip';",
439
- "source": "canonical",
440
- "compilable": true
441
- },
442
514
  "3298cc00509da7da73ca2da525874e520a453a289a0c4985f6f11249b5768dba": {
443
515
  "title": "Full Width",
444
516
  "code": "<Tabs items={DEFAULT_ITEMS} fullWidth />",
445
517
  "source": "stories",
446
518
  "compilable": true
447
519
  },
520
+ "339afc4bf7df571a14ddee5065e32a46b5493ab19978ace33f336a5c7a504234": {
521
+ "title": "Import",
522
+ "code": "import { Clipboard } from '@1money/component-ui';\n// or\nimport { Clipboard } from '@1money/component-ui/Copy';",
523
+ "source": "readme",
524
+ "compilable": true
525
+ },
448
526
  "34536f5f5abc20bc7255387d21700a4725ea8d6f9806b09cb947375f7afde43c": {
449
527
  "title": "Label Right",
450
528
  "code": "<div style={{ display: 'flex', flexDirection: 'column', gap: 16 }}>\n <Switch {...args} label=\"Label\" description=\"Description\" labelPlacement=\"right\" />\n <Switch {...args} label=\"Label\" description=\"Description\" labelPlacement=\"right\" defaultChecked />\n </div>",
@@ -487,16 +565,10 @@
487
565
  "source": "readme",
488
566
  "compilable": true
489
567
  },
490
- "36b6b20f42395f39098061f501edd80895fcbc554523f70a876a7e3a2be50f6f": {
491
- "title": "Import",
492
- "code": "import { Tour } from '@1money/components-ui';\n// or\nimport { Tour } from '@1money/components-ui/Tour';",
493
- "source": "readme",
494
- "compilable": true
495
- },
496
- "36cbaf7aab4a01a5e1c94430f29c9f8881ec84e60dac84ca5c2e32cb25e14ae5": {
497
- "title": "Usage",
498
- "code": "// Basic usage with icon name\n<Empty\n icon=\"transactions\"\n title=\"No record found\"\n description=\"Try adjusting your filters to find the record you are looking for\"\n/>\n\n// With custom icon component\n<Empty\n icon={<MyCustomIcon />}\n description=\"No data available\"\n/>\n\n// With action button\n<Empty\n variant=\"stroke\"\n icon=\"bank\"\n description=\"You don't have any bank accounts linked\"\n action={<Button>Add new bank account</Button>}\n/>",
499
- "source": "readme",
568
+ "36788273238e85e65bbc04aade71ec57ec93c9371eb2414aa4bbac932afe4cc8": {
569
+ "title": "Canonical usage",
570
+ "code": "import { Spinner } from '@1money/component-ui';\n// or\nimport { Spinner } from '@1money/component-ui/Spinner';",
571
+ "source": "canonical",
500
572
  "compilable": true
501
573
  },
502
574
  "36f868d28259a7ebb3c6decbe9768b0ac838fd1617e57e32bace1c0dde27546d": {
@@ -511,18 +583,18 @@
511
583
  "source": "stories",
512
584
  "compilable": false
513
585
  },
586
+ "388bcf7888091d287918f2abfe24285c3cfff0239bf53bd18a57521a4d44c8e1": {
587
+ "title": "Custom",
588
+ "code": "{\n const [selected, setSelected] = useState<Array<string | number>>(['btc', 'eth', 'sol']);\n const [open, setOpen] = useState(false);\n\n const toggle = (value: string | number) => {\n setSelected((prev) =>\n prev.includes(value) ? prev.filter((v) => v !== value) : [...prev, value],\n );\n };\n\n const triggerLabel = selected.length > 0\n ? `${selected.length} selected`\n : null;\n\n return (\n <div style={storyContainerStyle}>\n <Select.Custom\n label=\"Assets\"\n placeholder=\"Select assets\"\n open={open}\n onOpenChange={setOpen}\n selectedTemplate={triggerLabel}\n >\n {() => (\n <>\n <div style={customPanelHeaderStyle}>\n <span style={customPanelTitleStyle}>\n {selected.length} selected\n </span>\n <button\n type=\"button\"\n style={customClearAllStyle}\n onClick={() => setSelected([])}\n >\n <Icons name=\"cross\" size={14} color=\"currentColor\" />\n Clear all\n </button>\n </div>\n {ASSET_OPTIONS.map((option) => {\n const isSelected = selected.includes(option.value);\n return (\n <button\n key={option.value}\n type=\"button\"\n style={customRowStyle}\n onClick={() => toggle(option.value)}\n >\n <AssetMark value={option.value} />\n <span style={assetOptionLabelStyle}>{option.label}</span>\n <span style={customCheckboxStyle(isSelected)}>\n {isSelected && <Icons name=\"check\" size={14} color=\"currentColor\" />}\n </span>\n </button>\n );\n })}\n </>\n )}\n </Select.Custom>\n </div>\n );\n }",
589
+ "source": "stories",
590
+ "compilable": true
591
+ },
514
592
  "38cc049b002ef2643d573c3ed8ec40bd44f8aadbccbeea471bedd8ace0207adb": {
515
593
  "title": "Group Basic",
516
594
  "code": "{\n const [value, setValue] = React.useState<string | number>('a');\n const handleChange = (event: RadioChangeEvent) => {\n if (event.target.value !== undefined) {\n setValue(event.target.value);\n }\n };\n\n return (\n <RadioGroup value={value} onChange={handleChange}>\n <Radio value=\"a\" label=\"Option A\" />\n <Radio value=\"b\" label=\"Option B\" />\n <Radio value=\"c\" label=\"Option C\" />\n </RadioGroup>\n );\n }",
517
595
  "source": "stories",
518
596
  "compilable": true
519
597
  },
520
- "38d85a62962bcd59b02127b7cf4808c8cb8ffe3d72866928828846cb5adb5e77": {
521
- "title": "Basic Usage",
522
- "code": "<Popconfirm\n title=\"Delete transfer rule?\"\n body=\"This action removes the rule immediately and cannot be undone.\"\n cancelText=\"Keep rule\"\n confirmText=\"Delete\"\n onConfirm={() => {\n // perform delete\n }}\n>\n <Button color=\"danger\">Delete rule</Button>\n</Popconfirm>",
523
- "source": "readme",
524
- "compilable": true
525
- },
526
598
  "390cabc2f23e7ce30b17814c2a5b8202b8da33904affa60c9bcf5e26fadd9d2f": {
527
599
  "title": "Orientation Margin",
528
600
  "code": "<div>\n <p>Lorem ipsum dolor sit amet.</p>\n <Divider orientation=\"left\" orientationMargin=\"0\">Left (margin 0)</Divider>\n <p>Lorem ipsum dolor sit amet.</p>\n <Divider orientation=\"left\" orientationMargin={50}>Left (margin 50)</Divider>\n <p>Lorem ipsum dolor sit amet.</p>\n <Divider orientation=\"right\" orientationMargin={0}>Right (margin 0)</Divider>\n <p>Lorem ipsum dolor sit amet.</p>\n </div>",
@@ -547,18 +619,18 @@
547
619
  "source": "stories",
548
620
  "compilable": false
549
621
  },
550
- "3c554437f7534e672da53194827c88c647b2091520a4db816184c1ffdc84c59a": {
551
- "title": "Canonical usage",
552
- "code": "import type { IconWrapperProps } from '@1money/component-ui';",
553
- "source": "canonical",
554
- "compilable": true
555
- },
556
622
  "3c5bbd0e70d50121131f70e69229d2badab6a0c4ce56c9343804fac5db4cc85d": {
557
623
  "title": "Cell Centered",
558
624
  "code": "<div style={{ display: 'flex', gap: 12, alignItems: 'flex-start', flexWrap: 'wrap' }}>\n <Radio\n checked\n variant=\"cell\"\n size=\"large\"\n alignment=\"center\"\n icon=\"language\"\n tag=\"Tag\"\n label=\"Global account\"\n description=\"International transfers\"\n style={{ width: 200 }}\n />\n <Radio\n checked\n variant=\"cell\"\n size=\"medium\"\n alignment=\"center\"\n icon=\"usd\"\n label=\"USD1\"\n style={{ width: 200 }}\n />\n <Radio\n checked\n variant=\"cell\"\n size=\"small\"\n alignment=\"center\"\n icon=\"usd\"\n label=\"USD1\"\n style={{ width: 200 }}\n />\n </div>",
559
625
  "source": "stories",
560
626
  "compilable": true
561
627
  },
628
+ "3c96cd1309b8343e68775a3eb2807b574c01d500cd61c0aefff0e9007f042175": {
629
+ "title": "Import",
630
+ "code": "import { Icons, IconWrapper, IconHover } from '@1money/component-ui';\n// or\nimport { Icons, IconWrapper, IconHover } from '@1money/component-ui/Icons';\n\n// Type imports\nimport type { IconName, SortIconStatus } from '@1money/component-ui';",
631
+ "source": "readme",
632
+ "compilable": true
633
+ },
562
634
  "3e868fc7054ec26b6d612e345cd084dcdbb6a51b7d290eae2fa333509e0c9b33": {
563
635
  "title": "Canonical usage",
564
636
  "code": "<Popconfirm />",
@@ -571,27 +643,21 @@
571
643
  "source": "stories",
572
644
  "compilable": false
573
645
  },
574
- "3f7947a62ea88c98ba7ab12c99856262c9bcfbce67805459f690e130f0d6920e": {
575
- "title": "Canonical usage",
576
- "code": "import { Space } from '@1money/components-ui';\n// or\nimport { Space } from '@1money/components-ui/Space';\nimport { SPACE_ALIGN, SPACE_DIRECTION, SPACE_SIZE } from '@1money/components-ui/Space';",
577
- "source": "canonical",
578
- "compilable": true
579
- },
580
- "40a22244886d5bdbd3ed0c2eeccc5859897c73c7f35ce9d0b27a7a9547709f28": {
581
- "title": "Import",
582
- "code": "import { Tag } from '@1money/components-ui';\n// or\nimport { Tag } from '@1money/components-ui/Tag';",
583
- "source": "readme",
584
- "compilable": true
585
- },
586
646
  "40b55a924e580ca4161d97e698db47fb342eae5c804b2bfbaab1f5eb64a58e09": {
587
647
  "title": "Basic",
588
648
  "code": "<div style={containerStyle}>\n <VirtualList\n data={data1000}\n height={300}\n itemHeight={30}\n itemKey=\"id\"\n >\n {(item: Item) => (\n <div style={itemStyle(item.height)}>\n <span>Item {item.id}</span>\n <span style={{ color: '#999', fontSize: 12 }}>h: {item.height}px</span>\n </div>\n )}\n </VirtualList>\n </div>",
589
649
  "source": "stories",
590
650
  "compilable": true
591
651
  },
592
- "41c91bf415fa7b2b7fcfbba49136e2254bcf778a33e916d12446e042629a0943": {
652
+ "41af856d1d6a822e2c95f25c337807c0d18d1e445d318d07621beba85ce3e926": {
653
+ "title": "Searchable Small",
654
+ "code": "{\n const [value, setValue] = useState<string | number | undefined>('usdt');\n\n return (\n <div style={storyContainerStyle}>\n <Select\n {...args}\n value={value}\n onChange={(nextValue, option) => {\n setValue(nextValue as string | number | undefined);\n args.onChange?.(nextValue, option);\n }}\n />\n </div>\n );\n }",
655
+ "source": "stories",
656
+ "compilable": false
657
+ },
658
+ "42725955e8eb348643a00cbbd15d1485475e1917d44f5e685f6f2a094fa6a4a5": {
593
659
  "title": "Canonical usage",
594
- "code": "import { Switch } from '@1money/components-ui';\n// or\nimport { Switch } from '@1money/components-ui/Switch';",
660
+ "code": "import { Space } from '@1money/component-ui';\n// or\nimport { Space } from '@1money/component-ui/Space';\nimport { SPACE_ALIGN, SPACE_DIRECTION, SPACE_SIZE } from '@1money/component-ui/Space';",
595
661
  "source": "canonical",
596
662
  "compilable": true
597
663
  },
@@ -601,24 +667,12 @@
601
667
  "source": "stories",
602
668
  "compilable": false
603
669
  },
604
- "433e2ddc78741578443b854668e9b0bc02f7196c44580c8b913bf9d7d68c08ae": {
605
- "title": "Canonical usage",
606
- "code": "import { CoachMark } from '@1money/components-ui';\n// or\nimport { CoachMark } from '@1money/components-ui/CoachMark';",
607
- "source": "canonical",
608
- "compilable": true
609
- },
610
670
  "43cb69594b17d8f71ddb9912efb8eea26ee52cf45990ef9f7a2212c0694b0811": {
611
671
  "title": "Dashed",
612
672
  "code": "<div>\n <p>Lorem ipsum dolor sit amet.</p>\n <Divider variant=\"dashed\" />\n <p>Lorem ipsum dolor sit amet.</p>\n <Divider variant=\"dashed\">Dashed</Divider>\n <p>Lorem ipsum dolor sit amet.</p>\n </div>",
613
673
  "source": "stories",
614
674
  "compilable": true
615
675
  },
616
- "43cd04ae4cce4b5299321d915077358a92a0a5000ab402da2f9ba9ccac91ef84": {
617
- "title": "Canonical usage",
618
- "code": "import { Spinner } from '@1money/components-ui';\n// or\nimport { Spinner } from '@1money/components-ui/Spinner';",
619
- "source": "canonical",
620
- "compilable": true
621
- },
622
676
  "44c4b25e35236d2eaf4d26824badf330c6495194077c815a662b000591be91be": {
623
677
  "title": "Multiple Collapsed",
624
678
  "code": "{\n const [value, setValue] = useState<Array<string | number>>([\n 'btc',\n 'eth',\n 'usdt',\n 'usdc',\n 'sol',\n 'doge',\n ]);\n\n return (\n <div style={{ width: 320 }}>\n <Select\n {...args}\n multiple\n value={value}\n onChange={(nextValue, option) => {\n setValue((nextValue as Array<string | number>) ?? []);\n args.onChange?.(nextValue, option);\n }}\n />\n </div>\n );\n }",
@@ -655,6 +709,12 @@
655
709
  "source": "stories",
656
710
  "compilable": true
657
711
  },
712
+ "48c240723515be69d8de101f9bfe1d2ff596d82504645cc07dfb281c0a6a8ca5": {
713
+ "title": "Canonical usage",
714
+ "code": "import { Typography } from '@1money/component-ui';\n// or\nimport {\n Typography,\n TypographyBody,\n TypographyDisplay,\n TypographyHeadline,\n TypographyLabel,\n TypographyLink,\n TypographyTitle,\n} from '@1money/component-ui/Typography';",
715
+ "source": "canonical",
716
+ "compilable": true
717
+ },
658
718
  "48f6ebde7546d7db844b0cd43bd6e6ec6956746f93c55167fda6a2cd84599a3e": {
659
719
  "title": "No Animation",
660
720
  "code": "<Segment items={DEFAULT_ITEMS} animated={false} />",
@@ -709,24 +769,12 @@
709
769
  "source": "stories",
710
770
  "compilable": false
711
771
  },
712
- "4cc41ff919669138b7ad66655a256cd5a3885bd739764784d8a5de068b87beb3": {
713
- "title": "Import",
714
- "code": "import { Drawer } from '@1money/components-ui';\n// or\nimport { Drawer } from '@1money/components-ui/Drawer';",
715
- "source": "readme",
716
- "compilable": true
717
- },
718
772
  "4d9f3593600e6013d369532a23201039bffa9c7463d467180f93c3e95fc48c1b": {
719
773
  "title": "Inline Button Loading",
720
774
  "code": "<button disabled={loading}>\n {loading ? (\n <div style={{ display: 'flex', alignItems: 'center', gap: '8px' }}>\n <Spinner size={16} />\n <span>Submitting…</span>\n </div>\n ) : (\n 'Submit'\n )}\n</button>",
721
775
  "source": "readme",
722
776
  "compilable": true
723
777
  },
724
- "4e47a5538f745fc8cf26d22a91bc3e95fda46600baf715b49e208804b00e3049": {
725
- "title": "Canonical usage",
726
- "code": "import { Table, VirtualTable } from '@1money/components-ui';\n// or\nimport { Table, VirtualTable } from '@1money/components-ui/Table';",
727
- "source": "canonical",
728
- "compilable": true
729
- },
730
778
  "4eb35f906280d6f50e93ee158c0792dc740933db4705b831c71d24aadf3e2de7": {
731
779
  "title": "All Variants",
732
780
  "code": "<div style={{ display: 'flex', flexDirection: 'column', gap: 32 }}>\n {TAG_SIZES.map((size) => (\n <div key={size}>\n <h3 style={{ marginBottom: 12 }}>{size}</h3>\n <div style={{ display: 'flex', flexWrap: 'wrap', gap: 12, alignItems: 'center' }}>\n {TAG_COLORS.map((color) => (\n <Tag\n {...args}\n key={`${size}-${color}`}\n size={size}\n color={color}\n label={color}\n />\n ))}\n </div>\n </div>\n ))}\n </div>",
@@ -739,10 +787,10 @@
739
787
  "source": "readme",
740
788
  "compilable": true
741
789
  },
742
- "50164c21b0b9ce491a97b9f31ca0eab4a51ce38d2496720d37242f774f78df20": {
743
- "title": "Canonical usage",
744
- "code": "import { Slider } from '@1money/components-ui';\n// or\nimport { Slider } from '@1money/components-ui/Slider';",
745
- "source": "canonical",
790
+ "4f8d5b3c517bceedb0df6dc7f1b762de0f1625cd80d3cd006b7cd6725c693561": {
791
+ "title": "Import",
792
+ "code": "import { Checkbox } from '@1money/component-ui';\n// or\nimport { Checkbox } from '@1money/component-ui/Checkbox';",
793
+ "source": "readme",
746
794
  "compilable": true
747
795
  },
748
796
  "52e49c0728ddadda69ef98366ad789e66211d87acbb7ca43af959df87ec0767b": {
@@ -751,15 +799,9 @@
751
799
  "source": "readme",
752
800
  "compilable": true
753
801
  },
754
- "52fff43bfcb2391a44e980e0fff53642d0b10d4dcc439c76c5d150e7209d9cad": {
755
- "title": "CheckboxGroup",
756
- "code": "import { Checkbox, CheckboxGroup } from '@1money/components-ui';\n// or\nimport { Checkbox, CheckboxGroup } from '@1money/components-ui/Checkbox';\n\n<CheckboxGroup\n name=\"fruits\"\n options={[\n { label: 'Apple', value: 'apple' },\n { label: 'Pear', value: 'pear' },\n ]}\n value={selectedValues}\n onChange={setSelectedValues}\n/>\n\n<Checkbox.Group defaultValue={['alpha']}>\n <Checkbox value=\"alpha\" label=\"Alpha\" />\n <Checkbox value=\"beta\" label=\"Beta\" />\n</Checkbox.Group>",
757
- "source": "readme",
758
- "compilable": true
759
- },
760
- "5366737d28dd367f234fcb03fbbe9b966ae9baf9f4d4d05ad628e2c16c5a4e3c": {
802
+ "56434ea344c01f25a04ecb3cdf55d35d04a2631937c4fdecac6e4bb577a69175": {
761
803
  "title": "Canonical usage",
762
- "code": "<IconWrapper />",
804
+ "code": "import { Switch } from '@1money/component-ui';\n// or\nimport { Switch } from '@1money/component-ui/Switch';",
763
805
  "source": "canonical",
764
806
  "compilable": true
765
807
  },
@@ -787,15 +829,21 @@
787
829
  "source": "stories",
788
830
  "compilable": false
789
831
  },
832
+ "57e6a47e5312d937d88aebeb098d4786684b38e5e6953da1f4dbcb0bee035b70": {
833
+ "title": "Import",
834
+ "code": "import { Flex } from '@1money/component-ui';\n// or\nimport { Flex } from '@1money/component-ui/Flex';\nimport { FLEX_ALIGN, FLEX_GAP, FLEX_JUSTIFY, FLEX_WRAP } from '@1money/component-ui/Flex';",
835
+ "source": "readme",
836
+ "compilable": true
837
+ },
790
838
  "58bad3562da4a5152857d932ada3b06876ddf701e0bc5b396abc799cfee00ff8": {
791
839
  "title": "All Variants",
792
840
  "code": "<div style={columnStyle}>\n {LABEL_PLACEMENTS.map((placement) => (\n <div key={placement}>\n <h3 style={sectionHeaderStyle}>Label Placement: {placement}</h3>\n <div style={sectionBodyStyle}>\n {/* Default states */}\n <div style={rowStyle}>\n <Checkbox\n {...args}\n labelPlacement={placement}\n label=\"Unchecked\"\n />\n <Checkbox\n {...args}\n labelPlacement={placement}\n defaultChecked\n label=\"Checked\"\n />\n <Checkbox\n {...args}\n labelPlacement={placement}\n indeterminate\n label=\"Indeterminate\"\n />\n </div>\n {/* Disabled states */}\n <div style={rowStyle}>\n <Checkbox\n {...args}\n labelPlacement={placement}\n disabled\n label=\"Disabled\"\n />\n <Checkbox\n {...args}\n labelPlacement={placement}\n checked\n disabled\n label=\"Disabled Checked\"\n />\n <Checkbox\n {...args}\n labelPlacement={placement}\n indeterminate\n disabled\n label=\"Disabled Indeterminate\"\n />\n </div>\n </div>\n </div>\n ))}\n </div>",
793
841
  "source": "stories",
794
842
  "compilable": false
795
843
  },
796
- "59a4bace5950d3f3aaef19cc61af7ddab1440a4220c81a0f60b0276728d5ab88": {
797
- "title": "Usage",
798
- "code": "<Dropdown\n content={({ close }) => (\n <button type=\"button\" onClick={close}>\n Close\n </button>\n )}\n placement=\"bottom-start\"\n>\n <Button>Open menu</Button>\n</Dropdown>",
844
+ "5a4df64ed15fd8845be815f9f67cd01c0f22d1a22431c653c972f7ab6cff60f7": {
845
+ "title": "Import",
846
+ "code": "import { Slider } from '@1money/component-ui';\n// or\nimport { Slider } from '@1money/component-ui/Slider';",
799
847
  "source": "readme",
800
848
  "compilable": true
801
849
  },
@@ -811,12 +859,6 @@
811
859
  "source": "stories",
812
860
  "compilable": true
813
861
  },
814
- "5c2d27af4dbbbbbab8df84b3717712bc8ef7522b3f93eb8d20540a1db723e8e9": {
815
- "title": "Import",
816
- "code": "import { VirtualList } from '@1money/components-ui';\n// or\nimport { VirtualList } from '@1money/components-ui/VirtualList';",
817
- "source": "readme",
818
- "compilable": true
819
- },
820
862
  "5c8961675725144291340a7560c3c798389ce24d786783dedd6ffcac93193a0d": {
821
863
  "title": "Batch Resize",
822
864
  "code": "{\n const [batchInfo, setBatchInfo] = useState<string>('');\n\n return (\n <div>\n <p style={{ marginBottom: 8, color: '#666' }}>\n Collection batches resize events from multiple children into a single callback:\n </p>\n <ResizeObserver.Collection\n onBatchResize={(infos) => {\n setBatchInfo(\n `Batch: ${infos.length} resize(s) — ${infos.map((i) => `${i.data}: ${i.size.width}×${i.size.height}`).join(', ')}`,\n );\n }}\n >\n <div style={{ display: 'flex', gap: 16 }}>\n {['First', 'Second'].map((name) => (\n <ResizeObserver key={name} data={name}>\n <div style={{ ...boxStyle, minWidth: 150 }}>\n {name}\n </div>\n </ResizeObserver>\n ))}\n </div>\n </ResizeObserver.Collection>\n {batchInfo && <div style={infoStyle}>{batchInfo}</div>}\n </div>\n );\n }",
@@ -835,6 +877,12 @@
835
877
  "source": "stories",
836
878
  "compilable": true
837
879
  },
880
+ "5e00edd3637d6c6dc07726e8869358c272f4f3f102f4e7323b4dc71d74647a93": {
881
+ "title": "Canonical usage",
882
+ "code": "import { Clipboard } from '@1money/component-ui';\n\n<Clipboard\n label=\"Setup Key\"\n content=\"GWKLDLVE25dfLIJOHUD578JPIHD24JLJGHGOUH27HLIHOUGOLIKHJ547HOU\"\n onSuccess={(v) => console.log(v)}\n/>",
883
+ "source": "canonical",
884
+ "compilable": true
885
+ },
838
886
  "5f3b6d99f2f042d7c984a9f73cb179167b6c80cfbd3c106d1c96ecc86ba1a888": {
839
887
  "title": "Cell States",
840
888
  "code": "<div style={{ display: 'flex', flexDirection: 'column', gap: 12 }}>\n <Radio\n checked\n variant=\"cell\"\n size=\"large\"\n alignment=\"left\"\n icon=\"swift\"\n label=\"Checked\"\n description=\"Primary selection\"\n style={{ width: 300 }}\n />\n <Radio\n checked\n variant=\"cell\"\n size=\"medium\"\n alignment=\"left\"\n icon=\"swift\"\n label=\"Medium\"\n style={{ width: 180 }}\n />\n <Radio\n checked\n variant=\"cell\"\n size=\"small\"\n alignment=\"left\"\n icon=\"swift\"\n label=\"Small\"\n style={{ width: 180 }}\n />\n <Radio\n checked\n disabled\n variant=\"cell\"\n size=\"large\"\n alignment=\"left\"\n icon=\"swift\"\n label=\"Disabled checked\"\n description=\"Disabled state\"\n style={{ width: 300 }}\n />\n </div>",
@@ -847,21 +895,21 @@
847
895
  "source": "stories",
848
896
  "compilable": true
849
897
  },
850
- "5f4e0a0d85f2ecaf7434a70622e83ab0495c984cb44a41abe7be980b68b4274e": {
851
- "title": "Import",
852
- "code": "import { Space } from '@1money/components-ui';\n// or\nimport { Space } from '@1money/components-ui/Space';\nimport { SPACE_ALIGN, SPACE_DIRECTION, SPACE_SIZE } from '@1money/components-ui/Space';",
853
- "source": "readme",
854
- "compilable": true
855
- },
856
898
  "605adda93170929ef763469422e3708f248624774e5274b6053c7aa0c53b9680": {
857
899
  "title": "Action And Close",
858
900
  "code": "<Alert\n {...args}\n status=\"warning\"\n title=\"New compliance checklist\"\n body=\"A new checklist item is required before the next outbound transfer can be approved.\"\n link={{ label: 'Open checklist', onClick: fn() }}\n action={<Button onClick={fn()}>Review now</Button>}\n closable\n onClose={fn()}\n />",
859
901
  "source": "stories",
860
902
  "compilable": false
861
903
  },
862
- "60cbcdaca9952007d461beb3b4f61ed1039f1a0faf6382bf593852a3a1e96d74": {
904
+ "6100fc2a8e5223e9cb058946bfa868735653b13a46dbde6901ba88436958f7b9": {
863
905
  "title": "Canonical usage",
864
- "code": "import { Skeleton } from '@1money/components-ui';\n// or\nimport { Skeleton } from '@1money/components-ui/Skeleton';",
906
+ "code": "import { Navigation, Nav, NavigationStepper } from '@1money/component-ui';\n// or\nimport { Navigation, Nav, NavigationStepper } from '@1money/component-ui/Navigation';",
907
+ "source": "canonical",
908
+ "compilable": true
909
+ },
910
+ "611d0250c7741a20c80e73d193b80a1b7ef07db189ce51a592525843432117af": {
911
+ "title": "Canonical usage",
912
+ "code": "import { Carousel } from '@1money/component-ui';\n// or\nimport { Carousel } from '@1money/component-ui/Carousel';",
865
913
  "source": "canonical",
866
914
  "compilable": true
867
915
  },
@@ -877,6 +925,18 @@
877
925
  "source": "canonical",
878
926
  "compilable": true
879
927
  },
928
+ "62b5efe615c2669f474d5e6b4b89e9548d25b067decf9570da5994151f8c3d63": {
929
+ "title": "Import",
930
+ "code": "import { Radio, RadioGroup } from '@1money/component-ui';\n// or tree-shakeable\nimport { Radio, RadioGroup } from '@1money/component-ui/Radio';",
931
+ "source": "readme",
932
+ "compilable": true
933
+ },
934
+ "63391782d107e1289c88ced32f63afa3f0c14adfed71d7eec78de19097260755": {
935
+ "title": "Navigation (sidebar with collapse)",
936
+ "code": "import { useRef } from 'react';\nimport type { NavigationHandlers } from '@1money/component-ui';\n\nconst ref = useRef<NavigationHandlers>(null);\n\nfunction CompanySelector() {\n return <button type=\"button\">Acme Treasury</button>;\n}\n\nfunction SettingsLink() {\n return <a href=\"/settings\">Settings</a>;\n}\n\n<Navigation\n ref={ref}\n items={[\n { key: 'home', label: 'Home', icon: 'home', active: true },\n { key: 'portfolio', label: 'Portfolio', icon: 'portfolio' },\n {\n key: 'transactions',\n label: 'Transactions',\n icon: 'transactions',\n children: [\n { key: 'deposits', label: 'Deposits' },\n { key: 'withdrawals', label: 'Withdrawals' },\n ],\n },\n ]}\n collapsible\n onCollapse={(collapsed) => console.log(collapsed)}\n selector={<CompanySelector />}\n>\n {/* rendered at the bottom of the sidebar */}\n <SettingsLink />\n</Navigation>\n\n// Imperative control\nref.current?.toggle();\nref.current?.collapse(true);",
937
+ "source": "readme",
938
+ "compilable": true
939
+ },
880
940
  "63dbd5aa5b4f9b648a7f6152b99058966f4b36ade7cece4b750f71e4389a4dea": {
881
941
  "title": "Usage",
882
942
  "code": "<Carousel count={4} defaultActiveIndex={0} onChange={(index) => console.log(index)} />",
@@ -889,12 +949,6 @@
889
949
  "source": "stories",
890
950
  "compilable": true
891
951
  },
892
- "65c3343037038d0c10d4369de3281ebadf175b42ba5afe9bf9ae5c490d587003": {
893
- "title": "Import",
894
- "code": "import { Pagination, usePagination } from '@1money/components-ui';\n// or\nimport { Pagination, usePagination } from '@1money/components-ui/Pagination';",
895
- "source": "readme",
896
- "compilable": true
897
- },
898
952
  "66d442fc9388c014800dbcc672d9dae750c1529fd05f0b26e8f4dbf091abd20b": {
899
953
  "title": "Visual Spec",
900
954
  "code": "<div style={PREVIEW_GRID_STYLE}>\n <TooltipPreviewCard label=\"Title + body / left aligned\" title=\"Title\" body=\"Body text\" />\n <TooltipPreviewCard label=\"Minimum width 48px\" body=\"Hi\" />\n <TooltipPreviewCard label=\"Maximum width 400px on web\" title=\"Long title\" body={LONG_BODY} />\n </div>",
@@ -913,54 +967,24 @@
913
967
  "source": "stories",
914
968
  "compilable": false
915
969
  },
916
- "69f29e0647a74609f6aaa9ea3dc6ffa3559143861f405d2fd72e046abddd390a": {
917
- "title": "Import",
918
- "code": "import { Clipboard } from '@1money/components-ui';\n// or\nimport { Clipboard } from '@1money/components-ui/Copy';",
919
- "source": "readme",
920
- "compilable": true
921
- },
922
970
  "6a4d77a29ff76bfcd465b53ac79952fae765bb337ef3ca2affc7781ce487a74f": {
923
971
  "title": "With Icon End",
924
972
  "code": "<Button {...args} iconEnd={<Icons name=\"arrowRight\" />}>\n Icon End\n </Button>",
925
973
  "source": "stories",
926
974
  "compilable": false
927
975
  },
928
- "6c0a39263e45288c6f9a62e5fb3169389da1c8d69bd0092467335b58cf40b2ab": {
976
+ "6bf195e98d5a455cd0e5d43c58373b8311a4178b49a2f00f1f029af3e4b24447": {
929
977
  "title": "Canonical usage",
930
- "code": "import { Link } from '@1money/components-ui';\n// or\nimport { Link } from '@1money/components-ui/Link';",
978
+ "code": "import { Empty } from '@1money/component-ui';\n// or\nimport { Empty } from '@1money/component-ui/Empty';",
931
979
  "source": "canonical",
932
980
  "compilable": true
933
981
  },
934
- "6c73541844cb6bb287f5a4f0c9d25be0cbdd0d09518b1abd0c49b8d738ddfaa8": {
982
+ "6cdbf053120c0759e352f165296a9e509b2a7f994d1bf58da3b65dd4e3603553": {
935
983
  "title": "Import",
936
- "code": "import { Spinner } from '@1money/components-ui';\n// or\nimport { Spinner } from '@1money/components-ui/Spinner';",
937
- "source": "readme",
938
- "compilable": true
939
- },
940
- "6ccfe4f2a1e0923b5c6ee03d7662c164882ad513d3e32a35a1ea7b9500f17169": {
941
- "title": "Responsive Usage",
942
- "code": "const GRID_GUTTER = { sm: 8, md: 16, lg: 24 };\nconst SPAN_BASE = 12;\nconst SPAN_SM = 6;\nconst SPAN_MD = 4;\nconst OFFSET_MD = 2;\nconst SPAN_LARGE = 3;\n\nimport { GRID_JUSTIFY } from '@1money/components-ui/Grid';\n\nconst GRID_JUSTIFY_RESPONSIVE = {\n sm: GRID_JUSTIFY.start,\n md: GRID_JUSTIFY.spaceBetween,\n lg: GRID_JUSTIFY.end\n};\nconst PUSH_COL = 1;\nconst PULL_COL = 1;\n\n<Grid gutter={GRID_GUTTER}>\n <Grid.Col span={SPAN_BASE} sm={SPAN_SM} md={{ span: SPAN_MD, offset: OFFSET_MD }} lg={SPAN_LARGE} />\n</Grid>\n\n<Grid gutter={GRID_GUTTER} justify={GRID_JUSTIFY_RESPONSIVE}>\n <Grid.Col span={SPAN_BASE} sm={SPAN_SM} md={{ span: SPAN_MD, offset: OFFSET_MD }} lg={SPAN_LARGE} />\n <Grid.Col span={SPAN_BASE} push={PUSH_COL} pull={PULL_COL} />\n</Grid>",
984
+ "code": "import { Segment } from '@1money/component-ui';\n// or\nimport { Segment } from '@1money/component-ui/Segment';",
943
985
  "source": "readme",
944
986
  "compilable": true
945
987
  },
946
- "6d1aac6219f8d395eb9f6c5c13da9f51970c30059c74d6faeb7ddc895bc2af19": {
947
- "title": "Canonical usage",
948
- "code": "import type { IconHoverProps } from '@1money/component-ui';",
949
- "source": "canonical",
950
- "compilable": true
951
- },
952
- "6dadb9a4d982338ee8398025f4cea4aa2ed33dba5303e56b6a65b1f23cb93bf0": {
953
- "title": "Canonical usage",
954
- "code": "import { Select } from '@1money/components-ui';\n// or\nimport { Select } from '@1money/components-ui/Select';",
955
- "source": "canonical",
956
- "compilable": true
957
- },
958
- "6e80043b40836c60acfd06f4f79316dc3655e1d82fbc77f8f04b8126862001af": {
959
- "title": "Canonical usage",
960
- "code": "import {\n ProForm,\n ProFormText,\n ProFormSelect,\n DialogForm,\n QueryFilter,\n} from '@1money/components-ui';\n// or\nimport { ProForm, ProFormText } from '@1money/components-ui/ProForm';",
961
- "source": "canonical",
962
- "compilable": true
963
- },
964
988
  "6ea2fa87fa2050f0e9e5f271bfbcac33d12cf62034f24d55257ec9955430ef59": {
965
989
  "title": "Usage",
966
990
  "code": "<Clipboard\n label=\"Setup Key\"\n content=\"GWKLDLVE25dfLIJOHUD578JPIHD24JLJGHGOUH27HLIHOUGOLIKHJ547HOU\"\n onSuccess={(val) => console.log('Copied:', val)}\n onError={(val) => console.log('Failed:', val)}\n/>",
@@ -973,28 +997,34 @@
973
997
  "source": "stories",
974
998
  "compilable": false
975
999
  },
1000
+ "6fdf08048e1bed84d748f8d5d2fb86efe525926a026aaa4917f514fc855777b2": {
1001
+ "title": "Canonical usage",
1002
+ "code": "import { ProForm } from '@1money/component-ui';\n\n<ProForm onFinish={(values) => console.log(values)}>\n <ProForm.Text name=\"name\" label=\"Name\" />\n</ProForm>",
1003
+ "source": "canonical",
1004
+ "compilable": true
1005
+ },
976
1006
  "701f468e63d72f0fe836f011aae7941f7202835fe80f43ae13f529a130c5a505": {
977
1007
  "title": "Semantic Tags",
978
1008
  "code": "<div style={STORY_LAYOUT_STYLE}>\n <Typography.Display size=\"sm\" as=\"h1\">\n Display rendered as h1\n </Typography.Display>\n <Typography.Headline size=\"md\" as=\"h2\">\n Headline rendered as h2\n </Typography.Headline>\n <Typography.Title size=\"lg\" as=\"h3\">\n Title rendered as h3\n </Typography.Title>\n <Typography.Body size=\"md\" as=\"p\">\n Body rendered as p for longer narrative content.\n </Typography.Body>\n <Typography.Label size=\"sm\" htmlFor=\"typography-story-input\">\n Email address\n </Typography.Label>\n <input id=\"typography-story-input\" placeholder=\"Input target for label\" />\n </div>",
979
1009
  "source": "stories",
980
1010
  "compilable": true
981
1011
  },
982
- "71d241ed07b5a8c1aaa432bcff2fb9f72af207e1c7f5aa4023ac2359f926be9e": {
983
- "title": "Usage",
984
- "code": "<Drawer\n open={open}\n title=\"Transfer details\"\n placement=\"right\"\n onClose={() => setOpen(false)}\n footer={<Button onClick={() => setOpen(false)}>Done</Button>}\n>\n Drawer content\n</Drawer>",
985
- "source": "readme",
986
- "compilable": true
987
- },
988
1012
  "71f7aeb8fd7bb546bc7d562a717683681d8eccf7f2beeee86e3196121d6656f1": {
989
1013
  "title": "With Icon Start",
990
1014
  "code": "<Button {...args} iconStart={<Icons name=\"add\" />}>\n Icon Start\n </Button>",
991
1015
  "source": "stories",
992
1016
  "compilable": false
993
1017
  },
994
- "72e53f1f60724efcfebfca8207585573799139c8895777a6a6d283673008ba74": {
995
- "title": "Import",
996
- "code": "import { CoachMark } from '@1money/components-ui';\n// or\nimport { CoachMark } from '@1money/components-ui/CoachMark';",
997
- "source": "readme",
1018
+ "72f524de604ba1db3308d0b8f5131b0204abf6a3e411be78f4f61d0fc2081eb7": {
1019
+ "title": "Render Option Content",
1020
+ "code": "{\n const [value, setValue] = useState<string | number | undefined>('usdt');\n\n return (\n <div style={storyContainerStyle}>\n <Select\n {...args}\n value={value}\n renderOptionContent={renderAssetOptionContent}\n onChange={(nextValue, option) => {\n setValue(nextValue as string | number | undefined);\n args.onChange?.(nextValue, option);\n }}\n />\n </div>\n );\n }",
1021
+ "source": "stories",
1022
+ "compilable": false
1023
+ },
1024
+ "7318e5e19b35c2334284717d2b44382c3f0aa456d1d61c6892e3211c2c77135d": {
1025
+ "title": "Canonical usage",
1026
+ "code": "import { Pagination, usePagination } from '@1money/component-ui';\n// or\nimport { Pagination, usePagination } from '@1money/component-ui/Pagination';",
1027
+ "source": "canonical",
998
1028
  "compilable": true
999
1029
  },
1000
1030
  "7374135a0f5702e8c0e689b3ce2576b5c15b47c90d9fffe7c2bcff8693acd9ef": {
@@ -1003,6 +1033,12 @@
1003
1033
  "source": "stories",
1004
1034
  "compilable": true
1005
1035
  },
1036
+ "73c34dcab340dfc36bb0f4e928f6911b25f7f3d6d590dfb72c3c1226a9c573fe": {
1037
+ "title": "Canonical usage",
1038
+ "code": "import { Tag } from '@1money/component-ui';\n// or\nimport { Tag } from '@1money/component-ui/Tag';",
1039
+ "source": "canonical",
1040
+ "compilable": true
1041
+ },
1006
1042
  "73da19095cdcbe4a8b8d7ec782967002cf9da27f5638d7ec08e376a8d777aeda": {
1007
1043
  "title": "Controlled and Uncontrolled",
1008
1044
  "code": "// Standalone controlled\n<Radio\n label=\"Controlled\"\n checked={value}\n onChange={(event) => setValue(event.target.checked)}\n/>\n\n// Standalone uncontrolled\n<Radio label=\"Uncontrolled\" defaultChecked />\n\n// Group controlled\n<RadioGroup value={selected} onChange={handleChange}>\n <Radio value=\"a\" label=\"Option A\" />\n <Radio value=\"b\" label=\"Option B\" />\n</RadioGroup>\n\n// Group uncontrolled\n<RadioGroup defaultValue=\"a\">\n <Radio value=\"a\" label=\"Option A\" />\n <Radio value=\"b\" label=\"Option B\" />\n</RadioGroup>",
@@ -1021,18 +1057,6 @@
1021
1057
  "source": "stories",
1022
1058
  "compilable": false
1023
1059
  },
1024
- "75fc55f93a5502c927a0f7967cd25465c98417b3afe02ec8880531efc12a3362": {
1025
- "title": "Canonical usage",
1026
- "code": "import { Clipboard } from '@1money/components-ui';\n\n<Clipboard\n label=\"Setup Key\"\n content=\"GWKLDLVE25dfLIJOHUD578JPIHD24JLJGHGOUH27HLIHOUGOLIKHJ547HOU\"\n onSuccess={(v) => console.log(v)}\n/>",
1027
- "source": "canonical",
1028
- "compilable": true
1029
- },
1030
- "76052e611a155b488f8eee38973e3b050274bc58b0a974f66b8c9a55e77e28b6": {
1031
- "title": "Canonical usage",
1032
- "code": "import { Typography } from '@1money/components-ui';\n// or\nimport { Typography } from '@1money/components-ui/Typography';",
1033
- "source": "canonical",
1034
- "compilable": true
1035
- },
1036
1060
  "76302edb4c36b3507a837c478a5be477379f78f3e0093f51d2c5874f610a1fb5": {
1037
1061
  "title": "Detail Panel Spacing",
1038
1062
  "code": "<div style={DEMO_PAGE_STYLE}>\n <Space size={SPACE_SIZE.large} align={SPACE_ALIGN.start} style={{ width: '100%' }}>\n <Space direction={SPACE_DIRECTION.vertical} size={SPACE_SIZE.middle} style={DEMO_COLUMN_STYLE}>\n <div style={DEMO_INLINE_ITEM_STYLE}>Business Name</div>\n <div style={DEMO_INLINE_ITEM_STYLE}>Registration Number</div>\n <div style={DEMO_INLINE_ITEM_STYLE}>Country</div>\n <div style={DEMO_INLINE_ITEM_STYLE}>Created At</div>\n </Space>\n\n <Space direction={SPACE_DIRECTION.vertical} size={SPACE_SIZE.middle} style={DEMO_COLUMN_STYLE}>\n <Space split={<span>|</span>} size={SPACE_SIZE.small}>\n <span>Risk: Medium</span>\n <span>KYB: Reviewing</span>\n <span>AML: Passed</span>\n </Space>\n <div style={DEMO_INLINE_ITEM_STYLE}>Operator: Derrick</div>\n <div style={DEMO_INLINE_ITEM_STYLE}>Last Updated: 2026-02-09</div>\n </Space>\n </Space>\n </div>",
@@ -1045,12 +1069,6 @@
1045
1069
  "source": "readme",
1046
1070
  "compilable": true
1047
1071
  },
1048
- "770c9ef1e8d4b176e14cf2288788ed37782cbbee674dbb3f3017c1714e81a200": {
1049
- "title": "Import",
1050
- "code": "import { Switch } from '@1money/components-ui';\n// or\nimport { Switch } from '@1money/components-ui/Switch';",
1051
- "source": "readme",
1052
- "compilable": true
1053
- },
1054
1072
  "7880909af758a291affc6ba2a56af087c012f00945684528454d55e9faffbb53": {
1055
1073
  "title": "Sidebar Content Layout",
1056
1074
  "code": "<div style={DEMO_PAGE_STYLE}>\n <Flex gap={GAP_MIDDLE} align={FLEX_ALIGN.start} justify={FLEX_JUSTIFY.start} wrap={WRAP_DISABLED}>\n <Flex vertical gap={GAP_SMALL} style={{ ...DEMO_PANEL_STYLE, minWidth: 220 }}>\n <div style={DEMO_ITEM_STYLE}>Menu Group A</div>\n <div style={DEMO_ITEM_STYLE}>Menu Group B</div>\n <div style={DEMO_ITEM_STYLE}>Menu Group C</div>\n </Flex>\n\n <Flex vertical gap={GAP_MIDDLE} style={{ ...DEMO_PANEL_STYLE, flex: 1 }}>\n <Flex align={FLEX_ALIGN.center} justify={FLEX_JUSTIFY.spaceBetween}>\n <div style={DEMO_ITEM_STYLE}>Page Title</div>\n <Flex gap={GAP_SMALL}>\n <div style={DEMO_ITEM_STYLE}>Export</div>\n <div style={DEMO_ITEM_STYLE}>Create</div>\n </Flex>\n </Flex>\n <div style={DEMO_PANEL_STYLE}>Main Content</div>\n <Flex align={FLEX_ALIGN.center} justify={FLEX_JUSTIFY.end} gap={GAP_SMALL}>\n <div style={DEMO_ITEM_STYLE}>Cancel</div>\n <div style={DEMO_ITEM_STYLE}>Save</div>\n </Flex>\n </Flex>\n </Flex>\n </div>",
@@ -1063,6 +1081,18 @@
1063
1081
  "source": "readme",
1064
1082
  "compilable": true
1065
1083
  },
1084
+ "79ba9feac95c34ef9c471c31ca2e8d612dd9da173b384f413f52916a485d6065": {
1085
+ "title": "Canonical usage",
1086
+ "code": "import { Calendar } from '@1money/component-ui';\n// or\nimport { Calendar } from '@1money/component-ui/Calendar';",
1087
+ "source": "canonical",
1088
+ "compilable": true
1089
+ },
1090
+ "7a25185c2f84fe20e85c2806cd7c4a624a5062225c528477beb49e950592f87c": {
1091
+ "title": "Usage",
1092
+ "code": "import { Icons } from '@1money/component-ui';\n\nconst steps = [\n {\n icon: <Icons name=\"dashboard\" size={24} />,\n heading: 'Welcome to Dashboard',\n body: 'Here you can see an overview of your finances.',\n },\n {\n heading: 'Track Your Spending',\n body: 'Use the charts to monitor transactions by category.',\n },\n {\n heading: \"You're all set!\",\n body: 'Explore the rest of the app at your own pace.',\n },\n];\n\n<CoachMark\n steps={steps}\n defaultActiveStep={0}\n placement=\"top\"\n onFinish={() => console.log('Tour complete')}\n onDismiss={() => console.log('Tour dismissed')}\n/>",
1093
+ "source": "readme",
1094
+ "compilable": true
1095
+ },
1066
1096
  "7a3a92935f0b863855900ffe5295cb58ad8e6a2f83cdf8ae82ea0a93ff8b829b": {
1067
1097
  "title": "Description And Feedback",
1068
1098
  "code": "<ProForm\n {...args}\n initialValues={{ username: '', email: '', bio: '', agree: false }}\n onFinish={(values) => alert(JSON.stringify(values, null, 2))}\n >\n <ProFormText\n name=\"username\"\n label=\"Username\"\n description=\"Only letters, numbers, and underscores. 3-20 characters.\"\n placeholder=\"Enter username\"\n feedback=\"This will be your public display name.\"\n rules={[\n { required: true, message: 'Username is required' },\n { min: 3, message: 'At least 3 characters' },\n ]}\n />\n <ProFormText\n name=\"email\"\n label=\"Email\"\n description=\"We'll never share your email with anyone else.\"\n placeholder=\"Enter email\"\n rules={[\n { required: true, message: 'Email is required' },\n { type: 'email', message: 'Invalid email format' },\n ]}\n />\n <ProFormTextArea\n name=\"bio\"\n label=\"Bio\"\n description=\"Markdown is supported. Max 500 characters.\"\n placeholder=\"Tell us about yourself\"\n />\n <ProFormPassword\n name=\"password\"\n label=\"Password\"\n description=\"Must contain at least 8 characters, one uppercase and one number.\"\n rules={[{ required: true, message: 'Password is required' }]}\n />\n <ProFormCheckbox\n name=\"agree\"\n label=\"I accept the terms\"\n feedback=\"You must agree before submitting.\"\n />\n </ProForm>",
@@ -1087,6 +1117,12 @@
1087
1117
  "source": "stories",
1088
1118
  "compilable": true
1089
1119
  },
1120
+ "7d415c46958e4b98092da361ef3a5b5a788b71628f8dfaa3a8ee1021b6871cee": {
1121
+ "title": "Import",
1122
+ "code": "import { Button, Icons } from '@1money/component-ui';\n// or\nimport { Button } from '@1money/component-ui/Button';\nimport { Icons } from '@1money/component-ui/Icons';",
1123
+ "source": "readme",
1124
+ "compilable": true
1125
+ },
1090
1126
  "7decc20ca0112ca8b497a08d1131565c7fc9d060ebdee8a34422d6f60b1a5c00": {
1091
1127
  "title": "Non Virtual",
1092
1128
  "code": "{\n const smallData = generateData(20);\n return (\n <div style={containerStyle}>\n <VirtualList\n data={smallData}\n height={300}\n itemHeight={30}\n itemKey=\"id\"\n virtual={false}\n >\n {(item: Item) => (\n <div style={itemStyle(item.height)}>\n <span>Item {item.id} (non-virtual)</span>\n </div>\n )}\n </VirtualList>\n </div>\n );\n }",
@@ -1105,12 +1141,6 @@
1105
1141
  "source": "stories",
1106
1142
  "compilable": true
1107
1143
  },
1108
- "7e423f9896eb2bcccdb051f9cae6f76f83c431686da59f2d1c5a3d6a8ce51474": {
1109
- "title": "Canonical usage",
1110
- "code": "import { Carousel } from '@1money/components-ui';\n// or\nimport { Carousel } from '@1money/components-ui/Carousel';",
1111
- "source": "canonical",
1112
- "compilable": true
1113
- },
1114
1144
  "7f54085ee6892564556d190e01d8e809af4cd0841f2c8c6876faeb511fbe8834": {
1115
1145
  "title": "All Field Types",
1116
1146
  "code": "<ProForm\n {...args}\n initialValues={{\n text: 'Hello',\n textWithButton: '',\n password: 'secret123',\n textarea: 'Multi-line\\ncontent',\n agree: true,\n options: [],\n darkMode: false,\n role: 'admin',\n volume: 60,\n date: null,\n }}\n onFinish={(values) => alert(JSON.stringify(values, null, 2))}\n >\n <ProFormText name=\"text\" label=\"Text Input\" placeholder=\"Type here...\" />\n <ProFormText\n name=\"textWithButton\"\n label=\"Text with Button\"\n placeholder=\"Enter verification code\"\n fieldProps={{\n suffix: (\n <Button color=\"primary\" size=\"small\" style={{ marginRight: -4 }}>\n Send Code\n </Button>\n ),\n }}\n />\n <ProFormPassword name=\"password\" label=\"Password\" placeholder=\"Password\" />\n <ProFormTextArea name=\"textarea\" label=\"Text Area\" placeholder=\"Enter long text\" />\n <ProFormCheckbox name=\"agree\" label=\"I agree to the terms\" />\n <ProFormCheckboxGroup\n name=\"options\"\n label=\"Pick options\"\n fieldProps={{\n options: [\n { label: 'Option A', value: 'a' },\n { label: 'Option B', value: 'b' },\n { label: 'Option C', value: 'c' },\n ],\n }}\n />\n <ProFormSwitch name=\"darkMode\" label=\"Dark Mode\" />\n <ProFormRadioGroup\n name=\"role\"\n label=\"Role\"\n fieldProps={{\n direction: 'horizontal',\n options: [\n { label: 'Admin', value: 'admin' },\n { label: 'Editor', value: 'editor' },\n { label: 'Viewer', value: 'viewer' },\n ],\n }}\n />\n <ProFormSlider\n name=\"volume\"\n label=\"Volume\"\n fieldProps={{ min: 0, max: 100 }}\n />\n <ProFormDatePicker\n name=\"date\"\n label=\"Date\"\n fieldProps={{ dateFormat: 'yy-mm-dd' }}\n />\n </ProForm>",
@@ -1135,12 +1165,6 @@
1135
1165
  "source": "stories",
1136
1166
  "compilable": false
1137
1167
  },
1138
- "8129a087395157c8e93b214d9f280f542658a37d2d8aa6ea5e2561bf7d128925": {
1139
- "title": "Navigation (sidebar with collapse)",
1140
- "code": "import { useRef } from 'react';\nimport type { NavigationHandlers } from '@1money/components-ui';\n\nconst ref = useRef<NavigationHandlers>(null);\n\n<Navigation\n ref={ref}\n items={[\n { key: 'home', label: 'Home', icon: 'home', active: true },\n { key: 'portfolio', label: 'Portfolio', icon: 'portfolio' },\n {\n key: 'transactions',\n label: 'Transactions',\n icon: 'transactions',\n children: [\n { key: 'deposits', label: 'Deposits' },\n { key: 'withdrawals', label: 'Withdrawals' },\n ],\n },\n ]}\n collapsible\n onCollapse={(collapsed) => console.log(collapsed)}\n selector={<CompanySelector />}\n>\n {/* rendered at the bottom of the sidebar */}\n <SettingsLink />\n</Navigation>\n\n// Imperative control\nref.current?.toggle();\nref.current?.collapse(true);",
1141
- "source": "readme",
1142
- "compilable": true
1143
- },
1144
1168
  "81fa795ca4a1acae4ec31efda3c21167df7e3f24ad1461056a90469ff70b835a": {
1145
1169
  "title": "Multi Select With Checkbox",
1146
1170
  "code": "{\n const [selected, setSelected] = useState<string[]>(['Banana', 'Date']);\n\n const toggle = (item: string) => {\n setSelected((prev) =>\n prev.includes(item) ? prev.filter((v) => v !== item) : [...prev, item],\n );\n };\n\n return (\n <Dropdown\n {...args}\n overlayStyle={{ minWidth: 260 }}\n content={\n <div style={{ display: 'flex', flexDirection: 'column', gap: 4 }}>\n {selected.length > 0 && (\n <div style={selectedBarStyle}>\n <span style={{ fontSize: 14, fontWeight: 500, color: '#131313' }}>\n {selected.length} selected\n </span>\n <button\n type=\"button\"\n style={clearAllBtnStyle}\n onClick={() => setSelected([])}\n >\n <Icons name=\"cross\" size={16} color=\"#ae0000\" />\n Clear all\n </button>\n </div>\n )}\n <div style={{ display: 'flex', flexDirection: 'column', gap: 2 }}>\n {SIMPLE_ITEMS.map((item) => (\n <div\n key={item}\n style={{\n padding: '6px 12px',\n borderRadius: 8,\n fontSize: 14,\n backgroundColor: selected.includes(item) ? '#f8f8f8' : 'transparent',\n }}\n >\n <div style={{ display: 'flex', alignItems: 'center', gap: 8, cursor: 'pointer' }} onClick={() => toggle(item)}>\n <Checkbox\n checked={selected.includes(item)}\n onChange={() => toggle(item)}\n />\n <TypographyBody>{item}</TypographyBody>\n </div>\n\n </div>\n ))}\n </div>\n </div>\n }\n >\n <Button>\n {selected.length > 0 ? `${selected.length} selected` : 'Select items'}\n </Button>\n </Dropdown>\n );\n }",
@@ -1177,39 +1201,51 @@
1177
1201
  "source": "readme",
1178
1202
  "compilable": true
1179
1203
  },
1180
- "8388c821f8c88d4cf800ec2b679c5ace3c46d929a152100c4d4f4eb52400039d": {
1181
- "title": "Import",
1182
- "code": "import { Icons, IconWrapper, IconHover } from '@1money/components-ui';\n// or\nimport { Icons, IconWrapper, IconHover } from '@1money/components-ui/Icons';\n\n// Type imports\nimport type { IconName, SortIconStatus } from '@1money/components-ui';",
1204
+ "83a40b3d42ffa56ab725f6babf7cfa8029b002fa72a6a9debc106e51292cd840": {
1205
+ "title": "Basic Usage",
1206
+ "code": "import { Flex } from '@1money/component-ui';\nimport { FLEX_ALIGN, FLEX_GAP, FLEX_JUSTIFY } from '@1money/component-ui/Flex';\n\n<Flex gap={FLEX_GAP.middle} align={FLEX_ALIGN.center} justify={FLEX_JUSTIFY.spaceBetween}>\n <div>Left</div>\n <div>Right</div>\n</Flex>",
1183
1207
  "source": "readme",
1184
1208
  "compilable": true
1185
1209
  },
1186
- "83a7f14ec7ad74308dcc340c21d3a1bd3bfae1a54793a236229c65619188361f": {
1187
- "title": "Canonical usage",
1188
- "code": "import { Input } from '@1money/components-ui';\n// or\nimport { Input } from '@1money/components-ui/Input';",
1189
- "source": "canonical",
1190
- "compilable": true
1191
- },
1192
1210
  "842244e70f89e2aaf6941718de836ab3a6e08d642a4d4bb2e80cee160158470f": {
1193
1211
  "title": "Default",
1194
1212
  "code": "{\n const sizes = ['large', 'small'] as const;\n const statuses = ['default', 'error'] as const;\n const valueTypes = ['Placeholder', 'Filled'] as const;\n\n return (\n <div style={{ display: 'flex', flexDirection: 'column', gap: 40 }}>\n {sizes.map((size) => (\n <div key={size}>\n <h3 style={{ margin: '0 0 16px', textTransform: 'capitalize' }}>{size}</h3>\n <div style={{ display: 'flex', gap: 24, flexWrap: 'wrap' }}>\n {statuses.map((status) =>\n valueTypes.map((vt) => (\n <div key={`${status}-${vt}`} style={{ width: 310 }}>\n <p style={{ margin: '0 0 4px', fontSize: 12, color: '#999' }}>\n {status} / {vt}\n </p>\n <Input\n size={size}\n status={status}\n label=\"Label\"\n feedback=\"Feedback\"\n feedbackIcon={status === 'error' ? <Icons name=\"error\" size={16} /> : <Icons name=\"info\" size={16} />}\n placeholder=\"Value\"\n allowClear\n defaultValue={vt === 'Filled' ? 'Input value' : undefined}\n />\n </div>\n )),\n )}\n {/* Read-Only */}\n {valueTypes.map((vt) => (\n <div key={`readonly-${vt}`} style={{ width: 310 }}>\n <p style={{ margin: '0 0 4px', fontSize: 12, color: '#999' }}>\n read-only / {vt}\n </p>\n <Input\n size={size}\n readOnly\n label=\"Label\"\n feedback=\"Feedback\"\n feedbackIcon={<Icons name=\"info\" size={16} />}\n placeholder=\"Value\"\n defaultValue={vt === 'Filled' ? 'Read-only value' : undefined}\n />\n </div>\n ))}\n {/* Disabled */}\n {valueTypes.map((vt) => (\n <div key={`disabled-${vt}`} style={{ width: 310 }}>\n <p style={{ margin: '0 0 4px', fontSize: 12, color: '#999' }}>\n disabled / {vt}\n </p>\n <Input\n size={size}\n disabled\n label=\"Label\"\n feedback=\"Feedback\"\n feedbackIcon={<Icons name=\"info\" size={16} />}\n placeholder=\"Value\"\n defaultValue={vt === 'Filled' ? 'Disabled value' : undefined}\n />\n </div>\n ))}\n </div>\n </div>\n ))}\n\n {/* ── With Prefix / Suffix ── */}\n <div>\n <h3 style={{ margin: '0 0 16px' }}>With Prefix / Suffix</h3>\n <div style={{ display: 'flex', gap: 24, flexWrap: 'wrap' }}>\n <div style={{ width: 310 }}>\n <p style={{ margin: '0 0 4px', fontSize: 12, color: '#999' }}>Prefix + Suffix</p>\n <Input\n label=\"Label\"\n defaultValue=\"100\"\n prefix={<span>USD</span>}\n suffix={<span>Max</span>}\n allowClear\n />\n </div>\n <div style={{ width: 310 }}>\n <p style={{ margin: '0 0 4px', fontSize: 12, color: '#999' }}>Prefix only</p>\n <Input\n label=\"Label\"\n placeholder=\"Enter amount\"\n prefix={<span>$</span>}\n allowClear\n />\n </div>\n <div style={{ width: 310 }}>\n <p style={{ margin: '0 0 4px', fontSize: 12, color: '#999' }}>Suffix only</p>\n <Input\n label=\"Label\"\n placeholder=\"Enter email\"\n suffix={<span>@gmail.com</span>}\n />\n </div>\n </div>\n </div>\n\n {/* ── Required / Info ── */}\n <div>\n <h3 style={{ margin: '0 0 16px' }}>Required / Info</h3>\n <div style={{ display: 'flex', gap: 24, flexWrap: 'wrap' }}>\n <div style={{ width: 310 }}>\n <p style={{ margin: '0 0 4px', fontSize: 12, color: '#999' }}>Required</p>\n <Input\n label=\"Label\"\n required\n placeholder=\"Required field\"\n />\n </div>\n <div style={{ width: 310 }}>\n <p style={{ margin: '0 0 4px', fontSize: 12, color: '#999' }}>Optional (required=false)</p>\n <Input\n label=\"Label\"\n required={false}\n placeholder=\"Optional field\"\n />\n </div>\n <div style={{ width: 310 }}>\n <p style={{ margin: '0 0 4px', fontSize: 12, color: '#999' }}>With Info</p>\n <Input\n label=\"Label\"\n info=\"Optional hint\"\n placeholder=\"Value\"\n />\n </div>\n <div style={{ width: 310 }}>\n <p style={{ margin: '0 0 4px', fontSize: 12, color: '#999' }}>With Tip</p>\n <Input\n label=\"Label\"\n tip=\"This is a helpful tooltip\"\n placeholder=\"Value\"\n />\n </div>\n <div style={{ width: 310 }}>\n <p style={{ margin: '0 0 4px', fontSize: 12, color: '#999' }}>Optional + Info + Tip</p>\n <Input\n label=\"Label\"\n required={false}\n info=\"Optional hint\"\n tip=\"This is a helpful tooltip\"\n placeholder=\"Value\"\n />\n </div>\n </div>\n </div>\n </div>\n );\n }",
1195
1213
  "source": "stories",
1196
1214
  "compilable": true
1197
1215
  },
1216
+ "8585bff0f1eb7ff6a28f523eb07a2fe420a92d4ab2b329724362d75b08df00d5": {
1217
+ "title": "Import",
1218
+ "code": "import { Typography } from '@1money/component-ui';\n// or\nimport {\n Typography,\n TypographyBody,\n TypographyDisplay,\n TypographyHeadline,\n TypographyLabel,\n TypographyLink,\n TypographyTitle,\n} from '@1money/component-ui/Typography';",
1219
+ "source": "readme",
1220
+ "compilable": true
1221
+ },
1198
1222
  "85a3e1ad39461a191a1fdd7c9e26a2810d6e3f39e4304aad3029d5eec043b3d8": {
1199
1223
  "title": "RadioGroup With Options",
1200
1224
  "code": "const [selected, setSelected] = useState<string | number>('email');\n\n<RadioGroup\n value={selected}\n onChange={(event) => {\n if (event.target.value !== undefined) {\n setSelected(event.target.value);\n }\n }}\n options={[\n { value: 'email', label: 'Email', description: 'Receive via email' },\n { value: 'sms', label: 'SMS', description: 'Receive via text message' },\n { value: 'push', label: 'Push', description: 'Receive on your device' },\n ]}\n/>",
1201
1225
  "source": "readme",
1202
1226
  "compilable": true
1203
1227
  },
1228
+ "85a8f18e9db777e582613af812e91ae876d4cb2d7b0ce8feef546c53672a32e8": {
1229
+ "title": "Canonical usage",
1230
+ "code": "import { Copy } from '@1money/component-ui';\n// or\nimport { Copy } from '@1money/component-ui/Copy';",
1231
+ "source": "canonical",
1232
+ "compilable": true
1233
+ },
1204
1234
  "8635e5203dcc0ffc85bde3edc3cafc477676635bb31ab8c71a82f13a90c00b5d": {
1205
1235
  "title": "Error",
1206
1236
  "code": "<div style={wrapperStyle}>\n <Step\n {...args}\n items={[\n {\n key: STEP_ITEM_KEYS.start,\n title: STEP_SAMPLE_COPY.title,\n description: STEP_SAMPLE_COPY.description,\n status: STEP_STATUS.error,\n tag: STEP_SAMPLE_COPY.tag,\n },\n {\n key: STEP_ITEM_KEYS.complete,\n title: STEP_SAMPLE_COPY.title,\n description: STEP_SAMPLE_COPY.description,\n status: STEP_STATUS.error,\n tag: STEP_SAMPLE_COPY.tag,\n },\n {\n key: STEP_ITEM_KEYS.error,\n title: STEP_SAMPLE_COPY.title,\n description: STEP_SAMPLE_COPY.description,\n status: STEP_STATUS.default,\n tag: STEP_SAMPLE_COPY.tag,\n },\n ]}\n />\n </div>",
1207
1237
  "source": "stories",
1208
1238
  "compilable": false
1209
1239
  },
1210
- "86adb3cfba3b31e2471a79d61a1b957e43bef02210b83c118411573478e7d4d7": {
1240
+ "87093dabc20e5f57b2b6778e44b86a15161814292c77dcf8ff8ee67b5416b71b": {
1241
+ "title": "Canonical usage",
1242
+ "code": "import { Dialog } from '@1money/component-ui';\n// or\nimport { Dialog } from '@1money/component-ui/Dialog';",
1243
+ "source": "canonical",
1244
+ "compilable": true
1245
+ },
1246
+ "870e2b31b3b9f07f3c86e4a3d972ce2ac8d52ccfec472c80ef17614db549d99c": {
1211
1247
  "title": "Canonical usage",
1212
- "code": "import { notification } from '@1money/components-ui';\n// or\nimport notification from '@1money/components-ui/Notification';",
1248
+ "code": "import { Grid, Row, Col } from '@1money/component-ui';\n// or\nimport { Grid, Row, Col } from '@1money/component-ui/Grid';\nimport { GRID_ALIGN, GRID_JUSTIFY } from '@1money/component-ui/Grid';",
1213
1249
  "source": "canonical",
1214
1250
  "compilable": true
1215
1251
  },
@@ -1219,27 +1255,33 @@
1219
1255
  "source": "stories",
1220
1256
  "compilable": false
1221
1257
  },
1222
- "88a98229b741820a7e0d61f5e3e8e51340ac8d1cc2eb5332be8189a42f43b6ff": {
1223
- "title": "No Animation",
1224
- "code": "<Tabs items={DEFAULT_ITEMS} animated={false} />",
1225
- "source": "stories",
1258
+ "87da44f303a10795fdc48405385400573d6df57d3902450fd80820b207063783": {
1259
+ "title": "Import",
1260
+ "code": "import { Tour } from '@1money/component-ui';\n// or\nimport { Tour } from '@1money/component-ui/Tour';",
1261
+ "source": "readme",
1226
1262
  "compilable": true
1227
1263
  },
1228
- "88c9a5db9af74e9bf306d1fde453862a643a76dc012d945baefc628eb65abacc": {
1264
+ "881749c8a1a24d971f731a3a711abd8ca83a3db2291db92d41114f4df6b2b380": {
1229
1265
  "title": "Canonical usage",
1230
- "code": "import { Grid, Row, Col } from '@1money/components-ui';\n// or\nimport { Grid, Row, Col } from '@1money/components-ui/Grid';\nimport { GRID_ALIGN, GRID_JUSTIFY } from '@1money/components-ui/Grid';",
1266
+ "code": "import { Progress } from '@1money/component-ui';\n// or\nimport { Progress } from '@1money/component-ui/Progress';",
1231
1267
  "source": "canonical",
1232
1268
  "compilable": true
1233
1269
  },
1270
+ "88a98229b741820a7e0d61f5e3e8e51340ac8d1cc2eb5332be8189a42f43b6ff": {
1271
+ "title": "No Animation",
1272
+ "code": "<Tabs items={DEFAULT_ITEMS} animated={false} />",
1273
+ "source": "stories",
1274
+ "compilable": true
1275
+ },
1234
1276
  "89acd530e5d3ac4d2f2cdc50085c98fc8d6ee5a3f488a16486455a35460bb354": {
1235
1277
  "title": "Long Text",
1236
1278
  "code": "<div style={PREVIEW_GRID_STYLE}>\n <TooltipPreviewCard\n label=\"Long body only\"\n body={EXTRA_LONG_TEXT}\n />\n <TooltipPreviewCard\n label=\"Long title + long body\"\n title=\"This is a very long tooltip title that might wrap to multiple lines\"\n body={EXTRA_LONG_TEXT}\n />\n <TooltipPreviewCard\n label=\"Long body with placement right\"\n body={EXTRA_LONG_TEXT}\n placement=\"right\"\n />\n </div>",
1237
1279
  "source": "stories",
1238
1280
  "compilable": true
1239
1281
  },
1240
- "8a3e06c994d49e66e84658c981c59eb96d6e7a88fc16dbc6a2abf4d76493b94f": {
1241
- "title": "Import",
1242
- "code": "import { Carousel } from '@1money/components-ui';\n// or\nimport { Carousel } from '@1money/components-ui/Carousel';",
1282
+ "8a5806fc588c223301f3b8050939aef03b37dac957c426887998aa3f4423697e": {
1283
+ "title": "Vertical",
1284
+ "code": "<span>\n Text <Divider type=\"vertical\" /> Text\n</span>",
1243
1285
  "source": "readme",
1244
1286
  "compilable": true
1245
1287
  },
@@ -1249,6 +1291,12 @@
1249
1291
  "source": "stories",
1250
1292
  "compilable": false
1251
1293
  },
1294
+ "8cc002e0e73f335fa1d9b738bc68bc5e35dc521d869efddbfd4aac0399ee81b8": {
1295
+ "title": "Canonical usage",
1296
+ "code": "import { Portal } from '@1money/component-ui';\n// or\nimport { Portal } from '@1money/component-ui/Portal';",
1297
+ "source": "canonical",
1298
+ "compilable": true
1299
+ },
1252
1300
  "8d9b4b816f395924fb061a9384e54b2fc8e97a3bfd441367d6c70ff5397f23ec": {
1253
1301
  "title": "Text With Icon",
1254
1302
  "code": "<Button {...args} variant={BUTTON_VARIANT.text} iconEnd={<Icons name=\"arrowRight\" />}>\n Learn More\n </Button>",
@@ -1261,45 +1309,21 @@
1261
1309
  "source": "stories",
1262
1310
  "compilable": true
1263
1311
  },
1264
- "8eb6ee9780aed6e852f19eb5e510f31bf0e507d50da449a6da3f1fb8f76b33bc": {
1312
+ "8f3224780dc7035f24c1a9a5e7915be84f23695cd953df669bb6e54afce4ff90": {
1265
1313
  "title": "Canonical usage",
1266
- "code": "import { Flex } from '@1money/components-ui';\n// or\nimport { Flex } from '@1money/components-ui/Flex';\nimport { FLEX_ALIGN, FLEX_GAP, FLEX_JUSTIFY, FLEX_WRAP } from '@1money/components-ui/Flex';",
1314
+ "code": "import { Icons } from '@1money/component-ui';\n\n<Icons name=\"arrowRight\" size={24} />",
1267
1315
  "source": "canonical",
1268
1316
  "compilable": true
1269
1317
  },
1270
- "8ee4eda344b62edf1015fe21cd52d4f5a5dd71cc3afca58644d9f941978f4f08": {
1271
- "title": "Canonical usage",
1272
- "code": "import { Tag } from '@1money/components-ui';\n// or\nimport { Tag } from '@1money/components-ui/Tag';",
1273
- "source": "canonical",
1274
- "compilable": true
1275
- },
1276
- "8f2d97b44cca3977d39ba134e5981f875d9e8cf9cff20b301aed559b8870665b": {
1277
- "title": "Vertical",
1278
- "code": "Text <Divider type=\"vertical\" /> Text",
1279
- "source": "readme",
1280
- "compilable": true
1281
- },
1282
- "8ffb7323c737a0cc1f4c296336b8763bf0acdafb29eb029b4046496aaa1b4d27": {
1283
- "title": "Import",
1284
- "code": "import { Alert } from '@1money/components-ui';\n// or\nimport { Alert } from '@1money/components-ui/Alert';",
1285
- "source": "readme",
1286
- "compilable": true
1287
- },
1288
1318
  "90bea0eac958ff92526a0901cd2515a8694e96039b3d056e709ede70bd1b4678": {
1289
1319
  "title": "Search Only Filtered",
1290
1320
  "code": "{\n const [value, setValue] = useState<string | number | undefined>(undefined);\n const [searchValue, setSearchValue] = useState('');\n\n const trimmed = searchValue.trim().toLowerCase();\n const filteredOptions = trimmed\n ? ASSET_OPTIONS.filter((option) => {\n const label = String(option.label).toLowerCase();\n const description = String(option.description ?? '').toLowerCase();\n const optionValue = String(option.value).toLowerCase();\n return (\n label.includes(trimmed) ||\n description.includes(trimmed) ||\n optionValue.includes(trimmed)\n );\n })\n : [];\n\n return (\n <div style={storyContainerStyle}>\n <Select\n {...args}\n value={value}\n options={filteredOptions}\n searchValue={searchValue}\n emptyContent={trimmed ? 'No matches' : 'Type to search assets'}\n onSearchChange={(next) => {\n setSearchValue(next);\n args.onSearchChange?.(next);\n }}\n onChange={(nextValue, option) => {\n setValue(nextValue as string | number | undefined);\n args.onChange?.(nextValue, option);\n }}\n />\n </div>\n );\n }",
1291
1321
  "source": "stories",
1292
1322
  "compilable": false
1293
1323
  },
1294
- "93778978611c05850a486471281bd8bb01ceeac22d3d7708ec1c59aaefb0ae95": {
1324
+ "920c6084b0c74e8e6ccd8e98e3afd2477bffb820950ef10b1e933c2597cd446f": {
1295
1325
  "title": "Canonical usage",
1296
- "code": "import { Alert } from '@1money/components-ui';\n// or\nimport { Alert } from '@1money/components-ui/Alert';",
1297
- "source": "canonical",
1298
- "compilable": true
1299
- },
1300
- "93b8b9acce6685bc6f00a21f857fc812e41fb754d3e946d7576e2543f056f1c0": {
1301
- "title": "Canonical usage",
1302
- "code": "import { Upload, UploadFileBar } from '@1money/components-ui';\n// or\nimport { Upload, UploadFileBar } from '@1money/components-ui/Upload';",
1326
+ "code": "import { Icons, IconWrapper, IconHover } from '@1money/component-ui';\n// or\nimport { Icons, IconWrapper, IconHover } from '@1money/component-ui/Icons';\n\n// Type imports\nimport type { IconName, SortIconStatus } from '@1money/component-ui';",
1303
1327
  "source": "canonical",
1304
1328
  "compilable": true
1305
1329
  },
@@ -1309,9 +1333,9 @@
1309
1333
  "source": "stories",
1310
1334
  "compilable": false
1311
1335
  },
1312
- "94f775f92f27f8bd4a4d9326ff913a157404db31807176b4ef09292284c90d8d": {
1313
- "title": "Basic Usage",
1314
- "code": "import { Grid } from '@1money/components-ui';\nimport { GRID_ALIGN, GRID_JUSTIFY } from '@1money/components-ui/Grid';\n\nconst GRID_GUTTER: [number, number] = [16, 8];\nconst SPAN_HALF = 6;\n\n<Grid gutter={GRID_GUTTER} justify={GRID_JUSTIFY.spaceBetween} align={GRID_ALIGN.middle}>\n <Grid.Col span={SPAN_HALF}>Left</Grid.Col>\n <Grid.Col span={SPAN_HALF}>Right</Grid.Col>\n</Grid>",
1336
+ "93d92a4c2994ad24677ef5800318b556bdd570a6f6547fe359586b7898bbffa0": {
1337
+ "title": "Import",
1338
+ "code": "import { Navigation, Nav, NavigationStepper } from '@1money/component-ui';\n// or\nimport { Navigation, Nav, NavigationStepper } from '@1money/component-ui/Navigation';",
1315
1339
  "source": "readme",
1316
1340
  "compilable": true
1317
1341
  },
@@ -1327,15 +1351,9 @@
1327
1351
  "source": "stories",
1328
1352
  "compilable": false
1329
1353
  },
1330
- "95dc922235c54890ef40e287095692b232702132d592073e3c6b66efd6929f50": {
1354
+ "96a4fb49627068cd32df95bce74ab746a2901c627dcd70fa9bf9c9247f21b7a3": {
1331
1355
  "title": "Canonical usage",
1332
- "code": "import { Copy } from '@1money/components-ui';\n// or\nimport { Copy } from '@1money/components-ui/Copy';",
1333
- "source": "canonical",
1334
- "compilable": true
1335
- },
1336
- "96811d7b0b7448138a55d8b001aae58595a2e5201ba8bc5ef5ca1cf1a79a8524": {
1337
- "title": "Canonical usage",
1338
- "code": "import { Segment } from '@1money/components-ui';\n// or\nimport { Segment } from '@1money/components-ui/Segment';",
1356
+ "code": "import { Trigger } from '@1money/component-ui';\n// or\nimport { Trigger } from '@1money/component-ui/Trigger';",
1339
1357
  "source": "canonical",
1340
1358
  "compilable": true
1341
1359
  },
@@ -1345,9 +1363,9 @@
1345
1363
  "source": "stories",
1346
1364
  "compilable": false
1347
1365
  },
1348
- "97c44f1fee50bdc6a2d6a8cb4b7c56c51a2997d2ea78b3647cce7b0c249f6f8c": {
1366
+ "972760bf5ab84d11fe02c95be34c823bc9ee3d6e0009ebd7bee036df4a721356": {
1349
1367
  "title": "Import",
1350
- "code": "import { Tooltip } from '@1money/components-ui';\n// or\nimport { Tooltip } from '@1money/components-ui/Tooltip';",
1368
+ "code": "import { Dropdown } from '@1money/component-ui';\n// or\nimport { Dropdown } from '@1money/component-ui/Dropdown';",
1351
1369
  "source": "readme",
1352
1370
  "compilable": true
1353
1371
  },
@@ -1369,6 +1387,12 @@
1369
1387
  "source": "stories",
1370
1388
  "compilable": true
1371
1389
  },
1390
+ "985b12a88fa482e6b7ff9230128c385166aa202ba56916e9d048bcb83046081b": {
1391
+ "title": "Canonical usage",
1392
+ "code": "import { Input } from '@1money/component-ui';\n\n<Input label=\"Amount\" placeholder=\"Value\" />",
1393
+ "source": "canonical",
1394
+ "compilable": true
1395
+ },
1372
1396
  "991d316ea63cfd7ffbebf14b3b1e27e44442737febab245a5576b67e01d3af2a": {
1373
1397
  "title": "All Variants",
1374
1398
  "code": "<div style={{ display: 'flex', gap: 48 }}>\n <div style={{ flex: 1, display: 'flex', flexDirection: 'column', gap: 16 }}>\n <h3>Rectangle</h3>\n <Skeleton />\n <Skeleton width=\"10rem\" />\n <Skeleton width=\"5rem\" />\n <Skeleton height=\"2rem\" />\n <Skeleton width=\"10rem\" height=\"4rem\" />\n\n <h3 style={{ marginTop: 8 }}>Rounded</h3>\n <Skeleton borderRadius=\"16px\" />\n <Skeleton width=\"10rem\" borderRadius=\"16px\" />\n <Skeleton width=\"5rem\" borderRadius=\"16px\" />\n <Skeleton height=\"2rem\" borderRadius=\"16px\" />\n <Skeleton width=\"10rem\" height=\"4rem\" borderRadius=\"16px\" />\n </div>\n <div style={{ display: 'flex', flexDirection: 'column', gap: 16 }}>\n <h3>Square</h3>\n <div style={{ display: 'flex', gap: 8 }}>\n <Skeleton size=\"2rem\" />\n <Skeleton size=\"3rem\" />\n <Skeleton size=\"4rem\" />\n <Skeleton size=\"5rem\" />\n </div>\n\n <h3 style={{ marginTop: 8 }}>Circle</h3>\n <div style={{ display: 'flex', gap: 8 }}>\n <Skeleton shape=\"circle\" size=\"2rem\" />\n <Skeleton shape=\"circle\" size=\"3rem\" />\n <Skeleton shape=\"circle\" size=\"4rem\" />\n <Skeleton shape=\"circle\" size=\"5rem\" />\n </div>\n </div>\n </div>",
@@ -1381,15 +1405,9 @@
1381
1405
  "source": "stories",
1382
1406
  "compilable": true
1383
1407
  },
1384
- "995eb8461d39460977e9818109030cdeb75f213495063aab77b583441e8d6a76": {
1385
- "title": "Basic Usage",
1386
- "code": "import { Flex } from '@1money/components-ui';\nimport { FLEX_ALIGN, FLEX_GAP, FLEX_JUSTIFY } from '@1money/components-ui/Flex';\n\n<Flex gap={FLEX_GAP.middle} align={FLEX_ALIGN.center} justify={FLEX_JUSTIFY.spaceBetween}>\n <div>Left</div>\n <div>Right</div>\n</Flex>",
1387
- "source": "readme",
1388
- "compilable": true
1389
- },
1390
- "9a6b2f4b0ce1fdea4c73f1f9ea0d1471dc97d3dd7783c798b6b99ddc7f3bf15c": {
1391
- "title": "Import",
1392
- "code": "import { Skeleton } from '@1money/components-ui';\n// or\nimport { Skeleton } from '@1money/components-ui/Skeleton';",
1408
+ "9971f4d638cacc647af1a34ef98beb3f2aaf11c08d3a3f8f21fd0fd5bdef0dde": {
1409
+ "title": "CheckboxGroup Props",
1410
+ "code": "import { Checkbox, CheckboxGroup } from '@1money/component-ui';\n// or\nimport { Checkbox, CheckboxGroup } from '@1money/component-ui/Checkbox';\n\n<CheckboxGroup\n name=\"fruits\"\n options={[\n { label: 'Apple', value: 'apple' },\n { label: 'Pear', value: 'pear' },\n ]}\n value={selectedValues}\n onChange={setSelectedValues}\n/>\n\n<Checkbox.Group defaultValue={['alpha']}>\n <Checkbox value=\"alpha\" label=\"Alpha\" />\n <Checkbox value=\"beta\" label=\"Beta\" />\n</Checkbox.Group>",
1393
1411
  "source": "readme",
1394
1412
  "compilable": true
1395
1413
  },
@@ -1399,22 +1417,10 @@
1399
1417
  "source": "stories",
1400
1418
  "compilable": true
1401
1419
  },
1402
- "9c99f80f5636ab539416d2c5c60a083a9d43acd5938644b959803204f9470ac1": {
1403
- "title": "Import",
1404
- "code": "import { Portal } from '@1money/components-ui';\n// or\nimport { Portal } from '@1money/components-ui/Portal';",
1405
- "source": "readme",
1406
- "compilable": true
1407
- },
1408
- "9d095c31abb7ac97c40b817bfca40bcb706f8b8572f9a6af7218643f08b7464b": {
1409
- "title": "Import",
1410
- "code": "import { Flex } from '@1money/components-ui';\n// or\nimport { Flex } from '@1money/components-ui/Flex';\nimport { FLEX_ALIGN, FLEX_GAP, FLEX_JUSTIFY, FLEX_WRAP } from '@1money/components-ui/Flex';",
1411
- "source": "readme",
1412
- "compilable": true
1413
- },
1414
- "9d9e13198adcfe9df9f475bcf7d1fcef492fbd98892daaddb28d65ca2e213a74": {
1415
- "title": "Import",
1416
- "code": "import { ResizeObserver, useResizeObserver } from '@1money/components-ui';\n// or\nimport { ResizeObserver, useResizeObserver } from '@1money/components-ui/ResizeObserver';",
1417
- "source": "readme",
1420
+ "9bb4d9b6b7856693e7c803e925d729a969cf39ccee9c6e08327e6e60305ca0f3": {
1421
+ "title": "Canonical usage",
1422
+ "code": "import { Step } from '@1money/component-ui';\n// or\nimport { Step } from '@1money/component-ui/Step';",
1423
+ "source": "canonical",
1418
1424
  "compilable": true
1419
1425
  },
1420
1426
  "9eae41b47da6d3b07d6bfdb98fe407b6be85aa68db3fe695699cf9588b65eda8": {
@@ -1435,18 +1441,24 @@
1435
1441
  "source": "stories",
1436
1442
  "compilable": true
1437
1443
  },
1438
- "a0eaa77614f8bc2563173aa4c68d578c2a7d2957ec1696516c9656d43737f7e2": {
1439
- "title": "Import",
1440
- "code": "import { Segment } from '@1money/components-ui';\n// or\nimport { Segment } from '@1money/components-ui/Segment';",
1441
- "source": "readme",
1442
- "compilable": true
1443
- },
1444
1444
  "a148c8eb1938e582f665219c3d3266bc21931e8547a0e516ec73f3a420387ec3": {
1445
1445
  "title": "Usage",
1446
1446
  "code": "<Link disabled>Read more</Link>",
1447
1447
  "source": "readme",
1448
1448
  "compilable": true
1449
1449
  },
1450
+ "a273142732c4077af48c520b0e9fbec1fcae48b0f012545bcb951e9554b1e0ef": {
1451
+ "title": "Canonical usage",
1452
+ "code": "import { Flex } from '@1money/component-ui';\n// or\nimport { Flex } from '@1money/component-ui/Flex';\nimport { FLEX_ALIGN, FLEX_GAP, FLEX_JUSTIFY, FLEX_WRAP } from '@1money/component-ui/Flex';",
1453
+ "source": "canonical",
1454
+ "compilable": true
1455
+ },
1456
+ "a2e7aabc10ff9cc33437fbe0878251394c4112f7a174a23577d895a7249bba3b": {
1457
+ "title": "Canonical usage",
1458
+ "code": "import { Button, Icons } from '@1money/component-ui';\n// or\nimport { Button } from '@1money/component-ui/Button';\nimport { Icons } from '@1money/component-ui/Icons';",
1459
+ "source": "canonical",
1460
+ "compilable": true
1461
+ },
1450
1462
  "a304a3d6b1220502a36e9ed2e198e53f9ce51219f0ff9f64776058c9f3798045": {
1451
1463
  "title": "Copyable Text",
1452
1464
  "code": "<div style={STORY_LAYOUT_STYLE}>\n <Typography.Body size=\"md\" copyable>\n Plain text with copy action\n </Typography.Body>\n <Typography.Body size=\"md\" copyable={{ text: 'custom-override-value' }}>\n Copy uses a different value\n </Typography.Body>\n </div>",
@@ -1459,6 +1471,12 @@
1459
1471
  "source": "readme",
1460
1472
  "compilable": true
1461
1473
  },
1474
+ "a3c2924a769ad563b93cde498367ce69f6fe286064bae9dd22799a8733aebea6": {
1475
+ "title": "Import",
1476
+ "code": "import { Empty } from '@1money/component-ui';\n// or\nimport { Empty } from '@1money/component-ui/Empty';",
1477
+ "source": "readme",
1478
+ "compilable": true
1479
+ },
1462
1480
  "a441ef91fd2695501c12b9a749acb9e33886f02b78b6e77d818f5c11c7a23fe7": {
1463
1481
  "title": "Group With Options",
1464
1482
  "code": "{\n const [value, setValue] = React.useState<string | number>('email');\n const handleChange = (event: RadioChangeEvent) => {\n if (event.target.value !== undefined) {\n setValue(event.target.value);\n }\n };\n\n return (\n <RadioGroup\n value={value}\n onChange={handleChange}\n options={[\n { value: 'email', label: 'Email', description: 'Receive via email' },\n { value: 'sms', label: 'SMS', description: 'Receive via text message' },\n { value: 'push', label: 'Push notification', description: 'Receive on your device' },\n ]}\n />\n );\n }",
@@ -1477,21 +1495,39 @@
1477
1495
  "source": "stories",
1478
1496
  "compilable": true
1479
1497
  },
1498
+ "a5ae14150d1724de4984c10921713734e86d15771efe397f3015a01c77d13676": {
1499
+ "title": "Canonical usage",
1500
+ "code": "import { Cell } from '@1money/component-ui';\n// or\nimport { Cell } from '@1money/component-ui/Cell';",
1501
+ "source": "canonical",
1502
+ "compilable": true
1503
+ },
1504
+ "a5e7bfca00eae7d485a875832679ab34d67e3c8ef781d04913386ca1185eb822": {
1505
+ "title": "Basic Usage",
1506
+ "code": "import { Button } from '@1money/component-ui';\n\n<Popconfirm\n title=\"Delete transfer rule?\"\n body=\"This action removes the rule immediately and cannot be undone.\"\n cancelText=\"Keep rule\"\n confirmText=\"Delete\"\n onConfirm={() => {\n // perform delete\n }}\n>\n <Button color=\"danger\">Delete rule</Button>\n</Popconfirm>",
1507
+ "source": "readme",
1508
+ "compilable": true
1509
+ },
1480
1510
  "a823300963fcf8c4ccf8e531c42aa78d7ab59841b405c471d5c0c0d6ac0b9b22": {
1481
1511
  "title": "Text Area",
1482
1512
  "code": "{\n const states = ['default', 'error'] as const;\n const valueTypes = ['Placeholder', 'Filled'] as const;\n\n return (\n <div style={{ display: 'flex', flexDirection: 'column', gap: 40 }}>\n {/* ── Large ── */}\n <div>\n <h3 style={{ margin: '0 0 16px' }}>Large</h3>\n <div style={{ display: 'flex', gap: 24, flexWrap: 'wrap' }}>\n {states.map((status) =>\n valueTypes.map((vt) => (\n <div key={`${status}-${vt}`} style={{ width: 400 }}>\n <p style={{ margin: '0 0 4px', fontSize: 12, color: '#999' }}>\n {status} / {vt}\n </p>\n <Input.TextArea\n label=\"Label\"\n feedback=\"Feedback\"\n feedbackIcon={status === 'error' ? <Icons name=\"error\" size={16} /> : <Icons name=\"info\" size={16} />}\n status={status}\n placeholder=\"Value\"\n defaultValue={vt === 'Filled' ? 'Longer memo value that spans multiple lines to demonstrate the filled state of the textarea component' : undefined}\n rows={4}\n showCount\n maxLength={250}\n />\n </div>\n )),\n )}\n {/* Disabled */}\n {valueTypes.map((vt) => (\n <div key={`disabled-${vt}`} style={{ width: 400 }}>\n <p style={{ margin: '0 0 4px', fontSize: 12, color: '#999' }}>\n disabled / {vt}\n </p>\n <Input.TextArea\n label=\"Label\"\n feedback=\"Feedback\"\n feedbackIcon={<Icons name=\"info\" size={16} />}\n disabled\n placeholder=\"Value\"\n defaultValue={vt === 'Filled' ? 'Disabled filled value' : undefined}\n rows={4}\n showCount\n maxLength={250}\n />\n </div>\n ))}\n </div>\n </div>\n\n {/* ── Small ── */}\n <div>\n <h3 style={{ margin: '0 0 16px' }}>Small</h3>\n <div style={{ display: 'flex', gap: 24, flexWrap: 'wrap' }}>\n <div style={{ width: 400 }}>\n <p style={{ margin: '0 0 4px', fontSize: 12, color: '#999' }}>default / Placeholder</p>\n <Input.TextArea\n size=\"small\"\n label=\"Label\"\n feedback=\"Feedback\"\n feedbackIcon={<Icons name=\"info\" size={16} />}\n placeholder=\"Value\"\n rows={3}\n showCount\n maxLength={250}\n />\n </div>\n <div style={{ width: 400 }}>\n <p style={{ margin: '0 0 4px', fontSize: 12, color: '#999' }}>default / Filled</p>\n <Input.TextArea\n size=\"small\"\n label=\"Label\"\n feedback=\"Feedback\"\n feedbackIcon={<Icons name=\"info\" size={16} />}\n placeholder=\"Value\"\n defaultValue=\"Small filled value\"\n rows={3}\n showCount\n maxLength={250}\n />\n </div>\n </div>\n </div>\n </div>\n );\n }",
1483
1513
  "source": "stories",
1484
1514
  "compilable": true
1485
1515
  },
1486
- "aa0e9842f54e521f7ff371e51003e26ed69263bef1d5d37baaa5fd6fa189e32c": {
1487
- "title": "Split Example",
1488
- "code": "<Space split={<span>|</span>} size={SPACE_SIZE.small}>\n <span>Alpha</span>\n <span>Beta</span>\n <span>Gamma</span>\n</Space>",
1516
+ "a93b112762fa56f6d4b7725a0370a6f2c175f1458d13fc08c07ee10a2ca4ab6c": {
1517
+ "title": "Import",
1518
+ "code": "import { Copy } from '@1money/component-ui';\n// or\nimport { Copy } from '@1money/component-ui/Copy';",
1489
1519
  "source": "readme",
1490
1520
  "compilable": true
1491
1521
  },
1492
- "aa61ebf1b90fbb562c6110d57bc34506cb6448c179bb745b3c3106a7f6cc9e74": {
1493
- "title": "Import",
1494
- "code": "import { Progress } from '@1money/components-ui';\n// or\nimport { Progress } from '@1money/components-ui/Progress';",
1522
+ "a9c090e5b6baf8fbf540fa9467f4b5fa43e6cc9de869c162084bb5262534e1d6": {
1523
+ "title": "Canonical usage",
1524
+ "code": "import { Skeleton } from '@1money/component-ui';\n// or\nimport { Skeleton } from '@1money/component-ui/Skeleton';",
1525
+ "source": "canonical",
1526
+ "compilable": true
1527
+ },
1528
+ "aa0e9842f54e521f7ff371e51003e26ed69263bef1d5d37baaa5fd6fa189e32c": {
1529
+ "title": "Split Example",
1530
+ "code": "<Space split={<span>|</span>} size={SPACE_SIZE.small}>\n <span>Alpha</span>\n <span>Beta</span>\n <span>Gamma</span>\n</Space>",
1495
1531
  "source": "readme",
1496
1532
  "compilable": true
1497
1533
  },
@@ -1513,21 +1549,45 @@
1513
1549
  "source": "readme",
1514
1550
  "compilable": true
1515
1551
  },
1552
+ "ad2d08fce81c4f209ec3c8897be49561183e09a4a4a0c1d763fa85e0837255db": {
1553
+ "title": "Import",
1554
+ "code": "import { Carousel } from '@1money/component-ui';\n// or\nimport { Carousel } from '@1money/component-ui/Carousel';",
1555
+ "source": "readme",
1556
+ "compilable": true
1557
+ },
1558
+ "adc02f7e653e00211d2f727e3ef895d626db0f7ff0da6436a51e52ecddefc1ec": {
1559
+ "title": "Canonical usage",
1560
+ "code": "import { VirtualList } from '@1money/component-ui';\n// or\nimport { VirtualList } from '@1money/component-ui/VirtualList';",
1561
+ "source": "canonical",
1562
+ "compilable": true
1563
+ },
1516
1564
  "ae23f0d9349157c952b7752e33ea302d85c3d3f09654ece8ddf9107f7b194b68": {
1517
1565
  "title": "Usage",
1518
1566
  "code": "{/* Hover trigger (default) */}\n<button id=\"my-trigger\">Hover me</button>\n<Tooltip anchorSelect=\"#my-trigger\" body=\"Simple tooltip\" />\n\n{/* With title */}\n<button id=\"info-trigger\">Info</button>\n<Tooltip anchorSelect=\"#info-trigger\" title=\"Heading\" body=\"Detailed text\" placement=\"bottom\" />\n\n{/* Controlled */}\n<button id=\"ctrl-trigger\">Controlled</button>\n<Tooltip anchorSelect=\"#ctrl-trigger\" body=\"Controlled tooltip\" open={isOpen} onOpenChange={setIsOpen} />\n\n{/* Click trigger */}\n<button id=\"click-trigger\">Click me</button>\n<Tooltip\n anchorSelect=\"#click-trigger\"\n body=\"Click tooltip\"\n openEvents={{ click: true, mouseover: false, mouseenter: false, focus: false }}\n closeEvents={{ click: true, mouseleave: false, mouseout: false, blur: false }}\n/>",
1519
1567
  "source": "readme",
1520
1568
  "compilable": true
1521
1569
  },
1570
+ "ae246cd51ebca22cef4c68e015452c7db50311c6425bddfe634ace9ce667fe11": {
1571
+ "title": "Import",
1572
+ "code": "import { CoachMark } from '@1money/component-ui';\n// or\nimport { CoachMark } from '@1money/component-ui/CoachMark';",
1573
+ "source": "readme",
1574
+ "compilable": true
1575
+ },
1522
1576
  "af6172fd099200e93181aeb231c5d69c5b4b4d057a1f32935aa2f35ed86ffebe": {
1523
1577
  "title": "Search",
1524
1578
  "code": "{\n const onSearch = fn();\n const sizes = ['large', 'small'] as const;\n const columns = [\n { label: 'Default', props: {} },\n { label: 'Disabled', props: { disabled: true } },\n ];\n\n return (\n <div style={{ display: 'flex', flexDirection: 'column', gap: 40 }}>\n {sizes.map((size) => (\n <div key={size}>\n <h3 style={{ margin: '0 0 16px', textTransform: 'capitalize' }}>{size}</h3>\n <div style={{ display: 'flex', flexDirection: 'column', gap: 24 }}>\n {/* Placeholder row */}\n <div>\n <p style={{ margin: '0 0 8px', color: '#666', fontSize: 13 }}>Placeholder</p>\n <div style={{ display: 'flex', gap: 16, flexWrap: 'wrap' }}>\n {columns.map((col) => (\n <div key={col.label} style={{ width: 310 }}>\n <p style={{ margin: '0 0 4px', fontSize: 12, color: '#999' }}>{col.label}</p>\n <Input.Search\n size={size}\n placeholder=\"Search\"\n onSearch={onSearch}\n {...col.props}\n />\n </div>\n ))}\n </div>\n </div>\n {/* Filled row */}\n <div>\n <p style={{ margin: '0 0 8px', color: '#666', fontSize: 13 }}>Filled</p>\n <div style={{ display: 'flex', gap: 16, flexWrap: 'wrap' }}>\n {columns.map((col) => (\n <div key={col.label} style={{ width: 310 }}>\n <p style={{ margin: '0 0 4px', fontSize: 12, color: '#999' }}>{col.label}</p>\n <Input.Search\n size={size}\n placeholder=\"Search\"\n defaultValue=\"Search\"\n allowClear\n onSearch={onSearch}\n {...col.props}\n />\n </div>\n ))}\n </div>\n </div>\n </div>\n </div>\n ))}\n {/* Loading */}\n <div>\n <h3 style={{ margin: '0 0 16px' }}>Loading</h3>\n <div style={{ display: 'flex', gap: 16 }}>\n <div style={{ width: 310 }}>\n <Input.Search\n placeholder=\"Search\"\n defaultValue=\"Search\"\n loading\n onSearch={onSearch}\n />\n </div>\n </div>\n </div>\n </div>\n );\n }",
1525
1579
  "source": "stories",
1526
1580
  "compilable": false
1527
1581
  },
1528
- "af64339337cb6c9e4dfce14392faeb67ee7ab5b4fd60c434ee58ce8db56705c2": {
1582
+ "af88d73f705cf2f7bb20f21e3b6bf5469ae3683b129dc3b5e6b59966449452b9": {
1583
+ "title": "Import",
1584
+ "code": "import { Alert } from '@1money/component-ui';\n// or\nimport { Alert } from '@1money/component-ui/Alert';",
1585
+ "source": "readme",
1586
+ "compilable": true
1587
+ },
1588
+ "afe811bb04937c81da684427fdc40982aa6f4b50d676e876710f3e22bc71404a": {
1529
1589
  "title": "Import",
1530
- "code": "import { Navigation, Nav } from '@1money/components-ui';\n// or\nimport { Navigation, Nav } from '@1money/components-ui/Navigation';",
1590
+ "code": "import { Switch } from '@1money/component-ui';\n// or\nimport { Switch } from '@1money/component-ui/Switch';",
1531
1591
  "source": "readme",
1532
1592
  "compilable": true
1533
1593
  },
@@ -1573,6 +1633,12 @@
1573
1633
  "source": "stories",
1574
1634
  "compilable": false
1575
1635
  },
1636
+ "b5122ab00632d0b9f9f205345094b8cc87d3de0e265bfa06f77f8c0538a72a4a": {
1637
+ "title": "Import",
1638
+ "code": "import { Link } from '@1money/component-ui';\n// or\nimport { Link } from '@1money/component-ui/Link';",
1639
+ "source": "readme",
1640
+ "compilable": true
1641
+ },
1576
1642
  "b53d16f186c5371a04bc88eb4e5f48d69652f711a0b9596a5b520eea56fd12b7": {
1577
1643
  "title": "Usage",
1578
1644
  "code": "<Link href=\"https://docs.1money.com\" target=\"_blank\">\n Documentation\n</Link>",
@@ -1585,6 +1651,24 @@
1585
1651
  "source": "readme",
1586
1652
  "compilable": true
1587
1653
  },
1654
+ "b5cf05bb6a8f45cfcd470fe1172b358fbd92178d3eece19d966999aa3f077105": {
1655
+ "title": "Canonical usage",
1656
+ "code": "import { Link } from '@1money/component-ui';\n// or\nimport { Link } from '@1money/component-ui/Link';",
1657
+ "source": "canonical",
1658
+ "compilable": true
1659
+ },
1660
+ "b618a5ec89d3703e8bf3f9b88fa9987155c51787adb5c7b017064afc3b3fdb0b": {
1661
+ "title": "Canonical usage",
1662
+ "code": "import { Accordion } from '@1money/component-ui';\n// or\nimport { Accordion } from '@1money/component-ui/Accordion';",
1663
+ "source": "canonical",
1664
+ "compilable": true
1665
+ },
1666
+ "b642ec44c242139bb5d0c19cff727d2e2c036e30ec3c4597eebd7e533c3252ed": {
1667
+ "title": "Import",
1668
+ "code": "import { Input } from '@1money/component-ui';\n// or\nimport { Input } from '@1money/component-ui/Input';",
1669
+ "source": "readme",
1670
+ "compilable": true
1671
+ },
1588
1672
  "b6bf8d1eebcfbb2bb8d4eef7f3fbb26233d5abe1febad432c6cb4d4af6ad7a79": {
1589
1673
  "title": "Multiple Children",
1590
1674
  "code": "{\n const [sizes, setSizes] = useState<Record<string, SizeInfo>>({});\n\n const handleResize = (key: string) => (sizeInfo: SizeInfo) => {\n setSizes((prev) => ({ ...prev, [key]: sizeInfo }));\n };\n\n return (\n <div>\n <p style={{ marginBottom: 8, color: '#666' }}>\n Each box independently reports its size:\n </p>\n <div style={{ display: 'flex', gap: 16 }}>\n {['A', 'B', 'C'].map((key) => (\n <ResizeObserver key={key} onResize={handleResize(key)}>\n <div\n style={{\n ...boxStyle,\n minWidth: 120,\n width: 120 + ['A', 'B', 'C'].indexOf(key) * 40,\n }}\n >\n Box {key}\n {sizes[key] && (\n <div style={{ fontSize: 12, color: '#999', marginTop: 8 }}>\n {sizes[key].width} × {sizes[key].height}\n </div>\n )}\n </div>\n </ResizeObserver>\n ))}\n </div>\n </div>\n );\n }",
@@ -1597,9 +1681,9 @@
1597
1681
  "source": "stories",
1598
1682
  "compilable": false
1599
1683
  },
1600
- "b91a32c9ec2ecd84c681d080f87903691347b1bed2ec950e4e4d52c3df72ebd3": {
1601
- "title": "Import",
1602
- "code": "import { Copy } from '@1money/components-ui';\n// or\nimport { Copy } from '@1money/components-ui/Copy';",
1684
+ "b89885447fe4270b68a9a64c1a3c6664144939f977fd39aee5bb7e7334679a38": {
1685
+ "title": "Basic Usage",
1686
+ "code": "import { Space } from '@1money/component-ui';\nimport { SPACE_ALIGN, SPACE_DIRECTION, SPACE_SIZE } from '@1money/component-ui/Space';\n\n<Space size={SPACE_SIZE.middle} align={SPACE_ALIGN.center}>\n <span>Left</span>\n <span>Right</span>\n</Space>",
1603
1687
  "source": "readme",
1604
1688
  "compilable": true
1605
1689
  },
@@ -1609,12 +1693,24 @@
1609
1693
  "source": "stories",
1610
1694
  "compilable": false
1611
1695
  },
1696
+ "ba4d7fb2d83dc29cedcc36d923e7baf16aa5872c15a1e5b5a369f188cd1c1bd8": {
1697
+ "title": "Import",
1698
+ "code": "import { Drawer } from '@1money/component-ui';\n// or\nimport { Drawer } from '@1money/component-ui/Drawer';",
1699
+ "source": "readme",
1700
+ "compilable": true
1701
+ },
1612
1702
  "bad68aaa47c4d8c9f976f817b5edbef7ff8573f469f9a1bc5bc53482ff65b38e": {
1613
1703
  "title": "Usage",
1614
1704
  "code": "<Alert\n status=\"info\"\n title=\"Information\"\n body=\"This is an informational message.\"\n link={{ label: 'Learn more', href: '/docs' }}\n closable\n onClose={() => console.log('closed')}\n/>",
1615
1705
  "source": "readme",
1616
1706
  "compilable": true
1617
1707
  },
1708
+ "badf3cdf64f8d773268d54275bd790f16a3357210a7bd056f4637100b7746845": {
1709
+ "title": "Import",
1710
+ "code": "import { Divider } from '@1money/component-ui';",
1711
+ "source": "readme",
1712
+ "compilable": true
1713
+ },
1618
1714
  "bda0a33c638ce6212b4a0c6a592ef4de615a792af4360935f5c256a31d3c2bfc": {
1619
1715
  "title": "Controlled",
1620
1716
  "code": "{\n const [open, setOpen] = useState(false);\n\n return (\n <div style={{ display: 'flex', gap: 8, alignItems: 'center' }}>\n <Dropdown\n {...args}\n open={open}\n onOpenChange={(nextOpen) => {\n setOpen(nextOpen);\n args.onOpenChange?.(nextOpen);\n }}\n content={<MenuContent onClose={() => setOpen(false)} />}\n >\n <Button>Controlled</Button>\n </Dropdown>\n <Button color=\"grey\" size=\"small\" onClick={() => setOpen((prev) => !prev)}>\n Toggle: {open ? 'Open' : 'Closed'}\n </Button>\n </div>\n );\n }",
@@ -1657,6 +1753,12 @@
1657
1753
  "source": "stories",
1658
1754
  "compilable": true
1659
1755
  },
1756
+ "c2c42c200e9bad53b274260619d36029e7257a5f80b73408ffe619abdf14a9d9": {
1757
+ "title": "Canonical usage",
1758
+ "code": "import { Drawer } from '@1money/component-ui';\n// or\nimport { Drawer } from '@1money/component-ui/Drawer';",
1759
+ "source": "canonical",
1760
+ "compilable": true
1761
+ },
1660
1762
  "c2d0e5c92e119088561656cca130e7fe6d43a492895329f41b30087cb4f987a7": {
1661
1763
  "title": "Sizes",
1662
1764
  "code": "<div style={{ display: 'flex', gap: 12, alignItems: 'center' }}>\n {TAG_SIZES.map((size) => (\n <Tag {...args} key={size} size={size} label={size} />\n ))}\n </div>",
@@ -1675,34 +1777,22 @@
1675
1777
  "source": "stories",
1676
1778
  "compilable": false
1677
1779
  },
1678
- "c37dda6e47f4681c24203fbf4f154801673c331d4394707e6c12c5b07eb3953b": {
1679
- "title": "Import",
1680
- "code": "import { Cell } from '@1money/components-ui';\n// or\nimport { Cell } from '@1money/components-ui/Cell';",
1681
- "source": "readme",
1682
- "compilable": true
1683
- },
1684
1780
  "c3aaf0098db4c77ba5af727f8c2eb70a9969be6ea15dcba309d583137cfe6e21": {
1685
1781
  "title": "Nested List",
1686
1782
  "code": "<ProForm\n {...args}\n initialValues={{\n groups: [\n { title: 'Group A', items: [{ name: 'Item 1' }] },\n ],\n }}\n onFinish={(values) => alert(JSON.stringify(values, null, 2))}\n >\n <ProFormList name=\"groups\" label=\"Groups\">\n {(fields) =>\n fields.map(({ name, key }) => (\n <div key={key} style={{ border: '1px solid #eee', padding: 12, marginBottom: 8, borderRadius: 4 }}>\n <ProFormText name={`${name}.title`} label=\"Group Title\" />\n <ProFormList name=\"items\" label=\"Items\">\n {(subFields) =>\n subFields.map((sf) => (\n <ProFormText key={sf.key} name={`${sf.name}.name`} label=\"Item Name\" />\n ))\n }\n </ProFormList>\n </div>\n ))\n }\n </ProFormList>\n </ProForm>",
1687
1783
  "source": "stories",
1688
1784
  "compilable": false
1689
1785
  },
1690
- "c4dc11bc9b4b9698e931dc881cc580895c8626b71430d09eec8f7054d49c46f0": {
1691
- "title": "With Text",
1692
- "code": "<div>\n <p>Lorem ipsum dolor sit amet.</p>\n <Divider>Text</Divider>\n <p>Lorem ipsum dolor sit amet.</p>\n <Divider orientation=\"left\">Left Text</Divider>\n <p>Lorem ipsum dolor sit amet.</p>\n <Divider orientation=\"right\">Right Text</Divider>\n <p>Lorem ipsum dolor sit amet.</p>\n </div>",
1693
- "source": "stories",
1694
- "compilable": true
1695
- },
1696
- "c53ede8df4b95ea3a84f4272cdde631bf1281322de0a44bfa5d9f4ac16ed9618": {
1786
+ "c44b0833c259afe028af9e6fd0d572e5cdf883c9fe8f8701cc2f2199f6fa82a0": {
1697
1787
  "title": "Canonical usage",
1698
- "code": "import { Portal } from '@1money/components-ui';\n// or\nimport { Portal } from '@1money/components-ui/Portal';",
1788
+ "code": "import { Checkbox } from '@1money/component-ui';\n// or\nimport { Checkbox } from '@1money/component-ui/Checkbox';",
1699
1789
  "source": "canonical",
1700
1790
  "compilable": true
1701
1791
  },
1702
- "c6a83d6c798d0d40463dd843e21e8d400034b2e02b102cc4f379e4a07d4b9fe7": {
1703
- "title": "Import",
1704
- "code": "import { Slider } from '@1money/components-ui';\n// or\nimport { Slider } from '@1money/components-ui/Slider';",
1705
- "source": "readme",
1792
+ "c4dc11bc9b4b9698e931dc881cc580895c8626b71430d09eec8f7054d49c46f0": {
1793
+ "title": "With Text",
1794
+ "code": "<div>\n <p>Lorem ipsum dolor sit amet.</p>\n <Divider>Text</Divider>\n <p>Lorem ipsum dolor sit amet.</p>\n <Divider orientation=\"left\">Left Text</Divider>\n <p>Lorem ipsum dolor sit amet.</p>\n <Divider orientation=\"right\">Right Text</Divider>\n <p>Lorem ipsum dolor sit amet.</p>\n </div>",
1795
+ "source": "stories",
1706
1796
  "compilable": true
1707
1797
  },
1708
1798
  "c6c6006c18fc013fe133931a21d10e19d9263c424b639dbe5b1038884729bb32": {
@@ -1717,12 +1807,6 @@
1717
1807
  "source": "stories",
1718
1808
  "compilable": false
1719
1809
  },
1720
- "c708d9a68618a957abae65c03f9ebb38fd38b515889a38cdc4abedf031315725": {
1721
- "title": "Basic Usage",
1722
- "code": "import { Space } from '@1money/components-ui';\nimport { SPACE_ALIGN, SPACE_DIRECTION, SPACE_SIZE } from '@1money/components-ui/Space';\n\n<Space size={SPACE_SIZE.middle} align={SPACE_ALIGN.center}>\n <span>Left</span>\n <span>Right</span>\n</Space>",
1723
- "source": "readme",
1724
- "compilable": true
1725
- },
1726
1810
  "c7adce2c978836debb618dc91c44c12df9f50836e6ff9994fe3822dd48caef5a": {
1727
1811
  "title": "Nav (flat / grouped navigation)",
1728
1812
  "code": "<Nav\n items={[\n {\n key: 'group-accounts',\n label: 'Accounts',\n icon: 'wallet',\n children: [\n { key: 'checking', label: 'Checking', active: true },\n { key: 'savings', label: 'Savings' },\n ],\n },\n { key: 'settings', label: 'Settings' },\n ]}\n/>",
@@ -1735,12 +1819,24 @@
1735
1819
  "source": "stories",
1736
1820
  "compilable": false
1737
1821
  },
1738
- "c87555ab10e8a41bf2ce44d458d0c8d8df9f58151f64bb7a4c1edcec5ae0dbcd": {
1822
+ "c816f5980daf6d897749e81e8bcb52963fb9584ae3d56cc2d6d73194bb1a655a": {
1823
+ "title": "Import",
1824
+ "code": "import { Tag } from '@1money/component-ui';\n// or\nimport { Tag } from '@1money/component-ui/Tag';",
1825
+ "source": "readme",
1826
+ "compilable": true
1827
+ },
1828
+ "c8bb2acc504d9189611763df8eebcb47062fe8c1c4ae3990fe6d9495cac88285": {
1739
1829
  "title": "Canonical usage",
1740
- "code": "import { Cell } from '@1money/components-ui';\n// or\nimport { Cell } from '@1money/components-ui/Cell';",
1830
+ "code": "import { Table, VirtualTable } from '@1money/component-ui';\n// or\nimport { Table, VirtualTable } from '@1money/component-ui/Table';",
1741
1831
  "source": "canonical",
1742
1832
  "compilable": true
1743
1833
  },
1834
+ "c8d370c232d30e9b0ca6730c9b632d0a84550b0b8fe84019b58ac0de6a712d40": {
1835
+ "title": "Import",
1836
+ "code": "import { Spinner } from '@1money/component-ui';\n// or\nimport { Spinner } from '@1money/component-ui/Spinner';",
1837
+ "source": "readme",
1838
+ "compilable": true
1839
+ },
1744
1840
  "c9055581e81ec06997b903da8cf3dc5446cb9767423cb2fd80762ede31063176": {
1745
1841
  "title": "Disabled",
1746
1842
  "code": "{\n const [disabled, setDisabled] = useState(false);\n const [resizeCount, setResizeCount] = useState(0);\n\n return (\n <div>\n <div style={{ marginBottom: 12 }}>\n <label>\n <input\n type=\"checkbox\"\n checked={disabled}\n onChange={(e) => setDisabled(e.target.checked)}\n />\n {' '}Disable observer\n </label>\n <span style={{ marginLeft: 12, color: '#666' }}>\n Resize events received: {resizeCount}\n </span>\n </div>\n <ResizeObserver\n disabled={disabled}\n onResize={() => setResizeCount((c) => c + 1)}\n >\n <div style={boxStyle}>\n {disabled ? 'Observer disabled — resize events paused' : 'Resize me to trigger events'}\n </div>\n </ResizeObserver>\n </div>\n );\n }",
@@ -1759,30 +1855,24 @@
1759
1855
  "source": "stories",
1760
1856
  "compilable": true
1761
1857
  },
1762
- "cb112d23d742e359bb073b630230b53ccd7362c90ce29f033223143742f4687a": {
1763
- "title": "Canonical usage",
1764
- "code": "import { Drawer } from '@1money/components-ui';\n// or\nimport { Drawer } from '@1money/components-ui/Drawer';",
1765
- "source": "canonical",
1766
- "compilable": true
1767
- },
1768
- "cc0a911d74a5939f71b3e713aed21e4a2dd1adc41fcc547aa40a60cf82549caa": {
1769
- "title": "Import",
1770
- "code": "import { Radio, RadioGroup } from '@1money/components-ui';\n// or tree-shakeable\nimport { Radio, RadioGroup } from '@1money/components-ui/Radio';",
1771
- "source": "readme",
1772
- "compilable": true
1773
- },
1774
1858
  "ccaa3cb3e660ea38beaa59a26d94e5aa6bcd8ea3fb8449f82d28e13875c9c05e": {
1775
1859
  "title": "Group Disabled",
1776
1860
  "code": "<RadioGroup value=\"a\" disabled>\n <Radio value=\"a\" label=\"Option A\" />\n <Radio value=\"b\" label=\"Option B\" />\n <Radio value=\"c\" label=\"Option C\" />\n </RadioGroup>",
1777
1861
  "source": "stories",
1778
1862
  "compilable": true
1779
1863
  },
1780
- "ce3412158804bef977933a6f68163249822402fcf44facae20470ccfd61de718": {
1864
+ "ce159c0e7bfe1dd2cc4a5af7ae9f34a34970888e35d8d9350afa752f3b6ee2b6": {
1781
1865
  "title": "Import",
1782
- "code": "import { Calendar } from '@1money/components-ui';\n// or\nimport { Calendar } from '@1money/components-ui/Calendar';",
1866
+ "code": "import { Select } from '@1money/component-ui';\n// or\nimport { Select } from '@1money/component-ui/Select';",
1783
1867
  "source": "readme",
1784
1868
  "compilable": true
1785
1869
  },
1870
+ "ce52fe36100d5fa98b9745a1baf1b08d615fed812bf0a8c9022f4e95e68f2f13": {
1871
+ "title": "Canonical usage",
1872
+ "code": "import { Select } from '@1money/component-ui';\n// or\nimport { Select } from '@1money/component-ui/Select';",
1873
+ "source": "canonical",
1874
+ "compilable": true
1875
+ },
1786
1876
  "ce5a29cdd05e46095aa4e0495f15de25d4e29a8772e83863f793f174d89170df": {
1787
1877
  "title": "Trade",
1788
1878
  "code": "<div style={{ display: 'flex', flexDirection: 'column', gap: 32, maxWidth: 660 }}>\n <div>\n <h3 style={{ margin: '0 0 8px' }}>Default (Placeholder)</h3>\n <Input.Trade\n currencySymbol=\"$\"\n currencyUnit=\"USD\"\n showMax\n onMax={fn()}\n onSwap={fn()}\n exchangeText=\"0 USDT\"\n />\n </div>\n <div>\n <h3 style={{ margin: '0 0 8px' }}>Default (Filled)</h3>\n <Input.Trade\n currencySymbol=\"$\"\n currencyUnit=\"USD\"\n defaultValue=\"123,456,789\"\n showMax\n onMax={fn()}\n onSwap={fn()}\n exchangeText=\"123,456,789 USDT\"\n />\n </div>\n <div>\n <h3 style={{ margin: '0 0 8px' }}>Error</h3>\n <Input.Trade\n currencySymbol=\"$\"\n currencyUnit=\"USD\"\n defaultValue=\"123,456,789\"\n status=\"error\"\n showMax\n onMax={fn()}\n onSwap={fn()}\n exchangeText=\"123,456,789 USDT\"\n feedback=\"Insufficient balance\"\n />\n </div>\n <div>\n <h3 style={{ margin: '0 0 8px' }}>Disabled</h3>\n <Input.Trade\n currencySymbol=\"$\"\n currencyUnit=\"USD\"\n defaultValue=\"123,456,789\"\n disabled\n showMax\n onSwap={fn()}\n exchangeText=\"123,456,789 USDT\"\n />\n </div>\n </div>",
@@ -1801,6 +1891,12 @@
1801
1891
  "source": "stories",
1802
1892
  "compilable": false
1803
1893
  },
1894
+ "d073f561eaa33f59872ba1277c04ad853f99cb24d2f6e75ac36d0c33e12a9d40": {
1895
+ "title": "Import",
1896
+ "code": "import { VirtualList } from '@1money/component-ui';\n// or\nimport { VirtualList } from '@1money/component-ui/VirtualList';",
1897
+ "source": "readme",
1898
+ "compilable": true
1899
+ },
1804
1900
  "d17ae919d30d1b43236c52018609c72e725c0e22e47938fa2bed04cae70b2542": {
1805
1901
  "title": "Usage",
1806
1902
  "code": "<Tag label=\"Active\" color=\"success\" />\n<Tag label=\"Warning\" color=\"warning\" icon=\"add\" removable onRemove={() => {}} />\n<Tag label=\"Medium\" size=\"medium\" color=\"recommended\" />\n<Tag label=\"Small\" size=\"small\" color=\"negative\" />",
@@ -1813,54 +1909,24 @@
1813
1909
  "source": "stories",
1814
1910
  "compilable": false
1815
1911
  },
1816
- "d2d7be30524d06f99a66b1ee9375fa33501fcff7421d697bce934b4c6a79e4c1": {
1817
- "title": "Canonical usage",
1818
- "code": "import { Dropdown } from '@1money/components-ui';\n// or\nimport { Dropdown } from '@1money/components-ui/Dropdown';",
1819
- "source": "canonical",
1820
- "compilable": true
1821
- },
1822
- "d2edd9eacbc07e5e229da3827b202d5da1fe8f4ca569e59c8162ce3927cbf36e": {
1823
- "title": "Import",
1824
- "code": "import { Input } from '@1money/components-ui';\n// or\nimport { Input } from '@1money/components-ui/Input';",
1825
- "source": "readme",
1826
- "compilable": true
1827
- },
1828
1912
  "d41dbb44d3d8769c1d0adb9e207bae7aeb9410730ab9e50b3897b5913c110ee7": {
1829
1913
  "title": "Field Dependencies",
1830
1914
  "code": "<ProForm\n {...args}\n initialValues={{ country: '', city: '' }}\n onFinish={(values) => alert(JSON.stringify(values, null, 2))}\n >\n <ProFormSelect\n name=\"country\"\n label=\"Country\"\n valueEnum={{ us: 'United States', cn: 'China', jp: 'Japan' }}\n />\n <ProFormSelect\n name=\"city\"\n label=\"City (auto-loads based on Country)\"\n dependencies={['country']}\n request={async (params) => {\n await new Promise((r) => setTimeout(r, 500));\n const cities: Record<string, Array<{ label: string; value: string }>> = {\n us: [{ label: 'New York', value: 'ny' }, { label: 'Los Angeles', value: 'la' }],\n cn: [{ label: 'Beijing', value: 'bj' }, { label: 'Shanghai', value: 'sh' }],\n jp: [{ label: 'Tokyo', value: 'tk' }, { label: 'Osaka', value: 'os' }],\n };\n return cities[params?.country as string] ?? [];\n }}\n />\n </ProForm>",
1831
1915
  "source": "stories",
1832
1916
  "compilable": false
1833
1917
  },
1834
- "d48d8676eb8b36a6ebc4a499db4fc5db1f7cad9d843dab155bcc0e51ae112dd7": {
1918
+ "d85ceae6b6d298d1080aa6deb8853caf2818436e1ea75064e79bc43b28cc3223": {
1835
1919
  "title": "Import",
1836
- "code": "import { Empty } from '@1money/components-ui';\n// or\nimport { Empty } from '@1money/components-ui/Empty';",
1920
+ "code": "import { ResizeObserver, useResizeObserver } from '@1money/component-ui';\n// or\nimport { ResizeObserver, Collection, useResizeObserver } from '@1money/component-ui/ResizeObserver';",
1837
1921
  "source": "readme",
1838
1922
  "compilable": true
1839
1923
  },
1840
- "d7d5f601f2bc6d68fdd1f9092792a1ead79d09392794c0de5c6a6f08ae2fcd2b": {
1841
- "title": "Canonical usage",
1842
- "code": "import { ResizeObserver, useResizeObserver } from '@1money/components-ui';\n// or\nimport { ResizeObserver, useResizeObserver } from '@1money/components-ui/ResizeObserver';",
1843
- "source": "canonical",
1844
- "compilable": true
1845
- },
1846
- "d8541ce54f9d19430978dbd976d464fbc05c5ff5c9d4b33b03a2e25d6b11992c": {
1847
- "title": "Canonical usage",
1848
- "code": "import { Button } from '@1money/components-ui';\n// or\nimport { Button } from '@1money/components-ui/Button';",
1849
- "source": "canonical",
1850
- "compilable": true
1851
- },
1852
1924
  "d91c28bb6a118b26bb8a54276fb59ec8a840474d47297b0ab6537c738cb98876": {
1853
1925
  "title": "Canonical usage",
1854
1926
  "code": "import type { PopconfirmTrigger } from '@1money/component-ui';",
1855
1927
  "source": "canonical",
1856
1928
  "compilable": true
1857
1929
  },
1858
- "d928a76793b3297d721487249b48aafd40ba72f0698c1706a33e4291c542d9ba": {
1859
- "title": "Canonical usage",
1860
- "code": "import { Step } from '@1money/components-ui';\n// or\nimport { Step } from '@1money/components-ui/Step';",
1861
- "source": "canonical",
1862
- "compilable": true
1863
- },
1864
1930
  "d9882ee38a2bc32f9e2590509a569226bc8b174cfe3c16f5a1bdfbbc7662bf62": {
1865
1931
  "title": "Placement",
1866
1932
  "code": "{\n const [open, setOpen] = useState(false);\n const [placement, setPlacement] = useState<DrawerPlacement>('right');\n\n const openDrawer = (p: DrawerPlacement) => {\n setPlacement(p);\n setOpen(true);\n };\n\n return (\n <div style={{ display: 'flex', gap: 8 }}>\n <Button onClick={() => openDrawer('top')}>Top</Button>\n <Button onClick={() => openDrawer('right')}>Right</Button>\n <Button onClick={() => openDrawer('bottom')}>Bottom</Button>\n <Button onClick={() => openDrawer('left')}>Left</Button>\n <Drawer\n open={open}\n placement={placement}\n title={`${placement} drawer`}\n onClose={() => setOpen(false)}\n width={360}\n height={300}\n >\n <p>Drawer slides in from the {placement}.</p>\n </Drawer>\n </div>\n );\n }",
@@ -1897,12 +1963,6 @@
1897
1963
  "source": "stories",
1898
1964
  "compilable": true
1899
1965
  },
1900
- "dba235303ebe08452940ff868113324fc00c1a8ed5461ca69aaf6113382b9f6b": {
1901
- "title": "Canonical usage",
1902
- "code": "import { Pagination, usePagination } from '@1money/components-ui';\n// or\nimport { Pagination, usePagination } from '@1money/components-ui/Pagination';",
1903
- "source": "canonical",
1904
- "compilable": true
1905
- },
1906
1966
  "dbdf57d8d45ba16d7872023c8baa1986123e9011100cd6332a0023a7d8d2a832": {
1907
1967
  "title": "All Variants",
1908
1968
  "code": "<div style={columnStyle}>\n {BUTTON_SIZES.map((size) => (\n <div key={size}>\n <h3 style={sectionHeaderStyle}>{size}</h3>\n <div style={rowStyle}>\n {BUTTON_COLORS.map((color) => (\n <Button {...args} key={`${size}-${color}`} size={size} color={color}>\n {color}\n </Button>\n ))}\n </div>\n <div style={{ ...rowStyle, marginTop: 8 }}>\n {BUTTON_COLORS.map((color) => (\n <Button {...args} key={`${size}-${color}-disabled`} size={size} color={color} disabled>\n {color}\n </Button>\n ))}\n </div>\n <div style={{ ...rowStyle, marginTop: 8 }}>\n {BUTTON_COLORS.map((color) => (\n <Button {...args} key={`${size}-${color}-loading`} size={size} color={color} loading>\n {color}\n </Button>\n ))}\n </div>\n </div>\n ))}\n </div>",
@@ -1921,22 +1981,16 @@
1921
1981
  "source": "stories",
1922
1982
  "compilable": false
1923
1983
  },
1924
- "dd0dc5a0741ff7e4495ca9fb3eb3072f77d4f1b84be6af9dda1675475566cbcf": {
1925
- "title": "Render Props",
1926
- "code": "{\n const [size, setSize] = useState<SizeInfo | null>(null);\n\n return (\n <div>\n <p style={{ marginBottom: 8, color: '#666' }}>\n Using render-props pattern for ref forwarding:\n </p>\n <ResizeObserver onResize={(sizeInfo) => setSize(sizeInfo)}>\n {(ref) => (\n <div ref={ref as React.RefObject<HTMLDivElement>} style={boxStyle}>\n Render-props child\n {size && (\n <div style={{ fontSize: 12, color: '#999', marginTop: 8 }}>\n {size.width} × {size.height}\n </div>\n )}\n </div>\n )}\n </ResizeObserver>\n </div>\n );\n }",
1927
- "source": "stories",
1928
- "compilable": true
1929
- },
1930
- "dd93657d7534b2334888be68dade1a1eb682df7f98475406bbe3c8f36ca64ba0": {
1984
+ "dc46329177b98e36ae4cf9980b57021028eb5648f1e6420be16ea3d209de6d10": {
1931
1985
  "title": "Import",
1932
- "code": "import { Select } from '@1money/components-ui';\n// or\nimport { Select } from '@1money/components-ui/Select';",
1986
+ "code": "import { Accordion } from '@1money/component-ui';\n// or\nimport { Accordion } from '@1money/component-ui/Accordion';",
1933
1987
  "source": "readme",
1934
1988
  "compilable": true
1935
1989
  },
1936
- "dda0f285741a298f3e8cd24f768a9faf10789e206854eb6555fc79970dcb9c2d": {
1937
- "title": "Import",
1938
- "code": "import { Tabs } from '@1money/components-ui';\n// or\nimport { Tabs } from '@1money/components-ui/Tabs';",
1939
- "source": "readme",
1990
+ "dd0dc5a0741ff7e4495ca9fb3eb3072f77d4f1b84be6af9dda1675475566cbcf": {
1991
+ "title": "Render Props",
1992
+ "code": "{\n const [size, setSize] = useState<SizeInfo | null>(null);\n\n return (\n <div>\n <p style={{ marginBottom: 8, color: '#666' }}>\n Using render-props pattern for ref forwarding:\n </p>\n <ResizeObserver onResize={(sizeInfo) => setSize(sizeInfo)}>\n {(ref) => (\n <div ref={ref as React.RefObject<HTMLDivElement>} style={boxStyle}>\n Render-props child\n {size && (\n <div style={{ fontSize: 12, color: '#999', marginTop: 8 }}>\n {size.width} × {size.height}\n </div>\n )}\n </div>\n )}\n </ResizeObserver>\n </div>\n );\n }",
1993
+ "source": "stories",
1940
1994
  "compilable": true
1941
1995
  },
1942
1996
  "ddba2f9ed531e8d41eb802983744dee6f9a543308278efec1b7cbab638caf0e5": {
@@ -1969,6 +2023,12 @@
1969
2023
  "source": "stories",
1970
2024
  "compilable": true
1971
2025
  },
2026
+ "df33210419a98aec37dfae90fbea2a1d1a5b7daf39ed1b4eee00184821d2f944": {
2027
+ "title": "Import",
2028
+ "code": "import { Space } from '@1money/component-ui';\n// or\nimport { Space } from '@1money/component-ui/Space';\nimport { SPACE_ALIGN, SPACE_DIRECTION, SPACE_SIZE } from '@1money/component-ui/Space';",
2029
+ "source": "readme",
2030
+ "compilable": true
2031
+ },
1972
2032
  "df516870a4f3b627969e2e1b0c6fc40fccc4ccb0fb7c04a34e5e169a928de479": {
1973
2033
  "title": "Usage",
1974
2034
  "code": "<Cell iconStart=\"security\" iconEnd=\"arrowRight\" active>\n Authenticator app\n</Cell>",
@@ -1981,30 +2041,6 @@
1981
2041
  "source": "stories",
1982
2042
  "compilable": false
1983
2043
  },
1984
- "e12204d81d25fedea606df0af41590ad6f951ad6a9c87fbb04b46d113a83c01c": {
1985
- "title": "Canonical usage",
1986
- "code": "import { Dialog } from '@1money/components-ui';\n// or\nimport { Dialog } from '@1money/components-ui/Dialog';",
1987
- "source": "canonical",
1988
- "compilable": true
1989
- },
1990
- "e1bc6906c5f00092c88e4e750bb2591d4397c214fe2ba32646792273d03f9942": {
1991
- "title": "Canonical usage",
1992
- "code": "<IconHover />",
1993
- "source": "canonical",
1994
- "compilable": true
1995
- },
1996
- "e26c609980f32c5d66ccd1ee1a5d53d3cf09e63f85e94f7adf9acc57bfdc7276": {
1997
- "title": "Canonical usage",
1998
- "code": "import { Navigation, Nav } from '@1money/components-ui';\n// or\nimport { Navigation, Nav } from '@1money/components-ui/Navigation';",
1999
- "source": "canonical",
2000
- "compilable": true
2001
- },
2002
- "e2d97535c3a577c0c337fa59b2a6832e6337e4a07486d72339fb65ecb4899382": {
2003
- "title": "Import",
2004
- "code": "import { Checkbox } from '@1money/components-ui';\n// or\nimport { Checkbox } from '@1money/components-ui/Checkbox';",
2005
- "source": "readme",
2006
- "compilable": true
2007
- },
2008
2044
  "e3b3197749176ad9a73173f5d1928f15b52b030d41a28e61ef40deaabbc9a554": {
2009
2045
  "title": "Usage",
2010
2046
  "code": "<Step\n items={[\n { key: 'start', title: 'Start', description: 'Create the request', status: 'completed' },\n { key: 'review', title: 'Review', tag: { label: 'Pending' } },\n { key: 'done', title: 'Complete' },\n ]}\n/>",
@@ -2017,6 +2053,12 @@
2017
2053
  "source": "readme",
2018
2054
  "compilable": true
2019
2055
  },
2056
+ "e4c665e871b8546f38972172c483114d1eef73a4fc2b83e6ad929d359c408796": {
2057
+ "title": "Allow Deselect",
2058
+ "code": "{\n const [value, setValue] = useState<string | number | undefined>('btc');\n\n return (\n <Select\n {...args}\n allowDeselect\n value={value}\n onChange={(nextValue, option) => {\n setValue(nextValue as string | number | undefined);\n args.onChange?.(nextValue, option);\n }}\n />\n );\n }",
2059
+ "source": "stories",
2060
+ "compilable": false
2061
+ },
2020
2062
  "e57037f057f4da5ac90baae9ad1d85153cb48c9cfff34a65cbe2a927bf5cb713": {
2021
2063
  "title": "Usage",
2022
2064
  "code": "<Dialog\n open={open}\n title=\"Confirm transfer\"\n onCancel={() => setOpen(false)}\n onOk={handleSubmit}\n/>",
@@ -2029,12 +2071,6 @@
2029
2071
  "source": "stories",
2030
2072
  "compilable": false
2031
2073
  },
2032
- "e5c65a663400bac3c3f390e36b09d4a78425de95dde7cad603a185c1cc30f68c": {
2033
- "title": "Import",
2034
- "code": "import { Grid, Row, Col } from '@1money/components-ui';\n// or\nimport { Grid, Row, Col } from '@1money/components-ui/Grid';\nimport { GRID_ALIGN, GRID_JUSTIFY } from '@1money/components-ui/Grid';",
2035
- "source": "readme",
2036
- "compilable": true
2037
- },
2038
2074
  "e64bbef33f26f6cb756b2904ed6134a86633064c76641e65a06e65ed9fafa302": {
2039
2075
  "title": "All Placements",
2040
2076
  "code": "<div style={{ display: 'grid', gridTemplateColumns: '1fr 1fr', gap: 80, padding: 60 }}>\n {PLACEMENTS.map((p: CoachMarkPlacement) => (\n <div key={p} style={{ display: 'flex', justifyContent: 'center' }}>\n <CoachMark\n steps={[\n { icon: <span style={{ fontSize: 24 }}>👋</span>, heading: 'Welcome', body: 'Get started with the dashboard.' },\n { icon: <span style={{ fontSize: 24 }}>🔍</span>, heading: 'Search', body: 'Find anything quickly.' },\n { icon: <span style={{ fontSize: 24 }}>💳</span>, heading: 'Balance', body: 'Track all accounts.' },\n ]}\n placement={p}\n />\n </div>\n ))}\n </div>",
@@ -2053,12 +2089,6 @@
2053
2089
  "source": "stories",
2054
2090
  "compilable": false
2055
2091
  },
2056
- "e8366ffc0f016219e2e3c8525fc51ad1e6b761782aa7021fb8a40588988b1bb9": {
2057
- "title": "Canonical usage",
2058
- "code": "import { Radio, RadioGroup } from '@1money/components-ui';\n// or tree-shakeable\nimport { Radio, RadioGroup } from '@1money/components-ui/Radio';",
2059
- "source": "canonical",
2060
- "compilable": true
2061
- },
2062
2092
  "e95a0d0355599d90e5a8f3e2157c5f59f2ee97f9c77cde6b856ca73e439ba89d": {
2063
2093
  "title": "Usage",
2064
2094
  "code": "<ProForm\n initialValues={{ name: '' }}\n onFinish={(values) => console.log(values)}\n>\n <ProForm.Text\n name=\"name\"\n label=\"Name\"\n rules={[{ required: true, message: 'Name is required' }]}\n />\n <ProForm.Select\n name=\"currency\"\n label=\"Currency\"\n fieldProps={{ options: [{ label: 'USD', value: 'USD' }] }}\n />\n</ProForm>",
@@ -2071,12 +2101,24 @@
2071
2101
  "source": "stories",
2072
2102
  "compilable": false
2073
2103
  },
2104
+ "eb3d3bf8608e5ec527f4380b65309d405f31c3dc1995dc7128a95973cdb71495": {
2105
+ "title": "Import",
2106
+ "code": "import { Tabs } from '@1money/component-ui';\n// or\nimport { Tabs } from '@1money/component-ui/Tabs';",
2107
+ "source": "readme",
2108
+ "compilable": true
2109
+ },
2074
2110
  "eb427461f9033ecdecd7f9fbecd2c65d93d6a9f081ee8af32cd9665d94095ec9": {
2075
2111
  "title": "Semantic Scale",
2076
2112
  "code": "<div style={STORY_LAYOUT_STYLE}>\n <div style={STORY_SECTION_STYLE}>\n {TYPOGRAPHY_DISPLAY_SIZES.map(size => (\n <Typography.Display key={size} size={size}>\n Display {size}\n </Typography.Display>\n ))}\n </div>\n\n <div style={STORY_SECTION_STYLE}>\n {TYPOGRAPHY_HEADLINE_SIZES.map(size => (\n <Typography.Headline key={size} size={size}>\n Headline {size}\n </Typography.Headline>\n ))}\n </div>\n\n <div style={STORY_SECTION_STYLE}>\n {TYPOGRAPHY_TITLE_SIZES.map(size => (\n <Typography.Title key={size} size={size}>\n Title {size}\n </Typography.Title>\n ))}\n </div>\n\n <div style={STORY_SECTION_STYLE}>\n {TYPOGRAPHY_BODY_SIZES.map(size => (\n <Typography.Body key={size} size={size}>\n Body {size} brings readable, content-first copy into forms, lists, and dense product surfaces.\n </Typography.Body>\n ))}\n </div>\n\n <div style={STORY_SECTION_STYLE}>\n {TYPOGRAPHY_LABEL_SIZES.map(size => (\n <Typography.Label key={size} size={size}>\n Label {size}\n </Typography.Label>\n ))}\n </div>\n\n <div style={STORY_SECTION_STYLE}>\n {TYPOGRAPHY_LINK_SIZES.map(size => (\n <Typography.Link key={size} size={size} href=\"https://ant.design/components/typography/\" target=\"_blank\">\n Link {size}\n </Typography.Link>\n ))}\n </div>\n </div>",
2077
2113
  "source": "stories",
2078
2114
  "compilable": true
2079
2115
  },
2116
+ "eb82f96d176ca1891ecf083e5f43c42256d422f023133b2171ab354f12705fdd": {
2117
+ "title": "Usage",
2118
+ "code": "import { Button } from '@1money/component-ui';\n\n<Drawer\n open={open}\n title=\"Transfer details\"\n placement=\"right\"\n onClose={() => setOpen(false)}\n footer={<Button onClick={() => setOpen(false)}>Done</Button>}\n>\n Drawer content\n</Drawer>",
2119
+ "source": "readme",
2120
+ "compilable": true
2121
+ },
2080
2122
  "ed5aa33f8e734dad460aa9b2a7c6fc0690efc9cda3b0854c642d59b2bbf55870": {
2081
2123
  "title": "Illustrations",
2082
2124
  "code": "{\n const handleCopy = (el: string) => {\n copy(el);\n };\n\n return <div style={{ display: 'grid', gap: 24, gridTemplateColumns: 'repeat(auto-fill, minmax(200px, 1fr))' }}>\n <CopyIconBox onClick={() => handleCopy(\"<Icons name='illusChecked' />\")}>\n <Icons {...args} name='illusChecked' />\n <span>illusChecked</span>\n </CopyIconBox>\n <CopyIconBox onClick={() => handleCopy(\"<Icons name='illusEmailError' />\")}>\n <Icons {...args} name='illusEmailError' />\n <span>illusEmailError</span>\n </CopyIconBox>\n <CopyIconBox onClick={() => handleCopy(\"<Icons name='illusLinkExpired' />\")}>\n <Icons {...args} name='illusLinkExpired' />\n <span>illusLinkExpired</span>\n </CopyIconBox>\n <CopyIconBox onClick={() => handleCopy(\"<Icons name='illus2FA' />\")}>\n <Icons {...args} name='illus2FA' />\n <span>illus2FA</span>\n </CopyIconBox>\n <CopyIconBox onClick={() => handleCopy(\"<Icons name='illusLocked' />\")}>\n <Icons {...args} name='illusLocked' />\n <span>illusLocked</span>\n </CopyIconBox>\n <CopyIconBox onClick={() => handleCopy(\"<Icons name='illusError' />\")}>\n <Icons {...args} name='illusError' />\n <span>illusError</span>\n </CopyIconBox>\n <CopyIconBox onClick={() => handleCopy(\"<Icons name='illusRegionNotSupported' />\")}>\n <Icons {...args} name='illusRegionNotSupported' />\n <span>illusRegionNotSupported</span>\n </CopyIconBox>\n <CopyIconBox onClick={() => handleCopy(\"<Icons name='illusID' />\")}>\n <Icons {...args} name='illusID' />\n <span>illusID</span>\n </CopyIconBox>\n <CopyIconBox onClick={() => handleCopy(\"<Icons name='illusVerification' />\")}>\n <Icons {...args} name='illusVerification' />\n <span>illusVerification</span>\n </CopyIconBox>\n <CopyIconBox onClick={() => handleCopy(\"<Icons name='illusPending' />\")}>\n <Icons {...args} name='illusPending' color='#F4C600' />\n <span>illusPending</span>\n </CopyIconBox>\n <CopyIconBox onClick={() => handleCopy(\"<Icons name='illusPasskey' />\")}>\n <Icons {...args} name='illusPasskey' />\n <span>illusPasskey</span>\n </CopyIconBox>\n <CopyIconBox onClick={() => handleCopy(\"<Icons name='illusAddAccount' />\")}>\n <Icons {...args} name='illusAddAccount' />\n <span>illusAddAccount</span>\n </CopyIconBox>\n <CopyIconBox onClick={() => handleCopy(\"<Icons name='illusRewards' />\")}>\n <Icons {...args} name='illusRewards' />\n <span>illusRewards</span>\n </CopyIconBox>\n </div>;\n }",
@@ -2095,12 +2137,6 @@
2095
2137
  "source": "stories",
2096
2138
  "compilable": false
2097
2139
  },
2098
- "ef6129271a1cc811da6f293b9cb03f5514e410a9c60c0abec3e045e6376745b1": {
2099
- "title": "Canonical usage",
2100
- "code": "import { Empty } from '@1money/components-ui';\n// or\nimport { Empty } from '@1money/components-ui/Empty';",
2101
- "source": "canonical",
2102
- "compilable": true
2103
- },
2104
2140
  "efb94a978c87bf9343e9605b358b08efa2db1f476e21029ee2bda3da4f275448": {
2105
2141
  "title": "Api Examples",
2106
2142
  "code": "<div style={DEMO_SECTION_STYLE}>\n <Flex\n gap={GAP_MIDDLE}\n align={FLEX_ALIGN.center}\n justify={FLEX_JUSTIFY.spaceBetween}\n wrap={WRAP_DISABLED}\n prefixCls={FLEX_PREFIX}\n >\n <div style={DEMO_BOX_STYLE}>Align</div>\n <div style={DEMO_BOX_STYLE}>Justify</div>\n </Flex>\n\n <Flex vertical gap={GAP_LARGE} wrap={WRAP_ENABLED} prefixCls={FLEX_PREFIX}>\n <div style={DEMO_BOX_STYLE}>Vertical</div>\n <div style={DEMO_BOX_STYLE}>Wrap</div>\n </Flex>\n </div>",
@@ -2161,12 +2197,6 @@
2161
2197
  "source": "readme",
2162
2198
  "compilable": true
2163
2199
  },
2164
- "f5d6b11a550669747fb5a248be92fdbc1d02dc42ab2c8700fe44d9e09c3989ae": {
2165
- "title": "Import",
2166
- "code": "import { Divider } from '@1money/components-ui';",
2167
- "source": "readme",
2168
- "compilable": true
2169
- },
2170
2200
  "f5e88271260df2b0e8df1a0b03d96a4c3004f14d0e5aaec8892007d6c41fddb4": {
2171
2201
  "title": "With Disabled",
2172
2202
  "code": "<Tabs\n items={[\n { key: 'tab1', label: 'Overview' },\n { key: 'tab2', label: 'Transactions' },\n { key: 'tab3', label: 'Analytics', disabled: true },\n { key: 'tab4', label: 'Settings' },\n ]}\n />",
@@ -2185,21 +2215,33 @@
2185
2215
  "source": "stories",
2186
2216
  "compilable": false
2187
2217
  },
2188
- "f7c2c0a63e93844f526a49d62cfd4f5ced951213730b19e88cb69c559c39a367": {
2189
- "title": "Import",
2190
- "code": "import { Step } from '@1money/components-ui';\n// or\nimport { Step } from '@1money/components-ui/Step';",
2191
- "source": "readme",
2192
- "compilable": true
2193
- },
2194
2218
  "f7f96c74f982e37eb075e6bd5affd0bbcf3d63faca5bb60a1175fe7725dad87b": {
2195
2219
  "title": "Multiple Files",
2196
2220
  "code": "<Upload\n label=\"Label\"\n description=\"Description\"\n feedback=\"Feedback\"\n >\n <UploadFileBar fileName=\"File name.PDF\" onRemove={fn()} />\n <UploadFileBar fileName=\"File name.PDF\" onRemove={fn()} />\n <UploadFileBar\n fileName=\"File name.PDF\"\n status={1}\n message=\"Upload failed\"\n onRemove={fn()}\n />\n </Upload>",
2197
2221
  "source": "stories",
2198
2222
  "compilable": false
2199
2223
  },
2200
- "faa015d00f4f1ec9d43a4988251943c30d43285aadf14ee9d2c82d7fa4b0024f": {
2224
+ "f846e6658290862cc4216f55f8c33505bd1c923167b1dd68d217b0166bca6aad": {
2225
+ "title": "Canonical usage",
2226
+ "code": "import { Upload, UploadFileBar } from '@1money/component-ui';\n// or\nimport { Upload, UploadFileBar } from '@1money/component-ui/Upload';",
2227
+ "source": "canonical",
2228
+ "compilable": true
2229
+ },
2230
+ "f9a556c6bb441f9b96d63aaf12ad63145cdbe9193c743d5e921ef1ec53fc8224": {
2231
+ "title": "Canonical usage",
2232
+ "code": "import { Segment } from '@1money/component-ui';\n// or\nimport { Segment } from '@1money/component-ui/Segment';",
2233
+ "source": "canonical",
2234
+ "compilable": true
2235
+ },
2236
+ "fae5c24c6bab10e5462b6f5a8c5ca33714a0b121dc2cf3c44ca989ff33b3d36c": {
2237
+ "title": "Import",
2238
+ "code": "import { Pagination, usePagination } from '@1money/component-ui';\n// or\nimport { Pagination, usePagination } from '@1money/component-ui/Pagination';",
2239
+ "source": "readme",
2240
+ "compilable": true
2241
+ },
2242
+ "fbd27b2c45cf77922ee28f98299af2815b390ade86f902db573d0f520dcc2eb6": {
2201
2243
  "title": "Import",
2202
- "code": "import { Dialog } from '@1money/components-ui';\n// or\nimport { Dialog } from '@1money/components-ui/Dialog';",
2244
+ "code": "import { Skeleton } from '@1money/component-ui';\n// or\nimport { Skeleton } from '@1money/component-ui/Skeleton';",
2203
2245
  "source": "readme",
2204
2246
  "compilable": true
2205
2247
  },
@@ -2209,18 +2251,18 @@
2209
2251
  "source": "stories",
2210
2252
  "compilable": false
2211
2253
  },
2212
- "fc9a7422a1bd65a99442277ecc3a078de35b6d7347c17ebe9cd83cdf379e54a7": {
2213
- "title": "Usage",
2214
- "code": "const steps = [\n {\n icon: <Icons name=\"dashboard\" size={24} />,\n heading: 'Welcome to Dashboard',\n body: 'Here you can see an overview of your finances.',\n },\n {\n heading: 'Track Your Spending',\n body: 'Use the charts to monitor transactions by category.',\n },\n {\n heading: \"You're all set!\",\n body: 'Explore the rest of the app at your own pace.',\n },\n];\n\n<CoachMark\n steps={steps}\n defaultActiveStep={0}\n placement=\"top\"\n onFinish={() => console.log('Tour complete')}\n onDismiss={() => console.log('Tour dismissed')}\n/>",
2215
- "source": "readme",
2216
- "compilable": true
2217
- },
2218
2254
  "fca476fdc8a8454562178330e2ef42b7cb756bb782574109179b48b0b5f2dfcb": {
2219
2255
  "title": "Plain",
2220
2256
  "code": "<div>\n <p>Lorem ipsum dolor sit amet.</p>\n <Divider plain>Text</Divider>\n <p>Lorem ipsum dolor sit amet.</p>\n </div>",
2221
2257
  "source": "stories",
2222
2258
  "compilable": true
2223
2259
  },
2260
+ "fca8a95a331c2fbb0cd85959d30ecafff517a78cf35c1389a810dcaa08d6e5e6": {
2261
+ "title": "Usage",
2262
+ "code": "import { Button } from '@1money/component-ui';\n\nfunction MyCustomIcon() {\n return <span aria-hidden=\"true\">No data</span>;\n}\n\n// Basic usage with icon name\n<Empty\n icon=\"transactions\"\n title=\"No record found\"\n description=\"Try adjusting your filters to find the record you are looking for\"\n/>\n\n// With custom icon component\n<Empty\n icon={<MyCustomIcon />}\n description=\"No data available\"\n/>\n\n// With action button\n<Empty\n variant=\"stroke\"\n icon=\"bank\"\n description=\"You don't have any bank accounts linked\"\n action={<Button>Add new bank account</Button>}\n/>",
2263
+ "source": "readme",
2264
+ "compilable": true
2265
+ },
2224
2266
  "fcf58f34ec54a1feebe1b6bcd494ced5bc067fe18fe4faea458801a538a151fb": {
2225
2267
  "title": "Grid Responsive",
2226
2268
  "code": "<ProForm\n {...args}\n grid\n rowProps={{ gutter: 16 }}\n initialValues={{}}\n onFinish={(values) => alert(JSON.stringify(values, null, 2))}\n >\n <ProFormText\n name=\"firstName\"\n label=\"First Name\"\n colProps={{ span: 12, sm: 12, md: 8, lg: 6 }}\n />\n <ProFormText\n name=\"lastName\"\n label=\"Last Name\"\n colProps={{ span: 12, sm: 12, md: 8, lg: 6 }}\n />\n <ProFormText\n name=\"email\"\n label=\"Email\"\n colProps={{ span: 24, sm: 24, md: 8, lg: 6 }}\n />\n <ProFormText\n name=\"phone\"\n label=\"Phone\"\n colProps={{ span: 24, sm: 12, md: 12, lg: 6 }}\n />\n <ProFormTextArea\n name=\"address\"\n label=\"Address\"\n colProps={{ span: 24 }}\n />\n </ProForm>",
@@ -2233,35 +2275,23 @@
2233
2275
  "source": "stories",
2234
2276
  "compilable": true
2235
2277
  },
2236
- "fdf213199dc6788118e3f64a9156e33557e5611b1ca721d8b7c388245959d211": {
2237
- "title": "Import",
2238
- "code": "import { Button } from '@1money/components-ui';\n// or\nimport { Button } from '@1money/components-ui/Button';",
2239
- "source": "readme",
2240
- "compilable": true
2278
+ "feb0c04288ce976b2a2dd118a352d0c9501645b51a4f529bf1cb1d9057ef34f1": {
2279
+ "title": "Radio Group Story",
2280
+ "code": "<ProForm\n {...args}\n initialValues={{ gender: 'male', plan: 'pro' }}\n onFinish={(values) => alert(JSON.stringify(values, null, 2))}\n >\n <ProFormRadioGroup\n name=\"gender\"\n label=\"Gender\"\n fieldProps={{\n options: [\n { label: 'Male', value: 'male' },\n { label: 'Female', value: 'female' },\n { label: 'Other', value: 'other' },\n ],\n }}\n />\n <ProFormRadioGroup\n name=\"plan\"\n label=\"Plan\"\n fieldProps={{\n direction: 'horizontal',\n options: [\n { label: 'Free', value: 'free' },\n { label: 'Pro', value: 'pro' },\n { label: 'Enterprise', value: 'enterprise' },\n ],\n }}\n />\n </ProForm>",
2281
+ "source": "stories",
2282
+ "compilable": false
2241
2283
  },
2242
- "fe70357422313c2126f48b89c098c85159c4543c5ef3739330d48f86d8d0a509": {
2284
+ "ff016409af028ad3a47644d56cb21acf445cb72e1c93de742fd656a520f41c9c": {
2243
2285
  "title": "Canonical usage",
2244
- "code": "import { Accordion } from '@1money/components-ui';\n// or\nimport { Accordion } from '@1money/components-ui/Accordion';",
2286
+ "code": "import { notification } from '@1money/component-ui';\n// or\nimport notification, {\n NOTIFICATION_PLACEMENTS,\n NOTIFICATION_STATUSES,\n} from '@1money/component-ui/Notification';",
2245
2287
  "source": "canonical",
2246
2288
  "compilable": true
2247
2289
  },
2248
- "fe9b007dfbadb99c5e9b23715cac072ae441727d20418766456554881470ea68": {
2290
+ "ff98ca6743d554b1f351e0d27e1a16a5bb7fb293ec5d30d1fe4f7e8a374f8e3f": {
2249
2291
  "title": "Canonical usage",
2250
- "code": "import { Calendar } from '@1money/components-ui';\n// or\nimport { Calendar } from '@1money/components-ui/Calendar';",
2292
+ "code": "import { Tour } from '@1money/component-ui';\n// or\nimport { Tour } from '@1money/component-ui/Tour';",
2251
2293
  "source": "canonical",
2252
2294
  "compilable": true
2253
- },
2254
- "feb0c04288ce976b2a2dd118a352d0c9501645b51a4f529bf1cb1d9057ef34f1": {
2255
- "title": "Radio Group Story",
2256
- "code": "<ProForm\n {...args}\n initialValues={{ gender: 'male', plan: 'pro' }}\n onFinish={(values) => alert(JSON.stringify(values, null, 2))}\n >\n <ProFormRadioGroup\n name=\"gender\"\n label=\"Gender\"\n fieldProps={{\n options: [\n { label: 'Male', value: 'male' },\n { label: 'Female', value: 'female' },\n { label: 'Other', value: 'other' },\n ],\n }}\n />\n <ProFormRadioGroup\n name=\"plan\"\n label=\"Plan\"\n fieldProps={{\n direction: 'horizontal',\n options: [\n { label: 'Free', value: 'free' },\n { label: 'Pro', value: 'pro' },\n { label: 'Enterprise', value: 'enterprise' },\n ],\n }}\n />\n </ProForm>",
2257
- "source": "stories",
2258
- "compilable": false
2259
- },
2260
- "ffcdb76bb3216c346fc3ce624448bb8e51a3677f3fd96c8ed18c264f52ed6e31": {
2261
- "title": "Import",
2262
- "code": "import { Dropdown } from '@1money/components-ui';\n// or\nimport { Dropdown } from '@1money/components-ui/Dropdown';",
2263
- "source": "readme",
2264
- "compilable": true
2265
2295
  }
2266
2296
  }
2267
2297
  }