@ciridae/ui 1.0.3 → 1.0.5
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/chat/conversation-source.d.ts +15 -1
- package/dist/chat/describe-tool-call.d.ts +3 -3
- package/dist/chat/describe-tool-call.js +3 -3
- package/dist/chat/message-text.js +2 -2
- package/dist/ciridae.css +16 -4
- package/dist/components/activity-feed.d.ts +1 -0
- package/dist/components/activity-feed.js +1 -0
- package/dist/components/app-frame.d.ts +13 -1
- package/dist/components/app-frame.js +45 -3
- package/dist/components/app-navigation.d.ts +28 -1
- package/dist/components/app-navigation.js +110 -14
- package/dist/components/badge.d.ts +29 -4
- package/dist/components/badge.js +134 -15
- package/dist/components/bulk-action-bar.js +3 -3
- package/dist/components/button.d.ts +10 -3
- package/dist/components/button.js +77 -44
- package/dist/components/calendar.js +44 -17
- package/dist/components/centered-page.js +2 -2
- package/dist/components/chart.d.ts +1 -1
- package/dist/components/chart.js +16 -11
- package/dist/components/chat-client-source.js +47 -6
- package/dist/components/chat-sheet-controller.d.ts +1 -0
- package/dist/components/chat-sheet-controller.js +1 -0
- package/dist/components/chat-sheet.d.ts +10 -2
- package/dist/components/chat-sheet.js +74 -37
- package/dist/components/chat.d.ts +90 -14
- package/dist/components/chat.js +401 -101
- package/dist/components/checkbox-item.d.ts +5 -2
- package/dist/components/checkbox-item.js +9 -5
- package/dist/components/chip.d.ts +5 -0
- package/dist/components/chip.js +27 -1
- package/dist/components/column-settings.js +1 -1
- package/dist/components/command-menu.d.ts +5 -1
- package/dist/components/command-menu.js +98 -32
- package/dist/components/command-palette.d.ts +6 -2
- package/dist/components/command-palette.js +20 -10
- package/dist/components/data-display.d.ts +35 -4
- package/dist/components/data-display.js +138 -19
- package/dist/components/data-grid.d.ts +14 -2
- package/dist/components/data-grid.js +61 -26
- package/dist/components/date-range-picker.js +9 -20
- package/dist/components/drawer.d.ts +5 -0
- package/dist/components/drawer.js +91 -54
- package/dist/components/editable-field.d.ts +17 -3
- package/dist/components/editable-field.js +57 -27
- package/dist/components/email-input.js +6 -5
- package/dist/components/environment-frame.d.ts +1 -1
- package/dist/components/environment-frame.js +37 -6
- package/dist/components/filter-bar.js +39 -28
- package/dist/components/form-controls.d.ts +9 -0
- package/dist/components/form-controls.js +46 -22
- package/dist/components/form-layout.d.ts +7 -3
- package/dist/components/form-layout.js +68 -23
- package/dist/components/glass-menu.d.ts +3 -0
- package/dist/components/glass-menu.js +63 -0
- package/dist/components/gradient-edge.d.ts +9 -0
- package/dist/components/gradient-edge.js +31 -0
- package/dist/components/input.d.ts +4 -2
- package/dist/components/input.js +26 -15
- package/dist/components/keycap.d.ts +9 -5
- package/dist/components/keycap.js +57 -19
- package/dist/components/lightbox.js +2 -1
- package/dist/components/locale.d.ts +10 -0
- package/dist/components/locale.js +18 -2
- package/dist/components/log-entry.d.ts +40 -0
- package/dist/components/log-entry.js +146 -0
- package/dist/components/mention-input.js +4 -3
- package/dist/components/menu.d.ts +6 -2
- package/dist/components/menu.js +34 -37
- package/dist/components/meter.d.ts +9 -1
- package/dist/components/meter.js +64 -6
- package/dist/components/navigation.d.ts +21 -4
- package/dist/components/navigation.js +84 -19
- package/dist/components/notification-tray.js +5 -4
- package/dist/components/overlays.d.ts +3 -1
- package/dist/components/overlays.js +69 -40
- package/dist/components/page-frame.js +1 -1
- package/dist/components/panel.d.ts +1 -1
- package/dist/components/panel.js +18 -12
- package/dist/components/radio-card.js +10 -9
- package/dist/components/record.d.ts +25 -1
- package/dist/components/record.js +147 -18
- package/dist/components/segmented-bar.d.ts +3 -1
- package/dist/components/segmented-bar.js +16 -6
- package/dist/components/select.d.ts +5 -2
- package/dist/components/select.js +103 -127
- package/dist/components/shell-skeleton.js +1 -1
- package/dist/components/shell.d.ts +2 -2
- package/dist/components/shell.js +43 -45
- package/dist/components/sidebar.d.ts +7 -2
- package/dist/components/sidebar.js +55 -27
- package/dist/components/single-line-text.d.ts +2 -0
- package/dist/components/single-line-text.js +16 -0
- package/dist/components/site-banner.d.ts +5 -2
- package/dist/components/site-banner.js +17 -6
- package/dist/components/skeleton.d.ts +7 -6
- package/dist/components/skeleton.js +28 -16
- package/dist/components/skeletons.d.ts +12 -0
- package/dist/components/skeletons.js +71 -8
- package/dist/components/stages.d.ts +78 -6
- package/dist/components/stages.js +512 -156
- package/dist/components/stat-card.d.ts +10 -2
- package/dist/components/stat-card.js +92 -37
- package/dist/components/status-banner.js +1 -1
- package/dist/components/tabs.js +26 -13
- package/dist/components/theme-toggle.d.ts +4 -0
- package/dist/components/theme-toggle.js +67 -0
- package/dist/components/toast.d.ts +9 -2
- package/dist/components/toast.js +78 -29
- package/dist/preset.js +291 -33
- package/dist/styled-system/styles.css +3107 -1039
- package/dist/styled-system/tokens/index.mjs +602 -22
- package/dist/styled-system/tokens/tokens.d.ts +11 -11
- package/dist/styled-system/types/prop-type.d.ts +2 -2
- package/dist/styles.css +16 -4
- package/dist/theme/color.d.ts +3 -0
- package/dist/theme/color.js +5 -0
- package/dist/theme/derive.d.ts +9 -2
- package/dist/theme/derive.js +72 -12
- package/dist/theme/palettes.d.ts +49 -6
- package/dist/theme/palettes.js +84 -15
- package/dist/theme/tokens.d.ts +3 -3
- package/dist/theme/tokens.js +108 -32
- package/package.json +9 -1
package/dist/preset.js
CHANGED
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
import { definePreset } from "@pandacss/dev";
|
|
2
2
|
import { breakpointQuery } from "./theme/breakpoints.js";
|
|
3
|
+
import { linearGradient } from "./theme/color.js";
|
|
4
|
+
import { noEdge, themedGradient } from "./theme/derive.js";
|
|
3
5
|
import { deriveThemeTokens } from "./theme/tokens.js";
|
|
4
6
|
export { breakpointQuery, breakpoints } from "./theme/breakpoints.js";
|
|
5
7
|
export { PALETTE_NAMES } from "./theme/palettes.js";
|
|
@@ -16,6 +18,12 @@ const appBaseCss = {
|
|
|
16
18
|
":where(a)": { color: "inherit", textDecoration: "none" },
|
|
17
19
|
"*": { scrollbarWidth: "thin", scrollbarColor: "token(colors.border.control) transparent" },
|
|
18
20
|
};
|
|
21
|
+
/* The grey glass edge dark draws round a raised face, and round most of the hue glass. */
|
|
22
|
+
const darkGlassEdge = "linear-gradient(to bottom, rgba(137,136,135,.33), rgba(101,96,92,.33) 10%, rgba(43,41,39,.33) 90%, rgba(64,63,63,.33))";
|
|
23
|
+
/* An edge drawn as the grey glass in dark, and as a two-color gradient at .33 in light. */
|
|
24
|
+
function glassEdgeWithLightGradient(top, bottom) {
|
|
25
|
+
return { base: darkGlassEdge, _light: linearGradient("to bottom", [top, bottom], 0.33) };
|
|
26
|
+
}
|
|
19
27
|
/** The kit's tokens under a theme. Anything left out takes the default, which is today's look. */
|
|
20
28
|
export function createCiridaePreset({ appBase = false, ...theme } = {}) {
|
|
21
29
|
const { colors, gradients, shadows, fonts } = deriveThemeTokens(theme);
|
|
@@ -87,10 +95,6 @@ export function createCiridaePreset({ appBase = false, ...theme } = {}) {
|
|
|
87
95
|
},
|
|
88
96
|
},
|
|
89
97
|
keyframes: {
|
|
90
|
-
skeletonShimmer: {
|
|
91
|
-
from: { backgroundPosition: "150% 0" },
|
|
92
|
-
to: { backgroundPosition: "-50% 0" },
|
|
93
|
-
},
|
|
94
98
|
spin: { from: { transform: "rotate(0deg)" }, to: { transform: "rotate(360deg)" } },
|
|
95
99
|
livePulse: { "0%, 100%": { opacity: "1" }, "50%": { opacity: "0.35" } },
|
|
96
100
|
wizardEnterForward: {
|
|
@@ -125,12 +129,16 @@ export function createCiridaePreset({ appBase = false, ...theme } = {}) {
|
|
|
125
129
|
"control.largeInline": { value: "20px" },
|
|
126
130
|
// Inline padding on the side of a trigger that ends in its caret.
|
|
127
131
|
"control.iconInline": { value: "10px" },
|
|
132
|
+
// The assistant launcher's padding at its end, round the shortcut keycap.
|
|
133
|
+
"control.launcherInlineEnd": { value: "7px" },
|
|
128
134
|
// The underline search field keeps its icon close to the text's left edge.
|
|
129
135
|
"search.inline": { value: "4px" },
|
|
130
136
|
"field.block": { value: "10px" },
|
|
131
137
|
"layout.tightGap": { value: "4px" },
|
|
132
138
|
// Between a sidebar's groups, and the sidebar's own inset from the window edge.
|
|
133
|
-
"sidebar.groupGap": { value: "
|
|
139
|
+
"sidebar.groupGap": { value: "16px" },
|
|
140
|
+
// The least room between the sidebar's navigation and its footer.
|
|
141
|
+
"sidebar.footerGap": { value: "18px" },
|
|
134
142
|
"sidebar.inline": { value: "10px" },
|
|
135
143
|
"sidebar.block": { value: "14px" },
|
|
136
144
|
// A pill tab's inline padding, a little wider than a compact control's.
|
|
@@ -138,22 +146,47 @@ export function createCiridaePreset({ appBase = false, ...theme } = {}) {
|
|
|
138
146
|
"layout.controlGap": { value: "8px" },
|
|
139
147
|
"layout.contentGap": { value: "12px" },
|
|
140
148
|
"layout.clusterGap": { value: "16px" },
|
|
141
|
-
"layout.pageGap": { value: "
|
|
149
|
+
"layout.pageGap": { value: "12px" },
|
|
142
150
|
"layout.projectListOffset": { value: "28px" },
|
|
143
|
-
"layout.sectionGap": { value: "
|
|
151
|
+
"layout.sectionGap": { value: "12px" },
|
|
152
|
+
// Between a centered card's title, body and actions, such as a sign-in card's. The design
|
|
153
|
+
// draws no centered card; one card alone on an empty page keeps more room than the
|
|
154
|
+
// sections of an app page.
|
|
155
|
+
"layout.centeredCardGap": { value: "24px" },
|
|
144
156
|
"log.columnGap": { value: "10px" },
|
|
145
157
|
"log.detailIndent": { value: "34px" },
|
|
146
158
|
"log.detailIndentCompact": { value: "32px" },
|
|
147
159
|
"log.rowBlock": { value: "3px" },
|
|
160
|
+
// A log entry's padding: in a feed, a compact feed, and a side panel.
|
|
161
|
+
"log.entryBlock": { value: "14px" },
|
|
162
|
+
"log.entryInline": { value: "20px" },
|
|
163
|
+
"log.entryCompactBlock": { value: "8px" },
|
|
164
|
+
"log.entryPanelBlock": { value: "10px" },
|
|
165
|
+
"log.entryPanelInline": { value: "12px" },
|
|
148
166
|
"menu.inset": { value: "4px" },
|
|
149
167
|
"menu.itemInline": { value: "8px" },
|
|
150
168
|
// Between a sidebar row's avatar or mark and its label.
|
|
151
|
-
"sidebar.markGap": { value: "
|
|
169
|
+
"sidebar.markGap": { value: "8px" },
|
|
152
170
|
"panel.hairline": { value: "4px" },
|
|
153
171
|
"panel.compact": { value: "8px" },
|
|
154
172
|
"panel.default": { value: "12px" },
|
|
155
173
|
"panel.comfortable": { value: "16px" },
|
|
156
174
|
"panel.roomy": { value: "24px" },
|
|
175
|
+
// A card's padding, and a stat tile's.
|
|
176
|
+
"panel.card": { value: "20px" },
|
|
177
|
+
"tile.block": { value: "18px" },
|
|
178
|
+
"tile.inline": { value: "20px" },
|
|
179
|
+
// Between the bars of a stat tile's placeholder.
|
|
180
|
+
"skeleton.tileGap": { value: "10px" },
|
|
181
|
+
// An empty state's block padding on a page, and bare or in a compact spot.
|
|
182
|
+
"emptyState.pageBlock": { value: "56px" },
|
|
183
|
+
"emptyState.compactBlock": { value: "32px" },
|
|
184
|
+
// Between the stages on a stage strip.
|
|
185
|
+
"stage.connectorGap": { value: "10px" },
|
|
186
|
+
// Between a numbered list's number and its text, the kit's Numbered item.
|
|
187
|
+
"list.numberGap": { value: "10px" },
|
|
188
|
+
// Between a budget row's name and its meter, the kit's Budget row.
|
|
189
|
+
"meter.rowGap": { value: "36px" },
|
|
157
190
|
"panel.sidebarBlock": { value: "14px" },
|
|
158
191
|
"page.inline": { value: "12px" },
|
|
159
192
|
"shell.leading": { value: "28px" },
|
|
@@ -170,6 +203,8 @@ export function createCiridaePreset({ appBase = false, ...theme } = {}) {
|
|
|
170
203
|
"indicator.count": { value: "16px" },
|
|
171
204
|
"log.caretColumn": { value: "12px" },
|
|
172
205
|
"log.minimum": { value: "320px" },
|
|
206
|
+
// A log entry's time column.
|
|
207
|
+
"log.timeColumn": { value: "64px" },
|
|
173
208
|
"log.rawMaximum": { value: "200px" },
|
|
174
209
|
"assistant.orb": { value: "28px" },
|
|
175
210
|
"widget.header": { value: "40px" },
|
|
@@ -177,11 +212,14 @@ export function createCiridaePreset({ appBase = false, ...theme } = {}) {
|
|
|
177
212
|
"avatar.micro": { value: "12px" },
|
|
178
213
|
"avatar.small": { value: "20px" },
|
|
179
214
|
"avatar.menu": { value: "24px" },
|
|
180
|
-
"avatar.
|
|
215
|
+
"avatar.agent": { value: "26px" },
|
|
216
|
+
"avatar.row": { value: "32px" },
|
|
217
|
+
// A record's owner, and the stand-in when there is none.
|
|
218
|
+
"avatar.owner": { value: "28px" },
|
|
181
219
|
"avatar.large": { value: "44px" },
|
|
182
220
|
// A mark set inline beside a name -- an icon, a provider logo, a project tile -- so
|
|
183
221
|
// every kind lines up in one column and indents can count on its width.
|
|
184
|
-
"mark.inline": { value: "{fontSizes.icon.
|
|
222
|
+
"mark.inline": { value: "{fontSizes.icon.small}" },
|
|
185
223
|
"progress.track": { value: "6px" },
|
|
186
224
|
"progress.segment": { value: "3px" },
|
|
187
225
|
"indicator.swatch": { value: "8px" },
|
|
@@ -193,7 +231,20 @@ export function createCiridaePreset({ appBase = false, ...theme } = {}) {
|
|
|
193
231
|
"brand.logo": { value: "40px" },
|
|
194
232
|
"indicator.radio": { value: "6px" },
|
|
195
233
|
"skeleton.line": { value: "16px" },
|
|
234
|
+
// A skeleton's bar or pill, its small pill, and a caption line.
|
|
235
|
+
"skeleton.bar": { value: "20px" },
|
|
236
|
+
"skeleton.badge": { value: "16px" },
|
|
237
|
+
"skeleton.caption": { value: "8px" },
|
|
196
238
|
"skeleton.short": { value: "64px" },
|
|
239
|
+
// A status chip's placeholder, and the design's fixed text bar; the small one is
|
|
240
|
+
// `skeleton.caption`.
|
|
241
|
+
"skeleton.pill": { value: "84px" },
|
|
242
|
+
"skeleton.textLine": { value: "10px" },
|
|
243
|
+
// A stat tile's height, which its placeholder and its empty stand-in hold; a card's
|
|
244
|
+
// placeholder, and the band its bars sit centred in.
|
|
245
|
+
"tile.minimum": { value: "96px" },
|
|
246
|
+
"skeleton.card": { value: "300px" },
|
|
247
|
+
"skeleton.cardBody": { value: "150px" },
|
|
197
248
|
"skeleton.medium": { value: "120px" },
|
|
198
249
|
"skeleton.long": { value: "200px" },
|
|
199
250
|
// A chart's height, which its loading placeholder holds.
|
|
@@ -210,30 +261,63 @@ export function createCiridaePreset({ appBase = false, ...theme } = {}) {
|
|
|
210
261
|
"control.clear": { value: "20px" },
|
|
211
262
|
// A step chip or small badge in a row of text.
|
|
212
263
|
"control.chip": { value: "22px" },
|
|
264
|
+
// A keycap that holds a word such as Esc rather than one glyph.
|
|
265
|
+
"control.wordKeycap": { value: "35px" },
|
|
266
|
+
// The composer's send button.
|
|
267
|
+
"control.send": { value: "26px" },
|
|
213
268
|
"control.small": { value: "30px" },
|
|
269
|
+
// A tab at rest: 2px under the open one, which fills its 30px track.
|
|
270
|
+
"control.restingTab": { value: "28px" },
|
|
214
271
|
"control.row": { value: "34px" },
|
|
272
|
+
// A round icon button in the top bar or a pager, and the smaller one that closes a sheet.
|
|
273
|
+
"control.round": { value: "34px" },
|
|
274
|
+
// The collapsed sidebar's expand button, the kit's 32px round button.
|
|
275
|
+
"control.roundRail": { value: "32px" },
|
|
276
|
+
"control.roundSmall": { value: "28px" },
|
|
277
|
+
"control.sidebarSearch": { value: "36px" },
|
|
278
|
+
// The square tile an icon sits on beside a row's title.
|
|
279
|
+
// The disc a numbered list's number sits in.
|
|
280
|
+
"list.number": { value: "20px" },
|
|
281
|
+
"tile.icon": { value: "32px" },
|
|
282
|
+
// The parts rollup's line, in place of the stage strip.
|
|
283
|
+
"partsRollup.height": { value: "26px" },
|
|
284
|
+
// A stat tile's chart slot, and the line's plot at its foot, under the end point's room.
|
|
285
|
+
"sparkline.width": { value: "88px" },
|
|
286
|
+
"sparkline.height": { value: "32px" },
|
|
287
|
+
"sparkline.plotWidth": { value: "84px" },
|
|
288
|
+
"sparkline.plotHeight": { value: "25px" },
|
|
215
289
|
"control.shortcut": { value: "24px" },
|
|
216
290
|
"control.compact": { value: "32px" },
|
|
217
291
|
"control.default": { value: "38px" },
|
|
218
292
|
"control.search": { value: "40px" },
|
|
219
293
|
// The widest a page's search field grows beside its filters.
|
|
220
294
|
"control.searchField": { value: "420px" },
|
|
221
|
-
"workspace.mark": { value: "
|
|
295
|
+
"workspace.mark": { value: "26px" },
|
|
222
296
|
"workspace.avatar": { value: "34px" },
|
|
223
297
|
"control.field": { value: "46px" },
|
|
224
298
|
"sidebar.projectAction": { value: "48px" },
|
|
299
|
+
// The rule between the icon rail's sections.
|
|
300
|
+
"sidebar.railRule": { value: "24px" },
|
|
301
|
+
// A sidebar row shorter than a page's, such as the settings sidebar's Back to app.
|
|
302
|
+
"sidebar.shortRow": { value: "28px" },
|
|
225
303
|
"toast.minimum": { value: "56px" },
|
|
226
304
|
"chat.footer": { value: "60px" },
|
|
227
305
|
"shell.header": { value: "54px" },
|
|
228
|
-
"shell.collapsed": { value: "
|
|
306
|
+
"shell.collapsed": { value: "64px" },
|
|
229
307
|
"table.scroll": { value: "min(70vh, 720px)" },
|
|
230
|
-
"
|
|
308
|
+
"table.headRow": { value: "44px" },
|
|
309
|
+
// A textarea at rest: two lines of body text in its well; it grows as it is dragged.
|
|
310
|
+
"field.textarea": { value: "64px" },
|
|
311
|
+
// An input set inline in a row.
|
|
312
|
+
"field.inline": { value: "28px" },
|
|
231
313
|
"chat.input": { value: "87px" },
|
|
232
314
|
"chat.inputMobile": { value: "72px" },
|
|
233
315
|
"chat.composerMinimum": { value: "149px" },
|
|
234
316
|
"overlay.menu": { value: "200px" },
|
|
235
317
|
// The tallest a select's or combobox's list grows before it scrolls.
|
|
236
318
|
"overlay.menuList": { value: "320px" },
|
|
319
|
+
// A stuck step's "Not sure?" menu of ways forward.
|
|
320
|
+
"overlay.helpMenu": { value: "360px" },
|
|
237
321
|
// The notification tray as a popover from the bell, and how much of its list shows.
|
|
238
322
|
"overlay.tray": { value: "380px" },
|
|
239
323
|
"overlay.trayList": { value: "min(60vh, 480px)" },
|
|
@@ -246,9 +330,14 @@ export function createCiridaePreset({ appBase = false, ...theme } = {}) {
|
|
|
246
330
|
"emptyState.minimum": { value: "200px" },
|
|
247
331
|
"search.regularPreview": { value: "250px" },
|
|
248
332
|
"search.sidebarPreview": { value: "264px" },
|
|
249
|
-
"calendar.width": { value: "268px" },
|
|
250
333
|
"shell.sidebar": { value: "248px" },
|
|
251
|
-
|
|
334
|
+
// A dialog's sheet, and the command palette's; the glass shell round each adds its padding.
|
|
335
|
+
"overlay.dialog": { value: "440px" },
|
|
336
|
+
"overlay.palette": { value: "640px" },
|
|
337
|
+
// The command palette's query row, a result row and its footer of key hints.
|
|
338
|
+
"commandPalette.query": { value: "56px" },
|
|
339
|
+
"commandPalette.row": { value: "40px" },
|
|
340
|
+
"commandPalette.footer": { value: "44px" },
|
|
252
341
|
"overlay.dialogWide": { value: "720px" },
|
|
253
342
|
// The floating drawer's sheet, inside its 8px shell.
|
|
254
343
|
"overlay.sheet": { value: "480px" },
|
|
@@ -257,6 +346,9 @@ export function createCiridaePreset({ appBase = false, ...theme } = {}) {
|
|
|
257
346
|
"overlay.sheetNarrow": { value: "400px" },
|
|
258
347
|
"overlay.sheetDocked": { value: "clamp(400px, 29.7vw, 488px)" },
|
|
259
348
|
"toast.width": { value: "440px" },
|
|
349
|
+
// A toast's progress track.
|
|
350
|
+
"toast.progressWidth": { value: "72px" },
|
|
351
|
+
"toast.progressHeight": { value: "4px" },
|
|
260
352
|
"chat.thread": { value: "640px" },
|
|
261
353
|
"chat.composer": { value: "640px" },
|
|
262
354
|
// A user bubble in the agent sheet leaves room on its left, as a reply would.
|
|
@@ -272,13 +364,26 @@ export function createCiridaePreset({ appBase = false, ...theme } = {}) {
|
|
|
272
364
|
"checklist.maximum": { value: "280px" },
|
|
273
365
|
"page.maximum": { value: "1440px" },
|
|
274
366
|
},
|
|
275
|
-
opacity: {
|
|
367
|
+
opacity: {
|
|
368
|
+
disabled: { value: ".5" },
|
|
369
|
+
// A locked step's dot, and a locked requirement's row, which keeps a little more.
|
|
370
|
+
"locked.step": { value: ".5" },
|
|
371
|
+
"locked.requirement": { value: ".55" },
|
|
372
|
+
// A round icon button fades further.
|
|
373
|
+
disabledRound: { value: ".25" },
|
|
374
|
+
// A ticked mark under the pointer, in dark: the face and its glyph fade a little.
|
|
375
|
+
checkedHover: { value: ".88" },
|
|
376
|
+
},
|
|
276
377
|
fontWeights: {
|
|
277
378
|
regular: { value: "400" },
|
|
278
379
|
medium: { value: "500" },
|
|
279
380
|
semibold: { value: "600" },
|
|
280
381
|
},
|
|
281
|
-
letterSpacings: {
|
|
382
|
+
letterSpacings: {
|
|
383
|
+
compact: { value: "-.01em" },
|
|
384
|
+
label: { value: ".04em" },
|
|
385
|
+
display: { value: "-.02em" },
|
|
386
|
+
},
|
|
282
387
|
fonts: {
|
|
283
388
|
display: { value: fonts.display },
|
|
284
389
|
sans: { value: fonts.sans },
|
|
@@ -286,12 +391,15 @@ export function createCiridaePreset({ appBase = false, ...theme } = {}) {
|
|
|
286
391
|
mono: { value: fonts.mono },
|
|
287
392
|
},
|
|
288
393
|
lineHeights: {
|
|
394
|
+
// A single line, its box the type's own height. Text that can wrap takes another.
|
|
289
395
|
tight: { value: "1" },
|
|
290
396
|
compact: { value: "1.25" },
|
|
291
397
|
log: { value: "1.4" },
|
|
292
|
-
body: { value: "1.
|
|
398
|
+
body: { value: "1.4" },
|
|
293
399
|
},
|
|
294
400
|
fontSizes: {
|
|
401
|
+
// The largest figure on a page, set with `letterSpacings.display`.
|
|
402
|
+
display: { value: "36px" },
|
|
295
403
|
body: { value: "14px" },
|
|
296
404
|
caption: { value: "13px" },
|
|
297
405
|
code: { value: "12px" },
|
|
@@ -333,12 +441,16 @@ export function createCiridaePreset({ appBase = false, ...theme } = {}) {
|
|
|
333
441
|
},
|
|
334
442
|
radii: {
|
|
335
443
|
round: { value: "999px" },
|
|
444
|
+
// A sidebar nav item.
|
|
445
|
+
nav: { value: "3px" },
|
|
336
446
|
keycap: { value: "6px" },
|
|
337
447
|
// Round 2 fields -- inputs, selects, checkboxes -- are nearly square-cornered.
|
|
338
448
|
control: { value: "4px" },
|
|
339
449
|
action: { value: "8px" },
|
|
340
450
|
field: { value: "12px" },
|
|
341
451
|
inset: { value: "12px" },
|
|
452
|
+
// The glass shell round a modal or drawer, the active nav pill, and a parallel chip.
|
|
453
|
+
shell: { value: "16px" },
|
|
342
454
|
card: { value: "24px" },
|
|
343
455
|
pill: { value: "36px" },
|
|
344
456
|
},
|
|
@@ -350,9 +462,13 @@ export function createCiridaePreset({ appBase = false, ...theme } = {}) {
|
|
|
350
462
|
"bg.panel": { value: colors["bg.panel"] },
|
|
351
463
|
"bg.card": { value: colors["bg.card"] },
|
|
352
464
|
"bg.avatar": { value: colors["bg.avatar"] },
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
},
|
|
465
|
+
// The modal scrim, and the overlays' glass; see `deriveThemeTokens`.
|
|
466
|
+
"bg.backdrop": { value: colors["bg.backdrop"] },
|
|
467
|
+
"bg.popover": { value: colors["bg.popover"] },
|
|
468
|
+
"bg.modalShell": { value: colors["bg.modalShell"] },
|
|
469
|
+
"bg.modalSheet": { value: colors["bg.modalSheet"] },
|
|
470
|
+
"bg.drawerShell": { value: colors["bg.drawerShell"] },
|
|
471
|
+
"bg.drawerSheet": { value: colors["bg.drawerSheet"] },
|
|
356
472
|
// The status hues as washes, drawn from the palette.
|
|
357
473
|
"bg.infoSubtle": { value: colors["bg.infoSubtle"] },
|
|
358
474
|
"bg.successSubtle": { value: colors["bg.successSubtle"] },
|
|
@@ -360,20 +476,27 @@ export function createCiridaePreset({ appBase = false, ...theme } = {}) {
|
|
|
360
476
|
"bg.errorSubtle": { value: colors["bg.errorSubtle"] },
|
|
361
477
|
"fg.archived": { value: colors["fg.archived"] },
|
|
362
478
|
"border.subtle": { value: colors["border.subtle"] },
|
|
363
|
-
//
|
|
479
|
+
// Focus is the palette's focus ring: Accent Blue in ciridae, the accent in the others.
|
|
364
480
|
"border.focus": { value: colors["border.focus"] },
|
|
365
481
|
// The greys, from the palette's ramp; see `deriveThemeTokens`.
|
|
366
482
|
"fg.primary": { value: colors["fg.primary"] },
|
|
367
483
|
"fg.muted": { value: colors["fg.muted"] },
|
|
368
484
|
"fg.secondary": { value: colors["fg.secondary"] },
|
|
369
485
|
"fg.subtle": { value: colors["fg.subtle"] },
|
|
486
|
+
"fg.quietGlyph": { value: colors["fg.quietGlyph"] },
|
|
487
|
+
"fg.label": { value: colors["fg.label"] },
|
|
370
488
|
"border.control": { value: colors["border.control"] },
|
|
489
|
+
"border.canvas": { value: colors["border.canvas"] },
|
|
490
|
+
"border.divider": { value: colors["border.divider"] },
|
|
491
|
+
"border.menuHover": { value: colors["border.menuHover"] },
|
|
371
492
|
"bg.field": { value: colors["bg.field"] },
|
|
493
|
+
"bg.formField": { value: colors["bg.formField"] },
|
|
494
|
+
"bg.openTrigger": { value: colors["bg.openTrigger"] },
|
|
372
495
|
"bg.fieldDisabled": { value: colors["bg.fieldDisabled"] },
|
|
373
496
|
"border.mark": { value: colors["border.mark"] },
|
|
374
|
-
// A field's edge once invalid: the
|
|
497
|
+
// A field's edge once invalid: the palette's red, at full strength in both themes.
|
|
375
498
|
"border.error": { value: colors["border.error"] },
|
|
376
|
-
// A hovered row is a grey wash; a selected row, tab, segment or card is
|
|
499
|
+
// A hovered row is a grey wash; a selected row, tab, segment or card is a neutral wash too.
|
|
377
500
|
"bg.rowHover": { value: colors["bg.rowHover"] },
|
|
378
501
|
"bg.selected": { value: colors["bg.selected"] },
|
|
379
502
|
"bg.selectedHover": { value: colors["bg.selectedHover"] },
|
|
@@ -383,13 +506,13 @@ export function createCiridaePreset({ appBase = false, ...theme } = {}) {
|
|
|
383
506
|
"border.panel": { value: colors["border.panel"] },
|
|
384
507
|
"border.card": { value: colors["border.card"] },
|
|
385
508
|
"border.glass": { value: colors["border.glass"] },
|
|
386
|
-
"border.toolbar": { value: colors["border.toolbar"] },
|
|
387
509
|
"border.hairline": { value: colors["border.hairline"] },
|
|
388
510
|
/*
|
|
389
|
-
* The faces
|
|
390
|
-
*
|
|
391
|
-
* `bg.raised` are the toolbar control and the button; `bg.hover` and `bg.
|
|
392
|
-
* the grey
|
|
511
|
+
* The flat faces; see `deriveThemeTokens`. `bg.surface` lifts a dialog or drawer off
|
|
512
|
+
* the card; `bg.control` is what a field or tab track wears; `bg.glass` and
|
|
513
|
+
* `bg.raised` are the toolbar control and the button; `bg.hover` and `bg.pressed` are
|
|
514
|
+
* the state layers and `bg.fill` the firmer grey fill. A face the design paints as a
|
|
515
|
+
* gradient has one under `gradients` too.
|
|
393
516
|
*/
|
|
394
517
|
"bg.surface": { value: colors["bg.surface"] },
|
|
395
518
|
"bg.control": { value: colors["bg.control"] },
|
|
@@ -400,6 +523,8 @@ export function createCiridaePreset({ appBase = false, ...theme } = {}) {
|
|
|
400
523
|
"bg.raisedHover": { value: colors["bg.raisedHover"] },
|
|
401
524
|
"bg.check": { value: colors["bg.check"] },
|
|
402
525
|
"bg.hover": { value: colors["bg.hover"] },
|
|
526
|
+
"bg.controlHover": { value: colors["bg.controlHover"] },
|
|
527
|
+
"bg.pressed": { value: colors["bg.pressed"] },
|
|
403
528
|
"bg.fill": { value: colors["bg.fill"] },
|
|
404
529
|
/*
|
|
405
530
|
* `primary` inverts: white on a dark panel, near-black on a light one. Light has no
|
|
@@ -411,14 +536,38 @@ export function createCiridaePreset({ appBase = false, ...theme } = {}) {
|
|
|
411
536
|
"bg.tinted": { value: colors["bg.tinted"] },
|
|
412
537
|
/* The destructive button's red. */
|
|
413
538
|
"bg.danger": { value: { base: "#F67C6A", _light: "#F36B57" } },
|
|
414
|
-
|
|
539
|
+
/*
|
|
540
|
+
* The solid tint of an attention block or a highlighted field, the same in every
|
|
541
|
+
* palette as the destructive red is; `border.*Tint` under `gradients` edges a block.
|
|
542
|
+
* Yellow is the design's 5% wash in dark. Dark draws a green or red block as its hue's
|
|
543
|
+
* glass, which these flatten to its middle.
|
|
544
|
+
*/
|
|
545
|
+
"bg.warningTint": { value: { base: "rgba(255,205,123,.05)", _light: "#F6F3ED" } },
|
|
546
|
+
"bg.successTint": { value: { base: "rgba(189,251,255,.1)", _light: "#DFEFEC" } },
|
|
547
|
+
"bg.errorTint": { value: { base: "rgba(249,211,205,.1)", _light: "#FFF2F2" } },
|
|
548
|
+
// Links take the palette's accent; the four status hues keep their meaning.
|
|
415
549
|
"accent.brand": { value: colors["accent.brand"] },
|
|
416
550
|
"accent.green": { value: colors["accent.green"] },
|
|
551
|
+
"accent.greenDark": { value: colors["accent.greenDark"] },
|
|
417
552
|
"accent.red": { value: colors["accent.red"] },
|
|
553
|
+
"accent.redDark": { value: colors["accent.redDark"] },
|
|
418
554
|
"accent.yellow": { value: colors["accent.yellow"] },
|
|
555
|
+
"accent.yellowIcon": { value: colors["accent.yellowIcon"] },
|
|
419
556
|
"accent.blue": { value: colors["accent.blue"] },
|
|
420
557
|
"accent.bronze": { value: colors["accent.bronze"] },
|
|
421
558
|
"border.bronze": { value: colors["border.bronze"] },
|
|
559
|
+
// Data marks, never UI; see `derivePaletteTokens`.
|
|
560
|
+
"chart.bar": { value: colors["chart.bar"] },
|
|
561
|
+
"chart.trend": { value: colors["chart.trend"] },
|
|
562
|
+
"chart.category1": { value: colors["chart.category1"] },
|
|
563
|
+
"chart.category2": { value: colors["chart.category2"] },
|
|
564
|
+
"chart.category3": { value: colors["chart.category3"] },
|
|
565
|
+
"chart.category4": { value: colors["chart.category4"] },
|
|
566
|
+
"chart.barTrack": { value: colors["chart.barTrack"] },
|
|
567
|
+
"chart.progressTrack": { value: colors["chart.progressTrack"] },
|
|
568
|
+
"chart.atRiskTrack": { value: colors["chart.atRiskTrack"] },
|
|
569
|
+
"chart.neutral": { value: colors["chart.neutral"] },
|
|
570
|
+
"chart.notStarted": { value: colors["chart.notStarted"] },
|
|
422
571
|
/*
|
|
423
572
|
* Text sitting on a filled accent. Deliberately the same in both themes:
|
|
424
573
|
* the accent it sits on stays saturated, so a value that followed the
|
|
@@ -433,10 +582,16 @@ export function createCiridaePreset({ appBase = false, ...theme } = {}) {
|
|
|
433
582
|
_light: "inset 0 1px 1px rgba(255,255,255,.18), inset 0 -1px 1px rgba(0,0,0,.12), 0 1px 2px rgba(0,0,0,.08)",
|
|
434
583
|
},
|
|
435
584
|
},
|
|
436
|
-
// The shadows cast in the palette's greys
|
|
585
|
+
// The shadows `deriveThemeTokens` sets, most cast in the palette's greys.
|
|
437
586
|
search: { value: shadows.search },
|
|
438
587
|
inset: { value: shadows.inset },
|
|
588
|
+
// A card's elevation, and the softer one of a sheet, toast or chip, or the segment that is on.
|
|
439
589
|
card: { value: shadows.card },
|
|
590
|
+
soft: { value: shadows.soft },
|
|
591
|
+
// The faint glow round a drawer's glass shell; light only.
|
|
592
|
+
drawerShell: {
|
|
593
|
+
value: { base: "none", _light: "0 0 12px rgba(136,136,140,.08)" },
|
|
594
|
+
},
|
|
440
595
|
focus: { value: shadows.focus },
|
|
441
596
|
panel: {
|
|
442
597
|
value: { base: "0 4px 124px rgba(0,0,0,.25)", _light: "0 4px 124px rgba(0,0,0,.12)" },
|
|
@@ -454,11 +609,114 @@ export function createCiridaePreset({ appBase = false, ...theme } = {}) {
|
|
|
454
609
|
"control.pressed": { value: shadows["control.pressed"] },
|
|
455
610
|
},
|
|
456
611
|
gradients: {
|
|
457
|
-
|
|
458
|
-
|
|
612
|
+
// A loading placeholder's flat fill.
|
|
613
|
+
skeletonFill: { value: gradients.skeletonFill },
|
|
459
614
|
orb: {
|
|
460
615
|
value: "radial-gradient(circle at 70% 24%, rgba(232,224,195,.9) 0 9%, transparent 11%), linear-gradient(180deg, #E8E0C3, #46361D)",
|
|
461
616
|
},
|
|
617
|
+
/*
|
|
618
|
+
* The faces the design paints as gradients, most with a flat `bg.*` sibling near its
|
|
619
|
+
* middle; see `deriveThemeTokens`. The destructive face is the same red in every palette,
|
|
620
|
+
* as `bg.danger` is.
|
|
621
|
+
*/
|
|
622
|
+
canvas: { value: gradients.canvas },
|
|
623
|
+
panel: { value: gradients.panel },
|
|
624
|
+
card: { value: gradients.card },
|
|
625
|
+
raised: { value: gradients.raised },
|
|
626
|
+
raisedHover: { value: gradients.raisedHover },
|
|
627
|
+
selected: { value: gradients.selected },
|
|
628
|
+
rowHover: { value: gradients.rowHover },
|
|
629
|
+
primary: { value: gradients.primary },
|
|
630
|
+
tinted: { value: gradients.tinted },
|
|
631
|
+
danger: {
|
|
632
|
+
value: {
|
|
633
|
+
base: "linear-gradient(to bottom, #F69385, #F7644F)",
|
|
634
|
+
_light: "linear-gradient(to bottom, #F48272, #F2533C)",
|
|
635
|
+
},
|
|
636
|
+
},
|
|
637
|
+
/*
|
|
638
|
+
* The 1px edges a face draws as a gradient, through `[data-edge]`. Dark draws no edge
|
|
639
|
+
* on the primary or destructive face.
|
|
640
|
+
*/
|
|
641
|
+
"border.raised": { value: glassEdgeWithLightGradient("#BCB6B6", "#9C9A9A") },
|
|
642
|
+
"border.primary": {
|
|
643
|
+
value: {
|
|
644
|
+
base: noEdge,
|
|
645
|
+
_light: "linear-gradient(to bottom, rgba(51,51,55,.33), rgba(74,70,66,.33) 10%, rgba(55,52,48,.33) 90%, rgba(51,51,55,.33))",
|
|
646
|
+
},
|
|
647
|
+
},
|
|
648
|
+
"border.danger": {
|
|
649
|
+
value: {
|
|
650
|
+
base: noEdge,
|
|
651
|
+
_light: "linear-gradient(to bottom, rgba(195,81,81,.33), rgba(142,61,61,.33))",
|
|
652
|
+
},
|
|
653
|
+
},
|
|
654
|
+
"border.tinted": { value: gradients["border.tinted"] },
|
|
655
|
+
// The edge of a workspace mark other than the current one: flat in dark.
|
|
656
|
+
"border.otherWorkspaceMark": {
|
|
657
|
+
value: {
|
|
658
|
+
base: linearGradient("to bottom", ["#3C3C3C", "#3C3C3C"], 0.66),
|
|
659
|
+
_light: linearGradient("to bottom", ["#D8D8D8", "#CCCBCB"], 0.66),
|
|
660
|
+
},
|
|
661
|
+
},
|
|
662
|
+
// The selected face's edge, round a user's chat bubble.
|
|
663
|
+
"border.selected": {
|
|
664
|
+
value: {
|
|
665
|
+
base: darkGlassEdge,
|
|
666
|
+
_light: linearGradient("to bottom", ["#D8D8D8", "#CCCBCB"], 0.66),
|
|
667
|
+
},
|
|
668
|
+
},
|
|
669
|
+
// A chart's area under its trend line, and a progress bar on track and at risk.
|
|
670
|
+
"chart.area": { value: gradients["chart.area"] },
|
|
671
|
+
"chart.progress": { value: gradients["chart.progress"] },
|
|
672
|
+
"chart.atRisk": { value: gradients["chart.atRisk"] },
|
|
673
|
+
/*
|
|
674
|
+
* The hue glass a badge, a step or the current stage wears, each with its edge: .66 in
|
|
675
|
+
* light and .10 in dark, the done step stronger in dark. Yellow's is `tinted`. The same
|
|
676
|
+
* in every palette, as the destructive red is.
|
|
677
|
+
*/
|
|
678
|
+
infoGlass: {
|
|
679
|
+
value: themedGradient("to bottom", { base: ["#FFFFFF", "#A4D5F8"], _light: ["#F4F5F5", "#E2F2FF"] }, { base: 0.1, _light: 0.66 }),
|
|
680
|
+
},
|
|
681
|
+
successGlass: {
|
|
682
|
+
value: themedGradient("to bottom", { base: ["#FFFFFF", "#7BF6FF"], _light: ["#ECECEC", "#DFEFEC"] }, { base: 0.1, _light: 0.66 }),
|
|
683
|
+
},
|
|
684
|
+
dangerGlass: {
|
|
685
|
+
value: themedGradient("to bottom", { base: ["#FFFFFF", "#F3A69B"], _light: ["#FDFDFD", "#E8DAD9"] }, { base: 0.1, _light: 0.66 }),
|
|
686
|
+
},
|
|
687
|
+
stepDoneGlass: {
|
|
688
|
+
value: themedGradient("to bottom", { base: ["#BEE1DB", "#327A6E"], _light: ["#ECECEC", "#DFEFEC"] }, { base: 0.6, _light: 0.66 }),
|
|
689
|
+
},
|
|
690
|
+
currentStageGlass: {
|
|
691
|
+
value: themedGradient("to bottom", { base: ["#FFFFFF", "#FFCD7B"], _light: ["#F3F3F3", "#FDF4DF"] }, { base: 0.1, _light: 0.66 }),
|
|
692
|
+
},
|
|
693
|
+
"border.infoGlass": { value: glassEdgeWithLightGradient("#B9E4FF", "#88AFCC") },
|
|
694
|
+
"border.successGlass": { value: glassEdgeWithLightGradient("#AEF3E5", "#96BFB9") },
|
|
695
|
+
"border.dangerGlass": { value: glassEdgeWithLightGradient("#DABBBB", "#A68181") },
|
|
696
|
+
"border.stepDoneGlass": {
|
|
697
|
+
value: themedGradient("to bottom", { base: ["#BEE1DB", "#327A6E"], _light: ["#9FCCC3", "#589D92"] }, { base: 0.6, _light: 0.33 }),
|
|
698
|
+
},
|
|
699
|
+
"border.currentStageGlass": { value: glassEdgeWithLightGradient("#EEDFBA", "#E8C674") },
|
|
700
|
+
// The edge of an attention block on its `bg.*Tint`: your move, ready and stuck.
|
|
701
|
+
"border.warningTint": {
|
|
702
|
+
value: themedGradient("to bottom", { base: ["#FFF1C9", "#A47D28"], _light: ["#DBCAA9", "#987C38"] }, { base: 0.15, _light: 0.33 }),
|
|
703
|
+
},
|
|
704
|
+
"border.successTint": {
|
|
705
|
+
value: themedGradient("to bottom", { base: ["#BEE1DB", "#327A6E"], _light: ["#9FCCC3", "#589D92"] }, { base: 0.15, _light: 0.33 }),
|
|
706
|
+
},
|
|
707
|
+
"border.errorTint": {
|
|
708
|
+
value: themedGradient("to bottom", { base: ["#FCC9C1", "#B24839"], _light: ["#C35151", "#8E3D3D"] }, { base: 0.15, _light: 0.33 }),
|
|
709
|
+
},
|
|
710
|
+
},
|
|
711
|
+
/*
|
|
712
|
+
* The overlays' backdrop blur, by role: a popover or menu, a modal's glass shell and its
|
|
713
|
+
* sheet, a drawer's shell. Dark blurs a modal's shell; light blurs its sheet.
|
|
714
|
+
*/
|
|
715
|
+
blurs: {
|
|
716
|
+
popover: { value: { base: "64px", _light: "128px" } },
|
|
717
|
+
modalShell: { value: { base: "64px", _light: "8px" } },
|
|
718
|
+
modalSheet: { value: { base: "0px", _light: "128px" } },
|
|
719
|
+
drawerShell: { value: "16px" },
|
|
462
720
|
},
|
|
463
721
|
},
|
|
464
722
|
},
|