@rojaostudio/ds 2.0.0-next.3 → 2.0.0-next.30
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/README.md +42 -2
- package/THIRD_PARTY_NOTICES.md +66 -0
- package/dist/components/avatar.d.ts +20 -12
- package/dist/components/avatar.js +8 -6
- package/dist/components/badge.d.ts +7 -6
- package/dist/components/badge.js +2 -1
- package/dist/components/breadcrumb.d.ts +4 -4
- package/dist/components/breadcrumb.js +1 -1
- package/dist/components/bubble.d.ts +26 -11
- package/dist/components/bubble.js +3 -3
- package/dist/components/button.d.ts +1 -1
- package/dist/components/card.d.ts +28 -12
- package/dist/components/card.js +4 -2
- package/dist/components/chart.d.ts +18 -8
- package/dist/components/chart.js +89 -25
- package/dist/components/choice-carousel.d.ts +1 -1
- package/dist/components/choice-carousel.js +2 -4
- package/dist/components/choice-list.d.ts +40 -0
- package/dist/components/choice-list.js +122 -0
- package/dist/components/choice-preview-card.d.ts +1 -7
- package/dist/components/color-input.d.ts +1 -1
- package/dist/components/context-menu.d.ts +5 -2
- package/dist/components/currency-input.d.ts +0 -2
- package/dist/components/data-table-header.d.ts +55 -18
- package/dist/components/data-table-header.js +148 -101
- package/dist/components/date-picker.d.ts +1 -1
- package/dist/components/dialog.d.ts +6 -3
- package/dist/components/dialog.js +2 -2
- package/dist/components/dropdown-menu.d.ts +5 -2
- package/dist/components/dropzone.d.ts +2 -2
- package/dist/components/dropzone.js +1 -1
- package/dist/components/file-input.d.ts +13 -8
- package/dist/components/file-input.js +24 -21
- package/dist/components/filter-chip.d.ts +11 -5
- package/dist/components/filter-chip.js +15 -6
- package/dist/components/floating-stepper.d.ts +11 -28
- package/dist/components/floating-stepper.js +2 -30
- package/dist/components/form-actions.d.ts +37 -15
- package/dist/components/form-actions.js +5 -14
- package/dist/components/heading.d.ts +42 -0
- package/dist/components/heading.js +25 -0
- package/dist/components/icon-button.d.ts +1 -1
- package/dist/components/image-crop-dialog.d.ts +60 -0
- package/dist/components/image-crop-dialog.js +240 -0
- package/dist/components/image-crop-modal.d.ts +12 -55
- package/dist/components/image-crop-modal.js +2 -249
- package/dist/components/image-upload.d.ts +8 -17
- package/dist/components/image-upload.js +3 -3
- package/dist/components/index.d.ts +15 -10
- package/dist/components/index.js +10 -0
- package/dist/components/internal/bottom-bar.d.ts +30 -0
- package/dist/components/internal/bottom-bar.js +25 -0
- package/dist/components/internal/button.d.ts +1 -1
- package/dist/components/internal/icons.d.ts +9 -1
- package/dist/components/internal/icons.js +16 -0
- package/dist/components/internal/menu.d.ts +3 -2
- package/dist/components/internal/menu.js +1 -1
- package/dist/components/internal/modal.js +9 -0
- package/dist/components/internal/toggle.d.ts +1 -1
- package/dist/components/internal/use-on-screen-keyboard.d.ts +12 -0
- package/dist/components/internal/use-on-screen-keyboard.js +49 -0
- package/dist/components/item.d.ts +14 -7
- package/dist/components/item.js +5 -2
- package/dist/components/loading-overlay.d.ts +43 -0
- package/dist/components/loading-overlay.js +81 -0
- package/dist/components/marker.d.ts +11 -3
- package/dist/components/marker.js +4 -3
- package/dist/components/number-input.d.ts +1 -1
- package/dist/components/progress.d.ts +3 -3
- package/dist/components/progress.js +2 -2
- package/dist/components/row-actions.d.ts +3 -0
- package/dist/components/row-actions.js +8 -4
- package/dist/components/saving-bar.d.ts +36 -10
- package/dist/components/saving-bar.js +14 -6
- package/dist/components/section-header.d.ts +4 -3
- package/dist/components/selectable-card.d.ts +2 -10
- package/dist/components/sidebar.d.ts +8 -11
- package/dist/components/sidebar.js +4 -5
- package/dist/components/spinner.d.ts +9 -6
- package/dist/components/spinner.js +3 -3
- package/dist/components/star-rating.d.ts +3 -3
- package/dist/components/star-rating.js +2 -2
- package/dist/components/stat.d.ts +18 -6
- package/dist/components/stat.js +9 -3
- package/dist/components/status.d.ts +4 -4
- package/dist/components/status.js +2 -2
- package/dist/components/stepper.d.ts +33 -0
- package/dist/components/stepper.js +36 -0
- package/dist/components/summary-bar.d.ts +3 -2
- package/dist/components/summary-bar.js +10 -1
- package/dist/components/tile.d.ts +5 -5
- package/dist/components/tile.js +2 -2
- package/dist/components/time-picker.d.ts +1 -1
- package/dist/components/toast.d.ts +17 -6
- package/dist/components/toast.js +5 -3
- package/dist/components/toggle-card-compact.d.ts +6 -25
- package/dist/components/toggle-card-compact.js +8 -35
- package/dist/components/toggle-card.d.ts +23 -9
- package/dist/components/toggle-card.js +38 -2
- package/dist/components/toggle.d.ts +1 -1
- package/dist/components/typing-indicator.d.ts +2 -2
- package/dist/components/typing-indicator.js +1 -1
- package/package.json +4 -4
- package/styles/base.css +13 -1
- package/styles/rds/components-styles.css +767 -281
- package/styles/rds/components.css +56 -31
- package/styles/rds/foundation.css +1 -1
- package/styles/rds/theme.css +40 -29
- package/styles/rds.css +1 -1
|
@@ -554,7 +554,7 @@
|
|
|
554
554
|
line-height: var(--type-body-line);
|
|
555
555
|
}
|
|
556
556
|
|
|
557
|
-
.rds-avatar--brand.rds-avatar--
|
|
557
|
+
.rds-avatar--brand.rds-avatar--md {
|
|
558
558
|
font-size: var(--type-body-size);
|
|
559
559
|
line-height: var(--type-body-line);
|
|
560
560
|
}
|
|
@@ -665,8 +665,8 @@
|
|
|
665
665
|
--_background: var(--badge-accent-fill-background);
|
|
666
666
|
--_label: var(--badge-accent-fill-label);
|
|
667
667
|
}
|
|
668
|
-
/*
|
|
669
|
-
.rds-badge--accent-
|
|
668
|
+
/* accent soft: the brand's highlighter, the one badge that reads as a marker (the old `highlight`). */
|
|
669
|
+
.rds-badge--accent-soft {
|
|
670
670
|
--_background: var(--badge-accent-highlight-background);
|
|
671
671
|
--_label: var(--badge-accent-highlight-label);
|
|
672
672
|
}
|
|
@@ -1156,27 +1156,30 @@ button.rds-breadcrumb__link:focus-visible {
|
|
|
1156
1156
|
--_text: var(--bubble-fill-text);
|
|
1157
1157
|
}
|
|
1158
1158
|
|
|
1159
|
-
|
|
1159
|
+
/* soft + neutral (the old `muted`): the one answering. */
|
|
1160
|
+
.rds-bubble--soft {
|
|
1160
1161
|
--_background: var(--bubble-muted-background);
|
|
1161
1162
|
--_text: var(--bubble-muted-text);
|
|
1162
1163
|
}
|
|
1163
1164
|
|
|
1164
|
-
|
|
1165
|
+
/* soft + action (the old `tinted`): the one answering, on the brand tint. */
|
|
1166
|
+
.rds-bubble--soft.rds-bubble--action {
|
|
1165
1167
|
--_background: var(--bubble-tinted-background);
|
|
1166
1168
|
--_text: var(--bubble-tinted-text);
|
|
1167
1169
|
}
|
|
1168
1170
|
|
|
1171
|
+
/* soft + danger (the old `error`): it was not sent. */
|
|
1172
|
+
.rds-bubble--soft.rds-bubble--danger {
|
|
1173
|
+
--_background: var(--bubble-error-background);
|
|
1174
|
+
--_text: var(--bubble-error-text);
|
|
1175
|
+
}
|
|
1176
|
+
|
|
1169
1177
|
.rds-bubble--outline {
|
|
1170
1178
|
--_background: var(--bubble-outline-background);
|
|
1171
1179
|
--_text: var(--bubble-outline-text);
|
|
1172
1180
|
border-color: var(--bubble-outline-border);
|
|
1173
1181
|
}
|
|
1174
1182
|
|
|
1175
|
-
.rds-bubble--error {
|
|
1176
|
-
--_background: var(--bubble-error-background);
|
|
1177
|
-
--_text: var(--bubble-error-text);
|
|
1178
|
-
}
|
|
1179
|
-
|
|
1180
1183
|
.rds-bubble--ghost {
|
|
1181
1184
|
--_background: transparent;
|
|
1182
1185
|
--_text: var(--bubble-ghost-text);
|
|
@@ -1749,34 +1752,45 @@ button.rds-breadcrumb__link:focus-visible {
|
|
|
1749
1752
|
/* components/card.css */
|
|
1750
1753
|
/* @tokens card */
|
|
1751
1754
|
/*
|
|
1752
|
-
* Card (Content collection, card/*): header, content and footer.
|
|
1753
|
-
*
|
|
1755
|
+
* Card (Content collection, card/*): header, content and footer. md pads 24, sm pads 16; 24 between the
|
|
1756
|
+
* header, the content and the actions (sm: 16). Corners in radius/container. The Figma `variant`:
|
|
1757
|
+
* surface: card/background, a card/border hairline and elevation/raised (the default).
|
|
1758
|
+
* outline: only the hairline, no fill, no shadow; it takes the surface underneath (cards side by side in a grid,
|
|
1759
|
+
* inside a panel or a list, where stacked shadows turn into noise).
|
|
1760
|
+
* soft: the brand's light plate (card/tint/background), no border, no shadow, title in card/tint/title.
|
|
1761
|
+
* The footer has no band and no rule: the actions sit side by side, the main one last (on the right). The
|
|
1762
|
+
* card/footer/background tokens are obsolete in Figma (03/10/2026) and not read here.
|
|
1754
1763
|
*/
|
|
1755
1764
|
.rds-card {
|
|
1756
|
-
--_pad: var(--space-
|
|
1757
|
-
--
|
|
1758
|
-
--_footer: var(--card-footer-background);
|
|
1759
|
-
--_border: var(--card-border);
|
|
1765
|
+
--_pad: var(--space-24);
|
|
1766
|
+
--_title: var(--card-title);
|
|
1760
1767
|
|
|
1761
1768
|
box-sizing: border-box;
|
|
1762
1769
|
display: flex;
|
|
1763
1770
|
flex-direction: column;
|
|
1764
1771
|
overflow: hidden;
|
|
1765
|
-
border: var(--border-width) solid var(--
|
|
1772
|
+
border: var(--border-width) solid var(--card-border);
|
|
1766
1773
|
border-radius: var(--radius-container);
|
|
1767
|
-
background: var(--
|
|
1774
|
+
background: var(--card-background);
|
|
1768
1775
|
box-shadow: var(--elevation-raised);
|
|
1769
1776
|
font-family: var(--type-font-stack);
|
|
1770
1777
|
}
|
|
1771
1778
|
|
|
1772
1779
|
.rds-card--sm {
|
|
1773
|
-
--_pad: var(--space-
|
|
1780
|
+
--_pad: var(--space-16);
|
|
1774
1781
|
}
|
|
1775
1782
|
|
|
1776
|
-
.rds-card--
|
|
1777
|
-
|
|
1778
|
-
|
|
1779
|
-
|
|
1783
|
+
.rds-card--outline {
|
|
1784
|
+
background: transparent;
|
|
1785
|
+
box-shadow: none;
|
|
1786
|
+
}
|
|
1787
|
+
|
|
1788
|
+
.rds-card--soft {
|
|
1789
|
+
--_title: var(--card-tint-title);
|
|
1790
|
+
|
|
1791
|
+
border-color: transparent;
|
|
1792
|
+
background: var(--card-tint-background);
|
|
1793
|
+
box-shadow: none;
|
|
1780
1794
|
}
|
|
1781
1795
|
|
|
1782
1796
|
.rds-card__header {
|
|
@@ -1807,7 +1821,7 @@ button.rds-breadcrumb__link:focus-visible {
|
|
|
1807
1821
|
|
|
1808
1822
|
.rds-card__title {
|
|
1809
1823
|
margin: 0;
|
|
1810
|
-
color: var(--
|
|
1824
|
+
color: var(--_title);
|
|
1811
1825
|
font-size: var(--type-label-size);
|
|
1812
1826
|
line-height: var(--type-label-line);
|
|
1813
1827
|
font-weight: 500;
|
|
@@ -1846,32 +1860,27 @@ button.rds-breadcrumb__link:focus-visible {
|
|
|
1846
1860
|
display: flex;
|
|
1847
1861
|
flex-direction: column;
|
|
1848
1862
|
gap: var(--space-16);
|
|
1849
|
-
padding: var(--_pad);
|
|
1850
|
-
border-top: var(--border-width) solid var(--card-border);
|
|
1851
|
-
background: var(--_footer);
|
|
1852
|
-
}
|
|
1853
|
-
|
|
1854
|
-
.rds-card--tint .rds-card__footer {
|
|
1855
|
-
border-top-color: transparent;
|
|
1863
|
+
padding: 0 var(--_pad) var(--_pad);
|
|
1856
1864
|
}
|
|
1857
1865
|
|
|
1858
1866
|
.rds-card__actions {
|
|
1859
1867
|
display: flex;
|
|
1860
1868
|
flex-wrap: wrap;
|
|
1861
|
-
gap: var(--space-
|
|
1869
|
+
gap: var(--space-12);
|
|
1862
1870
|
}
|
|
1863
1871
|
|
|
1864
1872
|
.rds-card__footer--end .rds-card__actions {
|
|
1865
1873
|
justify-content: flex-end;
|
|
1866
1874
|
}
|
|
1867
1875
|
|
|
1876
|
+
/* full: the two actions side by side, half each, for a narrow card on a phone. */
|
|
1868
1877
|
.rds-card__footer--full .rds-card__actions {
|
|
1869
|
-
flex-
|
|
1870
|
-
gap: var(--space-8);
|
|
1878
|
+
flex-wrap: nowrap;
|
|
1871
1879
|
}
|
|
1872
1880
|
|
|
1873
1881
|
.rds-card__footer--full .rds-card__actions > * {
|
|
1874
|
-
|
|
1882
|
+
flex: 1 1 0;
|
|
1883
|
+
min-width: 0;
|
|
1875
1884
|
}
|
|
1876
1885
|
|
|
1877
1886
|
.rds-card__note {
|
|
@@ -1882,8 +1891,7 @@ button.rds-breadcrumb__link:focus-visible {
|
|
|
1882
1891
|
}
|
|
1883
1892
|
|
|
1884
1893
|
@media (forced-colors: active) {
|
|
1885
|
-
.rds-card
|
|
1886
|
-
.rds-card--tint .rds-card__footer {
|
|
1894
|
+
.rds-card {
|
|
1887
1895
|
border-color: CanvasText;
|
|
1888
1896
|
}
|
|
1889
1897
|
}
|
|
@@ -1992,6 +2000,8 @@ button.rds-breadcrumb__link:focus-visible {
|
|
|
1992
2000
|
* in --_series: chart.tsx picks one of the --_series-N locals below, each one a chart/series-color/N token.
|
|
1993
2001
|
*/
|
|
1994
2002
|
.rds-chart {
|
|
2003
|
+
/* Anchors the hidden alternative table (and any absolute part) to the chart, not to the page. */
|
|
2004
|
+
position: relative;
|
|
1995
2005
|
--_series-1: var(--chart-series-color-1);
|
|
1996
2006
|
--_series-2: var(--chart-series-color-2);
|
|
1997
2007
|
--_series-3: var(--chart-series-color-3);
|
|
@@ -2180,14 +2190,31 @@ button.rds-breadcrumb__link:focus-visible {
|
|
|
2180
2190
|
white-space: nowrap;
|
|
2181
2191
|
}
|
|
2182
2192
|
|
|
2183
|
-
.rds-chart__labels-track--line .rds-chart__label:first-
|
|
2193
|
+
.rds-chart__labels-track--line .rds-chart__label:first-of-type {
|
|
2184
2194
|
transform: none;
|
|
2185
2195
|
}
|
|
2186
2196
|
|
|
2187
|
-
.rds-chart__labels-track--line .rds-chart__label:last-
|
|
2197
|
+
.rds-chart__labels-track--line .rds-chart__label:last-of-type {
|
|
2188
2198
|
transform: translateX(-100%);
|
|
2189
2199
|
}
|
|
2190
2200
|
|
|
2201
|
+
/* dateEvery: a 1x4 tick on every point, the labels under them. */
|
|
2202
|
+
.rds-chart__labels-track--ticks {
|
|
2203
|
+
height: calc(var(--type-caption-line) + var(--space-4));
|
|
2204
|
+
}
|
|
2205
|
+
|
|
2206
|
+
.rds-chart__labels-track--ticks .rds-chart__label {
|
|
2207
|
+
top: var(--space-4);
|
|
2208
|
+
}
|
|
2209
|
+
|
|
2210
|
+
.rds-chart__tick {
|
|
2211
|
+
position: absolute;
|
|
2212
|
+
top: 0;
|
|
2213
|
+
width: 1px;
|
|
2214
|
+
height: var(--space-4);
|
|
2215
|
+
background: var(--chart-tick);
|
|
2216
|
+
}
|
|
2217
|
+
|
|
2191
2218
|
/* Bars: label, track, value. */
|
|
2192
2219
|
.rds-chart__bars {
|
|
2193
2220
|
display: flex;
|
|
@@ -2218,6 +2245,50 @@ button.rds-breadcrumb__link:focus-visible {
|
|
|
2218
2245
|
background: var(--_series);
|
|
2219
2246
|
}
|
|
2220
2247
|
|
|
2248
|
+
/* A bar with a destination (hrefs or onSelect): the row is the link or button. */
|
|
2249
|
+
.rds-chart__bar-row--link {
|
|
2250
|
+
box-sizing: border-box;
|
|
2251
|
+
width: 100%;
|
|
2252
|
+
margin: 0;
|
|
2253
|
+
padding: 0;
|
|
2254
|
+
border: 0;
|
|
2255
|
+
border-radius: var(--radius-focus);
|
|
2256
|
+
background: none;
|
|
2257
|
+
color: inherit;
|
|
2258
|
+
font: inherit;
|
|
2259
|
+
text-align: start;
|
|
2260
|
+
text-decoration: none;
|
|
2261
|
+
cursor: pointer;
|
|
2262
|
+
}
|
|
2263
|
+
|
|
2264
|
+
.rds-chart__bar-row--link:hover .rds-chart__track {
|
|
2265
|
+
background: var(--chart-bar-hover);
|
|
2266
|
+
}
|
|
2267
|
+
|
|
2268
|
+
.rds-chart__bar-row--link:hover .rds-chart__bar-label {
|
|
2269
|
+
text-decoration: underline;
|
|
2270
|
+
}
|
|
2271
|
+
|
|
2272
|
+
.rds-chart__bar-row--link:focus-visible,
|
|
2273
|
+
.rds-chart__table-link:focus-visible {
|
|
2274
|
+
outline: var(--focus-ring-width) solid var(--chart-focus-ring);
|
|
2275
|
+
outline-offset: var(--focus-ring-width);
|
|
2276
|
+
}
|
|
2277
|
+
|
|
2278
|
+
.rds-chart--linked.rds-chart--column .rds-chart__plot {
|
|
2279
|
+
cursor: pointer;
|
|
2280
|
+
}
|
|
2281
|
+
|
|
2282
|
+
.rds-chart__table-link {
|
|
2283
|
+
padding: 0;
|
|
2284
|
+
border: 0;
|
|
2285
|
+
background: none;
|
|
2286
|
+
color: inherit;
|
|
2287
|
+
font: inherit;
|
|
2288
|
+
text-decoration: underline;
|
|
2289
|
+
cursor: pointer;
|
|
2290
|
+
}
|
|
2291
|
+
|
|
2221
2292
|
.rds-chart__bar-value {
|
|
2222
2293
|
color: var(--chart-axis);
|
|
2223
2294
|
font-variant-numeric: tabular-nums;
|
|
@@ -2251,7 +2322,8 @@ button.rds-breadcrumb__link:focus-visible {
|
|
|
2251
2322
|
background: CanvasText;
|
|
2252
2323
|
}
|
|
2253
2324
|
|
|
2254
|
-
.rds-chart__plot:focus-visible
|
|
2325
|
+
.rds-chart__plot:focus-visible,
|
|
2326
|
+
.rds-chart__bar-row--link:focus-visible {
|
|
2255
2327
|
outline-color: Highlight;
|
|
2256
2328
|
}
|
|
2257
2329
|
}
|
|
@@ -2608,10 +2680,10 @@ input:focus-visible + .rds-checkbox__box {
|
|
|
2608
2680
|
* an 8 dot. Selected fills the card with the brand. Disabled is the same card at half opacity (as in Figma).
|
|
2609
2681
|
* tile: a grid cell, 16 inside, centred: the icon, then the label 14/20 semibold and the description 12/16 (8 below
|
|
2610
2682
|
* the icon). Selected fills it with the brand, the icon square at 10% of choice-card/icon/background/selected, the
|
|
2611
|
-
* description at
|
|
2683
|
+
* description at full opacity, and a 16 check (11 glyph) 8 from the top right corner.
|
|
2612
2684
|
* preview: 8 inside, the picture on top (16:9, a 1px border, corners radius/container, a 24 placeholder icon), then
|
|
2613
2685
|
* the label 16/24 semibold and the description 14/20, 4 in from the sides. Selected keeps the surface: a 2px border
|
|
2614
|
-
* in the brand, the description at
|
|
2686
|
+
* in the brand, the description at full opacity and a 20 check (12 glyph) in the picture's bottom right corner.
|
|
2615
2687
|
* The group stacks rows 8 apart; tiles and previews go in a grid (cells of at least 160 and 240), 8 apart.
|
|
2616
2688
|
*/
|
|
2617
2689
|
.rds-choice-card-group {
|
|
@@ -2803,11 +2875,6 @@ input:focus-visible + .rds-checkbox__box {
|
|
|
2803
2875
|
color: var(--choice-card-icon-color-selected);
|
|
2804
2876
|
}
|
|
2805
2877
|
|
|
2806
|
-
.rds-choice-card--tile.rds-choice-card--selected .rds-choice-card__description,
|
|
2807
|
-
.rds-choice-card--preview.rds-choice-card--selected .rds-choice-card__description {
|
|
2808
|
-
color: color-mix(in srgb, var(--_description) 70%, transparent);
|
|
2809
|
-
}
|
|
2810
|
-
|
|
2811
2878
|
.rds-choice-card--tile .rds-choice-card__check {
|
|
2812
2879
|
position: absolute;
|
|
2813
2880
|
top: calc(var(--space-8) - var(--border-width));
|
|
@@ -2914,7 +2981,7 @@ input:focus-visible + .rds-checkbox__box {
|
|
|
2914
2981
|
/*
|
|
2915
2982
|
* ChoiceCarousel: no tokens of its own; the IconButtons bring theirs. A row that scrolls sideways and snaps to each
|
|
2916
2983
|
* option (160 wide, 200 from 768), 12 apart, no scrollbar. From 768 the outline arrows sit on the row's edges, half
|
|
2917
|
-
* outside, and
|
|
2984
|
+
* outside, and are not there when there is nothing more that way.
|
|
2918
2985
|
*/
|
|
2919
2986
|
.rds-choice-carousel {
|
|
2920
2987
|
position: relative;
|
|
@@ -2968,7 +3035,6 @@ input:focus-visible + .rds-checkbox__box {
|
|
|
2968
3035
|
display: inline-flex;
|
|
2969
3036
|
border-radius: var(--radius-full);
|
|
2970
3037
|
box-shadow: var(--elevation-raised);
|
|
2971
|
-
transition: opacity var(--motion-duration-base) var(--motion-easing-standard);
|
|
2972
3038
|
}
|
|
2973
3039
|
|
|
2974
3040
|
.rds-choice-carousel__arrow--prev {
|
|
@@ -2980,11 +3046,6 @@ input:focus-visible + .rds-checkbox__box {
|
|
|
2980
3046
|
right: 0;
|
|
2981
3047
|
transform: translate(50%, -50%);
|
|
2982
3048
|
}
|
|
2983
|
-
|
|
2984
|
-
.rds-choice-carousel__arrow[aria-disabled='true'] {
|
|
2985
|
-
opacity: 0;
|
|
2986
|
-
pointer-events: none;
|
|
2987
|
-
}
|
|
2988
3049
|
}
|
|
2989
3050
|
|
|
2990
3051
|
@media (prefers-reduced-motion: reduce) {
|
|
@@ -2993,6 +3054,132 @@ input:focus-visible + .rds-checkbox__box {
|
|
|
2993
3054
|
}
|
|
2994
3055
|
}
|
|
2995
3056
|
|
|
3057
|
+
/* components/choice-list.css */
|
|
3058
|
+
/* @tokens choice-list */
|
|
3059
|
+
/*
|
|
3060
|
+
* ChoiceList (Content collection, choice-list/*): the dense list to choose one from. Each row pads 12 16 with 12
|
|
3061
|
+
* between media, text and trailing; a line of border-width only at the bottom (padding-bottom gives it back, so the
|
|
3062
|
+
* row is 60 with a description, 44 without). Title small medium, description caption, trailing small.
|
|
3063
|
+
* Hover: choice-list/item/background/hover. Chosen: the tint and a bar of border-width-strong on the left, no hover.
|
|
3064
|
+
* Focus: the list holds it (aria-activedescendant); the active row draws the ring inside its box, as the rows touch.
|
|
3065
|
+
* Disabled: text in the disabled tokens, media at half; it stays chosen if it was.
|
|
3066
|
+
*/
|
|
3067
|
+
.rds-choice-list {
|
|
3068
|
+
box-sizing: border-box;
|
|
3069
|
+
margin: 0;
|
|
3070
|
+
padding: 0;
|
|
3071
|
+
overflow-y: auto;
|
|
3072
|
+
font-family: var(--type-font-stack);
|
|
3073
|
+
list-style: none;
|
|
3074
|
+
outline: none;
|
|
3075
|
+
}
|
|
3076
|
+
|
|
3077
|
+
.rds-choice-list__item {
|
|
3078
|
+
--_background: transparent;
|
|
3079
|
+
--_title: var(--choice-list-item-title-default);
|
|
3080
|
+
--_description: var(--choice-list-item-description-default);
|
|
3081
|
+
--_trailing: var(--choice-list-item-trailing-default);
|
|
3082
|
+
|
|
3083
|
+
box-sizing: border-box;
|
|
3084
|
+
display: flex;
|
|
3085
|
+
align-items: center;
|
|
3086
|
+
gap: var(--space-12);
|
|
3087
|
+
min-height: calc(var(--space-12) * 2 + var(--type-button-line));
|
|
3088
|
+
padding: var(--space-12) var(--space-16) calc(var(--space-12) - var(--border-width));
|
|
3089
|
+
border-bottom: var(--border-width) solid var(--choice-list-item-border);
|
|
3090
|
+
background: var(--_background);
|
|
3091
|
+
cursor: pointer;
|
|
3092
|
+
user-select: none;
|
|
3093
|
+
}
|
|
3094
|
+
|
|
3095
|
+
@media (hover: hover) {
|
|
3096
|
+
.rds-choice-list__item:not([aria-selected='true'], [aria-disabled='true']):hover {
|
|
3097
|
+
--_background: var(--choice-list-item-background-hover);
|
|
3098
|
+
}
|
|
3099
|
+
}
|
|
3100
|
+
|
|
3101
|
+
.rds-choice-list__item[aria-selected='true'] {
|
|
3102
|
+
--_background: var(--choice-list-item-background-selected);
|
|
3103
|
+
/* On the tint the muted line does not hold contrast in dark: it takes text/on/tint. */
|
|
3104
|
+
--_description: var(--choice-list-item-description-selected);
|
|
3105
|
+
|
|
3106
|
+
box-shadow: inset var(--border-width-strong) 0 0 var(--choice-list-item-indicator);
|
|
3107
|
+
}
|
|
3108
|
+
|
|
3109
|
+
.rds-choice-list:focus-visible .rds-choice-list__item[data-active] {
|
|
3110
|
+
outline: var(--focus-ring-width) solid var(--choice-list-focus-ring);
|
|
3111
|
+
outline-offset: calc(-1 * var(--focus-ring-width));
|
|
3112
|
+
}
|
|
3113
|
+
|
|
3114
|
+
.rds-choice-list__item[aria-disabled='true'] {
|
|
3115
|
+
--_title: var(--choice-list-item-title-disabled);
|
|
3116
|
+
--_description: var(--choice-list-item-description-disabled);
|
|
3117
|
+
--_trailing: var(--choice-list-item-trailing-disabled);
|
|
3118
|
+
|
|
3119
|
+
cursor: not-allowed;
|
|
3120
|
+
}
|
|
3121
|
+
|
|
3122
|
+
.rds-choice-list__media {
|
|
3123
|
+
display: inline-flex;
|
|
3124
|
+
flex: none;
|
|
3125
|
+
}
|
|
3126
|
+
|
|
3127
|
+
.rds-choice-list__item[aria-disabled='true'] .rds-choice-list__media {
|
|
3128
|
+
opacity: 0.5;
|
|
3129
|
+
}
|
|
3130
|
+
|
|
3131
|
+
.rds-choice-list__content {
|
|
3132
|
+
display: flex;
|
|
3133
|
+
flex: 1;
|
|
3134
|
+
flex-direction: column;
|
|
3135
|
+
min-width: 0;
|
|
3136
|
+
}
|
|
3137
|
+
|
|
3138
|
+
.rds-choice-list__title,
|
|
3139
|
+
.rds-choice-list__description {
|
|
3140
|
+
overflow: hidden;
|
|
3141
|
+
text-overflow: ellipsis;
|
|
3142
|
+
white-space: nowrap;
|
|
3143
|
+
}
|
|
3144
|
+
|
|
3145
|
+
.rds-choice-list__title {
|
|
3146
|
+
color: var(--_title);
|
|
3147
|
+
font-size: var(--type-small-size);
|
|
3148
|
+
line-height: var(--type-small-line);
|
|
3149
|
+
font-weight: 500;
|
|
3150
|
+
}
|
|
3151
|
+
|
|
3152
|
+
.rds-choice-list__description {
|
|
3153
|
+
color: var(--_description);
|
|
3154
|
+
font-size: var(--type-caption-size);
|
|
3155
|
+
line-height: var(--type-caption-line);
|
|
3156
|
+
}
|
|
3157
|
+
|
|
3158
|
+
.rds-choice-list__trailing {
|
|
3159
|
+
flex: none;
|
|
3160
|
+
color: var(--_trailing);
|
|
3161
|
+
font-size: var(--type-small-size);
|
|
3162
|
+
line-height: var(--type-small-line);
|
|
3163
|
+
font-variant-numeric: tabular-nums;
|
|
3164
|
+
text-align: right;
|
|
3165
|
+
}
|
|
3166
|
+
|
|
3167
|
+
@media (forced-colors: active) {
|
|
3168
|
+
.rds-choice-list__item[aria-selected='true'] {
|
|
3169
|
+
forced-color-adjust: none;
|
|
3170
|
+
background: Highlight;
|
|
3171
|
+
color: HighlightText;
|
|
3172
|
+
}
|
|
3173
|
+
|
|
3174
|
+
.rds-choice-list__item[aria-selected='true'] :is(.rds-choice-list__title, .rds-choice-list__description, .rds-choice-list__trailing) {
|
|
3175
|
+
color: HighlightText;
|
|
3176
|
+
}
|
|
3177
|
+
|
|
3178
|
+
.rds-choice-list:focus-visible .rds-choice-list__item[data-active] {
|
|
3179
|
+
outline-color: CanvasText;
|
|
3180
|
+
}
|
|
3181
|
+
}
|
|
3182
|
+
|
|
2996
3183
|
/* components/color-input.css */
|
|
2997
3184
|
/* @tokens color-input */
|
|
2998
3185
|
/*
|
|
@@ -3045,7 +3232,7 @@ input:focus-visible + .rds-checkbox__box {
|
|
|
3045
3232
|
.rds-color-input__swatch:focus-visible,
|
|
3046
3233
|
.rds-color-input__swatch:has(.rds-color-input__native:focus-visible) {
|
|
3047
3234
|
outline: var(--focus-ring-width) solid var(--_border-focus);
|
|
3048
|
-
outline-offset: var(--
|
|
3235
|
+
outline-offset: var(--focus-ring-width);
|
|
3049
3236
|
}
|
|
3050
3237
|
|
|
3051
3238
|
.rds-color-input__native {
|
|
@@ -3112,14 +3299,15 @@ input:focus-visible + .rds-checkbox__box {
|
|
|
3112
3299
|
cursor: pointer;
|
|
3113
3300
|
}
|
|
3114
3301
|
|
|
3302
|
+
/* Selected and focus: the ring of Button and Checkbox, focus-ring-width wide and as far off the swatch (a gap). */
|
|
3115
3303
|
.rds-color-input__choice[aria-pressed='true'] {
|
|
3116
|
-
outline:
|
|
3117
|
-
outline-offset: var(--
|
|
3304
|
+
outline: var(--focus-ring-width) solid var(--color-input-swatch-selected);
|
|
3305
|
+
outline-offset: var(--focus-ring-width);
|
|
3118
3306
|
}
|
|
3119
3307
|
|
|
3120
3308
|
.rds-color-input__choice:focus-visible {
|
|
3121
3309
|
outline: var(--focus-ring-width) solid var(--color-input-border-focus);
|
|
3122
|
-
outline-offset: var(--
|
|
3310
|
+
outline-offset: var(--focus-ring-width);
|
|
3123
3311
|
}
|
|
3124
3312
|
|
|
3125
3313
|
@media (forced-colors: active) {
|
|
@@ -3394,23 +3582,79 @@ input:focus-visible + .rds-checkbox__box {
|
|
|
3394
3582
|
/* components/data-table-header.css */
|
|
3395
3583
|
/* @tokens data-table-header */
|
|
3396
3584
|
/*
|
|
3397
|
-
* DataTableHeader
|
|
3398
|
-
*
|
|
3399
|
-
*
|
|
3400
|
-
*
|
|
3585
|
+
* DataTableHeader (Figma [RDS] DataTableHeader, no variants). One component token, local to this stylesheet:
|
|
3586
|
+
* --data-table-header-search-min, the search's minimum width (Figma `data-table-header/search-min`, viewport
|
|
3587
|
+
* collection of the Base Tokens, not published yet): 320 from lg 1024, 200 below it. Everything else comes from the
|
|
3588
|
+
* Input, FilterChip, Chip, Button, IconButton, Checkbox, DropdownMenu, Popover and Drawer; the count borrows the
|
|
3589
|
+
* table's muted label (--table-header-label, text/muted), the bar being the table's.
|
|
3590
|
+
*
|
|
3591
|
+
* The bar is a column, 8 apart, 12 above the table:
|
|
3592
|
+
* - `row`, which never wraps, aligned to the top: the `tools` group (the search, the quick filters, the filter
|
|
3593
|
+
* trigger, the view control, the count) takes the free width and is what wraps, packed to the start, the search
|
|
3594
|
+
* first taking the free width, at least search-min (never wider than the group); the action sits outside it,
|
|
3595
|
+
* fixed at the end of the FIRST line, on the right, and never goes down.
|
|
3596
|
+
* - `active`, only while a filter is on: the `chips` (wrapping, at least 280 before "Limpar filtros" goes down)
|
|
3597
|
+
* and "Limpar filtros" at the end.
|
|
3598
|
+
* Two arrangements, by the screen width, as the Figma viewport mode (layout/compact below lg 1024; the SavingBar's
|
|
3599
|
+
* cut): expanded from 1024 (the __wide parts: the trigger as a Button with its label); compact below it (the __narrow
|
|
3600
|
+
* parts: the trigger as an IconButton of 44, or a fill Button with the number while a filter is on).
|
|
3601
|
+
* In the Popover and the Drawer the filters stack 16 apart, each one a caption-sized label over its chips.
|
|
3401
3602
|
*/
|
|
3402
3603
|
.rds-data-table-header {
|
|
3604
|
+
--data-table-header-search-min: 320px;
|
|
3605
|
+
|
|
3606
|
+
box-sizing: border-box;
|
|
3607
|
+
width: 100%;
|
|
3608
|
+
display: flex;
|
|
3609
|
+
flex-direction: column;
|
|
3610
|
+
gap: var(--space-8);
|
|
3611
|
+
margin-bottom: var(--space-12);
|
|
3612
|
+
}
|
|
3613
|
+
|
|
3614
|
+
@media (max-width: 1023px) {
|
|
3615
|
+
.rds-data-table-header {
|
|
3616
|
+
--data-table-header-search-min: 200px;
|
|
3617
|
+
}
|
|
3618
|
+
}
|
|
3619
|
+
|
|
3620
|
+
/* Figma `row`: tools + actions, never wraps. */
|
|
3621
|
+
.rds-data-table-header__row {
|
|
3622
|
+
display: flex;
|
|
3623
|
+
flex-wrap: nowrap;
|
|
3624
|
+
align-items: flex-start;
|
|
3625
|
+
gap: var(--space-8);
|
|
3626
|
+
}
|
|
3627
|
+
|
|
3628
|
+
/* Figma `tools`: horizontal, wrap, fill, packed to the start. */
|
|
3629
|
+
.rds-data-table-header__tools {
|
|
3630
|
+
flex: 1 1 0;
|
|
3631
|
+
min-width: 0;
|
|
3403
3632
|
display: flex;
|
|
3404
3633
|
flex-wrap: wrap;
|
|
3405
3634
|
align-items: center;
|
|
3635
|
+
justify-content: flex-start;
|
|
3406
3636
|
gap: var(--space-8);
|
|
3407
|
-
margin-bottom: var(--space-12);
|
|
3408
3637
|
}
|
|
3409
3638
|
|
|
3639
|
+
/* Figma `actions`: outside `tools`, at the end of the first line. */
|
|
3640
|
+
.rds-data-table-header__actions {
|
|
3641
|
+
flex: none;
|
|
3642
|
+
align-self: flex-start;
|
|
3643
|
+
}
|
|
3644
|
+
|
|
3645
|
+
/* The search takes the free width, at least search-min, never wider than the group: it wraps before it squeezes. */
|
|
3410
3646
|
.rds-data-table-header__search {
|
|
3411
|
-
flex: 1 1
|
|
3647
|
+
flex: 1 1 var(--data-table-header-search-min);
|
|
3648
|
+
min-width: min(var(--data-table-header-search-min), 100%);
|
|
3649
|
+
display: flex;
|
|
3650
|
+
}
|
|
3651
|
+
|
|
3652
|
+
.rds-data-table-header__search > * {
|
|
3653
|
+
flex: 1 1 auto;
|
|
3412
3654
|
}
|
|
3413
3655
|
|
|
3656
|
+
.rds-data-table-header__quick,
|
|
3657
|
+
.rds-data-table-header__view,
|
|
3414
3658
|
.rds-data-table-header__wide,
|
|
3415
3659
|
.rds-data-table-header__actions,
|
|
3416
3660
|
.rds-data-table-header__narrow {
|
|
@@ -3420,20 +3664,47 @@ input:focus-visible + .rds-checkbox__box {
|
|
|
3420
3664
|
gap: var(--space-8);
|
|
3421
3665
|
}
|
|
3422
3666
|
|
|
3423
|
-
.rds-data-table-
|
|
3667
|
+
.rds-data-table-header__narrow {
|
|
3424
3668
|
display: none;
|
|
3425
3669
|
}
|
|
3426
3670
|
|
|
3427
|
-
@media (
|
|
3671
|
+
@media (max-width: 1023px) {
|
|
3428
3672
|
.rds-data-table-header__wide {
|
|
3429
|
-
display:
|
|
3673
|
+
display: none;
|
|
3430
3674
|
}
|
|
3431
3675
|
|
|
3432
3676
|
.rds-data-table-header__narrow {
|
|
3433
|
-
display:
|
|
3677
|
+
display: flex;
|
|
3434
3678
|
}
|
|
3435
3679
|
}
|
|
3436
3680
|
|
|
3681
|
+
/* Figma `count`: "128 resultados", a live region at the end of the tools. */
|
|
3682
|
+
.rds-data-table-header__count {
|
|
3683
|
+
font-family: var(--type-font-stack);
|
|
3684
|
+
font-size: var(--type-small-size);
|
|
3685
|
+
line-height: var(--type-small-line);
|
|
3686
|
+
color: var(--table-header-label);
|
|
3687
|
+
white-space: nowrap;
|
|
3688
|
+
}
|
|
3689
|
+
|
|
3690
|
+
/* Figma `activeFilters`: its own line, wrap, 8 apart. */
|
|
3691
|
+
.rds-data-table-header__active {
|
|
3692
|
+
display: flex;
|
|
3693
|
+
flex-wrap: wrap;
|
|
3694
|
+
align-items: center;
|
|
3695
|
+
gap: var(--space-8);
|
|
3696
|
+
}
|
|
3697
|
+
|
|
3698
|
+
/* Figma `chips`: fill, wrap, at least 280 before "Limpar filtros" goes down. */
|
|
3699
|
+
.rds-data-table-header__chips {
|
|
3700
|
+
flex: 1 1 280px;
|
|
3701
|
+
min-width: 0;
|
|
3702
|
+
display: flex;
|
|
3703
|
+
flex-wrap: wrap;
|
|
3704
|
+
align-items: center;
|
|
3705
|
+
gap: var(--space-8);
|
|
3706
|
+
}
|
|
3707
|
+
|
|
3437
3708
|
.rds-data-table-header__scroll {
|
|
3438
3709
|
max-height: 70vh;
|
|
3439
3710
|
overflow-y: auto;
|
|
@@ -3590,6 +3861,8 @@ input:focus-visible + .rds-checkbox__box {
|
|
|
3590
3861
|
* Drawer (Overlays collection, drawer/*): stuck to the bottom, the top corners in radius/container; 12 above (the
|
|
3591
3862
|
* handle, 40 × 4), 24 on the sides, 32 below, 20 between parts; no border and no ×. On a wide screen it stops at
|
|
3592
3863
|
* 560 and centres (the Figma draws it on a 390 phone only).
|
|
3864
|
+
* Height by the content, up to 85% of the screen (717 on an 844): past it, only the content scrolls inside; the
|
|
3865
|
+
* handle, the title and the footer stay put.
|
|
3593
3866
|
*/
|
|
3594
3867
|
.rds-drawer__scrim {
|
|
3595
3868
|
background: var(--drawer-scrim);
|
|
@@ -3601,7 +3874,7 @@ input:focus-visible + .rds-checkbox__box {
|
|
|
3601
3874
|
left: 0;
|
|
3602
3875
|
gap: calc(var(--space-16) + var(--space-4));
|
|
3603
3876
|
max-width: 560px;
|
|
3604
|
-
max-height:
|
|
3877
|
+
max-height: 85dvh;
|
|
3605
3878
|
margin-inline: auto;
|
|
3606
3879
|
padding: var(--space-12) var(--space-24) var(--space-32);
|
|
3607
3880
|
border-radius: var(--radius-container) var(--radius-container) 0 0;
|
|
@@ -3625,6 +3898,18 @@ input:focus-visible + .rds-checkbox__box {
|
|
|
3625
3898
|
background: var(--drawer-handle);
|
|
3626
3899
|
}
|
|
3627
3900
|
|
|
3901
|
+
.rds-drawer .rds-modal__header,
|
|
3902
|
+
.rds-drawer .rds-modal__footer {
|
|
3903
|
+
flex: none;
|
|
3904
|
+
}
|
|
3905
|
+
|
|
3906
|
+
.rds-drawer .rds-modal__body {
|
|
3907
|
+
flex: 1;
|
|
3908
|
+
min-height: 0;
|
|
3909
|
+
overflow-y: auto;
|
|
3910
|
+
overscroll-behavior: contain;
|
|
3911
|
+
}
|
|
3912
|
+
|
|
3628
3913
|
.rds-drawer .rds-modal__heading {
|
|
3629
3914
|
padding-top: 0;
|
|
3630
3915
|
}
|
|
@@ -4105,7 +4390,7 @@ input:focus-visible + .rds-checkbox__box {
|
|
|
4105
4390
|
* FilterChip (Forms collection, filter-chip/*): 32 tall, pill, 12 inside, 4 between icon, label and count;
|
|
4106
4391
|
* label 14/20 medium. inactive: card fill and a hairline; hover: muted fill, strong hairline; active: the brand
|
|
4107
4392
|
* at 12% over what is behind, brand border and label; disabled: the whole chip at 50%, the label at 40%.
|
|
4108
|
-
* The count reads
|
|
4393
|
+
* The count reads in the label's colour, at full opacity. Icon 14, in the label's colour.
|
|
4109
4394
|
*/
|
|
4110
4395
|
.rds-filter-chip-group {
|
|
4111
4396
|
display: flex;
|
|
@@ -4149,14 +4434,14 @@ input:focus-visible + .rds-checkbox__box {
|
|
|
4149
4434
|
}
|
|
4150
4435
|
|
|
4151
4436
|
@media (hover: hover) {
|
|
4152
|
-
.rds-filter-chip:not(.rds-filter-chip--
|
|
4437
|
+
.rds-filter-chip:not(.rds-filter-chip--pressed, [aria-disabled='true']):hover {
|
|
4153
4438
|
--_surface: var(--filter-chip-surface-hover);
|
|
4154
4439
|
--_stroke: var(--filter-chip-stroke-hover);
|
|
4155
4440
|
--_text: var(--filter-chip-text-hover);
|
|
4156
4441
|
}
|
|
4157
4442
|
}
|
|
4158
4443
|
|
|
4159
|
-
.rds-filter-chip--
|
|
4444
|
+
.rds-filter-chip--pressed {
|
|
4160
4445
|
--_surface: color-mix(in srgb, var(--filter-chip-surface-active) 12%, transparent);
|
|
4161
4446
|
--_stroke: var(--filter-chip-stroke-active);
|
|
4162
4447
|
--_text: var(--filter-chip-text-active);
|
|
@@ -4196,7 +4481,6 @@ input:focus-visible + .rds-checkbox__box {
|
|
|
4196
4481
|
}
|
|
4197
4482
|
|
|
4198
4483
|
.rds-filter-chip__count {
|
|
4199
|
-
color: color-mix(in srgb, currentColor 60%, transparent);
|
|
4200
4484
|
font-variant-numeric: tabular-nums;
|
|
4201
4485
|
}
|
|
4202
4486
|
|
|
@@ -4205,7 +4489,7 @@ input:focus-visible + .rds-checkbox__box {
|
|
|
4205
4489
|
border-color: CanvasText;
|
|
4206
4490
|
}
|
|
4207
4491
|
|
|
4208
|
-
.rds-filter-chip--
|
|
4492
|
+
.rds-filter-chip--pressed {
|
|
4209
4493
|
border-color: Highlight;
|
|
4210
4494
|
outline: var(--border-width) solid Highlight;
|
|
4211
4495
|
}
|
|
@@ -4215,38 +4499,6 @@ input:focus-visible + .rds-checkbox__box {
|
|
|
4215
4499
|
}
|
|
4216
4500
|
}
|
|
4217
4501
|
|
|
4218
|
-
/* components/floating-stepper.css */
|
|
4219
|
-
/* @tokens floating-stepper */
|
|
4220
|
-
/*
|
|
4221
|
-
* FloatingStepper: no tokens of its own; the Card and the Buttons bring theirs. A pill (radius/full) of 44 Buttons,
|
|
4222
|
-
* 4 inside and 4 apart, raised by elevation/overlay because it floats over the page. A 1 × 24 line in the card's
|
|
4223
|
-
* border colour before the action.
|
|
4224
|
-
*/
|
|
4225
|
-
.rds-floating-stepper {
|
|
4226
|
-
flex-direction: row;
|
|
4227
|
-
align-items: center;
|
|
4228
|
-
gap: var(--space-4);
|
|
4229
|
-
width: max-content;
|
|
4230
|
-
max-width: 100%;
|
|
4231
|
-
padding: var(--space-4);
|
|
4232
|
-
border-radius: var(--radius-full);
|
|
4233
|
-
box-shadow: var(--elevation-overlay);
|
|
4234
|
-
overflow-x: auto;
|
|
4235
|
-
}
|
|
4236
|
-
|
|
4237
|
-
.rds-floating-stepper > .rds-button {
|
|
4238
|
-
flex: none;
|
|
4239
|
-
border-radius: var(--radius-full);
|
|
4240
|
-
}
|
|
4241
|
-
|
|
4242
|
-
.rds-floating-stepper__divider {
|
|
4243
|
-
flex: none;
|
|
4244
|
-
width: var(--border-width);
|
|
4245
|
-
height: var(--size-24);
|
|
4246
|
-
margin-inline: var(--space-4);
|
|
4247
|
-
background: var(--card-border);
|
|
4248
|
-
}
|
|
4249
|
-
|
|
4250
4502
|
/* components/footer.css */
|
|
4251
4503
|
/* @tokens footer */
|
|
4252
4504
|
/*
|
|
@@ -4376,91 +4628,45 @@ input:focus-visible + .rds-checkbox__box {
|
|
|
4376
4628
|
|
|
4377
4629
|
@container (max-width: 639px) {
|
|
4378
4630
|
.rds-footer__inner {
|
|
4379
|
-
gap: var(--space-32);
|
|
4380
|
-
padding: var(--space-32) var(--space-16) var(--space-24);
|
|
4381
|
-
}
|
|
4382
|
-
|
|
4383
|
-
.rds-footer__sitemap,
|
|
4384
|
-
.rds-footer__columns {
|
|
4385
|
-
flex-direction: column;
|
|
4386
|
-
gap: var(--space-32);
|
|
4387
|
-
}
|
|
4388
|
-
|
|
4389
|
-
.rds-footer__brand {
|
|
4390
|
-
width: auto;
|
|
4391
|
-
}
|
|
4392
|
-
}
|
|
4393
|
-
|
|
4394
|
-
@media (forced-colors: active) {
|
|
4395
|
-
.rds-footer a:focus-visible {
|
|
4396
|
-
outline-color: Highlight;
|
|
4397
|
-
}
|
|
4398
|
-
}
|
|
4399
|
-
|
|
4400
|
-
/* components/form-actions.css */
|
|
4401
|
-
/* @tokens form-actions */
|
|
4402
|
-
/*
|
|
4403
|
-
* FormActions (Actions collection, form-actions/*): the actions at the end of a form, on the card
|
|
4404
|
-
* surface with a hairline. inline floats (container radius, raised elevation, 16 24 padding, 24 between
|
|
4405
|
-
* sentence and actions); stacked sticks to the foot edge to edge (16 padding, hairline on top).
|
|
4406
|
-
*/
|
|
4407
|
-
.rds-form-actions {
|
|
4408
|
-
box-sizing: border-box;
|
|
4409
|
-
display: flex;
|
|
4410
|
-
align-items: center;
|
|
4411
|
-
background: var(--form-actions-background);
|
|
4412
|
-
color: var(--form-actions-text);
|
|
4413
|
-
font-family: var(--type-font-stack);
|
|
4414
|
-
}
|
|
4415
|
-
|
|
4416
|
-
.rds-form-actions__helper {
|
|
4417
|
-
flex: 1;
|
|
4418
|
-
min-width: 0;
|
|
4419
|
-
margin: 0;
|
|
4420
|
-
font-size: var(--type-label-size);
|
|
4421
|
-
line-height: var(--type-label-line);
|
|
4422
|
-
}
|
|
4423
|
-
|
|
4424
|
-
.rds-form-actions__actions {
|
|
4425
|
-
display: flex;
|
|
4426
|
-
flex-wrap: wrap;
|
|
4427
|
-
gap: var(--space-8);
|
|
4428
|
-
}
|
|
4429
|
-
|
|
4430
|
-
/* inline: floats and hugs its content; the page decides where. */
|
|
4431
|
-
.rds-form-actions--inline {
|
|
4432
|
-
display: inline-flex;
|
|
4433
|
-
flex-wrap: wrap;
|
|
4434
|
-
justify-content: flex-end;
|
|
4435
|
-
gap: var(--space-24);
|
|
4436
|
-
max-width: 100%;
|
|
4437
|
-
padding: var(--space-16) var(--space-24);
|
|
4438
|
-
border: var(--border-width) solid var(--form-actions-border);
|
|
4439
|
-
border-radius: var(--radius-container);
|
|
4440
|
-
box-shadow: var(--elevation-raised);
|
|
4441
|
-
}
|
|
4631
|
+
gap: var(--space-32);
|
|
4632
|
+
padding: var(--space-32) var(--space-16) var(--space-24);
|
|
4633
|
+
}
|
|
4442
4634
|
|
|
4443
|
-
|
|
4444
|
-
.rds-
|
|
4445
|
-
|
|
4446
|
-
|
|
4447
|
-
|
|
4448
|
-
|
|
4449
|
-
|
|
4450
|
-
|
|
4635
|
+
.rds-footer__sitemap,
|
|
4636
|
+
.rds-footer__columns {
|
|
4637
|
+
flex-direction: column;
|
|
4638
|
+
gap: var(--space-32);
|
|
4639
|
+
}
|
|
4640
|
+
|
|
4641
|
+
.rds-footer__brand {
|
|
4642
|
+
width: auto;
|
|
4643
|
+
}
|
|
4451
4644
|
}
|
|
4452
4645
|
|
|
4453
|
-
|
|
4454
|
-
|
|
4646
|
+
@media (forced-colors: active) {
|
|
4647
|
+
.rds-footer a:focus-visible {
|
|
4648
|
+
outline-color: Highlight;
|
|
4649
|
+
}
|
|
4455
4650
|
}
|
|
4456
4651
|
|
|
4457
|
-
|
|
4458
|
-
|
|
4652
|
+
/* components/form-actions.css */
|
|
4653
|
+
/* @tokens bottom-bar */
|
|
4654
|
+
/*
|
|
4655
|
+
* FormActions: no tokens of its own; the shell (internal/bottom-bar.css, bottom-bar/*) brings the colour, the height,
|
|
4656
|
+
* the padding, the place and the Buttons' colours. Here only the actions: on the right, 8 apart, Cancelar then the
|
|
4657
|
+
* primary. Compact (below lg 1024, by the screen width as the Figma viewport mode), only the last one, the primary.
|
|
4658
|
+
*/
|
|
4659
|
+
.rds-form-actions__actions {
|
|
4660
|
+
display: flex;
|
|
4661
|
+
flex: none;
|
|
4662
|
+
gap: var(--space-8);
|
|
4663
|
+
margin-inline-start: auto;
|
|
4459
4664
|
}
|
|
4460
4665
|
|
|
4461
|
-
@media (
|
|
4462
|
-
.
|
|
4463
|
-
|
|
4666
|
+
@media (max-width: 1023px) {
|
|
4667
|
+
/* Only the primary (the last action): Cancelar is the topbar's X. */
|
|
4668
|
+
.rds-form-actions__actions > :not(:last-child) {
|
|
4669
|
+
display: none;
|
|
4464
4670
|
}
|
|
4465
4671
|
}
|
|
4466
4672
|
|
|
@@ -4595,6 +4801,48 @@ input:focus-visible + .rds-checkbox__box {
|
|
|
4595
4801
|
}
|
|
4596
4802
|
}
|
|
4597
4803
|
|
|
4804
|
+
/* components/heading.css */
|
|
4805
|
+
/* @tokens heading */
|
|
4806
|
+
/*
|
|
4807
|
+
* Heading (Content collection, heading/*): a title in the brand pair. heading/default is text/heading, heading/accent
|
|
4808
|
+
* the logo orange; .heading/mark paints a stretch in the other one. level follows the type scale (band, heading,
|
|
4809
|
+
* value), all bold.
|
|
4810
|
+
*/
|
|
4811
|
+
.rds-heading {
|
|
4812
|
+
margin: 0;
|
|
4813
|
+
font-family: var(--type-font-stack);
|
|
4814
|
+
font-weight: var(--type-heading-weight);
|
|
4815
|
+
color: var(--heading-default);
|
|
4816
|
+
text-wrap: balance;
|
|
4817
|
+
}
|
|
4818
|
+
|
|
4819
|
+
.rds-heading--band {
|
|
4820
|
+
font-size: var(--type-band-size);
|
|
4821
|
+
line-height: var(--type-band-line);
|
|
4822
|
+
}
|
|
4823
|
+
|
|
4824
|
+
.rds-heading--heading {
|
|
4825
|
+
font-size: var(--type-heading-size);
|
|
4826
|
+
line-height: var(--type-heading-line);
|
|
4827
|
+
}
|
|
4828
|
+
|
|
4829
|
+
.rds-heading--value {
|
|
4830
|
+
font-size: var(--type-value-size);
|
|
4831
|
+
line-height: var(--type-value-line);
|
|
4832
|
+
}
|
|
4833
|
+
|
|
4834
|
+
.rds-heading--accent {
|
|
4835
|
+
color: var(--heading-accent);
|
|
4836
|
+
}
|
|
4837
|
+
|
|
4838
|
+
.rds-heading__mark {
|
|
4839
|
+
color: var(--heading-accent);
|
|
4840
|
+
}
|
|
4841
|
+
|
|
4842
|
+
.rds-heading--accent .rds-heading__mark {
|
|
4843
|
+
color: var(--heading-default);
|
|
4844
|
+
}
|
|
4845
|
+
|
|
4598
4846
|
/* components/hover-card.css */
|
|
4599
4847
|
/* @tokens hovercard */
|
|
4600
4848
|
/* HoverCard (Feedback collection, hovercard/*): 320 wide, 16 inside, 12 between avatar and text, elevation/overlay. */
|
|
@@ -4669,13 +4917,14 @@ input:focus-visible + .rds-checkbox__box {
|
|
|
4669
4917
|
}
|
|
4670
4918
|
}
|
|
4671
4919
|
|
|
4672
|
-
/* components/image-crop-
|
|
4673
|
-
/* @tokens image-crop-
|
|
4920
|
+
/* components/image-crop-dialog.css */
|
|
4921
|
+
/* @tokens image-crop-dialog */
|
|
4674
4922
|
/*
|
|
4675
|
-
*
|
|
4676
|
-
*
|
|
4677
|
-
*
|
|
4678
|
-
* the dialog's
|
|
4923
|
+
* ImageCropDialog (Figma [RDS] Overlays/ImageCropDialog): the Dialog, the ToggleGroup, the Alert and the Spinner bring
|
|
4924
|
+
* their tokens; the crop brings its own (Overlays, image-crop-dialog/*). 12 apart: the presets (they share the
|
|
4925
|
+
* width), the stage (320 tall, on image-crop-dialog/stage/background, the image letterboxed inside 16 of padding, a
|
|
4926
|
+
* line in the dialog's border colour), the error or the hint. Over the image, outside the crop, the shade; the crop's
|
|
4927
|
+
* line and its handles in their own colours. While sending, the dialog's scrim covers the stage.
|
|
4679
4928
|
*/
|
|
4680
4929
|
.rds-image-crop {
|
|
4681
4930
|
display: flex;
|
|
@@ -4698,17 +4947,42 @@ input:focus-visible + .rds-checkbox__box {
|
|
|
4698
4947
|
display: flex;
|
|
4699
4948
|
align-items: center;
|
|
4700
4949
|
justify-content: center;
|
|
4701
|
-
|
|
4950
|
+
height: 320px;
|
|
4951
|
+
/* On a short viewport (a phone on its side) the stage gives way so the footer stays in view. */
|
|
4702
4952
|
max-height: 60vh;
|
|
4703
4953
|
padding: var(--space-16);
|
|
4704
4954
|
overflow: hidden;
|
|
4955
|
+
background: var(--image-crop-dialog-stage-background);
|
|
4705
4956
|
border: var(--border-width) solid var(--dialog-border);
|
|
4706
4957
|
border-radius: var(--radius-control);
|
|
4707
4958
|
}
|
|
4708
4959
|
|
|
4960
|
+
/*
|
|
4961
|
+
* react-image-crop's own stylesheet is unlayered, so it wins over these layered rules wherever both set the same
|
|
4962
|
+
* property. The shade is an SVG rect with fill as an attribute (black at 50%): any CSS beats it. The handles read
|
|
4963
|
+
* the library's variables, set here. The selection's marching ants are hard-coded: the two !important take them
|
|
4964
|
+
* off so the crop is one solid line in the selection colour (the library's focus outline stays).
|
|
4965
|
+
*/
|
|
4709
4966
|
.rds-image-crop__crop {
|
|
4710
4967
|
max-width: 100%;
|
|
4711
|
-
max-height: calc(60vh - var(--space-32));
|
|
4968
|
+
max-height: calc(min(320px, 60vh) - var(--space-32));
|
|
4969
|
+
--rc-drag-handle-bg-colour: var(--image-crop-dialog-handle);
|
|
4970
|
+
--rc-border-color: var(--image-crop-dialog-handle);
|
|
4971
|
+
}
|
|
4972
|
+
|
|
4973
|
+
.rds-image-crop__crop .ReactCrop__crop-mask > rect {
|
|
4974
|
+
fill: var(--image-crop-dialog-shade);
|
|
4975
|
+
fill-opacity: 1;
|
|
4976
|
+
}
|
|
4977
|
+
|
|
4978
|
+
.rds-image-crop__crop .ReactCrop__crop-selection {
|
|
4979
|
+
background-image: none !important;
|
|
4980
|
+
border: var(--border-width) solid var(--image-crop-dialog-selection);
|
|
4981
|
+
animation: none !important;
|
|
4982
|
+
}
|
|
4983
|
+
|
|
4984
|
+
.rds-image-crop__crop .ReactCrop__drag-handle {
|
|
4985
|
+
border-radius: var(--radius-xs);
|
|
4712
4986
|
}
|
|
4713
4987
|
|
|
4714
4988
|
.rds-image-crop__image {
|
|
@@ -5116,6 +5390,124 @@ input:focus-visible + .rds-checkbox__box {
|
|
|
5116
5390
|
}
|
|
5117
5391
|
}
|
|
5118
5392
|
|
|
5393
|
+
/* components/internal/bottom-bar.css */
|
|
5394
|
+
/* @tokens bottom-bar */
|
|
5395
|
+
/*
|
|
5396
|
+
* The shell at the foot of the screen (Actions collection, bottom-bar/*), private, under the FormActions and the
|
|
5397
|
+
* SavingBar. The brand's primary colour: bottom-bar/background (colors/primary/default) with bottom-bar/text
|
|
5398
|
+
* (text/on/primary), in light, dark and every brand. Full width (at least 320), sticky at the bottom of the scrolling
|
|
5399
|
+
* container, bottom-bar/padding-x (24) at the sides, bottom-bar/gap (16) between the parts.
|
|
5400
|
+
* Height, by the screen width as the Figma viewport mode (layout/compact below lg 1024): compact, bottom-bar/padding-y
|
|
5401
|
+
* (10) above and below, 64 = 10 + 44 + 10, plus the safe area at the bottom; expanded, 2 more inside each side, 68.
|
|
5402
|
+
* The leading slot reserves bottom-bar/leading/min-width (44, the md Button height).
|
|
5403
|
+
* floating, from 1024 only: bottom-bar/floating/margin off the foot and the sides, at most
|
|
5404
|
+
* bottom-bar/floating/max-width, centred, bottom-bar/floating/radius and elevation/overlay. Below 1024 it is docked:
|
|
5405
|
+
* no radius, no shadow, no margin, the full width.
|
|
5406
|
+
* The Buttons on it stay the Button: the action fill and the neutral ghost read their tokens, redeclared here in the
|
|
5407
|
+
* bar's colours (bottom-bar/button/*): the fill's hover at 85% over the bar (active 70%), the ghost's hover the label
|
|
5408
|
+
* colour at 15% (active 25%), disabled at 40% over the bar (the Figma layer opacity), the focus ring
|
|
5409
|
+
* bottom-bar/focus/ring (the default focus/ring would vanish on the band).
|
|
5410
|
+
*/
|
|
5411
|
+
.rds-bottom-bar {
|
|
5412
|
+
position: sticky;
|
|
5413
|
+
bottom: 0;
|
|
5414
|
+
z-index: var(--z-sticky);
|
|
5415
|
+
box-sizing: border-box;
|
|
5416
|
+
display: flex;
|
|
5417
|
+
align-items: center;
|
|
5418
|
+
gap: var(--bottom-bar-gap);
|
|
5419
|
+
width: 100%;
|
|
5420
|
+
min-width: min(320px, 100%);
|
|
5421
|
+
padding: calc(var(--bottom-bar-padding-y) + 2px) var(--bottom-bar-padding-x);
|
|
5422
|
+
background: var(--bottom-bar-background);
|
|
5423
|
+
color: var(--bottom-bar-text);
|
|
5424
|
+
font-family: var(--type-font-stack);
|
|
5425
|
+
|
|
5426
|
+
/* The Button tokens the action fill and the neutral ghost read, in the bar's colours. */
|
|
5427
|
+
--button-focus-ring: var(--bottom-bar-focus-ring);
|
|
5428
|
+
--button-action-fill-background-default: var(--bottom-bar-button-fill-background);
|
|
5429
|
+
--button-action-fill-background-hover: color-mix(in srgb, var(--bottom-bar-button-fill-background) 85%, var(--bottom-bar-background));
|
|
5430
|
+
--button-action-fill-background-active: color-mix(in srgb, var(--bottom-bar-button-fill-background) 70%, var(--bottom-bar-background));
|
|
5431
|
+
--button-action-fill-label: var(--bottom-bar-button-fill-label);
|
|
5432
|
+
--button-action-fill-icon: var(--bottom-bar-button-fill-label);
|
|
5433
|
+
--button-neutral-ghost-label: var(--bottom-bar-button-ghost-label);
|
|
5434
|
+
--button-neutral-ghost-icon: var(--bottom-bar-button-ghost-label);
|
|
5435
|
+
--button-neutral-ghost-background-hover: color-mix(in srgb, var(--bottom-bar-button-ghost-label) 15%, transparent);
|
|
5436
|
+
--button-neutral-ghost-background-active: color-mix(in srgb, var(--bottom-bar-button-ghost-label) 25%, transparent);
|
|
5437
|
+
--button-disabled-fill-background: color-mix(in srgb, var(--bottom-bar-button-fill-background) 40%, var(--bottom-bar-background));
|
|
5438
|
+
--button-disabled-fill-label: color-mix(in srgb, var(--bottom-bar-button-fill-label) 40%, var(--bottom-bar-background));
|
|
5439
|
+
--button-disabled-fill-icon: var(--button-disabled-fill-label);
|
|
5440
|
+
--button-disabled-ghost-label: color-mix(in srgb, var(--bottom-bar-button-ghost-label) 40%, var(--bottom-bar-background));
|
|
5441
|
+
--button-disabled-ghost-icon: var(--button-disabled-ghost-label);
|
|
5442
|
+
}
|
|
5443
|
+
|
|
5444
|
+
/* The leading slot: one ~44 control; its width stays reserved while the control comes and goes. */
|
|
5445
|
+
.rds-bottom-bar__leading {
|
|
5446
|
+
display: flex;
|
|
5447
|
+
flex: none;
|
|
5448
|
+
align-items: center;
|
|
5449
|
+
min-width: var(--bottom-bar-leading-min-width);
|
|
5450
|
+
}
|
|
5451
|
+
|
|
5452
|
+
/* Compact: by the screen width (the Figma viewport mode), not a container query. */
|
|
5453
|
+
@media (max-width: 1023px) {
|
|
5454
|
+
.rds-bottom-bar {
|
|
5455
|
+
padding-block: var(--bottom-bar-padding-y);
|
|
5456
|
+
padding-bottom: calc(var(--bottom-bar-padding-y) + env(safe-area-inset-bottom, 0px));
|
|
5457
|
+
}
|
|
5458
|
+
}
|
|
5459
|
+
|
|
5460
|
+
/* floating: only from lg 1024; below it the bar is docked, square, edge to edge. */
|
|
5461
|
+
@media (min-width: 1024px) {
|
|
5462
|
+
.rds-bottom-bar--floating {
|
|
5463
|
+
bottom: var(--bottom-bar-floating-margin);
|
|
5464
|
+
width: calc(100% - 2 * var(--bottom-bar-floating-margin));
|
|
5465
|
+
max-width: var(--bottom-bar-floating-max-width);
|
|
5466
|
+
margin-inline: auto;
|
|
5467
|
+
margin-bottom: var(--bottom-bar-floating-margin);
|
|
5468
|
+
border-radius: var(--bottom-bar-floating-radius);
|
|
5469
|
+
box-shadow: var(--elevation-overlay);
|
|
5470
|
+
}
|
|
5471
|
+
}
|
|
5472
|
+
|
|
5473
|
+
@media (forced-colors: active) {
|
|
5474
|
+
.rds-bottom-bar {
|
|
5475
|
+
border-top: var(--border-width) solid CanvasText;
|
|
5476
|
+
}
|
|
5477
|
+
}
|
|
5478
|
+
|
|
5479
|
+
@media (forced-colors: active) and (min-width: 1024px) {
|
|
5480
|
+
.rds-bottom-bar--floating {
|
|
5481
|
+
border: var(--border-width) solid CanvasText;
|
|
5482
|
+
}
|
|
5483
|
+
}
|
|
5484
|
+
|
|
5485
|
+
/*
|
|
5486
|
+
* The on-screen keyboard (compact only, the class comes from useOnScreenKeyboard): the bar slides down out of the way
|
|
5487
|
+
* while a field is being typed in, and comes back when the keyboard closes. visibility takes it out of the tab order
|
|
5488
|
+
* and the accessibility tree meanwhile; it waits for the slide to end before hiding.
|
|
5489
|
+
*/
|
|
5490
|
+
@media (max-width: 1023px) {
|
|
5491
|
+
.rds-bottom-bar--keyboard {
|
|
5492
|
+
visibility: hidden;
|
|
5493
|
+
transform: translateY(100%);
|
|
5494
|
+
}
|
|
5495
|
+
}
|
|
5496
|
+
|
|
5497
|
+
@media (max-width: 1023px) and (prefers-reduced-motion: no-preference) {
|
|
5498
|
+
.rds-bottom-bar {
|
|
5499
|
+
transition:
|
|
5500
|
+
transform var(--motion-duration-base) var(--motion-easing-enter),
|
|
5501
|
+
visibility 0s;
|
|
5502
|
+
}
|
|
5503
|
+
|
|
5504
|
+
.rds-bottom-bar--keyboard {
|
|
5505
|
+
transition:
|
|
5506
|
+
transform var(--motion-duration-base) var(--motion-easing-exit),
|
|
5507
|
+
visibility 0s var(--motion-duration-base);
|
|
5508
|
+
}
|
|
5509
|
+
}
|
|
5510
|
+
|
|
5119
5511
|
/* components/internal/choice.css */
|
|
5120
5512
|
/* @tokens internal */
|
|
5121
5513
|
/*
|
|
@@ -6336,7 +6728,7 @@ body:has(.rds-modal) {
|
|
|
6336
6728
|
/* components/item.css */
|
|
6337
6729
|
/* @tokens item */
|
|
6338
6730
|
/*
|
|
6339
|
-
* Item (Content collection, item/*): one list row, at least 44 tall.
|
|
6731
|
+
* Item (Content collection, item/*): one list row, at least 44 tall. md pads 12 16, gap 16; sm pads 8 12,
|
|
6340
6732
|
* gap 12. Corners in radius/container. Title in label (16/24 medium), description in small (14/20); sm one step down.
|
|
6341
6733
|
*/
|
|
6342
6734
|
.rds-item-group {
|
|
@@ -6348,11 +6740,11 @@ body:has(.rds-modal) {
|
|
|
6348
6740
|
list-style: none;
|
|
6349
6741
|
}
|
|
6350
6742
|
|
|
6351
|
-
.rds-item-group:has(> .rds-item--
|
|
6743
|
+
.rds-item-group:has(> .rds-item--ghost) {
|
|
6352
6744
|
gap: 0;
|
|
6353
6745
|
}
|
|
6354
6746
|
|
|
6355
|
-
.rds-item-group > .rds-item--
|
|
6747
|
+
.rds-item-group > .rds-item--ghost + .rds-item--ghost {
|
|
6356
6748
|
border-top: var(--border-width) solid var(--item-border);
|
|
6357
6749
|
}
|
|
6358
6750
|
|
|
@@ -6378,7 +6770,7 @@ body:has(.rds-modal) {
|
|
|
6378
6770
|
--_gap: var(--space-12);
|
|
6379
6771
|
}
|
|
6380
6772
|
|
|
6381
|
-
.rds-item--
|
|
6773
|
+
.rds-item--ghost {
|
|
6382
6774
|
padding: var(--_pad-y) var(--_pad-x);
|
|
6383
6775
|
border-width: 0;
|
|
6384
6776
|
border-radius: 0;
|
|
@@ -6388,7 +6780,7 @@ body:has(.rds-modal) {
|
|
|
6388
6780
|
border-color: var(--item-border);
|
|
6389
6781
|
}
|
|
6390
6782
|
|
|
6391
|
-
.rds-item--
|
|
6783
|
+
.rds-item--soft {
|
|
6392
6784
|
background: var(--item-muted-background);
|
|
6393
6785
|
}
|
|
6394
6786
|
|
|
@@ -6434,7 +6826,7 @@ body:has(.rds-modal) {
|
|
|
6434
6826
|
|
|
6435
6827
|
@media (forced-colors: active) {
|
|
6436
6828
|
.rds-item--outline,
|
|
6437
|
-
.rds-item--
|
|
6829
|
+
.rds-item--soft {
|
|
6438
6830
|
border-color: CanvasText;
|
|
6439
6831
|
}
|
|
6440
6832
|
}
|
|
@@ -6479,6 +6871,70 @@ body:has(.rds-modal) {
|
|
|
6479
6871
|
}
|
|
6480
6872
|
}
|
|
6481
6873
|
|
|
6874
|
+
/* components/loading-overlay.css */
|
|
6875
|
+
/* @tokens loading-overlay */
|
|
6876
|
+
/*
|
|
6877
|
+
* LoadingOverlay (Overlays collection, loading-overlay/*): a veil over the whole screen (loading-overlay/scrim,
|
|
6878
|
+
* surface/scrim) in the overlay layer (z/overlay), and a panel in the middle (loading-overlay/background,
|
|
6879
|
+
* surface/card; radius/container, 24 padding, 16 between the Spinner lg and the label, at most 320 wide,
|
|
6880
|
+
* elevation/modal). The label is type/label Medium in loading-overlay/text (text/body), centred. The panel gives the
|
|
6881
|
+
* text its own surface, so it reads over any screen, light, dark or in the brand. It fades in; with reduced motion,
|
|
6882
|
+
* no fade (and the Spinner turns slowly, spinner.css).
|
|
6883
|
+
*/
|
|
6884
|
+
.rds-loading-overlay {
|
|
6885
|
+
position: fixed;
|
|
6886
|
+
inset: 0;
|
|
6887
|
+
z-index: var(--z-overlay);
|
|
6888
|
+
display: flex;
|
|
6889
|
+
align-items: center;
|
|
6890
|
+
justify-content: center;
|
|
6891
|
+
padding: var(--space-16);
|
|
6892
|
+
background: var(--loading-overlay-scrim);
|
|
6893
|
+
animation: rds-loading-overlay-in 150ms ease-out;
|
|
6894
|
+
}
|
|
6895
|
+
|
|
6896
|
+
.rds-loading-overlay__panel {
|
|
6897
|
+
box-sizing: border-box;
|
|
6898
|
+
display: flex;
|
|
6899
|
+
flex-direction: column;
|
|
6900
|
+
align-items: center;
|
|
6901
|
+
gap: var(--space-16);
|
|
6902
|
+
max-width: min(320px, 100%);
|
|
6903
|
+
padding: var(--space-24);
|
|
6904
|
+
border-radius: var(--radius-container);
|
|
6905
|
+
background: var(--loading-overlay-background);
|
|
6906
|
+
box-shadow: var(--elevation-modal);
|
|
6907
|
+
color: var(--loading-overlay-text);
|
|
6908
|
+
font-family: var(--type-font-stack);
|
|
6909
|
+
outline: none;
|
|
6910
|
+
}
|
|
6911
|
+
|
|
6912
|
+
.rds-loading-overlay__label {
|
|
6913
|
+
margin: 0;
|
|
6914
|
+
font-size: var(--type-label-size);
|
|
6915
|
+
font-weight: 500;
|
|
6916
|
+
line-height: var(--type-label-line);
|
|
6917
|
+
text-align: center;
|
|
6918
|
+
}
|
|
6919
|
+
|
|
6920
|
+
@keyframes rds-loading-overlay-in {
|
|
6921
|
+
from {
|
|
6922
|
+
opacity: 0;
|
|
6923
|
+
}
|
|
6924
|
+
}
|
|
6925
|
+
|
|
6926
|
+
@media (prefers-reduced-motion: reduce) {
|
|
6927
|
+
.rds-loading-overlay {
|
|
6928
|
+
animation: none;
|
|
6929
|
+
}
|
|
6930
|
+
}
|
|
6931
|
+
|
|
6932
|
+
@media (forced-colors: active) {
|
|
6933
|
+
.rds-loading-overlay__panel {
|
|
6934
|
+
border: var(--border-width) solid CanvasText;
|
|
6935
|
+
}
|
|
6936
|
+
}
|
|
6937
|
+
|
|
6482
6938
|
/* components/marker.css */
|
|
6483
6939
|
/* @tokens marker */
|
|
6484
6940
|
/*
|
|
@@ -7126,8 +7582,9 @@ body:has(.rds-modal) {
|
|
|
7126
7582
|
/* @tokens page-skeleton */
|
|
7127
7583
|
/*
|
|
7128
7584
|
* PageSkeleton and CardsSkeleton: no tokens of their own; the Skeleton and the Card bring theirs. Blocks 24 apart
|
|
7129
|
-
* (24 padding when padded). The
|
|
7130
|
-
* between rows. The cards: 2 per row (4 from 1024), the charts
|
|
7585
|
+
* (24 padding when padded). The Cards keep their elevation/raised, as in the Figma. The table is a small Card: the
|
|
7586
|
+
* header row on the table header background (table/header/background), a line between rows. The cards: 2 per row (4 from 1024), the charts
|
|
7587
|
+
* 1 (2 from 1024), 16 apart.
|
|
7131
7588
|
*/
|
|
7132
7589
|
.rds-page-skeleton {
|
|
7133
7590
|
display: flex;
|
|
@@ -7146,10 +7603,6 @@ body:has(.rds-modal) {
|
|
|
7146
7603
|
gap: var(--space-16);
|
|
7147
7604
|
}
|
|
7148
7605
|
|
|
7149
|
-
.rds-page-skeleton__table {
|
|
7150
|
-
box-shadow: none;
|
|
7151
|
-
}
|
|
7152
|
-
|
|
7153
7606
|
.rds-page-skeleton__row {
|
|
7154
7607
|
display: flex;
|
|
7155
7608
|
align-items: center;
|
|
@@ -7162,7 +7615,7 @@ body:has(.rds-modal) {
|
|
|
7162
7615
|
}
|
|
7163
7616
|
|
|
7164
7617
|
.rds-page-skeleton__row--head {
|
|
7165
|
-
background: var(--
|
|
7618
|
+
background: var(--table-header-background);
|
|
7166
7619
|
}
|
|
7167
7620
|
|
|
7168
7621
|
.rds-page-skeleton__row .rds-skeleton {
|
|
@@ -7196,7 +7649,6 @@ body:has(.rds-modal) {
|
|
|
7196
7649
|
.rds-page-skeleton__card {
|
|
7197
7650
|
gap: var(--space-12);
|
|
7198
7651
|
padding: var(--space-16);
|
|
7199
|
-
box-shadow: none;
|
|
7200
7652
|
}
|
|
7201
7653
|
|
|
7202
7654
|
.rds-page-skeleton__card .rds-skeleton {
|
|
@@ -8157,38 +8609,37 @@ input:focus-visible + .rds-radio__circle {
|
|
|
8157
8609
|
}
|
|
8158
8610
|
|
|
8159
8611
|
/* components/saving-bar.css */
|
|
8160
|
-
/* @tokens
|
|
8612
|
+
/* @tokens bottom-bar */
|
|
8161
8613
|
/*
|
|
8162
|
-
* SavingBar
|
|
8163
|
-
*
|
|
8164
|
-
*
|
|
8614
|
+
* SavingBar: no tokens of its own; the shell (internal/bottom-bar.css, bottom-bar/*) brings the colour, the height,
|
|
8615
|
+
* the padding, the place and the Buttons' colours. Here the message (label, medium, in bottom-bar/text, at most 2
|
|
8616
|
+
* lines with an ellipsis; on error the alert 20 before it, 12 apart) and the actions (8 apart, Descartar then Salvar).
|
|
8617
|
+
* Expanded (from lg 1024) the message grows (at least 160) beside Descartar and Salvar; compact (below 1024, by the
|
|
8618
|
+
* screen width as the Figma viewport mode) one row, the message (flex 1) on the left and only Salvar on the right:
|
|
8619
|
+
* Descartar is not shown (it lives in the confirmation when leaving).
|
|
8165
8620
|
*/
|
|
8166
|
-
.rds-savingbar {
|
|
8167
|
-
box-sizing: border-box;
|
|
8168
|
-
display: flex;
|
|
8169
|
-
flex-wrap: wrap;
|
|
8170
|
-
align-items: center;
|
|
8171
|
-
gap: var(--space-16);
|
|
8172
|
-
width: 100%;
|
|
8173
|
-
min-width: min(320px, 100%);
|
|
8174
|
-
padding: var(--space-12) var(--space-24);
|
|
8175
|
-
background: var(--savingbar-background);
|
|
8176
|
-
color: var(--savingbar-text);
|
|
8177
|
-
font-family: var(--type-font-stack);
|
|
8178
|
-
}
|
|
8179
|
-
|
|
8180
8621
|
.rds-savingbar__message {
|
|
8181
8622
|
display: flex;
|
|
8182
|
-
flex: 1;
|
|
8623
|
+
flex: 1 1 160px;
|
|
8183
8624
|
align-items: center;
|
|
8184
8625
|
gap: var(--space-12);
|
|
8185
|
-
min-width:
|
|
8626
|
+
min-width: 160px;
|
|
8186
8627
|
margin: 0;
|
|
8187
8628
|
font-size: var(--type-label-size);
|
|
8188
8629
|
font-weight: 500;
|
|
8189
8630
|
line-height: var(--type-label-line);
|
|
8190
8631
|
}
|
|
8191
8632
|
|
|
8633
|
+
.rds-savingbar__text {
|
|
8634
|
+
display: -webkit-box;
|
|
8635
|
+
flex: 1;
|
|
8636
|
+
min-width: 0;
|
|
8637
|
+
overflow: hidden;
|
|
8638
|
+
-webkit-box-orient: vertical;
|
|
8639
|
+
-webkit-line-clamp: 2;
|
|
8640
|
+
line-clamp: 2;
|
|
8641
|
+
}
|
|
8642
|
+
|
|
8192
8643
|
.rds-savingbar__icon {
|
|
8193
8644
|
display: inline-flex;
|
|
8194
8645
|
flex: none;
|
|
@@ -8201,31 +8652,20 @@ input:focus-visible + .rds-radio__circle {
|
|
|
8201
8652
|
height: 100%;
|
|
8202
8653
|
}
|
|
8203
8654
|
|
|
8204
|
-
.rds-savingbar__loader > svg {
|
|
8205
|
-
animation: rds-savingbar-turn 1s linear infinite;
|
|
8206
|
-
}
|
|
8207
|
-
|
|
8208
|
-
@keyframes rds-savingbar-turn {
|
|
8209
|
-
to {
|
|
8210
|
-
transform: rotate(360deg);
|
|
8211
|
-
}
|
|
8212
|
-
}
|
|
8213
|
-
|
|
8214
|
-
@media (prefers-reduced-motion: reduce) {
|
|
8215
|
-
.rds-savingbar__loader > svg {
|
|
8216
|
-
animation-duration: 3s;
|
|
8217
|
-
}
|
|
8218
|
-
}
|
|
8219
|
-
|
|
8220
8655
|
.rds-savingbar__actions {
|
|
8221
8656
|
display: flex;
|
|
8222
|
-
flex
|
|
8657
|
+
flex: none;
|
|
8223
8658
|
gap: var(--space-8);
|
|
8224
8659
|
}
|
|
8225
8660
|
|
|
8226
|
-
@media (
|
|
8227
|
-
.rds-
|
|
8228
|
-
|
|
8661
|
+
@media (max-width: 1023px) {
|
|
8662
|
+
.rds-savingbar__message {
|
|
8663
|
+
flex: 1 1 0;
|
|
8664
|
+
min-width: 0;
|
|
8665
|
+
}
|
|
8666
|
+
|
|
8667
|
+
.rds-savingbar .rds-savingbar__discard {
|
|
8668
|
+
display: none;
|
|
8229
8669
|
}
|
|
8230
8670
|
}
|
|
8231
8671
|
|
|
@@ -8590,9 +9030,12 @@ input:focus-visible + .rds-radio__circle {
|
|
|
8590
9030
|
/*
|
|
8591
9031
|
* Sidebar (Navigation collection, sidebar/*): 240 wide (64 collapsed), 12 × 8 inside, a 1px border on the right.
|
|
8592
9032
|
* Header: the brand mark (24) and the module (16/24 medium), 10 apart, 44 tall. Entries of 44, 12 inside, 12 between
|
|
8593
|
-
* icon (20) and label (14/20 medium), 4 apart; the current one on the brand tint
|
|
9033
|
+
* icon (20) and label (14/20 medium), 4 apart; the current one on the brand tint, its label semibold in
|
|
9034
|
+
* sidebar/item/label/active and a 3 × 20 marker on the left in sidebar/item/indicator, so the current entry does not
|
|
9035
|
+
* rest on colour alone.
|
|
8594
9036
|
* Section labels 11/14 bold, 16 above and 6 below, with a 14 chevron. Foot: who is signed in (12/16) and Sair.
|
|
8595
|
-
*
|
|
9037
|
+
* No tone: the Sidebar follows its container's mode. The brand-coloured bar is a `.ds-plate` around it (the brand
|
|
9038
|
+
* mode), the dark one a `.dark`.
|
|
8596
9039
|
*/
|
|
8597
9040
|
.rds-sidebar {
|
|
8598
9041
|
--_background: var(--sidebar-background);
|
|
@@ -8618,21 +9061,6 @@ input:focus-visible + .rds-radio__circle {
|
|
|
8618
9061
|
font-family: var(--type-font-stack);
|
|
8619
9062
|
}
|
|
8620
9063
|
|
|
8621
|
-
.rds-sidebar--dark {
|
|
8622
|
-
--_background: var(--sidebar-dark-background);
|
|
8623
|
-
--_label: var(--sidebar-dark-item-label-default);
|
|
8624
|
-
--_label-hover: var(--sidebar-dark-item-label-hover);
|
|
8625
|
-
--_hover: var(--sidebar-dark-item-background-hover);
|
|
8626
|
-
--_module: var(--sidebar-dark-module);
|
|
8627
|
-
--_user: var(--sidebar-dark-user);
|
|
8628
|
-
--_section: var(--sidebar-dark-section-label);
|
|
8629
|
-
--_count: var(--sidebar-dark-item-label-default);
|
|
8630
|
-
/* No dark ring token: the strongest text over the brand, which is what the ring needs to show there. */
|
|
8631
|
-
--_ring: var(--sidebar-dark-module);
|
|
8632
|
-
|
|
8633
|
-
border-right-color: transparent;
|
|
8634
|
-
}
|
|
8635
|
-
|
|
8636
9064
|
.rds-sidebar--collapsed {
|
|
8637
9065
|
width: var(--space-64);
|
|
8638
9066
|
}
|
|
@@ -8695,6 +9123,7 @@ input:focus-visible + .rds-radio__circle {
|
|
|
8695
9123
|
}
|
|
8696
9124
|
|
|
8697
9125
|
.rds-sidebar__item {
|
|
9126
|
+
position: relative;
|
|
8698
9127
|
box-sizing: border-box;
|
|
8699
9128
|
display: flex;
|
|
8700
9129
|
align-items: center;
|
|
@@ -8754,8 +9183,21 @@ input:focus-visible + .rds-radio__circle {
|
|
|
8754
9183
|
color: var(--sidebar-item-label-active);
|
|
8755
9184
|
}
|
|
8756
9185
|
|
|
8757
|
-
.rds-sidebar__item[aria-current='page'] .rds-
|
|
8758
|
-
|
|
9186
|
+
.rds-sidebar__item[aria-current='page'] .rds-sidebar__label {
|
|
9187
|
+
font-weight: 600;
|
|
9188
|
+
}
|
|
9189
|
+
|
|
9190
|
+
/* Figma .sidebar/item state=active: the marker, 3 × 20, on the left edge, vertically centred, radius 2. */
|
|
9191
|
+
.rds-sidebar__item[aria-current='page']::before {
|
|
9192
|
+
content: '';
|
|
9193
|
+
position: absolute;
|
|
9194
|
+
inset-inline-start: 0;
|
|
9195
|
+
top: 50%;
|
|
9196
|
+
width: 3px;
|
|
9197
|
+
height: var(--size-20);
|
|
9198
|
+
border-radius: 2px;
|
|
9199
|
+
background: var(--sidebar-item-indicator);
|
|
9200
|
+
transform: translateY(-50%);
|
|
8759
9201
|
}
|
|
8760
9202
|
|
|
8761
9203
|
.rds-sidebar__item:focus-visible,
|
|
@@ -8789,9 +9231,12 @@ input:focus-visible + .rds-radio__circle {
|
|
|
8789
9231
|
cursor: pointer;
|
|
8790
9232
|
}
|
|
8791
9233
|
|
|
9234
|
+
/* Figma .sidebar/section: label in caps with 6% tracking; the count keeps its own case and no tracking. */
|
|
8792
9235
|
.rds-sidebar__section-label {
|
|
8793
9236
|
flex: 1;
|
|
8794
9237
|
min-width: 0;
|
|
9238
|
+
text-transform: uppercase;
|
|
9239
|
+
letter-spacing: 0.06em;
|
|
8795
9240
|
}
|
|
8796
9241
|
|
|
8797
9242
|
.rds-sidebar__section-count {
|
|
@@ -8821,6 +9266,10 @@ input:focus-visible + .rds-radio__circle {
|
|
|
8821
9266
|
.rds-sidebar__item[aria-current='page'] {
|
|
8822
9267
|
outline: var(--border-width) solid CanvasText;
|
|
8823
9268
|
}
|
|
9269
|
+
|
|
9270
|
+
.rds-sidebar__item[aria-current='page']::before {
|
|
9271
|
+
background: Highlight;
|
|
9272
|
+
}
|
|
8824
9273
|
}
|
|
8825
9274
|
|
|
8826
9275
|
/* components/skeleton.css */
|
|
@@ -9214,6 +9663,7 @@ input:focus-visible + .rds-radio__circle {
|
|
|
9214
9663
|
/*
|
|
9215
9664
|
* Stat (Content collection, stat/*): 8 between the text and the sparkline. Text: the label 14/20, the row (the
|
|
9216
9665
|
* value in type/value bold and the Delta, 8 apart, wrapping 4 below) and the caption 12/16, 4 apart.
|
|
9666
|
+
* tone neutral (default), success, danger, warning; muted greys a zero out.
|
|
9217
9667
|
* framed=true: 16 inside, a 1px border, corners radius/container. framed=false (the SummaryBar cell): 12 16, no border.
|
|
9218
9668
|
*/
|
|
9219
9669
|
.rds-stat {
|
|
@@ -9235,11 +9685,11 @@ input:focus-visible + .rds-radio__circle {
|
|
|
9235
9685
|
border-radius: var(--radius-container);
|
|
9236
9686
|
}
|
|
9237
9687
|
|
|
9238
|
-
.rds-stat--
|
|
9688
|
+
.rds-stat--success {
|
|
9239
9689
|
--_value: var(--stat-value-positive);
|
|
9240
9690
|
}
|
|
9241
9691
|
|
|
9242
|
-
.rds-stat--
|
|
9692
|
+
.rds-stat--danger {
|
|
9243
9693
|
--_value: var(--stat-value-negative);
|
|
9244
9694
|
}
|
|
9245
9695
|
|
|
@@ -9247,6 +9697,7 @@ input:focus-visible + .rds-radio__circle {
|
|
|
9247
9697
|
--_value: var(--stat-value-warning);
|
|
9248
9698
|
}
|
|
9249
9699
|
|
|
9700
|
+
/* muted (zero, nothing to see) wins over the tone: the Figma draws it only on neutral. */
|
|
9250
9701
|
.rds-stat--muted {
|
|
9251
9702
|
--_value: var(--stat-value-muted);
|
|
9252
9703
|
}
|
|
@@ -9473,6 +9924,35 @@ input:focus-visible + .rds-radio__circle {
|
|
|
9473
9924
|
}
|
|
9474
9925
|
}
|
|
9475
9926
|
|
|
9927
|
+
/* components/stepper.css */
|
|
9928
|
+
/* @tokens stepper */
|
|
9929
|
+
/*
|
|
9930
|
+
* Stepper: no tokens of its own; the Card and the Buttons bring theirs. A pill (radius/full) of 44 Buttons,
|
|
9931
|
+
* 4 inside and 4 apart, raised by elevation/overlay because it floats over the page. A vertical Separator, 24
|
|
9932
|
+
* tall, before the action.
|
|
9933
|
+
*/
|
|
9934
|
+
.rds-stepper {
|
|
9935
|
+
flex-direction: row;
|
|
9936
|
+
align-items: center;
|
|
9937
|
+
gap: var(--space-4);
|
|
9938
|
+
width: max-content;
|
|
9939
|
+
max-width: 100%;
|
|
9940
|
+
padding: var(--space-4);
|
|
9941
|
+
border-radius: var(--radius-full);
|
|
9942
|
+
box-shadow: var(--elevation-overlay);
|
|
9943
|
+
overflow-x: auto;
|
|
9944
|
+
}
|
|
9945
|
+
|
|
9946
|
+
.rds-stepper > .rds-button {
|
|
9947
|
+
flex: none;
|
|
9948
|
+
border-radius: var(--radius-full);
|
|
9949
|
+
}
|
|
9950
|
+
|
|
9951
|
+
.rds-stepper > .rds-stepper__divider {
|
|
9952
|
+
align-self: center;
|
|
9953
|
+
height: var(--size-24);
|
|
9954
|
+
}
|
|
9955
|
+
|
|
9476
9956
|
/* components/summary-bar.css */
|
|
9477
9957
|
/* @tokens summary-bar */
|
|
9478
9958
|
/*
|
|
@@ -9652,8 +10132,18 @@ input:focus-visible + .rds-switch__track {
|
|
|
9652
10132
|
* A line under every row but the last: the Table's border closes it. Corners in radius/container; the sort button in
|
|
9653
10133
|
* radius/xs. The status rows hold an Empty, 32 24 around it.
|
|
9654
10134
|
*/
|
|
10135
|
+
/*
|
|
10136
|
+
* The scroll region is a one-column grid, minmax(0, 1fr), so it does not hand the table's min-content up to the page:
|
|
10137
|
+
* as a plain block it did, and any ancestor sized by its content (a flex item without min-width: 0, a grid item in an
|
|
10138
|
+
* auto track, a start-aligned stack, an inline-block) grew to the table's width, so a Card holding a wide table went
|
|
10139
|
+
* past the screen and was cut instead of the table scrolling. Under a min-content constraint the fr track is 0; under
|
|
10140
|
+
* max-content it is the table's max-content (a hugging parent still hugs the table); with a definite width it fills,
|
|
10141
|
+
* and the table, never narrower than its min-content, scrolls inside.
|
|
10142
|
+
*/
|
|
9655
10143
|
.rds-table {
|
|
9656
10144
|
box-sizing: border-box;
|
|
10145
|
+
display: grid;
|
|
10146
|
+
grid-template-columns: minmax(0, 1fr);
|
|
9657
10147
|
max-width: 100%;
|
|
9658
10148
|
overflow-x: auto;
|
|
9659
10149
|
border: var(--border-width) solid var(--table-border);
|
|
@@ -10407,23 +10897,13 @@ tbody > tr:last-child > .rds-table__status {
|
|
|
10407
10897
|
}
|
|
10408
10898
|
}
|
|
10409
10899
|
|
|
10410
|
-
/* components/toggle-card-compact.css */
|
|
10411
|
-
/* @tokens toggle-card-compact */
|
|
10412
|
-
/*
|
|
10413
|
-
* ToggleCardCompact: no tokens of its own; the Item, the Switch and the IconButton bring theirs. The pencil and the
|
|
10414
|
-
* Switch 8 apart at the end of the row.
|
|
10415
|
-
*/
|
|
10416
|
-
.rds-toggle-card-compact__actions {
|
|
10417
|
-
display: inline-flex;
|
|
10418
|
-
align-items: center;
|
|
10419
|
-
gap: var(--space-8);
|
|
10420
|
-
}
|
|
10421
|
-
|
|
10422
10900
|
/* components/toggle-card.css */
|
|
10423
10901
|
/* @tokens toggle-card */
|
|
10424
10902
|
/*
|
|
10425
|
-
* ToggleCard: no tokens of its own; the Card
|
|
10426
|
-
* bottom); the options under it pad 16, 16 apart,
|
|
10903
|
+
* ToggleCard: no tokens of its own; the Card, the Item, the Switch and the IconButton bring theirs.
|
|
10904
|
+
* layout=default: the Switch row pads 16 on the sides (4 top and bottom); the options under it pad 16, 16 apart,
|
|
10905
|
+
* after a line in the card's border colour.
|
|
10906
|
+
* layout=compact: the outline Item; the pencil and the Switch 8 apart at the end of the row.
|
|
10427
10907
|
*/
|
|
10428
10908
|
.rds-toggle-card__header {
|
|
10429
10909
|
padding: var(--space-4) var(--space-16);
|
|
@@ -10437,6 +10917,12 @@ tbody > tr:last-child > .rds-table__status {
|
|
|
10437
10917
|
border-top: var(--border-width) solid var(--card-border);
|
|
10438
10918
|
}
|
|
10439
10919
|
|
|
10920
|
+
.rds-toggle-card__actions {
|
|
10921
|
+
display: inline-flex;
|
|
10922
|
+
align-items: center;
|
|
10923
|
+
gap: var(--space-8);
|
|
10924
|
+
}
|
|
10925
|
+
|
|
10440
10926
|
/* components/toggle-group.css */
|
|
10441
10927
|
/* @tokens toggle-group */
|
|
10442
10928
|
/* ToggleGroup: Toggles side by side, 4 apart (Figma: slot items, gap space/4). No tokens of its own. */
|