@aortl/admin-css 0.10.0 → 0.12.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/dist/admin.css +155 -63
- package/dist/admin.min.css +1 -1
- package/dist/admin.scoped.css +153 -63
- package/dist/admin.scoped.min.css +54 -38
- package/dist/admin.utilities.css +2405 -136
- package/dist/admin.utilities.min.css +1 -1
- package/package.json +1 -1
- package/src/components/badge.css +4 -6
- package/src/components/button.css +8 -9
- package/src/components/card.css +52 -1
- package/src/components/container.css +35 -0
- package/src/components/file-input.css +3 -7
- package/src/components/index.css +1 -0
- package/src/components/input.css +3 -7
- package/src/components/select.css +3 -7
- package/src/components/stat-card.css +31 -10
- package/src/components/tabs.css +3 -10
- package/src/components/textarea.css +3 -7
- package/src/utilities.css +30 -0
package/package.json
CHANGED
package/src/components/badge.css
CHANGED
|
@@ -3,15 +3,13 @@
|
|
|
3
3
|
@apply inline-flex items-center justify-center gap-1
|
|
4
4
|
px-2 h-5 rounded-full
|
|
5
5
|
text-xs font-medium leading-none whitespace-nowrap
|
|
6
|
-
border border-transparent
|
|
6
|
+
border border-transparent
|
|
7
|
+
bg-surface-strong text-text;
|
|
7
8
|
}
|
|
8
9
|
|
|
9
10
|
/* Variants — match the alert palette so danger/success/etc. stay coherent
|
|
10
|
-
across status indicators and chips in tables.
|
|
11
|
-
|
|
12
|
-
@apply bg-surface-strong text-text;
|
|
13
|
-
}
|
|
14
|
-
|
|
11
|
+
across status indicators and chips in tables. The bare `.badge` (no
|
|
12
|
+
modifier) renders the neutral look, now folded into the base. */
|
|
15
13
|
.badge-info {
|
|
16
14
|
@apply bg-info-muted text-info border-info-muted;
|
|
17
15
|
}
|
|
@@ -2,28 +2,27 @@
|
|
|
2
2
|
.btn {
|
|
3
3
|
@apply inline-flex items-center justify-center gap-2 px-4 py-2
|
|
4
4
|
rounded-lg font-medium text-sm leading-none
|
|
5
|
-
border border-
|
|
5
|
+
border border-border
|
|
6
|
+
bg-surface-muted text-text hover:bg-surface-strong
|
|
6
7
|
transition-colors duration-150
|
|
7
8
|
cursor-pointer select-none
|
|
8
9
|
focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-primary
|
|
9
10
|
disabled:opacity-50 disabled:cursor-not-allowed disabled:pointer-events-none;
|
|
10
11
|
}
|
|
11
12
|
|
|
12
|
-
/* Variants
|
|
13
|
+
/* Variants — the bare `.btn` (no modifier) is the low-emphasis default, so
|
|
14
|
+
most admin buttons need no variant class. The colored variants reset the
|
|
15
|
+
border to transparent since the base now carries a visible one. */
|
|
13
16
|
.btn-primary {
|
|
14
|
-
@apply bg-primary text-primary-content hover:bg-primary-hover;
|
|
15
|
-
}
|
|
16
|
-
|
|
17
|
-
.btn-secondary {
|
|
18
|
-
@apply bg-surface-muted text-text border-border hover:bg-surface-strong;
|
|
17
|
+
@apply bg-primary text-primary-content border-transparent hover:bg-primary-hover;
|
|
19
18
|
}
|
|
20
19
|
|
|
21
20
|
.btn-ghost {
|
|
22
|
-
@apply bg-transparent text-text hover:bg-surface-muted;
|
|
21
|
+
@apply bg-transparent text-text border-transparent hover:bg-surface-muted;
|
|
23
22
|
}
|
|
24
23
|
|
|
25
24
|
.btn-danger {
|
|
26
|
-
@apply bg-danger text-danger-content hover:opacity-90;
|
|
25
|
+
@apply bg-danger text-danger-content border-transparent hover:opacity-90;
|
|
27
26
|
}
|
|
28
27
|
|
|
29
28
|
/* Sizes (md is the default; modifiers override) */
|
package/src/components/card.css
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
@layer components {
|
|
2
2
|
.card {
|
|
3
3
|
@apply flex flex-col
|
|
4
|
-
bg-surface text-text
|
|
4
|
+
bg-surface-strong text-text
|
|
5
5
|
border border-border
|
|
6
6
|
rounded-xl
|
|
7
7
|
shadow-xs
|
|
@@ -45,4 +45,55 @@
|
|
|
45
45
|
.card-bordered {
|
|
46
46
|
@apply shadow-none border-border-strong;
|
|
47
47
|
}
|
|
48
|
+
|
|
49
|
+
/* Neutral variant — sits flush with the page (`--color-surface`, the same
|
|
50
|
+
fill as `html`/`.app-shell`) instead of the raised `surface-strong` of a
|
|
51
|
+
default card. For de-emphasised or grouped panels that shouldn't pop off
|
|
52
|
+
the background. No accent, no status meaning. */
|
|
53
|
+
.card-muted {
|
|
54
|
+
@apply bg-surface;
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
/* Color variants — tinted surface + matching border, mirroring Alert. The
|
|
58
|
+
title (and any leading icon, via `currentColor`) picks up the accent for
|
|
59
|
+
fast scanning. */
|
|
60
|
+
.card-primary {
|
|
61
|
+
@apply bg-primary-muted border-primary-muted;
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
.card-info {
|
|
65
|
+
@apply bg-info-muted border-info-muted;
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
.card-success {
|
|
69
|
+
@apply bg-success-muted border-success-muted;
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
.card-warning {
|
|
73
|
+
@apply bg-warning-muted border-warning-muted;
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
.card-danger {
|
|
77
|
+
@apply bg-danger-muted border-danger-muted;
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
.card-primary .card-title {
|
|
81
|
+
@apply text-primary;
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
.card-info .card-title {
|
|
85
|
+
@apply text-info;
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
.card-success .card-title {
|
|
89
|
+
@apply text-success;
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
.card-danger .card-title {
|
|
93
|
+
@apply text-danger;
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
/* `card-warning` keeps its title at `text-text`: the warning accent is
|
|
97
|
+
yellow-400 in both modes and fails AA contrast on the muted yellow
|
|
98
|
+
surface. The tinted bg still carries the warning signal. */
|
|
48
99
|
}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
@layer components {
|
|
2
|
+
/* Page content region — a centered, max-width column that also owns the
|
|
3
|
+
vertical rhythm between stacked page sections. Drop it inside the bare
|
|
4
|
+
`.app-shell-main` (which has no padding of its own). Width presets just
|
|
5
|
+
set `--container-max`; override the var per-instance to deviate. */
|
|
6
|
+
.container {
|
|
7
|
+
@apply flex flex-col gap-6 w-full mx-auto px-6 py-6;
|
|
8
|
+
max-width: var(--container-max, 90rem);
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
.container-sm {
|
|
12
|
+
--container-max: 60rem;
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
.container-lg {
|
|
16
|
+
--container-max: 115rem;
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
/* Full-bleed: edge-to-edge within `main`, padding retained. */
|
|
20
|
+
.container-fluid {
|
|
21
|
+
--container-max: none;
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
/* Denser vertical rhythm + tighter block padding for packed screens. */
|
|
25
|
+
.container-compact {
|
|
26
|
+
@apply gap-4 py-4;
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
/* Less horizontal padding on small viewports — reuses the shell breakpoint. */
|
|
30
|
+
@media (max-width: 48rem) {
|
|
31
|
+
.container {
|
|
32
|
+
@apply px-4;
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
}
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
.file-input {
|
|
3
3
|
@apply inline-flex items-center w-full pr-3 text-sm leading-none
|
|
4
4
|
bg-surface text-text
|
|
5
|
-
border border-
|
|
5
|
+
border border-border hover:border-border-strong rounded-lg overflow-hidden
|
|
6
6
|
transition-colors duration-150
|
|
7
7
|
focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-primary
|
|
8
8
|
disabled:opacity-50 disabled:cursor-not-allowed
|
|
@@ -13,16 +13,12 @@
|
|
|
13
13
|
file:cursor-pointer;
|
|
14
14
|
}
|
|
15
15
|
|
|
16
|
-
.file-input-bordered {
|
|
17
|
-
@apply border-border hover:border-border-strong;
|
|
18
|
-
}
|
|
19
|
-
|
|
20
16
|
.file-input-ghost {
|
|
21
|
-
@apply bg-transparent hover:bg-surface-muted;
|
|
17
|
+
@apply bg-transparent border-transparent hover:bg-surface-muted hover:border-transparent;
|
|
22
18
|
}
|
|
23
19
|
|
|
24
20
|
.file-input-danger {
|
|
25
|
-
@apply border-danger focus-visible:outline-danger;
|
|
21
|
+
@apply border-danger hover:border-danger focus-visible:outline-danger;
|
|
26
22
|
}
|
|
27
23
|
|
|
28
24
|
/* Sizes */
|
package/src/components/index.css
CHANGED
package/src/components/input.css
CHANGED
|
@@ -3,23 +3,19 @@
|
|
|
3
3
|
@apply inline-flex items-center w-full px-3 py-2
|
|
4
4
|
rounded-lg text-sm leading-none
|
|
5
5
|
bg-surface text-text
|
|
6
|
-
border border-
|
|
6
|
+
border border-border hover:border-border-strong
|
|
7
7
|
transition-colors duration-150
|
|
8
8
|
placeholder:text-text-muted
|
|
9
9
|
focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-primary
|
|
10
10
|
disabled:opacity-50 disabled:cursor-not-allowed;
|
|
11
11
|
}
|
|
12
12
|
|
|
13
|
-
.input-bordered {
|
|
14
|
-
@apply border-border hover:border-border-strong;
|
|
15
|
-
}
|
|
16
|
-
|
|
17
13
|
.input-ghost {
|
|
18
|
-
@apply bg-transparent hover:bg-surface-muted;
|
|
14
|
+
@apply bg-transparent border-transparent hover:bg-surface-muted hover:border-transparent;
|
|
19
15
|
}
|
|
20
16
|
|
|
21
17
|
.input-danger {
|
|
22
|
-
@apply border-danger focus-visible:outline-danger;
|
|
18
|
+
@apply border-danger hover:border-danger focus-visible:outline-danger;
|
|
23
19
|
}
|
|
24
20
|
|
|
25
21
|
/* Sizes */
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
@apply inline-flex items-center justify-between gap-2 w-full px-3 py-2
|
|
4
4
|
rounded-lg text-sm leading-none text-left
|
|
5
5
|
bg-surface text-text
|
|
6
|
-
border border-
|
|
6
|
+
border border-border hover:border-border-strong
|
|
7
7
|
cursor-pointer select-none
|
|
8
8
|
transition-colors duration-150
|
|
9
9
|
focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-primary
|
|
@@ -18,16 +18,12 @@
|
|
|
18
18
|
@apply text-text-muted;
|
|
19
19
|
}
|
|
20
20
|
|
|
21
|
-
.select-bordered {
|
|
22
|
-
@apply border-border hover:border-border-strong;
|
|
23
|
-
}
|
|
24
|
-
|
|
25
21
|
.select-ghost {
|
|
26
|
-
@apply bg-transparent hover:bg-surface-muted;
|
|
22
|
+
@apply bg-transparent border-transparent hover:bg-surface-muted hover:border-transparent;
|
|
27
23
|
}
|
|
28
24
|
|
|
29
25
|
.select-danger {
|
|
30
|
-
@apply border-danger focus-visible:outline-danger;
|
|
26
|
+
@apply border-danger hover:border-danger focus-visible:outline-danger;
|
|
31
27
|
}
|
|
32
28
|
|
|
33
29
|
/* Sizes */
|
|
@@ -1,11 +1,13 @@
|
|
|
1
1
|
@layer components {
|
|
2
|
+
/* A KPI tile is a `.card` shell with no inner `.card-body` — label / value /
|
|
3
|
+
detail stack directly on the card. Pair `.stat-card` with `.card` in the
|
|
4
|
+
markup so it inherits the surface, border, radius, and shadow, plus every
|
|
5
|
+
card modifier: `.card-bordered`, `.card-compact`, and the color variants
|
|
6
|
+
(`.card-primary`, `.card-muted`, …). `.stat-card` only adds the flat inner
|
|
7
|
+
padding/gap and the inverted hierarchy (the value dominates, the label is a
|
|
8
|
+
small annotation). */
|
|
2
9
|
.stat-card {
|
|
3
|
-
@apply
|
|
4
|
-
p-4
|
|
5
|
-
bg-surface text-text
|
|
6
|
-
border border-border
|
|
7
|
-
rounded-xl
|
|
8
|
-
shadow-xs;
|
|
10
|
+
@apply gap-1 p-4;
|
|
9
11
|
}
|
|
10
12
|
|
|
11
13
|
.stat-card-label {
|
|
@@ -20,12 +22,31 @@
|
|
|
20
22
|
@apply text-sm text-text-muted;
|
|
21
23
|
}
|
|
22
24
|
|
|
23
|
-
/*
|
|
24
|
-
|
|
25
|
+
/* `.card-compact` tightens `.card-body`, but a stat card has no body — apply
|
|
26
|
+
the same padding step to the stat-card root, with a tighter gap to match. */
|
|
27
|
+
.card-compact.stat-card {
|
|
25
28
|
@apply p-3 gap-0.5;
|
|
26
29
|
}
|
|
27
30
|
|
|
28
|
-
|
|
29
|
-
|
|
31
|
+
/* Color variants (`.card-primary`, `.card-success`, …) supply the tinted
|
|
32
|
+
surface + border via `.card`. Here we tint the value to the matching accent
|
|
33
|
+
— the headline metric is a stat card's analog of `.card-title`, so a status
|
|
34
|
+
KPI reads its colour at a glance. `warning` is skipped for the same reason
|
|
35
|
+
`.card-warning` skips its title: yellow-400 fails AA on the muted yellow
|
|
36
|
+
surface. The tinted surface still carries the warning signal. */
|
|
37
|
+
.card-primary .stat-card-value {
|
|
38
|
+
@apply text-primary;
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
.card-info .stat-card-value {
|
|
42
|
+
@apply text-info;
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
.card-success .stat-card-value {
|
|
46
|
+
@apply text-success;
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
.card-danger .stat-card-value {
|
|
50
|
+
@apply text-danger;
|
|
30
51
|
}
|
|
31
52
|
}
|
package/src/components/tabs.css
CHANGED
|
@@ -52,14 +52,13 @@
|
|
|
52
52
|
@apply outline-2 outline-offset-2 outline-primary;
|
|
53
53
|
}
|
|
54
54
|
|
|
55
|
-
/*
|
|
56
|
-
|
|
57
|
-
|
|
55
|
+
/* Default — underline marker on the active tab. The pseudo sits below the
|
|
56
|
+
.tab, overlapping the .tab-list bottom border. Applies to any tabs root
|
|
57
|
+
that isn't .tabs-boxed, so the bare `.tabs` default gets it for free. */
|
|
58
58
|
.tabs:not(.tabs-boxed) .tab {
|
|
59
59
|
position: relative;
|
|
60
60
|
}
|
|
61
61
|
|
|
62
|
-
.tabs-bordered .tab::after,
|
|
63
62
|
.tabs:not(.tabs-boxed) .tab::after {
|
|
64
63
|
content: "";
|
|
65
64
|
position: absolute;
|
|
@@ -71,9 +70,6 @@
|
|
|
71
70
|
transition: transform 150ms ease;
|
|
72
71
|
}
|
|
73
72
|
|
|
74
|
-
.tabs-bordered .tab[data-selected]::after,
|
|
75
|
-
.tabs-bordered .tab[aria-selected="true"]::after,
|
|
76
|
-
.tabs-bordered .tab-input:checked + .tab::after,
|
|
77
73
|
.tabs:not(.tabs-boxed) .tab[data-selected]::after,
|
|
78
74
|
.tabs:not(.tabs-boxed) .tab[aria-selected="true"]::after,
|
|
79
75
|
.tabs:not(.tabs-boxed) .tab-input:checked + .tab::after {
|
|
@@ -153,7 +149,6 @@
|
|
|
153
149
|
@apply w-full justify-start;
|
|
154
150
|
}
|
|
155
151
|
|
|
156
|
-
.tabs[data-orientation="vertical"].tabs-bordered .tab::after,
|
|
157
152
|
.tabs[data-orientation="vertical"]:not(.tabs-boxed) .tab::after {
|
|
158
153
|
inset-inline: auto;
|
|
159
154
|
inset-inline-end: -1px;
|
|
@@ -163,8 +158,6 @@
|
|
|
163
158
|
transform: scaleY(0);
|
|
164
159
|
}
|
|
165
160
|
|
|
166
|
-
.tabs[data-orientation="vertical"].tabs-bordered .tab[data-selected]::after,
|
|
167
|
-
.tabs[data-orientation="vertical"].tabs-bordered .tab[aria-selected="true"]::after,
|
|
168
161
|
.tabs[data-orientation="vertical"]:not(.tabs-boxed) .tab[data-selected]::after,
|
|
169
162
|
.tabs[data-orientation="vertical"]:not(.tabs-boxed) .tab[aria-selected="true"]::after {
|
|
170
163
|
transform: scaleY(1);
|
|
@@ -3,23 +3,19 @@
|
|
|
3
3
|
@apply block w-full px-3 py-2 min-h-20 resize-y
|
|
4
4
|
rounded-lg text-sm
|
|
5
5
|
bg-surface text-text
|
|
6
|
-
border border-
|
|
6
|
+
border border-border hover:border-border-strong
|
|
7
7
|
transition-colors duration-150
|
|
8
8
|
placeholder:text-text-muted
|
|
9
9
|
focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-primary
|
|
10
10
|
disabled:opacity-50 disabled:cursor-not-allowed;
|
|
11
11
|
}
|
|
12
12
|
|
|
13
|
-
.textarea-bordered {
|
|
14
|
-
@apply border-border hover:border-border-strong;
|
|
15
|
-
}
|
|
16
|
-
|
|
17
13
|
.textarea-ghost {
|
|
18
|
-
@apply bg-transparent hover:bg-surface-muted;
|
|
14
|
+
@apply bg-transparent border-transparent hover:bg-surface-muted hover:border-transparent;
|
|
19
15
|
}
|
|
20
16
|
|
|
21
17
|
.textarea-danger {
|
|
22
|
-
@apply border-danger focus-visible:outline-danger;
|
|
18
|
+
@apply border-danger hover:border-danger focus-visible:outline-danger;
|
|
23
19
|
}
|
|
24
20
|
|
|
25
21
|
/* Sizes */
|
package/src/utilities.css
CHANGED
|
@@ -53,6 +53,9 @@
|
|
|
53
53
|
@source inline(
|
|
54
54
|
"{,sm:,md:,lg:,xl:,2xl:}{col-span,row-span}-{1,2,3,4,5,6,7,8,9,10,11,12,full,auto}"
|
|
55
55
|
);
|
|
56
|
+
@source inline(
|
|
57
|
+
"{,sm:,md:,lg:,xl:,2xl:}{col-start,col-end,row-start,row-end}-{1,2,3,4,5,6,7,8,9,10,11,12,13,auto}"
|
|
58
|
+
);
|
|
56
59
|
@source inline("{,sm:,md:,lg:,xl:,2xl:}grid-flow-{row,col,dense,row-dense,col-dense}");
|
|
57
60
|
@source inline("{,sm:,md:,lg:,xl:,2xl:}{auto-cols,auto-rows}-{auto,min,max,fr}");
|
|
58
61
|
@source inline("{,sm:,md:,lg:,xl:,2xl:}order-{1,2,3,4,5,6,7,8,9,10,11,12,first,last,none}");
|
|
@@ -77,6 +80,12 @@
|
|
|
77
80
|
/* Aspect ratio — responsive */
|
|
78
81
|
@source inline("{,sm:,md:,lg:,xl:,2xl:}aspect-{auto,square,video}");
|
|
79
82
|
|
|
83
|
+
/* Object fit + position (avatars, thumbnails, logos) — responsive */
|
|
84
|
+
@source inline("{,sm:,md:,lg:,xl:,2xl:}object-{contain,cover,fill,none,scale-down}");
|
|
85
|
+
@source inline(
|
|
86
|
+
"{,sm:,md:,lg:,xl:,2xl:}object-{top,bottom,left,right,center,left-top,left-bottom,right-top,right-bottom}"
|
|
87
|
+
);
|
|
88
|
+
|
|
80
89
|
/* Translate (x/y only — full transforms intentionally skipped) — responsive */
|
|
81
90
|
@source inline(
|
|
82
91
|
"{,sm:,md:,lg:,xl:,2xl:}translate-{x,y}-{0,0.5,1,1.5,2,3,4,6,8,12,16,20,24,32,1/2,full}"
|
|
@@ -85,9 +94,18 @@
|
|
|
85
94
|
/* Typography (non-size) — no variants */
|
|
86
95
|
@source inline("font-{thin,extralight,light,normal,medium,semibold,bold,extrabold,black}");
|
|
87
96
|
@source inline("font-{sans,mono,serif}");
|
|
97
|
+
@source inline("{italic,not-italic}");
|
|
98
|
+
@source inline("{uppercase,lowercase,capitalize,normal-case}");
|
|
99
|
+
@source inline(
|
|
100
|
+
"{normal-nums,ordinal,slashed-zero,lining-nums,oldstyle-nums,proportional-nums,tabular-nums}"
|
|
101
|
+
);
|
|
88
102
|
@source inline("leading-{none,tight,snug,normal,relaxed,loose,3,4,5,6,7,8,9,10}");
|
|
89
103
|
@source inline("tracking-{tighter,tight,normal,wide,wider,widest}");
|
|
90
104
|
@source inline("text-{wrap,nowrap,balance,pretty}");
|
|
105
|
+
@source inline("whitespace-{normal,nowrap,pre,pre-line,pre-wrap,break-spaces}");
|
|
106
|
+
@source inline("break-{normal,words,all,keep}");
|
|
107
|
+
@source inline("align-{baseline,top,middle,bottom,text-top,text-bottom,sub,super}");
|
|
108
|
+
@source inline("list-{disc,decimal,none,inside,outside}");
|
|
91
109
|
@source inline("{underline,overline,line-through,no-underline,truncate}");
|
|
92
110
|
|
|
93
111
|
/* Borders + rounded — interactive */
|
|
@@ -101,6 +119,14 @@
|
|
|
101
119
|
"{,hover:,focus:,focus-visible:,active:}rounded{,-t,-r,-b,-l,-tl,-tr,-br,-bl}{,-none,-sm,-md,-lg,-xl,-2xl,-3xl,-full}"
|
|
102
120
|
);
|
|
103
121
|
|
|
122
|
+
/* Divide — borders between flex/grid children. Structural separators, so no
|
|
123
|
+
variants (a divider rarely changes on hover or at a breakpoint). Colors are
|
|
124
|
+
the two foundation borders only. */
|
|
125
|
+
@source inline("divide-{x,y}{,-0,-2,-4,-8}");
|
|
126
|
+
@source inline("divide-{x,y}-reverse");
|
|
127
|
+
@source inline("divide-{solid,dashed,dotted,double,none}");
|
|
128
|
+
@source inline("divide-{border,border-strong}");
|
|
129
|
+
|
|
104
130
|
/* Outline + ring — interactive */
|
|
105
131
|
@source inline("{,hover:,focus:,focus-visible:,active:}outline{,-0,-1,-2,-4,-8}");
|
|
106
132
|
@source inline(
|
|
@@ -133,5 +159,9 @@
|
|
|
133
159
|
"{,hover:,focus:,focus-visible:,active:}opacity-{0,5,10,15,20,25,30,40,50,60,70,75,80,90,95,100}"
|
|
134
160
|
);
|
|
135
161
|
|
|
162
|
+
/* Interaction primitives (select-all an ID cell, disable a layer) — no variants */
|
|
163
|
+
@source inline("pointer-events-{none,auto}");
|
|
164
|
+
@source inline("select-{none,text,all,auto}");
|
|
165
|
+
|
|
136
166
|
/* Z-index — no variants */
|
|
137
167
|
@source inline("z-{0,10,20,30,40,50,auto}");
|