ionbase-ui 0.47.0 → 0.48.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/Pagination.d.ts +50 -0
- package/dist/components/Pagination.d.ts.map +1 -0
- package/dist/components/Pagination.js +88 -0
- package/dist/components/Pagination.js.map +1 -0
- package/dist/components/index.d.ts +2 -0
- package/dist/components/index.d.ts.map +1 -1
- package/dist/components/index.js +1 -0
- package/dist/components/index.js.map +1 -1
- package/dist/figma-descriptions.json +44 -39
- package/dist/figma-map.json +60 -3
- package/dist/meta/Pagination.json +200 -0
- package/dist/meta/components.json +201 -1
- package/dist/meta/contrast.json +506 -0
- package/dist/meta/index.json +18 -1
- package/dist/meta/pageItems.json +16 -0
- package/dist/meta/patterns/index.json +1 -1
- package/dist/styles/index.css +1 -0
- package/dist/styles/pagination.css +170 -0
- package/llms.txt +2 -2
- package/package.json +1 -1
package/dist/styles/index.css
CHANGED
|
@@ -0,0 +1,170 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Pagination
|
|
3
|
+
*
|
|
4
|
+
* Geometry measured from Figma `Pagination Item` (1283:289) and `Pagination`
|
|
5
|
+
* (1291:503), designed 5 Sep 2026. Two Figma sets, one exported component: the
|
|
6
|
+
* item is an internal part, not something a caller composes, so it is not in
|
|
7
|
+
* the public API. See the `unmapped` note in figma/mapping.json.
|
|
8
|
+
*
|
|
9
|
+
* Size is a set of slots defaulting to medium — the same shape tabs.css uses.
|
|
10
|
+
* A size modifier reassigns five variables rather than restating five rules,
|
|
11
|
+
* which is why the item, the icon and the summary all resize from one class.
|
|
12
|
+
*
|
|
13
|
+
* sm 32 type/body-sm icon 14
|
|
14
|
+
* md 40 type/body icon 20
|
|
15
|
+
* lg 48 type/body-lg icon 24
|
|
16
|
+
*
|
|
17
|
+
* THE CELL IS NOT A FIXED SQUARE, AND FIGMA'S IS.
|
|
18
|
+
*
|
|
19
|
+
* Figma binds width AND height to the same spacing token, because a Figma
|
|
20
|
+
* variant has to pick a number and `1` is what fits in the frame. A real pager
|
|
21
|
+
* reaches three and four digits, and a fixed 40px box either clips `1024` or
|
|
22
|
+
* pads every single-digit cell to fit the widest one that might occur. So the
|
|
23
|
+
* height is the token and the width is a MINIMUM — the cell is square until the
|
|
24
|
+
* number outgrows it, then it grows. Do not "fix" this back to a square to
|
|
25
|
+
* match the Figma frame; the frame is the constraint, not the intent.
|
|
26
|
+
*/
|
|
27
|
+
|
|
28
|
+
.ion-pagination {
|
|
29
|
+
--ion-pagination-box: var(--spacing-40);
|
|
30
|
+
--ion-pagination-gap: var(--spacing-8);
|
|
31
|
+
--ion-pagination-font-size: var(--type-body);
|
|
32
|
+
--ion-pagination-line-height: var(--type-body-line-height);
|
|
33
|
+
--ion-pagination-icon: var(--icon-size-md);
|
|
34
|
+
|
|
35
|
+
display: flex;
|
|
36
|
+
align-items: center;
|
|
37
|
+
justify-content: space-between;
|
|
38
|
+
gap: var(--spacing-16);
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
.ion-pagination--sm {
|
|
42
|
+
--ion-pagination-box: var(--spacing-32);
|
|
43
|
+
--ion-pagination-gap: var(--spacing-6);
|
|
44
|
+
--ion-pagination-font-size: var(--type-body-sm);
|
|
45
|
+
--ion-pagination-line-height: var(--type-body-sm-line-height);
|
|
46
|
+
--ion-pagination-icon: var(--icon-size-xs);
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
.ion-pagination--lg {
|
|
50
|
+
--ion-pagination-box: var(--spacing-48);
|
|
51
|
+
--ion-pagination-font-size: var(--type-body-lg);
|
|
52
|
+
--ion-pagination-line-height: var(--type-body-lg-line-height);
|
|
53
|
+
--ion-pagination-icon: var(--icon-size-lg);
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
/*
|
|
57
|
+
* With no page-size slot there is nothing to sit opposite, and
|
|
58
|
+
* `space-between` would pin a lone control group to the left edge of whatever
|
|
59
|
+
* contains it. Ending the row is what the component means in that case.
|
|
60
|
+
*/
|
|
61
|
+
.ion-pagination--no-page-size {
|
|
62
|
+
justify-content: flex-end;
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
.ion-pagination__page-size {
|
|
66
|
+
display: flex;
|
|
67
|
+
align-items: center;
|
|
68
|
+
gap: var(--spacing-8);
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
.ion-pagination__controls {
|
|
72
|
+
display: flex;
|
|
73
|
+
align-items: center;
|
|
74
|
+
gap: var(--spacing-4);
|
|
75
|
+
margin: 0;
|
|
76
|
+
padding: 0;
|
|
77
|
+
list-style: none;
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
/* The cell. A button for pages and arrows; a span for the ellipsis. */
|
|
81
|
+
.ion-pagination__item {
|
|
82
|
+
display: inline-flex;
|
|
83
|
+
align-items: center;
|
|
84
|
+
justify-content: center;
|
|
85
|
+
box-sizing: border-box;
|
|
86
|
+
min-width: var(--ion-pagination-box);
|
|
87
|
+
height: var(--ion-pagination-box);
|
|
88
|
+
padding: 0 var(--spacing-4);
|
|
89
|
+
border: 0;
|
|
90
|
+
border-radius: var(--radius-md);
|
|
91
|
+
background-color: transparent;
|
|
92
|
+
color: var(--text-tertiary);
|
|
93
|
+
font-family: var(--font-family-sans);
|
|
94
|
+
font-size: var(--ion-pagination-font-size);
|
|
95
|
+
line-height: var(--ion-pagination-line-height);
|
|
96
|
+
font-weight: var(--font-weight-medium);
|
|
97
|
+
cursor: pointer;
|
|
98
|
+
transition:
|
|
99
|
+
background-color var(--ion-duration-base) var(--ion-ease-out),
|
|
100
|
+
color var(--ion-duration-base) var(--ion-ease-out);
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
.ion-pagination__item[data-hovered] {
|
|
104
|
+
background-color: var(--surface-hover);
|
|
105
|
+
color: var(--text-default);
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
/*
|
|
109
|
+
* SELECTED IS `surface/selected`, NOT THE `surface/default` TABS USES.
|
|
110
|
+
*
|
|
111
|
+
* A Tabs pill sits on a `surface/muted` track, so `surface/default` reads as a
|
|
112
|
+
* raised chip against it. Pagination has no track: on a `surface/default` card
|
|
113
|
+
* the current page would be the same colour as the thing behind it, and the one
|
|
114
|
+
* cell that must be unmistakable would be the only invisible one.
|
|
115
|
+
*/
|
|
116
|
+
.ion-pagination__item[data-selected] {
|
|
117
|
+
background-color: var(--surface-selected);
|
|
118
|
+
color: var(--text-default);
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
.ion-pagination__item[data-selected][data-hovered] {
|
|
122
|
+
background-color: var(--surface-selected-hover);
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
.ion-pagination__item[data-disabled] {
|
|
126
|
+
color: var(--text-disabled);
|
|
127
|
+
cursor: not-allowed;
|
|
128
|
+
}
|
|
129
|
+
|
|
130
|
+
.ion-pagination__item[data-focused] {
|
|
131
|
+
outline: var(--border-width-thick) solid var(--border-focus);
|
|
132
|
+
outline-offset: var(--spacing-2);
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
.ion-pagination__icon {
|
|
136
|
+
width: var(--ion-pagination-icon);
|
|
137
|
+
height: var(--ion-pagination-icon);
|
|
138
|
+
flex-shrink: 0;
|
|
139
|
+
}
|
|
140
|
+
|
|
141
|
+
/*
|
|
142
|
+
* The truncation marker. Not a button and not focusable — it is the absence of
|
|
143
|
+
* pages, and giving it a tab stop would put a control in the sequence that does
|
|
144
|
+
* nothing when activated. `aria-hidden` in the TSX keeps it out of the
|
|
145
|
+
* announcement too; the surrounding numbers already say what was skipped.
|
|
146
|
+
*/
|
|
147
|
+
.ion-pagination__ellipsis {
|
|
148
|
+
display: inline-flex;
|
|
149
|
+
align-items: center;
|
|
150
|
+
justify-content: center;
|
|
151
|
+
min-width: var(--ion-pagination-box);
|
|
152
|
+
height: var(--ion-pagination-box);
|
|
153
|
+
color: var(--text-tertiary);
|
|
154
|
+
}
|
|
155
|
+
|
|
156
|
+
.ion-pagination__summary {
|
|
157
|
+
padding: 0 var(--spacing-8);
|
|
158
|
+
color: var(--text-secondary);
|
|
159
|
+
font-family: var(--font-family-sans);
|
|
160
|
+
font-size: var(--ion-pagination-font-size);
|
|
161
|
+
line-height: var(--ion-pagination-line-height);
|
|
162
|
+
font-weight: var(--font-weight-regular);
|
|
163
|
+
white-space: nowrap;
|
|
164
|
+
}
|
|
165
|
+
|
|
166
|
+
@media (prefers-reduced-motion: reduce) {
|
|
167
|
+
.ion-pagination__item {
|
|
168
|
+
transition: none;
|
|
169
|
+
}
|
|
170
|
+
}
|
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.48.0. 47 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
|
-
`AgentActivity`, `AgentActivityStep`, `AgentStop`, `Alert`, `ApprovalGate`, `Avatar`, `AvatarGradient`, `AvatarGroup`, `Badge`, `Button`, `Checkbox`, `Citation`, `CitationList`, `CitationListItem`, `ConfidenceIndicator`, `Divider`, `EmptyState`, `FullCard`, `Header`, `Icon`, `Input`, `Link`, `Logo`, `LogoMark`, `Menu`, `MenuItem`, `Modal`, `NavItem`, `PhoneInput`, `Popover`, `Radio`, `RadioGroup`, `ScrollProgress`, `Select`, `StreamingText`, `TabItem`, `Table`, `TableBody`, `TableCell`, `TableHead`, `TableRow`, `Tabs`, `Toast`, `ToastProvider`, `Toggle`, `Tooltip`
|
|
16
|
+
`AgentActivity`, `AgentActivityStep`, `AgentStop`, `Alert`, `ApprovalGate`, `Avatar`, `AvatarGradient`, `AvatarGroup`, `Badge`, `Button`, `Checkbox`, `Citation`, `CitationList`, `CitationListItem`, `ConfidenceIndicator`, `Divider`, `EmptyState`, `FullCard`, `Header`, `Icon`, `Input`, `Link`, `Logo`, `LogoMark`, `Menu`, `MenuItem`, `Modal`, `NavItem`, `Pagination`, `PhoneInput`, `Popover`, `Radio`, `RadioGroup`, `ScrollProgress`, `Select`, `StreamingText`, `TabItem`, `Table`, `TableBody`, `TableCell`, `TableHead`, `TableRow`, `Tabs`, `Toast`, `ToastProvider`, `Toggle`, `Tooltip`
|
|
17
17
|
|
|
18
18
|
## Patterns
|
|
19
19
|
|