opui-css 5.4.0 → 5.4.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +13 -1
- package/MIGRATING.md +5 -5
- package/README.md +4 -3
- package/components/AGENTS.md +4 -4
- package/components/Avatar/types.d.vue.ts +6 -5
- package/components/Badge/Badge.vue +4 -3
- package/components/Badge/types.d.vue.ts +2 -2
- package/components/Badge/types.ts +4 -0
- package/core/utils.css +2 -3
- package/css/components/accordion.css +7 -7
- package/css/components/badge.css +5 -5
- package/css/components/button-group.css +15 -29
- package/css/components/button.css +14 -30
- package/css/components/card.css +7 -6
- package/css/components/drawer.css +1 -3
- package/css/components/form.css +4 -5
- package/css/components/icon-button.css +12 -29
- package/css/components/range.css +8 -27
- package/css/components/select.css +8 -9
- package/css/components/toast.css +0 -3
- package/css/components/tooltip.css +6 -8
- package/css/components/typography.css +25 -30
- package/css/js/checkbox.js +1 -1
- package/css/theme.css +4 -5
- package/dist/opui.components.css +112 -191
- package/dist/opui.components.css.map +1 -1
- package/dist/opui.css +117 -198
- package/dist/opui.css.map +1 -1
- package/package.json +2 -2
package/dist/opui.css
CHANGED
|
@@ -1291,6 +1291,7 @@
|
|
|
1291
1291
|
}
|
|
1292
1292
|
|
|
1293
1293
|
@layer theme {
|
|
1294
|
+
|
|
1294
1295
|
/* 1. Color scheme */
|
|
1295
1296
|
.ui-light {
|
|
1296
1297
|
--color-scheme: light;
|
|
@@ -1314,15 +1315,13 @@
|
|
|
1314
1315
|
--gray-chroma: 0.01;
|
|
1315
1316
|
*/
|
|
1316
1317
|
|
|
1317
|
-
/* 3. Named colors (no severity meaning)
|
|
1318
|
+
/* 3. Named colors (no severity meaning) - use when you literally want a green/red/etc. dot */
|
|
1318
1319
|
--blue: oklch(from var(--color-9) l 0.2 210);
|
|
1319
1320
|
--green: oklch(from var(--color-9) l 0.2 145);
|
|
1320
1321
|
--orange: oklch(from var(--color-7) l 0.2 75);
|
|
1321
1322
|
--red: oklch(from var(--color-9) l 0.2 25);
|
|
1322
1323
|
|
|
1323
|
-
/* 4. Intent tokens
|
|
1324
|
-
Severity (have scope classes below): --success, --info, --warning, --critical
|
|
1325
|
-
Non-severity (value-only): --primary, --neutral */
|
|
1324
|
+
/* 4. Intent tokens */
|
|
1326
1325
|
--success: var(--green);
|
|
1327
1326
|
--info: var(--blue);
|
|
1328
1327
|
--warning: var(--orange);
|
|
@@ -1369,7 +1368,7 @@
|
|
|
1369
1368
|
/* Sneaking in an extra font size I want but Open Props doesn't provide. You can do whatever you want with your own theme. It's just CSS. */
|
|
1370
1369
|
--font-size-05: 0.875rem;
|
|
1371
1370
|
|
|
1372
|
-
/* 11. Control sizes
|
|
1371
|
+
/* 11. Control sizes - shared scale for fields and buttons so they line up. */
|
|
1373
1372
|
--control-size-x-small: 28px;
|
|
1374
1373
|
--control-size-small: 32px;
|
|
1375
1374
|
--control-size: 40px;
|
|
@@ -1653,23 +1652,15 @@
|
|
|
1653
1652
|
--_accent-tonal: var(--_color-tonal);
|
|
1654
1653
|
--_accent-tonal-contrast: var(--_color);
|
|
1655
1654
|
|
|
1656
|
-
--_default-hover-bg-color: light-dark(
|
|
1657
|
-
|
|
1658
|
-
|
|
1659
|
-
|
|
1660
|
-
--_default-active-bg-color: light-dark(
|
|
1661
|
-
oklch(from var(--_accent) l 0.06 h / 20%),
|
|
1662
|
-
oklch(from var(--_accent) l 0.06 h / 30%)
|
|
1663
|
-
);
|
|
1655
|
+
--_default-hover-bg-color: light-dark(oklch(from var(--_accent) l 0.01 h / 10%),
|
|
1656
|
+
oklch(from var(--_accent) l 0.01 h / 20%));
|
|
1657
|
+
--_default-active-bg-color: light-dark(oklch(from var(--_accent) l 0.06 h / 20%),
|
|
1658
|
+
oklch(from var(--_accent) l 0.06 h / 30%));
|
|
1664
1659
|
|
|
1665
|
-
--_filled-hover-bg-color: light-dark(
|
|
1666
|
-
|
|
1667
|
-
|
|
1668
|
-
|
|
1669
|
-
--_filled-active-bg-color: light-dark(
|
|
1670
|
-
oklch(from var(--_accent) calc(l + 0.3) c h),
|
|
1671
|
-
oklch(from var(--_accent) calc(l - 0.15) c h)
|
|
1672
|
-
);
|
|
1660
|
+
--_filled-hover-bg-color: light-dark(oklch(from var(--_accent) calc(l + 0.2) c h),
|
|
1661
|
+
oklch(from var(--_accent) calc(l - 0.1) c h));
|
|
1662
|
+
--_filled-active-bg-color: light-dark(oklch(from var(--_accent) calc(l + 0.3) c h),
|
|
1663
|
+
oklch(from var(--_accent) calc(l - 0.15) c h));
|
|
1673
1664
|
--_outlined-active-bg-color: var(--_filled-active-bg-color);
|
|
1674
1665
|
|
|
1675
1666
|
--_bg-color: transparent;
|
|
@@ -1704,11 +1695,6 @@
|
|
|
1704
1695
|
box-shadow calc(0.1s * var(--_motion)) ease;
|
|
1705
1696
|
user-select: none;
|
|
1706
1697
|
|
|
1707
|
-
/* Colors — shared interaction model for critical and primary.
|
|
1708
|
-
Each color modifier below only swaps --_color; the tonal surface,
|
|
1709
|
-
contrast text, and hover/active strategy are identical.
|
|
1710
|
-
The .critical scope class in theme.css redirects --palette-source so
|
|
1711
|
-
--color-6 below becomes a tint of the active color. */
|
|
1712
1698
|
&.ui-critical,
|
|
1713
1699
|
&.ui-primary {
|
|
1714
1700
|
--_color-contrast: var(--gray-1);
|
|
@@ -1734,11 +1720,9 @@
|
|
|
1734
1720
|
|
|
1735
1721
|
/* Disabled */
|
|
1736
1722
|
&:where([disabled]) {
|
|
1737
|
-
--_text-color: color-mix(
|
|
1738
|
-
|
|
1739
|
-
|
|
1740
|
-
var(--surface-default)
|
|
1741
|
-
);
|
|
1723
|
+
--_text-color: color-mix(in oklch,
|
|
1724
|
+
var(--text-muted) 50%,
|
|
1725
|
+
var(--surface-default));
|
|
1742
1726
|
|
|
1743
1727
|
cursor: not-allowed;
|
|
1744
1728
|
opacity: 0.64;
|
|
@@ -1776,8 +1760,7 @@
|
|
|
1776
1760
|
line-height: 1.2;
|
|
1777
1761
|
}
|
|
1778
1762
|
|
|
1779
|
-
/* Sizes
|
|
1780
|
-
Override --button-size-* in a parent scope to resize an entire region. */
|
|
1763
|
+
/* Sizes */
|
|
1781
1764
|
&.ui-x-small {
|
|
1782
1765
|
--_min-height: var(--button-size-x-small);
|
|
1783
1766
|
--_font-size: var(--font-size-0);
|
|
@@ -1851,7 +1834,7 @@
|
|
|
1851
1834
|
}
|
|
1852
1835
|
}
|
|
1853
1836
|
|
|
1854
|
-
/*
|
|
1837
|
+
/* File input */
|
|
1855
1838
|
:where(input[type="file"]) {
|
|
1856
1839
|
align-self: flex-start;
|
|
1857
1840
|
border: var(--border-size-1) solid var(--surface-filled);
|
|
@@ -1994,22 +1977,14 @@
|
|
|
1994
1977
|
--_accent-contrast: var(--_color-contrast);
|
|
1995
1978
|
--_accent-tonal: var(--_color-tonal);
|
|
1996
1979
|
--_accent-tonal-contrast: var(--_color);
|
|
1997
|
-
--_default-hover-bg-color: light-dark(
|
|
1998
|
-
|
|
1999
|
-
|
|
2000
|
-
|
|
2001
|
-
--
|
|
2002
|
-
|
|
2003
|
-
|
|
2004
|
-
|
|
2005
|
-
--_filled-hover-bg-color: light-dark(
|
|
2006
|
-
oklch(from var(--_accent) calc(l + 0.2) c h),
|
|
2007
|
-
oklch(from var(--_accent) calc(l - 0.1) c h)
|
|
2008
|
-
);
|
|
2009
|
-
--_filled-active-bg-color: light-dark(
|
|
2010
|
-
oklch(from var(--_accent) calc(l + 0.3) c h),
|
|
2011
|
-
oklch(from var(--_accent) calc(l - 0.15) c h)
|
|
2012
|
-
);
|
|
1980
|
+
--_default-hover-bg-color: light-dark(oklch(from var(--_accent) l 0.01 h / 10%),
|
|
1981
|
+
oklch(from var(--_accent) l 0.01 h / 20%));
|
|
1982
|
+
--_default-active-bg-color: light-dark(oklch(from var(--_accent) l 0.06 h / 20%),
|
|
1983
|
+
oklch(from var(--_accent) l 0.06 h / 30%));
|
|
1984
|
+
--_filled-hover-bg-color: light-dark(oklch(from var(--_accent) calc(l + 0.2) c h),
|
|
1985
|
+
oklch(from var(--_accent) calc(l - 0.1) c h));
|
|
1986
|
+
--_filled-active-bg-color: light-dark(oklch(from var(--_accent) calc(l + 0.3) c h),
|
|
1987
|
+
oklch(from var(--_accent) calc(l - 0.15) c h));
|
|
2013
1988
|
--_outlined-active-bg-color: var(--_filled-active-bg-color);
|
|
2014
1989
|
|
|
2015
1990
|
--_bg-color: transparent;
|
|
@@ -2058,11 +2033,6 @@
|
|
|
2058
2033
|
background-color calc(0.1s * var(--_motion)) ease;
|
|
2059
2034
|
}
|
|
2060
2035
|
|
|
2061
|
-
/* Colors — shared interaction model for critical and primary.
|
|
2062
|
-
Each color modifier below only swaps --_color; the tonal surface,
|
|
2063
|
-
contrast text, and hover/active strategy are identical.
|
|
2064
|
-
The .critical scope class in theme.css redirects --palette-source so
|
|
2065
|
-
--color-6 below becomes a tint of the active color. */
|
|
2066
2036
|
&.ui-critical,
|
|
2067
2037
|
&.ui-primary {
|
|
2068
2038
|
--_color-contrast: var(--gray-1);
|
|
@@ -2090,20 +2060,16 @@
|
|
|
2090
2060
|
&:where(:not([disabled])) {
|
|
2091
2061
|
&:where(:not(:active):hover) {
|
|
2092
2062
|
&::before {
|
|
2093
|
-
background-color: var(
|
|
2094
|
-
|
|
2095
|
-
var(--_default-hover-bg-color)
|
|
2096
|
-
);
|
|
2063
|
+
background-color: var(--_interaction-hover-color,
|
|
2064
|
+
var(--_default-hover-bg-color));
|
|
2097
2065
|
}
|
|
2098
2066
|
}
|
|
2099
2067
|
|
|
2100
2068
|
&:where(:hover:active),
|
|
2101
2069
|
&[aria-current="page"] {
|
|
2102
2070
|
&::before {
|
|
2103
|
-
background-color: var(
|
|
2104
|
-
|
|
2105
|
-
var(--_default-active-bg-color)
|
|
2106
|
-
);
|
|
2071
|
+
background-color: var(--_interaction-active-color,
|
|
2072
|
+
var(--_default-active-bg-color));
|
|
2107
2073
|
}
|
|
2108
2074
|
}
|
|
2109
2075
|
}
|
|
@@ -2525,7 +2491,7 @@
|
|
|
2525
2491
|
--_card-border-width: 1px;
|
|
2526
2492
|
}
|
|
2527
2493
|
|
|
2528
|
-
|
|
2494
|
+
&> :where(hgroup, .ui-content) {
|
|
2529
2495
|
padding-inline: var(--size-3);
|
|
2530
2496
|
|
|
2531
2497
|
&:last-child {
|
|
@@ -2534,11 +2500,12 @@
|
|
|
2534
2500
|
}
|
|
2535
2501
|
|
|
2536
2502
|
/* Header */
|
|
2537
|
-
|
|
2503
|
+
&>hgroup {
|
|
2538
2504
|
padding-block: var(--size-3) 0;
|
|
2539
2505
|
|
|
2540
2506
|
/* Top paragraph */
|
|
2541
|
-
|
|
2507
|
+
&>p:first-of-type:first-child {
|
|
2508
|
+
font-size: var(--font-size-0);
|
|
2542
2509
|
line-height: 1.3;
|
|
2543
2510
|
}
|
|
2544
2511
|
|
|
@@ -2547,18 +2514,18 @@
|
|
|
2547
2514
|
}
|
|
2548
2515
|
|
|
2549
2516
|
/* Bottom paragraph */
|
|
2550
|
-
|
|
2517
|
+
&>p:last-of-type:last-child:not(:first-child) {
|
|
2551
2518
|
font-size: var(--font-size-1);
|
|
2552
2519
|
}
|
|
2553
2520
|
}
|
|
2554
2521
|
|
|
2555
2522
|
/* Content */
|
|
2556
|
-
|
|
2523
|
+
&>.ui-content:where(:only-child, :first-child) {
|
|
2557
2524
|
padding-block: var(--size-3) var(--size-4);
|
|
2558
2525
|
}
|
|
2559
2526
|
|
|
2560
2527
|
/* Actions */
|
|
2561
|
-
|
|
2528
|
+
&>.ui-actions {
|
|
2562
2529
|
display: flex;
|
|
2563
2530
|
gap: var(--size-2);
|
|
2564
2531
|
margin-block: var(--size-2) 0;
|
|
@@ -3504,9 +3471,6 @@
|
|
|
3504
3471
|
--_motion: var(--motion, 1);
|
|
3505
3472
|
display: grid;
|
|
3506
3473
|
gap: var(--size-1) 0;
|
|
3507
|
-
/* Two-column base so the optional .value cell can sit next to the
|
|
3508
|
-
label on row 1. Children that span the full width keep using
|
|
3509
|
-
`grid-column: 1/-1`, so this is backwards compatible. */
|
|
3510
3474
|
grid-template-columns: 1fr auto;
|
|
3511
3475
|
position: relative;
|
|
3512
3476
|
|
|
@@ -3518,8 +3482,6 @@
|
|
|
3518
3482
|
grid-row: 1;
|
|
3519
3483
|
}
|
|
3520
3484
|
|
|
3521
|
-
/* Live current-value readout. Pairs with the <output> element
|
|
3522
|
-
rendered by the Range component (or hand-written .value markup). */
|
|
3523
3485
|
:where(.ui-value) {
|
|
3524
3486
|
color: var(--text-muted);
|
|
3525
3487
|
font-size: var(--font-size-0);
|
|
@@ -3558,7 +3520,7 @@
|
|
|
3558
3520
|
margin-top: calc(var(--size-1) * -1);
|
|
3559
3521
|
padding-inline: calc(3ex / 2);
|
|
3560
3522
|
|
|
3561
|
-
|
|
3523
|
+
&>option {
|
|
3562
3524
|
display: flex;
|
|
3563
3525
|
inline-size: 0;
|
|
3564
3526
|
justify-content: center;
|
|
@@ -3622,9 +3584,6 @@
|
|
|
3622
3584
|
min-inline-size: 25ch;
|
|
3623
3585
|
}
|
|
3624
3586
|
|
|
3625
|
-
/* In spread mode, the value sits below the slider in col 2
|
|
3626
|
-
(where end-text would normally land). When end-text is also
|
|
3627
|
-
present it shifts down a row to avoid collision. */
|
|
3628
3587
|
:where(.ui-value) {
|
|
3629
3588
|
grid-column: 2;
|
|
3630
3589
|
grid-row: 2;
|
|
@@ -3641,8 +3600,6 @@
|
|
|
3641
3600
|
grid-row: 2;
|
|
3642
3601
|
}
|
|
3643
3602
|
|
|
3644
|
-
/* When both datalist and end-text exist, push end-text below the datalist
|
|
3645
|
-
so they don't collide on the same grid cell. */
|
|
3646
3603
|
&:has(datalist) :where(.ui-end-text) {
|
|
3647
3604
|
grid-row: 3;
|
|
3648
3605
|
}
|
|
@@ -3666,9 +3623,6 @@
|
|
|
3666
3623
|
grid-row: 1;
|
|
3667
3624
|
}
|
|
3668
3625
|
|
|
3669
|
-
/* Share row 1 with the label: the label's text stays left-aligned
|
|
3670
|
-
in its full-width cell, while the value shrinks to fit and
|
|
3671
|
-
right-aligns. Visually reads as a "[name ........ value]" row. */
|
|
3672
3626
|
:where(.ui-value) {
|
|
3673
3627
|
grid-row: 1;
|
|
3674
3628
|
justify-self: end;
|
|
@@ -3739,11 +3693,9 @@
|
|
|
3739
3693
|
/* Track */
|
|
3740
3694
|
&::-webkit-slider-runnable-track {
|
|
3741
3695
|
appearance: none;
|
|
3742
|
-
background: linear-gradient(
|
|
3743
|
-
|
|
3744
|
-
|
|
3745
|
-
var(--_track-color) 0%
|
|
3746
|
-
);
|
|
3696
|
+
background: linear-gradient(to right,
|
|
3697
|
+
var(--_track-fill-color) var(--_track-fill, 0%),
|
|
3698
|
+
var(--_track-color) 0%);
|
|
3747
3699
|
block-size: var(--_track-height);
|
|
3748
3700
|
border-radius: var(--_track-radius);
|
|
3749
3701
|
}
|
|
@@ -3769,8 +3721,7 @@
|
|
|
3769
3721
|
block-size: var(--_thumb-size);
|
|
3770
3722
|
border: 3px solid var(--surface-default);
|
|
3771
3723
|
border-radius: 50%;
|
|
3772
|
-
box-shadow: 0 0 0 var(--_thumb-highlight-size)
|
|
3773
|
-
var(--_thumb-highlight-color);
|
|
3724
|
+
box-shadow: 0 0 0 var(--_thumb-highlight-size) var(--_thumb-highlight-color);
|
|
3774
3725
|
cursor: ew-resize;
|
|
3775
3726
|
inline-size: var(--_thumb-size);
|
|
3776
3727
|
margin-block-start: var(--_thumb-offset);
|
|
@@ -3788,8 +3739,7 @@
|
|
|
3788
3739
|
block-size: var(--_thumb-size);
|
|
3789
3740
|
border: 3px solid var(--surface-default);
|
|
3790
3741
|
border-radius: 50%;
|
|
3791
|
-
box-shadow: 0 0 0 var(--_thumb-highlight-size)
|
|
3792
|
-
var(--_thumb-highlight-color);
|
|
3742
|
+
box-shadow: 0 0 0 var(--_thumb-highlight-size) var(--_thumb-highlight-color);
|
|
3793
3743
|
cursor: ew-resize;
|
|
3794
3744
|
inline-size: var(--_thumb-size);
|
|
3795
3745
|
margin-block-start: var(--_thumb-offset);
|
|
@@ -3814,10 +3764,8 @@
|
|
|
3814
3764
|
|
|
3815
3765
|
&:active {
|
|
3816
3766
|
--_thumb-highlight-size: var(--size-2);
|
|
3817
|
-
--_track-color: light-dark(
|
|
3818
|
-
|
|
3819
|
-
oklch(from var(--field-border-color) calc(l * 1.1) c h)
|
|
3820
|
-
);
|
|
3767
|
+
--_track-color: light-dark(oklch(from var(--field-border-color) calc(l * 0.9) c h),
|
|
3768
|
+
oklch(from var(--field-border-color) calc(l * 1.1) c h));
|
|
3821
3769
|
}
|
|
3822
3770
|
}
|
|
3823
3771
|
|
|
@@ -4214,7 +4162,6 @@
|
|
|
4214
4162
|
}
|
|
4215
4163
|
}
|
|
4216
4164
|
|
|
4217
|
-
/* Severity icons via CSS data URIs — keeps icon assets out of JS strings. */
|
|
4218
4165
|
&[data-severity="success"] .ui-icon {
|
|
4219
4166
|
background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='20' height='20' viewBox='0 0 24 24' fill='none' stroke='%2322c55e' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'><path d='M22 11.08V12a10 10 0 1 1-5.93-9.14'/><path d='m9 11 3 3L22 4'/></svg>");
|
|
4220
4167
|
}
|
|
@@ -4244,8 +4191,6 @@
|
|
|
4244
4191
|
}
|
|
4245
4192
|
}
|
|
4246
4193
|
|
|
4247
|
-
/* Identity keyframe — only purpose is to delay the exit animation by the
|
|
4248
|
-
author-defined duration. */
|
|
4249
4194
|
@keyframes toast-hold {
|
|
4250
4195
|
from {
|
|
4251
4196
|
opacity: 1;
|
|
@@ -4326,10 +4271,8 @@
|
|
|
4326
4271
|
|
|
4327
4272
|
/** Overline */
|
|
4328
4273
|
:where(.ui-overline) {
|
|
4329
|
-
color: light-dark(
|
|
4330
|
-
|
|
4331
|
-
oklch(from var(--text-muted) calc(l * 0.75) c h)
|
|
4332
|
-
);
|
|
4274
|
+
color: light-dark(oklch(from var(--text-muted) calc(l * 1.25) c h),
|
|
4275
|
+
oklch(from var(--text-muted) calc(l * 0.75) c h));
|
|
4333
4276
|
font-size: var(--font-size-0);
|
|
4334
4277
|
font-weight: 500;
|
|
4335
4278
|
letter-spacing: 0.06em;
|
|
@@ -4337,20 +4280,18 @@
|
|
|
4337
4280
|
}
|
|
4338
4281
|
|
|
4339
4282
|
:where(.ui-hgroup) {
|
|
4340
|
-
|
|
4283
|
+
&>p {
|
|
4341
4284
|
margin: 0;
|
|
4342
4285
|
}
|
|
4343
4286
|
|
|
4344
|
-
|
|
4287
|
+
&> :where(h1, h2, h3, h4, h5, h6) {
|
|
4345
4288
|
margin-block: 0 0.4em;
|
|
4346
4289
|
}
|
|
4347
4290
|
|
|
4348
4291
|
/* First p element (overline) */
|
|
4349
|
-
|
|
4350
|
-
color: light-dark(
|
|
4351
|
-
|
|
4352
|
-
oklch(from var(--text-muted) calc(l * 0.75) c h)
|
|
4353
|
-
);
|
|
4292
|
+
&>p:first-of-type:first-child {
|
|
4293
|
+
color: light-dark(oklch(from var(--text-muted) calc(l * 1.25) c h),
|
|
4294
|
+
oklch(from var(--text-muted) calc(l * 0.75) c h));
|
|
4354
4295
|
font-size: var(--font-size-0);
|
|
4355
4296
|
font-weight: 500;
|
|
4356
4297
|
letter-spacing: 0.06em;
|
|
@@ -4358,13 +4299,13 @@
|
|
|
4358
4299
|
}
|
|
4359
4300
|
|
|
4360
4301
|
/* Body paragraphs after the heading */
|
|
4361
|
-
|
|
4302
|
+
&>p:not(:first-of-type:first-child) {
|
|
4362
4303
|
color: oklch(from currentColor l c h / 75%);
|
|
4363
4304
|
font-size: var(--font-size-3);
|
|
4364
4305
|
line-height: 1.6;
|
|
4365
4306
|
}
|
|
4366
4307
|
|
|
4367
|
-
|
|
4308
|
+
&>p+p {
|
|
4368
4309
|
margin-block-start: 0.75em;
|
|
4369
4310
|
}
|
|
4370
4311
|
}
|
|
@@ -4376,7 +4317,7 @@
|
|
|
4376
4317
|
line-height: 1.6;
|
|
4377
4318
|
}
|
|
4378
4319
|
|
|
4379
|
-
/* Inline text elements
|
|
4320
|
+
/* Inline text elements - class utilities */
|
|
4380
4321
|
:where(.ui-u, .ui-abbr, .ui-dfn) {
|
|
4381
4322
|
text-decoration: underline;
|
|
4382
4323
|
text-underline-offset: 1px;
|
|
@@ -4501,7 +4442,7 @@
|
|
|
4501
4442
|
scrollbar-width: thin;
|
|
4502
4443
|
white-space: pre;
|
|
4503
4444
|
|
|
4504
|
-
>
|
|
4445
|
+
>code {
|
|
4505
4446
|
background: none;
|
|
4506
4447
|
border-radius: 0;
|
|
4507
4448
|
color: inherit;
|
|
@@ -4528,6 +4469,7 @@
|
|
|
4528
4469
|
text-underline-offset: 2px;
|
|
4529
4470
|
|
|
4530
4471
|
&[href] {
|
|
4472
|
+
|
|
4531
4473
|
&:hover,
|
|
4532
4474
|
&:focus-visible {
|
|
4533
4475
|
color: var(--primary-light);
|
|
@@ -4577,7 +4519,7 @@
|
|
|
4577
4519
|
overflow-x: auto;
|
|
4578
4520
|
scrollbar-width: thin;
|
|
4579
4521
|
|
|
4580
|
-
>
|
|
4522
|
+
>code {
|
|
4581
4523
|
background: none;
|
|
4582
4524
|
border-radius: 0;
|
|
4583
4525
|
color: inherit;
|
|
@@ -4601,7 +4543,7 @@
|
|
|
4601
4543
|
font-weight: 700;
|
|
4602
4544
|
text-wrap: pretty;
|
|
4603
4545
|
|
|
4604
|
-
|
|
4546
|
+
&+*:not(&) {
|
|
4605
4547
|
margin-block-start: 0;
|
|
4606
4548
|
}
|
|
4607
4549
|
}
|
|
@@ -4648,10 +4590,8 @@
|
|
|
4648
4590
|
|
|
4649
4591
|
/** Overline */
|
|
4650
4592
|
:is(.ui-overline, hgroup p:first-of-type:first-child) {
|
|
4651
|
-
color: light-dark(
|
|
4652
|
-
|
|
4653
|
-
oklch(from var(--text-muted) calc(l * 0.75) c h)
|
|
4654
|
-
);
|
|
4593
|
+
color: light-dark(oklch(from var(--text-muted) calc(l * 1.25) c h),
|
|
4594
|
+
oklch(from var(--text-muted) calc(l * 0.75) c h));
|
|
4655
4595
|
font-size: var(--font-size-0);
|
|
4656
4596
|
font-weight: 500;
|
|
4657
4597
|
letter-spacing: 0.06em;
|
|
@@ -4659,26 +4599,26 @@
|
|
|
4659
4599
|
}
|
|
4660
4600
|
|
|
4661
4601
|
hgroup {
|
|
4662
|
-
|
|
4602
|
+
&>p {
|
|
4663
4603
|
margin: 0;
|
|
4664
4604
|
}
|
|
4665
4605
|
|
|
4666
|
-
|
|
4606
|
+
&> :where(h1, h2, h3, h4, h5, h6) {
|
|
4667
4607
|
margin-block: 0 0.4em;
|
|
4668
4608
|
}
|
|
4669
4609
|
|
|
4670
|
-
|
|
4610
|
+
&+* {
|
|
4671
4611
|
margin-block-start: 3em;
|
|
4672
4612
|
}
|
|
4673
4613
|
|
|
4674
4614
|
/* Body paragraphs after the heading */
|
|
4675
|
-
|
|
4615
|
+
&>p:not(:first-of-type:first-child) {
|
|
4676
4616
|
color: oklch(from currentColor l c h / 75%);
|
|
4677
4617
|
font-size: var(--font-size-3);
|
|
4678
4618
|
line-height: 1.6;
|
|
4679
4619
|
}
|
|
4680
4620
|
|
|
4681
|
-
|
|
4621
|
+
&>p+p {
|
|
4682
4622
|
margin-block-start: 0.75em;
|
|
4683
4623
|
}
|
|
4684
4624
|
}
|
|
@@ -4740,7 +4680,7 @@
|
|
|
4740
4680
|
margin-block: var(--size-7);
|
|
4741
4681
|
place-items: center;
|
|
4742
4682
|
|
|
4743
|
-
|
|
4683
|
+
&>* {
|
|
4744
4684
|
margin-block: 0;
|
|
4745
4685
|
}
|
|
4746
4686
|
|
|
@@ -4751,18 +4691,18 @@
|
|
|
4751
4691
|
}
|
|
4752
4692
|
|
|
4753
4693
|
/* Remove top margin from first child */
|
|
4754
|
-
|
|
4694
|
+
&> :first-child {
|
|
4755
4695
|
margin-block-start: 0;
|
|
4756
4696
|
}
|
|
4757
4697
|
|
|
4758
4698
|
/* Remove bottom margin from last child */
|
|
4759
|
-
|
|
4699
|
+
&> :last-child {
|
|
4760
4700
|
margin-block-end: 0;
|
|
4761
4701
|
}
|
|
4762
4702
|
|
|
4763
4703
|
/* Horizontal rules */
|
|
4764
4704
|
hr {
|
|
4765
|
-
|
|
4705
|
+
&+* {
|
|
4766
4706
|
margin-block-start: 0;
|
|
4767
4707
|
}
|
|
4768
4708
|
}
|
|
@@ -4877,21 +4817,21 @@
|
|
|
4877
4817
|
|
|
4878
4818
|
/* Floating wrapper: traditional inset-based positioning so this works
|
|
4879
4819
|
in browsers without position-area support (Firefox, older Safari). */
|
|
4880
|
-
|
|
4820
|
+
&>.ui-anchor-floating:not([popover]) {
|
|
4881
4821
|
inset: var(--_badge-inset);
|
|
4882
4822
|
position-anchor: auto;
|
|
4883
4823
|
position-area: none;
|
|
4884
4824
|
}
|
|
4885
4825
|
|
|
4886
4826
|
/* Indicator */
|
|
4887
|
-
|
|
4827
|
+
&>.ui-anchor-floating>.ui-badge-indicator {
|
|
4888
4828
|
background-color: var(--_bg-color);
|
|
4889
4829
|
block-size: var(--_size);
|
|
4890
4830
|
border: 2px solid var(--_border-color);
|
|
4891
4831
|
border-radius: var(--radius-round);
|
|
4892
4832
|
color: var(--_text-color);
|
|
4893
4833
|
display: grid;
|
|
4894
|
-
font-size:
|
|
4834
|
+
font-size: var(--font-size-0);
|
|
4895
4835
|
font-weight: 500;
|
|
4896
4836
|
inline-size: max-content;
|
|
4897
4837
|
line-height: normal;
|
|
@@ -4953,7 +4893,7 @@
|
|
|
4953
4893
|
--_anchor-ty: var(--_dot-size);
|
|
4954
4894
|
}
|
|
4955
4895
|
|
|
4956
|
-
&.ui-dot
|
|
4896
|
+
&.ui-dot>.ui-anchor-floating>.ui-badge-indicator {
|
|
4957
4897
|
block-size: var(--_dot-size);
|
|
4958
4898
|
inline-size: var(--_dot-size);
|
|
4959
4899
|
min-inline-size: var(--_dot-size);
|
|
@@ -4961,7 +4901,7 @@
|
|
|
4961
4901
|
}
|
|
4962
4902
|
|
|
4963
4903
|
/* Visibility */
|
|
4964
|
-
&.ui-invisible
|
|
4904
|
+
&.ui-invisible>.ui-anchor-floating>.ui-badge-indicator {
|
|
4965
4905
|
opacity: 0;
|
|
4966
4906
|
pointer-events: none;
|
|
4967
4907
|
}
|
|
@@ -4981,10 +4921,8 @@
|
|
|
4981
4921
|
border-radius: 0;
|
|
4982
4922
|
|
|
4983
4923
|
/* button.css > --_accent-tonal */
|
|
4984
|
-
--_divider-color: light-dark(
|
|
4985
|
-
|
|
4986
|
-
oklch(from var(--_accent-tonal) calc(l + 0.1) c h)
|
|
4987
|
-
);
|
|
4924
|
+
--_divider-color: light-dark(oklch(from var(--_accent-tonal) calc(l - 0.1) c h),
|
|
4925
|
+
oklch(from var(--_accent-tonal) calc(l + 0.1) c h));
|
|
4988
4926
|
|
|
4989
4927
|
&.ui-outlined {
|
|
4990
4928
|
--_divider-color: var(--_border-color);
|
|
@@ -4998,9 +4936,7 @@
|
|
|
4998
4936
|
outline-offset: -4px;
|
|
4999
4937
|
}
|
|
5000
4938
|
|
|
5001
|
-
/* Color
|
|
5002
|
-
The .critical scope class in theme.css redirects --palette-source so
|
|
5003
|
-
--color-6 below becomes a tint of the active color. */
|
|
4939
|
+
/* Color inherited from Button Group. */
|
|
5004
4940
|
:where(.ui-button-group.ui-critical, .ui-button-group.ui-primary) & {
|
|
5005
4941
|
--_color-contrast: var(--gray-1);
|
|
5006
4942
|
--_color-tonal: var(--color-6);
|
|
@@ -5008,12 +4944,8 @@
|
|
|
5008
4944
|
--_default-hover-bg-color: oklch(from var(--_accent) l c h / 15%);
|
|
5009
4945
|
--_default-active-bg-color: oklch(from var(--_accent) l c h / 25%);
|
|
5010
4946
|
--_filled-hover-bg-color: oklch(from var(--_accent) calc(l - 0.1) c h);
|
|
5011
|
-
--_filled-active-bg-color: oklch(
|
|
5012
|
-
|
|
5013
|
-
);
|
|
5014
|
-
--_outlined-active-bg-color: oklch(
|
|
5015
|
-
from var(--_accent) calc(l - 0.1) c h
|
|
5016
|
-
);
|
|
4947
|
+
--_filled-active-bg-color: oklch(from var(--_accent) calc(l - 0.15) c h);
|
|
4948
|
+
--_outlined-active-bg-color: oklch(from var(--_accent) calc(l - 0.1) c h);
|
|
5017
4949
|
}
|
|
5018
4950
|
|
|
5019
4951
|
:where(.ui-button-group.ui-critical) & {
|
|
@@ -5077,10 +5009,8 @@
|
|
|
5077
5009
|
--_divider-color: currentColor;
|
|
5078
5010
|
|
|
5079
5011
|
:where(.ui-button-group.ui-critical, .ui-button-group.ui-primary) & {
|
|
5080
|
-
--_divider-color: light-dark(
|
|
5081
|
-
|
|
5082
|
-
oklch(from var(--_accent) calc(l + 0.1) c h)
|
|
5083
|
-
);
|
|
5012
|
+
--_divider-color: light-dark(oklch(from var(--_accent) calc(l - 0.1) c h),
|
|
5013
|
+
oklch(from var(--_accent) calc(l + 0.1) c h));
|
|
5084
5014
|
}
|
|
5085
5015
|
|
|
5086
5016
|
&:where(:not([disabled])) {
|
|
@@ -5108,17 +5038,15 @@
|
|
|
5108
5038
|
}
|
|
5109
5039
|
|
|
5110
5040
|
/* Siblings */
|
|
5111
|
-
|
|
5041
|
+
&+& {
|
|
5112
5042
|
border-inline-start-color: var(--_divider-color);
|
|
5113
5043
|
border-inline-width: 1px;
|
|
5114
5044
|
margin-inline-start: -1px;
|
|
5115
5045
|
|
|
5116
5046
|
&[disabled] {
|
|
5117
|
-
border-inline-start-color: color-mix(
|
|
5118
|
-
|
|
5119
|
-
|
|
5120
|
-
transparent
|
|
5121
|
-
);
|
|
5047
|
+
border-inline-start-color: color-mix(in oklch,
|
|
5048
|
+
var(--_divider-color) 40%,
|
|
5049
|
+
transparent);
|
|
5122
5050
|
}
|
|
5123
5051
|
}
|
|
5124
5052
|
}
|
|
@@ -5145,16 +5073,14 @@
|
|
|
5145
5073
|
border-end-end-radius: var(--_border-radius);
|
|
5146
5074
|
}
|
|
5147
5075
|
|
|
5148
|
-
|
|
5076
|
+
&+& {
|
|
5149
5077
|
border-block-start: 1px solid var(--_divider-color);
|
|
5150
5078
|
margin-block-start: -1px;
|
|
5151
5079
|
|
|
5152
5080
|
&[disabled] {
|
|
5153
|
-
border-block-start-color: color-mix(
|
|
5154
|
-
|
|
5155
|
-
|
|
5156
|
-
transparent
|
|
5157
|
-
);
|
|
5081
|
+
border-block-start-color: color-mix(in oklch,
|
|
5082
|
+
var(--_divider-color) 40%,
|
|
5083
|
+
transparent);
|
|
5158
5084
|
}
|
|
5159
5085
|
}
|
|
5160
5086
|
}
|
|
@@ -5232,7 +5158,7 @@
|
|
|
5232
5158
|
}
|
|
5233
5159
|
|
|
5234
5160
|
/* Layout */
|
|
5235
|
-
|
|
5161
|
+
&>summary {
|
|
5236
5162
|
background-color: inherit;
|
|
5237
5163
|
cursor: pointer;
|
|
5238
5164
|
font-weight: 700;
|
|
@@ -5257,17 +5183,17 @@
|
|
|
5257
5183
|
}
|
|
5258
5184
|
}
|
|
5259
5185
|
|
|
5260
|
-
&[open]
|
|
5186
|
+
&[open]>summary svg {
|
|
5261
5187
|
rotate: 180deg;
|
|
5262
5188
|
}
|
|
5263
5189
|
|
|
5264
|
-
|
|
5190
|
+
&>.ui-content {
|
|
5265
5191
|
margin-block-start: 0;
|
|
5266
5192
|
padding-block: var(--_content-padding-block);
|
|
5267
5193
|
padding-inline: var(--_content-padding-inline);
|
|
5268
5194
|
}
|
|
5269
5195
|
|
|
5270
|
-
|
|
5196
|
+
&>.ui-actions {
|
|
5271
5197
|
display: flex;
|
|
5272
5198
|
gap: var(--_actions-gap);
|
|
5273
5199
|
justify-content: end;
|
|
@@ -5292,12 +5218,12 @@
|
|
|
5292
5218
|
}
|
|
5293
5219
|
}
|
|
5294
5220
|
|
|
5295
|
-
|
|
5221
|
+
&>.ui-content {
|
|
5296
5222
|
margin-block: 0;
|
|
5297
5223
|
padding: 0;
|
|
5298
5224
|
}
|
|
5299
5225
|
|
|
5300
|
-
|
|
5226
|
+
&>details.ui-accordion {
|
|
5301
5227
|
--_border-color: transparent;
|
|
5302
5228
|
--_border-width: 0;
|
|
5303
5229
|
--_margin-inline: 0;
|
|
@@ -5306,7 +5232,7 @@
|
|
|
5306
5232
|
--_summary-padding-inline: var(--_item-summary-padding-inline);
|
|
5307
5233
|
|
|
5308
5234
|
/* Border between accordion items */
|
|
5309
|
-
|
|
5235
|
+
&+& {
|
|
5310
5236
|
border-block-start: 1px solid var(--_gutter-color);
|
|
5311
5237
|
border-radius: 0;
|
|
5312
5238
|
}
|
|
@@ -5904,9 +5830,7 @@ Lists meant to be used stand-alone or as part of Select elements
|
|
|
5904
5830
|
}
|
|
5905
5831
|
}
|
|
5906
5832
|
|
|
5907
|
-
/* Scroll-lock is provided by the shared `.ui-scroll-lock` utility in core/utils.css.
|
|
5908
|
-
This carve-out re-enables page scrolling when a transparent-backdrop drawer is
|
|
5909
|
-
open on wide viewports (where the drawer doesn't visually cover the page). */
|
|
5833
|
+
/* Scroll-lock is provided by the shared `.ui-scroll-lock` utility in core/utils.css. */
|
|
5910
5834
|
html:has(dialog.ui-drawer.ui-scroll-lock[open].ui-backdrop-transparent) {
|
|
5911
5835
|
overflow: unset;
|
|
5912
5836
|
overscroll-behavior: auto;
|
|
@@ -5919,6 +5843,7 @@ Lists meant to be used stand-alone or as part of Select elements
|
|
|
5919
5843
|
}
|
|
5920
5844
|
|
|
5921
5845
|
@layer components.extended {
|
|
5846
|
+
|
|
5922
5847
|
/* Form */
|
|
5923
5848
|
:where(.ui-form) {
|
|
5924
5849
|
display: grid;
|
|
@@ -6032,9 +5957,7 @@ Lists meant to be used stand-alone or as part of Select elements
|
|
|
6032
5957
|
gap: var(--size-4);
|
|
6033
5958
|
|
|
6034
5959
|
/* If it only has checkboxes, radios, or switches */
|
|
6035
|
-
&:has(> :where(.ui-checkbox, .ui-radio, .ui-switch)):not(
|
|
6036
|
-
:has(> :not(.ui-checkbox, .ui-radio, .ui-switch))
|
|
6037
|
-
) {
|
|
5960
|
+
&:has(> :where(.ui-checkbox, .ui-radio, .ui-switch)):not( :has(> :not(.ui-checkbox, .ui-radio, .ui-switch))) {
|
|
6038
5961
|
gap: var(--size-2);
|
|
6039
5962
|
}
|
|
6040
5963
|
|
|
@@ -6044,13 +5967,13 @@ Lists meant to be used stand-alone or as part of Select elements
|
|
|
6044
5967
|
flex-direction: row;
|
|
6045
5968
|
gap: var(--size-2);
|
|
6046
5969
|
|
|
6047
|
-
/* If it's not
|
|
5970
|
+
/* If it's not preceded by an hr */
|
|
6048
5971
|
&:not(hr + &) {
|
|
6049
5972
|
margin-block-start: var(--size-4);
|
|
6050
5973
|
}
|
|
6051
5974
|
}
|
|
6052
5975
|
|
|
6053
|
-
|
|
5976
|
+
&+& {
|
|
6054
5977
|
margin-block-start: var(--size-5);
|
|
6055
5978
|
}
|
|
6056
5979
|
|
|
@@ -6556,11 +6479,10 @@ Lists meant to be used stand-alone or as part of Select elements
|
|
|
6556
6479
|
transform: scale(0.9);
|
|
6557
6480
|
}
|
|
6558
6481
|
|
|
6559
|
-
transition:
|
|
6560
|
-
|
|
6561
|
-
|
|
6562
|
-
|
|
6563
|
-
scale calc(0.2s * var(--_motion)) var(--ease-3);
|
|
6482
|
+
transition: display calc(0.2s * var(--_motion)) allow-discrete,
|
|
6483
|
+
opacity calc(0.2s * var(--_motion)) var(--ease-3),
|
|
6484
|
+
overlay calc(0.2s * var(--_motion)) allow-discrete,
|
|
6485
|
+
scale calc(0.2s * var(--_motion)) var(--ease-3);
|
|
6564
6486
|
}
|
|
6565
6487
|
|
|
6566
6488
|
/* Animation off-stage styles */
|
|
@@ -6593,10 +6515,8 @@ Lists meant to be used stand-alone or as part of Select elements
|
|
|
6593
6515
|
[role="group"] {
|
|
6594
6516
|
label {
|
|
6595
6517
|
background-color: light-dark(var(--gray-3), var(--gray-13));
|
|
6596
|
-
color: light-dark(
|
|
6597
|
-
|
|
6598
|
-
oklch(from var(--text-primary) calc(l * 1.25) c h)
|
|
6599
|
-
);
|
|
6518
|
+
color: light-dark(oklch(from var(--text-primary) calc(l * 0.75) c h),
|
|
6519
|
+
oklch(from var(--text-primary) calc(l * 1.25) c h));
|
|
6600
6520
|
font-weight: 500;
|
|
6601
6521
|
overflow: hidden;
|
|
6602
6522
|
padding-inline: var(--size-2);
|
|
@@ -6619,6 +6539,7 @@ Lists meant to be used stand-alone or as part of Select elements
|
|
|
6619
6539
|
|
|
6620
6540
|
/* Option */
|
|
6621
6541
|
option {
|
|
6542
|
+
|
|
6622
6543
|
/* Checkmark */
|
|
6623
6544
|
/* TODO - checkmark should be the final version of the checkmark API. Follow the development of this and remove redundant psuedo stuff. */
|
|
6624
6545
|
&::check {
|
|
@@ -6641,6 +6562,7 @@ Lists meant to be used stand-alone or as part of Select elements
|
|
|
6641
6562
|
}
|
|
6642
6563
|
|
|
6643
6564
|
:where(.ui-select:has(select)) {
|
|
6565
|
+
|
|
6644
6566
|
/* Size */
|
|
6645
6567
|
&.ui-small {
|
|
6646
6568
|
button {
|
|
@@ -6790,7 +6712,7 @@ Lists meant to be used stand-alone or as part of Select elements
|
|
|
6790
6712
|
--_tooltip-color: light-dark(var(--gray-1), var(--gray-15));
|
|
6791
6713
|
--_tooltip-offset: var(--size-2);
|
|
6792
6714
|
|
|
6793
|
-
|
|
6715
|
+
&>.ui-anchor-floating {
|
|
6794
6716
|
background-color: var(--_tooltip-bg);
|
|
6795
6717
|
border-radius: var(--radius-2);
|
|
6796
6718
|
color: var(--_tooltip-color);
|
|
@@ -6812,18 +6734,16 @@ Lists meant to be used stand-alone or as part of Select elements
|
|
|
6812
6734
|
text-wrap: pretty;
|
|
6813
6735
|
}
|
|
6814
6736
|
|
|
6815
|
-
/*
|
|
6816
|
-
Anchored to the same --anchor so it flips together with the
|
|
6817
|
-
tooltip when position-try-fallbacks kicks in. */
|
|
6737
|
+
/* Arrow */
|
|
6818
6738
|
&.ui-with-arrow {
|
|
6819
6739
|
--_arrow-size: var(--size-2);
|
|
6820
6740
|
|
|
6821
|
-
|
|
6822
|
-
/*
|
|
6741
|
+
&>.ui-anchor-floating {
|
|
6742
|
+
/* Offset so the arrow doesn't overlap the trigger. */
|
|
6823
6743
|
--_tooltip-offset: calc(var(--size-2) + var(--_arrow-size) / 2);
|
|
6824
6744
|
}
|
|
6825
6745
|
|
|
6826
|
-
|
|
6746
|
+
&>.ui-anchor-floating::before {
|
|
6827
6747
|
background-color: var(--_tooltip-bg);
|
|
6828
6748
|
block-size: var(--_arrow-size);
|
|
6829
6749
|
content: "";
|
|
@@ -6837,7 +6757,7 @@ Lists meant to be used stand-alone or as part of Select elements
|
|
|
6837
6757
|
}
|
|
6838
6758
|
|
|
6839
6759
|
/* Fade */
|
|
6840
|
-
|
|
6760
|
+
&>.ui-anchor-floating[popover] {
|
|
6841
6761
|
opacity: 0;
|
|
6842
6762
|
transition:
|
|
6843
6763
|
display 0.15s allow-discrete,
|
|
@@ -6858,9 +6778,9 @@ Lists meant to be used stand-alone or as part of Select elements
|
|
|
6858
6778
|
/* Utils */
|
|
6859
6779
|
|
|
6860
6780
|
@layer utils {
|
|
6781
|
+
|
|
6861
6782
|
/*
|
|
6862
6783
|
Screen-reader only
|
|
6863
|
-
When you visibly want to hide an element but make it accessible for screen readers.
|
|
6864
6784
|
*/
|
|
6865
6785
|
.ui-sr-only {
|
|
6866
6786
|
block-size: 1px;
|
|
@@ -6917,8 +6837,7 @@ Add `.ui-scroll-lock` to any element that uses the [open] attribute (native <dia
|
|
|
6917
6837
|
inset-inline-start: 50%;
|
|
6918
6838
|
position: absolute;
|
|
6919
6839
|
transform-origin: center center;
|
|
6920
|
-
transform: translateX(calc(var(--isRTL) * 50%)) translateY(-50%)
|
|
6921
|
-
translateZ(-1px) scale(var(--thumb-scale));
|
|
6840
|
+
transform: translateX(calc(var(--isRTL) * 50%)) translateY(-50%) translateZ(-1px) scale(var(--thumb-scale));
|
|
6922
6841
|
will-change: transform;
|
|
6923
6842
|
|
|
6924
6843
|
transition: transform calc(0.2s * var(--motion, 1)) ease;
|