@aria-framework/theme 0.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/web/theme.css ADDED
@@ -0,0 +1,85 @@
1
+ /* AUTO-GENERATED from tokens.json by build.js — DO NOT EDIT. Change tokens.json, run `node build.js`. */
2
+ /* field-ops-theme — Field Ops Console design system (web).
3
+ Drop-in token layer for any Bootstrap 5.3 app. Load order in <head>:
4
+ bootstrap.min.css → field-ops-theme/theme.css → app.css
5
+ Serve web/ same-origin (e.g. mount at /theme) so fonts satisfy CSP font-src 'self'. */
6
+
7
+ /* ── Self-hosted fonts (relative URLs → resolve under the mount, no CDN) ─────*/
8
+ @font-face{font-family:'Hanken Grotesk';font-style:normal;font-weight:100 900;font-display:swap;
9
+ src:url('./fonts/hanken-grotesk-wght.woff2') format('woff2')}
10
+ @font-face{font-family:'IBM Plex Mono';font-style:normal;font-weight:400;font-display:swap;
11
+ src:url('./fonts/ibm-plex-mono-400.woff2') format('woff2')}
12
+ @font-face{font-family:'IBM Plex Mono';font-style:normal;font-weight:500;font-display:swap;
13
+ src:url('./fonts/ibm-plex-mono-500.woff2') format('woff2')}
14
+ @font-face{font-family:'IBM Plex Mono';font-style:normal;font-weight:600;font-display:swap;
15
+ src:url('./fonts/ibm-plex-mono-600.woff2') format('woff2')}
16
+
17
+ /* ── Design tokens — Ops Light in :root; Ops Dark keyed on [data-bs-theme] ───*/
18
+ :root{
19
+ --font-sans:'Hanken Grotesk', system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;
20
+ --font-mono:'IBM Plex Mono', ui-monospace, SFMono-Regular, Menlo, monospace;
21
+ --brand:#0E7A6E; --brand-deep:#0A5C53; --brand-bright:#15B8A6; --brand-rgb:14,122,110;
22
+ --signal:#E2710B;
23
+ --paper:#F4F5F2; --surface:#FFFFFF; --surface-2:#FAFBF9; --line:#DCDAD2; --line-strong:#CBC8BC;
24
+ --text:#18222A; --text-soft:#5C6770; --text-faint:#929BA1;
25
+ --shadow:0 1px 2px rgba(16,24,28,.05), 0 4px 14px -6px rgba(16,24,28,.12);
26
+ --shadow-lg:0 18px 50px -18px rgba(16,24,28,.30);
27
+ }
28
+ [data-bs-theme="dark"]{
29
+ --brand:#16B5A3; --brand-deep:#0E7A6E; --brand-bright:#2FE0CC; --brand-rgb:22,181,163;
30
+ --signal:#F2871F;
31
+ --paper:#0C1215; --surface:#141C21; --surface-2:#192329; --line:#243038; --line-strong:#3A4854;
32
+ --text:#E7EDEF; --text-soft:#9BA7AE; --text-faint:#69767D;
33
+ --shadow:0 1px 2px rgba(0,0,0,.3), 0 8px 24px -10px rgba(0,0,0,.6);
34
+ --shadow-lg:0 24px 60px -18px rgba(0,0,0,.8);
35
+ }
36
+
37
+ /* ── Map tokens onto Bootstrap (load AFTER bootstrap.min.css so these win) ───*/
38
+ :root{
39
+ --bs-body-font-family:var(--font-sans);
40
+ --bs-primary:var(--brand); --bs-primary-rgb:var(--brand-rgb);
41
+ --bs-link-color:var(--brand); --bs-link-color-rgb:var(--brand-rgb); --bs-link-hover-color:var(--brand-deep);
42
+ --bs-body-bg:var(--paper); --bs-body-color:var(--text);
43
+ --bs-border-color:var(--line);
44
+ }
45
+ [data-bs-theme="dark"]{
46
+ --bs-primary:var(--brand); --bs-primary-rgb:var(--brand-rgb);
47
+ --bs-link-color:var(--brand); --bs-link-color-rgb:var(--brand-rgb); --bs-link-hover-color:var(--brand-bright);
48
+ --bs-body-bg:var(--paper); --bs-body-color:var(--text);
49
+ --bs-border-color:var(--line);
50
+ }
51
+ body{font-family:var(--font-sans)}
52
+ .mono,.tracking-id,code,kbd,.font-monospace{font-family:var(--font-mono)}
53
+
54
+ /* ── Edge clarity — faint --line for internal dividers; --line-strong + shadow
55
+ for container edges, so cards/inputs read as raised on white/paper. ────────*/
56
+ .card{ border-color:var(--line-strong); box-shadow:var(--shadow); }
57
+ .form-control,.form-select{ border-color:var(--line-strong); }
58
+ .input-group-text{ border-color:var(--line-strong); }
59
+ .table{ --bs-table-border-color:var(--line); }
60
+ .list-group{ --bs-list-group-border-color:var(--line-strong); }
61
+
62
+ /* ── Brand buttons (component vars compile into Bootstrap; set explicitly) ───*/
63
+ .btn-primary{
64
+ --bs-btn-bg:var(--brand); --bs-btn-border-color:var(--brand);
65
+ --bs-btn-hover-bg:var(--brand-deep); --bs-btn-hover-border-color:var(--brand-deep);
66
+ --bs-btn-active-bg:var(--brand-deep); --bs-btn-active-border-color:var(--brand-deep);
67
+ --bs-btn-disabled-bg:var(--brand); --bs-btn-disabled-border-color:var(--brand);
68
+ }
69
+ .btn-outline-primary{
70
+ --bs-btn-color:var(--brand); --bs-btn-border-color:var(--brand);
71
+ --bs-btn-hover-bg:var(--brand); --bs-btn-hover-border-color:var(--brand);
72
+ --bs-btn-active-bg:var(--brand); --bs-btn-active-border-color:var(--brand);
73
+ }
74
+
75
+ /* ── Accessibility ──────────────────────────────────────────────────────────*/
76
+ a:focus-visible, button:focus-visible, input:focus-visible, select:focus-visible,
77
+ textarea:focus-visible, [tabindex]:focus-visible {
78
+ outline: 2px solid var(--brand); outline-offset: 2px; border-radius: 6px;
79
+ }
80
+ @media (prefers-reduced-motion: reduce) {
81
+ *, *::before, *::after {
82
+ animation-duration: .001ms !important; animation-iteration-count: 1 !important;
83
+ transition-duration: .001ms !important; scroll-behavior: auto !important;
84
+ }
85
+ }