astryx-dracula 0.5.1 → 0.6.2
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/BRAND.md +3 -3
- package/README.md +7 -4
- package/USAGE.md +49 -49
- package/astryx-dracula.d.ts +2 -2
- package/astryx-dracula.js +25 -9
- package/astryx-dracula.variants.d.ts +2 -2
- package/icons.mjs +4 -0
- package/icons.tsx +8 -0
- package/package.json +22 -17
- package/shared/chaptered-doc.tsx +1 -2
- package/shared/chart-hues.ts +21 -6
- package/shared/chart-legend.tsx +2 -2
- package/shared/data-bar.tsx +2 -2
- package/shared/settings-data.ts +0 -6
- package/shared/settings-rows.tsx +1 -23
- package/templates/ai-chat-landing.template.mjs +1 -0
- package/templates/ai-chat-landing.tsx +24 -2
- package/templates/ai-chat.template.mjs +1 -0
- package/templates/ai-chat.tsx +4 -2
- package/templates/blank.template.mjs +1 -0
- package/templates/blank.tsx +4 -2
- package/templates/centered-hero.template.mjs +1 -0
- package/templates/centered-hero.tsx +5 -3
- package/templates/classic-gallery.template.mjs +1 -0
- package/templates/classic-gallery.tsx +4 -2
- package/templates/contact-form.template.mjs +1 -0
- package/templates/contact-form.tsx +4 -2
- package/templates/dashboard-portfolio.template.mjs +1 -0
- package/templates/dashboard-portfolio.tsx +4 -2
- package/templates/dashboard.template.mjs +1 -0
- package/templates/dashboard.tsx +4 -2
- package/templates/detail-page.template.mjs +1 -0
- package/templates/detail-page.tsx +16 -16
- package/templates/documentation-design.template.mjs +1 -0
- package/templates/documentation-design.tsx +5 -3
- package/templates/documentation-technical.template.mjs +1 -0
- package/templates/documentation-technical.tsx +4 -2
- package/templates/documentation.template.mjs +1 -0
- package/templates/documentation.tsx +4 -2
- package/templates/editor.template.mjs +1 -0
- package/templates/editor.tsx +4 -2
- package/templates/file-explorer.template.mjs +1 -0
- package/templates/file-explorer.tsx +4 -2
- package/templates/form-two-column.template.mjs +1 -0
- package/templates/form-two-column.tsx +8 -2
- package/templates/gallery-hero.template.mjs +1 -0
- package/templates/gallery-hero.tsx +4 -2
- package/templates/ide.template.mjs +1 -0
- package/templates/ide.tsx +11 -6
- package/templates/incident-console.template.mjs +1 -0
- package/templates/incident-console.tsx +122 -80
- package/templates/kanban-board.template.mjs +1 -0
- package/templates/kanban-board.tsx +6 -4
- package/templates/library.template.mjs +1 -0
- package/templates/library.tsx +4 -2
- package/templates/login-card.template.mjs +1 -0
- package/templates/login-card.tsx +4 -2
- package/templates/login-split.template.mjs +1 -0
- package/templates/login-split.tsx +5 -2
- package/templates/login-sso.template.mjs +1 -0
- package/templates/login-sso.tsx +4 -2
- package/templates/login.template.mjs +1 -0
- package/templates/login.tsx +4 -2
- package/templates/messaging-shell.template.mjs +1 -0
- package/templates/messaging-shell.tsx +6 -2
- package/templates/mixed-gallery.template.mjs +1 -0
- package/templates/mixed-gallery.tsx +4 -2
- package/templates/payment-form.template.mjs +1 -0
- package/templates/payment-form.tsx +5 -3
- package/templates/product-detail.template.mjs +1 -0
- package/templates/product-detail.tsx +9 -2
- package/templates/product-gallery.template.mjs +1 -0
- package/templates/product-gallery.tsx +4 -2
- package/templates/product-tour.template.mjs +1 -0
- package/templates/product-tour.tsx +13 -10
- package/templates/settings-dialog.template.mjs +1 -0
- package/templates/settings-dialog.tsx +5 -3
- package/templates/settings-sidebar.template.mjs +1 -0
- package/templates/settings-sidebar.tsx +6 -4
- package/templates/settings.template.mjs +1 -0
- package/templates/settings.tsx +6 -10
- package/templates/shell-nav.template.mjs +1 -0
- package/templates/shell-nav.tsx +24 -26
- package/templates/shell-side-nav.template.mjs +1 -0
- package/templates/shell-side-nav.tsx +23 -18
- package/templates/shell-top-nav.template.mjs +1 -0
- package/templates/shell-top-nav.tsx +4 -2
- package/templates/side-gallery.template.mjs +1 -0
- package/templates/side-gallery.tsx +4 -2
- package/templates/table-grouped.template.mjs +1 -0
- package/templates/table-grouped.tsx +5 -3
- package/templates/table-page-chart.template.mjs +1 -0
- package/templates/table-page-chart.tsx +4 -2
- package/templates/table-page-heatmap-status.template.mjs +1 -0
- package/templates/table-page-heatmap-status.tsx +4 -2
- package/templates/table-page-shoe-store-heatmap.template.mjs +1 -0
- package/templates/table-page-shoe-store-heatmap.tsx +4 -2
- package/templates/table-page.template.mjs +1 -0
- package/templates/table-page.tsx +4 -2
- package/templates/table.template.mjs +1 -0
- package/templates/table.tsx +4 -2
- package/templates/tech-report.template.mjs +1 -0
- package/templates/tech-report.tsx +10 -8
- package/templates/theme-showcase.template.mjs +1 -0
- package/templates/theme-showcase.tsx +23 -17
- package/theme.css +35 -77
- package/theme.css.d.ts +9 -0
- package/tokens.css +38 -42
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
// Copyright (c) Meta Platforms, Inc. and affiliates.
|
|
2
|
-
// XLE (canonical structure
|
|
3
|
-
//
|
|
2
|
+
// XLE (canonical structure of the tree below; the CLI had no XLE validator
|
|
3
|
+
// after `astryx layout` was removed in 0.7.0, so this is a reading aid and a
|
|
4
|
+
// human drift check — update it with the file, never alone):
|
|
5
|
+
// V[g=0] > (V[g=0] > (V[g=0] > (TN"Nocturne" > ((TNI"Shop" + TNI"New In" + TNI"Stories" + TNI"Help") + (H[g=2 a=center] > (H[g=0.5] > B.ghost"Search" + B.ghost"Account" + B.ghost"Cart") + B.primary"Sign in"))) + (S.transparent[p=6] > V[g=10 mw=880] > (Ctr > V[g=4 a=center mw=560] > Hd"Little haunts"[level=1 t=display-2] + Tx"We believe"[t=body]) + (G[c={min:200,max:3} g=4] > (C[p=0 h=100%] > (V[g=0 h=100%] > (AR[ratio=1] > Scene{SceneFrame}) + (V[g=2 a=center p=4] > Bd.cyan"New" + Hd"Moonphase Watch"[level=2] + Tx"Description"[t=body] + (H[g=2 a=center] > NI"Quantity" + B.secondary"Add to cart"))))*3)))) + (V[g=0 p=6] > (V[g=8] > ((C[p=0] > (H[g=3 j=between a=center] > Hd"Night Owl AI"[level=2] + (H[g=1 a=center] > B.ghost"Export conversation" + B.ghost"Close chat")) + D + (V[g=0] > ChML > (ChSM"Today" + (ChM > ChB{ChatMessageBubble}"Where's my order?") + (ChM > (V[g=3] > Tx"Body"[t=body] + Tx"Body"[t=body])) + (ChM > ChB{ChatMessageBubble}"Can you show me the full details?") + (ChM > (V[g=3] > Tx"Body"[t=body] + (C[p=3] > (V[g=1] > LI{Item}*4)))))) + (V[g=0] > (H[g=1 a=center wrap] > B.secondary*3)) + (V[g=0] > ChC"Ask Night Owl..."))) + (G[c={min:200} g=4] > (GS[c=3] > (C[p=0] > (H[g=3 j=between a=center] > Hd"Inventory"[level=2] + B.primary"Add item") + D + (H[g=3 j=between a=center] > (H[g=2 a=center] > TI"Search inventory" + (OFL[g=2] > SE{Selector}*3)) + (H[g=1 a=center] > B.ghost"List view" + B.ghost"Grid view")) + (V[g=0] > Bn.warning"2 items are running low") + (V[g=0] > T[density=spacious dv=rows hover] > (TR > THC + THC"Item" + THC"Available" + THC"Location" + THC"Tags" + THC) + (TR > (TC > CB) + (TC > (H[g=3 a=center] > Sw{ProductSwatch} + (V[g=0] > Tx"Moonphase Watch"[t=body] + Tx"Steel case, moonphase dial"[t=supporting]))) + TC"42" + TC"Roost 3" + (TC > Bd) + (TC > MM))*6))) + (GS[c=1] > (C[p=4 h=100%] > (V[g=4 h=100%] > Hd"Revenue"[level=2] + (G[c=2 g=3] > (V[g=0] > Tx"18K"[t=display-3] + Tx"Monthly revenue"[t=supporting]) + (V[g=0] > Tx"+12%"[t=display-3] + Tx"Order growth"[t=supporting])) + D + (H[g=3 j=between a=center] > Hd"Activity"[level=3] + Lk"See all") + (V[g=1] > LI{Item}*5)))))))
|
|
4
6
|
|
|
5
7
|
/**
|
|
6
8
|
* Theme Showcase — the storefront page each theme is previewed against, and the only template that is deliberately shell-less: it paints its o (Frame/responsive/container: see XLE header above.)
|
|
@@ -70,15 +72,7 @@ const PRODUCT_COLUMNS = { minWidth: 200, max: 3 } as const;
|
|
|
70
72
|
|
|
71
73
|
/** Categorical badge variants usable for showcase product/inventory tags. */
|
|
72
74
|
export type ShowcaseBadgeVariant =
|
|
73
|
-
| "
|
|
74
|
-
| "cyan"
|
|
75
|
-
| "green"
|
|
76
|
-
| "orange"
|
|
77
|
-
| "pink"
|
|
78
|
-
| "purple"
|
|
79
|
-
| "red"
|
|
80
|
-
| "teal"
|
|
81
|
-
| "yellow";
|
|
75
|
+
"blue" | "cyan" | "green" | "orange" | "pink" | "purple" | "red" | "teal" | "yellow";
|
|
82
76
|
|
|
83
77
|
export interface ProductSpec {
|
|
84
78
|
name: string;
|
|
@@ -291,7 +285,7 @@ function StorePreview({ products, isMobile }: { products: ProductSpec[]; isMobil
|
|
|
291
285
|
// 40px was too tight on themes with larger padding /
|
|
292
286
|
// bigger type scale (e.g. Matcha, Y2K), clipping the
|
|
293
287
|
// value.
|
|
294
|
-
|
|
288
|
+
controlStyle={{ minWidth: 64, flexShrink: 0 }}
|
|
295
289
|
/>
|
|
296
290
|
<Button
|
|
297
291
|
label="Add to cart"
|
|
@@ -536,7 +530,7 @@ const ACTIVITY: ActivityRow[] = [
|
|
|
536
530
|
|
|
537
531
|
function formatAmount(amount: number): string {
|
|
538
532
|
const sign = amount < 0 ? "−" : "+";
|
|
539
|
-
return sign
|
|
533
|
+
return `${sign}$${Math.abs(amount).toLocaleString()}`;
|
|
540
534
|
}
|
|
541
535
|
|
|
542
536
|
function LatestActivityCard({ isMobile }: { isMobile: boolean }) {
|
|
@@ -587,7 +581,11 @@ function LatestActivityCard({ isMobile }: { isMobile: boolean }) {
|
|
|
587
581
|
overflow: "hidden",
|
|
588
582
|
maskImage: "linear-gradient(to bottom, black calc(100% - 48px), transparent)",
|
|
589
583
|
WebkitMaskImage: "linear-gradient(to bottom, black calc(100% - 48px), transparent)",
|
|
590
|
-
|
|
584
|
+
// Cancel the Item inline inset with the inset ITSELF: core
|
|
585
|
+
// publishes it as --_item-inset-inline (0.6.7), and it
|
|
586
|
+
// tracks density and theme overrides. A literal spacing
|
|
587
|
+
// step silently stops matching when either moves.
|
|
588
|
+
marginInline: "calc(-1 * var(--_item-inset-inline))",
|
|
591
589
|
}}
|
|
592
590
|
>
|
|
593
591
|
{/* The sign travels in the string (formatAmount prefixes U+2212), so
|
|
@@ -730,7 +728,7 @@ const LOW_STOCK_THRESHOLD = 25;
|
|
|
730
728
|
function SelectCell({ row }: { row: InventoryRow }) {
|
|
731
729
|
return (
|
|
732
730
|
<CheckboxInput
|
|
733
|
-
label={
|
|
731
|
+
label={`Select ${row.name}`}
|
|
734
732
|
isLabelHidden
|
|
735
733
|
value={row.selected}
|
|
736
734
|
onChange={() => {}}
|
|
@@ -887,7 +885,7 @@ function InventoryCard({ inventory }: { inventory: InventoryRow[] }) {
|
|
|
887
885
|
value=""
|
|
888
886
|
onChange={() => {}}
|
|
889
887
|
startIcon={<Search size={16} />}
|
|
890
|
-
|
|
888
|
+
controlStyle={{ flex: 1, minWidth: 0, maxWidth: 240 }}
|
|
891
889
|
/>
|
|
892
890
|
<OverflowList
|
|
893
891
|
gap={2}
|
|
@@ -949,7 +947,15 @@ function InventoryCard({ inventory }: { inventory: InventoryRow[] }) {
|
|
|
949
947
|
|
|
950
948
|
{lowStockCount > 0 && (
|
|
951
949
|
<VStack gap={0} paddingInline={6} paddingBlockEnd={4}>
|
|
952
|
-
<Banner
|
|
950
|
+
<Banner
|
|
951
|
+
status="warning"
|
|
952
|
+
// Core 0.7.0 stopped deriving the live-region role from
|
|
953
|
+
// `status`, so this banner states its own. It appears when
|
|
954
|
+
// the count crosses the threshold, and a screen reader must
|
|
955
|
+
// hear it.
|
|
956
|
+
role="status"
|
|
957
|
+
title={`${lowStockCount} items are running low`}
|
|
958
|
+
/>
|
|
953
959
|
</VStack>
|
|
954
960
|
)}
|
|
955
961
|
|
package/theme.css
CHANGED
|
@@ -2,10 +2,12 @@
|
|
|
2
2
|
* @generated by `astryx theme build` — do not edit manually.
|
|
3
3
|
* Source: astryx-theme.ts
|
|
4
4
|
* Command: astryx theme build astryx-theme.ts --out theme.css
|
|
5
|
-
* CLI: @astryxdesign/cli@0.
|
|
6
|
-
* Core: @astryxdesign/core@0.
|
|
5
|
+
* CLI: @astryxdesign/cli@0.7.2
|
|
6
|
+
* Core: @astryxdesign/core@0.7.2
|
|
7
7
|
*/
|
|
8
8
|
|
|
9
|
+
@layer reset, astryx-base, astryx-theme;
|
|
10
|
+
|
|
9
11
|
@layer reset {
|
|
10
12
|
@scope ([data-astryx-theme="astryx-dracula"]) to ([data-astryx-theme]) {
|
|
11
13
|
:where(h1, h2, h3, h4, h5, h6) {
|
|
@@ -77,67 +79,6 @@
|
|
|
77
79
|
}
|
|
78
80
|
}
|
|
79
81
|
|
|
80
|
-
@layer astryx-base {
|
|
81
|
-
:root {
|
|
82
|
-
--color-data-categorical-blue: light-dark(#0171E3, #0171E3);
|
|
83
|
-
--color-data-categorical-orange: light-dark(#EB6E00, #EB6E00);
|
|
84
|
-
--color-data-categorical-purple: light-dark(#6B1EFD, #6B1EFD);
|
|
85
|
-
--color-data-categorical-green: light-dark(#0B991F, #0B991F);
|
|
86
|
-
--color-data-categorical-pink: light-dark(#F351C0, #F351C0);
|
|
87
|
-
--color-data-categorical-cyan: light-dark(#0171A4, #0171A4);
|
|
88
|
-
--color-data-categorical-red: light-dark(#F5394F, #F5394F);
|
|
89
|
-
--color-data-categorical-teal: light-dark(#08A3A3, #08A3A3);
|
|
90
|
-
--color-data-categorical-brown: light-dark(#965E03, #965E03);
|
|
91
|
-
--color-data-categorical-indigo: light-dark(#6F8AFF, #6F8AFF);
|
|
92
|
-
--color-data-neutral: light-dark(#8494A3, #8C939B);
|
|
93
|
-
--color-data-blue-5: light-dark(#02165E, #02165E);
|
|
94
|
-
--color-data-blue-4: light-dark(#004CBC, #004CBC);
|
|
95
|
-
--color-data-blue-3: light-dark(#2694FE, #2694FE);
|
|
96
|
-
--color-data-blue-2: light-dark(#78BEFF, #78BEFF);
|
|
97
|
-
--color-data-blue-1: light-dark(#DBECFF, #DBECFF);
|
|
98
|
-
--color-data-shamrock-5: light-dark(#0B603D, #0B603D);
|
|
99
|
-
--color-data-shamrock-4: light-dark(#138546, #138546);
|
|
100
|
-
--color-data-shamrock-3: light-dark(#24BB5E, #24BB5E);
|
|
101
|
-
--color-data-shamrock-2: light-dark(#8EF7AA, #8EF7AA);
|
|
102
|
-
--color-data-shamrock-1: light-dark(#D6FEE4, #D6FEE4);
|
|
103
|
-
--color-data-orange-5: light-dark(#A13F04, #A13F04);
|
|
104
|
-
--color-data-orange-4: light-dark(#D66100, #D66100);
|
|
105
|
-
--color-data-orange-3: light-dark(#FD9537, #FD9537);
|
|
106
|
-
--color-data-orange-2: light-dark(#FDB876, #FDB876);
|
|
107
|
-
--color-data-orange-1: light-dark(#FFE6CF, #FFE6CF);
|
|
108
|
-
--color-data-pink-5: light-dark(#8E1073, #8E1073);
|
|
109
|
-
--color-data-pink-4: light-dark(#D123A1, #D123A1);
|
|
110
|
-
--color-data-pink-3: light-dark(#F989D3, #F989D3);
|
|
111
|
-
--color-data-pink-2: light-dark(#FEADE3, #FEADE3);
|
|
112
|
-
--color-data-pink-1: light-dark(#FCE3F4, #FCE3F4);
|
|
113
|
-
--color-data-purple-5: light-dark(#3E0697, #3E0697);
|
|
114
|
-
--color-data-purple-4: light-dark(#6B1EFD, #6B1EFD);
|
|
115
|
-
--color-data-purple-3: light-dark(#9081FF, #9081FF);
|
|
116
|
-
--color-data-purple-2: light-dark(#B3B0FE, #B3B0FE);
|
|
117
|
-
--color-data-purple-1: light-dark(#E8E8FB, #E8E8FB);
|
|
118
|
-
--color-data-red-5: light-dark(#9D0519, #9D0519);
|
|
119
|
-
--color-data-red-4: light-dark(#D31130, #D31130);
|
|
120
|
-
--color-data-red-3: light-dark(#FB7D87, #FB7D87);
|
|
121
|
-
--color-data-red-2: light-dark(#FFB2B8, #FFB2B8);
|
|
122
|
-
--color-data-red-1: light-dark(#FEE4E6, #FEE4E6);
|
|
123
|
-
--color-data-teal-5: light-dark(#08767D, #08767D);
|
|
124
|
-
--color-data-teal-4: light-dark(#0C9293, #0C9293);
|
|
125
|
-
--color-data-teal-3: light-dark(#0DB7AF, #0DB7AF);
|
|
126
|
-
--color-data-teal-2: light-dark(#6CE6D8, #6CE6D8);
|
|
127
|
-
--color-data-teal-1: light-dark(#D7FCF8, #D7FCF8);
|
|
128
|
-
--color-data-yellow-5: light-dark(#8A5001, #8A5001);
|
|
129
|
-
--color-data-yellow-4: light-dark(#D69804, #D69804);
|
|
130
|
-
--color-data-yellow-3: light-dark(#FBCE03, #FBCE03);
|
|
131
|
-
--color-data-yellow-2: light-dark(#FCEC85, #FCEC85);
|
|
132
|
-
--color-data-yellow-1: light-dark(#FDF6BA, #FDF6BA);
|
|
133
|
-
--color-data-gray-5: light-dark(#25363F, #333338);
|
|
134
|
-
--color-data-gray-4: light-dark(#5D6C7B, #666A72);
|
|
135
|
-
--color-data-gray-3: light-dark(#AFB9C4, #B2B8BE);
|
|
136
|
-
--color-data-gray-2: light-dark(#CCD3DB, #D0D3D6);
|
|
137
|
-
--color-data-gray-1: light-dark(#F1F4F7, #F2F4F6);
|
|
138
|
-
}
|
|
139
|
-
}
|
|
140
|
-
|
|
141
82
|
@layer astryx-theme {
|
|
142
83
|
:root { color-scheme: light dark; }
|
|
143
84
|
html[data-theme="light"] { color-scheme: light; }
|
|
@@ -225,6 +166,11 @@
|
|
|
225
166
|
--color-syntax-property: #F8F8F2;
|
|
226
167
|
--color-syntax-punctuation: #F8F8F2;
|
|
227
168
|
--color-syntax-background: #282A36;
|
|
169
|
+
--color-syntax-added: #50FA7B26;
|
|
170
|
+
--color-syntax-removed: #FF555526;
|
|
171
|
+
--color-syntax-diff-header: #44475A;
|
|
172
|
+
--color-syntax-added-marker: #50FA7B;
|
|
173
|
+
--color-syntax-removed-marker: #FF5555;
|
|
228
174
|
--radius-inner: 4px;
|
|
229
175
|
--radius-element: 5px;
|
|
230
176
|
--radius-container: 5px;
|
|
@@ -602,31 +548,31 @@
|
|
|
602
548
|
border-color: var(--color-error);
|
|
603
549
|
}
|
|
604
550
|
|
|
605
|
-
.astryx-
|
|
551
|
+
.astryx-status-dot[data-variant="info"] {
|
|
606
552
|
background-color: #8BE9FD;
|
|
607
553
|
}
|
|
608
554
|
|
|
609
|
-
.astryx-
|
|
555
|
+
.astryx-progress-bar-fill[data-variant="accent"] {
|
|
610
556
|
background-color: #BD93F9;
|
|
611
557
|
}
|
|
612
558
|
|
|
613
|
-
.astryx-
|
|
559
|
+
.astryx-progress-bar-fill[data-variant="success"] {
|
|
614
560
|
background-color: #50FA7B;
|
|
615
561
|
}
|
|
616
562
|
|
|
617
|
-
.astryx-
|
|
563
|
+
.astryx-progress-bar-fill[data-variant="warning"] {
|
|
618
564
|
background-color: #F1FA8C;
|
|
619
565
|
}
|
|
620
566
|
|
|
621
|
-
.astryx-
|
|
567
|
+
.astryx-progress-bar-fill[data-variant="error"] {
|
|
622
568
|
background-color: #FF5555;
|
|
623
569
|
}
|
|
624
570
|
|
|
625
|
-
.astryx-
|
|
571
|
+
.astryx-progress-bar-fill[data-variant="neutral"] {
|
|
626
572
|
background-color: var(--color-progress-value);
|
|
627
573
|
}
|
|
628
574
|
|
|
629
|
-
.astryx-
|
|
575
|
+
.astryx-progress-bar-fill[data-variant="disabled"] {
|
|
630
576
|
background-color: var(--color-progress-value);
|
|
631
577
|
}
|
|
632
578
|
|
|
@@ -642,15 +588,15 @@
|
|
|
642
588
|
--color-error: #FF5555;
|
|
643
589
|
}
|
|
644
590
|
|
|
645
|
-
.astryx-
|
|
591
|
+
.astryx-text-area[data-status="success"] {
|
|
646
592
|
--color-success: #50FA7B;
|
|
647
593
|
}
|
|
648
594
|
|
|
649
|
-
.astryx-
|
|
595
|
+
.astryx-text-area[data-status="warning"] {
|
|
650
596
|
--color-warning: #F1FA8C;
|
|
651
597
|
}
|
|
652
598
|
|
|
653
|
-
.astryx-
|
|
599
|
+
.astryx-text-area[data-status="error"] {
|
|
654
600
|
--color-error: #FF5555;
|
|
655
601
|
}
|
|
656
602
|
|
|
@@ -702,6 +648,10 @@
|
|
|
702
648
|
--color-error: #FF5555;
|
|
703
649
|
}
|
|
704
650
|
|
|
651
|
+
.astryx-selector[data-variant="secondary"] {
|
|
652
|
+
font-weight: var(--font-weight-normal);
|
|
653
|
+
}
|
|
654
|
+
|
|
705
655
|
.astryx-multi-selector[data-status="success"] {
|
|
706
656
|
--color-success: #50FA7B;
|
|
707
657
|
}
|
|
@@ -714,6 +664,10 @@
|
|
|
714
664
|
--color-error: #FF5555;
|
|
715
665
|
}
|
|
716
666
|
|
|
667
|
+
.astryx-multi-selector[data-variant="secondary"] {
|
|
668
|
+
font-weight: var(--font-weight-normal);
|
|
669
|
+
}
|
|
670
|
+
|
|
717
671
|
.astryx-typeahead[data-status="success"] {
|
|
718
672
|
--color-success: #50FA7B;
|
|
719
673
|
}
|
|
@@ -770,7 +724,11 @@
|
|
|
770
724
|
box-shadow: var(--shadow-low);
|
|
771
725
|
}
|
|
772
726
|
|
|
773
|
-
.astryx-
|
|
727
|
+
.astryx-hover-card {
|
|
728
|
+
background-color: var(--color-background-popover);
|
|
729
|
+
}
|
|
730
|
+
|
|
731
|
+
.astryx-drawer {
|
|
774
732
|
background-color: var(--color-background-popover);
|
|
775
733
|
}
|
|
776
734
|
|
|
@@ -855,9 +813,9 @@
|
|
|
855
813
|
|
|
856
814
|
[data-astryx-media="light"] {
|
|
857
815
|
color-scheme: light;
|
|
858
|
-
--color-text-primary:
|
|
859
|
-
--color-icon-primary:
|
|
860
|
-
--color-accent:
|
|
816
|
+
--color-text-primary: light-dark(#F8F8F2, #F8F8F2);
|
|
817
|
+
--color-icon-primary: light-dark(#F8F8F2, #F8F8F2);
|
|
818
|
+
--color-accent: light-dark(#BD93F9, #BD93F9);
|
|
861
819
|
}
|
|
862
820
|
}
|
|
863
821
|
}
|
package/theme.css.d.ts
ADDED
package/tokens.css
CHANGED
|
@@ -8,13 +8,16 @@
|
|
|
8
8
|
* paragraph #B0B3C4 and base-muted #8288A6 are same-hue lifts, #4C5067
|
|
9
9
|
* (subdue) is chrome only and never text, and theme.css adds #FFD5CC as the
|
|
10
10
|
* pale inverted error surface. Do not revert any of them to spec hexes.
|
|
11
|
-
* Two categorical data hues are
|
|
12
|
-
*
|
|
13
|
-
*
|
|
14
|
-
*
|
|
15
|
-
*
|
|
16
|
-
*
|
|
17
|
-
*
|
|
11
|
+
* Two categorical data hues are excluded from the CHART palette: `brown` (was
|
|
12
|
+
* byte-identical to orange, and a categorical series set is a palette where
|
|
13
|
+
* distinctness IS the contract) and `purple` (purple means tappable, never
|
|
14
|
+
* data). That exclusion is a MODULE rule — `shared/chart-hues.ts` is
|
|
15
|
+
* purple-free by construction — so the SEQUENTIAL `--color-data-purple-1..5`
|
|
16
|
+
* ramp below SURVIVES and is sanctioned. The two TOKENS are still defined
|
|
17
|
+
* below, on-brand, because core 0.7.x moved the canonical data-colour defaults
|
|
18
|
+
* out of CSS entirely: a theme that wants a name to exist must author it, and
|
|
19
|
+
* this one authors it on-palette so nothing off-brand can ship. Rationale
|
|
20
|
+
* lives in astryx-theme.ts.
|
|
18
21
|
* `--color-data-teal-1..5` derives off `--color-data-categorical-teal` (#A4FFFF,
|
|
19
22
|
* an ANSI bright, not a spec token) rather than spec Cyan #8BE9FD; provenance
|
|
20
23
|
* fix only, nothing renders the ramp today (HeatScale is shamrock).
|
|
@@ -276,6 +279,8 @@ body {
|
|
|
276
279
|
--color-data-categorical-red: #ff5555;
|
|
277
280
|
--color-data-categorical-teal: #a4ffff;
|
|
278
281
|
--color-data-categorical-indigo: #d6acff;
|
|
282
|
+
--color-data-categorical-purple: #bd93f9;
|
|
283
|
+
--color-data-categorical-brown: #ffb86c;
|
|
279
284
|
--color-data-neutral: #8c939b;
|
|
280
285
|
--color-data-purple-5: hsl(264.71 89.47% 28%);
|
|
281
286
|
--color-data-purple-4: hsl(264.71 89.47% 44%);
|
|
@@ -343,6 +348,32 @@ body {
|
|
|
343
348
|
--color-tag-cyan: #8be9fd;
|
|
344
349
|
--color-tag-yellow: #f1fa8c;
|
|
345
350
|
--color-tag-green: #50fa7b;
|
|
351
|
+
/* Syntax theme, mirrored from astryx-theme.ts's draculaSyntax map. Core
|
|
352
|
+
* 0.7.x emits NO --color-syntax-* defaults in CSS — the canonical values
|
|
353
|
+
* live in JS only — and core's highlighter uses them with no fallback, so
|
|
354
|
+
* a plain-CSS consumer that imports this file without theme.css would
|
|
355
|
+
* render an UNHIGHLIGHTED CodeBlock. These 19 slots close that gap; the
|
|
356
|
+
* five diff slots are the 0.7.1 diff layer and derive from Dracula's
|
|
357
|
+
* green/red rather than being Dracula spec tokens. */
|
|
358
|
+
--color-syntax-keyword: #ff79c6;
|
|
359
|
+
--color-syntax-string: #f1fa8c;
|
|
360
|
+
--color-syntax-comment: #6272a4;
|
|
361
|
+
--color-syntax-number: #ffb86c;
|
|
362
|
+
--color-syntax-function: #50fa7b;
|
|
363
|
+
--color-syntax-type: #8be9fd;
|
|
364
|
+
--color-syntax-variable: #f8f8f2;
|
|
365
|
+
--color-syntax-operator: #ff79c6;
|
|
366
|
+
--color-syntax-constant: #bd93f9;
|
|
367
|
+
--color-syntax-tag: #ff79c6;
|
|
368
|
+
--color-syntax-attribute: #50fa7b;
|
|
369
|
+
--color-syntax-property: #f8f8f2;
|
|
370
|
+
--color-syntax-punctuation: #f8f8f2;
|
|
371
|
+
--color-syntax-background: #282a36;
|
|
372
|
+
--color-syntax-added: #50fa7b26;
|
|
373
|
+
--color-syntax-removed: #ff555526;
|
|
374
|
+
--color-syntax-diff-header: #44475a;
|
|
375
|
+
--color-syntax-added-marker: #50fa7b;
|
|
376
|
+
--color-syntax-removed-marker: #ff5555;
|
|
346
377
|
--color-tag-purple: #bd93f9;
|
|
347
378
|
/* Renamed in 0.3.0 from `tag-blue`, which held this same #BD93F9. Dracula
|
|
348
379
|
* has no blue; Purple is what the rest of the kit already uses for a fourth
|
|
@@ -418,41 +449,6 @@ body {
|
|
|
418
449
|
}
|
|
419
450
|
}
|
|
420
451
|
|
|
421
|
-
/* A resizable SideNav reports exactly 1px of horizontal overflow: the resize
|
|
422
|
-
* handle renders 1px wider than its own box, and the side-nav panel scrolls
|
|
423
|
-
* both axes, so a permanent horizontal scrollbar paints under the rail even
|
|
424
|
-
* though nothing overflows visually. Clip the offending pixel on the handle
|
|
425
|
-
* itself rather than on the panel: a collapsed rail renders its child popovers
|
|
426
|
-
* as descendants of that panel, and they only escape the clip because their
|
|
427
|
-
* root happens to be position:fixed. Clipping the panel would break them the
|
|
428
|
-
* day an ancestor gains a transform. The handle contains nothing but its pill,
|
|
429
|
-
* which sits inside its box, so clipping it costs nothing. Needed until the
|
|
430
|
-
* resize handle stops reporting the extra pixel. Re-verified against
|
|
431
|
-
* @astryxdesign/core 0.3.0: without the clip the hit area's half-pixel inline
|
|
432
|
-
* shift leaves content at 300.5px in a 300px rail, and the LayoutPanel
|
|
433
|
-
* (overflow:auto on both axes) reports scrollWidth 301 > 300 — the permanent
|
|
434
|
-
* bar is back. Keep. */
|
|
435
|
-
.astryx-app-shell-sidenav .astryx-resize-handle {
|
|
436
|
-
overflow: hidden;
|
|
437
|
-
}
|
|
438
|
-
|
|
439
|
-
/* Astryx leaves the resize handle's drag surface translated -50% along the
|
|
440
|
-
* block axis without ever positioning it at top:50%, so it spans only the TOP
|
|
441
|
-
* HALF of the rail: the pointer reads col-resize and dragging works above the
|
|
442
|
-
* midpoint, and nothing at all happens below it, even though the pill is drawn
|
|
443
|
-
* straddling that boundary. The pill sibling carries a correct top:50%, which
|
|
444
|
-
* is exactly what the drag surface is missing. Re-verified against
|
|
445
|
-
* @astryxdesign/core 0.3.0: hitAreaHorizontal is still top:0/bottom:0 while
|
|
446
|
-
* hitAreaOffsetX translates Y by -50%, so without this the drag surface spans
|
|
447
|
-
* [-50%,+50%] of the rail and the bottom half is dead (elementFromPoint hits
|
|
448
|
-
* the handle, which has no pointer handler). Upstream workaround; drop it if
|
|
449
|
-
* the component starts positioning its own hit area. */
|
|
450
|
-
.astryx-app-shell-sidenav .astryx-resize-handle > :not(.astryx-resize-handle-pill) {
|
|
451
|
-
top: 50%;
|
|
452
|
-
bottom: auto;
|
|
453
|
-
height: 100%;
|
|
454
|
-
}
|
|
455
|
-
|
|
456
452
|
/* Everything below this line is UNLAYERED on purpose, and that is load-bearing,
|
|
457
453
|
* not a style choice. Unlayered author rules beat every core LAYER regardless of
|
|
458
454
|
* specificity — verified in Chromium against the declared order
|