@nazuraki/styles 0.2.2 → 0.3.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/all.css +10 -0
- package/luminous-precision/base.css +58 -0
- package/luminous-precision/components/alert.css +26 -0
- package/luminous-precision/components/badge.css +19 -0
- package/luminous-precision/components/button.css +88 -0
- package/luminous-precision/components/card.css +12 -0
- package/luminous-precision/components/dialog.css +31 -0
- package/luminous-precision/components/form.css +126 -0
- package/luminous-precision/components/link.css +46 -0
- package/luminous-precision/components/progress.css +41 -0
- package/luminous-precision/components/table.css +28 -0
- package/luminous-precision/components/tabs.css +33 -0
- package/luminous-precision/design.md +89 -0
- package/luminous-precision/index.css +13 -0
- package/luminous-precision/tokens.css +72 -0
- package/manifest.json +23 -0
- package/neon-butterfly/base.css +23 -10
- package/neon-butterfly/components/alert.css +10 -10
- package/neon-butterfly/components/badge.css +6 -6
- package/neon-butterfly/components/button.css +11 -11
- package/neon-butterfly/components/card.css +3 -3
- package/neon-butterfly/components/dialog.css +4 -4
- package/neon-butterfly/components/form.css +26 -26
- package/neon-butterfly/components/link.css +8 -8
- package/neon-butterfly/components/progress.css +7 -7
- package/neon-butterfly/components/table.css +5 -5
- package/neon-butterfly/components/tabs.css +6 -6
- package/neon-butterfly/design.md +12 -0
- package/neon-butterfly/tokens.css +29 -2
- package/package.json +15 -3
- package/summer-cloud/base.css +23 -13
- package/summer-cloud/components/alert.css +10 -10
- package/summer-cloud/components/badge.css +10 -10
- package/summer-cloud/components/button.css +22 -22
- package/summer-cloud/components/card.css +7 -7
- package/summer-cloud/components/dialog.css +4 -4
- package/summer-cloud/components/form.css +31 -31
- package/summer-cloud/components/link.css +16 -16
- package/summer-cloud/components/progress.css +8 -8
- package/summer-cloud/components/table.css +7 -7
- package/summer-cloud/components/tabs.css +7 -7
- package/summer-cloud/design.md +13 -0
- package/summer-cloud/tokens.css +27 -8
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/* summer-cloud — nav link: pill that fills with sky tint, arrow slides out */
|
|
2
|
-
.nb-link {
|
|
2
|
+
:where([data-nb-style="summer-cloud"], [data-nb-style="summer-cloud"] *).nb-link {
|
|
3
3
|
display: inline-flex;
|
|
4
4
|
align-items: center;
|
|
5
5
|
gap: var(--nb-space-2);
|
|
@@ -15,46 +15,46 @@
|
|
|
15
15
|
background var(--nb-transition),
|
|
16
16
|
color var(--nb-transition);
|
|
17
17
|
}
|
|
18
|
-
.nb-link::after {
|
|
18
|
+
:where([data-nb-style="summer-cloud"], [data-nb-style="summer-cloud"] *).nb-link::after {
|
|
19
19
|
content: "→";
|
|
20
20
|
color: var(--nb-accent);
|
|
21
21
|
transition: transform var(--nb-transition);
|
|
22
22
|
}
|
|
23
|
-
.nb-link:hover,
|
|
24
|
-
.nb-link:focus-visible {
|
|
23
|
+
:where([data-nb-style="summer-cloud"], [data-nb-style="summer-cloud"] *).nb-link:hover,
|
|
24
|
+
:where([data-nb-style="summer-cloud"], [data-nb-style="summer-cloud"] *).nb-link:focus-visible {
|
|
25
25
|
background: var(--nb-sky-tint);
|
|
26
26
|
color: var(--nb-primary);
|
|
27
27
|
outline: none;
|
|
28
28
|
}
|
|
29
|
-
.nb-link:hover::after,
|
|
30
|
-
.nb-link:focus-visible::after {
|
|
29
|
+
:where([data-nb-style="summer-cloud"], [data-nb-style="summer-cloud"] *).nb-link:hover::after,
|
|
30
|
+
:where([data-nb-style="summer-cloud"], [data-nb-style="summer-cloud"] *).nb-link:focus-visible::after {
|
|
31
31
|
transform: translateX(4px);
|
|
32
32
|
}
|
|
33
|
-
.nb-link:active {
|
|
33
|
+
:where([data-nb-style="summer-cloud"], [data-nb-style="summer-cloud"] *).nb-link:active {
|
|
34
34
|
transform: scale(0.95);
|
|
35
35
|
}
|
|
36
36
|
|
|
37
37
|
/* Current page: violet with the underline rule from the top nav. */
|
|
38
|
-
.nb-link--active,
|
|
39
|
-
.nb-link[aria-current="page"] {
|
|
38
|
+
:where([data-nb-style="summer-cloud"], [data-nb-style="summer-cloud"] *).nb-link--active,
|
|
39
|
+
:where([data-nb-style="summer-cloud"], [data-nb-style="summer-cloud"] *).nb-link[aria-current="page"] {
|
|
40
40
|
background: none;
|
|
41
41
|
border-radius: 0;
|
|
42
42
|
border-bottom: 2px solid var(--nb-primary);
|
|
43
43
|
color: var(--nb-primary);
|
|
44
44
|
}
|
|
45
|
-
.nb-link--active::after,
|
|
46
|
-
.nb-link[aria-current="page"]::after {
|
|
45
|
+
:where([data-nb-style="summer-cloud"], [data-nb-style="summer-cloud"] *).nb-link--active::after,
|
|
46
|
+
:where([data-nb-style="summer-cloud"], [data-nb-style="summer-cloud"] *).nb-link[aria-current="page"]::after {
|
|
47
47
|
content: none;
|
|
48
48
|
}
|
|
49
49
|
|
|
50
50
|
@media (prefers-reduced-motion: reduce) {
|
|
51
|
-
.nb-link,
|
|
52
|
-
.nb-link::after {
|
|
51
|
+
:where([data-nb-style="summer-cloud"], [data-nb-style="summer-cloud"] *).nb-link,
|
|
52
|
+
:where([data-nb-style="summer-cloud"], [data-nb-style="summer-cloud"] *).nb-link::after {
|
|
53
53
|
transition: none;
|
|
54
54
|
}
|
|
55
|
-
.nb-link:hover::after,
|
|
56
|
-
.nb-link:focus-visible::after,
|
|
57
|
-
.nb-link:active {
|
|
55
|
+
:where([data-nb-style="summer-cloud"], [data-nb-style="summer-cloud"] *).nb-link:hover::after,
|
|
56
|
+
:where([data-nb-style="summer-cloud"], [data-nb-style="summer-cloud"] *).nb-link:focus-visible::after,
|
|
57
|
+
:where([data-nb-style="summer-cloud"], [data-nb-style="summer-cloud"] *).nb-link:active {
|
|
58
58
|
transform: none;
|
|
59
59
|
}
|
|
60
60
|
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/* summer-cloud — progress bar & spinner: glowing violet indicators */
|
|
2
|
-
.nb-progress {
|
|
2
|
+
:where([data-nb-style="summer-cloud"], [data-nb-style="summer-cloud"] *).nb-progress {
|
|
3
3
|
display: block;
|
|
4
4
|
width: 100%;
|
|
5
5
|
height: 0.5rem;
|
|
@@ -7,37 +7,37 @@
|
|
|
7
7
|
border-radius: var(--nb-radius-pill);
|
|
8
8
|
overflow: hidden;
|
|
9
9
|
}
|
|
10
|
-
.nb-progress__bar {
|
|
10
|
+
:where([data-nb-style="summer-cloud"], [data-nb-style="summer-cloud"] *).nb-progress__bar {
|
|
11
11
|
height: 100%;
|
|
12
12
|
background: var(--nb-primary);
|
|
13
13
|
border-radius: var(--nb-radius-pill);
|
|
14
14
|
box-shadow: 0 0 10px rgba(69, 0, 217, 0.5);
|
|
15
15
|
transition: width var(--nb-transition);
|
|
16
16
|
}
|
|
17
|
-
.nb-progress__bar--accent {
|
|
17
|
+
:where([data-nb-style="summer-cloud"], [data-nb-style="summer-cloud"] *).nb-progress__bar--accent {
|
|
18
18
|
background: var(--nb-accent);
|
|
19
19
|
box-shadow: 0 0 10px rgba(12, 179, 255, 0.5);
|
|
20
20
|
}
|
|
21
21
|
|
|
22
|
-
.nb-spinner {
|
|
22
|
+
:where([data-nb-style="summer-cloud"], [data-nb-style="summer-cloud"] *).nb-spinner {
|
|
23
23
|
display: inline-block;
|
|
24
24
|
width: 1.5rem;
|
|
25
25
|
height: 1.5rem;
|
|
26
26
|
border: 2px solid var(--nb-outline);
|
|
27
27
|
border-top-color: var(--nb-primary);
|
|
28
28
|
border-radius: 50%;
|
|
29
|
-
animation: nb-spin 0.8s linear infinite;
|
|
29
|
+
animation: nb-sc-spin 0.8s linear infinite;
|
|
30
30
|
}
|
|
31
|
-
@keyframes nb-spin {
|
|
31
|
+
@keyframes nb-sc-spin {
|
|
32
32
|
to {
|
|
33
33
|
transform: rotate(360deg);
|
|
34
34
|
}
|
|
35
35
|
}
|
|
36
36
|
@media (prefers-reduced-motion: reduce) {
|
|
37
|
-
.nb-spinner {
|
|
37
|
+
:where([data-nb-style="summer-cloud"], [data-nb-style="summer-cloud"] *).nb-spinner {
|
|
38
38
|
animation-duration: 2s;
|
|
39
39
|
}
|
|
40
|
-
.nb-progress__bar {
|
|
40
|
+
:where([data-nb-style="summer-cloud"], [data-nb-style="summer-cloud"] *).nb-progress__bar {
|
|
41
41
|
transition: none;
|
|
42
42
|
}
|
|
43
43
|
}
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
/* summer-cloud — table: mono header labels, sky-tint row hover */
|
|
2
|
-
.nb-table {
|
|
2
|
+
:where([data-nb-style="summer-cloud"], [data-nb-style="summer-cloud"] *).nb-table {
|
|
3
3
|
width: 100%;
|
|
4
4
|
border-collapse: collapse;
|
|
5
5
|
font-size: var(--nb-text-sm);
|
|
6
6
|
color: var(--nb-on-surface);
|
|
7
7
|
}
|
|
8
|
-
.nb-table th {
|
|
8
|
+
:where([data-nb-style="summer-cloud"], [data-nb-style="summer-cloud"] *).nb-table th {
|
|
9
9
|
padding: var(--nb-space-3);
|
|
10
10
|
border-bottom: 1px solid var(--nb-outline);
|
|
11
11
|
color: var(--nb-faint);
|
|
@@ -16,19 +16,19 @@
|
|
|
16
16
|
font-weight: 500;
|
|
17
17
|
letter-spacing: var(--nb-tracking-wide);
|
|
18
18
|
}
|
|
19
|
-
.nb-table td {
|
|
19
|
+
:where([data-nb-style="summer-cloud"], [data-nb-style="summer-cloud"] *).nb-table td {
|
|
20
20
|
padding: var(--nb-space-3);
|
|
21
21
|
border-bottom: 1px solid rgba(201, 195, 218, 0.4);
|
|
22
22
|
}
|
|
23
|
-
.nb-table tbody tr {
|
|
23
|
+
:where([data-nb-style="summer-cloud"], [data-nb-style="summer-cloud"] *).nb-table tbody tr {
|
|
24
24
|
transition: background var(--nb-transition);
|
|
25
25
|
}
|
|
26
|
-
.nb-table tbody tr:hover {
|
|
26
|
+
:where([data-nb-style="summer-cloud"], [data-nb-style="summer-cloud"] *).nb-table tbody tr:hover {
|
|
27
27
|
background: var(--nb-sky-tint);
|
|
28
28
|
}
|
|
29
29
|
/* Numeric cells take the mono voice — prices and data read as utility-grade. */
|
|
30
|
-
.nb-table td.nb-num,
|
|
31
|
-
.nb-table th.nb-num {
|
|
30
|
+
:where([data-nb-style="summer-cloud"], [data-nb-style="summer-cloud"] *).nb-table td.nb-num,
|
|
31
|
+
:where([data-nb-style="summer-cloud"], [data-nb-style="summer-cloud"] *).nb-table th.nb-num {
|
|
32
32
|
font-family: var(--nb-font-mono);
|
|
33
33
|
text-align: right;
|
|
34
34
|
}
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
/* summer-cloud — tabs: violet underline on the active tab, sky tint on hover */
|
|
2
|
-
.nb-tabs {
|
|
2
|
+
:where([data-nb-style="summer-cloud"], [data-nb-style="summer-cloud"] *).nb-tabs {
|
|
3
3
|
display: flex;
|
|
4
4
|
gap: var(--nb-space-2);
|
|
5
5
|
border-bottom: 1px solid var(--nb-outline);
|
|
6
6
|
}
|
|
7
|
-
.nb-tab {
|
|
7
|
+
:where([data-nb-style="summer-cloud"], [data-nb-style="summer-cloud"] *).nb-tab {
|
|
8
8
|
padding: var(--nb-space-2) var(--nb-space-3);
|
|
9
9
|
margin-bottom: -1px;
|
|
10
10
|
background: none;
|
|
@@ -19,20 +19,20 @@
|
|
|
19
19
|
transition: color var(--nb-transition), background var(--nb-transition),
|
|
20
20
|
border-color var(--nb-transition);
|
|
21
21
|
}
|
|
22
|
-
.nb-tab:hover {
|
|
22
|
+
:where([data-nb-style="summer-cloud"], [data-nb-style="summer-cloud"] *).nb-tab:hover {
|
|
23
23
|
background: var(--nb-sky-tint);
|
|
24
24
|
color: var(--nb-primary);
|
|
25
25
|
}
|
|
26
|
-
.nb-tab:focus-visible {
|
|
26
|
+
:where([data-nb-style="summer-cloud"], [data-nb-style="summer-cloud"] *).nb-tab:focus-visible {
|
|
27
27
|
outline: none;
|
|
28
28
|
box-shadow: 0 0 0 4px var(--nb-accent-glow);
|
|
29
29
|
}
|
|
30
|
-
.nb-tab--active,
|
|
31
|
-
.nb-tab[aria-selected="true"] {
|
|
30
|
+
:where([data-nb-style="summer-cloud"], [data-nb-style="summer-cloud"] *).nb-tab--active,
|
|
31
|
+
:where([data-nb-style="summer-cloud"], [data-nb-style="summer-cloud"] *).nb-tab[aria-selected="true"] {
|
|
32
32
|
color: var(--nb-primary);
|
|
33
33
|
border-bottom-color: var(--nb-primary);
|
|
34
34
|
font-weight: var(--nb-font-weight-bold);
|
|
35
35
|
}
|
|
36
|
-
.nb-tabpanel {
|
|
36
|
+
:where([data-nb-style="summer-cloud"], [data-nb-style="summer-cloud"] *).nb-tabpanel {
|
|
37
37
|
padding: var(--nb-space-3) 0;
|
|
38
38
|
}
|
package/summer-cloud/design.md
CHANGED
|
@@ -113,3 +113,16 @@ theme-agnostic). Variants use BEM-ish modifiers (`nb-btn--primary`).
|
|
|
113
113
|
dark text on it (4.97:1), and uses `--nb-danger-deep` for the solid
|
|
114
114
|
destructive button (5.55:1 on white). Every other foreground/background pair
|
|
115
115
|
in the palette clears AA.
|
|
116
|
+
|
|
117
|
+
## Code syntax
|
|
118
|
+
|
|
119
|
+
Tokens `--nb-code-*`, part of the baseline contract. Palette hues deepened for
|
|
120
|
+
contrast on white: violet keywords, deep-green strings, deep-amber numbers,
|
|
121
|
+
accent-deep functions, deep-teal types, danger-deep variables, muted-faint
|
|
122
|
+
comments, faint meta.
|
|
123
|
+
|
|
124
|
+
## Scoping
|
|
125
|
+
|
|
126
|
+
Every rule is guarded by `data-nb-style="summer-cloud"` (self or ancestor),
|
|
127
|
+
wrapped in zero-specificity `:where()`. Set the attribute on `<html>` for a
|
|
128
|
+
page or on a container for an embedded island.
|
package/summer-cloud/tokens.css
CHANGED
|
@@ -3,16 +3,22 @@
|
|
|
3
3
|
* @import "@nazuraki/styles/summer-cloud/tokens";
|
|
4
4
|
* or pull the whole theme with ./index.css.
|
|
5
5
|
*
|
|
6
|
-
*
|
|
7
|
-
*
|
|
8
|
-
*
|
|
6
|
+
* Nothing applies until an element carries data-nb-style="summer-cloud"
|
|
7
|
+
* — set it on <html> for a page, or on any container for an embedded island.
|
|
8
|
+
* The :where() keeps specificity at zero, so any consumer rule overrides.
|
|
9
|
+
*
|
|
10
|
+
* Every theme declares the same baseline token set (styles/test enforces
|
|
11
|
+
* parity); names marked (extra) are additions beyond it that only this
|
|
12
|
+
* theme's own component CSS may rely on.
|
|
9
13
|
*/
|
|
10
|
-
:
|
|
14
|
+
:where([data-nb-style="summer-cloud"]) {
|
|
15
|
+
color-scheme: light;
|
|
16
|
+
|
|
11
17
|
/* color */
|
|
12
18
|
--nb-bg: #f6fafe;
|
|
13
19
|
--nb-bg-blend: #eaeef2;
|
|
14
20
|
--nb-surface: #ffffff;
|
|
15
|
-
--nb-surface-sunken: #f0f4f8; /*
|
|
21
|
+
--nb-surface-sunken: #f0f4f8; /* inset fields */
|
|
16
22
|
--nb-surface-glass: rgba(255, 255, 255, 0.6);
|
|
17
23
|
--nb-surface-glass-high: rgba(255, 255, 255, 0.8); /* (extra) floating tier */
|
|
18
24
|
--nb-on-surface: #171c1f;
|
|
@@ -21,10 +27,12 @@
|
|
|
21
27
|
--nb-primary-bright: #5d2bff; /* (extra) shadow/glow tint */
|
|
22
28
|
--nb-primary-glow: rgba(93, 43, 255, 0.4);
|
|
23
29
|
--nb-primary-border: rgba(69, 0, 217, 0.2);
|
|
30
|
+
--nb-on-primary: #ffffff; /* text on solid violet fills */
|
|
24
31
|
--nb-accent: #0cb3ff;
|
|
25
32
|
--nb-accent-glow: rgba(12, 179, 255, 0.2);
|
|
26
33
|
--nb-accent-deep: #006492; /* (extra) readable accent text */
|
|
27
34
|
--nb-border: rgba(255, 255, 255, 0.4);
|
|
35
|
+
--nb-border-lit: rgba(255, 255, 255, 0.7); /* lit top edge of glass panes */
|
|
28
36
|
--nb-outline: #c9c3da; /* (extra) hairline on opaque surfaces */
|
|
29
37
|
|
|
30
38
|
/* semantic color */
|
|
@@ -39,12 +47,22 @@
|
|
|
39
47
|
--nb-sky-end: #c9e6ff;
|
|
40
48
|
--nb-sky-tint: rgba(255, 255, 255, 0.7);
|
|
41
49
|
|
|
50
|
+
/* code syntax — deepened palette hues for contrast on white */
|
|
51
|
+
--nb-code-keyword: #4500d9;
|
|
52
|
+
--nb-code-string: #157a2a;
|
|
53
|
+
--nb-code-number: #9a6b00;
|
|
54
|
+
--nb-code-comment: #6e6880;
|
|
55
|
+
--nb-code-function: #006492;
|
|
56
|
+
--nb-code-variable: #cc1f1f;
|
|
57
|
+
--nb-code-type: #00877a;
|
|
58
|
+
--nb-code-meta: #484457;
|
|
59
|
+
|
|
42
60
|
/* typography */
|
|
43
|
-
--nb-font-display: "Plus Jakarta Sans", ui-sans-serif, system-ui, sans-serif;
|
|
44
|
-
--nb-font-body: "Inter", ui-sans-serif, system-ui, sans-serif;
|
|
61
|
+
--nb-font-display: "Plus Jakarta Sans", ui-sans-serif, system-ui, sans-serif;
|
|
62
|
+
--nb-font-body: "Inter", ui-sans-serif, system-ui, sans-serif;
|
|
45
63
|
--nb-font-mono: "JetBrains Mono", ui-monospace, SFMono-Regular, Menlo, monospace;
|
|
46
64
|
--nb-font-weight: 400;
|
|
47
|
-
--nb-font-weight-medium: 600;
|
|
65
|
+
--nb-font-weight-medium: 600;
|
|
48
66
|
--nb-font-weight-bold: 700;
|
|
49
67
|
--nb-text-sm: 14px;
|
|
50
68
|
--nb-tracking-wide: 0.05em;
|
|
@@ -53,6 +71,7 @@
|
|
|
53
71
|
/* shape & effects */
|
|
54
72
|
--nb-radius: 1rem;
|
|
55
73
|
--nb-radius-sm: 0.25rem; /* (extra) */
|
|
74
|
+
--nb-radius-lg: 1.5rem; /* cards and large containers */
|
|
56
75
|
--nb-radius-pill: 9999px; /* (extra) */
|
|
57
76
|
--nb-blur: 12px;
|
|
58
77
|
--nb-blur-high: 20px; /* (extra) */
|