apex-grid 3.5.0 → 3.6.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/CHANGELOG.md +338 -0
- package/LICENSE.md +125 -0
- package/README.md +64 -10
- package/components/cell.d.ts +30 -4
- package/components/cell.js +199 -53
- package/components/cell.js.map +1 -1
- package/components/filter-row.d.ts +2 -0
- package/components/filter-row.js +82 -28
- package/components/filter-row.js.map +1 -1
- package/components/grid.d.ts +146 -36
- package/components/grid.js +442 -103
- package/components/grid.js.map +1 -1
- package/components/group-header-row.js +28 -25
- package/components/group-header-row.js.map +1 -1
- package/components/header-row.d.ts +7 -5
- package/components/header-row.js +11 -9
- package/components/header-row.js.map +1 -1
- package/components/header.js +32 -20
- package/components/header.js.map +1 -1
- package/components/row.d.ts +19 -3
- package/components/row.js +69 -23
- package/components/row.js.map +1 -1
- package/components/toolbar.js +2 -1
- package/components/toolbar.js.map +1 -1
- package/components/virtualizer.d.ts +40 -0
- package/components/virtualizer.js +116 -5
- package/components/virtualizer.js.map +1 -1
- package/controllers/dom.d.ts +4 -4
- package/controllers/dom.js +40 -22
- package/controllers/dom.js.map +1 -1
- package/controllers/editing.d.ts +104 -37
- package/controllers/editing.js +230 -78
- package/controllers/editing.js.map +1 -1
- package/controllers/expansion.d.ts +14 -5
- package/controllers/expansion.js +24 -1
- package/controllers/expansion.js.map +1 -1
- package/controllers/filter.d.ts +10 -2
- package/controllers/filter.js +62 -17
- package/controllers/filter.js.map +1 -1
- package/controllers/history.d.ts +45 -8
- package/controllers/history.js +58 -20
- package/controllers/history.js.map +1 -1
- package/controllers/navigation.d.ts +67 -13
- package/controllers/navigation.js +191 -51
- package/controllers/navigation.js.map +1 -1
- package/controllers/pagination.d.ts +6 -0
- package/controllers/pagination.js +10 -2
- package/controllers/pagination.js.map +1 -1
- package/controllers/reorder.js +38 -22
- package/controllers/reorder.js.map +1 -1
- package/controllers/resize.d.ts +17 -2
- package/controllers/resize.js +16 -6
- package/controllers/resize.js.map +1 -1
- package/controllers/row-pin.d.ts +20 -2
- package/controllers/row-pin.js +16 -9
- package/controllers/row-pin.js.map +1 -1
- package/controllers/row-reorder.d.ts +31 -11
- package/controllers/row-reorder.js +117 -37
- package/controllers/row-reorder.js.map +1 -1
- package/controllers/selection.d.ts +11 -4
- package/controllers/selection.js +26 -11
- package/controllers/selection.js.map +1 -1
- package/controllers/sort.d.ts +22 -2
- package/controllers/sort.js +29 -23
- package/controllers/sort.js.map +1 -1
- package/controllers/state.d.ts +56 -7
- package/controllers/state.js +76 -6
- package/controllers/state.js.map +1 -1
- package/controllers/tree.d.ts +15 -10
- package/controllers/tree.js +0 -0
- package/controllers/tree.js.map +1 -1
- package/custom-elements.json +3156 -277
- package/docs/assets/hierarchy.js +1 -1
- package/docs/assets/highlight.css +15 -8
- package/docs/assets/navigation.js +1 -1
- package/docs/assets/search.js +1 -1
- package/docs/classes/ApexGrid.html +155 -81
- package/docs/classes/ApexGridPaginator.html +1 -1
- package/docs/classes/ApexGridToolbar.html +3 -3
- package/docs/functions/localize.html +2 -2
- package/docs/hierarchy.html +1 -1
- package/docs/index.html +74 -11
- package/docs/interfaces/ApexCellValidationFailedEvent.html +3 -2
- package/docs/interfaces/ApexCellValueChangedEvent.html +4 -2
- package/docs/interfaces/ApexCellValueChangingEvent.html +3 -2
- package/docs/interfaces/ApexGridEventMap.html +5 -2
- package/docs/interfaces/ApexRowEditEndedEvent.html +2 -1
- package/docs/interfaces/ApexRowEditStartedEvent.html +2 -1
- package/docs/interfaces/ApexRowMovingEvent.html +9 -3
- package/docs/interfaces/ApexRowPinningEvent.html +1 -1
- package/docs/interfaces/ApexTreeRowExpandedEvent.html +4 -1
- package/docs/interfaces/ApexTreeRowExpandingEvent.html +4 -1
- package/docs/interfaces/BaseApexCellContext.html +1 -1
- package/docs/interfaces/BaseApexEditorContext.html +1 -1
- package/docs/interfaces/BaseFilterExpression.html +2 -2
- package/docs/interfaces/CSVExportOptions.html +12 -4
- package/docs/interfaces/DataPipelineConfiguration.html +1 -1
- package/docs/interfaces/ExportOptions.html +5 -3
- package/docs/interfaces/GridExpansionConfiguration.html +6 -2
- package/docs/interfaces/GridRowReorderingConfiguration.html +1 -1
- package/docs/interfaces/PaginationState.html +1 -1
- package/docs/interfaces/SetStateResult.html +3 -2
- package/docs/interfaces/ValidatorContext.html +7 -2
- package/docs/media/_token-values.scss +118 -0
- package/docs/media/package.json +3 -2
- package/docs/modules.html +1 -1
- package/docs/types/ExportSource.html +6 -4
- package/docs/types/OperandKeys.html +9 -0
- package/docs/variables/EN_LOCALE.html +2 -2
- package/i18n/en.d.ts +5 -0
- package/i18n/en.js +5 -0
- package/i18n/en.js.map +1 -1
- package/i18n/es.js +5 -0
- package/i18n/es.js.map +1 -1
- package/internal/column-types.d.ts +27 -1
- package/internal/column-types.js +75 -49
- package/internal/column-types.js.map +1 -1
- package/internal/constants.d.ts +1 -2
- package/internal/constants.js +0 -4
- package/internal/constants.js.map +1 -1
- package/internal/document-styles.d.ts +30 -0
- package/internal/document-styles.js +48 -0
- package/internal/document-styles.js.map +1 -0
- package/internal/export.d.ts +39 -7
- package/internal/export.js +35 -34
- package/internal/export.js.map +1 -1
- package/internal/feature-module.d.ts +60 -3
- package/internal/feature-module.js +6 -0
- package/internal/feature-module.js.map +1 -1
- package/internal/index.d.ts +6 -4
- package/internal/index.js +5 -3
- package/internal/index.js.map +1 -1
- package/internal/normalize-case.d.ts +8 -1
- package/internal/normalize-case.js +3 -2
- package/internal/normalize-case.js.map +1 -1
- package/internal/state-snapshot.d.ts +60 -8
- package/internal/state-snapshot.js +87 -19
- package/internal/state-snapshot.js.map +1 -1
- package/internal/types.d.ts +17 -2
- package/internal/types.js.map +1 -1
- package/internal/utils.d.ts +34 -6
- package/internal/utils.js +30 -21
- package/internal/utils.js.map +1 -1
- package/internal/validators.js +1 -0
- package/internal/validators.js.map +1 -1
- package/operations/filter/operands/number.js +9 -6
- package/operations/filter/operands/number.js.map +1 -1
- package/operations/filter/operands/string.js +2 -3
- package/operations/filter/operands/string.js.map +1 -1
- package/operations/filter/types.d.ts +13 -1
- package/operations/filter/types.js.map +1 -1
- package/operations/filter.d.ts +6 -0
- package/operations/filter.js +23 -7
- package/operations/filter.js.map +1 -1
- package/operations/quick-filter.js +2 -5
- package/operations/quick-filter.js.map +1 -1
- package/operations/sort.d.ts +21 -2
- package/operations/sort.js +41 -14
- package/operations/sort.js.map +1 -1
- package/package.json +8 -3
- package/setup.d.ts +11 -0
- package/setup.js +9 -19
- package/setup.js.map +1 -1
- package/styles/_token-values.css.d.ts +1 -0
- package/styles/_token-values.css.js +3 -0
- package/styles/_token-values.css.js.map +1 -0
- package/styles/_tokens.css.js +1 -1
- package/styles/_tokens.css.js.map +1 -1
- package/styles/body-cell/body-cell.css.js +1 -1
- package/styles/body-cell/body-cell.css.js.map +1 -1
- package/styles/body-cell/cell-renderers.css.js +1 -1
- package/styles/body-cell/cell-renderers.css.js.map +1 -1
- package/styles/body-row/body-row.css.js +1 -1
- package/styles/body-row/body-row.css.js.map +1 -1
- package/styles/document-tokens.css.d.ts +1 -0
- package/styles/document-tokens.css.js +3 -0
- package/styles/document-tokens.css.js.map +1 -0
- package/styles/filter-row/filter-row.css.js +1 -1
- package/styles/filter-row/filter-row.css.js.map +1 -1
- package/styles/grid/_grid.base.css.js +1 -1
- package/styles/grid/_grid.base.css.js.map +1 -1
- package/styles/grid/grid.css.js +1 -1
- package/styles/grid/grid.css.js.map +1 -1
- package/styles/group-header-row/group-header-row.css.js +1 -1
- package/styles/group-header-row/group-header-row.css.js.map +1 -1
- package/styles/header-cell/header-cell.css.js +1 -1
- package/styles/header-cell/header-cell.css.js.map +1 -1
- package/styles/header-row/header-row.base.css.js +1 -1
- package/styles/header-row/header-row.base.css.js.map +1 -1
- package/styles/paginator/paginator.css.js +1 -1
- package/styles/paginator/paginator.css.js.map +1 -1
- package/styles/toolbar/toolbar.css.js +1 -1
- package/styles/toolbar/toolbar.css.js.map +1 -1
- package/tokens.css +78 -0
- package/LICENSE +0 -80
- package/docs/media/LICENSE +0 -80
- package/docs/media/_tokens.scss +0 -214
package/docs/media/_tokens.scss
DELETED
|
@@ -1,214 +0,0 @@
|
|
|
1
|
-
// ─────────────────────────────────────────────────────────────────────────
|
|
2
|
-
// Premium default design tokens (`--ag-*`).
|
|
3
|
-
// These land on the `<apex-grid>` host (this file is `@use`d by
|
|
4
|
-
// `grid/_grid.base.scss`, which ships inside every theme). CSS custom
|
|
5
|
-
// properties inherit across shadow boundaries, so every child component
|
|
6
|
-
// (`apex-grid-row`, `apex-grid-cell`, `apex-grid-header`, …) can read them.
|
|
7
|
-
// This is the single rebrand surface: override ~12 values on `apex-grid` and
|
|
8
|
-
// the whole grid re-skins. Values fall back to self-contained literals, so a
|
|
9
|
-
// grid mounted with zero consumer CSS already looks premium; the brand tokens
|
|
10
|
-
// additionally re-tint from an Ignite UI palette when one is present.
|
|
11
|
-
// No `!important`, no downstream hardcoded numerics — every rule resolves here.
|
|
12
|
-
// ─────────────────────────────────────────────────────────────────────────
|
|
13
|
-
|
|
14
|
-
:host {
|
|
15
|
-
// ── Brand ────────────────────────────────────────────────────────────
|
|
16
|
-
// Re-tints from an Ignite UI palette when its CSS is loaded (so the grid
|
|
17
|
-
// auto-matches such a host app), and falls back to the self-contained
|
|
18
|
-
// premium blue otherwise. `--ig-primary-*` is the whole integration: it is
|
|
19
|
-
// what an Ignite UI theme actually defines, and reading it costs nothing
|
|
20
|
-
// when absent. This hook used to live in the per-theme files; folding it
|
|
21
|
-
// here keeps the integration without named themes.
|
|
22
|
-
--ag-brand: var(--ig-primary-500, #0d6fd3); /* primary blue */
|
|
23
|
-
--ag-brand-strong: var(--ig-primary-700, #0a56b8); /* hover / pressed */
|
|
24
|
-
|
|
25
|
-
// Brand-derived washes are mixed from `--ag-brand` so a one-line rebrand
|
|
26
|
-
// cascades to every tint. With the default brand these resolve to the
|
|
27
|
-
// spec's exact rgba(13, 111, 211, …) values.
|
|
28
|
-
--ag-brand-soft: color-mix(in srgb, var(--ag-brand) 10%, transparent); /* selected row / chip wash */
|
|
29
|
-
--ag-brand-softer: color-mix(in srgb, var(--ag-brand) 7%, transparent); /* chip / control wash */
|
|
30
|
-
--ag-brand-line: color-mix(in srgb, var(--ag-brand) 18%, transparent); /* chip / search borders */
|
|
31
|
-
|
|
32
|
-
// ── Neutral chrome ───────────────────────────────────────────────────
|
|
33
|
-
// The grid's chrome (surfaces, gridlines, row hover) is grayscale so the
|
|
34
|
-
// grid reads as a calm, neutral table; `--ag-brand` is reserved for genuine
|
|
35
|
-
// state (selection, focus, checkboxes, active sort) and accents (chips).
|
|
36
|
-
--ag-hairline: rgb(15 23 42 / 8%); /* header / structural gridlines */
|
|
37
|
-
--ag-border: rgb(15 23 42 / 8%); /* row separators — same weight as hairline */
|
|
38
|
-
--ag-pin-line: rgb(15 23 42 / 18%); /* 1px vertical line at pinned-column edge */
|
|
39
|
-
--ag-header-separator: rgb(15 23 42 / 12%); /* opt-in per-column header divider (columnSeparator) */
|
|
40
|
-
--ag-row-hover: color-mix(in srgb, #0f172a 5%, var(--ag-surface)); /* neutral hover wash (opaque) */
|
|
41
|
-
|
|
42
|
-
// ── Surfaces ─────────────────────────────────────────────────────────
|
|
43
|
-
// These back sticky/pinned regions (header, footer, frozen columns) which
|
|
44
|
-
// paint `background: inherit` to mask content scrolling underneath, so they
|
|
45
|
-
// MUST be opaque — a translucent surface lets the scrolled content bleed
|
|
46
|
-
// through.
|
|
47
|
-
// Host card background. Kept as its own token (rather than reusing
|
|
48
|
-
// `--ag-surface`) so the default can carry the subtle premium light
|
|
49
|
-
// gradient while sticky surfaces stay flat/opaque. Dark themes override it
|
|
50
|
-
// with a flat color. The host paints THIS, so dark mode is impossible
|
|
51
|
-
// without it being a token.
|
|
52
|
-
--ag-grid-bg: #fff; /* flat white — gradients are dated in modern data grids */
|
|
53
|
-
--ag-surface: #fff; /* grid card background */
|
|
54
|
-
--ag-surface-alt: var(--ag-surface); /* no zebra stripes — rely on hover + hairline borders */
|
|
55
|
-
--ag-surface-elevated: #f8f9fb; /* flat header/toolbar/footer surface */
|
|
56
|
-
|
|
57
|
-
// ── Text ─────────────────────────────────────────────────────────────
|
|
58
|
-
--ag-text: #111827; /* primary */
|
|
59
|
-
--ag-text-body: #1f2937; /* row text */
|
|
60
|
-
--ag-text-muted: #6b7280; /* roles, labels */
|
|
61
|
-
--ag-text-subtle: #9ca3af; /* placeholder, ellipsis */
|
|
62
|
-
--ag-text-on-brand: #fff;
|
|
63
|
-
|
|
64
|
-
// ── State ────────────────────────────────────────────────────────────
|
|
65
|
-
--ag-good: #10b981; /* health > 80, Active */
|
|
66
|
-
--ag-good-text: #047857;
|
|
67
|
-
--ag-good-soft: rgb(16 185 129 / 10%);
|
|
68
|
-
--ag-watch: #f59e0b; /* health 65–80, Trial */
|
|
69
|
-
--ag-watch-text: #b45309;
|
|
70
|
-
--ag-watch-soft: rgb(245 158 11 / 10%);
|
|
71
|
-
--ag-risk: #ef4444; /* health < 65, Churn */
|
|
72
|
-
--ag-risk-text: #b91c1c;
|
|
73
|
-
--ag-risk-soft: rgb(239 68 68 / 10%);
|
|
74
|
-
--ag-gold: #fef3c7; /* Enterprise pill bg */
|
|
75
|
-
--ag-gold-line: #fde68a;
|
|
76
|
-
--ag-gold-text: #92400e;
|
|
77
|
-
--ag-shadow-card:
|
|
78
|
-
0 16px 38px rgb(15 23 42 / 12%),
|
|
79
|
-
0 0 0 1px rgb(15 23 42 / 6%),
|
|
80
|
-
0 1px 0 rgb(255 255 255 / 90%) inset; /* soft neutral floating shadow */
|
|
81
|
-
|
|
82
|
-
// ── Typography ───────────────────────────────────────────────────────
|
|
83
|
-
--ag-font: 'Inter', -apple-system, blinkmacsystemfont, sans-serif;
|
|
84
|
-
--ag-fs-cell: 13px;
|
|
85
|
-
--ag-fs-cell-secondary: 11.5px; /* role line, header labels */
|
|
86
|
-
--ag-fs-tiny: 10px; /* tags, page ellipsis */
|
|
87
|
-
--ag-fw-regular: 500;
|
|
88
|
-
--ag-fw-semibold: 600;
|
|
89
|
-
--ag-fw-bold: 700;
|
|
90
|
-
--ag-tracking-tight: -0.005em;
|
|
91
|
-
--ag-tracking-header: 0.05em; /* uppercase header labels */
|
|
92
|
-
--ag-leading: 1.4;
|
|
93
|
-
|
|
94
|
-
// ── Spacing & sizing ─────────────────────────────────────────────────
|
|
95
|
-
--ag-cell-pad-x: 10px;
|
|
96
|
-
--ag-row-h: 36px; /* dense but readable */
|
|
97
|
-
--ag-header-h: 40px; /* taller than rows to accommodate 3-icon header */
|
|
98
|
-
--ag-toolbar-pad: 12px 14px;
|
|
99
|
-
--ag-footer-pad: 10px 14px;
|
|
100
|
-
--ag-radius: 8px; /* outer card — tighter matches modern table libraries */
|
|
101
|
-
--ag-radius-sm: 6px; /* chips, page buttons */
|
|
102
|
-
--ag-radius-xs: 4px; /* checkboxes, expand button */
|
|
103
|
-
--ag-radius-pill: 20px; /* status badges */
|
|
104
|
-
|
|
105
|
-
// ── Motion ───────────────────────────────────────────────────────────
|
|
106
|
-
--ag-ease: cubic-bezier(0.2, 0.8, 0.2, 1);
|
|
107
|
-
--ag-dur-fast: 120ms; /* hover, focus */
|
|
108
|
-
--ag-dur-med: 180ms; /* chevron rotate */
|
|
109
|
-
--ag-dur-slow: 240ms; /* health bar fill */
|
|
110
|
-
}
|
|
111
|
-
|
|
112
|
-
// ─────────────────────────────────────────────────────────────────────────
|
|
113
|
-
// Built-in dark theme. Opt in with `<apex-grid theme="dark">`.
|
|
114
|
-
// Only color/surface tokens are flipped to a neutral slate palette; geometry,
|
|
115
|
-
// typography, motion, and the brand hue (which still auto-tints from the
|
|
116
|
-
// Ignite UI palette when present) are inherited from the light block above.
|
|
117
|
-
// `theme~='dark'` matches a space-separated word so `theme="dark compact"`
|
|
118
|
-
// style stacking keeps working. These tokens inherit across the shadow
|
|
119
|
-
// boundary to every child component, so the whole grid re-skins from here.
|
|
120
|
-
// ─────────────────────────────────────────────────────────────────────────
|
|
121
|
-
:host([theme~='dark']) {
|
|
122
|
-
// ── Brand ── brighter fallbacks so the accent reads on a dark surface;
|
|
123
|
-
// still re-tints from an Ignite UI palette first when it is present.
|
|
124
|
-
--ag-brand: var(--ig-primary-500, #3b82f6);
|
|
125
|
-
--ag-brand-strong: var(--ig-primary-400, #60a5fa);
|
|
126
|
-
|
|
127
|
-
// ── Surfaces ── flat, opaque slate (sticky regions paint these).
|
|
128
|
-
--ag-grid-bg: #0f172a; /* host card (flat in dark) */
|
|
129
|
-
--ag-surface: #0f172a; /* grid body / row bg */
|
|
130
|
-
--ag-surface-alt: var(--ag-surface); /* no stripes in dark mode either */
|
|
131
|
-
--ag-surface-elevated: #1e2532; /* header / footer / toolbar — slightly lifted */
|
|
132
|
-
|
|
133
|
-
// ── Chrome ── light-on-dark gridlines + a hover wash that mixes toward
|
|
134
|
-
// white (the light default mixes toward #0f172a, which is invisible here).
|
|
135
|
-
--ag-hairline: rgb(255 255 255 / 12%); /* structural gridlines */
|
|
136
|
-
--ag-border: rgb(255 255 255 / 12%); /* row separators — same weight as hairline */
|
|
137
|
-
--ag-pin-line: rgb(255 255 255 / 28%); /* 1px vertical line at pinned-column edge */
|
|
138
|
-
--ag-header-separator: rgb(255 255 255 / 18%); /* opt-in per-column header divider (columnSeparator) */
|
|
139
|
-
--ag-row-hover: color-mix(in srgb, #fff 7%, var(--ag-surface));
|
|
140
|
-
|
|
141
|
-
// ── Text ──
|
|
142
|
-
--ag-text: #f1f5f9; /* primary */
|
|
143
|
-
--ag-text-body: #e2e8f0; /* row text */
|
|
144
|
-
--ag-text-muted: #94a3b8; /* roles, labels */
|
|
145
|
-
--ag-text-subtle: #64748b; /* placeholder, ellipsis */
|
|
146
|
-
|
|
147
|
-
// ── State ── brighter text + slightly stronger washes for legibility on
|
|
148
|
-
// the dark surface.
|
|
149
|
-
--ag-good-text: #34d399;
|
|
150
|
-
--ag-good-soft: rgb(16 185 129 / 18%);
|
|
151
|
-
--ag-watch-text: #fbbf24;
|
|
152
|
-
--ag-watch-soft: rgb(245 158 11 / 18%);
|
|
153
|
-
--ag-risk-text: #f87171;
|
|
154
|
-
--ag-risk-soft: rgb(239 68 68 / 18%);
|
|
155
|
-
--ag-gold: rgb(245 158 11 / 16%); /* Enterprise pill bg (dark amber wash) */
|
|
156
|
-
--ag-gold-line: rgb(245 158 11 / 35%);
|
|
157
|
-
--ag-gold-text: #fcd34d;
|
|
158
|
-
|
|
159
|
-
// Drop the light-mode white inset highlight; deepen the drop shadow.
|
|
160
|
-
--ag-shadow-card:
|
|
161
|
-
0 16px 38px rgb(0 0 0 / 55%),
|
|
162
|
-
0 0 0 1px rgb(255 255 255 / 6%),
|
|
163
|
-
0 1px 0 rgb(255 255 255 / 4%) inset;
|
|
164
|
-
}
|
|
165
|
-
|
|
166
|
-
// ─────────────────────────────────────────────────────────────────────────
|
|
167
|
-
// Optional brand-tinted chrome. Opt in with `theme="tinted"` (composes with
|
|
168
|
-
// dark as `theme="dark tinted"`).
|
|
169
|
-
// By default the chrome is neutral grayscale and `--ag-brand` only shows on
|
|
170
|
-
// interactive state (selection, focus, active sort). This variant mixes a
|
|
171
|
-
// little brand into the surfaces/gridlines so the grid wears its brand even
|
|
172
|
-
// at rest, a brand-tinted variant. Because every value is `color-mix(... var
|
|
173
|
-
// (--ag-brand) ...)`, it follows whatever brand is in effect (including the
|
|
174
|
-
// Ignite UI auto-tint) with no per-brand CSS.
|
|
175
|
-
// The light variant mixes into the white neutrals; the dark variant (higher
|
|
176
|
-
// specificity, so it wins under `theme="dark tinted"`) mixes the SAME token
|
|
177
|
-
// set into the slate neutrals. Body row surface stays untinted for legibility.
|
|
178
|
-
// ─────────────────────────────────────────────────────────────────────────
|
|
179
|
-
:host([theme~='tinted']) {
|
|
180
|
-
--ag-surface-alt: color-mix(in srgb, var(--ag-brand) 4%, #fff); /* zebra */
|
|
181
|
-
--ag-surface-elevated: color-mix(in srgb, var(--ag-brand) 11%, #fbfcfd); /* header / footer / toolbar */
|
|
182
|
-
--ag-hairline: color-mix(in srgb, var(--ag-brand) 24%, rgb(15 23 42 / 7%)); /* gridlines */
|
|
183
|
-
--ag-border: color-mix(in srgb, var(--ag-brand) 12%, transparent); /* row separators */
|
|
184
|
-
--ag-row-hover: color-mix(in srgb, var(--ag-brand) 9%, var(--ag-surface));
|
|
185
|
-
--ag-text-muted: color-mix(in srgb, var(--ag-brand) 32%, #6b7280); /* header labels pick up the brand */
|
|
186
|
-
}
|
|
187
|
-
|
|
188
|
-
:host([theme~='dark'][theme~='tinted']) {
|
|
189
|
-
--ag-surface-alt: color-mix(in srgb, var(--ag-brand) 10%, #172033);
|
|
190
|
-
--ag-surface-elevated: color-mix(in srgb, var(--ag-brand) 20%, #1e293b);
|
|
191
|
-
--ag-hairline: color-mix(in srgb, var(--ag-brand) 30%, rgb(255 255 255 / 12%));
|
|
192
|
-
--ag-border: color-mix(in srgb, var(--ag-brand) 16%, rgb(255 255 255 / 7%));
|
|
193
|
-
--ag-row-hover: color-mix(in srgb, var(--ag-brand) 12%, var(--ag-surface));
|
|
194
|
-
--ag-text-muted: color-mix(in srgb, var(--ag-brand) 28%, #94a3b8);
|
|
195
|
-
}
|
|
196
|
-
|
|
197
|
-
// ─────────────────────────────────────────────────────────────────────────
|
|
198
|
-
// Reduced motion. Every transition in the grid is declared with one of the
|
|
199
|
-
// three `--ag-dur-*` tokens (nothing hardcodes a duration, and there are no
|
|
200
|
-
// keyframe animations), so zeroing them here is the whole opt-out: hover
|
|
201
|
-
// washes, focus rings, chevron rotation and bar fills all become instant while
|
|
202
|
-
// the end states stay identical. `prefers-reduced-motion` is a user request,
|
|
203
|
-
// not a preference we can override, hence no `--ag-*` escape hatch.
|
|
204
|
-
// A consumer that adds its own transitions inside the grid should either use
|
|
205
|
-
// these tokens or guard them the same way. Row reorder / expansion animations
|
|
206
|
-
// live in JS and already bail out (`internal/flip.ts`).
|
|
207
|
-
// ─────────────────────────────────────────────────────────────────────────
|
|
208
|
-
@media (prefers-reduced-motion: reduce) {
|
|
209
|
-
:host {
|
|
210
|
-
--ag-dur-fast: 0ms;
|
|
211
|
-
--ag-dur-med: 0ms;
|
|
212
|
-
--ag-dur-slow: 0ms;
|
|
213
|
-
}
|
|
214
|
-
}
|