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
@@ -0,0 +1,202 @@
1
+ /*
2
+ * ToolCall
3
+ *
4
+ * Drawn in Figma as `Tool Call` (1392:391), from this file. The header row is AgentActivity's step one rung up —
5
+ * same glyphs, same status colours, read from the same module — and the
6
+ * disclosure chevron and its rotation are Accordion's. The error strip is
7
+ * Alert's subtle error pairing.
8
+ *
9
+ * The card surface is on the BLOCK, not an inner wrapper, so the contrast gate
10
+ * resolves the header's translucent `surface/hover` against a real ground.
11
+ * drawer.css records what happens otherwise: the pairing is skipped, silently.
12
+ */
13
+ .ion-tool-call {
14
+ overflow: hidden;
15
+ border: var(--border-width-default) solid var(--border-subtle);
16
+ border-radius: var(--radius-md);
17
+ background-color: var(--surface-default);
18
+ color: var(--text-default);
19
+ font-family: var(--font-family-sans);
20
+ font-size: var(--type-body-sm);
21
+ line-height: var(--type-body-sm-line-height);
22
+ }
23
+
24
+ .ion-tool-call__header {
25
+ display: flex;
26
+ align-items: center;
27
+ gap: var(--spacing-8);
28
+ width: 100%;
29
+ margin: 0;
30
+ padding: var(--spacing-8) var(--spacing-12);
31
+ border: 0;
32
+ background: none;
33
+ color: inherit;
34
+ font: inherit;
35
+ text-align: start;
36
+ }
37
+
38
+ button.ion-tool-call__header {
39
+ cursor: pointer;
40
+ }
41
+
42
+ @media (hover: hover) {
43
+ /* The colour is restated so the contrast gate has a pair to measure; with
44
+ * the background alone the hover state was never checked. */
45
+ button.ion-tool-call__header:hover {
46
+ background-color: var(--surface-hover);
47
+ color: var(--text-default);
48
+ }
49
+ }
50
+
51
+ button.ion-tool-call__header:focus-visible {
52
+ outline: var(--border-width-thick) solid var(--border-focus);
53
+ outline-offset: calc(-1 * var(--border-width-thick));
54
+ }
55
+
56
+ .ion-tool-call__glyph {
57
+ display: inline-flex;
58
+ flex: none;
59
+ width: var(--icon-size-sm);
60
+ height: var(--icon-size-sm);
61
+ color: var(--icon-tertiary);
62
+ }
63
+
64
+ .ion-tool-call__glyph svg,
65
+ .ion-tool-call__chevron svg {
66
+ width: 100%;
67
+ height: 100%;
68
+ }
69
+
70
+ .ion-tool-call__heading {
71
+ display: flex;
72
+ flex-wrap: wrap;
73
+ align-items: baseline;
74
+ flex: 1 1 auto;
75
+ column-gap: var(--spacing-8);
76
+ min-width: 0;
77
+ }
78
+
79
+ .ion-tool-call__title {
80
+ font-weight: var(--font-weight-medium);
81
+ }
82
+
83
+ .ion-tool-call__name {
84
+ color: var(--text-tertiary);
85
+ font-family: var(--font-family-mono);
86
+ font-size: var(--type-caption);
87
+ line-height: var(--type-caption-line-height);
88
+ overflow-wrap: anywhere;
89
+ }
90
+
91
+ .ion-tool-call__duration {
92
+ flex: none;
93
+ color: var(--text-tertiary);
94
+ font-size: var(--type-caption);
95
+ line-height: var(--type-caption-line-height);
96
+ font-variant-numeric: tabular-nums;
97
+ }
98
+
99
+ .ion-tool-call__chevron {
100
+ display: inline-flex;
101
+ flex: none;
102
+ width: var(--icon-size-sm);
103
+ height: var(--icon-size-sm);
104
+ color: var(--icon-secondary);
105
+ transition: transform var(--ion-duration-base) var(--ion-ease-out);
106
+ }
107
+
108
+ .ion-tool-call--expanded .ion-tool-call__chevron {
109
+ transform: rotate(180deg);
110
+ }
111
+
112
+ /*
113
+ * Outside the disclosure on purpose: the failure is the one part of a call a
114
+ * reader must not have to click to find.
115
+ */
116
+ .ion-tool-call__error {
117
+ padding: var(--spacing-8) var(--spacing-12);
118
+ border-top: var(--border-width-default) solid var(--border-error-subtle);
119
+ background-color: var(--surface-error-subtle);
120
+ color: var(--text-error);
121
+ }
122
+
123
+ .ion-tool-call__body {
124
+ display: flex;
125
+ flex-direction: column;
126
+ gap: var(--spacing-12);
127
+ padding: var(--spacing-12);
128
+ border-top: var(--border-width-default) solid var(--border-subtle);
129
+ }
130
+
131
+ .ion-tool-call__section {
132
+ display: flex;
133
+ flex-direction: column;
134
+ gap: var(--spacing-4);
135
+ }
136
+
137
+ .ion-tool-call__label {
138
+ color: var(--text-secondary);
139
+ font-size: var(--type-caption);
140
+ line-height: var(--type-caption-line-height);
141
+ font-weight: var(--font-weight-medium);
142
+ }
143
+
144
+ /*
145
+ * Wraps rather than scrolling sideways: a long string in a JSON value would
146
+ * otherwise force a horizontal scrollbar on a phone. Height is capped, and the
147
+ * element is focusable (tabIndex 0 in the component) so the cap never hides
148
+ * content from a keyboard user.
149
+ */
150
+ .ion-tool-call__payload {
151
+ max-height: 16rem;
152
+ margin: 0;
153
+ padding: var(--spacing-8);
154
+ overflow: auto;
155
+ border-radius: var(--radius-sm);
156
+ background-color: var(--surface-muted);
157
+ color: var(--text-default);
158
+ font-family: var(--font-family-mono);
159
+ font-size: var(--type-caption);
160
+ line-height: var(--type-caption-line-height);
161
+ white-space: pre-wrap;
162
+ overflow-wrap: anywhere;
163
+ }
164
+
165
+ .ion-tool-call__payload:focus-visible {
166
+ outline: var(--border-width-thick) solid var(--border-focus);
167
+ outline-offset: 2px;
168
+ }
169
+
170
+ /* Status: the colour is the second signal — glyph shape and hidden text first. */
171
+ .ion-tool-call--active .ion-tool-call__glyph {
172
+ color: var(--icon-primary);
173
+ animation: ion-tool-call-spin 1.2s linear infinite;
174
+ }
175
+
176
+ .ion-tool-call--done .ion-tool-call__glyph {
177
+ color: var(--icon-success);
178
+ }
179
+
180
+ .ion-tool-call--failed .ion-tool-call__glyph {
181
+ color: var(--icon-error);
182
+ }
183
+
184
+ .ion-tool-call--skipped .ion-tool-call__title {
185
+ color: var(--text-tertiary);
186
+ }
187
+
188
+ @keyframes ion-tool-call-spin {
189
+ to {
190
+ transform: rotate(360deg);
191
+ }
192
+ }
193
+
194
+ @media (prefers-reduced-motion: reduce) {
195
+ .ion-tool-call--active .ion-tool-call__glyph {
196
+ animation: none;
197
+ }
198
+
199
+ .ion-tool-call__chevron {
200
+ transition: none;
201
+ }
202
+ }
package/llms.txt CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  > IonBase is a React design system for enterprise SaaS, built to be consumed by an agent rather than read by a developer. Every component ships a machine-readable contract carrying the judgement a type signature cannot: when to use it, what to use instead, the anti-patterns, and what it guarantees for accessibility versus what it requires of you.
4
4
 
5
- Version 0.59.0. 58 components.
5
+ Version 0.70.0. 70 components.
6
6
 
7
7
  ## Read these, in this order
8
8
 
@@ -13,7 +13,7 @@ Both are importable: `ionbase-ui/meta/index` and `ionbase-ui/meta/<Name>.json`.
13
13
 
14
14
  ## Components
15
15
 
16
- `Accordion`, `AccordionItem`, `AgentActivity`, `AgentActivityStep`, `AgentStop`, `Alert`, `ApprovalGate`, `Avatar`, `AvatarGradient`, `AvatarGroup`, `Badge`, `Breadcrumb`, `BreadcrumbItem`, `Button`, `Checkbox`, `Citation`, `CitationList`, `CitationListItem`, `Combobox`, `ConfidenceIndicator`, `Divider`, `Drawer`, `EmptyState`, `FileUpload`, `FullCard`, `Header`, `Icon`, `Input`, `Link`, `Logo`, `LogoMark`, `Menu`, `MenuItem`, `Modal`, `NavItem`, `Pagination`, `PhoneInput`, `Popover`, `ProgressBar`, `Radio`, `RadioGroup`, `ScrollProgress`, `Select`, `Skeleton`, `Spinner`, `StreamingText`, `TabItem`, `Table`, `TableBody`, `TableCell`, `TableHead`, `TableRow`, `Tabs`, `Textarea`, `Toast`, `ToastProvider`, `Toggle`, `Tooltip`
16
+ `Accordion`, `AccordionItem`, `AgentActivity`, `AgentActivityStep`, `AgentStop`, `Alert`, `ApprovalGate`, `Avatar`, `AvatarGradient`, `AvatarGroup`, `Badge`, `Breadcrumb`, `BreadcrumbItem`, `Button`, `Checkbox`, `Citation`, `CitationList`, `CitationListItem`, `Combobox`, `ConfidenceIndicator`, `DatePicker`, `DateRangePicker`, `Divider`, `Drawer`, `EmptyState`, `FileUpload`, `FullCard`, `Header`, `Icon`, `Input`, `Link`, `Logo`, `LogoMark`, `Menu`, `MenuItem`, `Modal`, `NavItem`, `NumberInput`, `Pagination`, `PhoneInput`, `Popover`, `ProgressBar`, `PromptInput`, `Radio`, `RadioGroup`, `ScrollProgress`, `SegmentedControl`, `SegmentedControlItem`, `Select`, `Sidebar`, `SidebarItem`, `SidebarSection`, `Skeleton`, `Spinner`, `Stepper`, `StepperStep`, `StreamingText`, `TabItem`, `Table`, `TableBody`, `TableCell`, `TableHead`, `TableRow`, `Tabs`, `Textarea`, `Toast`, `ToastProvider`, `Toggle`, `ToolCall`, `Tooltip`
17
17
 
18
18
  ## Patterns
19
19
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ionbase-ui",
3
- "version": "0.59.0",
3
+ "version": "0.70.0",
4
4
  "description": "IonBase Design System — accessible React components, styles and design tokens in one package",
5
5
  "license": "MIT",
6
6
  "type": "module",
@@ -60,6 +60,23 @@
60
60
  "publishConfig": {
61
61
  "access": "public"
62
62
  },
63
+ "scripts": {
64
+ "dev": "tsc --watch",
65
+ "build": "node scripts/sync-tokens.mjs && tsc --build --force && node scripts/copy-css.mjs && node scripts/verify-client-boundaries.mjs && node scripts/verify-contrast.mjs && node scripts/build-meta.mjs && node scripts/verify-meta.mjs && node scripts/build-patterns.mjs && node scripts/verify-figma-map.mjs && node scripts/build-figma-descriptions.mjs && node scripts/verify-figma-descriptions.mjs && node scripts/build-llms.mjs",
66
+ "typecheck": "tsc --noEmit",
67
+ "lint": "eslint . && stylelint \"src/styles/*.css\"",
68
+ "format": "prettier --check .",
69
+ "icons:verify": "node scripts/verify-icons.mjs",
70
+ "meta:build": "node scripts/build-meta.mjs",
71
+ "meta:verify": "node scripts/build-meta.mjs && node scripts/verify-meta.mjs",
72
+ "contrast": "node scripts/verify-contrast.mjs",
73
+ "contrast:list": "node scripts/verify-contrast.mjs --list",
74
+ "llms": "node scripts/build-llms.mjs",
75
+ "patterns": "node scripts/build-patterns.mjs",
76
+ "figma:map": "node scripts/verify-figma-map.mjs",
77
+ "figma:descriptions": "node scripts/build-figma-descriptions.mjs",
78
+ "figma:applied": "node scripts/record-figma-descriptions.mjs"
79
+ },
63
80
  "peerDependencies": {
64
81
  "react": "^18.0.0 || ^19.0.0",
65
82
  "react-dom": "^18.0.0 || ^19.0.0",
@@ -68,6 +85,7 @@
68
85
  "eslint": "^8.57.0 || ^9.0.0"
69
86
  },
70
87
  "dependencies": {
88
+ "@internationalized/date": "^3.12.2",
71
89
  "@react-stately/collections": "^3.13.1",
72
90
  "@react-types/shared": "^3.36.0",
73
91
  "react-aria": "^3.34.0",
@@ -88,22 +106,5 @@
88
106
  "eslint": {
89
107
  "optional": true
90
108
  }
91
- },
92
- "scripts": {
93
- "dev": "tsc --watch",
94
- "build": "node scripts/sync-tokens.mjs && tsc --build --force && node scripts/copy-css.mjs && node scripts/verify-client-boundaries.mjs && node scripts/verify-contrast.mjs && node scripts/build-meta.mjs && node scripts/verify-meta.mjs && node scripts/build-patterns.mjs && node scripts/verify-figma-map.mjs && node scripts/build-figma-descriptions.mjs && node scripts/verify-figma-descriptions.mjs && node scripts/build-llms.mjs",
95
- "typecheck": "tsc --noEmit",
96
- "lint": "eslint . && stylelint \"src/styles/*.css\"",
97
- "format": "prettier --check .",
98
- "icons:verify": "node scripts/verify-icons.mjs",
99
- "meta:build": "node scripts/build-meta.mjs",
100
- "meta:verify": "node scripts/build-meta.mjs && node scripts/verify-meta.mjs",
101
- "contrast": "node scripts/verify-contrast.mjs",
102
- "contrast:list": "node scripts/verify-contrast.mjs --list",
103
- "llms": "node scripts/build-llms.mjs",
104
- "patterns": "node scripts/build-patterns.mjs",
105
- "figma:map": "node scripts/verify-figma-map.mjs",
106
- "figma:descriptions": "node scripts/build-figma-descriptions.mjs",
107
- "figma:applied": "node scripts/record-figma-descriptions.mjs"
108
109
  }
109
- }
110
+ }
package/LICENSE DELETED
@@ -1,21 +0,0 @@
1
- MIT License
2
-
3
- Copyright (c) 2026 IonBase
4
-
5
- Permission is hereby granted, free of charge, to any person obtaining a copy
6
- of this software and associated documentation files (the "Software"), to deal
7
- in the Software without restriction, including without limitation the rights
8
- to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
- copies of the Software, and to permit persons to whom the Software is
10
- furnished to do so, subject to the following conditions:
11
-
12
- The above copyright notice and this permission notice shall be included in all
13
- copies or substantial portions of the Software.
14
-
15
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
- AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
- LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
- OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
- SOFTWARE.