@1money/component-ui 0.0.80 → 0.0.81

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 (53) hide show
  1. package/es/business/Filter/Account/Account.js +2 -2
  2. package/es/business/Filter/Account/interface.d.ts +3 -2
  3. package/es/business/Filter/Asset/Asset.js +2 -2
  4. package/es/business/Filter/Asset/interface.d.ts +3 -2
  5. package/es/business/Filter/DateRange/DateRange.js +4 -5
  6. package/es/business/Filter/DateRange/style/DateRange.css +0 -5
  7. package/es/business/Filter/Option/Option.js +2 -2
  8. package/es/business/Filter/Option/interface.d.ts +3 -2
  9. package/es/components/Filter/Filter.js +2 -2
  10. package/es/components/Filter/interface.d.ts +3 -3
  11. package/es/components/Filter/style/Filter.css +0 -5
  12. package/es/components/Input/Amount/Amount.js +7 -4
  13. package/es/components/Input/Input/Input.css +13 -0
  14. package/es/components/Input/Search/Search.js +3 -2
  15. package/es/components/Input/constants.d.ts +1 -1
  16. package/es/components/Input/constants.js +4 -3
  17. package/es/components/Select/Select.js +2 -2
  18. package/es/components/Select/SelectCustom.js +2 -2
  19. package/es/components/Select/SelectSearchControl.js +2 -2
  20. package/es/components/Select/constants.js +3 -2
  21. package/es/components/Select/interface.d.ts +1 -1
  22. package/es/components/Select/interface.js +2 -2
  23. package/es/components/Select/style/Select.css +11 -5
  24. package/es/components/Select/utils.js +8 -3
  25. package/es/index.css +1 -1
  26. package/lib/business/Filter/Account/Account.js +2 -2
  27. package/lib/business/Filter/Account/interface.d.ts +3 -2
  28. package/lib/business/Filter/Asset/Asset.js +2 -2
  29. package/lib/business/Filter/Asset/interface.d.ts +3 -2
  30. package/lib/business/Filter/DateRange/DateRange.js +4 -5
  31. package/lib/business/Filter/DateRange/style/DateRange.css +0 -5
  32. package/lib/business/Filter/Option/Option.js +2 -2
  33. package/lib/business/Filter/Option/interface.d.ts +3 -2
  34. package/lib/components/Filter/Filter.js +2 -2
  35. package/lib/components/Filter/interface.d.ts +3 -3
  36. package/lib/components/Filter/style/Filter.css +0 -5
  37. package/lib/components/Input/Amount/Amount.js +7 -4
  38. package/lib/components/Input/Input/Input.css +13 -0
  39. package/lib/components/Input/Search/Search.js +3 -2
  40. package/lib/components/Input/constants.d.ts +1 -1
  41. package/lib/components/Input/constants.js +4 -3
  42. package/lib/components/Select/Select.js +2 -2
  43. package/lib/components/Select/SelectCustom.js +2 -2
  44. package/lib/components/Select/SelectSearchControl.js +2 -2
  45. package/lib/components/Select/constants.js +3 -2
  46. package/lib/components/Select/interface.d.ts +1 -1
  47. package/lib/components/Select/interface.js +2 -2
  48. package/lib/components/Select/style/Select.css +11 -5
  49. package/lib/components/Select/utils.js +8 -3
  50. package/lib/index.css +1 -1
  51. package/package.json +1 -1
  52. package/scripts/mcp-server/examples.generated.json +24 -24
  53. package/scripts/mcp-server/index.generated.json +4 -4
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@1money/component-ui",
3
- "version": "0.0.80",
3
+ "version": "0.0.81",
4
4
  "description": "React Components based on primereact for 1money front-end projects",
5
5
  "main": "lib/index.js",
6
6
  "module": "es/index.js",
@@ -43,6 +43,12 @@
43
43
  "source": "readme",
44
44
  "compilable": true
45
45
  },
46
+ "02856991ce7e62c3b5b24ff6bbd476b4b64339cdfc87024f704198bb46927f2e": {
47
+ "title": "Default",
48
+ "code": "{\n const sizes = INPUT_SIZES;\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 }",
49
+ "source": "stories",
50
+ "compilable": true
51
+ },
46
52
  "03ae4647e3bd8aa48fde505061070eb0425296d0b86b97f0b240c36897efc68f": {
47
53
  "title": "Split",
48
54
  "code": "<Space split={<span>|</span>} size={SPACE_SIZE.large}>\n <span>Alpha</span>\n <span>Beta</span>\n <span>Gamma</span>\n </Space>",
@@ -313,12 +319,6 @@
313
319
  "source": "readme",
314
320
  "compilable": true
315
321
  },
316
- "1d55eaab6342218fa931b8a061cfa308bbaa48c4ed6bcd3d40557b5b13b938e9": {
317
- "title": "Password",
318
- "code": "{\n const sizes = ['large', 'small'] 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 {valueTypes.map((vt) => (\n <div key={`default-${vt}`} style={{ width: 310 }}>\n <p style={{ margin: '0 0 4px', fontSize: 12, color: '#999' }}>\n default / {vt}\n </p>\n <Input.Password\n size={size}\n label=\"Password\"\n feedback=\"Feedback\"\n feedbackIcon={<Icons name=\"info\" size={16} />}\n placeholder=\"Enter password\"\n defaultValue={vt === 'Filled' ? 'secretpass' : undefined}\n />\n </div>\n ))}\n {/* Error */}\n <div style={{ width: 310 }}>\n <p style={{ margin: '0 0 4px', fontSize: 12, color: '#999' }}>error / Filled</p>\n <Input.Password\n size={size}\n status=\"error\"\n label=\"Password\"\n feedback=\"Password too short\"\n feedbackIcon={<Icons name=\"error\" size={16} />}\n placeholder=\"Enter password\"\n defaultValue=\"123\"\n />\n </div>\n {/* Disabled */}\n <div style={{ width: 310 }}>\n <p style={{ margin: '0 0 4px', fontSize: 12, color: '#999' }}>disabled / Filled</p>\n <Input.Password\n size={size}\n disabled\n label=\"Password\"\n placeholder=\"Enter password\"\n defaultValue=\"secretpass\"\n />\n </div>\n </div>\n </div>\n ))}\n </div>\n );\n }",
319
- "source": "stories",
320
- "compilable": true
321
- },
322
322
  "1d6e4664da8b92ef6df17dcaa33fbb89d503e9119ff6b26e08b59365bdcf248f": {
323
323
  "title": "Drawer Form Left",
324
324
  "code": "<DrawerForm\n {...args}\n title=\"Settings\"\n placement=\"left\"\n width={400}\n trigger={<Button color=\"secondary\">Open from Left</Button>}\n onFinish={async (values) => {\n alert(JSON.stringify(values, null, 2));\n }}\n >\n <ProFormText name=\"theme\" label=\"Theme\" placeholder=\"dark / light\" />\n <ProFormText name=\"language\" label=\"Language\" placeholder=\"en / zh\" />\n <ProFormSwitch name=\"notifications\" label=\"Enable Notifications\" />\n </DrawerForm>",
@@ -391,12 +391,6 @@
391
391
  "source": "stories",
392
392
  "compilable": false
393
393
  },
394
- "22db460cb1da47a1d59eeff302bd4b045cc8fa5f8597eba6047dfc4c668f58f6": {
395
- "title": "Overview",
396
- "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={stackStyle}>\n {sizes.map((size) => (\n <div key={size}>\n <h3 style={{ ...sectionTitleStyle, textTransform: 'capitalize' }}>{size}</h3>\n <div style={rowStyle}>\n {statuses.map((status) =>\n valueTypes.map((vt) => (\n <div key={`${status}-${vt}`} style={cellStyle(310)}>\n <p style={captionStyle}>\n {status} / {vt}\n </p>\n <Select\n size={size}\n status={status}\n label=\"Label\"\n feedback=\"Feedback\"\n placeholder=\"Value\"\n options={OPTIONS}\n defaultValue={vt === 'Filled' ? 'btc' : undefined}\n />\n </div>\n )),\n )}\n {valueTypes.map((vt) => (\n <div key={`readonly-${vt}`} style={cellStyle(310)}>\n <p style={captionStyle}>read-only / {vt}</p>\n <Select\n size={size}\n readOnly\n label=\"Label\"\n options={OPTIONS}\n placeholder=\"Value\"\n defaultValue={vt === 'Filled' ? 'btc' : undefined}\n />\n </div>\n ))}\n {valueTypes.map((vt) => (\n <div key={`disabled-${vt}`} style={cellStyle(310)}>\n <p style={captionStyle}>disabled / {vt}</p>\n <Select\n size={size}\n disabled\n label=\"Label\"\n options={OPTIONS}\n placeholder=\"Value\"\n defaultValue={vt === 'Filled' ? 'btc' : undefined}\n />\n </div>\n ))}\n </div>\n </div>\n ))}\n </div>\n );\n }",
397
- "source": "stories",
398
- "compilable": true
399
- },
400
394
  "22edc8d5014aba685af83f60b94c089e387cc95677d233691190f5e2d031e262": {
401
395
  "title": "Dotted",
402
396
  "code": "<div>\n <p>Lorem ipsum dolor sit amet.</p>\n <Divider variant=\"dotted\" />\n <p>Lorem ipsum dolor sit amet.</p>\n <Divider variant=\"dotted\">Dotted</Divider>\n <p>Lorem ipsum dolor sit amet.</p>\n </div>",
@@ -1453,12 +1447,6 @@
1453
1447
  "source": "stories",
1454
1448
  "compilable": true
1455
1449
  },
1456
- "842244e70f89e2aaf6941718de836ab3a6e08d642a4d4bb2e80cee160158470f": {
1457
- "title": "Default",
1458
- "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 }",
1459
- "source": "stories",
1460
- "compilable": true
1461
- },
1462
1450
  "8585bff0f1eb7ff6a28f523eb07a2fe420a92d4ab2b329724362d75b08df00d5": {
1463
1451
  "title": "Import",
1464
1452
  "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';",
@@ -1945,6 +1933,12 @@
1945
1933
  "source": "canonical",
1946
1934
  "compilable": true
1947
1935
  },
1936
+ "add9a76dff211d6a08651090b20be857169f75505126722a71a270593ac216e1": {
1937
+ "title": "Password",
1938
+ "code": "{\n const sizes = INPUT_SIZES;\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 {valueTypes.map((vt) => (\n <div key={`default-${vt}`} style={{ width: 310 }}>\n <p style={{ margin: '0 0 4px', fontSize: 12, color: '#999' }}>\n default / {vt}\n </p>\n <Input.Password\n size={size}\n label=\"Password\"\n feedback=\"Feedback\"\n feedbackIcon={<Icons name=\"info\" size={16} />}\n placeholder=\"Enter password\"\n defaultValue={vt === 'Filled' ? 'secretpass' : undefined}\n />\n </div>\n ))}\n {/* Error */}\n <div style={{ width: 310 }}>\n <p style={{ margin: '0 0 4px', fontSize: 12, color: '#999' }}>error / Filled</p>\n <Input.Password\n size={size}\n status=\"error\"\n label=\"Password\"\n feedback=\"Password too short\"\n feedbackIcon={<Icons name=\"error\" size={16} />}\n placeholder=\"Enter password\"\n defaultValue=\"123\"\n />\n </div>\n {/* Disabled */}\n <div style={{ width: 310 }}>\n <p style={{ margin: '0 0 4px', fontSize: 12, color: '#999' }}>disabled / Filled</p>\n <Input.Password\n size={size}\n disabled\n label=\"Password\"\n placeholder=\"Enter password\"\n defaultValue=\"secretpass\"\n />\n </div>\n </div>\n </div>\n ))}\n </div>\n );\n }",
1939
+ "source": "stories",
1940
+ "compilable": true
1941
+ },
1948
1942
  "ae23f0d9349157c952b7752e33ea302d85c3d3f09654ece8ddf9107f7b194b68": {
1949
1943
  "title": "Usage",
1950
1944
  "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/>",
@@ -1957,12 +1951,6 @@
1957
1951
  "source": "readme",
1958
1952
  "compilable": true
1959
1953
  },
1960
- "af6172fd099200e93181aeb231c5d69c5b4b4d057a1f32935aa2f35ed86ffebe": {
1961
- "title": "Search",
1962
- "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 }",
1963
- "source": "stories",
1964
- "compilable": false
1965
- },
1966
1954
  "af88d73f705cf2f7bb20f21e3b6bf5469ae3683b129dc3b5e6b59966449452b9": {
1967
1955
  "title": "Import",
1968
1956
  "code": "import { Alert } from '@1money/component-ui';\n// or\nimport { Alert } from '@1money/component-ui/Alert';",
@@ -2503,6 +2491,12 @@
2503
2491
  "source": "stories",
2504
2492
  "compilable": false
2505
2493
  },
2494
+ "de0d3ad5b313251b55282c90a8ec9860ebd8f4b6ebb25944dc225a2555ef3c4c": {
2495
+ "title": "Search",
2496
+ "code": "{\n const onSearch = fn();\n const sizes = INPUT_SIZES;\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 }",
2497
+ "source": "stories",
2498
+ "compilable": false
2499
+ },
2506
2500
  "de44f389edfa47e77cf32f1bd6ece4161001640b190878192b1685205bc79377": {
2507
2501
  "title": "Amount",
2508
2502
  "code": "<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 {/* Placeholder */}\n <div style={{ width: 400 }}>\n <p style={{ margin: '0 0 4px', fontSize: 12, color: '#999' }}>Placeholder</p>\n <Input.Amount\n label=\"You send\"\n feedback=\"$2,992.68 USDC available\"\n feedbackIcon={<Icons name=\"info\" size={16} />}\n placeholder=\"Enter amount\"\n actionLabel=\"Use Max\"\n onAction={fn()}\n currencyIcon={<img src={USDC_ICON} alt=\"USDC\" />}\n currencyLabel=\"USDC\"\n onCurrencyClick={fn()}\n />\n </div>\n {/* Filled */}\n <div style={{ width: 400 }}>\n <p style={{ margin: '0 0 4px', fontSize: 12, color: '#999' }}>Filled</p>\n <Input.Amount\n label=\"You send\"\n feedback=\"$2,992.68 USDC available\"\n feedbackIcon={<Icons name=\"info\" size={16} />}\n defaultValue=\"1,250.00\"\n actionLabel=\"Use Max\"\n onAction={fn()}\n currencyIcon={<img src={USDC_ICON} alt=\"USDC\" />}\n currencyLabel=\"USDC\"\n onCurrencyClick={fn()}\n />\n </div>\n {/* Disabled */}\n <div style={{ width: 400 }}>\n <p style={{ margin: '0 0 4px', fontSize: 12, color: '#999' }}>Disabled</p>\n <Input.Amount\n label=\"You send\"\n feedback=\"$2,992.68 USDC available\"\n feedbackIcon={<Icons name=\"info\" size={16} />}\n disabled\n actionLabel=\"Use Max\"\n currencyIcon={<img src={USDC_ICON} alt=\"USDC\" />}\n currencyLabel=\"USDC\"\n />\n </div>\n {/* Error */}\n <div style={{ width: 400 }}>\n <p style={{ margin: '0 0 4px', fontSize: 12, color: '#999' }}>Error</p>\n <Input.Amount\n label=\"You send\"\n status=\"error\"\n feedback=\"Insufficient balance\"\n feedbackIcon={<Icons name=\"error\" size={16} />}\n defaultValue=\"999,999.99\"\n actionLabel=\"Use Max\"\n onAction={fn()}\n currencyIcon={<img src={USDC_ICON} alt=\"USDC\" />}\n currencyLabel=\"USDC\"\n onCurrencyClick={fn()}\n />\n </div>\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' }}>Placeholder</p>\n <Input.Amount\n size=\"small\"\n label=\"You send\"\n feedback=\"$2,992.68 USDT available\"\n feedbackIcon={<Icons name=\"info\" size={16} />}\n placeholder=\"Enter amount\"\n actionLabel=\"Use Max\"\n onAction={fn()}\n currencyIcon={<img src={USDT_ICON} alt=\"USDT\" />}\n currencyLabel=\"USDT\"\n onCurrencyClick={fn()}\n />\n </div>\n <div style={{ width: 400 }}>\n <p style={{ margin: '0 0 4px', fontSize: 12, color: '#999' }}>Filled</p>\n <Input.Amount\n size=\"small\"\n label=\"You send\"\n feedback=\"$2,992.68 USDT available\"\n feedbackIcon={<Icons name=\"info\" size={16} />}\n defaultValue=\"500.00\"\n actionLabel=\"Use Max\"\n onAction={fn()}\n currencyIcon={<img src={USDT_ICON} alt=\"USDT\" />}\n currencyLabel=\"USDT\"\n onCurrencyClick={fn()}\n />\n </div>\n </div>\n </div>\n\n {/* ── With prefix currency selector ── */}\n <div>\n <h3 style={{ margin: '0 0 16px' }}>With Prefix Currency</h3>\n <div style={{ display: 'flex', gap: 24, flexWrap: 'wrap' }}>\n <div style={{ width: 400 }}>\n <Input.Amount\n label=\"You send\"\n feedback=\"65,482.55 USD1 available\"\n feedbackIcon={<Icons name=\"info\" size={16} />}\n defaultValue=\"0\"\n prefix={\n <span style={{ display: 'inline-flex', alignItems: 'center', gap: 8 }}>\n <img src={USDT_ICON} alt=\"USDT\" style={{ width: 24, height: 24, borderRadius: '50%' }} />\n <span>USDT</span>\n </span>\n }\n actionLabel=\"Use Max\"\n onAction={fn()}\n currencyIcon={<img src={USDC_ICON} alt=\"USDC\" />}\n currencyLabel=\"USDC\"\n onCurrencyClick={fn()}\n />\n </div>\n </div>\n </div>\n\n {/* ── Currency only (no action) ── */}\n <div>\n <h3 style={{ margin: '0 0 16px' }}>Currency Only (no action button)</h3>\n <div style={{ display: 'flex', gap: 24, flexWrap: 'wrap' }}>\n <div style={{ width: 400 }}>\n <Input.Amount\n label=\"Amount\"\n placeholder=\"0.00\"\n currencyIcon={<img src={USDC_ICON} alt=\"USDC\" />}\n currencyLabel=\"USDC\"\n onCurrencyClick={fn()}\n />\n </div>\n </div>\n </div>\n </div>",
@@ -2659,6 +2653,12 @@
2659
2653
  "source": "stories",
2660
2654
  "compilable": true
2661
2655
  },
2656
+ "ecb3b33f82daa905c85a8c557941ffaad4c414a76742779e1fef9abfa108a79f": {
2657
+ "title": "Overview",
2658
+ "code": "{\n const sizes = SELECT_SIZES;\n const statuses = ['default', 'error'] as const;\n const valueTypes = ['Placeholder', 'Filled'] as const;\n\n return (\n <div style={stackStyle}>\n {sizes.map((size) => (\n <div key={size}>\n <h3 style={{ ...sectionTitleStyle, textTransform: 'capitalize' }}>{size}</h3>\n <div style={rowStyle}>\n {statuses.map((status) =>\n valueTypes.map((vt) => (\n <div key={`${status}-${vt}`} style={cellStyle(310)}>\n <p style={captionStyle}>\n {status} / {vt}\n </p>\n <Select\n size={size}\n status={status}\n label=\"Label\"\n feedback=\"Feedback\"\n placeholder=\"Value\"\n options={OPTIONS}\n defaultValue={vt === 'Filled' ? 'btc' : undefined}\n />\n </div>\n )),\n )}\n {valueTypes.map((vt) => (\n <div key={`readonly-${vt}`} style={cellStyle(310)}>\n <p style={captionStyle}>read-only / {vt}</p>\n <Select\n size={size}\n readOnly\n label=\"Label\"\n options={OPTIONS}\n placeholder=\"Value\"\n defaultValue={vt === 'Filled' ? 'btc' : undefined}\n />\n </div>\n ))}\n {valueTypes.map((vt) => (\n <div key={`disabled-${vt}`} style={cellStyle(310)}>\n <p style={captionStyle}>disabled / {vt}</p>\n <Select\n size={size}\n disabled\n label=\"Label\"\n options={OPTIONS}\n placeholder=\"Value\"\n defaultValue={vt === 'Filled' ? 'btc' : undefined}\n />\n </div>\n ))}\n </div>\n </div>\n ))}\n </div>\n );\n }",
2659
+ "source": "stories",
2660
+ "compilable": true
2661
+ },
2662
2662
  "ed5aa33f8e734dad460aa9b2a7c6fc0690efc9cda3b0854c642d59b2bbf55870": {
2663
2663
  "title": "Illustrations",
2664
2664
  "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 }",
@@ -5195,7 +5195,7 @@
5195
5195
  "source": "readme"
5196
5196
  },
5197
5197
  {
5198
- "hash": "842244e70f89e2aaf6941718de836ab3a6e08d642a4d4bb2e80cee160158470f",
5198
+ "hash": "02856991ce7e62c3b5b24ff6bbd476b4b64339cdfc87024f704198bb46927f2e",
5199
5199
  "source": "stories"
5200
5200
  },
5201
5201
  {
@@ -5203,11 +5203,11 @@
5203
5203
  "source": "stories"
5204
5204
  },
5205
5205
  {
5206
- "hash": "1d55eaab6342218fa931b8a061cfa308bbaa48c4ed6bcd3d40557b5b13b938e9",
5206
+ "hash": "add9a76dff211d6a08651090b20be857169f75505126722a71a270593ac216e1",
5207
5207
  "source": "stories"
5208
5208
  },
5209
5209
  {
5210
- "hash": "af6172fd099200e93181aeb231c5d69c5b4b4d057a1f32935aa2f35ed86ffebe",
5210
+ "hash": "de0d3ad5b313251b55282c90a8ec9860ebd8f4b6ebb25944dc225a2555ef3c4c",
5211
5211
  "source": "stories"
5212
5212
  },
5213
5213
  {
@@ -15827,7 +15827,7 @@
15827
15827
  "source": "stories"
15828
15828
  },
15829
15829
  {
15830
- "hash": "22db460cb1da47a1d59eeff302bd4b045cc8fa5f8597eba6047dfc4c668f58f6",
15830
+ "hash": "ecb3b33f82daa905c85a8c557941ffaad4c414a76742779e1fef9abfa108a79f",
15831
15831
  "source": "stories"
15832
15832
  },
15833
15833
  {