@foxeltech/angular-ui 0.4.0 → 0.7.75
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/archivo/archivo-400-latin-ext.woff2 +0 -0
- package/archivo/archivo-400-latin.woff2 +0 -0
- package/archivo/archivo-400-vietnamese.woff2 +0 -0
- package/archivo/archivo-500-latin-ext.woff2 +0 -0
- package/archivo/archivo-500-latin.woff2 +0 -0
- package/archivo/archivo-500-vietnamese.woff2 +0 -0
- package/archivo/archivo-600-latin-ext.woff2 +0 -0
- package/archivo/archivo-600-latin.woff2 +0 -0
- package/archivo/archivo-600-vietnamese.woff2 +0 -0
- package/archivo/archivo-700-latin-ext.woff2 +0 -0
- package/archivo/archivo-700-latin.woff2 +0 -0
- package/archivo/archivo-700-vietnamese.woff2 +0 -0
- package/components.css +332 -30
- package/dialogs.css +2 -2
- package/familjen-grotesk/familjen-grotesk-400-latin-ext.woff2 +0 -0
- package/familjen-grotesk/familjen-grotesk-400-latin.woff2 +0 -0
- package/familjen-grotesk/familjen-grotesk-400-vietnamese.woff2 +0 -0
- package/familjen-grotesk/familjen-grotesk-500-latin-ext.woff2 +0 -0
- package/familjen-grotesk/familjen-grotesk-500-latin.woff2 +0 -0
- package/familjen-grotesk/familjen-grotesk-500-vietnamese.woff2 +0 -0
- package/familjen-grotesk/familjen-grotesk-600-latin-ext.woff2 +0 -0
- package/familjen-grotesk/familjen-grotesk-600-latin.woff2 +0 -0
- package/familjen-grotesk/familjen-grotesk-600-vietnamese.woff2 +0 -0
- package/familjen-grotesk/familjen-grotesk-700-latin-ext.woff2 +0 -0
- package/familjen-grotesk/familjen-grotesk-700-latin.woff2 +0 -0
- package/familjen-grotesk/familjen-grotesk-700-vietnamese.woff2 +0 -0
- package/fesm2022/foxeltech-angular-ui-chart.mjs +381 -40
- package/fesm2022/foxeltech-angular-ui-chart.mjs.map +1 -1
- package/fesm2022/foxeltech-angular-ui-flow.mjs +176 -3
- package/fesm2022/foxeltech-angular-ui-flow.mjs.map +1 -1
- package/fesm2022/foxeltech-angular-ui-rich-text.mjs +2 -2
- package/fesm2022/foxeltech-angular-ui-rich-text.mjs.map +1 -1
- package/fesm2022/foxeltech-angular-ui.mjs +1327 -151
- package/fesm2022/foxeltech-angular-ui.mjs.map +1 -1
- package/fonts.css +558 -133
- package/ibm-plex-mono/ibm-plex-mono-400-cyrillic-ext.woff2 +0 -0
- package/ibm-plex-mono/ibm-plex-mono-400-cyrillic.woff2 +0 -0
- package/ibm-plex-mono/ibm-plex-mono-400-latin-ext.woff2 +0 -0
- package/ibm-plex-mono/ibm-plex-mono-400-latin.woff2 +0 -0
- package/ibm-plex-mono/ibm-plex-mono-400-vietnamese.woff2 +0 -0
- package/ibm-plex-mono/ibm-plex-mono-500-cyrillic-ext.woff2 +0 -0
- package/ibm-plex-mono/ibm-plex-mono-500-cyrillic.woff2 +0 -0
- package/ibm-plex-mono/ibm-plex-mono-500-latin-ext.woff2 +0 -0
- package/ibm-plex-mono/ibm-plex-mono-500-latin.woff2 +0 -0
- package/ibm-plex-mono/ibm-plex-mono-500-vietnamese.woff2 +0 -0
- package/ibm-plex-mono/ibm-plex-mono-600-cyrillic-ext.woff2 +0 -0
- package/ibm-plex-mono/ibm-plex-mono-600-cyrillic.woff2 +0 -0
- package/ibm-plex-mono/ibm-plex-mono-600-latin-ext.woff2 +0 -0
- package/ibm-plex-mono/ibm-plex-mono-600-latin.woff2 +0 -0
- package/ibm-plex-mono/ibm-plex-mono-600-vietnamese.woff2 +0 -0
- package/jetbrains-mono/jetbrains-mono-400-cyrillic-ext.woff2 +0 -0
- package/jetbrains-mono/jetbrains-mono-400-cyrillic.woff2 +0 -0
- package/jetbrains-mono/jetbrains-mono-400-greek.woff2 +0 -0
- package/jetbrains-mono/jetbrains-mono-400-latin-ext.woff2 +0 -0
- package/jetbrains-mono/jetbrains-mono-400-latin.woff2 +0 -0
- package/jetbrains-mono/jetbrains-mono-400-vietnamese.woff2 +0 -0
- package/jetbrains-mono/jetbrains-mono-500-cyrillic-ext.woff2 +0 -0
- package/jetbrains-mono/jetbrains-mono-500-cyrillic.woff2 +0 -0
- package/jetbrains-mono/jetbrains-mono-500-greek.woff2 +0 -0
- package/jetbrains-mono/jetbrains-mono-500-latin-ext.woff2 +0 -0
- package/jetbrains-mono/jetbrains-mono-500-latin.woff2 +0 -0
- package/jetbrains-mono/jetbrains-mono-500-vietnamese.woff2 +0 -0
- package/jetbrains-mono/jetbrains-mono-600-cyrillic-ext.woff2 +0 -0
- package/jetbrains-mono/jetbrains-mono-600-cyrillic.woff2 +0 -0
- package/jetbrains-mono/jetbrains-mono-600-greek.woff2 +0 -0
- package/jetbrains-mono/jetbrains-mono-600-latin-ext.woff2 +0 -0
- package/jetbrains-mono/jetbrains-mono-600-latin.woff2 +0 -0
- package/jetbrains-mono/jetbrains-mono-600-vietnamese.woff2 +0 -0
- package/jetbrains-mono/jetbrains-mono-700-cyrillic-ext.woff2 +0 -0
- package/jetbrains-mono/jetbrains-mono-700-cyrillic.woff2 +0 -0
- package/jetbrains-mono/jetbrains-mono-700-greek.woff2 +0 -0
- package/jetbrains-mono/jetbrains-mono-700-latin-ext.woff2 +0 -0
- package/jetbrains-mono/jetbrains-mono-700-latin.woff2 +0 -0
- package/jetbrains-mono/jetbrains-mono-700-vietnamese.woff2 +0 -0
- package/newsreader/newsreader-400-latin-ext.woff2 +0 -0
- package/newsreader/newsreader-400-latin.woff2 +0 -0
- package/newsreader/newsreader-400-vietnamese.woff2 +0 -0
- package/newsreader/newsreader-500-latin-ext.woff2 +0 -0
- package/newsreader/newsreader-500-latin.woff2 +0 -0
- package/newsreader/newsreader-500-vietnamese.woff2 +0 -0
- package/newsreader/newsreader-600-latin-ext.woff2 +0 -0
- package/newsreader/newsreader-600-latin.woff2 +0 -0
- package/newsreader/newsreader-600-vietnamese.woff2 +0 -0
- package/package.json +5 -2
- package/source-serif-4/source-serif-4-400-cyrillic-ext.woff2 +0 -0
- package/source-serif-4/source-serif-4-400-cyrillic.woff2 +0 -0
- package/source-serif-4/source-serif-4-400-greek.woff2 +0 -0
- package/source-serif-4/source-serif-4-400-latin-ext.woff2 +0 -0
- package/source-serif-4/source-serif-4-400-latin.woff2 +0 -0
- package/source-serif-4/source-serif-4-400-vietnamese.woff2 +0 -0
- package/source-serif-4/source-serif-4-600-cyrillic-ext.woff2 +0 -0
- package/source-serif-4/source-serif-4-600-cyrillic.woff2 +0 -0
- package/source-serif-4/source-serif-4-600-greek.woff2 +0 -0
- package/source-serif-4/source-serif-4-600-latin-ext.woff2 +0 -0
- package/source-serif-4/source-serif-4-600-latin.woff2 +0 -0
- package/source-serif-4/source-serif-4-600-vietnamese.woff2 +0 -0
- package/src/lib/styles/components.css +332 -30
- package/src/lib/styles/dialogs.css +2 -2
- package/src/lib/styles/fonts.css +558 -133
- package/src/lib/styles/tailwind.css +13 -1
- package/src/lib/styles/theme.css +642 -69
- package/src/lib/styles/tokens.css +81 -19
- package/src/lib/styles/utilities.css +16 -1
- package/src/lib/ui/components/bar-list/bar-list.component.html +29 -0
- package/src/lib/ui/components/button/button.component.html +9 -5
- package/src/lib/ui/components/checkbox/checkbox.component.html +1 -1
- package/src/lib/ui/components/code-block/code-block.component.html +8 -0
- package/src/lib/ui/components/drawer/drawer.component.html +35 -12
- package/src/lib/ui/components/drawer/drawer.component.scss +106 -18
- package/src/lib/ui/components/facets-rail/facets-rail.component.html +37 -0
- package/src/lib/ui/components/filter-pills/filter-pills.component.html +16 -0
- package/src/lib/ui/components/kanban-board/kanban-board.component.scss +9 -9
- package/src/lib/ui/components/list-row/list-row.component.html +20 -0
- package/src/lib/ui/components/master-detail/master-detail.component.css +79 -5
- package/src/lib/ui/components/master-detail/master-detail.component.html +57 -7
- package/src/lib/ui/components/pending-badge/pending-badge.component.html +15 -0
- package/src/lib/ui/components/pipeline-stepper/pipeline-stepper.component.html +45 -0
- package/src/lib/ui/components/project-card/project-card.component.html +102 -0
- package/src/lib/ui/components/radio-button/radio-button.component.html +1 -1
- package/src/lib/ui/components/radio-button-toggle/radio-button-toggle.component.html +1 -1
- package/src/lib/ui/components/route-skeleton/route-skeleton.component.css +38 -0
- package/src/lib/ui/components/route-skeleton/route-skeleton.component.html +184 -0
- package/src/lib/ui/components/sample-frame/sample-frame.component.html +18 -0
- package/src/lib/ui/components/score-badge/score-badge.component.html +7 -0
- package/src/lib/ui/components/screenshot-frame/screenshot-frame.component.html +40 -0
- package/src/lib/ui/components/section-card/section-card.component.html +15 -6
- package/src/lib/ui/components/segmented/segmented.component.html +42 -0
- package/src/lib/ui/components/segmented/segmented.component.scss +12 -0
- package/src/lib/ui/components/skeleton-dashboard/skeleton-dashboard.component.html +24 -0
- package/src/lib/ui/components/skeleton-detail/skeleton-detail.component.html +8 -8
- package/src/lib/ui/components/skeleton-facets/skeleton-facets.component.html +15 -0
- package/src/lib/ui/components/skeleton-frame/skeleton-frame.component.html +59 -0
- package/src/lib/ui/components/skeleton-list/skeleton-list.component.html +6 -6
- package/src/lib/ui/components/slider/slider.component.html +2 -2
- package/src/lib/ui/components/sparkbar/sparkbar.component.html +14 -0
- package/src/lib/ui/components/stage-dots/stage-dots.component.html +13 -0
- package/src/lib/ui/components/stat-cards/stat-cards.component.html +44 -11
- package/src/lib/ui/components/status-dot/status-dot.component.html +13 -0
- package/src/lib/ui/components/switch/switch.component.html +1 -1
- package/src/lib/ui/components/tab-group/tab-group.component.html +37 -8
- package/src/lib/ui/components/tab-group/tab-group.component.scss +41 -1
- package/src/lib/ui/components/tag/tag.component.html +2 -2
- package/src/lib/ui/components/theme-picker/theme-picker.component.html +44 -0
- package/src/lib/ui/components/toast/toast.component.html +6 -6
- package/src/lib/ui/components/tree-diagram/tree-diagram.component.html +3 -3
- package/tailwind.css +13 -1
- package/theme.css +642 -69
- package/tokens.css +81 -19
- package/types/foxeltech-angular-ui-chart.d.ts +90 -3
- package/types/foxeltech-angular-ui-flow.d.ts +83 -1
- package/types/foxeltech-angular-ui.d.ts +909 -48
- package/utilities.css +16 -1
- package/BeVietnamPro/BeVietnamPro-Bold.woff2 +0 -0
- package/BeVietnamPro/BeVietnamPro-ExtraLight.woff2 +0 -0
- package/BeVietnamPro/BeVietnamPro-Light.woff2 +0 -0
- package/BeVietnamPro/BeVietnamPro-Medium.woff2 +0 -0
- package/BeVietnamPro/BeVietnamPro-Regular.woff2 +0 -0
- package/BeVietnamPro/BeVietnamPro-SemiBold.woff2 +0 -0
- package/BeVietnamPro/BeVietnamPro-Thin.woff2 +0 -0
- package/SpaceMono-Regular.woff2 +0 -0
- package/dm-sans/DMSans-Bold.woff2 +0 -0
- package/dm-sans/DMSans-Light.woff2 +0 -0
- package/dm-sans/DMSans-Medium.woff2 +0 -0
- package/dm-sans/DMSans-Regular.woff2 +0 -0
- package/dm-sans/DMSans-SemiBold.woff2 +0 -0
- package/dm-sans/DMSans-Thin.woff2 +0 -0
- package/orbitron/Orbitron-Bold.woff2 +0 -0
- package/orbitron/Orbitron-Medium.woff2 +0 -0
- package/orbitron/Orbitron-Regular.woff2 +0 -0
- package/orbitron/Orbitron-SemiBold.woff2 +0 -0
- package/roboto/Roboto-Black.woff2 +0 -0
- package/roboto/Roboto-BlackItalic.woff2 +0 -0
- package/roboto/Roboto-Bold.woff2 +0 -0
- package/roboto/Roboto-BoldCondensed.woff2 +0 -0
- package/roboto/Roboto-BoldCondensedItalic.woff2 +0 -0
- package/roboto/Roboto-BoldItalic.woff2 +0 -0
- package/roboto/Roboto-Condensed.woff2 +0 -0
- package/roboto/Roboto-CondensedItalic.woff2 +0 -0
- package/roboto/Roboto-Italic.woff2 +0 -0
- package/roboto/Roboto-Light.woff2 +0 -0
- package/roboto/Roboto-LightItalic.woff2 +0 -0
- package/roboto/Roboto-Medium.woff2 +0 -0
- package/roboto/Roboto-MediumItalic.woff2 +0 -0
- package/roboto/Roboto-Regular.woff2 +0 -0
- package/roboto/Roboto-Thin.woff2 +0 -0
- package/roboto/Roboto-ThinItalic.woff2 +0 -0
- package/src/lib/ui/components/skeleton-table-loading/skeleton-table-loading.component.html +0 -21
- package/src/lib/ui/components/skeleton-table-loading/skeleton-table-loading.component.scss +0 -0
- package/src/lib/ui/components/tab-component/tab.component.html +0 -1
package/theme.css
CHANGED
|
@@ -1,73 +1,646 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
--
|
|
19
|
-
--
|
|
20
|
-
--
|
|
21
|
-
--
|
|
22
|
-
--
|
|
23
|
-
--
|
|
24
|
-
--
|
|
25
|
-
--
|
|
26
|
-
--
|
|
27
|
-
--
|
|
28
|
-
--
|
|
29
|
-
--
|
|
30
|
-
--
|
|
31
|
-
--
|
|
32
|
-
--
|
|
33
|
-
--
|
|
34
|
-
--
|
|
1
|
+
/*
|
|
2
|
+
* OgeniumDashboards theme tokens — FILE SINH TỰ ĐỘNG bởi
|
|
3
|
+
* tools/build-theme-css.mjs từ tools/generated/og-themes.css. ĐỪNG SỬA TAY:
|
|
4
|
+
* node tools/extract-og-tokens.mjs && node tools/build-theme-css.mjs
|
|
5
|
+
*
|
|
6
|
+
* Cơ chế: 6 theme switch bằng attribute data-og-theme trên <html>
|
|
7
|
+
* (ThemeService.setTheme). Màu = RGB triplet để rgb(var(--x)) + alpha
|
|
8
|
+
* modifier (bg-critical/10) và FxUtils.convertColorFromVariable hoạt động.
|
|
9
|
+
*
|
|
10
|
+
* :root = porcelain (default). Legacy alias (--bg-primary, --primary, …)
|
|
11
|
+
* khai báo qua var(--og-*) nên tự theo theme; sẽ gỡ sau campaign V2.
|
|
12
|
+
* Severity: dùng bộ tone LEGACY vivid (--og-tone-*) theo nhóm light/dark —
|
|
13
|
+
* quyết định anh Tú 28/08, palette severity của design V2 quá trầm.
|
|
14
|
+
*/
|
|
15
|
+
|
|
16
|
+
:root {
|
|
17
|
+
/* structural — giống nhau mọi theme */
|
|
18
|
+
--og-fs-2xs: 10.5px;
|
|
19
|
+
--og-fs-xs: 11.5px;
|
|
20
|
+
--og-fs-sm: 12.5px;
|
|
21
|
+
--og-fs-md: 13.5px;
|
|
22
|
+
--og-fs-lg: 15px;
|
|
23
|
+
--og-fs-xl: 17px;
|
|
24
|
+
--og-fs-2xl: 22px;
|
|
25
|
+
--og-fs-3xl: 26px;
|
|
26
|
+
--og-fs-4xl: 32px;
|
|
27
|
+
--og-space-1: 4px;
|
|
28
|
+
--og-space-2: 8px;
|
|
29
|
+
--og-space-3: 8px;
|
|
30
|
+
--og-space-4: 10px;
|
|
31
|
+
--og-space-5: 12px;
|
|
32
|
+
--og-space-6: 13px;
|
|
33
|
+
--og-space-7: 15px;
|
|
34
|
+
--og-space-8: 18px;
|
|
35
|
+
--og-track-h: 5px;
|
|
36
|
+
--og-rule: 1px;
|
|
37
|
+
--og-tracking-label: 0.08em;
|
|
38
|
+
|
|
39
|
+
/* porcelain (light, DEFAULT) */
|
|
40
|
+
--og-page-bg: 242 242 241; /* #f2f2f1 */
|
|
41
|
+
--og-surface: 255 255 255; /* #ffffff */
|
|
42
|
+
--og-surface-raised: 255 255 255; /* #ffffff */
|
|
43
|
+
--og-surface-sunken: 251 251 250; /* #fbfbfa */
|
|
44
|
+
--og-border: 232 232 232; /* #e8e8e8 */
|
|
45
|
+
--og-border-subtle: 242 243 243; /* #f2f3f3 */
|
|
46
|
+
--og-border-strong: 38 40 44; /* #26282c */
|
|
47
|
+
--og-text: 38 40 44; /* #26282c */
|
|
48
|
+
--og-text-body: 60 63 68; /* #3c3f44 */
|
|
49
|
+
--og-text-muted: 107 112 117; /* #6b7075 */
|
|
50
|
+
--og-text-faint: 155 160 166; /* #9ba0a6 */
|
|
51
|
+
--og-accent: 74 125 189; /* #4a7dbd */
|
|
52
|
+
--og-accent-fg: 64 105 156; /* #40699c */
|
|
53
|
+
--og-accent-contrast: 255 255 255; /* #ffffff */
|
|
54
|
+
--og-accent-soft-bg: 231 238 247; /* #e7eef7 */
|
|
55
|
+
--og-accent-soft-fg: 53 97 156; /* #35619c */
|
|
56
|
+
--og-positive: 63 125 85; /* #3f7d55 */
|
|
57
|
+
--og-positive-soft-bg: 230 241 234; /* #e6f1ea */
|
|
58
|
+
--og-negative: 192 69 47; /* #c0452f */
|
|
59
|
+
--og-negative-soft-bg: 251 234 231; /* #fbeae7 */
|
|
60
|
+
--og-warning: 168 116 31; /* #a8741f */
|
|
61
|
+
--og-warning-soft-bg: 251 241 222; /* #fbf1de */
|
|
62
|
+
--og-neutral-soft-bg: 238 240 242; /* #eef0f2 */
|
|
63
|
+
--og-neutral-soft-fg: 75 80 87; /* #4b5057 */
|
|
64
|
+
--og-track: 236 236 236; /* #ececec */
|
|
65
|
+
--og-radius-frame: 10px;
|
|
66
|
+
--og-radius-card: 9px;
|
|
67
|
+
--og-radius-control: 7px;
|
|
68
|
+
--og-radius-pill: 999px;
|
|
69
|
+
--og-font-body: 'Familjen Grotesk',ui-sans-serif,system-ui,sans-serif;
|
|
70
|
+
--og-font-display: 'Familjen Grotesk',ui-sans-serif,system-ui,sans-serif;
|
|
71
|
+
--og-font-mono: 'JetBrains Mono',ui-monospace,monospace;
|
|
72
|
+
--og-font-prose: 'Familjen Grotesk',ui-sans-serif,system-ui,sans-serif;
|
|
73
|
+
--og-font-figure: 'JetBrains Mono',ui-monospace,monospace;
|
|
74
|
+
/* derived (script-generated, KHÔNG có trong design gốc) */
|
|
75
|
+
--og-derived-critical: 169 0 42; /* #a9002a */
|
|
76
|
+
--og-derived-critical-soft-bg: 239 194 191; /* #efc2bf */
|
|
77
|
+
--og-derived-gradient-accent-end: 98 150 215; /* #6296d7 */
|
|
78
|
+
--og-derived-gradient-positive-end: 87 149 108; /* #57956c */
|
|
79
|
+
--shadow-color: 0 0 0;
|
|
80
|
+
/* severity tones — bộ LEGACY (vivid), không lấy từ design V2 */
|
|
81
|
+
--og-tone-success: 15 140 96;
|
|
82
|
+
--og-tone-warning: 255 199 0;
|
|
83
|
+
--og-tone-critical: 254 4 83;
|
|
84
|
+
--og-tone-danger: 255 122 0;
|
|
85
|
+
--og-tone-information: 23 127 240;
|
|
86
|
+
--og-tone-discovery: 156 129 255;
|
|
87
|
+
/* severity ramp cho CHART — literal đo trên demo, không phải token design */
|
|
88
|
+
--og-sev-critical: 127 29 29; /* #7f1d1d */
|
|
89
|
+
--og-sev-danger: 220 38 38; /* #dc2626 */
|
|
90
|
+
--og-sev-warning: 245 158 11; /* #f59e0b */
|
|
91
|
+
--og-sev-success: 22 163 74; /* #16a34a */
|
|
92
|
+
|
|
93
|
+
/* ---- LEGACY ALIASES (@deprecated — gỡ khi kết thúc campaign V2) ----
|
|
94
|
+
Các biến cũ trỏ vào --og-* qua var() nên chỉ cần khai báo MỘT lần:
|
|
95
|
+
var() resolve tại element sử dụng, giá trị og đúng theo theme đang active. */
|
|
96
|
+
--gradient-primary-start: var(--og-accent);
|
|
97
|
+
--gradient-primary-end: var(--og-derived-gradient-accent-end);
|
|
98
|
+
--gradient-success-start: var(--og-positive);
|
|
99
|
+
--gradient-success-end: var(--og-derived-gradient-positive-end);
|
|
100
|
+
--bg-primary: var(--og-surface);
|
|
101
|
+
--bg-canvas: var(--og-page-bg);
|
|
102
|
+
--primary: var(--og-accent);
|
|
103
|
+
--success: var(--og-tone-success);
|
|
104
|
+
--warning: var(--og-tone-warning);
|
|
105
|
+
--critical: var(--og-tone-critical);
|
|
106
|
+
--danger: var(--og-tone-danger);
|
|
107
|
+
--discovery: var(--og-tone-discovery);
|
|
108
|
+
--information: var(--og-tone-information);
|
|
109
|
+
--text-primary: var(--og-text);
|
|
110
|
+
--text-secondary: var(--og-text-muted);
|
|
111
|
+
--border-default: var(--og-border);
|
|
112
|
+
--text-placeholder: var(--og-text-faint);
|
|
113
|
+
--step-bg: var(--og-text);
|
|
114
|
+
--text-link-primary: var(--og-accent-fg);
|
|
115
|
+
--bg-primary-hover: var(--og-surface-sunken);
|
|
116
|
+
--text-focus: var(--og-accent-contrast);
|
|
117
|
+
--bg-primary-neutral: var(--og-border-strong);
|
|
118
|
+
--text-selected-primary: var(--og-accent-fg);
|
|
119
|
+
--button-default: var(--og-text);
|
|
120
|
+
--text-inverse: var(--og-surface);
|
|
121
|
+
--bg-error-bold: var(--og-negative);
|
|
122
|
+
--text-error: var(--og-negative);
|
|
123
|
+
--border-interactive: var(--og-accent);
|
|
124
|
+
--border-selected: var(--og-accent);
|
|
125
|
+
--button-primary: var(--og-accent);
|
|
126
|
+
--border-strong: var(--og-border-strong);
|
|
127
|
+
--border-secondary-hover: var(--og-accent);
|
|
128
|
+
--bg-secondary-hover: var(--og-neutral-soft-bg);
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
:root[data-og-theme='porcelain'] {
|
|
132
|
+
--og-page-bg: 242 242 241; /* #f2f2f1 */
|
|
133
|
+
--og-surface: 255 255 255; /* #ffffff */
|
|
134
|
+
--og-surface-raised: 255 255 255; /* #ffffff */
|
|
135
|
+
--og-surface-sunken: 251 251 250; /* #fbfbfa */
|
|
136
|
+
--og-border: 232 232 232; /* #e8e8e8 */
|
|
137
|
+
--og-border-subtle: 242 243 243; /* #f2f3f3 */
|
|
138
|
+
--og-border-strong: 38 40 44; /* #26282c */
|
|
139
|
+
--og-text: 38 40 44; /* #26282c */
|
|
140
|
+
--og-text-body: 60 63 68; /* #3c3f44 */
|
|
141
|
+
--og-text-muted: 107 112 117; /* #6b7075 */
|
|
142
|
+
--og-text-faint: 155 160 166; /* #9ba0a6 */
|
|
143
|
+
--og-accent: 74 125 189; /* #4a7dbd */
|
|
144
|
+
--og-accent-fg: 64 105 156; /* #40699c */
|
|
145
|
+
--og-accent-contrast: 255 255 255; /* #ffffff */
|
|
146
|
+
--og-accent-soft-bg: 231 238 247; /* #e7eef7 */
|
|
147
|
+
--og-accent-soft-fg: 53 97 156; /* #35619c */
|
|
148
|
+
--og-positive: 63 125 85; /* #3f7d55 */
|
|
149
|
+
--og-positive-soft-bg: 230 241 234; /* #e6f1ea */
|
|
150
|
+
--og-negative: 192 69 47; /* #c0452f */
|
|
151
|
+
--og-negative-soft-bg: 251 234 231; /* #fbeae7 */
|
|
152
|
+
--og-warning: 168 116 31; /* #a8741f */
|
|
153
|
+
--og-warning-soft-bg: 251 241 222; /* #fbf1de */
|
|
154
|
+
--og-neutral-soft-bg: 238 240 242; /* #eef0f2 */
|
|
155
|
+
--og-neutral-soft-fg: 75 80 87; /* #4b5057 */
|
|
156
|
+
--og-track: 236 236 236; /* #ececec */
|
|
157
|
+
--og-radius-frame: 10px;
|
|
158
|
+
--og-radius-card: 9px;
|
|
159
|
+
--og-radius-control: 7px;
|
|
160
|
+
--og-radius-pill: 999px;
|
|
161
|
+
--og-font-body: 'Familjen Grotesk',ui-sans-serif,system-ui,sans-serif;
|
|
162
|
+
--og-font-display: 'Familjen Grotesk',ui-sans-serif,system-ui,sans-serif;
|
|
163
|
+
--og-font-mono: 'JetBrains Mono',ui-monospace,monospace;
|
|
164
|
+
--og-font-prose: 'Familjen Grotesk',ui-sans-serif,system-ui,sans-serif;
|
|
165
|
+
--og-font-figure: 'JetBrains Mono',ui-monospace,monospace;
|
|
166
|
+
/* derived (script-generated, KHÔNG có trong design gốc) */
|
|
167
|
+
--og-derived-critical: 169 0 42; /* #a9002a */
|
|
168
|
+
--og-derived-critical-soft-bg: 239 194 191; /* #efc2bf */
|
|
169
|
+
--og-derived-gradient-accent-end: 98 150 215; /* #6296d7 */
|
|
170
|
+
--og-derived-gradient-positive-end: 87 149 108; /* #57956c */
|
|
35
171
|
--shadow-color: 0 0 0;
|
|
172
|
+
/* severity tones — bộ LEGACY (vivid), không lấy từ design V2 */
|
|
173
|
+
--og-tone-success: 15 140 96;
|
|
174
|
+
--og-tone-warning: 255 199 0;
|
|
175
|
+
--og-tone-critical: 254 4 83;
|
|
176
|
+
--og-tone-danger: 255 122 0;
|
|
177
|
+
--og-tone-information: 23 127 240;
|
|
178
|
+
--og-tone-discovery: 156 129 255;
|
|
179
|
+
/* severity ramp cho CHART — literal đo trên demo, không phải token design */
|
|
180
|
+
--og-sev-critical: 127 29 29; /* #7f1d1d */
|
|
181
|
+
--og-sev-danger: 220 38 38; /* #dc2626 */
|
|
182
|
+
--og-sev-warning: 245 158 11; /* #f59e0b */
|
|
183
|
+
--og-sev-success: 22 163 74; /* #16a34a */
|
|
36
184
|
}
|
|
37
185
|
|
|
38
|
-
:root {
|
|
39
|
-
--
|
|
40
|
-
--
|
|
41
|
-
--
|
|
42
|
-
--
|
|
43
|
-
--
|
|
44
|
-
--
|
|
45
|
-
--
|
|
46
|
-
--
|
|
47
|
-
--
|
|
48
|
-
--
|
|
49
|
-
--
|
|
50
|
-
--
|
|
51
|
-
--
|
|
52
|
-
--
|
|
53
|
-
--
|
|
54
|
-
--
|
|
55
|
-
--
|
|
56
|
-
--
|
|
57
|
-
--
|
|
58
|
-
--
|
|
59
|
-
--
|
|
60
|
-
--
|
|
61
|
-
--
|
|
62
|
-
--
|
|
63
|
-
--
|
|
64
|
-
--
|
|
65
|
-
--
|
|
66
|
-
--
|
|
67
|
-
--
|
|
68
|
-
--
|
|
69
|
-
--
|
|
70
|
-
--
|
|
71
|
-
--
|
|
186
|
+
:root[data-og-theme='charcoal'] {
|
|
187
|
+
--og-page-bg: 26 24 17; /* #1a1811 */
|
|
188
|
+
--og-surface: 34 31 22; /* #221f16 */
|
|
189
|
+
--og-surface-raised: 42 38 25; /* #2a2619 */
|
|
190
|
+
--og-surface-sunken: 23 21 9; /* #171509 */
|
|
191
|
+
--og-border: 58 54 38; /* #3a3626 */
|
|
192
|
+
--og-border-subtle: 44 41 25; /* #2c2919 */
|
|
193
|
+
--og-border-strong: 76 71 50; /* #4c4732 */
|
|
194
|
+
--og-text: 226 221 203; /* #e2ddcb */
|
|
195
|
+
--og-text-body: 193 188 166; /* #c1bca6 */
|
|
196
|
+
--og-text-muted: 147 141 118; /* #938d76 */
|
|
197
|
+
--og-text-faint: 107 102 83; /* #6b6653 */
|
|
198
|
+
--og-accent: 143 200 102; /* #8fc866 */
|
|
199
|
+
--og-accent-fg: 164 217 126; /* #a4d97e */
|
|
200
|
+
--og-accent-contrast: 23 21 9; /* #171509 */
|
|
201
|
+
--og-accent-soft-bg: 38 48 26; /* #26301a */
|
|
202
|
+
--og-accent-soft-fg: 164 217 126; /* #a4d97e */
|
|
203
|
+
--og-positive: 132 200 98; /* #84c862 */
|
|
204
|
+
--og-positive-soft-bg: 34 48 15; /* #22300f */
|
|
205
|
+
--og-negative: 229 130 142; /* #e5828e */
|
|
206
|
+
--og-negative-soft-bg: 63 30 36; /* #3f1e24 */
|
|
207
|
+
--og-warning: 214 178 90; /* #d6b25a */
|
|
208
|
+
--og-warning-soft-bg: 51 42 18; /* #332a12 */
|
|
209
|
+
--og-neutral-soft-bg: 42 39 25; /* #2a2719 */
|
|
210
|
+
--og-neutral-soft-fg: 164 158 134; /* #a49e86 */
|
|
211
|
+
--og-track: 48 44 30; /* #302c1e */
|
|
212
|
+
--og-radius-frame: 10px;
|
|
213
|
+
--og-radius-card: 9px;
|
|
214
|
+
--og-radius-control: 7px;
|
|
215
|
+
--og-radius-pill: 999px;
|
|
216
|
+
--og-font-body: 'Familjen Grotesk',ui-sans-serif,system-ui,sans-serif;
|
|
217
|
+
--og-font-display: 'Familjen Grotesk',ui-sans-serif,system-ui,sans-serif;
|
|
218
|
+
--og-font-mono: 'JetBrains Mono',ui-monospace,monospace;
|
|
219
|
+
--og-font-prose: 'Familjen Grotesk',ui-sans-serif,system-ui,sans-serif;
|
|
220
|
+
--og-font-figure: 'JetBrains Mono',ui-monospace,monospace;
|
|
221
|
+
--og-positive-soft-fg: 164 217 126; /* #a4d97e */
|
|
222
|
+
--og-negative-soft-fg: 238 163 171; /* #eea3ab */
|
|
223
|
+
--og-warning-soft-fg: 224 194 116; /* #e0c274 */
|
|
224
|
+
/* derived (script-generated, KHÔNG có trong design gốc) */
|
|
225
|
+
--og-derived-critical: 254 119 154; /* #fe779a */
|
|
226
|
+
--og-derived-critical-soft-bg: 97 46 57; /* #612e39 */
|
|
227
|
+
--og-derived-gradient-accent-end: 174 233 134; /* #aee986 */
|
|
228
|
+
--og-derived-gradient-positive-end: 157 226 123; /* #9de27b */
|
|
72
229
|
--shadow-color: 255 255 255;
|
|
73
|
-
|
|
230
|
+
/* severity tones — bộ LEGACY (vivid), không lấy từ design V2 */
|
|
231
|
+
--og-tone-success: 76 175 80;
|
|
232
|
+
--og-tone-warning: 255 188 59;
|
|
233
|
+
--og-tone-critical: 236 25 56;
|
|
234
|
+
--og-tone-danger: 249 133 7;
|
|
235
|
+
--og-tone-information: 62 175 240;
|
|
236
|
+
--og-tone-discovery: 119 113 227;
|
|
237
|
+
/* severity ramp cho CHART — literal đo trên demo, không phải token design */
|
|
238
|
+
--og-sev-critical: 207 103 96; /* #cf6760 — #7f1d1d nâng L cho nền tối */
|
|
239
|
+
--og-sev-danger: 246 68 61; /* #f6443d */
|
|
240
|
+
--og-sev-warning: 245 158 11; /* #f59e0b */
|
|
241
|
+
--og-sev-success: 22 163 74; /* #16a34a */
|
|
242
|
+
}
|
|
243
|
+
|
|
244
|
+
:root[data-og-theme='ivory'] {
|
|
245
|
+
--og-page-bg: 232 230 225; /* #e8e6e1 */
|
|
246
|
+
--og-surface: 250 249 245; /* #faf9f5 */
|
|
247
|
+
--og-surface-raised: 255 255 255; /* #ffffff */
|
|
248
|
+
--og-surface-sunken: 253 251 246; /* #fdfbf6 */
|
|
249
|
+
--og-border: 232 228 218; /* #e8e4da */
|
|
250
|
+
--og-border-subtle: 245 242 234; /* #f5f2ea */
|
|
251
|
+
--og-border-strong: 42 38 32; /* #2a2620 */
|
|
252
|
+
--og-text: 42 38 32; /* #2a2620 */
|
|
253
|
+
--og-text-body: 61 57 41; /* #3d3929 */
|
|
254
|
+
--og-text-muted: 138 131 113; /* #8a8371 */
|
|
255
|
+
--og-text-faint: 163 157 141; /* #a39d8d */
|
|
256
|
+
--og-accent: 217 119 87; /* #d97757 */
|
|
257
|
+
--og-accent-fg: 176 108 78; /* #b06c4e */
|
|
258
|
+
--og-accent-contrast: 250 249 245; /* #faf9f5 */
|
|
259
|
+
--og-accent-soft-bg: 247 237 231; /* #f7ede7 */
|
|
260
|
+
--og-accent-soft-fg: 176 108 78; /* #b06c4e */
|
|
261
|
+
--og-positive: 111 143 106; /* #6f8f6a */
|
|
262
|
+
--og-positive-soft-bg: 234 240 231; /* #eaf0e7 */
|
|
263
|
+
--og-negative: 176 74 74; /* #b04a4a */
|
|
264
|
+
--og-negative-soft-bg: 246 233 231; /* #f6e9e7 */
|
|
265
|
+
--og-warning: 168 116 31; /* #a8741f */
|
|
266
|
+
--og-warning-soft-bg: 247 239 221; /* #f7efdd */
|
|
267
|
+
--og-neutral-soft-bg: 241 237 227; /* #f1ede3 */
|
|
268
|
+
--og-neutral-soft-fg: 107 100 85; /* #6b6455 */
|
|
269
|
+
--og-track: 234 230 220; /* #eae6dc */
|
|
270
|
+
--og-radius-frame: 12px;
|
|
271
|
+
--og-radius-card: 14px;
|
|
272
|
+
--og-radius-control: 999px;
|
|
273
|
+
--og-radius-pill: 999px;
|
|
274
|
+
--og-font-body: 'Familjen Grotesk',ui-sans-serif,system-ui,sans-serif;
|
|
275
|
+
--og-font-display: 'Familjen Grotesk',ui-sans-serif,system-ui,sans-serif;
|
|
276
|
+
--og-font-mono: 'JetBrains Mono',ui-monospace,monospace;
|
|
277
|
+
--og-font-prose: 'Familjen Grotesk',ui-sans-serif,system-ui,sans-serif;
|
|
278
|
+
--og-font-figure: 'JetBrains Mono',ui-monospace,monospace;
|
|
279
|
+
/* derived (script-generated, KHÔNG có trong design gốc) */
|
|
280
|
+
--og-derived-critical: 154 11 57; /* #9a0b39 */
|
|
281
|
+
--og-derived-critical-soft-bg: 232 192 193; /* #e8c0c1 */
|
|
282
|
+
--og-derived-gradient-accent-end: 245 144 111; /* #f5906f */
|
|
283
|
+
--og-derived-gradient-positive-end: 135 168 130; /* #87a882 */
|
|
284
|
+
--shadow-color: 0 0 0;
|
|
285
|
+
/* severity tones — bộ LEGACY (vivid), không lấy từ design V2 */
|
|
286
|
+
--og-tone-success: 15 140 96;
|
|
287
|
+
--og-tone-warning: 255 199 0;
|
|
288
|
+
--og-tone-critical: 254 4 83;
|
|
289
|
+
--og-tone-danger: 255 122 0;
|
|
290
|
+
--og-tone-information: 23 127 240;
|
|
291
|
+
--og-tone-discovery: 156 129 255;
|
|
292
|
+
/* severity ramp cho CHART — literal đo trên demo, không phải token design */
|
|
293
|
+
--og-sev-critical: 127 29 29; /* #7f1d1d */
|
|
294
|
+
--og-sev-danger: 220 38 38; /* #dc2626 */
|
|
295
|
+
--og-sev-warning: 245 158 11; /* #f59e0b */
|
|
296
|
+
--og-sev-success: 22 163 74; /* #16a34a */
|
|
297
|
+
}
|
|
298
|
+
|
|
299
|
+
:root[data-og-theme='studio'] {
|
|
300
|
+
--og-page-bg: 14 14 16; /* #0e0e10 */
|
|
301
|
+
--og-surface: 35 35 34; /* #232322 */
|
|
302
|
+
--og-surface-raised: 43 43 41; /* #2b2b29 */
|
|
303
|
+
--og-surface-sunken: 38 38 37; /* #262625 */
|
|
304
|
+
--og-border: 58 58 55; /* #3a3a37 */
|
|
305
|
+
--og-border-subtle: 50 50 47; /* #32322f */
|
|
306
|
+
--og-border-strong: 85 85 79; /* #55554f */
|
|
307
|
+
--og-text: 236 235 230; /* #ecebe6 */
|
|
308
|
+
--og-text-body: 214 213 208; /* #d6d5d0 */
|
|
309
|
+
--og-text-muted: 181 180 174; /* #b5b4ae */
|
|
310
|
+
--og-text-faint: 143 142 136; /* #8f8e88 */
|
|
311
|
+
--og-accent: 90 143 214; /* #5a8fd6 */
|
|
312
|
+
--og-accent-fg: 126 168 224; /* #7ea8e0 */
|
|
313
|
+
--og-accent-contrast: 16 26 38; /* #101a26 */
|
|
314
|
+
--og-accent-soft-bg: 43 46 51; /* #2b2e33 */
|
|
315
|
+
--og-accent-soft-fg: 126 168 224; /* #7ea8e0 */
|
|
316
|
+
--og-positive: 107 189 133; /* #6bbd85 */
|
|
317
|
+
--og-positive-soft-bg: 31 49 38; /* #1f3126 */
|
|
318
|
+
--og-negative: 217 117 106; /* #d9756a */
|
|
319
|
+
--og-negative-soft-bg: 51 34 31; /* #33221f */
|
|
320
|
+
--og-warning: 217 154 61; /* #d99a3d */
|
|
321
|
+
--og-warning-soft-bg: 77 58 30; /* #4d3a1e */
|
|
322
|
+
--og-neutral-soft-bg: 46 46 44; /* #2e2e2c */
|
|
323
|
+
--og-neutral-soft-fg: 196 195 189; /* #c4c3bd */
|
|
324
|
+
--og-track: 32 52 77; /* #20344d */
|
|
325
|
+
--og-radius-frame: 14px;
|
|
326
|
+
--og-radius-card: 11px;
|
|
327
|
+
--og-radius-control: 9px;
|
|
328
|
+
--og-radius-pill: 999px;
|
|
329
|
+
--og-font-body: 'Familjen Grotesk',ui-sans-serif,system-ui,sans-serif;
|
|
330
|
+
--og-font-display: 'Familjen Grotesk',ui-sans-serif,system-ui,sans-serif;
|
|
331
|
+
--og-font-mono: 'JetBrains Mono',ui-monospace,monospace;
|
|
332
|
+
--og-font-prose: 'Familjen Grotesk',ui-sans-serif,system-ui,sans-serif;
|
|
333
|
+
--og-font-figure: 'JetBrains Mono',ui-monospace,monospace;
|
|
334
|
+
/* derived (script-generated, KHÔNG có trong design gốc) */
|
|
335
|
+
--og-derived-critical: 238 108 128; /* #ee6c80 */
|
|
336
|
+
--og-derived-critical-soft-bg: 85 48 49; /* #553031 */
|
|
337
|
+
--og-derived-gradient-accent-end: 120 174 248; /* #78aef8 */
|
|
338
|
+
--og-derived-gradient-positive-end: 132 215 158; /* #84d79e */
|
|
339
|
+
--shadow-color: 255 255 255;
|
|
340
|
+
/* severity tones — bộ LEGACY (vivid), không lấy từ design V2 */
|
|
341
|
+
--og-tone-success: 76 175 80;
|
|
342
|
+
--og-tone-warning: 255 188 59;
|
|
343
|
+
--og-tone-critical: 236 25 56;
|
|
344
|
+
--og-tone-danger: 249 133 7;
|
|
345
|
+
--og-tone-information: 62 175 240;
|
|
346
|
+
--og-tone-discovery: 119 113 227;
|
|
347
|
+
/* severity ramp cho CHART — literal đo trên demo, không phải token design */
|
|
348
|
+
--og-sev-critical: 207 103 96; /* #cf6760 — #7f1d1d nâng L cho nền tối */
|
|
349
|
+
--og-sev-danger: 246 68 61; /* #f6443d */
|
|
350
|
+
--og-sev-warning: 245 158 11; /* #f59e0b */
|
|
351
|
+
--og-sev-success: 22 163 74; /* #16a34a */
|
|
352
|
+
}
|
|
353
|
+
|
|
354
|
+
:root[data-og-theme='blueprint'] {
|
|
355
|
+
--og-page-bg: 14 14 16; /* #0e0e10 */
|
|
356
|
+
--og-surface: 15 15 17; /* #0f0f11 */
|
|
357
|
+
--og-surface-raised: 22 22 26; /* #16161a */
|
|
358
|
+
--og-surface-sunken: 28 28 32; /* #1c1c20 */
|
|
359
|
+
--og-border: 35 35 38; /* #232326 */
|
|
360
|
+
--og-border-subtle: 25 25 28; /* #19191c */
|
|
361
|
+
--og-border-strong: 58 58 64; /* #3a3a40 */
|
|
362
|
+
--og-text: 240 240 242; /* #f0f0f2 */
|
|
363
|
+
--og-text-body: 207 207 212; /* #cfcfd4 */
|
|
364
|
+
--og-text-muted: 115 115 120; /* #737378 */
|
|
365
|
+
--og-text-faint: 80 80 85; /* #505055 */
|
|
366
|
+
--og-accent: 224 122 58; /* #e07a3a */
|
|
367
|
+
--og-accent-fg: 240 160 113; /* #f0a071 */
|
|
368
|
+
--og-accent-contrast: 22 16 10; /* #16100a */
|
|
369
|
+
--og-accent-soft-bg: 42 29 18; /* #2a1d12 */
|
|
370
|
+
--og-accent-soft-fg: 240 160 113; /* #f0a071 */
|
|
371
|
+
--og-positive: 91 143 110; /* #5b8f6e */
|
|
372
|
+
--og-positive-soft-bg: 22 36 29; /* #16241d */
|
|
373
|
+
--og-negative: 179 101 79; /* #b3654f */
|
|
374
|
+
--og-negative-soft-bg: 42 26 21; /* #2a1a15 */
|
|
375
|
+
--og-warning: 201 160 78; /* #c9a04e */
|
|
376
|
+
--og-warning-soft-bg: 42 35 19; /* #2a2313 */
|
|
377
|
+
--og-neutral-soft-bg: 28 28 32; /* #1c1c20 */
|
|
378
|
+
--og-neutral-soft-fg: 168 168 174; /* #a8a8ae */
|
|
379
|
+
--og-track: 35 35 38; /* #232326 */
|
|
380
|
+
--og-radius-frame: 0px;
|
|
381
|
+
--og-radius-card: 0px;
|
|
382
|
+
--og-radius-control: 0px;
|
|
383
|
+
--og-radius-pill: 0px;
|
|
384
|
+
--og-font-body: 'Familjen Grotesk',ui-sans-serif,system-ui,sans-serif;
|
|
385
|
+
--og-font-display: 'Familjen Grotesk',ui-sans-serif,system-ui,sans-serif;
|
|
386
|
+
--og-font-mono: 'JetBrains Mono',ui-monospace,monospace;
|
|
387
|
+
--og-font-prose: 'Familjen Grotesk',ui-sans-serif,system-ui,sans-serif;
|
|
388
|
+
--og-font-figure: 'JetBrains Mono',ui-monospace,monospace;
|
|
389
|
+
/* derived (script-generated, KHÔNG có trong design gốc) */
|
|
390
|
+
--og-derived-critical: 216 93 120; /* #d85d78 */
|
|
391
|
+
--og-derived-critical-soft-bg: 73 39 39; /* #492727 */
|
|
392
|
+
--og-derived-gradient-accent-end: 255 154 91; /* #ff9a5b */
|
|
393
|
+
--og-derived-gradient-positive-end: 115 168 134; /* #73a886 */
|
|
394
|
+
--shadow-color: 255 255 255;
|
|
395
|
+
/* severity tones — bộ LEGACY (vivid), không lấy từ design V2 */
|
|
396
|
+
--og-tone-success: 76 175 80;
|
|
397
|
+
--og-tone-warning: 255 188 59;
|
|
398
|
+
--og-tone-critical: 236 25 56;
|
|
399
|
+
--og-tone-danger: 249 133 7;
|
|
400
|
+
--og-tone-information: 62 175 240;
|
|
401
|
+
--og-tone-discovery: 119 113 227;
|
|
402
|
+
/* severity ramp cho CHART — literal đo trên demo, không phải token design */
|
|
403
|
+
--og-sev-critical: 207 103 96; /* #cf6760 — #7f1d1d nâng L cho nền tối */
|
|
404
|
+
--og-sev-danger: 246 68 61; /* #f6443d */
|
|
405
|
+
--og-sev-warning: 245 158 11; /* #f59e0b */
|
|
406
|
+
--og-sev-success: 22 163 74; /* #16a34a */
|
|
407
|
+
}
|
|
408
|
+
|
|
409
|
+
:root[data-og-theme='terminal'] {
|
|
410
|
+
--og-page-bg: 232 230 225; /* #e8e6e1 */
|
|
411
|
+
--og-surface: 244 242 234; /* #f4f2ea */
|
|
412
|
+
--og-surface-raised: 250 249 243; /* #faf9f3 */
|
|
413
|
+
--og-surface-sunken: 235 232 221; /* #ebe8dd */
|
|
414
|
+
--og-border: 204 200 187; /* #ccc8bb */
|
|
415
|
+
--og-border-subtle: 232 229 218; /* #e8e5da */
|
|
416
|
+
--og-border-strong: 22 22 22; /* #161616 */
|
|
417
|
+
--og-text: 22 22 22; /* #161616 */
|
|
418
|
+
--og-text-body: 46 46 46; /* #2e2e2e */
|
|
419
|
+
--og-text-muted: 110 105 89; /* #6e6959 */
|
|
420
|
+
--og-text-faint: 138 132 116; /* #8a8474 */
|
|
421
|
+
--og-accent: 58 85 217; /* #3a55d9 */
|
|
422
|
+
--og-accent-fg: 58 85 217; /* #3a55d9 */
|
|
423
|
+
--og-accent-contrast: 244 242 234; /* #f4f2ea */
|
|
424
|
+
--og-accent-soft-bg: 227 230 247; /* #e3e6f7 */
|
|
425
|
+
--og-accent-soft-fg: 44 66 171; /* #2c42ab */
|
|
426
|
+
--og-positive: 47 143 88; /* #2f8f58 */
|
|
427
|
+
--og-positive-soft-bg: 226 239 230; /* #e2efe6 */
|
|
428
|
+
--og-negative: 192 69 47; /* #c0452f */
|
|
429
|
+
--og-negative-soft-bg: 247 230 226; /* #f7e6e2 */
|
|
430
|
+
--og-warning: 168 122 34; /* #a87a22 */
|
|
431
|
+
--og-warning-soft-bg: 245 236 216; /* #f5ecd8 */
|
|
432
|
+
--og-neutral-soft-bg: 226 223 212; /* #e2dfd4 */
|
|
433
|
+
--og-neutral-soft-fg: 90 86 74; /* #5a564a */
|
|
434
|
+
--og-track: 226 223 212; /* #e2dfd4 */
|
|
435
|
+
--og-radius-frame: 0px;
|
|
436
|
+
--og-radius-card: 0px;
|
|
437
|
+
--og-radius-control: 0px;
|
|
438
|
+
--og-radius-pill: 0px;
|
|
439
|
+
--og-font-body: 'Familjen Grotesk',ui-sans-serif,system-ui,sans-serif;
|
|
440
|
+
--og-font-display: 'Familjen Grotesk',ui-sans-serif,system-ui,sans-serif;
|
|
441
|
+
--og-font-mono: 'JetBrains Mono',ui-monospace,monospace;
|
|
442
|
+
--og-font-prose: 'Familjen Grotesk',ui-sans-serif,system-ui,sans-serif;
|
|
443
|
+
--og-font-figure: 'JetBrains Mono',ui-monospace,monospace;
|
|
444
|
+
/* derived (script-generated, KHÔNG có trong design gốc) */
|
|
445
|
+
--og-derived-critical: 169 0 42; /* #a9002a */
|
|
446
|
+
--og-derived-critical-soft-bg: 236 191 187; /* #ecbfbb */
|
|
447
|
+
--og-derived-gradient-accent-end: 78 111 245; /* #4e6ff5 */
|
|
448
|
+
--og-derived-gradient-positive-end: 75 168 111; /* #4ba86f */
|
|
449
|
+
--shadow-color: 0 0 0;
|
|
450
|
+
/* severity tones — bộ LEGACY (vivid), không lấy từ design V2 */
|
|
451
|
+
--og-tone-success: 15 140 96;
|
|
452
|
+
--og-tone-warning: 255 199 0;
|
|
453
|
+
--og-tone-critical: 254 4 83;
|
|
454
|
+
--og-tone-danger: 255 122 0;
|
|
455
|
+
--og-tone-information: 23 127 240;
|
|
456
|
+
--og-tone-discovery: 156 129 255;
|
|
457
|
+
/* severity ramp cho CHART — literal đo trên demo, không phải token design */
|
|
458
|
+
--og-sev-critical: 127 29 29; /* #7f1d1d */
|
|
459
|
+
--og-sev-danger: 220 38 38; /* #dc2626 */
|
|
460
|
+
--og-sev-warning: 245 158 11; /* #f59e0b */
|
|
461
|
+
--og-sev-success: 22 163 74; /* #16a34a */
|
|
462
|
+
}
|
|
463
|
+
|
|
464
|
+
/* ---- SKEW SHIELD (transitional) -------------------------------------
|
|
465
|
+
Remote build CŨ ship stylesheet tự khai legacy vars literal trên :root
|
|
466
|
+
(dark) và .light_theme — load SAU css host nên thắng ở :root. Khai lại
|
|
467
|
+
alias ở body-level (0,1,1) để thắng cả .light_theme (0,1,0) của bundle
|
|
468
|
+
cũ lẫn :root literal, bất kể thứ tự load. Gỡ khi mọi app đã lên V2. */
|
|
469
|
+
[data-og-theme] body {
|
|
470
|
+
/* ---- LEGACY ALIASES (@deprecated — gỡ khi kết thúc campaign V2) ----
|
|
471
|
+
Các biến cũ trỏ vào --og-* qua var() nên chỉ cần khai báo MỘT lần:
|
|
472
|
+
var() resolve tại element sử dụng, giá trị og đúng theo theme đang active. */
|
|
473
|
+
--gradient-primary-start: var(--og-accent);
|
|
474
|
+
--gradient-primary-end: var(--og-derived-gradient-accent-end);
|
|
475
|
+
--gradient-success-start: var(--og-positive);
|
|
476
|
+
--gradient-success-end: var(--og-derived-gradient-positive-end);
|
|
477
|
+
--bg-primary: var(--og-surface);
|
|
478
|
+
--bg-canvas: var(--og-page-bg);
|
|
479
|
+
--primary: var(--og-accent);
|
|
480
|
+
--success: var(--og-tone-success);
|
|
481
|
+
--warning: var(--og-tone-warning);
|
|
482
|
+
--critical: var(--og-tone-critical);
|
|
483
|
+
--danger: var(--og-tone-danger);
|
|
484
|
+
--discovery: var(--og-tone-discovery);
|
|
485
|
+
--information: var(--og-tone-information);
|
|
486
|
+
--text-primary: var(--og-text);
|
|
487
|
+
--text-secondary: var(--og-text-muted);
|
|
488
|
+
--border-default: var(--og-border);
|
|
489
|
+
--text-placeholder: var(--og-text-faint);
|
|
490
|
+
--step-bg: var(--og-text);
|
|
491
|
+
--text-link-primary: var(--og-accent-fg);
|
|
492
|
+
--bg-primary-hover: var(--og-surface-sunken);
|
|
493
|
+
--text-focus: var(--og-accent-contrast);
|
|
494
|
+
--bg-primary-neutral: var(--og-border-strong);
|
|
495
|
+
--text-selected-primary: var(--og-accent-fg);
|
|
496
|
+
--button-default: var(--og-text);
|
|
497
|
+
--text-inverse: var(--og-surface);
|
|
498
|
+
--bg-error-bold: var(--og-negative);
|
|
499
|
+
--text-error: var(--og-negative);
|
|
500
|
+
--border-interactive: var(--og-accent);
|
|
501
|
+
--border-selected: var(--og-accent);
|
|
502
|
+
--button-primary: var(--og-accent);
|
|
503
|
+
--border-strong: var(--og-border-strong);
|
|
504
|
+
--border-secondary-hover: var(--og-accent);
|
|
505
|
+
--bg-secondary-hover: var(--og-neutral-soft-bg);
|
|
506
|
+
}
|
|
507
|
+
|
|
508
|
+
/* ---- STALE-HOST FALLBACK (transitional) -----------------------------
|
|
509
|
+
Host CŨ không set data-og-theme, chỉ toggle .light_theme trên body.
|
|
510
|
+
Map light→porcelain (đã là :root default), dark→charcoal — cả hai kèm
|
|
511
|
+
alias ở body-level để đè literal của stylesheet host cũ. Remote chạy
|
|
512
|
+
standalone không set theme cũng rơi vào nhánh charcoal (khớp hành vi
|
|
513
|
+
dark-default cũ). */
|
|
514
|
+
html:not([data-og-theme]) body:not(.light_theme) {
|
|
515
|
+
--og-page-bg: 26 24 17; /* #1a1811 */
|
|
516
|
+
--og-surface: 34 31 22; /* #221f16 */
|
|
517
|
+
--og-surface-raised: 42 38 25; /* #2a2619 */
|
|
518
|
+
--og-surface-sunken: 23 21 9; /* #171509 */
|
|
519
|
+
--og-border: 58 54 38; /* #3a3626 */
|
|
520
|
+
--og-border-subtle: 44 41 25; /* #2c2919 */
|
|
521
|
+
--og-border-strong: 76 71 50; /* #4c4732 */
|
|
522
|
+
--og-text: 226 221 203; /* #e2ddcb */
|
|
523
|
+
--og-text-body: 193 188 166; /* #c1bca6 */
|
|
524
|
+
--og-text-muted: 147 141 118; /* #938d76 */
|
|
525
|
+
--og-text-faint: 107 102 83; /* #6b6653 */
|
|
526
|
+
--og-accent: 143 200 102; /* #8fc866 */
|
|
527
|
+
--og-accent-fg: 164 217 126; /* #a4d97e */
|
|
528
|
+
--og-accent-contrast: 23 21 9; /* #171509 */
|
|
529
|
+
--og-accent-soft-bg: 38 48 26; /* #26301a */
|
|
530
|
+
--og-accent-soft-fg: 164 217 126; /* #a4d97e */
|
|
531
|
+
--og-positive: 132 200 98; /* #84c862 */
|
|
532
|
+
--og-positive-soft-bg: 34 48 15; /* #22300f */
|
|
533
|
+
--og-negative: 229 130 142; /* #e5828e */
|
|
534
|
+
--og-negative-soft-bg: 63 30 36; /* #3f1e24 */
|
|
535
|
+
--og-warning: 214 178 90; /* #d6b25a */
|
|
536
|
+
--og-warning-soft-bg: 51 42 18; /* #332a12 */
|
|
537
|
+
--og-neutral-soft-bg: 42 39 25; /* #2a2719 */
|
|
538
|
+
--og-neutral-soft-fg: 164 158 134; /* #a49e86 */
|
|
539
|
+
--og-track: 48 44 30; /* #302c1e */
|
|
540
|
+
--og-radius-frame: 10px;
|
|
541
|
+
--og-radius-card: 9px;
|
|
542
|
+
--og-radius-control: 7px;
|
|
543
|
+
--og-radius-pill: 999px;
|
|
544
|
+
--og-font-body: 'Familjen Grotesk',ui-sans-serif,system-ui,sans-serif;
|
|
545
|
+
--og-font-display: 'Familjen Grotesk',ui-sans-serif,system-ui,sans-serif;
|
|
546
|
+
--og-font-mono: 'JetBrains Mono',ui-monospace,monospace;
|
|
547
|
+
--og-font-prose: 'Familjen Grotesk',ui-sans-serif,system-ui,sans-serif;
|
|
548
|
+
--og-font-figure: 'JetBrains Mono',ui-monospace,monospace;
|
|
549
|
+
--og-positive-soft-fg: 164 217 126; /* #a4d97e */
|
|
550
|
+
--og-negative-soft-fg: 238 163 171; /* #eea3ab */
|
|
551
|
+
--og-warning-soft-fg: 224 194 116; /* #e0c274 */
|
|
552
|
+
/* derived (script-generated, KHÔNG có trong design gốc) */
|
|
553
|
+
--og-derived-critical: 254 119 154; /* #fe779a */
|
|
554
|
+
--og-derived-critical-soft-bg: 97 46 57; /* #612e39 */
|
|
555
|
+
--og-derived-gradient-accent-end: 174 233 134; /* #aee986 */
|
|
556
|
+
--og-derived-gradient-positive-end: 157 226 123; /* #9de27b */
|
|
557
|
+
--shadow-color: 255 255 255;
|
|
558
|
+
/* severity tones — bộ LEGACY (vivid), không lấy từ design V2 */
|
|
559
|
+
--og-tone-success: 76 175 80;
|
|
560
|
+
--og-tone-warning: 255 188 59;
|
|
561
|
+
--og-tone-critical: 236 25 56;
|
|
562
|
+
--og-tone-danger: 249 133 7;
|
|
563
|
+
--og-tone-information: 62 175 240;
|
|
564
|
+
--og-tone-discovery: 119 113 227;
|
|
565
|
+
/* severity ramp cho CHART — literal đo trên demo, không phải token design */
|
|
566
|
+
--og-sev-critical: 207 103 96; /* #cf6760 — #7f1d1d nâng L cho nền tối */
|
|
567
|
+
--og-sev-danger: 246 68 61; /* #f6443d */
|
|
568
|
+
--og-sev-warning: 245 158 11; /* #f59e0b */
|
|
569
|
+
--og-sev-success: 22 163 74; /* #16a34a */
|
|
570
|
+
|
|
571
|
+
/* ---- LEGACY ALIASES (@deprecated — gỡ khi kết thúc campaign V2) ----
|
|
572
|
+
Các biến cũ trỏ vào --og-* qua var() nên chỉ cần khai báo MỘT lần:
|
|
573
|
+
var() resolve tại element sử dụng, giá trị og đúng theo theme đang active. */
|
|
574
|
+
--gradient-primary-start: var(--og-accent);
|
|
575
|
+
--gradient-primary-end: var(--og-derived-gradient-accent-end);
|
|
576
|
+
--gradient-success-start: var(--og-positive);
|
|
577
|
+
--gradient-success-end: var(--og-derived-gradient-positive-end);
|
|
578
|
+
--bg-primary: var(--og-surface);
|
|
579
|
+
--bg-canvas: var(--og-page-bg);
|
|
580
|
+
--primary: var(--og-accent);
|
|
581
|
+
--success: var(--og-tone-success);
|
|
582
|
+
--warning: var(--og-tone-warning);
|
|
583
|
+
--critical: var(--og-tone-critical);
|
|
584
|
+
--danger: var(--og-tone-danger);
|
|
585
|
+
--discovery: var(--og-tone-discovery);
|
|
586
|
+
--information: var(--og-tone-information);
|
|
587
|
+
--text-primary: var(--og-text);
|
|
588
|
+
--text-secondary: var(--og-text-muted);
|
|
589
|
+
--border-default: var(--og-border);
|
|
590
|
+
--text-placeholder: var(--og-text-faint);
|
|
591
|
+
--step-bg: var(--og-text);
|
|
592
|
+
--text-link-primary: var(--og-accent-fg);
|
|
593
|
+
--bg-primary-hover: var(--og-surface-sunken);
|
|
594
|
+
--text-focus: var(--og-accent-contrast);
|
|
595
|
+
--bg-primary-neutral: var(--og-border-strong);
|
|
596
|
+
--text-selected-primary: var(--og-accent-fg);
|
|
597
|
+
--button-default: var(--og-text);
|
|
598
|
+
--text-inverse: var(--og-surface);
|
|
599
|
+
--bg-error-bold: var(--og-negative);
|
|
600
|
+
--text-error: var(--og-negative);
|
|
601
|
+
--border-interactive: var(--og-accent);
|
|
602
|
+
--border-selected: var(--og-accent);
|
|
603
|
+
--button-primary: var(--og-accent);
|
|
604
|
+
--border-strong: var(--og-border-strong);
|
|
605
|
+
--border-secondary-hover: var(--og-accent);
|
|
606
|
+
--bg-secondary-hover: var(--og-neutral-soft-bg);
|
|
607
|
+
}
|
|
608
|
+
|
|
609
|
+
html:not([data-og-theme]) body.light_theme {
|
|
610
|
+
/* ---- LEGACY ALIASES (@deprecated — gỡ khi kết thúc campaign V2) ----
|
|
611
|
+
Các biến cũ trỏ vào --og-* qua var() nên chỉ cần khai báo MỘT lần:
|
|
612
|
+
var() resolve tại element sử dụng, giá trị og đúng theo theme đang active. */
|
|
613
|
+
--gradient-primary-start: var(--og-accent);
|
|
614
|
+
--gradient-primary-end: var(--og-derived-gradient-accent-end);
|
|
615
|
+
--gradient-success-start: var(--og-positive);
|
|
616
|
+
--gradient-success-end: var(--og-derived-gradient-positive-end);
|
|
617
|
+
--bg-primary: var(--og-surface);
|
|
618
|
+
--bg-canvas: var(--og-page-bg);
|
|
619
|
+
--primary: var(--og-accent);
|
|
620
|
+
--success: var(--og-tone-success);
|
|
621
|
+
--warning: var(--og-tone-warning);
|
|
622
|
+
--critical: var(--og-tone-critical);
|
|
623
|
+
--danger: var(--og-tone-danger);
|
|
624
|
+
--discovery: var(--og-tone-discovery);
|
|
625
|
+
--information: var(--og-tone-information);
|
|
626
|
+
--text-primary: var(--og-text);
|
|
627
|
+
--text-secondary: var(--og-text-muted);
|
|
628
|
+
--border-default: var(--og-border);
|
|
629
|
+
--text-placeholder: var(--og-text-faint);
|
|
630
|
+
--step-bg: var(--og-text);
|
|
631
|
+
--text-link-primary: var(--og-accent-fg);
|
|
632
|
+
--bg-primary-hover: var(--og-surface-sunken);
|
|
633
|
+
--text-focus: var(--og-accent-contrast);
|
|
634
|
+
--bg-primary-neutral: var(--og-border-strong);
|
|
635
|
+
--text-selected-primary: var(--og-accent-fg);
|
|
636
|
+
--button-default: var(--og-text);
|
|
637
|
+
--text-inverse: var(--og-surface);
|
|
638
|
+
--bg-error-bold: var(--og-negative);
|
|
639
|
+
--text-error: var(--og-negative);
|
|
640
|
+
--border-interactive: var(--og-accent);
|
|
641
|
+
--border-selected: var(--og-accent);
|
|
642
|
+
--button-primary: var(--og-accent);
|
|
643
|
+
--border-strong: var(--og-border-strong);
|
|
644
|
+
--border-secondary-hover: var(--og-accent);
|
|
645
|
+
--bg-secondary-hover: var(--og-neutral-soft-bg);
|
|
646
|
+
}
|