ionbase-ui 0.59.0 → 0.69.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 (102) 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/SegmentedControl.d.ts +63 -0
  38. package/dist/components/SegmentedControl.d.ts.map +1 -0
  39. package/dist/components/SegmentedControl.js +79 -0
  40. package/dist/components/SegmentedControl.js.map +1 -0
  41. package/dist/components/Sidebar.d.ts +109 -0
  42. package/dist/components/Sidebar.d.ts.map +1 -0
  43. package/dist/components/Sidebar.js +106 -0
  44. package/dist/components/Sidebar.js.map +1 -0
  45. package/dist/components/Stepper.d.ts +73 -0
  46. package/dist/components/Stepper.d.ts.map +1 -0
  47. package/dist/components/Stepper.js +82 -0
  48. package/dist/components/Stepper.js.map +1 -0
  49. package/dist/components/ToolCall.d.ts +66 -0
  50. package/dist/components/ToolCall.d.ts.map +1 -0
  51. package/dist/components/ToolCall.js +78 -0
  52. package/dist/components/ToolCall.js.map +1 -0
  53. package/dist/components/agent-status.d.ts +14 -0
  54. package/dist/components/agent-status.d.ts.map +1 -0
  55. package/dist/components/agent-status.js +16 -0
  56. package/dist/components/agent-status.js.map +1 -0
  57. package/dist/components/index.d.ts +17 -0
  58. package/dist/components/index.d.ts.map +1 -1
  59. package/dist/components/index.js +8 -0
  60. package/dist/components/index.js.map +1 -1
  61. package/dist/components/iso-date.d.ts +53 -0
  62. package/dist/components/iso-date.d.ts.map +1 -0
  63. package/dist/components/iso-date.js +102 -0
  64. package/dist/components/iso-date.js.map +1 -0
  65. package/dist/figma-descriptions.json +107 -52
  66. package/dist/figma-map.json +735 -2
  67. package/dist/meta/AgentActivityStep.json +2 -2
  68. package/dist/meta/DatePicker.json +270 -0
  69. package/dist/meta/DateRangePicker.json +284 -0
  70. package/dist/meta/Header.json +32 -2
  71. package/dist/meta/NumberInput.json +407 -0
  72. package/dist/meta/PromptInput.json +212 -0
  73. package/dist/meta/SegmentedControl.json +217 -0
  74. package/dist/meta/SegmentedControlItem.json +122 -0
  75. package/dist/meta/Sidebar.json +150 -0
  76. package/dist/meta/SidebarItem.json +184 -0
  77. package/dist/meta/SidebarSection.json +131 -0
  78. package/dist/meta/Stepper.json +135 -0
  79. package/dist/meta/StepperStep.json +148 -0
  80. package/dist/meta/Tabs.json +5 -0
  81. package/dist/meta/ToolCall.json +192 -0
  82. package/dist/meta/components.json +5784 -3297
  83. package/dist/meta/contrast.json +7776 -2478
  84. package/dist/meta/index.json +139 -2
  85. package/dist/meta/patterns/AgentRun.json +27 -0
  86. package/dist/meta/patterns/Form.json +9 -0
  87. package/dist/meta/patterns/PageShell.json +43 -3
  88. package/dist/meta/patterns/Wizard.json +20 -1
  89. package/dist/meta/patterns/index.json +10 -1
  90. package/dist/styles/date-picker.css +420 -0
  91. package/dist/styles/date-range-picker.css +280 -0
  92. package/dist/styles/header.css +26 -0
  93. package/dist/styles/index.css +15 -0
  94. package/dist/styles/number-input.css +83 -0
  95. package/dist/styles/prompt-input.css +127 -0
  96. package/dist/styles/segmented-control.css +182 -0
  97. package/dist/styles/sidebar.css +307 -0
  98. package/dist/styles/stepper.css +250 -0
  99. package/dist/styles/tool-call.css +202 -0
  100. package/llms.txt +2 -2
  101. package/package.json +20 -19
  102. package/LICENSE +0 -21
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "package": "ionbase-ui",
3
- "version": "0.59.0",
3
+ "version": "0.69.0",
4
4
  "usage": "Pick a component here, then read dist/meta/<Name>.json for its full contract.",
5
5
  "hooks": [
6
6
  "useToast"
@@ -305,6 +305,32 @@
305
305
  "detail": "dist/meta/ConfidenceIndicator.json",
306
306
  "hasIntent": true
307
307
  },
308
+ "DatePicker": {
309
+ "summary": "A segmented date field with a calendar attached, taking and returning a YYYY-MM-DD string.",
310
+ "status": "stable",
311
+ "variants": {
312
+ "size": [
313
+ "sm",
314
+ "md",
315
+ "lg"
316
+ ]
317
+ },
318
+ "detail": "dist/meta/DatePicker.json",
319
+ "hasIntent": true
320
+ },
321
+ "DateRangePicker": {
322
+ "summary": "Two segmented date fields sharing one calendar, returning an inclusive { start, end } of YYYY-MM-DD strings.",
323
+ "status": "stable",
324
+ "variants": {
325
+ "size": [
326
+ "sm",
327
+ "md",
328
+ "lg"
329
+ ]
330
+ },
331
+ "detail": "dist/meta/DateRangePicker.json",
332
+ "hasIntent": true
333
+ },
308
334
  "Divider": {
309
335
  "summary": "A semantic thematic break, rendered as a real <hr>.",
310
336
  "status": "stable",
@@ -382,7 +408,12 @@
382
408
  "Header": {
383
409
  "summary": "The page header bar. Renders Figma's Desktop, Tablet, Mobile-Closed and Mobile-Open from one DOM tree.",
384
410
  "status": "stable",
385
- "variants": {},
411
+ "variants": {
412
+ "menuType": [
413
+ "dialog",
414
+ "panel"
415
+ ]
416
+ },
386
417
  "detail": "dist/meta/Header.json",
387
418
  "hasIntent": true
388
419
  },
@@ -493,6 +524,19 @@
493
524
  "detail": "dist/meta/NavItem.json",
494
525
  "hasIntent": true
495
526
  },
527
+ "NumberInput": {
528
+ "summary": "A quantity field: formats and parses in the user's locale, clamps to bounds, steps with − and + or the arrow keys, and never changes under the scroll wheel unless asked.",
529
+ "status": "stable",
530
+ "variants": {
531
+ "size": [
532
+ "sm",
533
+ "md",
534
+ "lg"
535
+ ]
536
+ },
537
+ "detail": "dist/meta/NumberInput.json",
538
+ "hasIntent": true
539
+ },
496
540
  "Pagination": {
497
541
  "summary": "Page navigation for a table or list. Renders prev/next arrows, a truncated run of page numbers, and an optional rows-per-page Select.",
498
542
  "status": "stable",
@@ -568,6 +612,18 @@
568
612
  "detail": "dist/meta/ProgressBar.json",
569
613
  "hasIntent": true
570
614
  },
615
+ "PromptInput": {
616
+ "summary": "Where a person writes to an agent: a growing text field, a send control that becomes the stop control while a run is going, and slots for attachments and tools.",
617
+ "status": "stable",
618
+ "variants": {
619
+ "submitKey": [
620
+ "enter",
621
+ "mod-enter"
622
+ ]
623
+ },
624
+ "detail": "dist/meta/PromptInput.json",
625
+ "hasIntent": true
626
+ },
571
627
  "Radio": {
572
628
  "summary": "One option inside a RadioGroup. Meaningless on its own — the group owns the name and the selected value.",
573
629
  "status": "stable",
@@ -611,6 +667,26 @@
611
667
  "detail": "dist/meta/ScrollProgress.json",
612
668
  "hasIntent": true
613
669
  },
670
+ "SegmentedControl": {
671
+ "summary": "Pick one of two to five options, all visible at once. A radio group drawn as a segmented track — it sets a value and controls no panel.",
672
+ "status": "stable",
673
+ "variants": {
674
+ "size": [
675
+ "sm",
676
+ "md",
677
+ "lg"
678
+ ]
679
+ },
680
+ "detail": "dist/meta/SegmentedControl.json",
681
+ "hasIntent": true
682
+ },
683
+ "SegmentedControlItem": {
684
+ "summary": "One segment: a radio drawn as part of the track, with an optional icon.",
685
+ "status": "stable",
686
+ "variants": {},
687
+ "detail": "dist/meta/SegmentedControlItem.json",
688
+ "hasIntent": true
689
+ },
614
690
  "Select": {
615
691
  "summary": "A dropdown over a native <select>, with the same label and error wiring as Input.",
616
692
  "status": "stable",
@@ -624,6 +700,27 @@
624
700
  "detail": "dist/meta/Select.json",
625
701
  "hasIntent": true
626
702
  },
703
+ "Sidebar": {
704
+ "summary": "An application's navigation as a column: pinned header and footer that take any component, a scrolling body of titled, collapsible sections, and nested items that expand.",
705
+ "status": "stable",
706
+ "variants": {},
707
+ "detail": "dist/meta/Sidebar.json",
708
+ "hasIntent": true
709
+ },
710
+ "SidebarItem": {
711
+ "summary": "One sidebar row: a link or a button, with an icon, a count, actions revealed on hover or focus, and nested items that expand.",
712
+ "status": "stable",
713
+ "variants": {},
714
+ "detail": "dist/meta/SidebarItem.json",
715
+ "hasIntent": true
716
+ },
717
+ "SidebarSection": {
718
+ "summary": "A group of sidebar items under an optional title, which can fold away and carry its own actions.",
719
+ "status": "stable",
720
+ "variants": {},
721
+ "detail": "dist/meta/SidebarSection.json",
722
+ "hasIntent": true
723
+ },
627
724
  "Skeleton": {
628
725
  "summary": "The shape of content that has not arrived. Always hidden from assistive technology — the caller owns the announcement.",
629
726
  "status": "stable",
@@ -650,6 +747,31 @@
650
747
  "detail": "dist/meta/Spinner.json",
651
748
  "hasIntent": true
652
749
  },
750
+ "Stepper": {
751
+ "summary": "Where the user is in a task that has an order. An ordered list of steps, each stating its position and status in text.",
752
+ "status": "stable",
753
+ "variants": {
754
+ "orientation": [
755
+ "horizontal",
756
+ "vertical"
757
+ ]
758
+ },
759
+ "detail": "dist/meta/Stepper.json",
760
+ "hasIntent": true
761
+ },
762
+ "StepperStep": {
763
+ "summary": "One step in a Stepper: a numbered indicator, a name, and a status carried by shape and text as well as colour.",
764
+ "status": "stable",
765
+ "variants": {
766
+ "status": [
767
+ "error",
768
+ "incomplete",
769
+ "complete"
770
+ ]
771
+ },
772
+ "detail": "dist/meta/StepperStep.json",
773
+ "hasIntent": true
774
+ },
653
775
  "StreamingText": {
654
776
  "summary": "Model output arriving a token at a time, in a container that does not move. Deliberately not a live region.",
655
777
  "status": "stable",
@@ -811,6 +933,21 @@
811
933
  "detail": "dist/meta/Toggle.json",
812
934
  "hasIntent": true
813
935
  },
936
+ "ToolCall": {
937
+ "summary": "The evidence behind one step of an agent run: which tool, with what input, and what came back — collapsed by default, with any failure shown without a click.",
938
+ "status": "stable",
939
+ "variants": {
940
+ "status": [
941
+ "pending",
942
+ "active",
943
+ "done",
944
+ "failed",
945
+ "skipped"
946
+ ]
947
+ },
948
+ "detail": "dist/meta/ToolCall.json",
949
+ "hasIntent": true
950
+ },
814
951
  "Tooltip": {
815
952
  "summary": "A text-only hint attached to a trigger. Opens on hover and on focus.",
816
953
  "status": "stable",
@@ -10,6 +10,8 @@
10
10
  "AgentActivity",
11
11
  "AgentActivityStep",
12
12
  "AgentStop",
13
+ "PromptInput",
14
+ "ToolCall",
13
15
  "StreamingText",
14
16
  "Alert",
15
17
  "Badge"
@@ -18,6 +20,8 @@
18
20
  "A header row carrying the task name and the AgentStop control. The stop is the first thing on screen and it stays there for the whole run.",
19
21
  "An AgentActivity list of AgentActivityStep, one per step, in the order they happened. Exactly one step is `active` at a time.",
20
22
  "The result below the log, in a StreamingText with `isStreaming` true until the run ends.",
23
+ "A ToolCall under any step that called a tool, collapsed, with the same `status` as its step. The step is the account; the ToolCall is the evidence for it.",
24
+ "When the run was started from a PromptInput, that composer's `isRunning` stop IS the run's AgentStop. Render one stop control, not two.",
21
25
  "An Alert only when the run fails or is stopped — not for ordinary progress, which the step log already carries."
22
26
  ],
23
27
  "states": {
@@ -53,6 +57,21 @@
53
57
  "size",
54
58
  "stopOnEscape"
55
59
  ],
60
+ "PromptInput": [
61
+ "label",
62
+ "onSubmit",
63
+ "isRunning",
64
+ "onStop",
65
+ "isStopping"
66
+ ],
67
+ "ToolCall": [
68
+ "title",
69
+ "name",
70
+ "status",
71
+ "input",
72
+ "output",
73
+ "errorMessage"
74
+ ],
56
75
  "StreamingText": [
57
76
  "isStreaming",
58
77
  "minLines",
@@ -84,6 +103,14 @@
84
103
  "md"
85
104
  ]
86
105
  },
106
+ "ToolCall": {
107
+ "status": [
108
+ "active",
109
+ "done",
110
+ "failed",
111
+ "skipped"
112
+ ]
113
+ },
87
114
  "Alert": {
88
115
  "intent": [
89
116
  "error",
@@ -13,6 +13,7 @@
13
13
  "RadioGroup",
14
14
  "Toggle",
15
15
  "PhoneInput",
16
+ "NumberInput",
16
17
  "Button",
17
18
  "Alert",
18
19
  "Divider"
@@ -44,6 +45,14 @@
44
45
  }
45
46
  },
46
47
  "propsUsed": {
48
+ "NumberInput": [
49
+ "label",
50
+ "minValue",
51
+ "maxValue",
52
+ "formatOptions",
53
+ "isInvalid",
54
+ "errorMessage"
55
+ ],
47
56
  "Input": [
48
57
  "label",
49
58
  "description",
@@ -7,6 +7,10 @@
7
7
  "composes": [
8
8
  "Header",
9
9
  "NavItem",
10
+ "Sidebar",
11
+ "SidebarSection",
12
+ "SidebarItem",
13
+ "Drawer",
10
14
  "Logo",
11
15
  "LogoMark",
12
16
  "Avatar",
@@ -18,7 +22,8 @@
18
22
  "Header at the top with the brand in `brand`, primary navigation in `center` and account actions in `end`.",
19
23
  "One <main> content region, named, holding the page's own heading as its h1.",
20
24
  "ToastProvider mounted once around the whole shell, not per route.",
21
- "Breadcrumbs, when present, sit inside <main> above the h1 — they describe where the content is, not where the chrome is."
25
+ "Breadcrumbs, when present, sit inside <main> above the h1 — they describe where the content is, not where the chrome is.",
26
+ "When navigation is hierarchical or longer than a header row holds, a Sidebar replaces the NavItems in Header's `center`: Header keeps the brand and account actions, and the Sidebar sits beside <main> as the primary navigation. Below the tablet breakpoint the same Sidebar moves into a Drawer opened by Header's own toggle with `menuType=\"dialog\"` — one copy, not two, and one menu button."
22
27
  ],
23
28
  "states": {
24
29
  "loading": {
@@ -41,13 +46,38 @@
41
46
  "end",
42
47
  "open",
43
48
  "onOpenChange",
44
- "menuLabel"
49
+ "menuLabel",
50
+ "menuType"
45
51
  ],
46
52
  "NavItem": [
47
53
  "icon",
48
54
  "showChevron",
49
55
  "href"
50
56
  ],
57
+ "Sidebar": [
58
+ "label",
59
+ "header",
60
+ "footer"
61
+ ],
62
+ "SidebarSection": [
63
+ "title",
64
+ "isCollapsible",
65
+ "actions"
66
+ ],
67
+ "SidebarItem": [
68
+ "label",
69
+ "icon",
70
+ "href",
71
+ "isCurrent",
72
+ "badge",
73
+ "actions"
74
+ ],
75
+ "Drawer": [
76
+ "isOpen",
77
+ "onOpenChange",
78
+ "title",
79
+ "placement"
80
+ ],
51
81
  "ToastProvider": [
52
82
  "placement",
53
83
  "limit"
@@ -66,6 +96,11 @@
66
96
  "placement": [
67
97
  "top-right"
68
98
  ]
99
+ },
100
+ "Header": {
101
+ "menuType": [
102
+ "dialog"
103
+ ]
69
104
  }
70
105
  },
71
106
  "a11y": {
@@ -73,7 +108,8 @@
73
108
  "`menuLabel` on Header — the mobile toggle is icon-only",
74
109
  "a <nav> with its own accessible name wrapping the NavItems; Header supplies the banner landmark, not the navigation one",
75
110
  "exactly one <main>, and exactly one h1 inside it",
76
- "`aria-current=\"page\"` on the NavItem for the current route — colour alone does not tell a screen-reader user where they are"
111
+ "`aria-current=\"page\"` on the NavItem for the current route — colour alone does not tell a screen-reader user where they are",
112
+ "with a Sidebar, `isCurrent` on the SidebarItem for the current route, and a Sidebar `label` distinct from any other nav on the page"
77
113
  ],
78
114
  "notes": [
79
115
  "The desktop/tablet/mobile switch is a media query inside Header. Do not duplicate that decision in React state."
@@ -88,6 +124,10 @@
88
124
  "dont": "the page title as an h2 because the logo is an h1",
89
125
  "why": "the brand is not a heading; the page's subject is"
90
126
  },
127
+ {
128
+ "dont": "a Sidebar AND the same destinations as NavItems in Header",
129
+ "why": "two navigation landmarks listing the same pages double every link a screen-reader user tabs through"
130
+ },
91
131
  {
92
132
  "dont": "rendering a second nav for mobile",
93
133
  "why": "Header moves the one copy, and two copies duplicate every link in the accessibility tree"
@@ -6,6 +6,8 @@
6
6
  "the whole task is too long to present as one form without abandonment"
7
7
  ],
8
8
  "composes": [
9
+ "Stepper",
10
+ "StepperStep",
9
11
  "Button",
10
12
  "Input",
11
13
  "Select",
@@ -18,7 +20,7 @@
18
20
  "Modal"
19
21
  ],
20
22
  "structure": [
21
- "A step indicator naming every step and marking the current one — not Tabs, because the steps are not peers and cannot be visited in any order.",
23
+ "A Stepper naming every step and marking the current one — not Tabs, because the steps are not peers and cannot be visited in any order. Completed steps link back; incomplete ones do not.",
22
24
  "One step's fields at a time, each step a Form in its own right.",
23
25
  "Back and Next, plus save-and-exit for anything longer than three steps.",
24
26
  "A final review step listing every answer with a link back to the step that set it."
@@ -42,6 +44,16 @@
42
44
  }
43
45
  },
44
46
  "propsUsed": {
47
+ "Stepper": [
48
+ "label",
49
+ "orientation"
50
+ ],
51
+ "StepperStep": [
52
+ "status",
53
+ "isCurrent",
54
+ "onPress",
55
+ "description"
56
+ ],
45
57
  "Button": [
46
58
  "variant",
47
59
  "size",
@@ -78,6 +90,13 @@
78
90
  ]
79
91
  },
80
92
  "variantsUsed": {
93
+ "StepperStep": {
94
+ "status": [
95
+ "incomplete",
96
+ "complete",
97
+ "error"
98
+ ]
99
+ },
81
100
  "Button": {
82
101
  "variant": [
83
102
  "primary-brand",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "package": "ionbase-ui",
3
- "version": "0.59.0",
3
+ "version": "0.69.0",
4
4
  "usage": "A pattern is a documented composition of components, not a component. Read one here, then read the contracts of what it composes.",
5
5
  "patterns": {
6
6
  "AgentRun": {
@@ -9,6 +9,8 @@
9
9
  "AgentActivity",
10
10
  "AgentActivityStep",
11
11
  "AgentStop",
12
+ "PromptInput",
13
+ "ToolCall",
12
14
  "StreamingText",
13
15
  "Alert",
14
16
  "Badge"
@@ -89,6 +91,7 @@
89
91
  "RadioGroup",
90
92
  "Toggle",
91
93
  "PhoneInput",
94
+ "NumberInput",
92
95
  "Button",
93
96
  "Alert",
94
97
  "Divider"
@@ -123,6 +126,10 @@
123
126
  "composes": [
124
127
  "Header",
125
128
  "NavItem",
129
+ "Sidebar",
130
+ "SidebarSection",
131
+ "SidebarItem",
132
+ "Drawer",
126
133
  "Logo",
127
134
  "LogoMark",
128
135
  "Avatar",
@@ -164,6 +171,8 @@
164
171
  "Wizard": {
165
172
  "summary": "A sequence of steps with per-step validation, where progress survives leaving.",
166
173
  "composes": [
174
+ "Stepper",
175
+ "StepperStep",
167
176
  "Button",
168
177
  "Input",
169
178
  "Select",