@thilakbhat/heatmap-ui 0.1.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/LICENSE +21 -0
- package/README.md +471 -0
- package/dist/calendar.d.ts +40 -0
- package/dist/calendar.d.ts.map +1 -0
- package/dist/calendar.js +136 -0
- package/dist/calendar.js.map +1 -0
- package/dist/colors.d.ts +112 -0
- package/dist/colors.d.ts.map +1 -0
- package/dist/colors.js +186 -0
- package/dist/colors.js.map +1 -0
- package/dist/grid.d.ts +26 -0
- package/dist/grid.d.ts.map +1 -0
- package/dist/grid.js +102 -0
- package/dist/grid.js.map +1 -0
- package/dist/heatmap.d.ts +4 -0
- package/dist/heatmap.d.ts.map +1 -0
- package/dist/heatmap.js +134 -0
- package/dist/heatmap.js.map +1 -0
- package/dist/heatmap3d-patterns.d.ts +19 -0
- package/dist/heatmap3d-patterns.d.ts.map +1 -0
- package/dist/heatmap3d-patterns.js +57 -0
- package/dist/heatmap3d-patterns.js.map +1 -0
- package/dist/heatmap3d-scene.d.ts +49 -0
- package/dist/heatmap3d-scene.d.ts.map +1 -0
- package/dist/heatmap3d-scene.js +104 -0
- package/dist/heatmap3d-scene.js.map +1 -0
- package/dist/heatmap3d-visuals.d.ts +30 -0
- package/dist/heatmap3d-visuals.d.ts.map +1 -0
- package/dist/heatmap3d-visuals.js +50 -0
- package/dist/heatmap3d-visuals.js.map +1 -0
- package/dist/heatmap3d.d.ts +6 -0
- package/dist/heatmap3d.d.ts.map +1 -0
- package/dist/heatmap3d.js +268 -0
- package/dist/heatmap3d.js.map +1 -0
- package/dist/index.d.ts +11 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +11 -0
- package/dist/index.js.map +1 -0
- package/dist/projection3d.d.ts +29 -0
- package/dist/projection3d.d.ts.map +1 -0
- package/dist/projection3d.js +55 -0
- package/dist/projection3d.js.map +1 -0
- package/dist/scale.d.ts +21 -0
- package/dist/scale.d.ts.map +1 -0
- package/dist/scale.js +61 -0
- package/dist/scale.js.map +1 -0
- package/dist/shapes.d.ts +13 -0
- package/dist/shapes.d.ts.map +1 -0
- package/dist/shapes.js +63 -0
- package/dist/shapes.js.map +1 -0
- package/dist/static-svg.d.ts +45 -0
- package/dist/static-svg.d.ts.map +1 -0
- package/dist/static-svg.js +177 -0
- package/dist/static-svg.js.map +1 -0
- package/dist/types.d.ts +151 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +2 -0
- package/dist/types.js.map +1 -0
- package/docs/cover.png +0 -0
- package/docs/playground-2d.png +0 -0
- package/docs/playground-3d.png +0 -0
- package/package.json +61 -0
- package/src/styles.css +385 -0
package/src/styles.css
ADDED
|
@@ -0,0 +1,385 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Structural styles only. Colour comes from props, so the component drops into
|
|
3
|
+
* any design without a token layer to override. The few colours here belong to
|
|
4
|
+
* the tooltip, which needs contrast against the page rather than the data.
|
|
5
|
+
*/
|
|
6
|
+
.heatmap {
|
|
7
|
+
--heatmap-tooltip-bg: rgba(26, 24, 21, 0.97);
|
|
8
|
+
--heatmap-tooltip-text: #ffffff;
|
|
9
|
+
--heatmap-tooltip-border: rgba(255, 255, 255, 0.12);
|
|
10
|
+
--heatmap-tooltip-shadow: 0 12px 28px rgba(26, 24, 21, 0.22);
|
|
11
|
+
--heatmap-label: #57606a;
|
|
12
|
+
|
|
13
|
+
display: inline-flex;
|
|
14
|
+
flex-direction: column;
|
|
15
|
+
gap: 16px;
|
|
16
|
+
font-family: inherit;
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
.heatmap *,
|
|
20
|
+
.heatmap *::before,
|
|
21
|
+
.heatmap *::after {
|
|
22
|
+
box-sizing: border-box;
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
/*
|
|
26
|
+
* A 2x2 grid ties the label tracks to the cell grid: the column labels share a
|
|
27
|
+
* column with the cells, so they cannot drift out of alignment when the row
|
|
28
|
+
* label gutter changes width.
|
|
29
|
+
*/
|
|
30
|
+
.heatmap__body {
|
|
31
|
+
display: grid;
|
|
32
|
+
grid-template-columns: auto auto;
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
.heatmap__grid {
|
|
36
|
+
grid-area: 2 / 2;
|
|
37
|
+
position: relative;
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
.heatmap__cell-slot {
|
|
41
|
+
position: absolute;
|
|
42
|
+
display: grid;
|
|
43
|
+
place-items: center;
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
.heatmap__cell-slot[tabindex] {
|
|
47
|
+
cursor: default;
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
.heatmap__cell-slot[role="button"] {
|
|
51
|
+
cursor: pointer;
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
.heatmap__cell-slot:focus-visible {
|
|
55
|
+
outline: 2px solid currentColor;
|
|
56
|
+
outline-offset: 2px;
|
|
57
|
+
border-radius: 3px;
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
.heatmap__cell {
|
|
61
|
+
position: relative;
|
|
62
|
+
display: grid;
|
|
63
|
+
place-items: center;
|
|
64
|
+
overflow: hidden;
|
|
65
|
+
transition: transform 140ms ease-out, opacity 140ms ease-out;
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
.heatmap__cell-content {
|
|
69
|
+
position: absolute;
|
|
70
|
+
inset: 0;
|
|
71
|
+
z-index: 1;
|
|
72
|
+
display: grid;
|
|
73
|
+
place-items: center;
|
|
74
|
+
min-width: 0;
|
|
75
|
+
padding: 1px;
|
|
76
|
+
overflow: hidden;
|
|
77
|
+
font-weight: 500;
|
|
78
|
+
line-height: 1;
|
|
79
|
+
font-variant-numeric: tabular-nums;
|
|
80
|
+
text-align: center;
|
|
81
|
+
white-space: nowrap;
|
|
82
|
+
color: var(--heatmap-cell-content-color, currentColor);
|
|
83
|
+
pointer-events: none;
|
|
84
|
+
text-shadow: 0 1px 1px rgb(0 0 0 / 0.18);
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
.heatmap__cell-slot:hover .heatmap__cell,
|
|
88
|
+
.heatmap__cell-slot:focus-visible .heatmap__cell {
|
|
89
|
+
transform: scale(1.18);
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
/* Column labels sit above the cells, each centred on the column it names. */
|
|
93
|
+
.heatmap__column-labels {
|
|
94
|
+
grid-area: 1 / 2;
|
|
95
|
+
position: relative;
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
.heatmap__column-label {
|
|
99
|
+
position: absolute;
|
|
100
|
+
top: 0;
|
|
101
|
+
transform: translateX(-50%);
|
|
102
|
+
color: var(--heatmap-label);
|
|
103
|
+
font-size: 10px;
|
|
104
|
+
line-height: 1;
|
|
105
|
+
white-space: nowrap;
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
.heatmap__row-labels {
|
|
109
|
+
grid-area: 2 / 1;
|
|
110
|
+
/* Size the track to its widest label; the gutter is a margin, not a grid gap. */
|
|
111
|
+
margin-inline-end: 6px;
|
|
112
|
+
position: relative;
|
|
113
|
+
display: grid;
|
|
114
|
+
align-content: start;
|
|
115
|
+
width: max-content;
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
.heatmap__row-label {
|
|
119
|
+
display: flex;
|
|
120
|
+
align-items: center;
|
|
121
|
+
justify-content: flex-end;
|
|
122
|
+
color: var(--heatmap-label);
|
|
123
|
+
font-size: 10px;
|
|
124
|
+
line-height: 1;
|
|
125
|
+
white-space: nowrap;
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
.heatmap__legend {
|
|
129
|
+
display: flex;
|
|
130
|
+
align-items: center;
|
|
131
|
+
gap: 3px;
|
|
132
|
+
color: var(--heatmap-label);
|
|
133
|
+
font-size: 10px;
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
.heatmap__legend span:first-child {
|
|
137
|
+
margin-right: 2px;
|
|
138
|
+
}
|
|
139
|
+
|
|
140
|
+
.heatmap__legend-unknown {
|
|
141
|
+
margin-left: 0.5rem;
|
|
142
|
+
}
|
|
143
|
+
|
|
144
|
+
.heatmap__legend-swatch {
|
|
145
|
+
display: inline-block;
|
|
146
|
+
flex: none;
|
|
147
|
+
}
|
|
148
|
+
|
|
149
|
+
.heatmap__tooltip {
|
|
150
|
+
position: absolute;
|
|
151
|
+
bottom: calc(100% + 8px);
|
|
152
|
+
z-index: 20;
|
|
153
|
+
width: max-content;
|
|
154
|
+
max-width: 220px;
|
|
155
|
+
padding: 6px 9px;
|
|
156
|
+
border: 1px solid var(--heatmap-tooltip-border);
|
|
157
|
+
border-radius: 8px;
|
|
158
|
+
background: var(--heatmap-tooltip-bg);
|
|
159
|
+
box-shadow: var(--heatmap-tooltip-shadow);
|
|
160
|
+
color: var(--heatmap-tooltip-text);
|
|
161
|
+
font-size: 11px;
|
|
162
|
+
line-height: 1.45;
|
|
163
|
+
pointer-events: none;
|
|
164
|
+
}
|
|
165
|
+
|
|
166
|
+
.heatmap__tooltip[data-align="center"] {
|
|
167
|
+
left: 50%;
|
|
168
|
+
transform: translateX(-50%);
|
|
169
|
+
}
|
|
170
|
+
|
|
171
|
+
.heatmap__tooltip[data-align="start"] {
|
|
172
|
+
left: 0;
|
|
173
|
+
}
|
|
174
|
+
|
|
175
|
+
.heatmap__tooltip[data-align="end"] {
|
|
176
|
+
right: 0;
|
|
177
|
+
}
|
|
178
|
+
|
|
179
|
+
@media (prefers-color-scheme: dark) {
|
|
180
|
+
.heatmap:not([data-heatmap-theme="light"]) {
|
|
181
|
+
--heatmap-tooltip-bg: rgba(240, 238, 235, 0.97);
|
|
182
|
+
--heatmap-tooltip-text: #171614;
|
|
183
|
+
--heatmap-tooltip-border: rgba(0, 0, 0, 0.14);
|
|
184
|
+
--heatmap-label: #9a938a;
|
|
185
|
+
}
|
|
186
|
+
}
|
|
187
|
+
|
|
188
|
+
.heatmap[data-heatmap-theme="dark"] {
|
|
189
|
+
--heatmap-tooltip-bg: rgba(240, 238, 235, 0.97);
|
|
190
|
+
--heatmap-tooltip-text: #171614;
|
|
191
|
+
--heatmap-tooltip-border: rgba(0, 0, 0, 0.14);
|
|
192
|
+
--heatmap-label: #9a938a;
|
|
193
|
+
}
|
|
194
|
+
|
|
195
|
+
@media (prefers-reduced-motion: reduce) {
|
|
196
|
+
.heatmap__cell {
|
|
197
|
+
transition: none;
|
|
198
|
+
}
|
|
199
|
+
.heatmap__cell-slot:hover .heatmap__cell,
|
|
200
|
+
.heatmap__cell-slot:focus-visible .heatmap__cell {
|
|
201
|
+
transform: none;
|
|
202
|
+
}
|
|
203
|
+
}
|
|
204
|
+
|
|
205
|
+
/* Three-dimensional charts share the colour ramp and tooltip tokens with the
|
|
206
|
+
* flat grid. Neutral architecture lets the data provide the colour. */
|
|
207
|
+
.heatmap3d {
|
|
208
|
+
--heatmap3d-floor: #f0f1f3;
|
|
209
|
+
--heatmap3d-floor-edge: #d9dde2;
|
|
210
|
+
--heatmap3d-grid: #d9dde2;
|
|
211
|
+
--heatmap3d-ink: #7b838e;
|
|
212
|
+
--heatmap3d-window: #f7fff5;
|
|
213
|
+
position: relative;
|
|
214
|
+
display: flex;
|
|
215
|
+
width: 100%;
|
|
216
|
+
min-width: 0;
|
|
217
|
+
}
|
|
218
|
+
.heatmap3d__scene {
|
|
219
|
+
display: block;
|
|
220
|
+
width: 100%;
|
|
221
|
+
height: clamp(280px, 40vw, 440px);
|
|
222
|
+
overflow: hidden;
|
|
223
|
+
user-select: none;
|
|
224
|
+
-webkit-user-select: none;
|
|
225
|
+
}
|
|
226
|
+
.heatmap3d__scene[data-interactive="true"] { cursor: grab; touch-action: none; }
|
|
227
|
+
.heatmap3d__scene[data-dragging="true"] { cursor: grabbing; }
|
|
228
|
+
.heatmap3d__scene:focus-visible { outline: 2px solid var(--heatmap3d-ink); outline-offset: -3px; border-radius: 12px; }
|
|
229
|
+
.heatmap3d__floor-edge { fill: var(--heatmap3d-floor-edge); }
|
|
230
|
+
.heatmap3d__floor-surface { fill: var(--heatmap3d-floor); stroke: var(--heatmap3d-floor-edge); stroke-width: 0.7; }
|
|
231
|
+
.heatmap3d__grid-line { fill: none; stroke: var(--heatmap3d-grid); stroke-width: 0.45; opacity: 0.7; }
|
|
232
|
+
.heatmap3d__contact-shadow { fill: #111b2b; opacity: 0.13; }
|
|
233
|
+
.heatmap3d__surface { stroke: #ffffff30; stroke-width: 0.3; stroke-linejoin: round; }
|
|
234
|
+
.heatmap3d[data-shape="circle"] .heatmap3d__surface[data-face="left"],
|
|
235
|
+
.heatmap3d[data-shape="circle"] .heatmap3d__surface[data-face="right"] { stroke: none; }
|
|
236
|
+
.heatmap3d__window { fill: var(--heatmap3d-window); }
|
|
237
|
+
.heatmap3d__roof { fill: #07101b; fill-opacity: 0.11; stroke: #ffffff70; stroke-width: 0.45; stroke-linejoin: round; pointer-events: none; }
|
|
238
|
+
.heatmap3d__unknown { stroke: var(--heatmap3d-ink); stroke-width: 0.7; stroke-dasharray: 2 1.8; pointer-events: all; }
|
|
239
|
+
.heatmap3d__cell { outline: none; }
|
|
240
|
+
.heatmap3d__cell[role="button"] { cursor: pointer; }
|
|
241
|
+
.heatmap3d__cell[data-active="true"] .heatmap3d__surface,
|
|
242
|
+
.heatmap3d__cell:focus-visible .heatmap3d__surface { stroke: #fff; stroke-width: 1.15; }
|
|
243
|
+
.heatmap3d__cell[data-active="true"] .heatmap3d__unknown,
|
|
244
|
+
.heatmap3d__cell:focus-visible .heatmap3d__unknown { stroke: currentColor; stroke-width: 1.5; stroke-dasharray: none; }
|
|
245
|
+
.heatmap3d__cell:focus-visible { filter: drop-shadow(0 0 1px var(--heatmap3d-ink)); }
|
|
246
|
+
.heatmap3d__axis line { stroke: var(--heatmap3d-ink); stroke-width: 0.6; opacity: 0.65; }
|
|
247
|
+
.heatmap3d__axis text, .heatmap3d__labels text { fill: var(--heatmap3d-ink); font-family: inherit; font-size: 8px; }
|
|
248
|
+
.heatmap3d__labels, .heatmap3d__axis { pointer-events: none; }
|
|
249
|
+
.heatmap3d .heatmap3d__tooltip {
|
|
250
|
+
display: flex;
|
|
251
|
+
flex-direction: column;
|
|
252
|
+
gap: 3px;
|
|
253
|
+
bottom: auto;
|
|
254
|
+
right: auto;
|
|
255
|
+
padding: 9px 12px;
|
|
256
|
+
border-radius: 9px;
|
|
257
|
+
transform: translate(-50%, calc(-100% - 14px));
|
|
258
|
+
}
|
|
259
|
+
.heatmap3d .heatmap3d__tooltip[data-align="start"] { transform: translate(0, calc(-100% - 14px)); }
|
|
260
|
+
.heatmap3d .heatmap3d__tooltip[data-align="end"] { transform: translate(-100%, calc(-100% - 14px)); }
|
|
261
|
+
.heatmap3d__tooltip strong { font-size: 17px; font-variant-numeric: tabular-nums; line-height: 1.2; }
|
|
262
|
+
.heatmap3d__tooltip-label { opacity: 0.7; font-size: 10px; }
|
|
263
|
+
.heatmap3d__controls {
|
|
264
|
+
position: absolute;
|
|
265
|
+
right: 8px;
|
|
266
|
+
bottom: 8px;
|
|
267
|
+
display: flex;
|
|
268
|
+
gap: 2px;
|
|
269
|
+
padding: 3px;
|
|
270
|
+
border: 1px solid color-mix(in srgb, var(--heatmap3d-ink) 18%, transparent);
|
|
271
|
+
border-radius: 9px;
|
|
272
|
+
background: color-mix(in srgb, var(--heatmap3d-floor) 90%, transparent);
|
|
273
|
+
backdrop-filter: blur(8px);
|
|
274
|
+
}
|
|
275
|
+
.heatmap3d__controls button {
|
|
276
|
+
display: grid;
|
|
277
|
+
place-items: center;
|
|
278
|
+
min-width: 32px;
|
|
279
|
+
height: 32px;
|
|
280
|
+
padding: 0 7px;
|
|
281
|
+
border: 0;
|
|
282
|
+
border-radius: 5px;
|
|
283
|
+
background: transparent;
|
|
284
|
+
color: var(--heatmap3d-ink);
|
|
285
|
+
font-family: inherit;
|
|
286
|
+
font-size: 18px;
|
|
287
|
+
line-height: 1;
|
|
288
|
+
cursor: pointer;
|
|
289
|
+
}
|
|
290
|
+
.heatmap3d__controls button:hover { background: color-mix(in srgb, var(--heatmap3d-ink) 10%, transparent); }
|
|
291
|
+
.heatmap3d__controls button:disabled { opacity: 0.35; cursor: default; }
|
|
292
|
+
.heatmap3d__controls button:focus-visible { outline: 2px solid currentColor; outline-offset: 1px; }
|
|
293
|
+
.heatmap3d__reset svg { width: 15px; height: 15px; fill: none; stroke: currentColor; stroke-width: 1.35; stroke-linecap: round; stroke-linejoin: round; }
|
|
294
|
+
.heatmap3d__legend { justify-content: center; padding: 4px 0 10px; }
|
|
295
|
+
.heatmap3d__legend .heatmap__legend-swatch { width: 9px; height: 9px; border-radius: 2px; }
|
|
296
|
+
.heatmap3d__legend-unknown-swatch { width: 9px; height: 9px; border: 1px dashed var(--heatmap3d-ink); border-radius: 2px; }
|
|
297
|
+
.heatmap3d__static-legend text { fill: var(--heatmap3d-ink); font-family: inherit; font-size: 8px; }
|
|
298
|
+
.heatmap3d__sr-only { position: absolute; width: 1px; height: 1px; overflow: hidden; clip-path: inset(50%); white-space: nowrap; }
|
|
299
|
+
.heatmap3d[data-heatmap-theme="dark"] {
|
|
300
|
+
--heatmap3d-floor: #24272d;
|
|
301
|
+
--heatmap3d-floor-edge: #353a43;
|
|
302
|
+
--heatmap3d-grid: #3d424b;
|
|
303
|
+
--heatmap3d-ink: #a6afbc;
|
|
304
|
+
--heatmap3d-window: #ffd786;
|
|
305
|
+
}
|
|
306
|
+
@media (prefers-color-scheme: dark) {
|
|
307
|
+
.heatmap3d:not([data-heatmap-theme="light"]) {
|
|
308
|
+
--heatmap3d-floor: #24272d;
|
|
309
|
+
--heatmap3d-floor-edge: #353a43;
|
|
310
|
+
--heatmap3d-grid: #3d424b;
|
|
311
|
+
--heatmap3d-ink: #a6afbc;
|
|
312
|
+
--heatmap3d-window: #ffd786;
|
|
313
|
+
}
|
|
314
|
+
}
|
|
315
|
+
@media (pointer: coarse) {
|
|
316
|
+
.heatmap3d__controls button { min-width: 44px; height: 44px; }
|
|
317
|
+
}
|
|
318
|
+
@media (max-width: 540px) {
|
|
319
|
+
.heatmap3d__controls {
|
|
320
|
+
position: relative;
|
|
321
|
+
right: auto;
|
|
322
|
+
bottom: auto;
|
|
323
|
+
align-self: center;
|
|
324
|
+
margin: 0 0 12px;
|
|
325
|
+
}
|
|
326
|
+
.heatmap3d__legend { flex-wrap: wrap; }
|
|
327
|
+
}
|
|
328
|
+
|
|
329
|
+
/* A pattern is an overlay, so the resolved face colour remains visible below
|
|
330
|
+
* sparse bitmap marks. This also keeps custom bitmap patterns colour-agnostic. */
|
|
331
|
+
.heatmap3d__surface-base { stroke: none; }
|
|
332
|
+
|
|
333
|
+
/* Grow is an entrance explanation: the grid settles into its measured
|
|
334
|
+
* elevations in painter order. It is opt-in and uses transform/opacity only,
|
|
335
|
+
* so changing a value never causes the chart to jump in layout. */
|
|
336
|
+
@keyframes heatmap3d-grow {
|
|
337
|
+
from { opacity: 0; transform: translateY(4px) scale(0.97); }
|
|
338
|
+
to { opacity: 1; transform: translateY(0) scale(1); }
|
|
339
|
+
}
|
|
340
|
+
|
|
341
|
+
@keyframes heatmap3d-reduced-fade {
|
|
342
|
+
from { opacity: 0.45; }
|
|
343
|
+
to { opacity: 1; }
|
|
344
|
+
}
|
|
345
|
+
|
|
346
|
+
.heatmap3d[data-animation="grow"] .heatmap3d__cell[data-known="true"],
|
|
347
|
+
.heatmap3d__scene[data-animation="grow"] .heatmap3d__cell[data-known="true"] {
|
|
348
|
+
animation: heatmap3d-grow 240ms cubic-bezier(0.23, 1, 0.32, 1) both;
|
|
349
|
+
animation-delay: calc(min(var(--heatmap3d-index, 0), 32) * 26ms);
|
|
350
|
+
transform-box: fill-box;
|
|
351
|
+
transform-origin: center bottom;
|
|
352
|
+
}
|
|
353
|
+
|
|
354
|
+
/* Reduced motion preserves the arrival cue while removing spatial travel and
|
|
355
|
+
* all stagger. */
|
|
356
|
+
@media (prefers-reduced-motion: reduce) {
|
|
357
|
+
.heatmap3d[data-animation="grow"] .heatmap3d__cell[data-known="true"],
|
|
358
|
+
.heatmap3d__scene[data-animation="grow"] .heatmap3d__cell[data-known="true"] {
|
|
359
|
+
animation: heatmap3d-reduced-fade 160ms ease-out both;
|
|
360
|
+
animation-delay: 0ms;
|
|
361
|
+
transform: none;
|
|
362
|
+
}
|
|
363
|
+
}
|
|
364
|
+
|
|
365
|
+
/* The night preset owns its architectural neutrals even when the page itself
|
|
366
|
+
* is in light mode. */
|
|
367
|
+
.heatmap3d[data-heatmap3d-theme="night"],
|
|
368
|
+
.heatmap3d__scene[data-heatmap3d-theme="night"] {
|
|
369
|
+
--heatmap3d-floor: #24272d;
|
|
370
|
+
--heatmap3d-floor-edge: #353a43;
|
|
371
|
+
--heatmap3d-grid: #3d424b;
|
|
372
|
+
--heatmap3d-ink: #a6afbc;
|
|
373
|
+
--heatmap3d-window: #ffd786;
|
|
374
|
+
}
|
|
375
|
+
|
|
376
|
+
.heatmap3d[data-heatmap3d-theme="seasonal"],
|
|
377
|
+
.heatmap3d__scene[data-heatmap3d-theme="seasonal"] {
|
|
378
|
+
--heatmap3d-window: #fffaf0;
|
|
379
|
+
}
|
|
380
|
+
|
|
381
|
+
.heatmap3d[data-heatmap3d-theme="rainbow"],
|
|
382
|
+
.heatmap3d__scene[data-heatmap3d-theme="rainbow"] {
|
|
383
|
+
--heatmap3d-ink: #687080;
|
|
384
|
+
--heatmap3d-window: #fff8dd;
|
|
385
|
+
}
|