ionbase-ui 0.86.0 → 0.88.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.
- package/dist/components/MultiSelect.d.ts +90 -0
- package/dist/components/MultiSelect.d.ts.map +1 -0
- package/dist/components/MultiSelect.js +189 -0
- package/dist/components/MultiSelect.js.map +1 -0
- package/dist/components/Toolbar.d.ts +35 -0
- package/dist/components/Toolbar.d.ts.map +1 -0
- package/dist/components/Toolbar.js +81 -0
- package/dist/components/Toolbar.js.map +1 -0
- package/dist/components/index.d.ts +4 -0
- package/dist/components/index.d.ts.map +1 -1
- package/dist/components/index.js +2 -0
- package/dist/components/index.js.map +1 -1
- package/dist/figma-descriptions.json +89 -79
- package/dist/figma-map.json +97 -2
- package/dist/meta/CheckboxGroup.json +2 -2
- package/dist/meta/Combobox.json +8 -0
- package/dist/meta/MultiSelect.json +269 -0
- package/dist/meta/Select.json +2 -1
- package/dist/meta/Toolbar.json +130 -0
- package/dist/meta/components.json +412 -4
- package/dist/meta/contrast.json +28 -0
- package/dist/meta/index.json +26 -1
- package/dist/meta/patterns/DataTable.json +21 -2
- package/dist/meta/patterns/index.json +3 -1
- package/dist/styles/index.css +2 -0
- package/dist/styles/multi-select.css +104 -0
- package/dist/styles/toolbar.css +36 -0
- package/llms.txt +2 -2
- package/package.json +1 -1
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* MultiSelect
|
|
3
|
+
*
|
|
4
|
+
* The field is Combobox's, which is Input's box: `.ion-input .ion-combobox`
|
|
5
|
+
* with `.ion-multi-select` on top, so the three never drift apart. The menu is
|
|
6
|
+
* Combobox's menu, block and all, which is also what keeps the contrast gate
|
|
7
|
+
* measuring these rows against `surface/raised` — see combobox.css.
|
|
8
|
+
*
|
|
9
|
+
* What is new is the row's check box, and the tags row under the field.
|
|
10
|
+
*
|
|
11
|
+
* THE CHECK IS CHECKBOX'S BOX, DRAWN
|
|
12
|
+
*
|
|
13
|
+
* 16px at radius/xs; empty it is 2px `border/stronger`, filled it drops to
|
|
14
|
+
* 1px of `border/primary-strong` over `surface/primary` with the flush bevel —
|
|
15
|
+
* the Small checkbox exactly. A multi-select row reads as "tick as many as you
|
|
16
|
+
* like" only if its mark is recognisably a checkbox; Combobox's single-select
|
|
17
|
+
* tint says "the one", which is the opposite.
|
|
18
|
+
*
|
|
19
|
+
* NO SELECTED TINT
|
|
20
|
+
*
|
|
21
|
+
* Combobox tints its one selected row. Here any number can be selected, and a
|
|
22
|
+
* list of tinted rows loses the one thing the tint is for — so the check says
|
|
23
|
+
* selected, and the background is left to say focused.
|
|
24
|
+
*/
|
|
25
|
+
.ion-multi-select-menu__option {
|
|
26
|
+
flex-direction: row;
|
|
27
|
+
align-items: flex-start;
|
|
28
|
+
gap: var(--spacing-8);
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
.ion-multi-select-menu__text {
|
|
32
|
+
display: flex;
|
|
33
|
+
flex-direction: column;
|
|
34
|
+
gap: var(--spacing-2);
|
|
35
|
+
min-width: 0;
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
.ion-multi-select-menu__check {
|
|
39
|
+
display: inline-flex;
|
|
40
|
+
align-items: center;
|
|
41
|
+
justify-content: center;
|
|
42
|
+
flex-shrink: 0;
|
|
43
|
+
width: var(--spacing-16);
|
|
44
|
+
height: var(--spacing-16);
|
|
45
|
+
|
|
46
|
+
/* Centred on the label's first line, as Checkbox centres its box. */
|
|
47
|
+
margin-top: calc((var(--type-body-line-height) - var(--spacing-16)) / 2);
|
|
48
|
+
background-color: var(--surface-default);
|
|
49
|
+
border: var(--border-width-thick) solid var(--border-stronger);
|
|
50
|
+
border-radius: var(--radius-xs);
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
.ion-multi-select-menu__check svg {
|
|
54
|
+
display: block;
|
|
55
|
+
|
|
56
|
+
/* Checkbox's derived mark at 16: box / 2 + 4. */
|
|
57
|
+
width: calc(var(--spacing-16) / 2 + var(--spacing-4));
|
|
58
|
+
height: calc(var(--spacing-16) / 2 + var(--spacing-4));
|
|
59
|
+
opacity: 0;
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
.ion-combobox-menu__option.ion-multi-select-menu__option[data-selected='true'] {
|
|
63
|
+
background-color: transparent;
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
.ion-combobox-menu__option.ion-multi-select-menu__option[data-focused='true'] {
|
|
67
|
+
background-color: var(--surface-hover);
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
.ion-multi-select-menu__option[data-selected='true'] .ion-combobox-menu__label {
|
|
71
|
+
font-weight: var(--font-weight-regular);
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
.ion-multi-select-menu__option[data-selected='true']
|
|
75
|
+
.ion-multi-select-menu__check {
|
|
76
|
+
/* Coloured only once filled: empty, the glyph is hidden and has no ground. */
|
|
77
|
+
color: var(--icon-on-color);
|
|
78
|
+
background-color: var(--surface-primary);
|
|
79
|
+
border-width: var(--border-width-default);
|
|
80
|
+
border-color: var(--border-primary-strong);
|
|
81
|
+
box-shadow: var(--ion-shadow-raised-flush-xs);
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
.ion-multi-select-menu__option[data-selected='true']
|
|
85
|
+
.ion-multi-select-menu__check
|
|
86
|
+
svg {
|
|
87
|
+
opacity: 1;
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
.ion-multi-select-menu__option[data-disabled='true']
|
|
91
|
+
.ion-multi-select-menu__check {
|
|
92
|
+
background-color: var(--surface-disabled);
|
|
93
|
+
border-color: var(--border-disabled);
|
|
94
|
+
box-shadow: none;
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
@media (forced-colors: active) {
|
|
98
|
+
.ion-multi-select-menu__option[data-selected='true']
|
|
99
|
+
.ion-multi-select-menu__check {
|
|
100
|
+
background-color: Highlight;
|
|
101
|
+
border-color: Highlight;
|
|
102
|
+
color: HighlightText;
|
|
103
|
+
}
|
|
104
|
+
}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Toolbar
|
|
3
|
+
*
|
|
4
|
+
* Drawn in Figma as `Toolbar` on the Toolbar page. A row of controls 8 apart —
|
|
5
|
+
* the gap PageHeader's actions and the demo's bulk bar already used, so a
|
|
6
|
+
* toolbar dropped into either changes nothing — centred on one line, wrapping
|
|
7
|
+
* rather than overflowing on a narrow screen.
|
|
8
|
+
*
|
|
9
|
+
* Wrapping keeps DOM order, and DOM order is arrow-key order, so a wrapped
|
|
10
|
+
* toolbar still walks left to right, top to bottom.
|
|
11
|
+
*
|
|
12
|
+
* The separator is Divider, vertical: an <hr> with `aria-orientation`, which a
|
|
13
|
+
* screen reader announces between groups and focus skips. Inset 4 top and
|
|
14
|
+
* bottom so it reads as a break between groups rather than a border drawn
|
|
15
|
+
* around the row.
|
|
16
|
+
*/
|
|
17
|
+
.ion-toolbar {
|
|
18
|
+
display: flex;
|
|
19
|
+
flex-wrap: wrap;
|
|
20
|
+
align-items: center;
|
|
21
|
+
gap: var(--spacing-8);
|
|
22
|
+
min-width: 0;
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
.ion-toolbar--vertical {
|
|
26
|
+
flex-direction: column;
|
|
27
|
+
align-items: stretch;
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
.ion-toolbar > .ion-divider--vertical {
|
|
31
|
+
margin-block: var(--spacing-4);
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
.ion-toolbar--vertical > .ion-divider--horizontal {
|
|
35
|
+
margin-inline: var(--spacing-4);
|
|
36
|
+
}
|
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.
|
|
5
|
+
Version 0.88.0. 89 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`, `Card`, `ChartLegend`, `ChartTooltip`, `Checkbox`, `CheckboxGroup`, `Citation`, `CitationList`, `CitationListItem`, `Combobox`, `CommandPalette`, `ConfidenceIndicator`, `DatePicker`, `DateRangePicker`, `Divider`, `Drawer`, `EmptyState`, `Fieldset`, `FileUpload`, `FullCard`, `Header`, `Icon`, `Input`, `Kbd`, `Link`, `Logo`, `LogoMark`, `Menu`, `MenuItem`, `MenuSection`, `MenuTrigger`, `Modal`, `NavItem`, `NumberInput`, `PageHeader`, `Pagination`, `PhoneInput`, `Popover`, `ProgressBar`, `PromptInput`, `Radio`, `RadioGroup`, `ScrollProgress`, `SearchField`, `SegmentedControl`, `SegmentedControlItem`, `Select`, `SettingRow`, `Sidebar`, `SidebarItem`, `SidebarSection`, `Skeleton`, `Spinner`, `StatGroup`, `StatTile`, `Stepper`, `StepperStep`, `StreamingText`, `TabItem`, `Table`, `TableBody`, `TableCell`, `TableHead`, `TableRow`, `Tabs`, `Tag`, `TagGroup`, `Textarea`, `TimeField`, `Toast`, `ToastProvider`, `Toggle`, `ToolCall`, `Tooltip`
|
|
16
|
+
`Accordion`, `AccordionItem`, `AgentActivity`, `AgentActivityStep`, `AgentStop`, `Alert`, `ApprovalGate`, `Avatar`, `AvatarGradient`, `AvatarGroup`, `Badge`, `Breadcrumb`, `BreadcrumbItem`, `Button`, `Card`, `ChartLegend`, `ChartTooltip`, `Checkbox`, `CheckboxGroup`, `Citation`, `CitationList`, `CitationListItem`, `Combobox`, `CommandPalette`, `ConfidenceIndicator`, `DatePicker`, `DateRangePicker`, `Divider`, `Drawer`, `EmptyState`, `Fieldset`, `FileUpload`, `FullCard`, `Header`, `Icon`, `Input`, `Kbd`, `Link`, `Logo`, `LogoMark`, `Menu`, `MenuItem`, `MenuSection`, `MenuTrigger`, `Modal`, `MultiSelect`, `NavItem`, `NumberInput`, `PageHeader`, `Pagination`, `PhoneInput`, `Popover`, `ProgressBar`, `PromptInput`, `Radio`, `RadioGroup`, `ScrollProgress`, `SearchField`, `SegmentedControl`, `SegmentedControlItem`, `Select`, `SettingRow`, `Sidebar`, `SidebarItem`, `SidebarSection`, `Skeleton`, `Spinner`, `StatGroup`, `StatTile`, `Stepper`, `StepperStep`, `StreamingText`, `TabItem`, `Table`, `TableBody`, `TableCell`, `TableHead`, `TableRow`, `Tabs`, `Tag`, `TagGroup`, `Textarea`, `TimeField`, `Toast`, `ToastProvider`, `Toggle`, `Toolbar`, `ToolCall`, `Tooltip`
|
|
17
17
|
|
|
18
18
|
## Patterns
|
|
19
19
|
|