@lobehub/ui 5.63.0 → 5.63.1
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/es/ThemeProvider/GlobalStyle/essential.mjs +12 -0
- package/es/ThemeProvider/GlobalStyle/essential.mjs.map +1 -1
- package/es/base-ui/Table/style.mjs +81 -27
- package/es/base-ui/Table/style.mjs.map +1 -1
- package/es/base-ui/Text/style.d.mts +1 -1
- package/es/dashboard/ConsoleNav/style.mjs +2 -2
- package/es/dashboard/ConsoleNav/style.mjs.map +1 -1
- package/es/dashboard/FilterSidebar/style.mjs +2 -2
- package/es/dashboard/FilterSidebar/style.mjs.map +1 -1
- package/es/dashboard/FilterStrip/style.mjs +1 -1
- package/es/dashboard/FilterStrip/style.mjs.map +1 -1
- package/es/dashboard/MetricStrip/style.mjs +1 -1
- package/es/dashboard/MetricStrip/style.mjs.map +1 -1
- package/es/dashboard/PageSkeleton/style.mjs +1 -1
- package/es/dashboard/PageSkeleton/style.mjs.map +1 -1
- package/es/dashboard/Surface/link.d.mts +1 -1
- package/es/dashboard/Surface/link.mjs +1 -1
- package/es/dashboard/Surface/link.mjs.map +1 -1
- package/es/dashboard/Surface/style.d.mts +9 -8
- package/es/dashboard/Surface/style.mjs +19 -18
- package/es/dashboard/Surface/style.mjs.map +1 -1
- package/package.json +1 -1
|
@@ -12,6 +12,18 @@ var essential_default = (token) => css`
|
|
|
12
12
|
higher on purpose: a white hairline lightens toward a raised surface, and below ~16%
|
|
13
13
|
it lands on the surface's own colour and the edge vanishes. */
|
|
14
14
|
--lobe-ring: 0 0 0 1px ${token.isDarkMode ? "rgb(255 255 255 / 18%)" : "rgb(0 0 0 / 5%)"};
|
|
15
|
+
|
|
16
|
+
/* Hairline borders / dividers from the fill series (dashboard cards, base-ui Table):
|
|
17
|
+
light colorFill, dark one step quieter colorFillSecondary. Strong is one step louder;
|
|
18
|
+
light has no fill above colorFill, so it mixes toward colorText. */
|
|
19
|
+
--lobe-fill-border: ${token.isDarkMode ? token.colorFillSecondary : token.colorFill};
|
|
20
|
+
--lobe-fill-border-strong: ${token.isDarkMode ? token.colorFill : `color-mix(in srgb, ${token.colorFill}, ${token.colorText} 15%)`};
|
|
21
|
+
|
|
22
|
+
/* base-ui Table (outlined / filled) in dark: colorFillQuaternary on the clipped container,
|
|
23
|
+
cells clear so it shows through. Unset in light — each variant keeps its own background. */
|
|
24
|
+
${token.isDarkMode ? `--lobe-table-surface: ${token.colorFillQuaternary};
|
|
25
|
+
--lobe-table-cell-bg: transparent;
|
|
26
|
+
--lobe-table-canvas-default: ${token.colorBgLayout};` : ""}
|
|
15
27
|
}
|
|
16
28
|
|
|
17
29
|
@layer lobe-popup {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"essential.mjs","names":[],"sources":["../../../src/ThemeProvider/GlobalStyle/essential.ts"],"sourcesContent":["import { css, type Theme } from 'antd-style';\n\nimport { CLASSNAMES } from '@/styles/classNames';\n\n/**\n * Styles that library components rely on to render correctly (Flex layout,\n * popup trigger states, brand animations). Always injected by ThemeProvider,\n * independent of `enableGlobalStyle`, which only gates document-level resets.\n */\nexport default (token: Theme) => css`\n :root {\n /* Outer hairline painted on the page behind an elevated surface. Dark alpha is much\n higher on purpose: a white hairline lightens toward a raised surface, and below ~16%\n it lands on the surface's own colour and the edge vanishes. */\n --lobe-ring: 0 0 0 1px ${token.isDarkMode ? 'rgb(255 255 255 / 18%)' : 'rgb(0 0 0 / 5%)'};\n }\n\n @layer lobe-popup {\n .${CLASSNAMES.ContextTrigger}[data-popup-open],\n .${CLASSNAMES.DropdownMenuTrigger}[data-popup-open] {\n background: ${token.colorFillTertiary};\n }\n }\n\n @layer lobe-base {\n :where(.lobe-flex) {\n /* Define defaults on the element itself to avoid CSS variable inheritance leaking to nested Flex */\n --lobe-flex: 0 1 auto;\n --lobe-flex-direction: column;\n --lobe-flex-wrap: nowrap;\n --lobe-flex-justify: flex-start;\n --lobe-flex-align: stretch;\n --lobe-flex-width: auto;\n --lobe-flex-height: auto;\n --lobe-flex-padding: 0;\n\n /* Keep padding-inline/block aligned with padding by default, and prevent inheriting from parent */\n --lobe-flex-padding-inline: var(--lobe-flex-padding);\n --lobe-flex-padding-block: var(--lobe-flex-padding);\n --lobe-flex-gap: 0;\n\n display: flex;\n flex: var(--lobe-flex);\n flex-flow: var(--lobe-flex-direction) var(--lobe-flex-wrap);\n gap: var(--lobe-flex-gap);\n align-items: var(--lobe-flex-align);\n justify-content: var(--lobe-flex-justify);\n\n width: var(--lobe-flex-width);\n height: var(--lobe-flex-height);\n padding: var(--lobe-flex-padding);\n padding-block: var(--lobe-flex-padding-block);\n padding-inline: var(--lobe-flex-padding-inline);\n }\n\n .lobe-flex-hidden {\n display: none;\n }\n }\n\n /* Brand Loading */\n @keyframes draw {\n 0% {\n stroke-dashoffset: 1000;\n }\n\n 100% {\n stroke-dashoffset: 0;\n }\n }\n\n @keyframes fill {\n 30% {\n fill-opacity: 0.05;\n }\n\n 100% {\n fill-opacity: 1;\n }\n }\n\n .lobe-brand-loading path {\n fill: currentcolor;\n fill-opacity: 0;\n stroke: currentcolor;\n stroke-dasharray: 1000;\n stroke-dashoffset: 1000;\n stroke-width: 0.25em;\n\n animation:\n draw 2s cubic-bezier(0.4, 0, 0.2, 1) infinite,\n fill 2s cubic-bezier(0.4, 0, 0.2, 1) infinite;\n }\n`;\n"],"mappings":";;;;;;;;AASA,IAAA,qBAAgB,UAAiB,GAAG;;;;;6BAKP,MAAM,aAAa,2BAA2B,kBAAkB;;;;
|
|
1
|
+
{"version":3,"file":"essential.mjs","names":[],"sources":["../../../src/ThemeProvider/GlobalStyle/essential.ts"],"sourcesContent":["import { css, type Theme } from 'antd-style';\n\nimport { CLASSNAMES } from '@/styles/classNames';\n\n/**\n * Styles that library components rely on to render correctly (Flex layout,\n * popup trigger states, brand animations). Always injected by ThemeProvider,\n * independent of `enableGlobalStyle`, which only gates document-level resets.\n */\nexport default (token: Theme) => css`\n :root {\n /* Outer hairline painted on the page behind an elevated surface. Dark alpha is much\n higher on purpose: a white hairline lightens toward a raised surface, and below ~16%\n it lands on the surface's own colour and the edge vanishes. */\n --lobe-ring: 0 0 0 1px ${token.isDarkMode ? 'rgb(255 255 255 / 18%)' : 'rgb(0 0 0 / 5%)'};\n\n /* Hairline borders / dividers from the fill series (dashboard cards, base-ui Table):\n light colorFill, dark one step quieter colorFillSecondary. Strong is one step louder;\n light has no fill above colorFill, so it mixes toward colorText. */\n --lobe-fill-border: ${token.isDarkMode ? token.colorFillSecondary : token.colorFill};\n --lobe-fill-border-strong: ${\n token.isDarkMode\n ? token.colorFill\n : `color-mix(in srgb, ${token.colorFill}, ${token.colorText} 15%)`\n };\n\n /* base-ui Table (outlined / filled) in dark: colorFillQuaternary on the clipped container,\n cells clear so it shows through. Unset in light — each variant keeps its own background. */\n ${\n token.isDarkMode\n ? `--lobe-table-surface: ${token.colorFillQuaternary};\n --lobe-table-cell-bg: transparent;\n --lobe-table-canvas-default: ${token.colorBgLayout};`\n : ''\n }\n }\n\n @layer lobe-popup {\n .${CLASSNAMES.ContextTrigger}[data-popup-open],\n .${CLASSNAMES.DropdownMenuTrigger}[data-popup-open] {\n background: ${token.colorFillTertiary};\n }\n }\n\n @layer lobe-base {\n :where(.lobe-flex) {\n /* Define defaults on the element itself to avoid CSS variable inheritance leaking to nested Flex */\n --lobe-flex: 0 1 auto;\n --lobe-flex-direction: column;\n --lobe-flex-wrap: nowrap;\n --lobe-flex-justify: flex-start;\n --lobe-flex-align: stretch;\n --lobe-flex-width: auto;\n --lobe-flex-height: auto;\n --lobe-flex-padding: 0;\n\n /* Keep padding-inline/block aligned with padding by default, and prevent inheriting from parent */\n --lobe-flex-padding-inline: var(--lobe-flex-padding);\n --lobe-flex-padding-block: var(--lobe-flex-padding);\n --lobe-flex-gap: 0;\n\n display: flex;\n flex: var(--lobe-flex);\n flex-flow: var(--lobe-flex-direction) var(--lobe-flex-wrap);\n gap: var(--lobe-flex-gap);\n align-items: var(--lobe-flex-align);\n justify-content: var(--lobe-flex-justify);\n\n width: var(--lobe-flex-width);\n height: var(--lobe-flex-height);\n padding: var(--lobe-flex-padding);\n padding-block: var(--lobe-flex-padding-block);\n padding-inline: var(--lobe-flex-padding-inline);\n }\n\n .lobe-flex-hidden {\n display: none;\n }\n }\n\n /* Brand Loading */\n @keyframes draw {\n 0% {\n stroke-dashoffset: 1000;\n }\n\n 100% {\n stroke-dashoffset: 0;\n }\n }\n\n @keyframes fill {\n 30% {\n fill-opacity: 0.05;\n }\n\n 100% {\n fill-opacity: 1;\n }\n }\n\n .lobe-brand-loading path {\n fill: currentcolor;\n fill-opacity: 0;\n stroke: currentcolor;\n stroke-dasharray: 1000;\n stroke-dashoffset: 1000;\n stroke-width: 0.25em;\n\n animation:\n draw 2s cubic-bezier(0.4, 0, 0.2, 1) infinite,\n fill 2s cubic-bezier(0.4, 0, 0.2, 1) infinite;\n }\n`;\n"],"mappings":";;;;;;;;AASA,IAAA,qBAAgB,UAAiB,GAAG;;;;;6BAKP,MAAM,aAAa,2BAA2B,kBAAkB;;;;;0BAKnE,MAAM,aAAa,MAAM,qBAAqB,MAAM,UAAU;iCAElF,MAAM,aACF,MAAM,YACN,sBAAsB,MAAM,UAAU,IAAI,MAAM,UAAU,OAC/D;;;;MAKC,MAAM,aACF,yBAAyB,MAAM,oBAAoB;;mCAE1B,MAAM,cAAc,KAC7C,GACL;;;;OAIE,WAAW,eAAe;SACxB,WAAW,oBAAoB;oBACpB,MAAM,kBAAkB"}
|
|
@@ -15,7 +15,21 @@ const ownRows = [
|
|
|
15
15
|
].map((section) => `& > ${p}-container > ${p}-${section} > table > * > tr`).join(", ");
|
|
16
16
|
const ownCells = (cell) => ownRows.split(", ").map((row) => `${row} > ${cell}`).join(", ");
|
|
17
17
|
const styles = createStaticStyles(({ css, cssVar }) => {
|
|
18
|
-
const
|
|
18
|
+
const borderColor = `var(--lobe-fill-border, ${cssVar.colorFill})`;
|
|
19
|
+
const border = `1px solid ${borderColor}`;
|
|
20
|
+
const surface = (light) => `var(--lobe-table-surface, ${light})`;
|
|
21
|
+
const cellBg = `var(--lobe-table-cell, ${cssVar.colorBgContainer})`;
|
|
22
|
+
const fill = "var(--lobe-table-fill, transparent)";
|
|
23
|
+
const solid = "var(--lobe-table-solid)";
|
|
24
|
+
const solidWith = (...fills) => `${fills.map((f) => `linear-gradient(${f}, ${f})`).join(", ")}, ${solid}`;
|
|
25
|
+
const variantVars = `
|
|
26
|
+
--lobe-table-solid: var(
|
|
27
|
+
--lobe-table-canvas,
|
|
28
|
+
var(--lobe-surface-bg-solid, var(--lobe-table-canvas-default, ${cssVar.colorBgContainer}))
|
|
29
|
+
);
|
|
30
|
+
--lobe-table-cell: var(--lobe-table-cell-bg, ${cssVar.colorBgContainer});
|
|
31
|
+
--lobe-table-fill: var(--lobe-table-surface, transparent);
|
|
32
|
+
`;
|
|
19
33
|
const fixShadowBase = `
|
|
20
34
|
pointer-events: none;
|
|
21
35
|
content: '';
|
|
@@ -29,16 +43,18 @@ const styles = createStaticStyles(({ css, cssVar }) => {
|
|
|
29
43
|
return {
|
|
30
44
|
outlined: css`
|
|
31
45
|
&${p}-outlined {
|
|
32
|
-
|
|
33
|
-
|
|
46
|
+
${variantVars}
|
|
47
|
+
/* The square root must not paint behind the rounded frame: the clipped container
|
|
48
|
+
is the ONE layer carrying the body (light colorBgContainer, dark
|
|
49
|
+
colorFillQuaternary). Title / footer are siblings, so they paint it once too. */
|
|
34
50
|
background: transparent;
|
|
35
51
|
|
|
36
52
|
& > ${p}-container {
|
|
37
|
-
background: ${cssVar.colorBgContainer};
|
|
53
|
+
background: ${surface(cssVar.colorBgContainer)};
|
|
38
54
|
}
|
|
39
55
|
|
|
40
56
|
& > ${p}-title, & > ${p}-footer {
|
|
41
|
-
background: ${cssVar.colorBgContainer};
|
|
57
|
+
background: ${surface(cssVar.colorBgContainer)};
|
|
42
58
|
}
|
|
43
59
|
|
|
44
60
|
& > ${p}-title {
|
|
@@ -52,9 +68,14 @@ const styles = createStaticStyles(({ css, cssVar }) => {
|
|
|
52
68
|
No column dividers (grouped headers included): rows are split horizontally only. */
|
|
53
69
|
& > ${p}-container {
|
|
54
70
|
overflow: clip;
|
|
71
|
+
|
|
55
72
|
border-block-start: ${border};
|
|
56
73
|
border-inline: ${border};
|
|
57
74
|
border-radius: ${cssVar.borderRadiusLG};
|
|
75
|
+
|
|
76
|
+
/* Same lift as the dashboard Surface card (both modes). Outer shadow on the framed
|
|
77
|
+
container is not clipped by its own overflow. */
|
|
78
|
+
box-shadow: rgb(0 0 0 / 4%) 0 1px 2px 0;
|
|
58
79
|
}
|
|
59
80
|
|
|
60
81
|
& > ${p}-title + ${p}-container {
|
|
@@ -78,17 +99,43 @@ const styles = createStaticStyles(({ css, cssVar }) => {
|
|
|
78
99
|
shadow underneath, or group headers look double-thick. */
|
|
79
100
|
& > ${p}-container > * > table > thead > tr > th {
|
|
80
101
|
border-block-end: ${border};
|
|
102
|
+
|
|
103
|
+
/* Extra FillQuaternary layer on top of the container fill. */
|
|
104
|
+
background: ${cellBg};
|
|
105
|
+
box-shadow: inset 0 999px 0 ${cssVar.colorFillQuaternary};
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
/* Fixed cells: opaque canvas (--lobe-table-solid) + the container fill once. */
|
|
109
|
+
& ${p}-tbody > tr > td${p}-cell-fix, & ${p}-tbody-virtual ${p}-cell${p}-cell-fix {
|
|
110
|
+
background: ${solidWith(fill)};
|
|
111
|
+
box-shadow: none;
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
/* Header: container fill + one Quaternary wash (box-shadow), like other th. */
|
|
115
|
+
& ${p}-thead > tr > th${p}-cell-fix, & ${p}-thead > tr > td${p}-cell-fix {
|
|
116
|
+
background: ${solidWith(fill)};
|
|
81
117
|
box-shadow: inset 0 999px 0 ${cssVar.colorFillQuaternary};
|
|
82
118
|
}
|
|
83
119
|
}
|
|
84
120
|
`,
|
|
85
121
|
filled: css`
|
|
86
122
|
&${p}-filled {
|
|
123
|
+
${variantVars}
|
|
124
|
+
/* Filled owns its fill in both modes (Block filled = colorFillTertiary; dark uses the
|
|
125
|
+
Quaternary surface) and its opaque base is the page behind it, not colorBgContainer. */
|
|
126
|
+
--lobe-table-fill: var(--lobe-table-surface, ${cssVar.colorFillTertiary});
|
|
127
|
+
--lobe-table-solid: var(
|
|
128
|
+
--lobe-table-canvas,
|
|
129
|
+
var(--lobe-surface-bg-solid, ${cssVar.colorBgLayout})
|
|
130
|
+
);
|
|
131
|
+
|
|
132
|
+
/* Root stays clear (square box, would bleed past the rounded corners); the clipped
|
|
133
|
+
container is the ONE fill layer: light FillTertiary, dark colorFillQuaternary. */
|
|
87
134
|
background: transparent;
|
|
88
135
|
|
|
89
136
|
& > ${p}-title, & > ${p}-footer {
|
|
90
137
|
border-radius: ${cssVar.borderRadiusLG};
|
|
91
|
-
background: ${
|
|
138
|
+
background: ${fill};
|
|
92
139
|
}
|
|
93
140
|
|
|
94
141
|
& > ${p}-title {
|
|
@@ -104,7 +151,7 @@ const styles = createStaticStyles(({ css, cssVar }) => {
|
|
|
104
151
|
& > ${p}-container {
|
|
105
152
|
overflow: clip;
|
|
106
153
|
border-radius: ${cssVar.borderRadiusLG};
|
|
107
|
-
background: ${
|
|
154
|
+
background: ${fill};
|
|
108
155
|
}
|
|
109
156
|
|
|
110
157
|
& > ${p}-title + ${p}-container {
|
|
@@ -117,36 +164,33 @@ const styles = createStaticStyles(({ css, cssVar }) => {
|
|
|
117
164
|
border-end-end-radius: 0;
|
|
118
165
|
}
|
|
119
166
|
|
|
120
|
-
/* Header band:
|
|
121
|
-
second FillTertiary made dark mode too bright). */
|
|
167
|
+
/* Header band: one extra FillQuaternary wash over the container fill. */
|
|
122
168
|
& ${p}-thead > tr > th,
|
|
123
169
|
& ${p}-thead > tr > td {
|
|
124
170
|
background: transparent;
|
|
125
171
|
box-shadow:
|
|
126
|
-
inset 0 -1px 0 ${
|
|
172
|
+
inset 0 -1px 0 ${borderColor},
|
|
127
173
|
inset 0 999px 0 ${cssVar.colorFillQuaternary};
|
|
128
174
|
}
|
|
129
175
|
|
|
130
|
-
/* Row dividers stay on (base
|
|
176
|
+
/* Row dividers stay on (base border rule); body is clear over the container fill. */
|
|
131
177
|
& ${p}-tbody > tr > td,
|
|
132
178
|
& ${p}-tbody > tr > th,
|
|
133
179
|
& ${p}-tbody-virtual ${p}-cell {
|
|
134
180
|
background: transparent;
|
|
135
181
|
}
|
|
136
182
|
|
|
137
|
-
/* Fixed cells must be opaque:
|
|
138
|
-
closest opaque match to the translucent surface around them. */
|
|
183
|
+
/* Fixed cells must be opaque: canvas (--lobe-table-solid) + the same fill; header adds one wash. */
|
|
139
184
|
& ${p}-thead > tr > th${p}-cell-fix, & ${p}-thead > tr > td${p}-cell-fix {
|
|
140
|
-
background: ${
|
|
185
|
+
background: ${solidWith(fill)};
|
|
141
186
|
box-shadow:
|
|
142
|
-
inset 0 -1px 0 ${
|
|
143
|
-
inset 0 999px 0 ${cssVar.colorFillQuaternary}
|
|
144
|
-
inset 0 999px 0 ${cssVar.colorFillTertiary};
|
|
187
|
+
inset 0 -1px 0 ${borderColor},
|
|
188
|
+
inset 0 999px 0 ${cssVar.colorFillQuaternary};
|
|
145
189
|
}
|
|
146
190
|
|
|
147
191
|
& ${p}-tbody > tr > td${p}-cell-fix {
|
|
148
|
-
background: ${
|
|
149
|
-
box-shadow:
|
|
192
|
+
background: ${solidWith(fill)};
|
|
193
|
+
box-shadow: none;
|
|
150
194
|
}
|
|
151
195
|
}
|
|
152
196
|
`,
|
|
@@ -385,7 +429,7 @@ const styles = createStaticStyles(({ css, cssVar }) => {
|
|
|
385
429
|
|
|
386
430
|
width: 100%;
|
|
387
431
|
min-width: 0;
|
|
388
|
-
border-block-end: 1px solid ${
|
|
432
|
+
border-block-end: 1px solid ${borderColor};
|
|
389
433
|
|
|
390
434
|
&:last-child {
|
|
391
435
|
border-block-end: 0;
|
|
@@ -484,6 +528,11 @@ const styles = createStaticStyles(({ css, cssVar }) => {
|
|
|
484
528
|
position: relative;
|
|
485
529
|
`,
|
|
486
530
|
table: css`
|
|
531
|
+
/* Reset per root so nested / borderless tables never inherit a parent's variant vars. */
|
|
532
|
+
--lobe-table-cell: ${cssVar.colorBgContainer};
|
|
533
|
+
--lobe-table-fill: transparent;
|
|
534
|
+
--lobe-table-solid: ${cssVar.colorBgContainer};
|
|
535
|
+
|
|
487
536
|
font-size: 14px;
|
|
488
537
|
color: ${cssVar.colorText};
|
|
489
538
|
background: ${cssVar.colorBgContainer};
|
|
@@ -513,9 +562,10 @@ const styles = createStaticStyles(({ css, cssVar }) => {
|
|
|
513
562
|
color: ${cssVar.colorTextSecondary};
|
|
514
563
|
text-align: start;
|
|
515
564
|
|
|
516
|
-
|
|
565
|
+
/* Clear in dark (outlined) so the container fill shows; Quaternary is the extra header layer. */
|
|
566
|
+
background: ${cellBg};
|
|
517
567
|
box-shadow:
|
|
518
|
-
inset 0 -1px 0 ${
|
|
568
|
+
inset 0 -1px 0 ${borderColor},
|
|
519
569
|
inset 0 999px 0 ${cssVar.colorFillQuaternary};
|
|
520
570
|
|
|
521
571
|
&[colspan]:not([colspan='1']) {
|
|
@@ -532,7 +582,8 @@ const styles = createStaticStyles(({ css, cssVar }) => {
|
|
|
532
582
|
font-variant-numeric: tabular-nums;
|
|
533
583
|
text-align: start;
|
|
534
584
|
|
|
535
|
-
|
|
585
|
+
/* Clear in dark (outlined) so the container fill shows through. */
|
|
586
|
+
background: ${cellBg};
|
|
536
587
|
|
|
537
588
|
transition: background-color ${cssVar.motionDurationMid};
|
|
538
589
|
}
|
|
@@ -664,7 +715,7 @@ const styles = createStaticStyles(({ css, cssVar }) => {
|
|
|
664
715
|
& ${p}-sticky-holder {
|
|
665
716
|
position: sticky;
|
|
666
717
|
z-index: calc(var(--columns-count, 1) * 2 + ${Z_FIXED} + 1);
|
|
667
|
-
background: ${
|
|
718
|
+
background: ${solidWith(fill)};
|
|
668
719
|
}
|
|
669
720
|
|
|
670
721
|
& ${p}-sticky-scroll {
|
|
@@ -808,6 +859,7 @@ const styles = createStaticStyles(({ css, cssVar }) => {
|
|
|
808
859
|
border-block: 0;
|
|
809
860
|
border-inline-end: 0;
|
|
810
861
|
border-radius: 0;
|
|
862
|
+
box-shadow: none;
|
|
811
863
|
}
|
|
812
864
|
|
|
813
865
|
& > ${p}-title + ${p}-container {
|
|
@@ -828,7 +880,9 @@ const styles = createStaticStyles(({ css, cssVar }) => {
|
|
|
828
880
|
& ${p}-summary {
|
|
829
881
|
position: relative;
|
|
830
882
|
z-index: ${Z_FIXED};
|
|
831
|
-
|
|
883
|
+
|
|
884
|
+
/* Opaque: canvas + the variant fill once. */
|
|
885
|
+
background: ${solidWith(fill)};
|
|
832
886
|
|
|
833
887
|
& > tr > th,
|
|
834
888
|
& > tr > td {
|
|
@@ -837,7 +891,7 @@ const styles = createStaticStyles(({ css, cssVar }) => {
|
|
|
837
891
|
}
|
|
838
892
|
|
|
839
893
|
& div${p}-summary {
|
|
840
|
-
box-shadow: 0 -1px 0 ${
|
|
894
|
+
box-shadow: 0 -1px 0 ${borderColor};
|
|
841
895
|
}
|
|
842
896
|
|
|
843
897
|
/* A fixed summary under \`sticky\` is a sticky holder too; keep it sticky (antd orders sticky last). */
|
|
@@ -871,7 +925,7 @@ const styles = createStaticStyles(({ css, cssVar }) => {
|
|
|
871
925
|
|
|
872
926
|
& ${p}-cell {
|
|
873
927
|
border-block-end: ${border};
|
|
874
|
-
background: ${
|
|
928
|
+
background: ${cellBg};
|
|
875
929
|
transition: background-color ${cssVar.motionDurationMid};
|
|
876
930
|
}
|
|
877
931
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"style.mjs","names":[],"sources":["../../../src/base-ui/Table/style.ts"],"sourcesContent":["import { createStaticStyles } from 'antd-style';\n\n/** Own prefix so rc-table classNames never collide with antd's global `.ant-table` CSS. */\nexport const PREFIX_CLS = 'lobe-table';\n\nconst p = `.${PREFIX_CLS}`;\n\n// Cell padding comes from the size class through these vars, so title / footer / expanded rows\n// can reuse (and negate) it.\nconst PADDING_BLOCK = '--lobe-table-padding-block';\nconst PADDING_INLINE = '--lobe-table-padding-inline';\n\n// Matches antd's `zIndexTableFixed`.\nconst Z_FIXED = 2;\n\n// antd `expandColumnWidth`; nested tables start after it.\nexport const EXPAND_COLUMN_WIDTH = 48;\n\n// antd `selectionColumnWidth`, plus the `selections` trigger when there is one.\nexport const SELECTION_COLUMN_WIDTH = 32;\nexport const SELECTION_DROPDOWN_WIDTH = 24;\n\n/** Rows of this table's own sections only, so the rules never leak into nested tables. */\nconst ownRows = ['content', 'header', 'body', 'summary']\n .map((section) => `& > ${p}-container > ${p}-${section} > table > * > tr`)\n .join(', ');\nconst ownCells = (cell: string) =>\n ownRows\n .split(', ')\n .map((row) => `${row} > ${cell}`)\n .join(', ');\n\nexport const styles = createStaticStyles(({ css, cssVar }) => {\n const border = `1px solid ${cssVar.colorBorderSecondary}`;\n const fixShadowBase = `\n pointer-events: none;\n content: '';\n position: absolute;\n inset-block: 0 -1px;\n width: 30px;\n transition: box-shadow ${cssVar.motionDurationSlow};\n `;\n const startShadow = `box-shadow: inset 10px 0 8px -8px ${cssVar.colorSplit};`;\n const endShadow = `box-shadow: inset -10px 0 8px -8px ${cssVar.colorSplit};`;\n\n return {\n outlined: css`\n &${p}-outlined {\n /* The square root must not paint behind the rounded frame: the container\n (clipped to its radius) carries the colorBgContainer body instead. */\n background: transparent;\n\n & > ${p}-container {\n background: ${cssVar.colorBgContainer};\n }\n\n & > ${p}-title, & > ${p}-footer {\n background: ${cssVar.colorBgContainer};\n }\n\n & > ${p}-title {\n border: ${border};\n border-block-end: 0;\n border-start-start-radius: ${cssVar.borderRadiusLG};\n border-start-end-radius: ${cssVar.borderRadiusLG};\n }\n\n /* The container draws the top and both side edges; the last row draws the bottom.\n No column dividers (grouped headers included): rows are split horizontally only. */\n & > ${p}-container {\n overflow: clip;\n border-block-start: ${border};\n border-inline: ${border};\n border-radius: ${cssVar.borderRadiusLG};\n }\n\n & > ${p}-title + ${p}-container {\n border-start-start-radius: 0;\n border-start-end-radius: 0;\n }\n\n &:has(> ${p}-footer) > ${p}-container {\n border-end-start-radius: 0;\n border-end-end-radius: 0;\n }\n\n & > ${p}-footer {\n border: ${border};\n border-block-start: 0;\n border-end-start-radius: ${cssVar.borderRadiusLG};\n border-end-end-radius: ${cssVar.borderRadiusLG};\n }\n\n /* Every header row (including the last) draws one bottom edge — no inset\n shadow underneath, or group headers look double-thick. */\n & > ${p}-container > * > table > thead > tr > th {\n border-block-end: ${border};\n box-shadow: inset 0 999px 0 ${cssVar.colorFillQuaternary};\n }\n }\n `,\n\n /* Mirrors Block \\`filled\\`: one colorFillTertiary surface straight on the parent (no\n colorBgContainer underneath, no stacked header fill) and no frame border. */\n filled: css`\n &${p}-filled {\n background: transparent;\n\n & > ${p}-title, & > ${p}-footer {\n border-radius: ${cssVar.borderRadiusLG};\n background: ${cssVar.colorFillQuaternary};\n }\n\n & > ${p}-title {\n border-end-start-radius: 0;\n border-end-end-radius: 0;\n }\n\n & > ${p}-footer {\n border-start-start-radius: 0;\n border-start-end-radius: 0;\n }\n\n & > ${p}-container {\n overflow: clip;\n border-radius: ${cssVar.borderRadiusLG};\n background: ${cssVar.colorFillTertiary};\n }\n\n & > ${p}-title + ${p}-container {\n border-start-start-radius: 0;\n border-start-end-radius: 0;\n }\n\n &:has(> ${p}-footer) > ${p}-container {\n border-end-start-radius: 0;\n border-end-end-radius: 0;\n }\n\n /* Header band: only the FillQuaternary wash over the container fill (stacking a\n second FillTertiary made dark mode too bright). */\n & ${p}-thead > tr > th,\n & ${p}-thead > tr > td {\n background: transparent;\n box-shadow:\n inset 0 -1px 0 ${cssVar.colorBorderSecondary},\n inset 0 999px 0 ${cssVar.colorFillQuaternary};\n }\n\n /* Row dividers stay on (base colorBorderSecondary rule); only the fill is the container's. */\n & ${p}-tbody > tr > td,\n & ${p}-tbody > tr > th,\n & ${p}-tbody-virtual ${p}-cell {\n background: transparent;\n }\n\n /* Fixed cells must be opaque: colorBgContainer painted with the same fill(s), the\n closest opaque match to the translucent surface around them. */\n & ${p}-thead > tr > th${p}-cell-fix, & ${p}-thead > tr > td${p}-cell-fix {\n background: ${cssVar.colorBgContainer};\n box-shadow:\n inset 0 -1px 0 ${cssVar.colorBorderSecondary},\n inset 0 999px 0 ${cssVar.colorFillQuaternary},\n inset 0 999px 0 ${cssVar.colorFillTertiary};\n }\n\n & ${p}-tbody > tr > td${p}-cell-fix {\n background: ${cssVar.colorBgContainer};\n box-shadow: inset 0 999px 0 ${cssVar.colorFillTertiary};\n }\n }\n `,\n /**\n * Borderless: everything but the header is see-through, so the table sits on whatever\n * surface hosts it. Hover / selected rows are translucent fills. Fixed (sticky) cells\n * stay opaque in colorBgContainer so scrolled content never shows underneath them.\n */\n borderless: css`\n && {\n background: transparent;\n }\n\n && ${p}-tbody > tr > td,\n && ${p}-tbody > tr > th,\n && ${p}-tbody-virtual ${p}-cell, && ${p}-summary, && ${p}-summary > tr > td,\n && ${p}-summary > tr > th,\n && > ${p}-footer {\n background: transparent;\n }\n\n && ${p}-tbody > tr > td${p}-cell-row-hover, && ${p}-tbody-virtual ${p}-row:hover > ${p}-cell {\n background: color-mix(in srgb, ${cssVar.colorText} 3%, transparent);\n }\n\n && ${p}-tbody > tr${p}-row-selected > td {\n background: color-mix(in srgb, ${cssVar.colorPrimary} 6%, transparent);\n\n &${p}-cell-row-hover {\n background: color-mix(in srgb, ${cssVar.colorPrimary} 10%, transparent);\n }\n }\n\n &&\n ${p}-tbody\n > tr\n > td${p}-cell-fix,\n &&\n ${p}-tbody\n > tr\n > th${p}-cell-fix,\n &&\n ${p}-tbody-virtual\n ${p}-cell${p}-cell-fix {\n background: ${cssVar.colorBgContainer};\n }\n\n && ${p}-tbody > tr > td${p}-cell-fix${p}-cell-row-hover {\n background: color-mix(in srgb, ${cssVar.colorBgContainer}, ${cssVar.colorText} 3%);\n }\n\n && ${p}-tbody > tr${p}-row-selected > td${p}-cell-fix {\n background: color-mix(in srgb, ${cssVar.colorBgContainer}, ${cssVar.colorPrimary} 6%);\n\n &${p}-cell-row-hover {\n background: color-mix(in srgb, ${cssVar.colorBgContainer}, ${cssVar.colorPrimary} 10%);\n }\n }\n `,\n /**\n * Grouped (multi-level) headers only: column dividers in header and body so the\n * group spans stay readable. Plain tables never get vertical dividers.\n */\n grouped: css`\n ${ownCells('th')}, ${ownCells('td')} {\n border-inline-end: ${border};\n }\n\n & ${p}-tbody-virtual ${p}-cell {\n border-inline-end: ${border};\n }\n\n /* Outlined: the container already draws the trailing edge. Other variants: the\n rightmost body cell and first header row cell stop at the table edge. */\n &:not(${p}-outlined) ${p}-tbody > tr > td:last-child,\n &:not(${p}-outlined) ${p}-thead > tr:first-child > th:last-child,\n &${p}-outlined ${p}-tbody > tr > td:last-child,\n &${p}-outlined ${p}-thead > tr:first-child > th:last-child {\n border-inline-end: 0;\n }\n `,\n clickable: css`\n cursor: pointer;\n `,\n /** Title text of an `ellipsis` column; truncates inside the sort button / header controls. */\n columnTitle: css`\n overflow: hidden;\n\n min-width: 0;\n\n text-overflow: ellipsis;\n word-break: keep-all;\n white-space: nowrap;\n `,\n filterActive: css`\n &&,\n &&:hover {\n color: ${cssVar.colorPrimary};\n }\n `,\n filterButton: css`\n flex: none;\n margin-block: -4px;\n `,\n filterButtons: css`\n display: flex;\n gap: 8px;\n align-items: center;\n justify-content: space-between;\n\n padding-block: 7px;\n padding-inline: 8px;\n border-block-start: 1px solid ${cssVar.colorSplit};\n `,\n filterCheckAll: css`\n margin-block-end: 4px;\n padding-inline: 4px;\n `,\n filterDropdown: css`\n display: flex;\n flex-direction: column;\n min-width: 120px;\n `,\n filterEmpty: css`\n padding-block: 16px;\n padding-inline: 0;\n `,\n filterGroup: css`\n display: flex;\n flex-direction: column;\n\n & > div:not(:first-child) {\n padding-inline-start: 20px;\n }\n `,\n filterGroupTitle: css`\n padding-block: 5px;\n padding-inline: 8px;\n font-size: 12px;\n color: ${cssVar.colorTextDescription};\n `,\n filterItem: css`\n display: flex;\n align-items: center;\n\n padding-block: 5px;\n padding-inline: 8px;\n border-radius: ${cssVar.borderRadiusSM};\n\n white-space: nowrap;\n\n &:hover {\n background: ${cssVar.colorFillTertiary};\n }\n\n & > label {\n cursor: pointer;\n flex: 1;\n }\n `,\n filterMenu: css`\n overflow: auto;\n display: flex;\n flex-direction: column;\n\n max-height: 264px;\n padding: 4px;\n `,\n filterPopup: css`\n overflow: hidden;\n padding: 0;\n `,\n filterSearch: css`\n padding: 8px;\n border-block-end: 1px solid ${cssVar.colorSplit};\n `,\n filterTree: css`\n overflow: auto;\n max-height: 264px;\n padding: 8px;\n `,\n headerInner: css`\n display: inline-flex;\n gap: 6px;\n align-items: center;\n\n min-width: 0;\n max-width: 100%;\n\n vertical-align: middle;\n `,\n hoverable: css`\n & ${p}-tbody > tr > ${p}-cell-row-hover, & ${p}-tbody-virtual ${p}-row:hover > ${p}-cell {\n background: color-mix(in srgb, ${cssVar.colorBgContainer}, ${cssVar.colorText} 3%);\n }\n `,\n loading: css`\n position: absolute;\n z-index: calc(var(--columns-count, 1) * 2 + ${Z_FIXED} + 2);\n inset: 0;\n\n display: flex;\n flex-direction: column;\n gap: 8px;\n align-items: center;\n justify-content: center;\n\n color: ${cssVar.colorTextSecondary};\n\n background: color-mix(in srgb, ${cssVar.colorBgContainer} 60%, transparent);\n `,\n /**\n * Empty-state loading body. Tracks follow leaf column widths so bars sit under the\n * live header; cell padding reuses the size CSS vars on the table ancestor.\n */\n skeleton: css`\n display: flex;\n flex-direction: column;\n\n width: 100%;\n min-width: 0;\n\n text-align: start;\n `,\n skeletonCell: css`\n display: flex;\n align-items: center;\n\n min-width: 0;\n padding-block: var(${PADDING_BLOCK});\n padding-inline: var(${PADDING_INLINE});\n `,\n skeletonRow: css`\n display: grid;\n align-items: stretch;\n\n width: 100%;\n min-width: 0;\n border-block-end: 1px solid ${cssVar.colorBorderSecondary};\n\n &:last-child {\n border-block-end: 0;\n }\n `,\n // antd `paginationMargin` (token.margin): keep the pager off the table above and off\n // whatever sits below the table.\n pagination: css`\n display: flex;\n margin-block: 16px;\n `,\n paginationCenter: css`\n justify-content: center;\n `,\n paginationEnd: css`\n justify-content: flex-end;\n `,\n paginationStart: css`\n justify-content: flex-start;\n `,\n paginationTop: css`\n margin-block: 0 16px;\n `,\n root: css`\n min-width: 0;\n `,\n /** Header box of the selection column; `selectionExtra` hangs off its end. */\n selection: css`\n position: relative;\n display: inline-flex;\n flex-direction: column;\n vertical-align: middle;\n `,\n selectionColumn: css`\n && {\n padding-inline: 8px;\n text-align: center;\n }\n\n & > * {\n vertical-align: middle;\n }\n `,\n selectionExtra: css`\n position: absolute;\n z-index: 1;\n inset-block-start: 0;\n\n display: flex;\n align-items: center;\n\n height: 100%;\n margin-inline-start: 100%;\n padding-inline-start: 2px;\n `,\n selectionRadioGroup: css`\n display: inline-flex;\n vertical-align: middle;\n `,\n selectionTrigger: css`\n flex: none;\n margin-block: -4px;\n `,\n sizeLarge: css`\n ${PADDING_BLOCK}: 16px;\n ${PADDING_INLINE}: 16px;\n `,\n sizeMedium: css`\n ${PADDING_BLOCK}: 12px;\n ${PADDING_INLINE}: 16px;\n `,\n sizeSmall: css`\n ${PADDING_BLOCK}: 8px;\n ${PADDING_INLINE}: 12px;\n `,\n // Title + sort ActionIcon row (not a button — the ActionIcon owns the click).\n sortButton: css`\n display: inline-flex;\n gap: 4px;\n align-items: center;\n\n min-width: 0;\n max-width: 100%;\n `,\n // Matches the filter trigger: small ActionIcon with a slight negative margin so the\n // 24px block does not grow the header.\n sortCaret: css`\n flex: none;\n margin-block: -4px;\n `,\n sortTitle: css`\n cursor: pointer;\n min-width: 0;\n `,\n sortedColumn: css`\n ${p}-tbody > tr > &${p}-cell {\n background: ${cssVar.colorFillQuaternary};\n }\n `,\n spinContainer: css`\n position: relative;\n `,\n table: css`\n font-size: 14px;\n color: ${cssVar.colorText};\n background: ${cssVar.colorBgContainer};\n\n & table {\n border-spacing: 0;\n border-collapse: separate;\n width: 100%;\n text-align: start;\n }\n\n /* ============================== Cell ============================== */\n & ${p}-cell, & ${p}-thead > tr > th,\n & ${p}-tbody > tr > td,\n & tfoot > tr > th,\n & tfoot > tr > td {\n position: relative;\n padding-block: var(${PADDING_BLOCK});\n padding-inline: var(${PADDING_INLINE});\n overflow-wrap: break-word;\n }\n\n & ${p}-thead > tr > th,\n & ${p}-thead > tr > td {\n font-size: 13px;\n font-weight: 500;\n color: ${cssVar.colorTextSecondary};\n text-align: start;\n\n background: ${cssVar.colorBgContainer};\n box-shadow:\n inset 0 -1px 0 ${cssVar.colorBorderSecondary},\n inset 0 999px 0 ${cssVar.colorFillQuaternary};\n\n &[colspan]:not([colspan='1']) {\n text-align: center;\n }\n }\n\n /* th covers rowScope row headers. */\n & ${p}-tbody > tr > td,\n & ${p}-tbody > tr > th {\n border-block-end: ${border};\n\n font-weight: inherit;\n font-variant-numeric: tabular-nums;\n text-align: start;\n\n background: ${cssVar.colorBgContainer};\n\n transition: background-color ${cssVar.motionDurationMid};\n }\n\n &:not(${p}-outlined) ${p}-tbody > tr:last-child > td,\n &:not(${p}-outlined) ${p}-tbody > tr:last-child > th {\n border-block-end: 0;\n }\n\n & ${p}-tbody > tr${p}-placeholder > td {\n padding-block: 32px;\n color: ${cssVar.colorTextDescription};\n text-align: center;\n }\n\n /* Skeleton loading fills the placeholder like real body rows. */\n & ${p}-tbody > tr${p}-placeholder > td:has([data-table-skeleton]) {\n padding: 0;\n color: inherit;\n text-align: start;\n vertical-align: top;\n }\n\n & ${p}-cell-scrollbar:not([rowspan]) {\n box-shadow: 0 1px 0 1px ${cssVar.colorFillQuaternary};\n }\n\n /* ============================ Ellipsis ============================ */\n & ${p}-cell-ellipsis {\n overflow: hidden;\n text-overflow: ellipsis;\n word-break: keep-all;\n white-space: nowrap;\n\n &${p}-cell-fix-start-shadow, &${p}-cell-fix-end-shadow {\n overflow: visible;\n\n & ${p}-cell-content {\n overflow: hidden;\n display: block;\n text-overflow: ellipsis;\n white-space: nowrap;\n }\n }\n }\n\n /* ========================== Title / Footer ========================= */\n & > ${p}-title, & > ${p}-footer {\n padding-block: var(${PADDING_BLOCK});\n padding-inline: var(${PADDING_INLINE});\n }\n\n & > ${p}-footer {\n color: ${cssVar.colorText};\n background: ${cssVar.colorFillQuaternary};\n }\n\n /* ============================== Fixed ============================= */\n & ${p}-container {\n position: relative;\n\n &::before,\n &::after {\n ${fixShadowBase}\n z-index: calc(var(--columns-count, 1) * 2 + ${Z_FIXED} + 1);\n }\n\n &::before {\n inset-inline-start: 0;\n }\n\n &::after {\n inset-inline-end: 0;\n }\n }\n\n &${p}-has-fix-start > ${p}-container::before, &${p}-has-fix-end > ${p}-container::after {\n display: none;\n }\n\n &${p}-fix-start-shadow-show > ${p}-container::before {\n ${startShadow}\n }\n\n &${p}-fix-end-shadow-show > ${p}-container::after {\n ${endShadow}\n }\n\n /* Must outrank the generic cell rule that sets position: relative. */\n &\n ${p}-thead\n > tr\n > th${p}-cell-fix,\n &\n ${p}-tbody\n > tr\n > td${p}-cell-fix,\n &\n ${p}-cell${p}-cell-fix {\n position: sticky;\n z-index: calc(var(--z-offset-reverse) + ${Z_FIXED});\n }\n\n & ${p}-cell-fix {\n background: ${cssVar.colorBgContainer};\n\n &::after {\n ${fixShadowBase}\n }\n }\n\n & ${p}-cell-fix-start::after {\n inset-inline-start: 100%;\n }\n\n & ${p}-cell-fix-end::after {\n inset-inline-end: 100%;\n }\n\n & ${p}-cell-fix-start-shadow-show::after {\n ${startShadow}\n }\n\n & ${p}-cell-fix-end-shadow-show::after {\n ${endShadow}\n }\n\n /* ============================= Sticky ============================= */\n & ${p}-sticky-holder {\n position: sticky;\n z-index: calc(var(--columns-count, 1) * 2 + ${Z_FIXED} + 1);\n background: ${cssVar.colorBgContainer};\n }\n\n & ${p}-sticky-scroll {\n position: sticky;\n z-index: calc(var(--columns-count, 1) * 2 + ${Z_FIXED} + 1);\n inset-block-end: 0;\n\n display: flex;\n align-items: center;\n\n height: 8px !important;\n border-block-start: ${border};\n\n opacity: 0.65;\n background: ${cssVar.colorFillQuaternary};\n\n &-bar {\n position: absolute;\n inset-block-end: 0;\n\n height: 8px;\n border-radius: 100px;\n\n background-color: ${cssVar.colorFill};\n\n transition:\n all ${cssVar.motionDurationSlow},\n transform 0s;\n\n &:hover,\n &-active {\n background-color: ${cssVar.colorFillSecondary};\n }\n }\n }\n\n /* ============================ Selection =========================== */\n & ${p}-selection-col {\n width: ${SELECTION_COLUMN_WIDTH}px;\n\n &${p}-selection-col-with-dropdown {\n width: ${SELECTION_COLUMN_WIDTH + SELECTION_DROPDOWN_WIDTH}px;\n }\n }\n\n &${p}-outlined ${p}-selection-col {\n width: ${SELECTION_COLUMN_WIDTH + 16}px;\n\n &${p}-selection-col-with-dropdown {\n width: ${SELECTION_COLUMN_WIDTH + SELECTION_DROPDOWN_WIDTH + 16}px;\n }\n }\n\n & ${p}-tbody > tr${p}-row-selected > td {\n background: color-mix(in srgb, ${cssVar.colorBgContainer}, ${cssVar.colorPrimary} 6%);\n\n &${p}-cell-row-hover {\n background: color-mix(in srgb, ${cssVar.colorBgContainer}, ${cssVar.colorPrimary} 10%);\n }\n }\n\n /* ========================= Expand / Tree ========================== */\n & ${p}-expand-icon-col {\n width: ${EXPAND_COLUMN_WIDTH}px;\n }\n\n & ${p}-row-expand-icon-cell {\n text-align: center;\n\n & ${p}-row-expand-icon {\n float: none;\n display: inline-flex;\n vertical-align: sub;\n }\n }\n\n & ${p}-row-indent {\n float: inline-start;\n height: 1px;\n }\n\n & ${p}-row-expand-icon {\n float: inline-start;\n flex: none;\n vertical-align: middle;\n\n &${p}-row-expand-icon-spaced {\n display: inline-block;\n width: 24px;\n height: 24px;\n visibility: hidden;\n }\n }\n\n & ${p}-row-indent + ${p}-row-expand-icon {\n margin-block: -1px;\n margin-inline-end: 8px;\n }\n\n & tr${p}-expanded-row > td,\n & tr${p}-expanded-row:hover > td {\n background: ${cssVar.colorFillQuaternary};\n }\n\n & ${p}-expanded-row-fixed {\n position: relative;\n\n margin-block: calc(var(${PADDING_BLOCK}) * -1);\n margin-inline: calc(var(${PADDING_INLINE}) * -1);\n padding-block: var(${PADDING_BLOCK});\n padding-inline: var(${PADDING_INLINE});\n }\n\n /* ========================== Nested table ========================== */\n\n /* A table alone in a cell fills it, starting after the expand column. */\n &\n ${p}-tbody\n > tr\n > td\n > ${p}-wrapper:only-child,\n &\n ${p}-tbody\n > tr\n > td\n > ${p}-expanded-row-fixed\n > ${p}-wrapper:only-child {\n & ${p} {\n margin-block: calc(var(${PADDING_BLOCK}) * -1);\n margin-inline: calc(${EXPAND_COLUMN_WIDTH}px - var(${PADDING_INLINE}))\n calc(var(${PADDING_INLINE}) * -1);\n }\n\n & ${p}-tbody > tr:last-child > td {\n border-block-end: 0;\n }\n\n /* The outer cell already draws the frame: keep only the start edge of a bordered nest. */\n & ${p}${p}-outlined {\n & > ${p}-title, & > ${p}-container, & > ${p}-footer {\n border-block: 0;\n border-inline-end: 0;\n border-radius: 0;\n }\n\n & > ${p}-title + ${p}-container {\n border-block-start: ${border};\n }\n\n &:has(> ${p}-footer) > ${p}-container {\n border-block-end: ${border};\n }\n }\n }\n\n &${p}-outlined ${p}-tbody > tr > td > ${p}-expanded-row-fixed {\n margin-inline: calc((var(${PADDING_INLINE}) + 1px) * -1);\n }\n\n /* ============================= Summary ============================ */\n & ${p}-summary {\n position: relative;\n z-index: ${Z_FIXED};\n background: ${cssVar.colorBgContainer};\n\n & > tr > th,\n & > tr > td {\n border-block-end: ${border};\n }\n }\n\n & div${p}-summary {\n box-shadow: 0 -1px 0 ${cssVar.colorBorderSecondary};\n }\n\n /* A fixed summary under \\`sticky\\` is a sticky holder too; keep it sticky (antd orders sticky last). */\n & ${p}-summary${p}-sticky-holder {\n position: sticky;\n z-index: calc(var(--columns-count, 1) * 2 + ${Z_FIXED} + 1);\n }\n\n & tfoot > tr > th,\n & tfoot > tr > td {\n border-block-start: ${border};\n }\n\n /* ============================= Virtual ============================ */\n & ${p}-tbody-virtual {\n &\n ${p}-tbody-virtual-holder-inner\n > ${p}-row,\n &\n ${p}-tbody-virtual-holder-inner\n > div:not(${p}-row)\n > ${p}-row {\n display: flex;\n box-sizing: border-box;\n width: 100%;\n\n & > ${p}-cell {\n align-content: center;\n }\n }\n\n & ${p}-cell {\n border-block-end: ${border};\n background: ${cssVar.colorBgContainer};\n transition: background-color ${cssVar.motionDurationMid};\n }\n\n & ${p}-tbody-virtual-scrollbar {\n cursor: pointer;\n\n &:hover {\n background-color: ${cssVar.colorFillQuaternary};\n }\n }\n\n & ${p}-expanded-row ${p}-expanded-row-cell${p}-expanded-row-cell-fixed {\n position: sticky;\n inset-inline-start: 0;\n overflow: hidden;\n width: calc(var(--virtual-width) - 1px);\n }\n }\n `,\n };\n});\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"style.mjs","names":[],"sources":["../../../src/base-ui/Table/style.ts"],"sourcesContent":["import { createStaticStyles } from 'antd-style';\n\n/** Own prefix so rc-table classNames never collide with antd's global `.ant-table` CSS. */\nexport const PREFIX_CLS = 'lobe-table';\n\nconst p = `.${PREFIX_CLS}`;\n\n// Cell padding comes from the size class through these vars, so title / footer / expanded rows\n// can reuse (and negate) it.\nconst PADDING_BLOCK = '--lobe-table-padding-block';\nconst PADDING_INLINE = '--lobe-table-padding-inline';\n\n// Matches antd's `zIndexTableFixed`.\nconst Z_FIXED = 2;\n\n// antd `expandColumnWidth`; nested tables start after it.\nexport const EXPAND_COLUMN_WIDTH = 48;\n\n// antd `selectionColumnWidth`, plus the `selections` trigger when there is one.\nexport const SELECTION_COLUMN_WIDTH = 32;\nexport const SELECTION_DROPDOWN_WIDTH = 24;\n\n/** Rows of this table's own sections only, so the rules never leak into nested tables. */\nconst ownRows = ['content', 'header', 'body', 'summary']\n .map((section) => `& > ${p}-container > ${p}-${section} > table > * > tr`)\n .join(', ');\nconst ownCells = (cell: string) =>\n ownRows\n .split(', ')\n .map((row) => `${row} > ${cell}`)\n .join(', ');\n\nexport const styles = createStaticStyles(({ css, cssVar }) => {\n // Light colorFill / dark colorFillSecondary (see --lobe-fill-border in ThemeProvider).\n const borderColor = `var(--lobe-fill-border, ${cssVar.colorFill})`;\n const border = `1px solid ${borderColor}`;\n // Dark: colorFillQuaternary on the clipped container; unset in light so variants keep their fills.\n const surface = (light: string) => `var(--lobe-table-surface, ${light})`;\n // Cell background. Every table root resets it to colorBgContainer (so nested / borderless\n // tables never inherit it); outlined / filled switch it to transparent in dark.\n const cellBg = `var(--lobe-table-cell, ${cssVar.colorBgContainer})`;\n // The variant fill that opaque composites (fixed cells, sticky holder, summary) repeat\n // once. Reset to transparent per root; outlined / filled set it to the dark surface.\n const fill = 'var(--lobe-table-fill, transparent)';\n // Opaque base under fixed / sticky cells: the real color behind the table, so base + fill\n // matches the translucent body exactly. Override with --lobe-table-canvas; inside a Surface\n // card it is the card's solid color; dark default colorBgLayout (page), light colorBgContainer.\n const solid = 'var(--lobe-table-solid)';\n const solidWith = (...fills: string[]) =>\n `${fills.map((f) => `linear-gradient(${f}, ${f})`).join(', ')}, ${solid}`;\n const variantVars = `\n --lobe-table-solid: var(\n --lobe-table-canvas,\n var(--lobe-surface-bg-solid, var(--lobe-table-canvas-default, ${cssVar.colorBgContainer}))\n );\n --lobe-table-cell: var(--lobe-table-cell-bg, ${cssVar.colorBgContainer});\n --lobe-table-fill: var(--lobe-table-surface, transparent);\n `;\n const fixShadowBase = `\n pointer-events: none;\n content: '';\n position: absolute;\n inset-block: 0 -1px;\n width: 30px;\n transition: box-shadow ${cssVar.motionDurationSlow};\n `;\n const startShadow = `box-shadow: inset 10px 0 8px -8px ${cssVar.colorSplit};`;\n const endShadow = `box-shadow: inset -10px 0 8px -8px ${cssVar.colorSplit};`;\n\n return {\n outlined: css`\n &${p}-outlined {\n ${variantVars}\n /* The square root must not paint behind the rounded frame: the clipped container\n is the ONE layer carrying the body (light colorBgContainer, dark\n colorFillQuaternary). Title / footer are siblings, so they paint it once too. */\n background: transparent;\n\n & > ${p}-container {\n background: ${surface(cssVar.colorBgContainer)};\n }\n\n & > ${p}-title, & > ${p}-footer {\n background: ${surface(cssVar.colorBgContainer)};\n }\n\n & > ${p}-title {\n border: ${border};\n border-block-end: 0;\n border-start-start-radius: ${cssVar.borderRadiusLG};\n border-start-end-radius: ${cssVar.borderRadiusLG};\n }\n\n /* The container draws the top and both side edges; the last row draws the bottom.\n No column dividers (grouped headers included): rows are split horizontally only. */\n & > ${p}-container {\n overflow: clip;\n\n border-block-start: ${border};\n border-inline: ${border};\n border-radius: ${cssVar.borderRadiusLG};\n\n /* Same lift as the dashboard Surface card (both modes). Outer shadow on the framed\n container is not clipped by its own overflow. */\n box-shadow: rgb(0 0 0 / 4%) 0 1px 2px 0;\n }\n\n & > ${p}-title + ${p}-container {\n border-start-start-radius: 0;\n border-start-end-radius: 0;\n }\n\n &:has(> ${p}-footer) > ${p}-container {\n border-end-start-radius: 0;\n border-end-end-radius: 0;\n }\n\n & > ${p}-footer {\n border: ${border};\n border-block-start: 0;\n border-end-start-radius: ${cssVar.borderRadiusLG};\n border-end-end-radius: ${cssVar.borderRadiusLG};\n }\n\n /* Every header row (including the last) draws one bottom edge — no inset\n shadow underneath, or group headers look double-thick. */\n & > ${p}-container > * > table > thead > tr > th {\n border-block-end: ${border};\n\n /* Extra FillQuaternary layer on top of the container fill. */\n background: ${cellBg};\n box-shadow: inset 0 999px 0 ${cssVar.colorFillQuaternary};\n }\n\n /* Fixed cells: opaque canvas (--lobe-table-solid) + the container fill once. */\n & ${p}-tbody > tr > td${p}-cell-fix, & ${p}-tbody-virtual ${p}-cell${p}-cell-fix {\n background: ${solidWith(fill)};\n box-shadow: none;\n }\n\n /* Header: container fill + one Quaternary wash (box-shadow), like other th. */\n & ${p}-thead > tr > th${p}-cell-fix, & ${p}-thead > tr > td${p}-cell-fix {\n background: ${solidWith(fill)};\n box-shadow: inset 0 999px 0 ${cssVar.colorFillQuaternary};\n }\n }\n `,\n\n /* Mirrors Block \\`filled\\`: one colorFillTertiary (dark: colorFillQuaternary on the clipped\n container) surface straight on the parent and no frame border. */\n filled: css`\n &${p}-filled {\n ${variantVars}\n /* Filled owns its fill in both modes (Block filled = colorFillTertiary; dark uses the\n Quaternary surface) and its opaque base is the page behind it, not colorBgContainer. */\n --lobe-table-fill: var(--lobe-table-surface, ${cssVar.colorFillTertiary});\n --lobe-table-solid: var(\n --lobe-table-canvas,\n var(--lobe-surface-bg-solid, ${cssVar.colorBgLayout})\n );\n\n /* Root stays clear (square box, would bleed past the rounded corners); the clipped\n container is the ONE fill layer: light FillTertiary, dark colorFillQuaternary. */\n background: transparent;\n\n & > ${p}-title, & > ${p}-footer {\n border-radius: ${cssVar.borderRadiusLG};\n background: ${fill};\n }\n\n & > ${p}-title {\n border-end-start-radius: 0;\n border-end-end-radius: 0;\n }\n\n & > ${p}-footer {\n border-start-start-radius: 0;\n border-start-end-radius: 0;\n }\n\n & > ${p}-container {\n overflow: clip;\n border-radius: ${cssVar.borderRadiusLG};\n background: ${fill};\n }\n\n & > ${p}-title + ${p}-container {\n border-start-start-radius: 0;\n border-start-end-radius: 0;\n }\n\n &:has(> ${p}-footer) > ${p}-container {\n border-end-start-radius: 0;\n border-end-end-radius: 0;\n }\n\n /* Header band: one extra FillQuaternary wash over the container fill. */\n & ${p}-thead > tr > th,\n & ${p}-thead > tr > td {\n background: transparent;\n box-shadow:\n inset 0 -1px 0 ${borderColor},\n inset 0 999px 0 ${cssVar.colorFillQuaternary};\n }\n\n /* Row dividers stay on (base border rule); body is clear over the container fill. */\n & ${p}-tbody > tr > td,\n & ${p}-tbody > tr > th,\n & ${p}-tbody-virtual ${p}-cell {\n background: transparent;\n }\n\n /* Fixed cells must be opaque: canvas (--lobe-table-solid) + the same fill; header adds one wash. */\n & ${p}-thead > tr > th${p}-cell-fix, & ${p}-thead > tr > td${p}-cell-fix {\n background: ${solidWith(fill)};\n box-shadow:\n inset 0 -1px 0 ${borderColor},\n inset 0 999px 0 ${cssVar.colorFillQuaternary};\n }\n\n & ${p}-tbody > tr > td${p}-cell-fix {\n background: ${solidWith(fill)};\n box-shadow: none;\n }\n }\n `,\n /**\n * Borderless: everything but the header is see-through, so the table sits on whatever\n * surface hosts it. Hover / selected rows are translucent fills. Fixed (sticky) cells\n * stay opaque in colorBgContainer so scrolled content never shows underneath them.\n */\n borderless: css`\n && {\n background: transparent;\n }\n\n && ${p}-tbody > tr > td,\n && ${p}-tbody > tr > th,\n && ${p}-tbody-virtual ${p}-cell, && ${p}-summary, && ${p}-summary > tr > td,\n && ${p}-summary > tr > th,\n && > ${p}-footer {\n background: transparent;\n }\n\n && ${p}-tbody > tr > td${p}-cell-row-hover, && ${p}-tbody-virtual ${p}-row:hover > ${p}-cell {\n background: color-mix(in srgb, ${cssVar.colorText} 3%, transparent);\n }\n\n && ${p}-tbody > tr${p}-row-selected > td {\n background: color-mix(in srgb, ${cssVar.colorPrimary} 6%, transparent);\n\n &${p}-cell-row-hover {\n background: color-mix(in srgb, ${cssVar.colorPrimary} 10%, transparent);\n }\n }\n\n &&\n ${p}-tbody\n > tr\n > td${p}-cell-fix,\n &&\n ${p}-tbody\n > tr\n > th${p}-cell-fix,\n &&\n ${p}-tbody-virtual\n ${p}-cell${p}-cell-fix {\n background: ${cssVar.colorBgContainer};\n }\n\n && ${p}-tbody > tr > td${p}-cell-fix${p}-cell-row-hover {\n background: color-mix(in srgb, ${cssVar.colorBgContainer}, ${cssVar.colorText} 3%);\n }\n\n && ${p}-tbody > tr${p}-row-selected > td${p}-cell-fix {\n background: color-mix(in srgb, ${cssVar.colorBgContainer}, ${cssVar.colorPrimary} 6%);\n\n &${p}-cell-row-hover {\n background: color-mix(in srgb, ${cssVar.colorBgContainer}, ${cssVar.colorPrimary} 10%);\n }\n }\n `,\n /**\n * Grouped (multi-level) headers only: column dividers in header and body so the\n * group spans stay readable. Plain tables never get vertical dividers.\n */\n grouped: css`\n ${ownCells('th')}, ${ownCells('td')} {\n border-inline-end: ${border};\n }\n\n & ${p}-tbody-virtual ${p}-cell {\n border-inline-end: ${border};\n }\n\n /* Outlined: the container already draws the trailing edge. Other variants: the\n rightmost body cell and first header row cell stop at the table edge. */\n &:not(${p}-outlined) ${p}-tbody > tr > td:last-child,\n &:not(${p}-outlined) ${p}-thead > tr:first-child > th:last-child,\n &${p}-outlined ${p}-tbody > tr > td:last-child,\n &${p}-outlined ${p}-thead > tr:first-child > th:last-child {\n border-inline-end: 0;\n }\n `,\n clickable: css`\n cursor: pointer;\n `,\n /** Title text of an `ellipsis` column; truncates inside the sort button / header controls. */\n columnTitle: css`\n overflow: hidden;\n\n min-width: 0;\n\n text-overflow: ellipsis;\n word-break: keep-all;\n white-space: nowrap;\n `,\n filterActive: css`\n &&,\n &&:hover {\n color: ${cssVar.colorPrimary};\n }\n `,\n filterButton: css`\n flex: none;\n margin-block: -4px;\n `,\n filterButtons: css`\n display: flex;\n gap: 8px;\n align-items: center;\n justify-content: space-between;\n\n padding-block: 7px;\n padding-inline: 8px;\n border-block-start: 1px solid ${cssVar.colorSplit};\n `,\n filterCheckAll: css`\n margin-block-end: 4px;\n padding-inline: 4px;\n `,\n filterDropdown: css`\n display: flex;\n flex-direction: column;\n min-width: 120px;\n `,\n filterEmpty: css`\n padding-block: 16px;\n padding-inline: 0;\n `,\n filterGroup: css`\n display: flex;\n flex-direction: column;\n\n & > div:not(:first-child) {\n padding-inline-start: 20px;\n }\n `,\n filterGroupTitle: css`\n padding-block: 5px;\n padding-inline: 8px;\n font-size: 12px;\n color: ${cssVar.colorTextDescription};\n `,\n filterItem: css`\n display: flex;\n align-items: center;\n\n padding-block: 5px;\n padding-inline: 8px;\n border-radius: ${cssVar.borderRadiusSM};\n\n white-space: nowrap;\n\n &:hover {\n background: ${cssVar.colorFillTertiary};\n }\n\n & > label {\n cursor: pointer;\n flex: 1;\n }\n `,\n filterMenu: css`\n overflow: auto;\n display: flex;\n flex-direction: column;\n\n max-height: 264px;\n padding: 4px;\n `,\n filterPopup: css`\n overflow: hidden;\n padding: 0;\n `,\n filterSearch: css`\n padding: 8px;\n border-block-end: 1px solid ${cssVar.colorSplit};\n `,\n filterTree: css`\n overflow: auto;\n max-height: 264px;\n padding: 8px;\n `,\n headerInner: css`\n display: inline-flex;\n gap: 6px;\n align-items: center;\n\n min-width: 0;\n max-width: 100%;\n\n vertical-align: middle;\n `,\n hoverable: css`\n & ${p}-tbody > tr > ${p}-cell-row-hover, & ${p}-tbody-virtual ${p}-row:hover > ${p}-cell {\n background: color-mix(in srgb, ${cssVar.colorBgContainer}, ${cssVar.colorText} 3%);\n }\n `,\n loading: css`\n position: absolute;\n z-index: calc(var(--columns-count, 1) * 2 + ${Z_FIXED} + 2);\n inset: 0;\n\n display: flex;\n flex-direction: column;\n gap: 8px;\n align-items: center;\n justify-content: center;\n\n color: ${cssVar.colorTextSecondary};\n\n background: color-mix(in srgb, ${cssVar.colorBgContainer} 60%, transparent);\n `,\n /**\n * Empty-state loading body. Tracks follow leaf column widths so bars sit under the\n * live header; cell padding reuses the size CSS vars on the table ancestor.\n */\n skeleton: css`\n display: flex;\n flex-direction: column;\n\n width: 100%;\n min-width: 0;\n\n text-align: start;\n `,\n skeletonCell: css`\n display: flex;\n align-items: center;\n\n min-width: 0;\n padding-block: var(${PADDING_BLOCK});\n padding-inline: var(${PADDING_INLINE});\n `,\n skeletonRow: css`\n display: grid;\n align-items: stretch;\n\n width: 100%;\n min-width: 0;\n border-block-end: 1px solid ${borderColor};\n\n &:last-child {\n border-block-end: 0;\n }\n `,\n // antd `paginationMargin` (token.margin): keep the pager off the table above and off\n // whatever sits below the table.\n pagination: css`\n display: flex;\n margin-block: 16px;\n `,\n paginationCenter: css`\n justify-content: center;\n `,\n paginationEnd: css`\n justify-content: flex-end;\n `,\n paginationStart: css`\n justify-content: flex-start;\n `,\n paginationTop: css`\n margin-block: 0 16px;\n `,\n root: css`\n min-width: 0;\n `,\n /** Header box of the selection column; `selectionExtra` hangs off its end. */\n selection: css`\n position: relative;\n display: inline-flex;\n flex-direction: column;\n vertical-align: middle;\n `,\n selectionColumn: css`\n && {\n padding-inline: 8px;\n text-align: center;\n }\n\n & > * {\n vertical-align: middle;\n }\n `,\n selectionExtra: css`\n position: absolute;\n z-index: 1;\n inset-block-start: 0;\n\n display: flex;\n align-items: center;\n\n height: 100%;\n margin-inline-start: 100%;\n padding-inline-start: 2px;\n `,\n selectionRadioGroup: css`\n display: inline-flex;\n vertical-align: middle;\n `,\n selectionTrigger: css`\n flex: none;\n margin-block: -4px;\n `,\n sizeLarge: css`\n ${PADDING_BLOCK}: 16px;\n ${PADDING_INLINE}: 16px;\n `,\n sizeMedium: css`\n ${PADDING_BLOCK}: 12px;\n ${PADDING_INLINE}: 16px;\n `,\n sizeSmall: css`\n ${PADDING_BLOCK}: 8px;\n ${PADDING_INLINE}: 12px;\n `,\n // Title + sort ActionIcon row (not a button — the ActionIcon owns the click).\n sortButton: css`\n display: inline-flex;\n gap: 4px;\n align-items: center;\n\n min-width: 0;\n max-width: 100%;\n `,\n // Matches the filter trigger: small ActionIcon with a slight negative margin so the\n // 24px block does not grow the header.\n sortCaret: css`\n flex: none;\n margin-block: -4px;\n `,\n sortTitle: css`\n cursor: pointer;\n min-width: 0;\n `,\n sortedColumn: css`\n ${p}-tbody > tr > &${p}-cell {\n background: ${cssVar.colorFillQuaternary};\n }\n `,\n spinContainer: css`\n position: relative;\n `,\n table: css`\n /* Reset per root so nested / borderless tables never inherit a parent's variant vars. */\n --lobe-table-cell: ${cssVar.colorBgContainer};\n --lobe-table-fill: transparent;\n --lobe-table-solid: ${cssVar.colorBgContainer};\n\n font-size: 14px;\n color: ${cssVar.colorText};\n background: ${cssVar.colorBgContainer};\n\n & table {\n border-spacing: 0;\n border-collapse: separate;\n width: 100%;\n text-align: start;\n }\n\n /* ============================== Cell ============================== */\n & ${p}-cell, & ${p}-thead > tr > th,\n & ${p}-tbody > tr > td,\n & tfoot > tr > th,\n & tfoot > tr > td {\n position: relative;\n padding-block: var(${PADDING_BLOCK});\n padding-inline: var(${PADDING_INLINE});\n overflow-wrap: break-word;\n }\n\n & ${p}-thead > tr > th,\n & ${p}-thead > tr > td {\n font-size: 13px;\n font-weight: 500;\n color: ${cssVar.colorTextSecondary};\n text-align: start;\n\n /* Clear in dark (outlined) so the container fill shows; Quaternary is the extra header layer. */\n background: ${cellBg};\n box-shadow:\n inset 0 -1px 0 ${borderColor},\n inset 0 999px 0 ${cssVar.colorFillQuaternary};\n\n &[colspan]:not([colspan='1']) {\n text-align: center;\n }\n }\n\n /* th covers rowScope row headers. */\n & ${p}-tbody > tr > td,\n & ${p}-tbody > tr > th {\n border-block-end: ${border};\n\n font-weight: inherit;\n font-variant-numeric: tabular-nums;\n text-align: start;\n\n /* Clear in dark (outlined) so the container fill shows through. */\n background: ${cellBg};\n\n transition: background-color ${cssVar.motionDurationMid};\n }\n\n &:not(${p}-outlined) ${p}-tbody > tr:last-child > td,\n &:not(${p}-outlined) ${p}-tbody > tr:last-child > th {\n border-block-end: 0;\n }\n\n & ${p}-tbody > tr${p}-placeholder > td {\n padding-block: 32px;\n color: ${cssVar.colorTextDescription};\n text-align: center;\n }\n\n /* Skeleton loading fills the placeholder like real body rows. */\n & ${p}-tbody > tr${p}-placeholder > td:has([data-table-skeleton]) {\n padding: 0;\n color: inherit;\n text-align: start;\n vertical-align: top;\n }\n\n & ${p}-cell-scrollbar:not([rowspan]) {\n box-shadow: 0 1px 0 1px ${cssVar.colorFillQuaternary};\n }\n\n /* ============================ Ellipsis ============================ */\n & ${p}-cell-ellipsis {\n overflow: hidden;\n text-overflow: ellipsis;\n word-break: keep-all;\n white-space: nowrap;\n\n &${p}-cell-fix-start-shadow, &${p}-cell-fix-end-shadow {\n overflow: visible;\n\n & ${p}-cell-content {\n overflow: hidden;\n display: block;\n text-overflow: ellipsis;\n white-space: nowrap;\n }\n }\n }\n\n /* ========================== Title / Footer ========================= */\n & > ${p}-title, & > ${p}-footer {\n padding-block: var(${PADDING_BLOCK});\n padding-inline: var(${PADDING_INLINE});\n }\n\n & > ${p}-footer {\n color: ${cssVar.colorText};\n background: ${cssVar.colorFillQuaternary};\n }\n\n /* ============================== Fixed ============================= */\n & ${p}-container {\n position: relative;\n\n &::before,\n &::after {\n ${fixShadowBase}\n z-index: calc(var(--columns-count, 1) * 2 + ${Z_FIXED} + 1);\n }\n\n &::before {\n inset-inline-start: 0;\n }\n\n &::after {\n inset-inline-end: 0;\n }\n }\n\n &${p}-has-fix-start > ${p}-container::before, &${p}-has-fix-end > ${p}-container::after {\n display: none;\n }\n\n &${p}-fix-start-shadow-show > ${p}-container::before {\n ${startShadow}\n }\n\n &${p}-fix-end-shadow-show > ${p}-container::after {\n ${endShadow}\n }\n\n /* Must outrank the generic cell rule that sets position: relative. */\n &\n ${p}-thead\n > tr\n > th${p}-cell-fix,\n &\n ${p}-tbody\n > tr\n > td${p}-cell-fix,\n &\n ${p}-cell${p}-cell-fix {\n position: sticky;\n z-index: calc(var(--z-offset-reverse) + ${Z_FIXED});\n }\n\n & ${p}-cell-fix {\n background: ${cssVar.colorBgContainer};\n\n &::after {\n ${fixShadowBase}\n }\n }\n\n & ${p}-cell-fix-start::after {\n inset-inline-start: 100%;\n }\n\n & ${p}-cell-fix-end::after {\n inset-inline-end: 100%;\n }\n\n & ${p}-cell-fix-start-shadow-show::after {\n ${startShadow}\n }\n\n & ${p}-cell-fix-end-shadow-show::after {\n ${endShadow}\n }\n\n /* ============================= Sticky ============================= */\n & ${p}-sticky-holder {\n position: sticky;\n z-index: calc(var(--columns-count, 1) * 2 + ${Z_FIXED} + 1);\n background: ${solidWith(fill)};\n }\n\n & ${p}-sticky-scroll {\n position: sticky;\n z-index: calc(var(--columns-count, 1) * 2 + ${Z_FIXED} + 1);\n inset-block-end: 0;\n\n display: flex;\n align-items: center;\n\n height: 8px !important;\n border-block-start: ${border};\n\n opacity: 0.65;\n background: ${cssVar.colorFillQuaternary};\n\n &-bar {\n position: absolute;\n inset-block-end: 0;\n\n height: 8px;\n border-radius: 100px;\n\n background-color: ${cssVar.colorFill};\n\n transition:\n all ${cssVar.motionDurationSlow},\n transform 0s;\n\n &:hover,\n &-active {\n background-color: ${cssVar.colorFillSecondary};\n }\n }\n }\n\n /* ============================ Selection =========================== */\n & ${p}-selection-col {\n width: ${SELECTION_COLUMN_WIDTH}px;\n\n &${p}-selection-col-with-dropdown {\n width: ${SELECTION_COLUMN_WIDTH + SELECTION_DROPDOWN_WIDTH}px;\n }\n }\n\n &${p}-outlined ${p}-selection-col {\n width: ${SELECTION_COLUMN_WIDTH + 16}px;\n\n &${p}-selection-col-with-dropdown {\n width: ${SELECTION_COLUMN_WIDTH + SELECTION_DROPDOWN_WIDTH + 16}px;\n }\n }\n\n & ${p}-tbody > tr${p}-row-selected > td {\n background: color-mix(in srgb, ${cssVar.colorBgContainer}, ${cssVar.colorPrimary} 6%);\n\n &${p}-cell-row-hover {\n background: color-mix(in srgb, ${cssVar.colorBgContainer}, ${cssVar.colorPrimary} 10%);\n }\n }\n\n /* ========================= Expand / Tree ========================== */\n & ${p}-expand-icon-col {\n width: ${EXPAND_COLUMN_WIDTH}px;\n }\n\n & ${p}-row-expand-icon-cell {\n text-align: center;\n\n & ${p}-row-expand-icon {\n float: none;\n display: inline-flex;\n vertical-align: sub;\n }\n }\n\n & ${p}-row-indent {\n float: inline-start;\n height: 1px;\n }\n\n & ${p}-row-expand-icon {\n float: inline-start;\n flex: none;\n vertical-align: middle;\n\n &${p}-row-expand-icon-spaced {\n display: inline-block;\n width: 24px;\n height: 24px;\n visibility: hidden;\n }\n }\n\n & ${p}-row-indent + ${p}-row-expand-icon {\n margin-block: -1px;\n margin-inline-end: 8px;\n }\n\n & tr${p}-expanded-row > td,\n & tr${p}-expanded-row:hover > td {\n background: ${cssVar.colorFillQuaternary};\n }\n\n & ${p}-expanded-row-fixed {\n position: relative;\n\n margin-block: calc(var(${PADDING_BLOCK}) * -1);\n margin-inline: calc(var(${PADDING_INLINE}) * -1);\n padding-block: var(${PADDING_BLOCK});\n padding-inline: var(${PADDING_INLINE});\n }\n\n /* ========================== Nested table ========================== */\n\n /* A table alone in a cell fills it, starting after the expand column. */\n &\n ${p}-tbody\n > tr\n > td\n > ${p}-wrapper:only-child,\n &\n ${p}-tbody\n > tr\n > td\n > ${p}-expanded-row-fixed\n > ${p}-wrapper:only-child {\n & ${p} {\n margin-block: calc(var(${PADDING_BLOCK}) * -1);\n margin-inline: calc(${EXPAND_COLUMN_WIDTH}px - var(${PADDING_INLINE}))\n calc(var(${PADDING_INLINE}) * -1);\n }\n\n & ${p}-tbody > tr:last-child > td {\n border-block-end: 0;\n }\n\n /* The outer cell already draws the frame: keep only the start edge of a bordered nest. */\n & ${p}${p}-outlined {\n & > ${p}-title, & > ${p}-container, & > ${p}-footer {\n border-block: 0;\n border-inline-end: 0;\n border-radius: 0;\n box-shadow: none;\n }\n\n & > ${p}-title + ${p}-container {\n border-block-start: ${border};\n }\n\n &:has(> ${p}-footer) > ${p}-container {\n border-block-end: ${border};\n }\n }\n }\n\n &${p}-outlined ${p}-tbody > tr > td > ${p}-expanded-row-fixed {\n margin-inline: calc((var(${PADDING_INLINE}) + 1px) * -1);\n }\n\n /* ============================= Summary ============================ */\n & ${p}-summary {\n position: relative;\n z-index: ${Z_FIXED};\n\n /* Opaque: canvas + the variant fill once. */\n background: ${solidWith(fill)};\n\n & > tr > th,\n & > tr > td {\n border-block-end: ${border};\n }\n }\n\n & div${p}-summary {\n box-shadow: 0 -1px 0 ${borderColor};\n }\n\n /* A fixed summary under \\`sticky\\` is a sticky holder too; keep it sticky (antd orders sticky last). */\n & ${p}-summary${p}-sticky-holder {\n position: sticky;\n z-index: calc(var(--columns-count, 1) * 2 + ${Z_FIXED} + 1);\n }\n\n & tfoot > tr > th,\n & tfoot > tr > td {\n border-block-start: ${border};\n }\n\n /* ============================= Virtual ============================ */\n & ${p}-tbody-virtual {\n &\n ${p}-tbody-virtual-holder-inner\n > ${p}-row,\n &\n ${p}-tbody-virtual-holder-inner\n > div:not(${p}-row)\n > ${p}-row {\n display: flex;\n box-sizing: border-box;\n width: 100%;\n\n & > ${p}-cell {\n align-content: center;\n }\n }\n\n & ${p}-cell {\n border-block-end: ${border};\n background: ${cellBg};\n transition: background-color ${cssVar.motionDurationMid};\n }\n\n & ${p}-tbody-virtual-scrollbar {\n cursor: pointer;\n\n &:hover {\n background-color: ${cssVar.colorFillQuaternary};\n }\n }\n\n & ${p}-expanded-row ${p}-expanded-row-cell${p}-expanded-row-cell-fixed {\n position: sticky;\n inset-inline-start: 0;\n overflow: hidden;\n width: calc(var(--virtual-width) - 1px);\n }\n }\n `,\n };\n});\n"],"mappings":"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"}
|
|
@@ -42,7 +42,7 @@ declare const variants: (props?: ({
|
|
|
42
42
|
mark?: boolean | null | undefined;
|
|
43
43
|
shiny?: boolean | null | undefined;
|
|
44
44
|
strong?: boolean | null | undefined;
|
|
45
|
-
type?: "
|
|
45
|
+
type?: "warning" | "success" | "danger" | "info" | "secondary" | null | undefined;
|
|
46
46
|
underline?: boolean | null | undefined;
|
|
47
47
|
} & import("class-variance-authority/types").ClassProp) | undefined) => string;
|
|
48
48
|
//#endregion
|
|
@@ -135,7 +135,7 @@ const styles = createStaticStyles(({ css, cssVar, responsive }) => {
|
|
|
135
135
|
block-size: 1px;
|
|
136
136
|
|
|
137
137
|
opacity: 0;
|
|
138
|
-
background: ${cssVar.
|
|
138
|
+
background: var(--lobe-fill-border, ${cssVar.colorFill});
|
|
139
139
|
|
|
140
140
|
transition: opacity 200ms ease;
|
|
141
141
|
}
|
|
@@ -400,7 +400,7 @@ const styles = createStaticStyles(({ css, cssVar, responsive }) => {
|
|
|
400
400
|
&[data-divided='true'] {
|
|
401
401
|
margin-block-end: 6px;
|
|
402
402
|
padding-block-end: 8px;
|
|
403
|
-
border-block-end: 1px solid ${cssVar.
|
|
403
|
+
border-block-end: 1px solid var(--lobe-fill-border, ${cssVar.colorFill});
|
|
404
404
|
}
|
|
405
405
|
|
|
406
406
|
[data-collapsed='true'] &[data-rail-empty='true'] {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"style.mjs","names":[],"sources":["../../../src/dashboard/ConsoleNav/style.ts"],"sourcesContent":["import { createStaticStyles } from 'antd-style';\n\nexport const styles = createStaticStyles(({ css, cssVar, responsive }) => {\n // Fades out at once on collapse, but waits on expand until the width has room for the text.\n const railFade = `\n transition: opacity 120ms ease 80ms;\n\n [data-collapsed='true'] & {\n opacity: 0;\n transition-delay: 0s;\n }\n\n @media (prefers-reduced-motion: reduce) {\n transition: none;\n }\n `;\n\n return {\n badge: css`\n flex: none;\n\n min-inline-size: 20px;\n padding-inline: 6px;\n border-radius: 999px;\n\n font-size: ${cssVar.fontSizeSM};\n font-variant-numeric: tabular-nums;\n color: ${cssVar.colorError};\n text-align: center;\n\n background: color-mix(in srgb, ${cssVar.colorError} 12%, transparent);\n\n ${railFade}\n `,\n chevron: css`\n flex: none;\n transition:\n transform 160ms ease,\n opacity 120ms ease 80ms;\n\n &[data-expanded='false'] {\n transform: rotate(-90deg);\n }\n\n [data-collapsed='true'] & {\n opacity: 0;\n transition-delay: 0s;\n }\n\n @media (prefers-reduced-motion: reduce) {\n transition: none;\n }\n `,\n indicator: css`\n display: flex;\n flex: none;\n align-items: center;\n justify-content: center;\n\n width: 18px;\n height: 18px;\n margin-inline-start: -6px;\n\n color: ${cssVar.colorTextDescription};\n\n transition: transform 160ms ease;\n\n &[data-expanded='true'] {\n transform: rotate(90deg);\n }\n `,\n dot: css`\n position: absolute;\n inset-block-start: 7px;\n inset-inline-end: 9px;\n\n inline-size: 7px;\n block-size: 7px;\n border-radius: 999px;\n\n opacity: 0;\n background: ${cssVar.colorError};\n\n transition: opacity 120ms ease;\n\n [data-collapsed='true'] & {\n opacity: 1;\n }\n\n @media (prefers-reduced-motion: reduce) {\n transition: none;\n }\n `,\n fold: css`\n display: grid;\n grid-template-rows: 1fr;\n transition:\n grid-template-rows 200ms ease,\n margin 200ms ease,\n opacity 120ms ease;\n\n > div {\n overflow: hidden;\n min-block-size: 0;\n }\n\n &[data-folded='true'] {\n grid-template-rows: 0fr;\n opacity: 0;\n }\n\n &[data-folded='true']:not(:first-child) {\n margin-block-start: -2px;\n }\n\n @media (prefers-reduced-motion: reduce) {\n transition: none;\n }\n `,\n group: css`\n position: relative;\n\n display: flex;\n flex-direction: column;\n\n margin-block-start: 12px;\n\n transition: margin 200ms ease;\n\n &::before {\n content: '';\n\n position: absolute;\n inset-block-start: -6px;\n inset-inline: 0;\n\n block-size: 1px;\n\n opacity: 0;\n background: ${cssVar.colorBorderSecondary};\n\n transition: opacity 200ms ease;\n }\n\n &[data-level='0'][data-icon='true'] {\n margin-block-start: 2px;\n }\n\n &:not([data-level='0']) {\n margin-block-start: 6px;\n }\n\n [data-collapsed='true'] & + &[data-level='0'][data-icon='false']::before {\n opacity: 1;\n }\n\n [data-collapsed='true'] &[data-rail-empty='true'] {\n margin-block-start: 0;\n\n &::before {\n opacity: 0;\n }\n }\n\n @media (prefers-reduced-motion: reduce) {\n transition: none;\n\n &::before {\n transition: none;\n }\n }\n `,\n groupHead: css`\n position: relative;\n display: flex;\n flex-direction: column;\n `,\n groupHeader: css`\n cursor: pointer;\n\n display: flex;\n gap: 8px;\n align-items: center;\n justify-content: space-between;\n\n min-block-size: 32px;\n padding-inline: 10px;\n border: none;\n border-radius: ${cssVar.borderRadius};\n\n font-size: ${cssVar.fontSizeSM};\n font-weight: 500;\n color: ${cssVar.colorTextSecondary};\n text-align: start;\n white-space: nowrap;\n\n background: none;\n\n &:hover,\n &[data-active='true'] {\n color: ${cssVar.colorText};\n }\n\n &[data-icon='true'] {\n gap: 10px;\n justify-content: flex-start;\n min-block-size: 36px;\n font-size: ${cssVar.fontSize};\n\n > [role='img'] {\n justify-content: center;\n inline-size: 18px;\n }\n }\n\n &[data-level='0'][data-icon='true']:hover {\n background: ${cssVar.colorFillTertiary};\n }\n\n /* Nested groups read as quiet subheadings with the indicator right after the label. */\n &:not([data-level='0']) {\n gap: 8px;\n justify-content: flex-start;\n\n min-block-size: 26px;\n\n font-size: ${cssVar.fontSizeSM};\n font-weight: 400;\n color: ${cssVar.colorTextDescription};\n\n > [data-label] {\n flex: 0 1 auto;\n }\n\n &:hover,\n &[data-active='true'] {\n color: ${cssVar.colorTextSecondary};\n }\n }\n\n &[data-indent='1'] {\n padding-inline-start: 38px;\n }\n\n &[data-indent='2'] {\n padding-inline-start: 56px;\n }\n\n > [role='img'] {\n display: flex;\n flex: none;\n }\n `,\n groupItems: css`\n display: flex;\n flex-direction: column;\n gap: 2px;\n min-block-size: 0;\n `,\n groupPanel: css`\n display: grid;\n grid-template-rows: 1fr;\n transition: grid-template-rows 160ms ease;\n\n > div {\n overflow: hidden;\n }\n\n &[data-expanded='false'] {\n grid-template-rows: 0fr;\n }\n\n &[data-instant='true'] {\n transition: none;\n }\n `,\n item: css`\n position: relative;\n\n display: flex;\n gap: 10px;\n align-items: center;\n\n min-block-size: 36px;\n padding-inline: 10px;\n border-radius: ${cssVar.borderRadius};\n\n color: ${cssVar.colorTextSecondary};\n text-decoration: none;\n white-space: nowrap;\n\n transition:\n background 120ms ease,\n color 120ms ease;\n\n &:hover {\n color: ${cssVar.colorText};\n background: ${cssVar.colorFillTertiary};\n }\n\n &[data-active='true'] {\n font-weight: 500;\n color: ${cssVar.colorText};\n background: ${cssVar.colorFillSecondary};\n }\n\n &[data-indent='1'],\n &[data-indent='2'] {\n min-block-size: 32px;\n color: ${cssVar.colorText};\n }\n\n &[data-indent='1'] {\n padding-inline-start: 38px;\n }\n\n &[data-indent='2'] {\n padding-inline-start: 56px;\n }\n\n [data-collapsed='true'] &:not([data-indent='0']) {\n padding-inline-start: 10px;\n }\n\n > [role='img'] {\n display: flex;\n flex: none;\n }\n\n ${responsive.mobile} {\n min-block-size: 44px;\n }\n `,\n itemLabel: css`\n overflow: hidden;\n flex: 1;\n text-overflow: ellipsis;\n white-space: nowrap;\n\n [data-collapsed='true'] & {\n text-overflow: clip;\n }\n\n ${railFade}\n `,\n nav: css`\n /* Scroll anchoring would jump the list in one frame while rail rows fold and unfold. */\n overflow-anchor: none;\n scrollbar-width: thin;\n\n display: flex;\n flex: 1;\n flex-direction: column;\n gap: 2px;\n\n min-block-size: 0;\n padding-block-end: 12px;\n padding-inline: 8px;\n `,\n railLink: css`\n position: absolute;\n inset: 0;\n border-radius: ${cssVar.borderRadius};\n transition: background 120ms ease;\n\n &:hover {\n background: ${cssVar.colorFillTertiary};\n }\n\n &[data-active='true'] {\n background: ${cssVar.colorFillSecondary};\n }\n\n @starting-style {\n background: transparent;\n }\n `,\n skeletonFooter: css`\n display: flex;\n gap: 10px;\n align-items: center;\n padding-inline: 4px;\n `,\n skeletonGroup: css`\n display: flex;\n flex-direction: column;\n gap: 2px;\n margin-block-start: 12px;\n `,\n skeletonRow: css`\n pointer-events: none;\n `,\n topItems: css`\n display: flex;\n flex-direction: column;\n gap: 2px;\n transition:\n margin 200ms ease,\n padding 200ms ease,\n border-color 200ms ease;\n\n &[data-divided='true'] {\n margin-block-end: 6px;\n padding-block-end: 8px;\n border-block-end: 1px solid ${cssVar.colorBorderSecondary};\n }\n\n [data-collapsed='true'] &[data-rail-empty='true'] {\n margin-block-end: 0;\n padding-block-end: 0;\n border-block-end-color: transparent;\n }\n\n @media (prefers-reduced-motion: reduce) {\n transition: none;\n }\n `,\n };\n});\n"],"mappings":";;AAEA,MAAa,SAAS,oBAAoB,EAAE,KAAK,QAAQ,iBAAiB;CAExE,MAAM,WAAW;;;;;;;;;;;;CAajB,OAAO;EACL,OAAO,GAAG;;;;;;;mBAOK,OAAO,WAAW;;eAEtB,OAAO,WAAW;;;uCAGM,OAAO,WAAW;;QAEjD,SAAS;;EAEb,SAAS,GAAG;;;;;;;;;;;;;;;;;;;EAmBZ,WAAW,GAAG;;;;;;;;;;eAUH,OAAO,qBAAqB;;;;;;;;EAQvC,KAAK,GAAG;;;;;;;;;;oBAUQ,OAAO,WAAW;;;;;;;;;;;;EAYlC,MAAM,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;EA0BT,OAAO,GAAG;;;;;;;;;;;;;;;;;;;;sBAoBQ,OAAO,qBAAqB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAiC9C,WAAW,GAAG;;;;;EAKd,aAAa,GAAG;;;;;;;;;;;uBAWG,OAAO,aAAa;;mBAExB,OAAO,WAAW;;eAEtB,OAAO,mBAAmB;;;;;;;;iBAQxB,OAAO,UAAU;;;;;;;qBAOb,OAAO,SAAS;;;;;;;;;sBASf,OAAO,kBAAkB;;;;;;;;;;qBAU1B,OAAO,WAAW;;iBAEtB,OAAO,qBAAqB;;;;;;;;mBAQ1B,OAAO,mBAAmB;;;;;;;;;;;;;;;;;EAiBzC,YAAY,GAAG;;;;;;EAMf,YAAY,GAAG;;;;;;;;;;;;;;;;;EAiBf,MAAM,GAAG;;;;;;;;;uBASU,OAAO,aAAa;;eAE5B,OAAO,mBAAmB;;;;;;;;;iBASxB,OAAO,UAAU;sBACZ,OAAO,kBAAkB;;;;;iBAK9B,OAAO,UAAU;sBACZ,OAAO,mBAAmB;;;;;;iBAM/B,OAAO,UAAU;;;;;;;;;;;;;;;;;;;;QAoB1B,WAAW,OAAO;;;;EAItB,WAAW,GAAG;;;;;;;;;;QAUV,SAAS;;EAEb,KAAK,GAAG;;;;;;;;;;;;;;EAcR,UAAU,GAAG;;;uBAGM,OAAO,aAAa;;;;sBAIrB,OAAO,kBAAkB;;;;sBAIzB,OAAO,mBAAmB;;;;;;;EAO5C,gBAAgB,GAAG;;;;;;EAMnB,eAAe,GAAG;;;;;;EAMlB,aAAa,GAAG;;;EAGhB,UAAU,GAAG;;;;;;;;;;;;sCAYqB,OAAO,qBAAqB;;;;;;;;;;;;;CAahE;AACF,CAAC"}
|
|
1
|
+
{"version":3,"file":"style.mjs","names":[],"sources":["../../../src/dashboard/ConsoleNav/style.ts"],"sourcesContent":["import { createStaticStyles } from 'antd-style';\n\nexport const styles = createStaticStyles(({ css, cssVar, responsive }) => {\n // Fades out at once on collapse, but waits on expand until the width has room for the text.\n const railFade = `\n transition: opacity 120ms ease 80ms;\n\n [data-collapsed='true'] & {\n opacity: 0;\n transition-delay: 0s;\n }\n\n @media (prefers-reduced-motion: reduce) {\n transition: none;\n }\n `;\n\n return {\n badge: css`\n flex: none;\n\n min-inline-size: 20px;\n padding-inline: 6px;\n border-radius: 999px;\n\n font-size: ${cssVar.fontSizeSM};\n font-variant-numeric: tabular-nums;\n color: ${cssVar.colorError};\n text-align: center;\n\n background: color-mix(in srgb, ${cssVar.colorError} 12%, transparent);\n\n ${railFade}\n `,\n chevron: css`\n flex: none;\n transition:\n transform 160ms ease,\n opacity 120ms ease 80ms;\n\n &[data-expanded='false'] {\n transform: rotate(-90deg);\n }\n\n [data-collapsed='true'] & {\n opacity: 0;\n transition-delay: 0s;\n }\n\n @media (prefers-reduced-motion: reduce) {\n transition: none;\n }\n `,\n indicator: css`\n display: flex;\n flex: none;\n align-items: center;\n justify-content: center;\n\n width: 18px;\n height: 18px;\n margin-inline-start: -6px;\n\n color: ${cssVar.colorTextDescription};\n\n transition: transform 160ms ease;\n\n &[data-expanded='true'] {\n transform: rotate(90deg);\n }\n `,\n dot: css`\n position: absolute;\n inset-block-start: 7px;\n inset-inline-end: 9px;\n\n inline-size: 7px;\n block-size: 7px;\n border-radius: 999px;\n\n opacity: 0;\n background: ${cssVar.colorError};\n\n transition: opacity 120ms ease;\n\n [data-collapsed='true'] & {\n opacity: 1;\n }\n\n @media (prefers-reduced-motion: reduce) {\n transition: none;\n }\n `,\n fold: css`\n display: grid;\n grid-template-rows: 1fr;\n transition:\n grid-template-rows 200ms ease,\n margin 200ms ease,\n opacity 120ms ease;\n\n > div {\n overflow: hidden;\n min-block-size: 0;\n }\n\n &[data-folded='true'] {\n grid-template-rows: 0fr;\n opacity: 0;\n }\n\n &[data-folded='true']:not(:first-child) {\n margin-block-start: -2px;\n }\n\n @media (prefers-reduced-motion: reduce) {\n transition: none;\n }\n `,\n group: css`\n position: relative;\n\n display: flex;\n flex-direction: column;\n\n margin-block-start: 12px;\n\n transition: margin 200ms ease;\n\n &::before {\n content: '';\n\n position: absolute;\n inset-block-start: -6px;\n inset-inline: 0;\n\n block-size: 1px;\n\n opacity: 0;\n background: var(--lobe-fill-border, ${cssVar.colorFill});\n\n transition: opacity 200ms ease;\n }\n\n &[data-level='0'][data-icon='true'] {\n margin-block-start: 2px;\n }\n\n &:not([data-level='0']) {\n margin-block-start: 6px;\n }\n\n [data-collapsed='true'] & + &[data-level='0'][data-icon='false']::before {\n opacity: 1;\n }\n\n [data-collapsed='true'] &[data-rail-empty='true'] {\n margin-block-start: 0;\n\n &::before {\n opacity: 0;\n }\n }\n\n @media (prefers-reduced-motion: reduce) {\n transition: none;\n\n &::before {\n transition: none;\n }\n }\n `,\n groupHead: css`\n position: relative;\n display: flex;\n flex-direction: column;\n `,\n groupHeader: css`\n cursor: pointer;\n\n display: flex;\n gap: 8px;\n align-items: center;\n justify-content: space-between;\n\n min-block-size: 32px;\n padding-inline: 10px;\n border: none;\n border-radius: ${cssVar.borderRadius};\n\n font-size: ${cssVar.fontSizeSM};\n font-weight: 500;\n color: ${cssVar.colorTextSecondary};\n text-align: start;\n white-space: nowrap;\n\n background: none;\n\n &:hover,\n &[data-active='true'] {\n color: ${cssVar.colorText};\n }\n\n &[data-icon='true'] {\n gap: 10px;\n justify-content: flex-start;\n min-block-size: 36px;\n font-size: ${cssVar.fontSize};\n\n > [role='img'] {\n justify-content: center;\n inline-size: 18px;\n }\n }\n\n &[data-level='0'][data-icon='true']:hover {\n background: ${cssVar.colorFillTertiary};\n }\n\n /* Nested groups read as quiet subheadings with the indicator right after the label. */\n &:not([data-level='0']) {\n gap: 8px;\n justify-content: flex-start;\n\n min-block-size: 26px;\n\n font-size: ${cssVar.fontSizeSM};\n font-weight: 400;\n color: ${cssVar.colorTextDescription};\n\n > [data-label] {\n flex: 0 1 auto;\n }\n\n &:hover,\n &[data-active='true'] {\n color: ${cssVar.colorTextSecondary};\n }\n }\n\n &[data-indent='1'] {\n padding-inline-start: 38px;\n }\n\n &[data-indent='2'] {\n padding-inline-start: 56px;\n }\n\n > [role='img'] {\n display: flex;\n flex: none;\n }\n `,\n groupItems: css`\n display: flex;\n flex-direction: column;\n gap: 2px;\n min-block-size: 0;\n `,\n groupPanel: css`\n display: grid;\n grid-template-rows: 1fr;\n transition: grid-template-rows 160ms ease;\n\n > div {\n overflow: hidden;\n }\n\n &[data-expanded='false'] {\n grid-template-rows: 0fr;\n }\n\n &[data-instant='true'] {\n transition: none;\n }\n `,\n item: css`\n position: relative;\n\n display: flex;\n gap: 10px;\n align-items: center;\n\n min-block-size: 36px;\n padding-inline: 10px;\n border-radius: ${cssVar.borderRadius};\n\n color: ${cssVar.colorTextSecondary};\n text-decoration: none;\n white-space: nowrap;\n\n transition:\n background 120ms ease,\n color 120ms ease;\n\n &:hover {\n color: ${cssVar.colorText};\n background: ${cssVar.colorFillTertiary};\n }\n\n &[data-active='true'] {\n font-weight: 500;\n color: ${cssVar.colorText};\n background: ${cssVar.colorFillSecondary};\n }\n\n &[data-indent='1'],\n &[data-indent='2'] {\n min-block-size: 32px;\n color: ${cssVar.colorText};\n }\n\n &[data-indent='1'] {\n padding-inline-start: 38px;\n }\n\n &[data-indent='2'] {\n padding-inline-start: 56px;\n }\n\n [data-collapsed='true'] &:not([data-indent='0']) {\n padding-inline-start: 10px;\n }\n\n > [role='img'] {\n display: flex;\n flex: none;\n }\n\n ${responsive.mobile} {\n min-block-size: 44px;\n }\n `,\n itemLabel: css`\n overflow: hidden;\n flex: 1;\n text-overflow: ellipsis;\n white-space: nowrap;\n\n [data-collapsed='true'] & {\n text-overflow: clip;\n }\n\n ${railFade}\n `,\n nav: css`\n /* Scroll anchoring would jump the list in one frame while rail rows fold and unfold. */\n overflow-anchor: none;\n scrollbar-width: thin;\n\n display: flex;\n flex: 1;\n flex-direction: column;\n gap: 2px;\n\n min-block-size: 0;\n padding-block-end: 12px;\n padding-inline: 8px;\n `,\n railLink: css`\n position: absolute;\n inset: 0;\n border-radius: ${cssVar.borderRadius};\n transition: background 120ms ease;\n\n &:hover {\n background: ${cssVar.colorFillTertiary};\n }\n\n &[data-active='true'] {\n background: ${cssVar.colorFillSecondary};\n }\n\n @starting-style {\n background: transparent;\n }\n `,\n skeletonFooter: css`\n display: flex;\n gap: 10px;\n align-items: center;\n padding-inline: 4px;\n `,\n skeletonGroup: css`\n display: flex;\n flex-direction: column;\n gap: 2px;\n margin-block-start: 12px;\n `,\n skeletonRow: css`\n pointer-events: none;\n `,\n topItems: css`\n display: flex;\n flex-direction: column;\n gap: 2px;\n transition:\n margin 200ms ease,\n padding 200ms ease,\n border-color 200ms ease;\n\n &[data-divided='true'] {\n margin-block-end: 6px;\n padding-block-end: 8px;\n border-block-end: 1px solid var(--lobe-fill-border, ${cssVar.colorFill});\n }\n\n [data-collapsed='true'] &[data-rail-empty='true'] {\n margin-block-end: 0;\n padding-block-end: 0;\n border-block-end-color: transparent;\n }\n\n @media (prefers-reduced-motion: reduce) {\n transition: none;\n }\n `,\n };\n});\n"],"mappings":";;AAEA,MAAa,SAAS,oBAAoB,EAAE,KAAK,QAAQ,iBAAiB;CAExE,MAAM,WAAW;;;;;;;;;;;;CAajB,OAAO;EACL,OAAO,GAAG;;;;;;;mBAOK,OAAO,WAAW;;eAEtB,OAAO,WAAW;;;uCAGM,OAAO,WAAW;;QAEjD,SAAS;;EAEb,SAAS,GAAG;;;;;;;;;;;;;;;;;;;EAmBZ,WAAW,GAAG;;;;;;;;;;eAUH,OAAO,qBAAqB;;;;;;;;EAQvC,KAAK,GAAG;;;;;;;;;;oBAUQ,OAAO,WAAW;;;;;;;;;;;;EAYlC,MAAM,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;EA0BT,OAAO,GAAG;;;;;;;;;;;;;;;;;;;;8CAoBgC,OAAO,UAAU;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAiC3D,WAAW,GAAG;;;;;EAKd,aAAa,GAAG;;;;;;;;;;;uBAWG,OAAO,aAAa;;mBAExB,OAAO,WAAW;;eAEtB,OAAO,mBAAmB;;;;;;;;iBAQxB,OAAO,UAAU;;;;;;;qBAOb,OAAO,SAAS;;;;;;;;;sBASf,OAAO,kBAAkB;;;;;;;;;;qBAU1B,OAAO,WAAW;;iBAEtB,OAAO,qBAAqB;;;;;;;;mBAQ1B,OAAO,mBAAmB;;;;;;;;;;;;;;;;;EAiBzC,YAAY,GAAG;;;;;;EAMf,YAAY,GAAG;;;;;;;;;;;;;;;;;EAiBf,MAAM,GAAG;;;;;;;;;uBASU,OAAO,aAAa;;eAE5B,OAAO,mBAAmB;;;;;;;;;iBASxB,OAAO,UAAU;sBACZ,OAAO,kBAAkB;;;;;iBAK9B,OAAO,UAAU;sBACZ,OAAO,mBAAmB;;;;;;iBAM/B,OAAO,UAAU;;;;;;;;;;;;;;;;;;;;QAoB1B,WAAW,OAAO;;;;EAItB,WAAW,GAAG;;;;;;;;;;QAUV,SAAS;;EAEb,KAAK,GAAG;;;;;;;;;;;;;;EAcR,UAAU,GAAG;;;uBAGM,OAAO,aAAa;;;;sBAIrB,OAAO,kBAAkB;;;;sBAIzB,OAAO,mBAAmB;;;;;;;EAO5C,gBAAgB,GAAG;;;;;;EAMnB,eAAe,GAAG;;;;;;EAMlB,aAAa,GAAG;;;EAGhB,UAAU,GAAG;;;;;;;;;;;;8DAY6C,OAAO,UAAU;;;;;;;;;;;;;CAa7E;AACF,CAAC"}
|
|
@@ -133,11 +133,11 @@ const styles = createStaticStyles(({ css, cssVar, responsive }) => ({
|
|
|
133
133
|
flex-direction: column;
|
|
134
134
|
|
|
135
135
|
min-block-size: 0;
|
|
136
|
-
border-inline-end: 1px solid ${cssVar.
|
|
136
|
+
border-inline-end: 1px solid var(--lobe-fill-border, ${cssVar.colorFill});
|
|
137
137
|
|
|
138
138
|
[data-split-card='true'] & {
|
|
139
139
|
block-size: 100%;
|
|
140
|
-
border-inline-end-color: ${cssVar.
|
|
140
|
+
border-inline-end-color: var(--lobe-fill-border-strong, ${cssVar.colorFill});
|
|
141
141
|
}
|
|
142
142
|
`,
|
|
143
143
|
sidebar: css`
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"style.mjs","names":[],"sources":["../../../src/dashboard/FilterSidebar/style.ts"],"sourcesContent":["import { createStaticStyles } from 'antd-style';\n\nexport const styles = createStaticStyles(({ css, cssVar, responsive }) => ({\n body: css`\n overflow-y: auto;\n max-block-size: 360px;\n padding-block-end: 16px;\n padding-inline: 12px;\n\n &[data-flush='true'] {\n flex: 1;\n min-block-size: 0;\n max-block-size: none;\n }\n `,\n content: css`\n display: flex;\n flex: 1;\n flex-direction: column;\n gap: 16px;\n\n min-inline-size: 0;\n padding-inline-start: 20px;\n\n &[data-flush='true'] {\n overflow-y: auto;\n padding: 24px;\n }\n\n [data-split-card='true'] & {\n padding-block: 16px 0;\n padding-inline: 16px;\n\n > :last-child {\n margin-inline: -16px;\n }\n }\n\n ${responsive.laptop} {\n overflow: visible;\n padding: 0;\n\n > :last-child {\n margin-inline: 0;\n }\n }\n `,\n count: css`\n flex: none;\n font-size: ${cssVar.fontSizeSM};\n font-variant-numeric: tabular-nums;\n color: ${cssVar.colorTextTertiary};\n `,\n drawerPanel: css`\n display: flex;\n flex-direction: column;\n gap: 8px;\n `,\n head: css`\n display: flex;\n flex: none;\n flex-direction: column;\n gap: 8px;\n\n padding: 12px;\n `,\n layout: css`\n display: flex;\n\n &[data-flush='true'] {\n flex: 1;\n min-block-size: 0;\n }\n\n &[data-split-card='true'] {\n overflow: hidden;\n align-items: stretch;\n }\n\n ${responsive.laptop} {\n flex-direction: column;\n gap: 12px;\n }\n `,\n name: css`\n overflow: hidden;\n flex: 1;\n\n min-inline-size: 0;\n\n text-align: start;\n text-overflow: ellipsis;\n white-space: nowrap;\n `,\n option: css`\n cursor: pointer;\n\n display: flex;\n gap: 6px;\n align-items: center;\n\n inline-size: 100%;\n min-block-size: 36px;\n padding-inline: 8px;\n border: none;\n border-radius: ${cssVar.borderRadius};\n\n font: inherit;\n color: ${cssVar.colorText};\n\n background: none;\n\n &:hover {\n background: ${cssVar.colorFillTertiary};\n }\n\n &[aria-pressed='true'] {\n font-weight: 500;\n background: ${cssVar.controlItemBgActive};\n }\n `,\n row: css`\n display: flex;\n flex: 1;\n gap: 6px;\n align-items: center;\n\n min-inline-size: 0;\n `,\n panel: css`\n overflow: hidden;\n display: flex;\n flex-direction: column;\n\n min-block-size: 0;\n border-inline-end: 1px solid ${cssVar.
|
|
1
|
+
{"version":3,"file":"style.mjs","names":[],"sources":["../../../src/dashboard/FilterSidebar/style.ts"],"sourcesContent":["import { createStaticStyles } from 'antd-style';\n\nexport const styles = createStaticStyles(({ css, cssVar, responsive }) => ({\n body: css`\n overflow-y: auto;\n max-block-size: 360px;\n padding-block-end: 16px;\n padding-inline: 12px;\n\n &[data-flush='true'] {\n flex: 1;\n min-block-size: 0;\n max-block-size: none;\n }\n `,\n content: css`\n display: flex;\n flex: 1;\n flex-direction: column;\n gap: 16px;\n\n min-inline-size: 0;\n padding-inline-start: 20px;\n\n &[data-flush='true'] {\n overflow-y: auto;\n padding: 24px;\n }\n\n [data-split-card='true'] & {\n padding-block: 16px 0;\n padding-inline: 16px;\n\n > :last-child {\n margin-inline: -16px;\n }\n }\n\n ${responsive.laptop} {\n overflow: visible;\n padding: 0;\n\n > :last-child {\n margin-inline: 0;\n }\n }\n `,\n count: css`\n flex: none;\n font-size: ${cssVar.fontSizeSM};\n font-variant-numeric: tabular-nums;\n color: ${cssVar.colorTextTertiary};\n `,\n drawerPanel: css`\n display: flex;\n flex-direction: column;\n gap: 8px;\n `,\n head: css`\n display: flex;\n flex: none;\n flex-direction: column;\n gap: 8px;\n\n padding: 12px;\n `,\n layout: css`\n display: flex;\n\n &[data-flush='true'] {\n flex: 1;\n min-block-size: 0;\n }\n\n &[data-split-card='true'] {\n overflow: hidden;\n align-items: stretch;\n }\n\n ${responsive.laptop} {\n flex-direction: column;\n gap: 12px;\n }\n `,\n name: css`\n overflow: hidden;\n flex: 1;\n\n min-inline-size: 0;\n\n text-align: start;\n text-overflow: ellipsis;\n white-space: nowrap;\n `,\n option: css`\n cursor: pointer;\n\n display: flex;\n gap: 6px;\n align-items: center;\n\n inline-size: 100%;\n min-block-size: 36px;\n padding-inline: 8px;\n border: none;\n border-radius: ${cssVar.borderRadius};\n\n font: inherit;\n color: ${cssVar.colorText};\n\n background: none;\n\n &:hover {\n background: ${cssVar.colorFillTertiary};\n }\n\n &[aria-pressed='true'] {\n font-weight: 500;\n background: ${cssVar.controlItemBgActive};\n }\n `,\n row: css`\n display: flex;\n flex: 1;\n gap: 6px;\n align-items: center;\n\n min-inline-size: 0;\n `,\n panel: css`\n overflow: hidden;\n display: flex;\n flex-direction: column;\n\n min-block-size: 0;\n border-inline-end: 1px solid var(--lobe-fill-border, ${cssVar.colorFill});\n\n [data-split-card='true'] & {\n block-size: 100%;\n border-inline-end-color: var(--lobe-fill-border-strong, ${cssVar.colorFill});\n }\n `,\n sidebar: css`\n align-self: stretch;\n min-block-size: 0;\n\n &[data-flush='true'] {\n block-size: 100%;\n }\n `,\n}));\n"],"mappings":";;AAEA,MAAa,SAAS,oBAAoB,EAAE,KAAK,QAAQ,kBAAkB;CACzE,MAAM,GAAG;;;;;;;;;;;;CAYT,SAAS,GAAG;;;;;;;;;;;;;;;;;;;;;;;MAuBR,WAAW,OAAO;;;;;;;;;CAStB,OAAO,GAAG;;iBAEK,OAAO,WAAW;;aAEtB,OAAO,kBAAkB;;CAEpC,aAAa,GAAG;;;;;CAKhB,MAAM,GAAG;;;;;;;;CAQT,QAAQ,GAAG;;;;;;;;;;;;;MAaP,WAAW,OAAO;;;;;CAKtB,MAAM,GAAG;;;;;;;;;;CAUT,QAAQ,GAAG;;;;;;;;;;;qBAWQ,OAAO,aAAa;;;aAG5B,OAAO,UAAU;;;;;oBAKV,OAAO,kBAAkB;;;;;oBAKzB,OAAO,oBAAoB;;;CAG7C,KAAK,GAAG;;;;;;;;CAQR,OAAO,GAAG;;;;;;2DAM+C,OAAO,UAAU;;;;gEAIZ,OAAO,UAAU;;;CAG/E,SAAS,GAAG;;;;;;;;AAQd,EAAE"}
|
|
@@ -67,7 +67,7 @@ const styles = createStaticStyles(({ css, cssVar }) => ({
|
|
|
67
67
|
color: ${cssVar.colorWarning};
|
|
68
68
|
`,
|
|
69
69
|
frame: css`
|
|
70
|
-
--filter-seam: ${cssVar.
|
|
70
|
+
--filter-seam: var(--lobe-fill-border, ${cssVar.colorFill});
|
|
71
71
|
|
|
72
72
|
overflow: hidden;
|
|
73
73
|
border-radius: inherit;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"style.mjs","names":[],"sources":["../../../src/dashboard/FilterStrip/style.ts"],"sourcesContent":["import { createStaticStyles } from 'antd-style';\n\nexport const styles = createStaticStyles(({ css, cssVar }) => ({\n cell: css`\n cursor: pointer;\n\n position: relative;\n\n display: flex;\n flex-direction: column;\n gap: 6px;\n align-items: flex-start;\n\n min-inline-size: 0;\n margin: 0;\n padding-block: 14px 16px;\n padding-inline: 16px;\n border: 0;\n\n font: inherit;\n color: inherit;\n text-align: start;\n\n background: transparent;\n box-shadow:\n inset -1px 0 0 var(--filter-seam),\n inset 0 -1px 0 var(--filter-seam);\n\n &::after {\n content: '';\n\n position: absolute;\n inset-block-end: 1px;\n inset-inline: 0;\n\n block-size: 3px;\n\n background: transparent;\n }\n\n &:hover {\n background: ${cssVar.colorFillQuaternary};\n }\n `,\n cellActive: css`\n background: ${cssVar.colorFillTertiary};\n\n &::after {\n background: ${cssVar.colorText};\n }\n\n &:hover {\n background: ${cssVar.colorFillTertiary};\n }\n `,\n count: css`\n font-size: ${cssVar.fontSizeHeading4};\n font-weight: 600;\n font-variant-numeric: tabular-nums;\n line-height: 1.15;\n color: ${cssVar.colorText};\n `,\n countDanger: css`\n color: ${cssVar.colorError};\n `,\n countWarning: css`\n color: ${cssVar.colorWarning};\n `,\n frame: css`\n --filter-seam: ${cssVar.
|
|
1
|
+
{"version":3,"file":"style.mjs","names":[],"sources":["../../../src/dashboard/FilterStrip/style.ts"],"sourcesContent":["import { createStaticStyles } from 'antd-style';\n\nexport const styles = createStaticStyles(({ css, cssVar }) => ({\n cell: css`\n cursor: pointer;\n\n position: relative;\n\n display: flex;\n flex-direction: column;\n gap: 6px;\n align-items: flex-start;\n\n min-inline-size: 0;\n margin: 0;\n padding-block: 14px 16px;\n padding-inline: 16px;\n border: 0;\n\n font: inherit;\n color: inherit;\n text-align: start;\n\n background: transparent;\n box-shadow:\n inset -1px 0 0 var(--filter-seam),\n inset 0 -1px 0 var(--filter-seam);\n\n &::after {\n content: '';\n\n position: absolute;\n inset-block-end: 1px;\n inset-inline: 0;\n\n block-size: 3px;\n\n background: transparent;\n }\n\n &:hover {\n background: ${cssVar.colorFillQuaternary};\n }\n `,\n cellActive: css`\n background: ${cssVar.colorFillTertiary};\n\n &::after {\n background: ${cssVar.colorText};\n }\n\n &:hover {\n background: ${cssVar.colorFillTertiary};\n }\n `,\n count: css`\n font-size: ${cssVar.fontSizeHeading4};\n font-weight: 600;\n font-variant-numeric: tabular-nums;\n line-height: 1.15;\n color: ${cssVar.colorText};\n `,\n countDanger: css`\n color: ${cssVar.colorError};\n `,\n countWarning: css`\n color: ${cssVar.colorWarning};\n `,\n frame: css`\n --filter-seam: var(--lobe-fill-border, ${cssVar.colorFill});\n\n overflow: hidden;\n border-radius: inherit;\n `,\n grid: css`\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(148px, 1fr));\n inline-size: calc(100% + 1px);\n margin-block-end: -1px;\n `,\n label: css`\n font-size: 13px;\n font-weight: 500;\n line-height: 1.4;\n color: ${cssVar.colorTextSecondary};\n `,\n labelActive: css`\n color: ${cssVar.colorText};\n `,\n}));\n"],"mappings":";;AAEA,MAAa,SAAS,oBAAoB,EAAE,KAAK,cAAc;CAC7D,MAAM,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;oBAsCS,OAAO,oBAAoB;;;CAG7C,YAAY,GAAG;kBACC,OAAO,kBAAkB;;;oBAGvB,OAAO,UAAU;;;;oBAIjB,OAAO,kBAAkB;;;CAG3C,OAAO,GAAG;iBACK,OAAO,iBAAiB;;;;aAI5B,OAAO,UAAU;;CAE5B,aAAa,GAAG;aACL,OAAO,WAAW;;CAE7B,cAAc,GAAG;aACN,OAAO,aAAa;;CAE/B,OAAO,GAAG;6CACiC,OAAO,UAAU;;;;;CAK5D,MAAM,GAAG;;;;;;CAMT,OAAO,GAAG;;;;aAIC,OAAO,mBAAmB;;CAErC,aAAa,GAAG;aACL,OAAO,UAAU;;AAE9B,EAAE"}
|
|
@@ -99,7 +99,7 @@ const styles = createStaticStyles(({ css, cssVar }) => ({
|
|
|
99
99
|
* track, which reads louder than the cells.
|
|
100
100
|
*/
|
|
101
101
|
frame: css`
|
|
102
|
-
--metric-seam: ${cssVar.
|
|
102
|
+
--metric-seam: var(--lobe-fill-border, ${cssVar.colorFill});
|
|
103
103
|
|
|
104
104
|
overflow: hidden;
|
|
105
105
|
border-radius: inherit;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"style.mjs","names":[],"sources":["../../../src/dashboard/MetricStrip/style.ts"],"sourcesContent":["import { createStaticStyles } from 'antd-style';\n\nexport const styles = createStaticStyles(({ css, cssVar }) => ({\n cell: css`\n display: flex;\n flex-direction: column;\n gap: 6px;\n\n min-inline-size: 0;\n padding-block: 16px;\n padding-inline: 20px;\n\n background: transparent;\n `,\n /** Joined strip only: the divider on the cell's trailing and bottom edges. */\n cellSeam: css`\n box-shadow:\n inset -1px 0 0 var(--metric-seam),\n inset 0 -1px 0 var(--metric-seam);\n `,\n /** Split strip and StatCard: one card per item. */\n card: css`\n display: grid;\n min-inline-size: 0;\n `,\n /* One fixed 32px row (a small Segmented or ActionIcon fits): an action or mark in the head must not push the value down, so cells with and\n without header controls line up across a split strip or a row of StatCards. */\n head: css`\n display: flex;\n gap: 8px;\n align-items: center;\n justify-content: space-between;\n\n box-sizing: border-box;\n min-inline-size: 0;\n block-size: 32px;\n `,\n headCopy: css`\n display: flex;\n flex: 1;\n gap: 6px;\n align-items: center;\n\n min-inline-size: 0;\n `,\n /** Label-row control, pushed to the trailing edge. */\n headAction: css`\n display: flex;\n flex: none;\n align-items: center;\n `,\n /** Full-width chart slot under the delta and hint. */\n chart: css`\n inline-size: 100%;\n min-inline-size: 0;\n margin-block-start: 6px;\n `,\n mark: css`\n display: inline-flex;\n flex: none;\n align-items: center;\n justify-content: center;\n\n inline-size: 24px;\n block-size: 24px;\n border: 1px solid ${cssVar.colorFillSecondary};\n border-radius: ${cssVar.borderRadiusSM};\n\n color: ${cssVar.colorTextTertiary};\n\n background: ${cssVar.colorFillTertiary};\n `,\n split: css`\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(180px, 1fr));\n gap: 12px;\n `,\n delta: css`\n font-size: 13px;\n font-variant-numeric: tabular-nums;\n line-height: 1.4;\n `,\n deltaDown: css`\n color: ${cssVar.colorError};\n `,\n deltaFlat: css`\n color: ${cssVar.colorTextSecondary};\n `,\n deltaUp: css`\n color: ${cssVar.colorSuccess};\n `,\n foot: css`\n display: flex;\n flex-wrap: wrap;\n gap: 8px;\n align-items: baseline;\n `,\n /**\n * Clips the seam that would otherwise sit on the card's trailing and bottom\n * edges. A short last row used to show the seam color across the empty\n * track, which reads louder than the cells.\n */\n frame: css`\n --metric-seam: ${cssVar.
|
|
1
|
+
{"version":3,"file":"style.mjs","names":[],"sources":["../../../src/dashboard/MetricStrip/style.ts"],"sourcesContent":["import { createStaticStyles } from 'antd-style';\n\nexport const styles = createStaticStyles(({ css, cssVar }) => ({\n cell: css`\n display: flex;\n flex-direction: column;\n gap: 6px;\n\n min-inline-size: 0;\n padding-block: 16px;\n padding-inline: 20px;\n\n background: transparent;\n `,\n /** Joined strip only: the divider on the cell's trailing and bottom edges. */\n cellSeam: css`\n box-shadow:\n inset -1px 0 0 var(--metric-seam),\n inset 0 -1px 0 var(--metric-seam);\n `,\n /** Split strip and StatCard: one card per item. */\n card: css`\n display: grid;\n min-inline-size: 0;\n `,\n /* One fixed 32px row (a small Segmented or ActionIcon fits): an action or mark in the head must not push the value down, so cells with and\n without header controls line up across a split strip or a row of StatCards. */\n head: css`\n display: flex;\n gap: 8px;\n align-items: center;\n justify-content: space-between;\n\n box-sizing: border-box;\n min-inline-size: 0;\n block-size: 32px;\n `,\n headCopy: css`\n display: flex;\n flex: 1;\n gap: 6px;\n align-items: center;\n\n min-inline-size: 0;\n `,\n /** Label-row control, pushed to the trailing edge. */\n headAction: css`\n display: flex;\n flex: none;\n align-items: center;\n `,\n /** Full-width chart slot under the delta and hint. */\n chart: css`\n inline-size: 100%;\n min-inline-size: 0;\n margin-block-start: 6px;\n `,\n mark: css`\n display: inline-flex;\n flex: none;\n align-items: center;\n justify-content: center;\n\n inline-size: 24px;\n block-size: 24px;\n border: 1px solid ${cssVar.colorFillSecondary};\n border-radius: ${cssVar.borderRadiusSM};\n\n color: ${cssVar.colorTextTertiary};\n\n background: ${cssVar.colorFillTertiary};\n `,\n split: css`\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(180px, 1fr));\n gap: 12px;\n `,\n delta: css`\n font-size: 13px;\n font-variant-numeric: tabular-nums;\n line-height: 1.4;\n `,\n deltaDown: css`\n color: ${cssVar.colorError};\n `,\n deltaFlat: css`\n color: ${cssVar.colorTextSecondary};\n `,\n deltaUp: css`\n color: ${cssVar.colorSuccess};\n `,\n foot: css`\n display: flex;\n flex-wrap: wrap;\n gap: 8px;\n align-items: baseline;\n `,\n /**\n * Clips the seam that would otherwise sit on the card's trailing and bottom\n * edges. A short last row used to show the seam color across the empty\n * track, which reads louder than the cells.\n */\n frame: css`\n --metric-seam: var(--lobe-fill-border, ${cssVar.colorFill});\n\n overflow: hidden;\n border-radius: inherit;\n background: transparent;\n `,\n grid: css`\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(180px, 1fr));\n\n inline-size: calc(100% + 1px);\n margin-block-end: -1px;\n\n background: transparent;\n `,\n hint: css`\n font-size: 13px;\n line-height: 1.4;\n color: ${cssVar.colorTextSecondary};\n `,\n label: css`\n font-size: 13px;\n font-weight: 500;\n line-height: 1.4;\n color: ${cssVar.colorTextSecondary};\n `,\n link: css`\n color: inherit;\n text-decoration: none;\n\n &:hover {\n background: ${cssVar.colorFillQuaternary};\n }\n `,\n press: css`\n cursor: pointer;\n\n border: none;\n\n font: inherit;\n color: inherit;\n text-align: start;\n\n &:hover {\n background: ${cssVar.colorFillQuaternary};\n }\n `,\n /** Grid cell around a rendered link, so the link fills it. */\n slot: css`\n display: grid;\n min-inline-size: 0;\n `,\n value: css`\n overflow: hidden;\n\n font-size: ${cssVar.fontSizeHeading3};\n font-weight: 600;\n font-variant-numeric: tabular-nums;\n line-height: 1.15;\n color: ${cssVar.colorText};\n text-overflow: ellipsis;\n white-space: nowrap;\n `,\n valueDanger: css`\n color: ${cssVar.colorError};\n `,\n valueWarning: css`\n color: ${cssVar.colorWarning};\n `,\n}));\n"],"mappings":";;AAEA,MAAa,SAAS,oBAAoB,EAAE,KAAK,cAAc;CAC7D,MAAM,GAAG;;;;;;;;;;;;CAYT,UAAU,GAAG;;;;;;CAMb,MAAM,GAAG;;;;CAMT,MAAM,GAAG;;;;;;;;;;CAUT,UAAU,GAAG;;;;;;;;;CASb,YAAY,GAAG;;;;;;CAMf,OAAO,GAAG;;;;;CAKV,MAAM,GAAG;;;;;;;;wBAQa,OAAO,mBAAmB;qBAC7B,OAAO,eAAe;;aAE9B,OAAO,kBAAkB;;kBAEpB,OAAO,kBAAkB;;CAEzC,OAAO,GAAG;;;;;CAKV,OAAO,GAAG;;;;;CAKV,WAAW,GAAG;aACH,OAAO,WAAW;;CAE7B,WAAW,GAAG;aACH,OAAO,mBAAmB;;CAErC,SAAS,GAAG;aACD,OAAO,aAAa;;CAE/B,MAAM,GAAG;;;;;;;;;;;CAWT,OAAO,GAAG;6CACiC,OAAO,UAAU;;;;;;CAM5D,MAAM,GAAG;;;;;;;;;CAST,MAAM,GAAG;;;aAGE,OAAO,mBAAmB;;CAErC,OAAO,GAAG;;;;aAIC,OAAO,mBAAmB;;CAErC,MAAM,GAAG;;;;;oBAKS,OAAO,oBAAoB;;;CAG7C,OAAO,GAAG;;;;;;;;;;oBAUQ,OAAO,oBAAoB;;;;CAI7C,MAAM,GAAG;;;;CAIT,OAAO,GAAG;;;iBAGK,OAAO,iBAAiB;;;;aAI5B,OAAO,UAAU;;;;CAI5B,aAAa,GAAG;aACL,OAAO,WAAW;;CAE7B,cAAc,GAAG;aACN,OAAO,aAAa;;AAEjC,EAAE"}
|
|
@@ -52,7 +52,7 @@ const styles = createStaticStyles(({ css, cssVar, responsive }) => ({
|
|
|
52
52
|
min-block-size: 54px;
|
|
53
53
|
padding-block: 12px;
|
|
54
54
|
padding-inline: 16px;
|
|
55
|
-
border-block-end: 1px solid ${cssVar.
|
|
55
|
+
border-block-end: 1px solid var(--lobe-fill-border, ${cssVar.colorFill});
|
|
56
56
|
|
|
57
57
|
&:last-child {
|
|
58
58
|
border-block-end: none;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"style.mjs","names":[],"sources":["../../../src/dashboard/PageSkeleton/style.ts"],"sourcesContent":["import { createStaticStyles } from 'antd-style';\n\nexport const styles = createStaticStyles(({ css, cssVar, responsive }) => ({\n action: css`\n flex: none;\n inline-size: 96px;\n block-size: 32px;\n\n ${responsive.mobile} {\n inline-size: 100%;\n block-size: 44px;\n }\n `,\n cell: css`\n flex: none;\n inline-size: 88px;\n block-size: 14px;\n `,\n copy: css`\n flex: 1;\n min-inline-size: 0;\n `,\n header: css`\n display: flex;\n gap: 16px;\n align-items: flex-start;\n justify-content: space-between;\n\n ${responsive.mobile} {\n flex-direction: column;\n align-items: stretch;\n }\n `,\n headerCopy: css`\n display: flex;\n flex: 1;\n flex-direction: column;\n gap: 8px;\n\n min-inline-size: 0;\n `,\n page: css`\n display: flex;\n flex-direction: column;\n gap: 20px;\n `,\n row: css`\n display: flex;\n gap: 12px;\n align-items: center;\n\n min-block-size: 54px;\n padding-block: 12px;\n padding-inline: 16px;\n border-block-end: 1px solid ${cssVar.
|
|
1
|
+
{"version":3,"file":"style.mjs","names":[],"sources":["../../../src/dashboard/PageSkeleton/style.ts"],"sourcesContent":["import { createStaticStyles } from 'antd-style';\n\nexport const styles = createStaticStyles(({ css, cssVar, responsive }) => ({\n action: css`\n flex: none;\n inline-size: 96px;\n block-size: 32px;\n\n ${responsive.mobile} {\n inline-size: 100%;\n block-size: 44px;\n }\n `,\n cell: css`\n flex: none;\n inline-size: 88px;\n block-size: 14px;\n `,\n copy: css`\n flex: 1;\n min-inline-size: 0;\n `,\n header: css`\n display: flex;\n gap: 16px;\n align-items: flex-start;\n justify-content: space-between;\n\n ${responsive.mobile} {\n flex-direction: column;\n align-items: stretch;\n }\n `,\n headerCopy: css`\n display: flex;\n flex: 1;\n flex-direction: column;\n gap: 8px;\n\n min-inline-size: 0;\n `,\n page: css`\n display: flex;\n flex-direction: column;\n gap: 20px;\n `,\n row: css`\n display: flex;\n gap: 12px;\n align-items: center;\n\n min-block-size: 54px;\n padding-block: 12px;\n padding-inline: 16px;\n border-block-end: 1px solid var(--lobe-fill-border, ${cssVar.colorFill});\n\n &:last-child {\n border-block-end: none;\n }\n `,\n srOnly: css`\n position: absolute;\n\n overflow: hidden;\n\n inline-size: 1px;\n block-size: 1px;\n\n white-space: nowrap;\n\n clip-path: inset(50%);\n `,\n statGrid: css`\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(180px, 1fr));\n gap: 12px;\n `,\n stat: css`\n overflow: clip;\n display: flex;\n flex-direction: column;\n padding: 16px;\n `,\n statValue: css`\n inline-size: 42%;\n block-size: ${cssVar.fontSizeHeading2};\n margin-block: 6px 14px;\n `,\n table: css`\n overflow: hidden;\n min-inline-size: 0;\n `,\n tag: css`\n flex: none;\n inline-size: 72px;\n block-size: 22px;\n border-radius: ${cssVar.borderRadiusSM};\n `,\n thead: css`\n display: flex;\n gap: 12px;\n align-items: center;\n\n min-block-size: 39px;\n padding-block: 10px;\n padding-inline: 16px;\n\n background: ${cssVar.colorFillTertiary};\n `,\n theadCell: css`\n flex: none;\n block-size: 12px;\n `,\n title: css`\n inline-size: 220px;\n max-inline-size: 70%;\n block-size: ${cssVar.fontSizeHeading3};\n `,\n}));\n"],"mappings":";;AAEA,MAAa,SAAS,oBAAoB,EAAE,KAAK,QAAQ,kBAAkB;CACzE,QAAQ,GAAG;;;;;MAKP,WAAW,OAAO;;;;;CAKtB,MAAM,GAAG;;;;;CAKT,MAAM,GAAG;;;;CAIT,QAAQ,GAAG;;;;;;MAMP,WAAW,OAAO;;;;;CAKtB,YAAY,GAAG;;;;;;;;CAQf,MAAM,GAAG;;;;;CAKT,KAAK,GAAG;;;;;;;;0DAQgD,OAAO,UAAU;;;;;;CAMzE,QAAQ,GAAG;;;;;;;;;;;;CAYX,UAAU,GAAG;;;;;CAKb,MAAM,GAAG;;;;;;CAMT,WAAW,GAAG;;kBAEE,OAAO,iBAAiB;;;CAGxC,OAAO,GAAG;;;;CAIV,KAAK,GAAG;;;;qBAIW,OAAO,eAAe;;CAEzC,OAAO,GAAG;;;;;;;;;kBASM,OAAO,kBAAkB;;CAEzC,WAAW,GAAG;;;;CAId,OAAO,GAAG;;;kBAGM,OAAO,iBAAiB;;AAE1C,EAAE"}
|
|
@@ -10,7 +10,7 @@ declare const useSurfaceLink: (override?: SurfaceRenderLink) => SurfaceRenderLin
|
|
|
10
10
|
/** How many Surface cards wrap this node. A table can skip its own card when already inside one. */
|
|
11
11
|
declare const useSurfaceDepth: () => number;
|
|
12
12
|
/**
|
|
13
|
-
* Class for a dashboard card: `colorBgContainer` in light, translucent `
|
|
13
|
+
* Class for a dashboard card: `colorBgContainer` in light, translucent `colorFillQuaternary` in
|
|
14
14
|
* dark, and no fill of its own when nested in another Surface.
|
|
15
15
|
*/
|
|
16
16
|
declare const useSurfaceCardClassName: () => string;
|
|
@@ -19,7 +19,7 @@ const useSurfaceLink = (override) => override ?? use(SurfaceLinkContext);
|
|
|
19
19
|
/** How many Surface cards wrap this node. A table can skip its own card when already inside one. */
|
|
20
20
|
const useSurfaceDepth = () => use(SurfaceDepthContext);
|
|
21
21
|
/**
|
|
22
|
-
* Class for a dashboard card: `colorBgContainer` in light, translucent `
|
|
22
|
+
* Class for a dashboard card: `colorBgContainer` in light, translucent `colorFillQuaternary` in
|
|
23
23
|
* dark, and no fill of its own when nested in another Surface.
|
|
24
24
|
*/
|
|
25
25
|
const useSurfaceCardClassName = () => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"link.mjs","names":[],"sources":["../../../src/dashboard/Surface/link.tsx"],"sourcesContent":["'use client';\n\nimport { cx, useThemeMode } from 'antd-style';\nimport { createContext, type ReactNode, use } from 'react';\n\nimport { styles } from './style';\nimport type { SurfaceLinkProps, SurfaceRenderLink } from './type';\n\nconst defaultRenderLink: SurfaceRenderLink = ({ children, ...rest }: SurfaceLinkProps) => (\n <a {...rest}>{children}</a>\n);\n\nconst SurfaceLinkContext = createContext<SurfaceRenderLink>(defaultRenderLink);\n\nconst SurfaceDepthContext = createContext(0);\n\n/** Plugs the app router into every dashboard card link (Surface, MetricStrip, Section). */\nexport const SurfaceLinkProvider = ({\n children,\n renderLink,\n}: {\n children?: ReactNode;\n renderLink: SurfaceRenderLink;\n}) => <SurfaceLinkContext value={renderLink}>{children}</SurfaceLinkContext>;\n\nexport const useSurfaceLink = (override?: SurfaceRenderLink) => override ?? use(SurfaceLinkContext);\n\n/** How many Surface cards wrap this node. A table can skip its own card when already inside one. */\nexport const useSurfaceDepth = () => use(SurfaceDepthContext);\n\nexport { SurfaceDepthContext };\n\n/**\n * Class for a dashboard card: `colorBgContainer` in light, translucent `
|
|
1
|
+
{"version":3,"file":"link.mjs","names":[],"sources":["../../../src/dashboard/Surface/link.tsx"],"sourcesContent":["'use client';\n\nimport { cx, useThemeMode } from 'antd-style';\nimport { createContext, type ReactNode, use } from 'react';\n\nimport { styles } from './style';\nimport type { SurfaceLinkProps, SurfaceRenderLink } from './type';\n\nconst defaultRenderLink: SurfaceRenderLink = ({ children, ...rest }: SurfaceLinkProps) => (\n <a {...rest}>{children}</a>\n);\n\nconst SurfaceLinkContext = createContext<SurfaceRenderLink>(defaultRenderLink);\n\nconst SurfaceDepthContext = createContext(0);\n\n/** Plugs the app router into every dashboard card link (Surface, MetricStrip, Section). */\nexport const SurfaceLinkProvider = ({\n children,\n renderLink,\n}: {\n children?: ReactNode;\n renderLink: SurfaceRenderLink;\n}) => <SurfaceLinkContext value={renderLink}>{children}</SurfaceLinkContext>;\n\nexport const useSurfaceLink = (override?: SurfaceRenderLink) => override ?? use(SurfaceLinkContext);\n\n/** How many Surface cards wrap this node. A table can skip its own card when already inside one. */\nexport const useSurfaceDepth = () => use(SurfaceDepthContext);\n\nexport { SurfaceDepthContext };\n\n/**\n * Class for a dashboard card: `colorBgContainer` in light, translucent `colorFillQuaternary` in\n * dark, and no fill of its own when nested in another Surface.\n */\nexport const useSurfaceCardClassName = () => {\n const { isDarkMode } = useThemeMode();\n const depth = useSurfaceDepth();\n return cx(styles.card, isDarkMode && styles.cardDark, depth > 0 && styles.cardNested);\n};\n"],"mappings":";;;;;;AAQA,MAAM,qBAAwC,EAAE,UAAU,GAAG,WAC3D,oBAAC,KAAD;CAAG,GAAI;CAAO;AAAY,CAAA;AAG5B,MAAM,qBAAqB,cAAiC,iBAAiB;AAE7E,MAAM,sBAAsB,cAAc,CAAC;;AAG3C,MAAa,uBAAuB,EAClC,UACA,iBAII,oBAAC,oBAAD;CAAoB,OAAO;CAAa;AAA6B,CAAA;AAE3E,MAAa,kBAAkB,aAAiC,YAAY,IAAI,kBAAkB;;AAGlG,MAAa,wBAAwB,IAAI,mBAAmB;;;;;AAQ5D,MAAa,gCAAgC;CAC3C,MAAM,EAAE,eAAe,aAAa;CACpC,MAAM,QAAQ,gBAAgB;CAC9B,OAAO,GAAG,OAAO,MAAM,cAAc,OAAO,UAAU,QAAQ,KAAK,OAAO,UAAU;AACtF"}
|
|
@@ -3,17 +3,18 @@
|
|
|
3
3
|
* A content card sitting on the workspace.
|
|
4
4
|
*
|
|
5
5
|
* Backgrounds: light mode uses `colorBgContainer`. Dark mode uses the translucent
|
|
6
|
-
* `
|
|
7
|
-
*
|
|
6
|
+
* `colorFillQuaternary` (white 2%), one step below `colorFillTertiary`, for a quieter raised
|
|
7
|
+
* step on the workspace.
|
|
8
8
|
*
|
|
9
|
-
* Borders and inner dividers (table, header and cell lines, PageSkeleton, strip seams) all use
|
|
10
|
-
*
|
|
11
|
-
*
|
|
12
|
-
* `
|
|
13
|
-
*
|
|
9
|
+
* Borders and inner dividers (table, header and cell lines, PageSkeleton, strip seams) all use
|
|
10
|
+
* `--lobe-fill-border` (`colorFill` in light, `colorFillSecondary` in dark; set on `:root` by
|
|
11
|
+
* ThemeProvider). Hover / focus / stronger edges use `--lobe-fill-border-strong` (light:
|
|
12
|
+
* `colorFill` mixed 15% toward `colorText`; dark: `colorFill`). Light is Block `outlined`
|
|
13
|
+
* (`colorBgContainer` + border); dark uses translucent `colorFillQuaternary` with the same
|
|
14
|
+
* border var.
|
|
14
15
|
*
|
|
15
16
|
* Anything that must hide content scrolled beneath it (table header cells, pinned and sticky
|
|
16
|
-
* cells, their scroll shadows) uses `--lobe-surface-bg-solid`: the same white
|
|
17
|
+
* cells, their scroll shadows) uses `--lobe-surface-bg-solid`: the same white 2% blended onto
|
|
17
18
|
* `--lobe-surface-canvas` (default `colorBgContainer`, the ConsoleShell workspace). `color-mix`
|
|
18
19
|
* in srgb with an opaque base is plain alpha compositing, so it matches the translucent card.
|
|
19
20
|
* Set `--lobe-surface-canvas` when a card sits on another page color.
|
|
@@ -4,17 +4,18 @@ import { createStaticStyles } from "antd-style";
|
|
|
4
4
|
* A content card sitting on the workspace.
|
|
5
5
|
*
|
|
6
6
|
* Backgrounds: light mode uses `colorBgContainer`. Dark mode uses the translucent
|
|
7
|
-
* `
|
|
8
|
-
*
|
|
7
|
+
* `colorFillQuaternary` (white 2%), one step below `colorFillTertiary`, for a quieter raised
|
|
8
|
+
* step on the workspace.
|
|
9
9
|
*
|
|
10
|
-
* Borders and inner dividers (table, header and cell lines, PageSkeleton, strip seams) all use
|
|
11
|
-
*
|
|
12
|
-
*
|
|
13
|
-
* `
|
|
14
|
-
*
|
|
10
|
+
* Borders and inner dividers (table, header and cell lines, PageSkeleton, strip seams) all use
|
|
11
|
+
* `--lobe-fill-border` (`colorFill` in light, `colorFillSecondary` in dark; set on `:root` by
|
|
12
|
+
* ThemeProvider). Hover / focus / stronger edges use `--lobe-fill-border-strong` (light:
|
|
13
|
+
* `colorFill` mixed 15% toward `colorText`; dark: `colorFill`). Light is Block `outlined`
|
|
14
|
+
* (`colorBgContainer` + border); dark uses translucent `colorFillQuaternary` with the same
|
|
15
|
+
* border var.
|
|
15
16
|
*
|
|
16
17
|
* Anything that must hide content scrolled beneath it (table header cells, pinned and sticky
|
|
17
|
-
* cells, their scroll shadows) uses `--lobe-surface-bg-solid`: the same white
|
|
18
|
+
* cells, their scroll shadows) uses `--lobe-surface-bg-solid`: the same white 2% blended onto
|
|
18
19
|
* `--lobe-surface-canvas` (default `colorBgContainer`, the ConsoleShell workspace). `color-mix`
|
|
19
20
|
* in srgb with an opaque base is plain alpha compositing, so it matches the translucent card.
|
|
20
21
|
* Set `--lobe-surface-canvas` when a card sits on another page color.
|
|
@@ -32,7 +33,7 @@ const styles = createStaticStyles(({ css, cssVar }) => ({
|
|
|
32
33
|
|
|
33
34
|
&&,
|
|
34
35
|
&&:hover {
|
|
35
|
-
border: 1px solid ${cssVar.
|
|
36
|
+
border: 1px solid var(--lobe-fill-border, ${cssVar.colorFill});
|
|
36
37
|
border-radius: ${cssVar.borderRadiusLG};
|
|
37
38
|
background: var(--lobe-surface-bg);
|
|
38
39
|
box-shadow: rgb(0 0 0 / 4%) 0 1px 2px 0;
|
|
@@ -40,16 +41,16 @@ const styles = createStaticStyles(({ css, cssVar }) => ({
|
|
|
40
41
|
`,
|
|
41
42
|
cardDark: css`
|
|
42
43
|
&&& {
|
|
43
|
-
--lobe-surface-bg: ${cssVar.
|
|
44
|
+
--lobe-surface-bg: ${cssVar.colorFillQuaternary};
|
|
44
45
|
|
|
45
|
-
/*
|
|
46
|
+
/* colorFillQuaternary is white 2% in dark; blend the same amount onto the page. */
|
|
46
47
|
--lobe-surface-bg-solid: color-mix(
|
|
47
48
|
in srgb,
|
|
48
|
-
#fff
|
|
49
|
+
#fff 2%,
|
|
49
50
|
var(--lobe-surface-canvas, ${cssVar.colorBgContainer})
|
|
50
51
|
);
|
|
51
52
|
|
|
52
|
-
/* Border:
|
|
53
|
+
/* Border: --lobe-fill-border (dark: colorFillSecondary) from \`card\`. */
|
|
53
54
|
}
|
|
54
55
|
`,
|
|
55
56
|
cardNested: css`
|
|
@@ -124,7 +125,7 @@ const styles = createStaticStyles(({ css, cssVar }) => ({
|
|
|
124
125
|
|
|
125
126
|
&& .ant-table-css-var,
|
|
126
127
|
&& .ant-table-wrapper {
|
|
127
|
-
--ant-table-border-color: ${cssVar.
|
|
128
|
+
--ant-table-border-color: var(--lobe-fill-border, ${cssVar.colorFill});
|
|
128
129
|
--ant-table-row-hover-bg: color-mix(
|
|
129
130
|
in srgb,
|
|
130
131
|
${cssVar.colorText} 6%,
|
|
@@ -138,7 +139,7 @@ const styles = createStaticStyles(({ css, cssVar }) => ({
|
|
|
138
139
|
white-space: nowrap;
|
|
139
140
|
|
|
140
141
|
background: var(--lobe-surface-bg-solid, ${cssVar.colorBgContainer});
|
|
141
|
-
box-shadow: inset 0 -1px 0 ${cssVar.
|
|
142
|
+
box-shadow: inset 0 -1px 0 var(--lobe-fill-border, ${cssVar.colorFill});
|
|
142
143
|
}
|
|
143
144
|
|
|
144
145
|
/* Pinned body cells inherit the transparent body, so a scrolled cell paints
|
|
@@ -202,7 +203,7 @@ const styles = createStaticStyles(({ css, cssVar }) => ({
|
|
|
202
203
|
}
|
|
203
204
|
|
|
204
205
|
&& td {
|
|
205
|
-
border-block-end-color: ${cssVar.
|
|
206
|
+
border-block-end-color: var(--lobe-fill-border, ${cssVar.colorFill});
|
|
206
207
|
}
|
|
207
208
|
|
|
208
209
|
&& tr:hover > td,
|
|
@@ -224,7 +225,7 @@ const styles = createStaticStyles(({ css, cssVar }) => ({
|
|
|
224
225
|
cardLinked: css`
|
|
225
226
|
&&:hover,
|
|
226
227
|
&&:focus-within {
|
|
227
|
-
border-color: ${cssVar.colorFill};
|
|
228
|
+
border-color: var(--lobe-fill-border-strong, ${cssVar.colorFill});
|
|
228
229
|
}
|
|
229
230
|
|
|
230
231
|
&&:hover [data-surface-arrow] {
|
|
@@ -258,7 +259,7 @@ const styles = createStaticStyles(({ css, cssVar }) => ({
|
|
|
258
259
|
min-block-size: 48px;
|
|
259
260
|
padding-block: 8px;
|
|
260
261
|
padding-inline: 16px;
|
|
261
|
-
border-block-end: 1px solid ${cssVar.
|
|
262
|
+
border-block-end: 1px solid var(--lobe-fill-border, ${cssVar.colorFill});
|
|
262
263
|
`,
|
|
263
264
|
heading: css`
|
|
264
265
|
min-inline-size: 0;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"style.mjs","names":[],"sources":["../../../src/dashboard/Surface/style.ts"],"sourcesContent":["import { createStaticStyles } from 'antd-style';\n\n/**\n * A content card sitting on the workspace.\n *\n * Backgrounds: light mode uses `colorBgContainer`. Dark mode uses the translucent\n * `colorFillTertiary` (white 6%): on the #0d0d0d workspace it reads as about #1c1c1c, a subtle\n * raised step. `colorFillQuaternary` (white 2%, about #111) would barely separate from the page.\n *\n * Borders and inner dividers (table, header and cell lines, PageSkeleton, strip seams) all use the\n * outer border token `colorBorderSecondary` (light and dark); hover and focus use the stronger\n * `colorFill`. The card follows Block: light is Block `outlined` (`colorBgContainer` +\n * `colorBorderSecondary`), dark uses the Block `filled` background (`colorFillTertiary`) with the\n * same `colorBorderSecondary` border.\n *\n * Anything that must hide content scrolled beneath it (table header cells, pinned and sticky\n * cells, their scroll shadows) uses `--lobe-surface-bg-solid`: the same white 6% blended onto\n * `--lobe-surface-canvas` (default `colorBgContainer`, the ConsoleShell workspace). `color-mix`\n * in srgb with an opaque base is plain alpha compositing, so it matches the translucent card.\n * Set `--lobe-surface-canvas` when a card sits on another page color.\n *\n * A Surface inside another Surface (`useSurfaceDepth() > 0`) drops its own fill so fills do not\n * stack. Row hover backgrounds keep their own mix. Layout containers (ConsoleShell, ConsoleNav,\n * FilterSidebar split divider, AuthLayout page canvas) keep their own tokens.\n *\n * Apply the card with `useSurfaceCardClassName()`; plain `surfaceStyles.card` is the light look.\n */\nexport const styles = createStaticStyles(({ css, cssVar }) => ({\n card: css`\n --lobe-surface-bg: ${cssVar.colorBgContainer};\n --lobe-surface-bg-solid: ${cssVar.colorBgContainer};\n\n &&,\n &&:hover {\n border: 1px solid ${cssVar.colorBorderSecondary};\n border-radius: ${cssVar.borderRadiusLG};\n background: var(--lobe-surface-bg);\n box-shadow: rgb(0 0 0 / 4%) 0 1px 2px 0;\n }\n `,\n cardDark: css`\n &&& {\n --lobe-surface-bg: ${cssVar.colorFillTertiary};\n\n /* colorFillTertiary is white 6% in dark; blend the same amount onto the page. */\n --lobe-surface-bg-solid: color-mix(\n in srgb,\n #fff 6%,\n var(--lobe-surface-canvas, ${cssVar.colorBgContainer})\n );\n\n /* Border: Block's border token (colorBorderSecondary) in both modes, from \\`card\\`. */\n }\n `,\n cardNested: css`\n &&&,\n &&&:hover {\n background: transparent;\n }\n `,\n chart: css`\n min-inline-size: 0;\n `,\n /**\n * Rounded corners clip whatever reaches the edge: a bled table, header rule, chart, or a\n * tab / segmented indicator. \\`clip\\` (not \\`hidden\\`) creates no scroll container, so sticky\n * table headers keep sticking to the page scroller; popups are portaled and unaffected.\n */\n clip: css`\n overflow: clip;\n `,\n loading: css`\n padding-block: 4px 8px;\n `,\n arrow: css`\n flex: none;\n\n margin-block-start: 8px;\n margin-inline-start: auto;\n\n color: ${cssVar.colorTextTertiary};\n\n transition:\n color 150ms ease-out,\n transform 150ms ease-out;\n `,\n arrowLink: css`\n display: flex;\n flex: none;\n align-items: center;\n color: inherit;\n\n & [data-surface-arrow] {\n margin-block-start: 0;\n }\n `,\n bleed: css`\n && th,\n && td {\n padding-inline: 16px;\n }\n\n && th {\n white-space: nowrap;\n }\n `,\n body: css`\n --surface-pad-inline: 16px;\n --surface-pad-block: 16px;\n\n padding: 16px;\n `,\n /** Table and header rules for the rich card. Kept off `card` so the shared class stays a plain frame. */\n content: css`\n min-inline-size: 0;\n\n /* Ant Design paints its own container color on .ant-table and the cells.\n Clear it so the card background shows through; the card owns the fill. */\n && .ant-table,\n && th,\n && td {\n background: transparent;\n }\n\n && .ant-table-css-var,\n && .ant-table-wrapper {\n --ant-table-border-color: ${cssVar.colorBorderSecondary};\n --ant-table-row-hover-bg: color-mix(\n in srgb,\n ${cssVar.colorText} 6%,\n ${cssVar.colorBgElevated}\n );\n }\n\n && th {\n font-weight: 500;\n color: ${cssVar.colorTextSecondary};\n white-space: nowrap;\n\n background: var(--lobe-surface-bg-solid, ${cssVar.colorBgContainer});\n box-shadow: inset 0 -1px 0 ${cssVar.colorBorderSecondary};\n }\n\n /* Pinned body cells inherit the transparent body, so a scrolled cell paints\n straight through them. Frost with the card color. Header pins stay the\n same solid fill as the rest of the header — a translucent header reads\n as a lighter strip in dark mode. */\n && td.ant-table-cell-fix-start,\n && td.ant-table-cell-fix-end {\n background: var(--lobe-surface-bg-solid, ${cssVar.colorBgContainer});\n backdrop-filter: blur(12px);\n }\n\n && td.ant-table-cell-fix-end-shadow-show::after {\n background: linear-gradient(\n to left,\n color-mix(\n in srgb,\n var(--lobe-surface-bg-solid, ${cssVar.colorBgContainer}) 72%,\n transparent\n ),\n transparent\n );\n backdrop-filter: blur(8px);\n }\n\n && td.ant-table-cell-fix-start-shadow-show::after {\n background: linear-gradient(\n to right,\n color-mix(\n in srgb,\n var(--lobe-surface-bg-solid, ${cssVar.colorBgContainer}) 72%,\n transparent\n ),\n transparent\n );\n backdrop-filter: blur(8px);\n }\n\n [dir='rtl'] && td.ant-table-cell-fix-end-shadow-show::after {\n background: linear-gradient(\n to right,\n color-mix(\n in srgb,\n var(--lobe-surface-bg-solid, ${cssVar.colorBgContainer}) 72%,\n transparent\n ),\n transparent\n );\n }\n\n [dir='rtl'] && td.ant-table-cell-fix-start-shadow-show::after {\n background: linear-gradient(\n to left,\n color-mix(\n in srgb,\n var(--lobe-surface-bg-solid, ${cssVar.colorBgContainer}) 72%,\n transparent\n ),\n transparent\n );\n }\n\n && td {\n border-block-end-color: ${cssVar.colorBorderSecondary};\n }\n\n && tr:hover > td,\n && .ant-table-tbody > tr.ant-table-row:hover > td {\n background: color-mix(in srgb, ${cssVar.colorText} 6%, ${cssVar.colorBgElevated});\n }\n\n /* base-ui Table pins with inline position:sticky, not .ant-table-cell-fix-*.\n The transparent body rule above would let scrolled text show through. */\n && td[style*='sticky'] {\n background: var(--lobe-surface-bg-solid, ${cssVar.colorBgContainer});\n }\n\n && tr:hover > td[style*='sticky'] {\n background: color-mix(in srgb, ${cssVar.colorText} 6%, ${cssVar.colorBgElevated});\n }\n `,\n /** Whole card answers hover when its header drills into another page. */\n cardLinked: css`\n &&:hover,\n &&:focus-within {\n border-color: ${cssVar.colorFill};\n }\n\n &&:hover [data-surface-arrow] {\n transform: translate(1px, -1px);\n color: ${cssVar.colorText};\n }\n `,\n desc: css`\n margin-block-start: -4px;\n\n font-size: 13px;\n font-weight: 400;\n line-height: 1.45;\n color: ${cssVar.colorTextSecondary};\n `,\n /* One fixed control row (32px, the height of a small Segmented or a default ActionIcon), so a\n header with controls is exactly as tall as one without, and the controls sit centered with\n 8px clear above the divider. */\n extra: css`\n display: flex;\n flex: none;\n gap: 8px;\n align-items: center;\n\n block-size: 32px;\n `,\n header: css`\n display: flex;\n gap: 12px;\n align-items: flex-start;\n justify-content: space-between;\n\n box-sizing: border-box;\n min-block-size: 48px;\n padding-block: 8px;\n padding-inline: 16px;\n border-block-end: 1px solid ${cssVar.colorBorderSecondary};\n `,\n heading: css`\n min-inline-size: 0;\n `,\n headingLink: css`\n display: flex;\n flex: 1;\n gap: 12px;\n align-items: flex-start;\n\n min-inline-size: 0;\n\n color: inherit;\n text-decoration: none;\n\n &:hover {\n color: inherit;\n }\n `,\n /**\n * A table inside padded card body meets the card's left, right, and bottom\n * edges. A table that is the only body content also meets the header.\n * Padding amounts come from `--surface-pad-*` on the same element.\n */\n tableBleed: css`\n /* A table nested in a cell keeps the cell's own inset. */\n && :has(> [data-table-wrapper]):not(td :has(> [data-table-wrapper])) {\n width: calc(100% + 2 * var(--surface-pad-inline, 16px));\n margin-inline: calc(-1 * var(--surface-pad-inline, 16px));\n }\n\n && :has(> [data-table-wrapper]):not(td :has(> [data-table-wrapper])):last-child {\n margin-block-end: calc(-1 * var(--surface-pad-block, 16px));\n }\n\n && :has(> [data-table-wrapper]):not(td :has(> [data-table-wrapper])):first-child:last-child {\n margin-block-start: calc(-1 * var(--surface-pad-block, 16px));\n }\n\n /* ProTable keeps its search and toolbar in the padding. The table itself\n meets the card's left, right, and bottom edges. Lower-specificity\n selectors stay above the :has(th/td) rules for stylelint. */\n && .ant-table-css-var,\n && .ant-table-wrapper {\n --ant-table-cell-padding-inline: var(--surface-pad-inline, 16px);\n --ant-table-cell-padding-inline-md: var(--surface-pad-inline, 16px);\n --ant-table-cell-padding-inline-sm: var(--surface-pad-inline, 16px);\n --ant-table-header-border-radius: 0;\n }\n\n && .ant-table-wrapper {\n width: calc(100% + 2 * var(--surface-pad-inline, 16px));\n max-width: none;\n margin-inline: calc(-1 * var(--surface-pad-inline, 16px));\n }\n\n /* A plain table that is the card body meets the header and the bottom edge.\n Its own corner radius would otherwise float inside the card padding. */\n && > .lobe-flex:only-child > .ant-table-wrapper:only-child {\n margin-block: calc(-1 * var(--surface-pad-block, 16px));\n }\n\n && .ant-pro-table:last-child {\n margin-block-end: calc(-1 * var(--surface-pad-block, 16px));\n }\n\n && .ant-table-wrapper .ant-table,\n && .ant-table-wrapper .ant-table-container,\n && .ant-table-thead > tr > th,\n && .ant-table-thead > tr > th:first-child,\n && .ant-table-thead > tr > th:last-child {\n border-radius: 0;\n }\n\n && .ant-table-wrapper .ant-table-cell {\n padding-inline: var(--surface-pad-inline, 16px);\n }\n\n && .ant-table-wrapper .ant-pagination {\n margin-block: 0;\n padding-block: 12px;\n padding-inline: var(--surface-pad-inline, 16px);\n }\n\n && :has(> [data-table-wrapper]):not(td :has(> [data-table-wrapper])) th,\n && :has(> [data-table-wrapper]):not(td :has(> [data-table-wrapper])) td {\n padding-inline: var(--surface-pad-inline, 16px);\n }\n\n /* The root's negative bottom margin includes this sibling. Without block\n padding the pager sits on the card edge. Same inset as the ant pagination. */\n &&\n :has(> [data-table-wrapper]):not(td :has(> [data-table-wrapper]))\n > :not([data-table-wrapper]) {\n margin-block: 0;\n padding-block: 12px;\n padding-inline: var(--surface-pad-inline, 16px);\n }\n `,\n title: css`\n overflow: hidden;\n\n min-inline-size: 0;\n\n font-size: 14px;\n font-weight: 500;\n\n /* The title line is the 32px control row; extra and the arrow center on it, and a\n description adds its own line below without moving them. */\n line-height: 32px;\n color: ${cssVar.colorText};\n text-overflow: ellipsis;\n white-space: nowrap;\n `,\n}));\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;AA2BA,MAAa,SAAS,oBAAoB,EAAE,KAAK,cAAc;CAC7D,MAAM,GAAG;yBACc,OAAO,iBAAiB;+BAClB,OAAO,iBAAiB;;;;0BAI7B,OAAO,qBAAqB;uBAC/B,OAAO,eAAe;;;;;CAK3C,UAAU,GAAG;;2BAEY,OAAO,kBAAkB;;;;;;qCAMf,OAAO,iBAAiB;;;;;;CAM3D,YAAY,GAAG;;;;;;CAMf,OAAO,GAAG;;;;;;;;CAQV,MAAM,GAAG;;;CAGT,SAAS,GAAG;;;CAGZ,OAAO,GAAG;;;;;;aAMC,OAAO,kBAAkB;;;;;;CAMpC,WAAW,GAAG;;;;;;;;;;CAUd,OAAO,GAAG;;;;;;;;;;CAUV,MAAM,GAAG;;;;;;;CAOT,SAAS,GAAG;;;;;;;;;;;;;kCAaoB,OAAO,qBAAqB;;;UAGpD,OAAO,UAAU;UACjB,OAAO,gBAAgB;;;;;;eAMlB,OAAO,mBAAmB;;;iDAGQ,OAAO,iBAAiB;mCACtC,OAAO,qBAAqB;;;;;;;;;iDASd,OAAO,iBAAiB;;;;;;;;;yCAShC,OAAO,iBAAiB;;;;;;;;;;;;;yCAaxB,OAAO,iBAAiB;;;;;;;;;;;;;yCAaxB,OAAO,iBAAiB;;;;;;;;;;;;yCAYxB,OAAO,iBAAiB;;;;;;;;gCAQjC,OAAO,qBAAqB;;;;;uCAKrB,OAAO,UAAU,OAAO,OAAO,gBAAgB;;;;;;iDAMrC,OAAO,iBAAiB;;;;uCAIlC,OAAO,UAAU,OAAO,OAAO,gBAAgB;;;;CAIpF,YAAY,GAAG;;;sBAGK,OAAO,UAAU;;;;;eAKxB,OAAO,UAAU;;;CAG9B,MAAM,GAAG;;;;;;aAME,OAAO,mBAAmB;;CAKrC,OAAO,GAAG;;;;;;;;CAQV,QAAQ,GAAG;;;;;;;;;;kCAUqB,OAAO,qBAAqB;;CAE5D,SAAS,GAAG;;;CAGZ,aAAa,GAAG;;;;;;;;;;;;;;;;;;;;CAoBhB,YAAY,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA2Ef,OAAO,GAAG;;;;;;;;;;;aAWC,OAAO,UAAU;;;;AAI9B,EAAE"}
|
|
1
|
+
{"version":3,"file":"style.mjs","names":[],"sources":["../../../src/dashboard/Surface/style.ts"],"sourcesContent":["import { createStaticStyles } from 'antd-style';\n\n/**\n * A content card sitting on the workspace.\n *\n * Backgrounds: light mode uses `colorBgContainer`. Dark mode uses the translucent\n * `colorFillQuaternary` (white 2%), one step below `colorFillTertiary`, for a quieter raised\n * step on the workspace.\n *\n * Borders and inner dividers (table, header and cell lines, PageSkeleton, strip seams) all use\n * `--lobe-fill-border` (`colorFill` in light, `colorFillSecondary` in dark; set on `:root` by\n * ThemeProvider). Hover / focus / stronger edges use `--lobe-fill-border-strong` (light:\n * `colorFill` mixed 15% toward `colorText`; dark: `colorFill`). Light is Block `outlined`\n * (`colorBgContainer` + border); dark uses translucent `colorFillQuaternary` with the same\n * border var.\n *\n * Anything that must hide content scrolled beneath it (table header cells, pinned and sticky\n * cells, their scroll shadows) uses `--lobe-surface-bg-solid`: the same white 2% blended onto\n * `--lobe-surface-canvas` (default `colorBgContainer`, the ConsoleShell workspace). `color-mix`\n * in srgb with an opaque base is plain alpha compositing, so it matches the translucent card.\n * Set `--lobe-surface-canvas` when a card sits on another page color.\n *\n * A Surface inside another Surface (`useSurfaceDepth() > 0`) drops its own fill so fills do not\n * stack. Row hover backgrounds keep their own mix. Layout containers (ConsoleShell, ConsoleNav,\n * FilterSidebar split divider, AuthLayout page canvas) keep their own tokens.\n *\n * Apply the card with `useSurfaceCardClassName()`; plain `surfaceStyles.card` is the light look.\n */\nexport const styles = createStaticStyles(({ css, cssVar }) => ({\n card: css`\n --lobe-surface-bg: ${cssVar.colorBgContainer};\n --lobe-surface-bg-solid: ${cssVar.colorBgContainer};\n\n &&,\n &&:hover {\n border: 1px solid var(--lobe-fill-border, ${cssVar.colorFill});\n border-radius: ${cssVar.borderRadiusLG};\n background: var(--lobe-surface-bg);\n box-shadow: rgb(0 0 0 / 4%) 0 1px 2px 0;\n }\n `,\n cardDark: css`\n &&& {\n --lobe-surface-bg: ${cssVar.colorFillQuaternary};\n\n /* colorFillQuaternary is white 2% in dark; blend the same amount onto the page. */\n --lobe-surface-bg-solid: color-mix(\n in srgb,\n #fff 2%,\n var(--lobe-surface-canvas, ${cssVar.colorBgContainer})\n );\n\n /* Border: --lobe-fill-border (dark: colorFillSecondary) from \\`card\\`. */\n }\n `,\n cardNested: css`\n &&&,\n &&&:hover {\n background: transparent;\n }\n `,\n chart: css`\n min-inline-size: 0;\n `,\n /**\n * Rounded corners clip whatever reaches the edge: a bled table, header rule, chart, or a\n * tab / segmented indicator. \\`clip\\` (not \\`hidden\\`) creates no scroll container, so sticky\n * table headers keep sticking to the page scroller; popups are portaled and unaffected.\n */\n clip: css`\n overflow: clip;\n `,\n loading: css`\n padding-block: 4px 8px;\n `,\n arrow: css`\n flex: none;\n\n margin-block-start: 8px;\n margin-inline-start: auto;\n\n color: ${cssVar.colorTextTertiary};\n\n transition:\n color 150ms ease-out,\n transform 150ms ease-out;\n `,\n arrowLink: css`\n display: flex;\n flex: none;\n align-items: center;\n color: inherit;\n\n & [data-surface-arrow] {\n margin-block-start: 0;\n }\n `,\n bleed: css`\n && th,\n && td {\n padding-inline: 16px;\n }\n\n && th {\n white-space: nowrap;\n }\n `,\n body: css`\n --surface-pad-inline: 16px;\n --surface-pad-block: 16px;\n\n padding: 16px;\n `,\n /** Table and header rules for the rich card. Kept off `card` so the shared class stays a plain frame. */\n content: css`\n min-inline-size: 0;\n\n /* Ant Design paints its own container color on .ant-table and the cells.\n Clear it so the card background shows through; the card owns the fill. */\n && .ant-table,\n && th,\n && td {\n background: transparent;\n }\n\n && .ant-table-css-var,\n && .ant-table-wrapper {\n --ant-table-border-color: var(--lobe-fill-border, ${cssVar.colorFill});\n --ant-table-row-hover-bg: color-mix(\n in srgb,\n ${cssVar.colorText} 6%,\n ${cssVar.colorBgElevated}\n );\n }\n\n && th {\n font-weight: 500;\n color: ${cssVar.colorTextSecondary};\n white-space: nowrap;\n\n background: var(--lobe-surface-bg-solid, ${cssVar.colorBgContainer});\n box-shadow: inset 0 -1px 0 var(--lobe-fill-border, ${cssVar.colorFill});\n }\n\n /* Pinned body cells inherit the transparent body, so a scrolled cell paints\n straight through them. Frost with the card color. Header pins stay the\n same solid fill as the rest of the header — a translucent header reads\n as a lighter strip in dark mode. */\n && td.ant-table-cell-fix-start,\n && td.ant-table-cell-fix-end {\n background: var(--lobe-surface-bg-solid, ${cssVar.colorBgContainer});\n backdrop-filter: blur(12px);\n }\n\n && td.ant-table-cell-fix-end-shadow-show::after {\n background: linear-gradient(\n to left,\n color-mix(\n in srgb,\n var(--lobe-surface-bg-solid, ${cssVar.colorBgContainer}) 72%,\n transparent\n ),\n transparent\n );\n backdrop-filter: blur(8px);\n }\n\n && td.ant-table-cell-fix-start-shadow-show::after {\n background: linear-gradient(\n to right,\n color-mix(\n in srgb,\n var(--lobe-surface-bg-solid, ${cssVar.colorBgContainer}) 72%,\n transparent\n ),\n transparent\n );\n backdrop-filter: blur(8px);\n }\n\n [dir='rtl'] && td.ant-table-cell-fix-end-shadow-show::after {\n background: linear-gradient(\n to right,\n color-mix(\n in srgb,\n var(--lobe-surface-bg-solid, ${cssVar.colorBgContainer}) 72%,\n transparent\n ),\n transparent\n );\n }\n\n [dir='rtl'] && td.ant-table-cell-fix-start-shadow-show::after {\n background: linear-gradient(\n to left,\n color-mix(\n in srgb,\n var(--lobe-surface-bg-solid, ${cssVar.colorBgContainer}) 72%,\n transparent\n ),\n transparent\n );\n }\n\n && td {\n border-block-end-color: var(--lobe-fill-border, ${cssVar.colorFill});\n }\n\n && tr:hover > td,\n && .ant-table-tbody > tr.ant-table-row:hover > td {\n background: color-mix(in srgb, ${cssVar.colorText} 6%, ${cssVar.colorBgElevated});\n }\n\n /* base-ui Table pins with inline position:sticky, not .ant-table-cell-fix-*.\n The transparent body rule above would let scrolled text show through. */\n && td[style*='sticky'] {\n background: var(--lobe-surface-bg-solid, ${cssVar.colorBgContainer});\n }\n\n && tr:hover > td[style*='sticky'] {\n background: color-mix(in srgb, ${cssVar.colorText} 6%, ${cssVar.colorBgElevated});\n }\n `,\n /** Whole card answers hover when its header drills into another page. */\n cardLinked: css`\n &&:hover,\n &&:focus-within {\n border-color: var(--lobe-fill-border-strong, ${cssVar.colorFill});\n }\n\n &&:hover [data-surface-arrow] {\n transform: translate(1px, -1px);\n color: ${cssVar.colorText};\n }\n `,\n desc: css`\n margin-block-start: -4px;\n\n font-size: 13px;\n font-weight: 400;\n line-height: 1.45;\n color: ${cssVar.colorTextSecondary};\n `,\n /* One fixed control row (32px, the height of a small Segmented or a default ActionIcon), so a\n header with controls is exactly as tall as one without, and the controls sit centered with\n 8px clear above the divider. */\n extra: css`\n display: flex;\n flex: none;\n gap: 8px;\n align-items: center;\n\n block-size: 32px;\n `,\n header: css`\n display: flex;\n gap: 12px;\n align-items: flex-start;\n justify-content: space-between;\n\n box-sizing: border-box;\n min-block-size: 48px;\n padding-block: 8px;\n padding-inline: 16px;\n border-block-end: 1px solid var(--lobe-fill-border, ${cssVar.colorFill});\n `,\n heading: css`\n min-inline-size: 0;\n `,\n headingLink: css`\n display: flex;\n flex: 1;\n gap: 12px;\n align-items: flex-start;\n\n min-inline-size: 0;\n\n color: inherit;\n text-decoration: none;\n\n &:hover {\n color: inherit;\n }\n `,\n /**\n * A table inside padded card body meets the card's left, right, and bottom\n * edges. A table that is the only body content also meets the header.\n * Padding amounts come from `--surface-pad-*` on the same element.\n */\n tableBleed: css`\n /* A table nested in a cell keeps the cell's own inset. */\n && :has(> [data-table-wrapper]):not(td :has(> [data-table-wrapper])) {\n width: calc(100% + 2 * var(--surface-pad-inline, 16px));\n margin-inline: calc(-1 * var(--surface-pad-inline, 16px));\n }\n\n && :has(> [data-table-wrapper]):not(td :has(> [data-table-wrapper])):last-child {\n margin-block-end: calc(-1 * var(--surface-pad-block, 16px));\n }\n\n && :has(> [data-table-wrapper]):not(td :has(> [data-table-wrapper])):first-child:last-child {\n margin-block-start: calc(-1 * var(--surface-pad-block, 16px));\n }\n\n /* ProTable keeps its search and toolbar in the padding. The table itself\n meets the card's left, right, and bottom edges. Lower-specificity\n selectors stay above the :has(th/td) rules for stylelint. */\n && .ant-table-css-var,\n && .ant-table-wrapper {\n --ant-table-cell-padding-inline: var(--surface-pad-inline, 16px);\n --ant-table-cell-padding-inline-md: var(--surface-pad-inline, 16px);\n --ant-table-cell-padding-inline-sm: var(--surface-pad-inline, 16px);\n --ant-table-header-border-radius: 0;\n }\n\n && .ant-table-wrapper {\n width: calc(100% + 2 * var(--surface-pad-inline, 16px));\n max-width: none;\n margin-inline: calc(-1 * var(--surface-pad-inline, 16px));\n }\n\n /* A plain table that is the card body meets the header and the bottom edge.\n Its own corner radius would otherwise float inside the card padding. */\n && > .lobe-flex:only-child > .ant-table-wrapper:only-child {\n margin-block: calc(-1 * var(--surface-pad-block, 16px));\n }\n\n && .ant-pro-table:last-child {\n margin-block-end: calc(-1 * var(--surface-pad-block, 16px));\n }\n\n && .ant-table-wrapper .ant-table,\n && .ant-table-wrapper .ant-table-container,\n && .ant-table-thead > tr > th,\n && .ant-table-thead > tr > th:first-child,\n && .ant-table-thead > tr > th:last-child {\n border-radius: 0;\n }\n\n && .ant-table-wrapper .ant-table-cell {\n padding-inline: var(--surface-pad-inline, 16px);\n }\n\n && .ant-table-wrapper .ant-pagination {\n margin-block: 0;\n padding-block: 12px;\n padding-inline: var(--surface-pad-inline, 16px);\n }\n\n && :has(> [data-table-wrapper]):not(td :has(> [data-table-wrapper])) th,\n && :has(> [data-table-wrapper]):not(td :has(> [data-table-wrapper])) td {\n padding-inline: var(--surface-pad-inline, 16px);\n }\n\n /* The root's negative bottom margin includes this sibling. Without block\n padding the pager sits on the card edge. Same inset as the ant pagination. */\n &&\n :has(> [data-table-wrapper]):not(td :has(> [data-table-wrapper]))\n > :not([data-table-wrapper]) {\n margin-block: 0;\n padding-block: 12px;\n padding-inline: var(--surface-pad-inline, 16px);\n }\n `,\n title: css`\n overflow: hidden;\n\n min-inline-size: 0;\n\n font-size: 14px;\n font-weight: 500;\n\n /* The title line is the 32px control row; extra and the arrow center on it, and a\n description adds its own line below without moving them. */\n line-height: 32px;\n color: ${cssVar.colorText};\n text-overflow: ellipsis;\n white-space: nowrap;\n `,\n}));\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AA4BA,MAAa,SAAS,oBAAoB,EAAE,KAAK,cAAc;CAC7D,MAAM,GAAG;yBACc,OAAO,iBAAiB;+BAClB,OAAO,iBAAiB;;;;kDAIL,OAAO,UAAU;uBAC5C,OAAO,eAAe;;;;;CAK3C,UAAU,GAAG;;2BAEY,OAAO,oBAAoB;;;;;;qCAMjB,OAAO,iBAAiB;;;;;;CAM3D,YAAY,GAAG;;;;;;CAMf,OAAO,GAAG;;;;;;;;CAQV,MAAM,GAAG;;;CAGT,SAAS,GAAG;;;CAGZ,OAAO,GAAG;;;;;;aAMC,OAAO,kBAAkB;;;;;;CAMpC,WAAW,GAAG;;;;;;;;;;CAUd,OAAO,GAAG;;;;;;;;;;CAUV,MAAM,GAAG;;;;;;;CAOT,SAAS,GAAG;;;;;;;;;;;;;0DAa4C,OAAO,UAAU;;;UAGjE,OAAO,UAAU;UACjB,OAAO,gBAAgB;;;;;;eAMlB,OAAO,mBAAmB;;;iDAGQ,OAAO,iBAAiB;2DACd,OAAO,UAAU;;;;;;;;;iDAS3B,OAAO,iBAAiB;;;;;;;;;yCAShC,OAAO,iBAAiB;;;;;;;;;;;;;yCAaxB,OAAO,iBAAiB;;;;;;;;;;;;;yCAaxB,OAAO,iBAAiB;;;;;;;;;;;;yCAYxB,OAAO,iBAAiB;;;;;;;;wDAQT,OAAO,UAAU;;;;;uCAKlC,OAAO,UAAU,OAAO,OAAO,gBAAgB;;;;;;iDAMrC,OAAO,iBAAiB;;;;uCAIlC,OAAO,UAAU,OAAO,OAAO,gBAAgB;;;;CAIpF,YAAY,GAAG;;;qDAGoC,OAAO,UAAU;;;;;eAKvD,OAAO,UAAU;;;CAG9B,MAAM,GAAG;;;;;;aAME,OAAO,mBAAmB;;CAKrC,OAAO,GAAG;;;;;;;;CAQV,QAAQ,GAAG;;;;;;;;;;0DAU6C,OAAO,UAAU;;CAEzE,SAAS,GAAG;;;CAGZ,aAAa,GAAG;;;;;;;;;;;;;;;;;;;;CAoBhB,YAAY,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA2Ef,OAAO,GAAG;;;;;;;;;;;aAWC,OAAO,UAAU;;;;AAI9B,EAAE"}
|