ionbase-ui 0.51.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.
- package/dist/components/Accordion.d.ts +54 -0
- package/dist/components/Accordion.d.ts.map +1 -0
- package/dist/components/Accordion.js +68 -0
- package/dist/components/Accordion.js.map +1 -0
- package/dist/components/AgentActivity.d.ts +2 -1
- package/dist/components/AgentActivity.d.ts.map +1 -1
- package/dist/components/AgentActivity.js +4 -17
- package/dist/components/AgentActivity.js.map +1 -1
- package/dist/components/Breadcrumb.d.ts +45 -0
- package/dist/components/Breadcrumb.d.ts.map +1 -0
- package/dist/components/Breadcrumb.js +31 -0
- package/dist/components/Breadcrumb.js.map +1 -0
- package/dist/components/Calendar.d.ts +20 -0
- package/dist/components/Calendar.d.ts.map +1 -0
- package/dist/components/Calendar.js +151 -0
- package/dist/components/Calendar.js.map +1 -0
- package/dist/components/CalendarPopover.d.ts +26 -0
- package/dist/components/CalendarPopover.d.ts.map +1 -0
- package/dist/components/CalendarPopover.js +45 -0
- package/dist/components/CalendarPopover.js.map +1 -0
- package/dist/components/Checkbox.d.ts +2 -1
- package/dist/components/Checkbox.d.ts.map +1 -1
- package/dist/components/Checkbox.js +4 -2
- package/dist/components/Checkbox.js.map +1 -1
- package/dist/components/Combobox.d.ts +86 -0
- package/dist/components/Combobox.d.ts.map +1 -0
- package/dist/components/Combobox.js +261 -0
- package/dist/components/Combobox.js.map +1 -0
- package/dist/components/DateField.d.ts +15 -0
- package/dist/components/DateField.d.ts.map +1 -0
- package/dist/components/DateField.js +74 -0
- package/dist/components/DateField.js.map +1 -0
- package/dist/components/DatePicker.d.ts +81 -0
- package/dist/components/DatePicker.d.ts.map +1 -0
- package/dist/components/DatePicker.js +102 -0
- package/dist/components/DatePicker.js.map +1 -0
- package/dist/components/DateRangePicker.d.ts +117 -0
- package/dist/components/DateRangePicker.d.ts.map +1 -0
- package/dist/components/DateRangePicker.js +152 -0
- package/dist/components/DateRangePicker.js.map +1 -0
- package/dist/components/Drawer.d.ts +52 -0
- package/dist/components/Drawer.d.ts.map +1 -0
- package/dist/components/Drawer.js +66 -0
- package/dist/components/Drawer.js.map +1 -0
- package/dist/components/FileUpload.d.ts +79 -0
- package/dist/components/FileUpload.d.ts.map +1 -0
- package/dist/components/FileUpload.js +218 -0
- package/dist/components/FileUpload.js.map +1 -0
- package/dist/components/Header.d.ts +10 -0
- package/dist/components/Header.d.ts.map +1 -1
- package/dist/components/Header.js +18 -3
- package/dist/components/Header.js.map +1 -1
- package/dist/components/NumberInput.d.ts +63 -0
- package/dist/components/NumberInput.d.ts.map +1 -0
- package/dist/components/NumberInput.js +102 -0
- package/dist/components/NumberInput.js.map +1 -0
- package/dist/components/ProgressBar.d.ts +46 -0
- package/dist/components/ProgressBar.d.ts.map +1 -0
- package/dist/components/ProgressBar.js +52 -0
- package/dist/components/ProgressBar.js.map +1 -0
- package/dist/components/PromptInput.d.ts +89 -0
- package/dist/components/PromptInput.d.ts.map +1 -0
- package/dist/components/PromptInput.js +130 -0
- package/dist/components/PromptInput.js.map +1 -0
- package/dist/components/SegmentedControl.d.ts +63 -0
- package/dist/components/SegmentedControl.d.ts.map +1 -0
- package/dist/components/SegmentedControl.js +79 -0
- package/dist/components/SegmentedControl.js.map +1 -0
- package/dist/components/Select.d.ts +9 -2
- package/dist/components/Select.d.ts.map +1 -1
- package/dist/components/Select.js.map +1 -1
- package/dist/components/Sidebar.d.ts +109 -0
- package/dist/components/Sidebar.d.ts.map +1 -0
- package/dist/components/Sidebar.js +106 -0
- package/dist/components/Sidebar.js.map +1 -0
- package/dist/components/Skeleton.d.ts +39 -0
- package/dist/components/Skeleton.d.ts.map +1 -0
- package/dist/components/Skeleton.js +50 -0
- package/dist/components/Skeleton.js.map +1 -0
- package/dist/components/Spinner.d.ts +45 -0
- package/dist/components/Spinner.d.ts.map +1 -0
- package/dist/components/Spinner.js +44 -0
- package/dist/components/Spinner.js.map +1 -0
- package/dist/components/Stepper.d.ts +73 -0
- package/dist/components/Stepper.d.ts.map +1 -0
- package/dist/components/Stepper.js +82 -0
- package/dist/components/Stepper.js.map +1 -0
- package/dist/components/Toggle.d.ts +2 -1
- package/dist/components/Toggle.d.ts.map +1 -1
- package/dist/components/Toggle.js +4 -2
- package/dist/components/Toggle.js.map +1 -1
- package/dist/components/ToolCall.d.ts +66 -0
- package/dist/components/ToolCall.d.ts.map +1 -0
- package/dist/components/ToolCall.js +78 -0
- package/dist/components/ToolCall.js.map +1 -0
- package/dist/components/agent-status.d.ts +14 -0
- package/dist/components/agent-status.d.ts.map +1 -0
- package/dist/components/agent-status.js +16 -0
- package/dist/components/agent-status.js.map +1 -0
- package/dist/components/index.d.ts +33 -0
- package/dist/components/index.d.ts.map +1 -1
- package/dist/components/index.js +16 -0
- package/dist/components/index.js.map +1 -1
- package/dist/components/iso-date.d.ts +53 -0
- package/dist/components/iso-date.d.ts.map +1 -0
- package/dist/components/iso-date.js +102 -0
- package/dist/components/iso-date.js.map +1 -0
- package/dist/components/resolve-selection.d.ts +36 -0
- package/dist/components/resolve-selection.d.ts.map +1 -0
- package/dist/components/resolve-selection.js +14 -0
- package/dist/components/resolve-selection.js.map +1 -0
- package/dist/figma-descriptions.json +255 -145
- package/dist/figma-map.json +3205 -1860
- package/dist/meta/Accordion.json +123 -0
- package/dist/meta/AccordionItem.json +90 -0
- package/dist/meta/AgentActivityStep.json +2 -2
- package/dist/meta/Breadcrumb.json +87 -0
- package/dist/meta/BreadcrumbItem.json +78 -0
- package/dist/meta/Checkbox.json +18 -1
- package/dist/meta/Combobox.json +265 -0
- package/dist/meta/DatePicker.json +270 -0
- package/dist/meta/DateRangePicker.json +284 -0
- package/dist/meta/Drawer.json +234 -0
- package/dist/meta/EmptyState.json +1 -1
- package/dist/meta/FileUpload.json +246 -0
- package/dist/meta/Header.json +32 -2
- package/dist/meta/NumberInput.json +407 -0
- package/dist/meta/PhoneInput.json +39 -39
- package/dist/meta/Popover.json +3 -3
- package/dist/meta/ProgressBar.json +166 -0
- package/dist/meta/PromptInput.json +212 -0
- package/dist/meta/SegmentedControl.json +217 -0
- package/dist/meta/SegmentedControlItem.json +122 -0
- package/dist/meta/Select.json +4 -3
- package/dist/meta/Sidebar.json +150 -0
- package/dist/meta/SidebarItem.json +184 -0
- package/dist/meta/SidebarSection.json +131 -0
- package/dist/meta/Skeleton.json +120 -0
- package/dist/meta/Spinner.json +123 -0
- package/dist/meta/Stepper.json +135 -0
- package/dist/meta/StepperStep.json +148 -0
- package/dist/meta/Tabs.json +5 -0
- package/dist/meta/Toggle.json +18 -1
- package/dist/meta/ToolCall.json +192 -0
- package/dist/meta/Tooltip.json +3 -3
- package/dist/meta/components.json +6759 -2705
- package/dist/meta/contrast.json +11075 -3098
- package/dist/meta/index.json +266 -8
- package/dist/meta/patterns/AgentRun.json +27 -0
- package/dist/meta/patterns/Form.json +9 -0
- package/dist/meta/patterns/PageShell.json +43 -3
- package/dist/meta/patterns/Wizard.json +20 -1
- package/dist/meta/patterns/index.json +10 -1
- package/dist/styles/accordion.css +102 -0
- package/dist/styles/breadcrumb.css +72 -0
- package/dist/styles/combobox.css +154 -0
- package/dist/styles/date-picker.css +420 -0
- package/dist/styles/date-range-picker.css +280 -0
- package/dist/styles/drawer.css +181 -0
- package/dist/styles/empty-state.css +16 -4
- package/dist/styles/file-upload.css +236 -0
- package/dist/styles/header.css +26 -0
- package/dist/styles/index.css +23 -0
- package/dist/styles/number-input.css +83 -0
- package/dist/styles/progress-bar.css +107 -0
- package/dist/styles/prompt-input.css +127 -0
- package/dist/styles/segmented-control.css +182 -0
- package/dist/styles/sidebar.css +307 -0
- package/dist/styles/skeleton.css +76 -0
- package/dist/styles/spinner.css +70 -0
- package/dist/styles/stepper.css +250 -0
- package/dist/styles/tool-call.css +202 -0
- package/llms.txt +2 -2
- package/package.json +2 -1
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Accordion
|
|
3
|
+
*
|
|
4
|
+
* Drawn in Figma as `Accordion` (1360:267) and `Accordion Item` (1360:266),
|
|
5
|
+
* from this file rather than the reverse — so the code is the source when the
|
|
6
|
+
* two disagree.
|
|
7
|
+
*
|
|
8
|
+
* Figma's Accordion Item carries a Collapsed/Expanded axis that the React
|
|
9
|
+
* component does NOT own: the open set lives on the container, because a static
|
|
10
|
+
* frame cannot hold a selection. The axis is drawn on the item because that is
|
|
11
|
+
* where the difference is visible, and owned in code where it is decidable.
|
|
12
|
+
*
|
|
13
|
+
* The trigger fills its heading so the whole row is the hit target. A button
|
|
14
|
+
* that only covers its text makes a wide section header mostly dead space.
|
|
15
|
+
*/
|
|
16
|
+
.ion-accordion {
|
|
17
|
+
font-family: var(--font-family-sans);
|
|
18
|
+
border-top: var(--border-width-default) solid var(--border-subtle);
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
.ion-accordion__item {
|
|
22
|
+
border-bottom: var(--border-width-default) solid var(--border-subtle);
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
.ion-accordion__heading {
|
|
26
|
+
margin: 0;
|
|
27
|
+
|
|
28
|
+
/* The heading carries structure, not size: the visible scale belongs to the
|
|
29
|
+
* trigger, so changing headingLevel for document reasons does not resize the
|
|
30
|
+
* control. */
|
|
31
|
+
font: inherit;
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
.ion-accordion__trigger {
|
|
35
|
+
display: flex;
|
|
36
|
+
align-items: center;
|
|
37
|
+
justify-content: space-between;
|
|
38
|
+
gap: var(--spacing-12);
|
|
39
|
+
width: 100%;
|
|
40
|
+
padding: var(--spacing-16) var(--spacing-4);
|
|
41
|
+
border: 0;
|
|
42
|
+
background: none;
|
|
43
|
+
color: var(--text-default);
|
|
44
|
+
font-family: inherit;
|
|
45
|
+
font-size: var(--type-body);
|
|
46
|
+
line-height: var(--type-body-line-height);
|
|
47
|
+
font-weight: var(--font-weight-medium);
|
|
48
|
+
text-align: start;
|
|
49
|
+
cursor: pointer;
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
/* Focus and disabled before :hover, so specificity reads non-decreasing — the
|
|
53
|
+
* same ordering approval-gate.css documents and stylelint enforces. */
|
|
54
|
+
.ion-accordion__trigger:focus-visible {
|
|
55
|
+
outline: var(--border-width-thick) solid var(--border-focus);
|
|
56
|
+
outline-offset: -2px;
|
|
57
|
+
border-radius: var(--radius-xs);
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
.ion-accordion__trigger:disabled {
|
|
61
|
+
color: var(--text-disabled);
|
|
62
|
+
cursor: default;
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
.ion-accordion__trigger:hover:not(:disabled) {
|
|
66
|
+
color: var(--text-primary);
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
.ion-accordion__indicator {
|
|
70
|
+
display: inline-flex;
|
|
71
|
+
flex: none;
|
|
72
|
+
width: var(--icon-size-md);
|
|
73
|
+
height: var(--icon-size-md);
|
|
74
|
+
color: var(--icon-secondary);
|
|
75
|
+
transition: transform var(--ion-duration-base) var(--ion-ease-out);
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
.ion-accordion__indicator svg {
|
|
79
|
+
width: 100%;
|
|
80
|
+
height: 100%;
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
.ion-accordion__item[data-expanded] .ion-accordion__indicator {
|
|
84
|
+
transform: rotate(180deg);
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
.ion-accordion__trigger:disabled .ion-accordion__indicator {
|
|
88
|
+
color: var(--icon-disabled);
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
.ion-accordion__content {
|
|
92
|
+
padding: 0 var(--spacing-4) var(--spacing-16);
|
|
93
|
+
color: var(--text-secondary);
|
|
94
|
+
font-size: var(--type-body);
|
|
95
|
+
line-height: var(--type-body-line-height);
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
@media (prefers-reduced-motion: reduce) {
|
|
99
|
+
.ion-accordion__indicator {
|
|
100
|
+
transition-duration: 1ms;
|
|
101
|
+
}
|
|
102
|
+
}
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Breadcrumb
|
|
3
|
+
*
|
|
4
|
+
* Drawn in Figma as `Breadcrumb` (1359:252) and `Breadcrumb Item` (1359:251) —
|
|
5
|
+
* FROM this file, not the other way round. Every other stylesheet here says
|
|
6
|
+
* "measured from Figma" because Figma came first; here the code did, and the
|
|
7
|
+
* drawing was made to match it. Worth stating, because the direction decides
|
|
8
|
+
* which side wins the next time the two disagree: this one.
|
|
9
|
+
*
|
|
10
|
+
* The separator is a CSS ::before on every item after the first. Drawing it in
|
|
11
|
+
* markup is the usual version of this component and the usual defect: a "/"
|
|
12
|
+
* character in the DOM is announced as punctuation between every crumb.
|
|
13
|
+
*/
|
|
14
|
+
.ion-breadcrumb {
|
|
15
|
+
font-family: var(--font-family-sans);
|
|
16
|
+
font-size: var(--type-body-sm);
|
|
17
|
+
line-height: var(--type-body-sm-line-height);
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
.ion-breadcrumb__list {
|
|
21
|
+
display: flex;
|
|
22
|
+
flex-wrap: wrap;
|
|
23
|
+
align-items: center;
|
|
24
|
+
gap: var(--spacing-8);
|
|
25
|
+
margin: 0;
|
|
26
|
+
padding: 0;
|
|
27
|
+
list-style: none;
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
.ion-breadcrumb__item {
|
|
31
|
+
display: inline-flex;
|
|
32
|
+
align-items: center;
|
|
33
|
+
gap: var(--spacing-8);
|
|
34
|
+
min-width: 0;
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
.ion-breadcrumb__item + .ion-breadcrumb__item::before {
|
|
38
|
+
content: '/';
|
|
39
|
+
color: var(--text-tertiary);
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
.ion-breadcrumb__link {
|
|
43
|
+
color: var(--text-secondary);
|
|
44
|
+
text-decoration: none;
|
|
45
|
+
border-radius: var(--radius-xs);
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
.ion-breadcrumb__link:hover {
|
|
49
|
+
color: var(--text-default);
|
|
50
|
+
text-decoration: underline;
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
.ion-breadcrumb__link:focus-visible {
|
|
54
|
+
outline: var(--border-width-thick) solid var(--border-focus);
|
|
55
|
+
outline-offset: 2px;
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
/*
|
|
59
|
+
* The current page is the one crumb a user is most likely to be looking for,
|
|
60
|
+
* so it carries the stronger colour — the trail above it is navigation, and
|
|
61
|
+
* this is the position.
|
|
62
|
+
*/
|
|
63
|
+
.ion-breadcrumb__current {
|
|
64
|
+
color: var(--text-default);
|
|
65
|
+
font-weight: var(--font-weight-medium);
|
|
66
|
+
|
|
67
|
+
/* A long record title truncates rather than wrapping the trail onto three
|
|
68
|
+
* lines; the full value stays reachable through the element's own text. */
|
|
69
|
+
overflow: hidden;
|
|
70
|
+
text-overflow: ellipsis;
|
|
71
|
+
white-space: nowrap;
|
|
72
|
+
}
|
|
@@ -0,0 +1,154 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Combobox
|
|
3
|
+
*
|
|
4
|
+
* Drawn in Figma as `Combobox` (1370:2359) and `Combobox Menu` (1372:262), from
|
|
5
|
+
* this file. The field is `Input`'s box unchanged — Combobox carries
|
|
6
|
+
* `.ion-input` alongside `.ion-combobox` rather than restating a border, a
|
|
7
|
+
* radius and three states that would then drift from the real thing. Only the
|
|
8
|
+
* disclosure button is new here. The menu borrows `Menu`'s row metrics.
|
|
9
|
+
*
|
|
10
|
+
* The two are one control in code and two components in Figma, because a frame
|
|
11
|
+
* cannot both hug a field and overlay a list on top of it. `Combobox Menu` is
|
|
12
|
+
* recorded in mapping.json's `unmapped` for exactly that reason: there is no
|
|
13
|
+
* React export behind it, and there should not be — a listbox with no combobox
|
|
14
|
+
* to own it is not a thing a caller should be able to mount.
|
|
15
|
+
*
|
|
16
|
+
* THE MENU IS ITS OWN BLOCK, `.ion-combobox-menu`
|
|
17
|
+
*
|
|
18
|
+
* Not `.ion-combobox__popover`. The contrast gate resolves a translucent
|
|
19
|
+
* colour's backdrop from the BLOCK's background, and `.ion-combobox` has no
|
|
20
|
+
* background of its own — it inherits Input's. An option's `surface/hover`
|
|
21
|
+
* would then have had no resolvable ground and come back *skipped*: not
|
|
22
|
+
* failing, not passing, unmeasured. Drawer shipped that exact bug in 0.57.0 and
|
|
23
|
+
* only a count in a summary line caught it.
|
|
24
|
+
*/
|
|
25
|
+
.ion-combobox__button {
|
|
26
|
+
display: inline-flex;
|
|
27
|
+
align-items: center;
|
|
28
|
+
justify-content: center;
|
|
29
|
+
flex-shrink: 0;
|
|
30
|
+
padding: 0;
|
|
31
|
+
background: none;
|
|
32
|
+
border: none;
|
|
33
|
+
color: var(--icon-secondary);
|
|
34
|
+
cursor: pointer;
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
.ion-combobox__button svg {
|
|
38
|
+
width: var(--ion-input-icon-size);
|
|
39
|
+
height: var(--ion-input-icon-size);
|
|
40
|
+
transition: transform var(--ion-duration-base) var(--ion-ease-out);
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
/* The caret follows the list. A static caret beside an open menu is a lie. */
|
|
44
|
+
.ion-combobox[data-open='true'] .ion-combobox__button svg {
|
|
45
|
+
transform: rotate(180deg);
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
.ion-combobox[data-disabled='true'] .ion-combobox__button {
|
|
49
|
+
color: var(--icon-disabled);
|
|
50
|
+
cursor: not-allowed;
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
/*
|
|
54
|
+
* NO UNDERLAY, deliberately.
|
|
55
|
+
*
|
|
56
|
+
* Modal and Popover render one. A non-modal popover must not: `usePopover`
|
|
57
|
+
* already listens for outside interaction on the document, so the underlay adds
|
|
58
|
+
* nothing, and a fixed full-viewport element over the page swallows the first
|
|
59
|
+
* click on whatever is behind it. The page stays fully interactive while the
|
|
60
|
+
* list is open, which is the whole difference between this and a dialog.
|
|
61
|
+
*/
|
|
62
|
+
.ion-combobox-menu {
|
|
63
|
+
z-index: 1000;
|
|
64
|
+
display: flex;
|
|
65
|
+
flex-direction: column;
|
|
66
|
+
padding: var(--spacing-4);
|
|
67
|
+
background-color: var(--surface-raised);
|
|
68
|
+
border: var(--border-width-default) solid var(--border-subtle);
|
|
69
|
+
border-radius: var(--radius-md);
|
|
70
|
+
box-shadow: var(--ion-shadow-shadow-lg);
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
/*
|
|
74
|
+
* Capped, and the cap is the whole reason the list scrolls rather than the
|
|
75
|
+
* page. `usePopover` also passes a maxHeight in the inline style when the
|
|
76
|
+
* viewport is tighter than this; the smaller of the two wins, which is correct
|
|
77
|
+
* either way.
|
|
78
|
+
*/
|
|
79
|
+
.ion-combobox-menu__list {
|
|
80
|
+
max-height: 16rem;
|
|
81
|
+
margin: 0;
|
|
82
|
+
padding: 0;
|
|
83
|
+
overflow-y: auto;
|
|
84
|
+
list-style: none;
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
.ion-combobox-menu__list:focus {
|
|
88
|
+
outline: none;
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
.ion-combobox-menu__option {
|
|
92
|
+
display: flex;
|
|
93
|
+
flex-direction: column;
|
|
94
|
+
gap: var(--spacing-2);
|
|
95
|
+
padding: var(--spacing-6) var(--spacing-8);
|
|
96
|
+
border-radius: var(--radius-sm);
|
|
97
|
+
cursor: pointer;
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
.ion-combobox-menu__label {
|
|
101
|
+
color: var(--text-default);
|
|
102
|
+
font-family: var(--font-family-sans);
|
|
103
|
+
font-size: var(--type-body);
|
|
104
|
+
line-height: var(--type-body-line-height);
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
.ion-combobox-menu__description {
|
|
108
|
+
color: var(--text-tertiary);
|
|
109
|
+
font-family: var(--font-family-sans);
|
|
110
|
+
font-size: var(--type-body-sm);
|
|
111
|
+
line-height: var(--type-body-sm-line-height);
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
/*
|
|
115
|
+
* Focus is a background, not an outline, and it is driven by data-focused
|
|
116
|
+
* rather than `:focus`.
|
|
117
|
+
*
|
|
118
|
+
* The real DOM focus never leaves the input — the list is driven by
|
|
119
|
+
* `aria-activedescendant`, so no option is ever `:focus` or `:hover` in the way
|
|
120
|
+
* a normal menu's rows are. Styling either one would produce a list where the
|
|
121
|
+
* keyboard highlight is invisible. React Aria also routes pointer hover into
|
|
122
|
+
* the same `isFocused` flag, so one rule covers both and the mouse and keyboard
|
|
123
|
+
* cannot end up highlighting two different rows.
|
|
124
|
+
*/
|
|
125
|
+
.ion-combobox-menu__option[data-focused='true'] {
|
|
126
|
+
background-color: var(--surface-hover);
|
|
127
|
+
}
|
|
128
|
+
|
|
129
|
+
.ion-combobox-menu__option[data-selected='true'] .ion-combobox-menu__label {
|
|
130
|
+
font-weight: var(--font-weight-medium);
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
.ion-combobox-menu__option[data-selected='true'] {
|
|
134
|
+
background-color: var(--surface-primary-subtle);
|
|
135
|
+
}
|
|
136
|
+
|
|
137
|
+
.ion-combobox-menu__option[data-disabled='true'] {
|
|
138
|
+
cursor: not-allowed;
|
|
139
|
+
}
|
|
140
|
+
|
|
141
|
+
.ion-combobox-menu__option[data-disabled='true'] .ion-combobox-menu__label,
|
|
142
|
+
.ion-combobox-menu__option[data-disabled='true']
|
|
143
|
+
.ion-combobox-menu__description {
|
|
144
|
+
color: var(--text-disabled);
|
|
145
|
+
}
|
|
146
|
+
|
|
147
|
+
.ion-combobox-menu__empty {
|
|
148
|
+
padding: var(--spacing-12) var(--spacing-8);
|
|
149
|
+
color: var(--text-tertiary);
|
|
150
|
+
font-family: var(--font-family-sans);
|
|
151
|
+
font-size: var(--type-body-sm);
|
|
152
|
+
line-height: var(--type-body-sm-line-height);
|
|
153
|
+
text-align: center;
|
|
154
|
+
}
|