ionbase-ui 0.59.0 → 0.70.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (114) hide show
  1. package/dist/components/AgentActivity.d.ts +2 -1
  2. package/dist/components/AgentActivity.d.ts.map +1 -1
  3. package/dist/components/AgentActivity.js +4 -17
  4. package/dist/components/AgentActivity.js.map +1 -1
  5. package/dist/components/Calendar.d.ts +20 -0
  6. package/dist/components/Calendar.d.ts.map +1 -0
  7. package/dist/components/Calendar.js +151 -0
  8. package/dist/components/Calendar.js.map +1 -0
  9. package/dist/components/CalendarPopover.d.ts +26 -0
  10. package/dist/components/CalendarPopover.d.ts.map +1 -0
  11. package/dist/components/CalendarPopover.js +45 -0
  12. package/dist/components/CalendarPopover.js.map +1 -0
  13. package/dist/components/DateField.d.ts +15 -0
  14. package/dist/components/DateField.d.ts.map +1 -0
  15. package/dist/components/DateField.js +74 -0
  16. package/dist/components/DateField.js.map +1 -0
  17. package/dist/components/DatePicker.d.ts +81 -0
  18. package/dist/components/DatePicker.d.ts.map +1 -0
  19. package/dist/components/DatePicker.js +102 -0
  20. package/dist/components/DatePicker.js.map +1 -0
  21. package/dist/components/DateRangePicker.d.ts +117 -0
  22. package/dist/components/DateRangePicker.d.ts.map +1 -0
  23. package/dist/components/DateRangePicker.js +152 -0
  24. package/dist/components/DateRangePicker.js.map +1 -0
  25. package/dist/components/Header.d.ts +10 -0
  26. package/dist/components/Header.d.ts.map +1 -1
  27. package/dist/components/Header.js +18 -3
  28. package/dist/components/Header.js.map +1 -1
  29. package/dist/components/NumberInput.d.ts +63 -0
  30. package/dist/components/NumberInput.d.ts.map +1 -0
  31. package/dist/components/NumberInput.js +102 -0
  32. package/dist/components/NumberInput.js.map +1 -0
  33. package/dist/components/PromptInput.d.ts +89 -0
  34. package/dist/components/PromptInput.d.ts.map +1 -0
  35. package/dist/components/PromptInput.js +130 -0
  36. package/dist/components/PromptInput.js.map +1 -0
  37. package/dist/components/ScrollProgress.d.ts +6 -0
  38. package/dist/components/ScrollProgress.d.ts.map +1 -1
  39. package/dist/components/ScrollProgress.js +2 -2
  40. package/dist/components/ScrollProgress.js.map +1 -1
  41. package/dist/components/SegmentedControl.d.ts +63 -0
  42. package/dist/components/SegmentedControl.d.ts.map +1 -0
  43. package/dist/components/SegmentedControl.js +79 -0
  44. package/dist/components/SegmentedControl.js.map +1 -0
  45. package/dist/components/Sidebar.d.ts +109 -0
  46. package/dist/components/Sidebar.d.ts.map +1 -0
  47. package/dist/components/Sidebar.js +106 -0
  48. package/dist/components/Sidebar.js.map +1 -0
  49. package/dist/components/Stepper.d.ts +73 -0
  50. package/dist/components/Stepper.d.ts.map +1 -0
  51. package/dist/components/Stepper.js +82 -0
  52. package/dist/components/Stepper.js.map +1 -0
  53. package/dist/components/Toast.d.ts +8 -1
  54. package/dist/components/Toast.d.ts.map +1 -1
  55. package/dist/components/Toast.js +2 -2
  56. package/dist/components/Toast.js.map +1 -1
  57. package/dist/components/ToolCall.d.ts +66 -0
  58. package/dist/components/ToolCall.d.ts.map +1 -0
  59. package/dist/components/ToolCall.js +78 -0
  60. package/dist/components/ToolCall.js.map +1 -0
  61. package/dist/components/agent-status.d.ts +14 -0
  62. package/dist/components/agent-status.d.ts.map +1 -0
  63. package/dist/components/agent-status.js +16 -0
  64. package/dist/components/agent-status.js.map +1 -0
  65. package/dist/components/index.d.ts +18 -1
  66. package/dist/components/index.d.ts.map +1 -1
  67. package/dist/components/index.js +8 -0
  68. package/dist/components/index.js.map +1 -1
  69. package/dist/components/iso-date.d.ts +53 -0
  70. package/dist/components/iso-date.d.ts.map +1 -0
  71. package/dist/components/iso-date.js +102 -0
  72. package/dist/components/iso-date.js.map +1 -0
  73. package/dist/figma-descriptions.json +107 -52
  74. package/dist/figma-map.json +735 -2
  75. package/dist/meta/AgentActivityStep.json +2 -2
  76. package/dist/meta/DatePicker.json +270 -0
  77. package/dist/meta/DateRangePicker.json +284 -0
  78. package/dist/meta/Header.json +32 -2
  79. package/dist/meta/NumberInput.json +407 -0
  80. package/dist/meta/PromptInput.json +212 -0
  81. package/dist/meta/ScrollProgress.json +26 -1
  82. package/dist/meta/SegmentedControl.json +217 -0
  83. package/dist/meta/SegmentedControlItem.json +122 -0
  84. package/dist/meta/Sidebar.json +150 -0
  85. package/dist/meta/SidebarItem.json +184 -0
  86. package/dist/meta/SidebarSection.json +131 -0
  87. package/dist/meta/Stepper.json +135 -0
  88. package/dist/meta/StepperStep.json +148 -0
  89. package/dist/meta/Tabs.json +5 -0
  90. package/dist/meta/ToastProvider.json +9 -2
  91. package/dist/meta/ToolCall.json +192 -0
  92. package/dist/meta/components.json +5812 -3293
  93. package/dist/meta/contrast.json +7776 -2478
  94. package/dist/meta/index.json +145 -3
  95. package/dist/meta/patterns/AgentRun.json +27 -0
  96. package/dist/meta/patterns/Form.json +9 -0
  97. package/dist/meta/patterns/PageShell.json +43 -3
  98. package/dist/meta/patterns/Wizard.json +20 -1
  99. package/dist/meta/patterns/index.json +10 -1
  100. package/dist/styles/date-picker.css +420 -0
  101. package/dist/styles/date-range-picker.css +280 -0
  102. package/dist/styles/header.css +26 -0
  103. package/dist/styles/index.css +15 -0
  104. package/dist/styles/number-input.css +83 -0
  105. package/dist/styles/prompt-input.css +127 -0
  106. package/dist/styles/scroll-progress.css +42 -4
  107. package/dist/styles/segmented-control.css +182 -0
  108. package/dist/styles/sidebar.css +307 -0
  109. package/dist/styles/stepper.css +250 -0
  110. package/dist/styles/table.css +9 -0
  111. package/dist/styles/tool-call.css +202 -0
  112. package/llms.txt +2 -2
  113. package/package.json +20 -19
  114. package/LICENSE +0 -21
@@ -1,8 +1,8 @@
1
1
  {
2
2
  "package": "ionbase-ui",
3
- "version": "0.59.0",
3
+ "version": "0.70.0",
4
4
  "figmaFile": "gaLbGd0QNb1fUl6BjSpfBA",
5
- "figmaExported": "2026-09-16",
5
+ "figmaExported": "2026-09-24",
6
6
  "usage": "Given a Figma node id or component name, look it up here for the React component, its import, and how each Figma property maps onto a real prop. Every mapping is verified against both the Figma export and the TypeScript API on each build.",
7
7
  "generated": "by scripts/verify-figma-map.mjs — do not edit",
8
8
  "byNodeId": {
@@ -644,6 +644,34 @@
644
644
  }
645
645
  }
646
646
  },
647
+ "1394:536": {
648
+ "figmaComponent": "Date Picker",
649
+ "figmaNodeId": "1394:536",
650
+ "figmaPage": "Date Picker",
651
+ "component": "DatePicker",
652
+ "import": "import { DatePicker } from 'ionbase-ui';",
653
+ "docs": "components/date-picker/index.html.md",
654
+ "props": {
655
+ "Size": {
656
+ "prop": "size",
657
+ "values": {
658
+ "Small": "sm",
659
+ "Medium": "md",
660
+ "Large": "lg"
661
+ }
662
+ },
663
+ "State": {
664
+ "prop": "isInvalid",
665
+ "when": {
666
+ "Invalid": true
667
+ },
668
+ "note": "Hover, Focus and Filled are CSS or content; Disabled is isDisabled and Read-only is isReadOnly — the same split as Input, whose box this is."
669
+ },
670
+ "Type": {
671
+ "ignore": "Single is DatePicker; Range is DateRangePicker, which takes the same size and state props. A Figma set maps to one code component, so the range picker is reached through this axis — see codeUnmapped.DateRangePicker."
672
+ }
673
+ }
674
+ },
647
675
  "1365:2404": {
648
676
  "figmaComponent": "Drawer",
649
677
  "figmaNodeId": "1365:2404",
@@ -1136,6 +1164,38 @@
1136
1164
  }
1137
1165
  }
1138
1166
  },
1167
+ "1389:473": {
1168
+ "figmaComponent": "Number Input",
1169
+ "figmaNodeId": "1389:473",
1170
+ "figmaPage": "Number Input",
1171
+ "component": "NumberInput",
1172
+ "import": "import { NumberInput } from 'ionbase-ui';",
1173
+ "docs": "components/number-input/index.html.md",
1174
+ "props": {
1175
+ "Size": {
1176
+ "prop": "size",
1177
+ "values": {
1178
+ "Small": "sm",
1179
+ "Medium": "md",
1180
+ "Large": "lg"
1181
+ }
1182
+ },
1183
+ "State": {
1184
+ "prop": "isInvalid",
1185
+ "when": {
1186
+ "Invalid": true
1187
+ },
1188
+ "note": "Hover, Focus and Filled are CSS or content; Disabled is isDisabled and Read-only is isReadOnly. The same split Input records, because the box is Input’s."
1189
+ },
1190
+ "Stepper#1389:0": {
1191
+ "prop": "showStepper"
1192
+ },
1193
+ "Value#1389:22": {
1194
+ "prop": "value",
1195
+ "note": "A number in code; Figma’s text is its formatted display, and the placeholder until one is entered."
1196
+ }
1197
+ }
1198
+ },
1139
1199
  "1291:503": {
1140
1200
  "figmaComponent": "Pagination",
1141
1201
  "figmaNodeId": "1291:503",
@@ -1257,6 +1317,39 @@
1257
1317
  }
1258
1318
  }
1259
1319
  },
1320
+ "1393:387": {
1321
+ "figmaComponent": "Prompt Input",
1322
+ "figmaNodeId": "1393:387",
1323
+ "figmaPage": "Prompt Input",
1324
+ "component": "PromptInput",
1325
+ "import": "import { PromptInput } from 'ionbase-ui';",
1326
+ "docs": "components/prompt-input/index.html.md",
1327
+ "props": {
1328
+ "State": {
1329
+ "prop": "isDisabled",
1330
+ "when": {
1331
+ "Disabled": true
1332
+ },
1333
+ "note": "Hover and Focus are CSS. Filled is content — a non-empty value — and is the only state in which send is live."
1334
+ },
1335
+ "Running": {
1336
+ "prop": "isRunning",
1337
+ "values": {
1338
+ "True": true,
1339
+ "False": false
1340
+ },
1341
+ "note": "with onStop, which is what swaps send for AgentStop"
1342
+ },
1343
+ "Value#1393:0": {
1344
+ "prop": "value",
1345
+ "note": "Figma’s text is whatever the field shows: the placeholder until something is typed, then the value."
1346
+ },
1347
+ "Show Actions#1393:11": {
1348
+ "prop": "actions",
1349
+ "note": "false means actions is omitted; the attach button drawn there is an example, not part of the component"
1350
+ }
1351
+ }
1352
+ },
1260
1353
  "89:314": {
1261
1354
  "figmaComponent": "Radio",
1262
1355
  "figmaNodeId": "89:314",
@@ -1296,6 +1389,65 @@
1296
1389
  }
1297
1390
  }
1298
1391
  },
1392
+ "1390:435": {
1393
+ "figmaComponent": "Segmented Control",
1394
+ "figmaNodeId": "1390:435",
1395
+ "figmaPage": "Segmented Control",
1396
+ "component": "SegmentedControl",
1397
+ "import": "import { SegmentedControl } from 'ionbase-ui';",
1398
+ "docs": "components/segmented-control/index.html.md",
1399
+ "props": {
1400
+ "Size": {
1401
+ "prop": "size",
1402
+ "values": {
1403
+ "Small": "sm",
1404
+ "Medium": "md",
1405
+ "Large": "lg"
1406
+ }
1407
+ },
1408
+ "Full Width": {
1409
+ "prop": "isFullWidth",
1410
+ "values": {
1411
+ "True": true,
1412
+ "False": false
1413
+ }
1414
+ }
1415
+ }
1416
+ },
1417
+ "1390:332": {
1418
+ "figmaComponent": "Segmented Control Item",
1419
+ "figmaNodeId": "1390:332",
1420
+ "figmaPage": "Segmented Control",
1421
+ "component": "SegmentedControlItem",
1422
+ "import": "import { SegmentedControlItem } from 'ionbase-ui';",
1423
+ "docs": "components/segmented-control-item/index.html.md",
1424
+ "props": {
1425
+ "Label#1390:0": {
1426
+ "prop": "children"
1427
+ },
1428
+ "Show Icon#1390:19": {
1429
+ "prop": "icon",
1430
+ "note": "false means icon is omitted"
1431
+ },
1432
+ "Icon#1390:38": {
1433
+ "prop": "icon"
1434
+ },
1435
+ "Size": {
1436
+ "ignore": "set on the parent SegmentedControl, not per item"
1437
+ },
1438
+ "State": {
1439
+ "prop": "isDisabled",
1440
+ "when": {
1441
+ "Disabled": true,
1442
+ "Selected-Disabled": true
1443
+ },
1444
+ "note": "Default and Hover are CSS. Selected is the parent SegmentedControl’s value — the item never owns selection, the same split Tabs Item records."
1445
+ },
1446
+ "Focused#1390:57": {
1447
+ "ignore": "drawn focus ring; :focus-visible in code"
1448
+ }
1449
+ }
1450
+ },
1299
1451
  "82:379": {
1300
1452
  "figmaComponent": "Select",
1301
1453
  "figmaNodeId": "82:379",
@@ -1325,6 +1477,106 @@
1325
1477
  }
1326
1478
  }
1327
1479
  },
1480
+ "1396:502": {
1481
+ "figmaComponent": "Sidebar",
1482
+ "figmaNodeId": "1396:502",
1483
+ "figmaPage": "Sidebar",
1484
+ "component": "Sidebar",
1485
+ "import": "import { Sidebar } from 'ionbase-ui';",
1486
+ "docs": "components/sidebar/index.html.md",
1487
+ "props": {
1488
+ "Show Header#1396:105": {
1489
+ "prop": "header",
1490
+ "note": "false means header is omitted; the logo drawn there is an example"
1491
+ },
1492
+ "Show Footer#1396:106": {
1493
+ "prop": "footer",
1494
+ "note": "false means footer is omitted; the Settings row drawn there is an example"
1495
+ }
1496
+ }
1497
+ },
1498
+ "1396:412": {
1499
+ "figmaComponent": "Sidebar Item",
1500
+ "figmaNodeId": "1396:412",
1501
+ "figmaPage": "Sidebar",
1502
+ "component": "SidebarItem",
1503
+ "import": "import { SidebarItem } from 'ionbase-ui';",
1504
+ "docs": "components/sidebar-item/index.html.md",
1505
+ "props": {
1506
+ "State": {
1507
+ "prop": "isCurrent",
1508
+ "when": {
1509
+ "Current": true,
1510
+ "Current-Hover": true
1511
+ },
1512
+ "note": "Default and Hover are CSS; Disabled is isDisabled."
1513
+ },
1514
+ "Has Children": {
1515
+ "prop": "children",
1516
+ "when": {
1517
+ "True": true
1518
+ },
1519
+ "note": "True means nested SidebarItems are passed as children; Figma draws them as sibling instances indented 16px."
1520
+ },
1521
+ "Expanded": {
1522
+ "prop": "isExpanded",
1523
+ "values": {
1524
+ "True": true,
1525
+ "False": false
1526
+ },
1527
+ "note": "or defaultExpanded; only meaningful with children"
1528
+ },
1529
+ "Label#1396:0": {
1530
+ "prop": "label"
1531
+ },
1532
+ "Show Icon#1396:16": {
1533
+ "prop": "icon",
1534
+ "note": "false means icon is omitted"
1535
+ },
1536
+ "Icon#1396:32": {
1537
+ "prop": "icon"
1538
+ },
1539
+ "Show Badge#1396:48": {
1540
+ "prop": "badge",
1541
+ "note": "false means badge is omitted"
1542
+ },
1543
+ "Badge#1396:64": {
1544
+ "prop": "badge"
1545
+ },
1546
+ "Actions Visible#1396:80": {
1547
+ "prop": "actions",
1548
+ "note": "code renders them always but reveals them on hover and focus (always on touch); Figma shows or hides them"
1549
+ }
1550
+ }
1551
+ },
1552
+ "1396:501": {
1553
+ "figmaComponent": "Sidebar Section",
1554
+ "figmaNodeId": "1396:501",
1555
+ "figmaPage": "Sidebar",
1556
+ "component": "SidebarSection",
1557
+ "import": "import { SidebarSection } from 'ionbase-ui';",
1558
+ "docs": "components/sidebar-section/index.html.md",
1559
+ "props": {
1560
+ "Title#1396:96": {
1561
+ "prop": "title"
1562
+ },
1563
+ "Collapsible#1396:99": {
1564
+ "prop": "isCollapsible"
1565
+ },
1566
+ "Collapsed": {
1567
+ "prop": "isExpanded",
1568
+ "values": {
1569
+ "False": true,
1570
+ "True": false
1571
+ },
1572
+ "note": "the names invert: Figma says Collapsed, code says isExpanded (or defaultExpanded)"
1573
+ },
1574
+ "Show Actions#1396:102": {
1575
+ "prop": "actions",
1576
+ "note": "false means actions is omitted"
1577
+ }
1578
+ }
1579
+ },
1328
1580
  "1345:248": {
1329
1581
  "figmaComponent": "Skeleton",
1330
1582
  "figmaNodeId": "1345:248",
@@ -1368,6 +1620,67 @@
1368
1620
  }
1369
1621
  }
1370
1622
  },
1623
+ "1391:431": {
1624
+ "figmaComponent": "Stepper",
1625
+ "figmaNodeId": "1391:431",
1626
+ "figmaPage": "Stepper",
1627
+ "component": "Stepper",
1628
+ "import": "import { Stepper } from 'ionbase-ui';",
1629
+ "docs": "components/stepper/index.html.md",
1630
+ "props": {
1631
+ "Orientation": {
1632
+ "prop": "orientation",
1633
+ "values": {
1634
+ "Horizontal": "horizontal",
1635
+ "Vertical": "vertical"
1636
+ }
1637
+ }
1638
+ }
1639
+ },
1640
+ "1391:356": {
1641
+ "figmaComponent": "Stepper Step",
1642
+ "figmaNodeId": "1391:356",
1643
+ "figmaPage": "Stepper",
1644
+ "component": "StepperStep",
1645
+ "import": "import { StepperStep } from 'ionbase-ui';",
1646
+ "docs": "components/stepper-step/index.html.md",
1647
+ "props": {
1648
+ "Status": {
1649
+ "prop": "status",
1650
+ "values": {
1651
+ "Incomplete": "incomplete",
1652
+ "Complete": "complete",
1653
+ "Error": "error"
1654
+ }
1655
+ },
1656
+ "Current": {
1657
+ "prop": "isCurrent",
1658
+ "values": {
1659
+ "True": true,
1660
+ "False": false
1661
+ }
1662
+ },
1663
+ "Label#1391:0": {
1664
+ "prop": "children"
1665
+ },
1666
+ "Description#1391:13": {
1667
+ "prop": "description"
1668
+ },
1669
+ "Show Description#1391:26": {
1670
+ "prop": "description",
1671
+ "note": "false means description is omitted"
1672
+ },
1673
+ "Number#1391:39": {
1674
+ "ignore": "the step’s position in the list; code numbers steps itself"
1675
+ },
1676
+ "Orientation": {
1677
+ "ignore": "set on the parent Stepper, not per step — drawn per step only because the connector’s geometry differs"
1678
+ },
1679
+ "Show Connector#1391:52": {
1680
+ "ignore": "code draws a connector after every step but the last; Figma needs it switched off by hand on the last instance"
1681
+ }
1682
+ }
1683
+ },
1371
1684
  "1164:248": {
1372
1685
  "figmaComponent": "Streaming Text",
1373
1686
  "figmaNodeId": "1164:248",
@@ -1623,6 +1936,58 @@
1623
1936
  }
1624
1937
  }
1625
1938
  },
1939
+ "1392:391": {
1940
+ "figmaComponent": "Tool Call",
1941
+ "figmaNodeId": "1392:391",
1942
+ "figmaPage": "Tool Call",
1943
+ "component": "ToolCall",
1944
+ "import": "import { ToolCall } from 'ionbase-ui';",
1945
+ "docs": "components/tool-call/index.html.md",
1946
+ "props": {
1947
+ "Status": {
1948
+ "prop": "status",
1949
+ "values": {
1950
+ "Pending": "pending",
1951
+ "Active": "active",
1952
+ "Done": "done",
1953
+ "Failed": "failed",
1954
+ "Skipped": "skipped"
1955
+ }
1956
+ },
1957
+ "Expanded": {
1958
+ "prop": "isExpanded",
1959
+ "values": {
1960
+ "True": true,
1961
+ "False": false
1962
+ },
1963
+ "note": "or defaultExpanded, uncontrolled"
1964
+ },
1965
+ "Title#1392:0": {
1966
+ "prop": "title"
1967
+ },
1968
+ "Name#1392:11": {
1969
+ "prop": "name"
1970
+ },
1971
+ "Show Name#1392:22": {
1972
+ "prop": "name",
1973
+ "note": "false means name is omitted"
1974
+ },
1975
+ "Duration#1392:33": {
1976
+ "prop": "durationMs",
1977
+ "note": "milliseconds in code; Figma shows the formatted text (“1.2s”, “340ms”)"
1978
+ },
1979
+ "Show Duration#1392:44": {
1980
+ "prop": "durationMs",
1981
+ "note": "false means durationMs is omitted"
1982
+ },
1983
+ "Has Details#1392:55": {
1984
+ "ignore": "not a prop: code shows the chevron and makes the header a button when input or output is passed"
1985
+ },
1986
+ "Error Message#1392:66": {
1987
+ "prop": "errorMessage"
1988
+ }
1989
+ }
1990
+ },
1626
1991
  "801:68": {
1627
1992
  "figmaComponent": "Tooltip",
1628
1993
  "figmaNodeId": "801:68",
@@ -2291,6 +2656,34 @@
2291
2656
  }
2292
2657
  }
2293
2658
  },
2659
+ "Date Picker": {
2660
+ "figmaComponent": "Date Picker",
2661
+ "figmaNodeId": "1394:536",
2662
+ "figmaPage": "Date Picker",
2663
+ "component": "DatePicker",
2664
+ "import": "import { DatePicker } from 'ionbase-ui';",
2665
+ "docs": "components/date-picker/index.html.md",
2666
+ "props": {
2667
+ "Size": {
2668
+ "prop": "size",
2669
+ "values": {
2670
+ "Small": "sm",
2671
+ "Medium": "md",
2672
+ "Large": "lg"
2673
+ }
2674
+ },
2675
+ "State": {
2676
+ "prop": "isInvalid",
2677
+ "when": {
2678
+ "Invalid": true
2679
+ },
2680
+ "note": "Hover, Focus and Filled are CSS or content; Disabled is isDisabled and Read-only is isReadOnly — the same split as Input, whose box this is."
2681
+ },
2682
+ "Type": {
2683
+ "ignore": "Single is DatePicker; Range is DateRangePicker, which takes the same size and state props. A Figma set maps to one code component, so the range picker is reached through this axis — see codeUnmapped.DateRangePicker."
2684
+ }
2685
+ }
2686
+ },
2294
2687
  "Drawer": {
2295
2688
  "figmaComponent": "Drawer",
2296
2689
  "figmaNodeId": "1365:2404",
@@ -2783,6 +3176,38 @@
2783
3176
  }
2784
3177
  }
2785
3178
  },
3179
+ "Number Input": {
3180
+ "figmaComponent": "Number Input",
3181
+ "figmaNodeId": "1389:473",
3182
+ "figmaPage": "Number Input",
3183
+ "component": "NumberInput",
3184
+ "import": "import { NumberInput } from 'ionbase-ui';",
3185
+ "docs": "components/number-input/index.html.md",
3186
+ "props": {
3187
+ "Size": {
3188
+ "prop": "size",
3189
+ "values": {
3190
+ "Small": "sm",
3191
+ "Medium": "md",
3192
+ "Large": "lg"
3193
+ }
3194
+ },
3195
+ "State": {
3196
+ "prop": "isInvalid",
3197
+ "when": {
3198
+ "Invalid": true
3199
+ },
3200
+ "note": "Hover, Focus and Filled are CSS or content; Disabled is isDisabled and Read-only is isReadOnly. The same split Input records, because the box is Input’s."
3201
+ },
3202
+ "Stepper#1389:0": {
3203
+ "prop": "showStepper"
3204
+ },
3205
+ "Value#1389:22": {
3206
+ "prop": "value",
3207
+ "note": "A number in code; Figma’s text is its formatted display, and the placeholder until one is entered."
3208
+ }
3209
+ }
3210
+ },
2786
3211
  "Pagination": {
2787
3212
  "figmaComponent": "Pagination",
2788
3213
  "figmaNodeId": "1291:503",
@@ -2904,6 +3329,39 @@
2904
3329
  }
2905
3330
  }
2906
3331
  },
3332
+ "Prompt Input": {
3333
+ "figmaComponent": "Prompt Input",
3334
+ "figmaNodeId": "1393:387",
3335
+ "figmaPage": "Prompt Input",
3336
+ "component": "PromptInput",
3337
+ "import": "import { PromptInput } from 'ionbase-ui';",
3338
+ "docs": "components/prompt-input/index.html.md",
3339
+ "props": {
3340
+ "State": {
3341
+ "prop": "isDisabled",
3342
+ "when": {
3343
+ "Disabled": true
3344
+ },
3345
+ "note": "Hover and Focus are CSS. Filled is content — a non-empty value — and is the only state in which send is live."
3346
+ },
3347
+ "Running": {
3348
+ "prop": "isRunning",
3349
+ "values": {
3350
+ "True": true,
3351
+ "False": false
3352
+ },
3353
+ "note": "with onStop, which is what swaps send for AgentStop"
3354
+ },
3355
+ "Value#1393:0": {
3356
+ "prop": "value",
3357
+ "note": "Figma’s text is whatever the field shows: the placeholder until something is typed, then the value."
3358
+ },
3359
+ "Show Actions#1393:11": {
3360
+ "prop": "actions",
3361
+ "note": "false means actions is omitted; the attach button drawn there is an example, not part of the component"
3362
+ }
3363
+ }
3364
+ },
2907
3365
  "Radio": {
2908
3366
  "figmaComponent": "Radio",
2909
3367
  "figmaNodeId": "89:314",
@@ -2943,6 +3401,65 @@
2943
3401
  }
2944
3402
  }
2945
3403
  },
3404
+ "Segmented Control": {
3405
+ "figmaComponent": "Segmented Control",
3406
+ "figmaNodeId": "1390:435",
3407
+ "figmaPage": "Segmented Control",
3408
+ "component": "SegmentedControl",
3409
+ "import": "import { SegmentedControl } from 'ionbase-ui';",
3410
+ "docs": "components/segmented-control/index.html.md",
3411
+ "props": {
3412
+ "Size": {
3413
+ "prop": "size",
3414
+ "values": {
3415
+ "Small": "sm",
3416
+ "Medium": "md",
3417
+ "Large": "lg"
3418
+ }
3419
+ },
3420
+ "Full Width": {
3421
+ "prop": "isFullWidth",
3422
+ "values": {
3423
+ "True": true,
3424
+ "False": false
3425
+ }
3426
+ }
3427
+ }
3428
+ },
3429
+ "Segmented Control Item": {
3430
+ "figmaComponent": "Segmented Control Item",
3431
+ "figmaNodeId": "1390:332",
3432
+ "figmaPage": "Segmented Control",
3433
+ "component": "SegmentedControlItem",
3434
+ "import": "import { SegmentedControlItem } from 'ionbase-ui';",
3435
+ "docs": "components/segmented-control-item/index.html.md",
3436
+ "props": {
3437
+ "Label#1390:0": {
3438
+ "prop": "children"
3439
+ },
3440
+ "Show Icon#1390:19": {
3441
+ "prop": "icon",
3442
+ "note": "false means icon is omitted"
3443
+ },
3444
+ "Icon#1390:38": {
3445
+ "prop": "icon"
3446
+ },
3447
+ "Size": {
3448
+ "ignore": "set on the parent SegmentedControl, not per item"
3449
+ },
3450
+ "State": {
3451
+ "prop": "isDisabled",
3452
+ "when": {
3453
+ "Disabled": true,
3454
+ "Selected-Disabled": true
3455
+ },
3456
+ "note": "Default and Hover are CSS. Selected is the parent SegmentedControl’s value — the item never owns selection, the same split Tabs Item records."
3457
+ },
3458
+ "Focused#1390:57": {
3459
+ "ignore": "drawn focus ring; :focus-visible in code"
3460
+ }
3461
+ }
3462
+ },
2946
3463
  "Select": {
2947
3464
  "figmaComponent": "Select",
2948
3465
  "figmaNodeId": "82:379",
@@ -2972,6 +3489,106 @@
2972
3489
  }
2973
3490
  }
2974
3491
  },
3492
+ "Sidebar": {
3493
+ "figmaComponent": "Sidebar",
3494
+ "figmaNodeId": "1396:502",
3495
+ "figmaPage": "Sidebar",
3496
+ "component": "Sidebar",
3497
+ "import": "import { Sidebar } from 'ionbase-ui';",
3498
+ "docs": "components/sidebar/index.html.md",
3499
+ "props": {
3500
+ "Show Header#1396:105": {
3501
+ "prop": "header",
3502
+ "note": "false means header is omitted; the logo drawn there is an example"
3503
+ },
3504
+ "Show Footer#1396:106": {
3505
+ "prop": "footer",
3506
+ "note": "false means footer is omitted; the Settings row drawn there is an example"
3507
+ }
3508
+ }
3509
+ },
3510
+ "Sidebar Item": {
3511
+ "figmaComponent": "Sidebar Item",
3512
+ "figmaNodeId": "1396:412",
3513
+ "figmaPage": "Sidebar",
3514
+ "component": "SidebarItem",
3515
+ "import": "import { SidebarItem } from 'ionbase-ui';",
3516
+ "docs": "components/sidebar-item/index.html.md",
3517
+ "props": {
3518
+ "State": {
3519
+ "prop": "isCurrent",
3520
+ "when": {
3521
+ "Current": true,
3522
+ "Current-Hover": true
3523
+ },
3524
+ "note": "Default and Hover are CSS; Disabled is isDisabled."
3525
+ },
3526
+ "Has Children": {
3527
+ "prop": "children",
3528
+ "when": {
3529
+ "True": true
3530
+ },
3531
+ "note": "True means nested SidebarItems are passed as children; Figma draws them as sibling instances indented 16px."
3532
+ },
3533
+ "Expanded": {
3534
+ "prop": "isExpanded",
3535
+ "values": {
3536
+ "True": true,
3537
+ "False": false
3538
+ },
3539
+ "note": "or defaultExpanded; only meaningful with children"
3540
+ },
3541
+ "Label#1396:0": {
3542
+ "prop": "label"
3543
+ },
3544
+ "Show Icon#1396:16": {
3545
+ "prop": "icon",
3546
+ "note": "false means icon is omitted"
3547
+ },
3548
+ "Icon#1396:32": {
3549
+ "prop": "icon"
3550
+ },
3551
+ "Show Badge#1396:48": {
3552
+ "prop": "badge",
3553
+ "note": "false means badge is omitted"
3554
+ },
3555
+ "Badge#1396:64": {
3556
+ "prop": "badge"
3557
+ },
3558
+ "Actions Visible#1396:80": {
3559
+ "prop": "actions",
3560
+ "note": "code renders them always but reveals them on hover and focus (always on touch); Figma shows or hides them"
3561
+ }
3562
+ }
3563
+ },
3564
+ "Sidebar Section": {
3565
+ "figmaComponent": "Sidebar Section",
3566
+ "figmaNodeId": "1396:501",
3567
+ "figmaPage": "Sidebar",
3568
+ "component": "SidebarSection",
3569
+ "import": "import { SidebarSection } from 'ionbase-ui';",
3570
+ "docs": "components/sidebar-section/index.html.md",
3571
+ "props": {
3572
+ "Title#1396:96": {
3573
+ "prop": "title"
3574
+ },
3575
+ "Collapsible#1396:99": {
3576
+ "prop": "isCollapsible"
3577
+ },
3578
+ "Collapsed": {
3579
+ "prop": "isExpanded",
3580
+ "values": {
3581
+ "False": true,
3582
+ "True": false
3583
+ },
3584
+ "note": "the names invert: Figma says Collapsed, code says isExpanded (or defaultExpanded)"
3585
+ },
3586
+ "Show Actions#1396:102": {
3587
+ "prop": "actions",
3588
+ "note": "false means actions is omitted"
3589
+ }
3590
+ }
3591
+ },
2975
3592
  "Skeleton": {
2976
3593
  "figmaComponent": "Skeleton",
2977
3594
  "figmaNodeId": "1345:248",
@@ -3015,6 +3632,67 @@
3015
3632
  }
3016
3633
  }
3017
3634
  },
3635
+ "Stepper": {
3636
+ "figmaComponent": "Stepper",
3637
+ "figmaNodeId": "1391:431",
3638
+ "figmaPage": "Stepper",
3639
+ "component": "Stepper",
3640
+ "import": "import { Stepper } from 'ionbase-ui';",
3641
+ "docs": "components/stepper/index.html.md",
3642
+ "props": {
3643
+ "Orientation": {
3644
+ "prop": "orientation",
3645
+ "values": {
3646
+ "Horizontal": "horizontal",
3647
+ "Vertical": "vertical"
3648
+ }
3649
+ }
3650
+ }
3651
+ },
3652
+ "Stepper Step": {
3653
+ "figmaComponent": "Stepper Step",
3654
+ "figmaNodeId": "1391:356",
3655
+ "figmaPage": "Stepper",
3656
+ "component": "StepperStep",
3657
+ "import": "import { StepperStep } from 'ionbase-ui';",
3658
+ "docs": "components/stepper-step/index.html.md",
3659
+ "props": {
3660
+ "Status": {
3661
+ "prop": "status",
3662
+ "values": {
3663
+ "Incomplete": "incomplete",
3664
+ "Complete": "complete",
3665
+ "Error": "error"
3666
+ }
3667
+ },
3668
+ "Current": {
3669
+ "prop": "isCurrent",
3670
+ "values": {
3671
+ "True": true,
3672
+ "False": false
3673
+ }
3674
+ },
3675
+ "Label#1391:0": {
3676
+ "prop": "children"
3677
+ },
3678
+ "Description#1391:13": {
3679
+ "prop": "description"
3680
+ },
3681
+ "Show Description#1391:26": {
3682
+ "prop": "description",
3683
+ "note": "false means description is omitted"
3684
+ },
3685
+ "Number#1391:39": {
3686
+ "ignore": "the step’s position in the list; code numbers steps itself"
3687
+ },
3688
+ "Orientation": {
3689
+ "ignore": "set on the parent Stepper, not per step — drawn per step only because the connector’s geometry differs"
3690
+ },
3691
+ "Show Connector#1391:52": {
3692
+ "ignore": "code draws a connector after every step but the last; Figma needs it switched off by hand on the last instance"
3693
+ }
3694
+ }
3695
+ },
3018
3696
  "Streaming Text": {
3019
3697
  "figmaComponent": "Streaming Text",
3020
3698
  "figmaNodeId": "1164:248",
@@ -3270,6 +3948,58 @@
3270
3948
  }
3271
3949
  }
3272
3950
  },
3951
+ "Tool Call": {
3952
+ "figmaComponent": "Tool Call",
3953
+ "figmaNodeId": "1392:391",
3954
+ "figmaPage": "Tool Call",
3955
+ "component": "ToolCall",
3956
+ "import": "import { ToolCall } from 'ionbase-ui';",
3957
+ "docs": "components/tool-call/index.html.md",
3958
+ "props": {
3959
+ "Status": {
3960
+ "prop": "status",
3961
+ "values": {
3962
+ "Pending": "pending",
3963
+ "Active": "active",
3964
+ "Done": "done",
3965
+ "Failed": "failed",
3966
+ "Skipped": "skipped"
3967
+ }
3968
+ },
3969
+ "Expanded": {
3970
+ "prop": "isExpanded",
3971
+ "values": {
3972
+ "True": true,
3973
+ "False": false
3974
+ },
3975
+ "note": "or defaultExpanded, uncontrolled"
3976
+ },
3977
+ "Title#1392:0": {
3978
+ "prop": "title"
3979
+ },
3980
+ "Name#1392:11": {
3981
+ "prop": "name"
3982
+ },
3983
+ "Show Name#1392:22": {
3984
+ "prop": "name",
3985
+ "note": "false means name is omitted"
3986
+ },
3987
+ "Duration#1392:33": {
3988
+ "prop": "durationMs",
3989
+ "note": "milliseconds in code; Figma shows the formatted text (“1.2s”, “340ms”)"
3990
+ },
3991
+ "Show Duration#1392:44": {
3992
+ "prop": "durationMs",
3993
+ "note": "false means durationMs is omitted"
3994
+ },
3995
+ "Has Details#1392:55": {
3996
+ "ignore": "not a prop: code shows the chevron and makes the header a button when input or output is passed"
3997
+ },
3998
+ "Error Message#1392:66": {
3999
+ "prop": "errorMessage"
4000
+ }
4001
+ }
4002
+ },
3273
4003
  "Tooltip": {
3274
4004
  "figmaComponent": "Tooltip",
3275
4005
  "figmaNodeId": "801:68",
@@ -3301,6 +4031,8 @@
3301
4031
  },
3302
4032
  "unmapped": {
3303
4033
  ".Status Indicator": "The dot Avatar draws in its corners. Avatar owns both instances — Top is Intent=Primary with the check glyph, Bottom is Intent=Success with Show Icon off — and exposes them as `topIndicator` / `bottomIndicator`.\n\nThe leading dot in the name is Figma's own marker for a private component: it is excluded from the published library, so a designer cannot place one on a canvas even if they wanted to. That settles a question this entry used to argue: it is internal by the file's own declaration, not merely by our reading of it. The same call Line, Progress and Progress Heading get for being internal to ScrollProgress — with better evidence.\n\nMap it only if the dot is ever removed.",
4034
+ "Calendar": "The open calendar both pickers render internally — Calendar and CalendarPopover are not exported, because a grid with no field to own its value is not a control a caller should mount. Mode=Single is DatePicker’s, Mode=Range is DateRangePicker’s; Months=Two is `visibleMonths={2}`, Show Presets is `presets` and Show Clear is `isClearable`, all on DateRangePicker. Drawn separately because a frame cannot both hug a field and overlay a grid on it — the same reason Combobox Menu is its own frame.",
4035
+ "Calendar Day": "A day cell inside Calendar — internal to it the way Pagination Item is internal to Pagination. A caller never places one; `isDateUnavailable`, `minValue` and `maxValue` on the pickers decide which state each day draws in.",
3304
4036
  "Combobox Menu": "The list Combobox opens. It is not a separate export: the React component renders its own menu, because the two are one control and splitting them would let a caller mount a listbox with no combobox to own it. Drawn separately in Figma because a frame cannot both hug a field and overlay a list on top of it.",
3305
4037
  "Form Field": "Label, helper text and error wiring are built into Input and Select rather than a separate wrapper — the wrapper is how Figma composes them, not how React does.",
3306
4038
  "Line": "An internal part of the Scroll Progress rail, not a component a caller composes.",
@@ -3312,6 +4044,7 @@
3312
4044
  "Table/Cell Text": "TableCell covers Figma's Table Cell and Cell Text together; the two are never used apart in the design. Recorded in TableCell's contract."
3313
4045
  },
3314
4046
  "codeUnmapped": {
4047
+ "DateRangePicker": "Drawn, but not as a set of its own: its field is Date Picker Type=Range and its calendar is Calendar Mode=Range. A Figma set maps to exactly one code component, and splitting one field into two sets to satisfy that would draw the same box twice. Read Date Picker’s Type note for the handoff.",
3315
4048
  "Icon": "Figma has no Icon component; icons are vector assets dropped into slots. Icon is the React wrapper that gives any of them a size rung and an accessible label, so there is nothing on the Figma side to point at.",
3316
4049
  "LogoMark": "Logo-Ionbase maps to Logo. Figma spells the no-wordmark case as that component's Type axis rather than a separate component; LogoMark is how code spells the same thing.",
3317
4050
  "RadioGroup": "Figma draws Radio only. The group is the thing that owns the selected value, which a static frame cannot express — Figma's Radio State axis is ignored for exactly this reason.",