@rackbops/styles 0.1.0 → 0.1.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/all.css +5 -0
- package/amber-ember/base.css +61 -0
- package/amber-ember/components/alert.css +30 -0
- package/amber-ember/components/badge.css +32 -0
- package/amber-ember/components/button.css +90 -0
- package/amber-ember/components/card.css +24 -0
- package/amber-ember/components/dialog.css +33 -0
- package/amber-ember/components/form.css +72 -0
- package/amber-ember/components/link.css +47 -0
- package/amber-ember/components/log.css +19 -0
- package/amber-ember/components/muted.css +7 -0
- package/amber-ember/components/nav-rail.css +14 -0
- package/amber-ember/components/pre.css +13 -0
- package/amber-ember/components/progress.css +42 -0
- package/amber-ember/components/stepper.css +87 -0
- package/amber-ember/components/table.css +50 -0
- package/amber-ember/components/tabs.css +46 -0
- package/amber-ember/design.md +78 -0
- package/amber-ember/index.css +18 -0
- package/amber-ember/tokens.css +72 -0
- package/amber-hearth/base.css +61 -0
- package/amber-hearth/components/alert.css +30 -0
- package/amber-hearth/components/badge.css +32 -0
- package/amber-hearth/components/button.css +90 -0
- package/amber-hearth/components/card.css +24 -0
- package/amber-hearth/components/dialog.css +33 -0
- package/amber-hearth/components/form.css +72 -0
- package/amber-hearth/components/link.css +47 -0
- package/amber-hearth/components/log.css +19 -0
- package/amber-hearth/components/muted.css +7 -0
- package/amber-hearth/components/nav-rail.css +14 -0
- package/amber-hearth/components/pre.css +13 -0
- package/amber-hearth/components/progress.css +42 -0
- package/amber-hearth/components/stepper.css +87 -0
- package/amber-hearth/components/table.css +50 -0
- package/amber-hearth/components/tabs.css +46 -0
- package/amber-hearth/design.md +146 -0
- package/amber-hearth/index.css +18 -0
- package/amber-hearth/tokens.css +77 -0
- package/arcane-obsidian/base.css +20 -0
- package/arcane-obsidian/components/button.css +15 -0
- package/arcane-obsidian/components/log.css +19 -0
- package/arcane-obsidian/components/muted.css +7 -0
- package/arcane-obsidian/components/nav-rail.css +14 -0
- package/arcane-obsidian/components/pre.css +13 -0
- package/arcane-obsidian/components/stepper.css +87 -0
- package/arcane-obsidian/components/table.css +14 -0
- package/arcane-obsidian/design.md +30 -2
- package/arcane-obsidian/index.css +5 -0
- package/arcane-parchment/base.css +20 -0
- package/arcane-parchment/components/button.css +15 -0
- package/arcane-parchment/components/log.css +19 -0
- package/arcane-parchment/components/muted.css +7 -0
- package/arcane-parchment/components/nav-rail.css +14 -0
- package/arcane-parchment/components/pre.css +13 -0
- package/arcane-parchment/components/stepper.css +87 -0
- package/arcane-parchment/components/table.css +14 -0
- package/arcane-parchment/design.md +10 -6
- package/arcane-parchment/index.css +5 -0
- package/concrete-signal/base.css +57 -0
- package/concrete-signal/components/alert.css +44 -0
- package/concrete-signal/components/badge.css +38 -0
- package/concrete-signal/components/button.css +98 -0
- package/concrete-signal/components/card.css +21 -0
- package/concrete-signal/components/dialog.css +33 -0
- package/concrete-signal/components/form.css +138 -0
- package/concrete-signal/components/link.css +44 -0
- package/concrete-signal/components/log.css +19 -0
- package/concrete-signal/components/muted.css +7 -0
- package/concrete-signal/components/nav-rail.css +15 -0
- package/concrete-signal/components/pre.css +14 -0
- package/concrete-signal/components/progress.css +44 -0
- package/concrete-signal/components/stepper.css +83 -0
- package/concrete-signal/components/table.css +48 -0
- package/concrete-signal/components/tabs.css +49 -0
- package/concrete-signal/design.md +171 -0
- package/concrete-signal/index.css +18 -0
- package/concrete-signal/tokens.css +75 -0
- package/concrete-signal-light/base.css +57 -0
- package/concrete-signal-light/components/alert.css +44 -0
- package/concrete-signal-light/components/badge.css +38 -0
- package/concrete-signal-light/components/button.css +98 -0
- package/concrete-signal-light/components/card.css +21 -0
- package/concrete-signal-light/components/dialog.css +33 -0
- package/concrete-signal-light/components/form.css +138 -0
- package/concrete-signal-light/components/link.css +44 -0
- package/concrete-signal-light/components/log.css +19 -0
- package/concrete-signal-light/components/muted.css +7 -0
- package/concrete-signal-light/components/nav-rail.css +15 -0
- package/concrete-signal-light/components/pre.css +14 -0
- package/concrete-signal-light/components/progress.css +44 -0
- package/concrete-signal-light/components/stepper.css +84 -0
- package/concrete-signal-light/components/table.css +48 -0
- package/concrete-signal-light/components/tabs.css +49 -0
- package/concrete-signal-light/design.md +82 -0
- package/concrete-signal-light/index.css +18 -0
- package/concrete-signal-light/tokens.css +75 -0
- package/css-side-effect.d.ts +5 -0
- package/luminous-precision/base.css +12 -0
- package/luminous-precision/components/button.css +25 -0
- package/luminous-precision/components/link.css +8 -0
- package/luminous-precision/components/log.css +19 -0
- package/luminous-precision/components/muted.css +7 -0
- package/luminous-precision/components/nav-rail.css +17 -0
- package/luminous-precision/components/pre.css +14 -0
- package/luminous-precision/components/progress.css +14 -5
- package/luminous-precision/components/stepper.css +89 -0
- package/luminous-precision/components/table.css +17 -0
- package/luminous-precision/design.md +44 -9
- package/luminous-precision/index.css +5 -0
- package/manifest.json +20 -0
- package/mono-field/base.css +59 -0
- package/mono-field/components/alert.css +35 -0
- package/mono-field/components/badge.css +34 -0
- package/mono-field/components/button.css +101 -0
- package/mono-field/components/card.css +20 -0
- package/mono-field/components/dialog.css +34 -0
- package/mono-field/components/form.css +91 -0
- package/mono-field/components/link.css +47 -0
- package/mono-field/components/log.css +19 -0
- package/mono-field/components/muted.css +7 -0
- package/mono-field/components/nav-rail.css +14 -0
- package/mono-field/components/pre.css +13 -0
- package/mono-field/components/progress.css +42 -0
- package/mono-field/components/stepper.css +86 -0
- package/mono-field/components/table.css +47 -0
- package/mono-field/components/tabs.css +48 -0
- package/mono-field/design.md +151 -0
- package/mono-field/index.css +18 -0
- package/mono-field/tokens.css +76 -0
- package/neon-butterfly/base.css +18 -0
- package/neon-butterfly/components/button.css +26 -0
- package/neon-butterfly/components/link.css +10 -0
- package/neon-butterfly/components/log.css +19 -0
- package/neon-butterfly/components/muted.css +7 -0
- package/neon-butterfly/components/nav-rail.css +17 -0
- package/neon-butterfly/components/pre.css +13 -0
- package/neon-butterfly/components/progress.css +14 -5
- package/neon-butterfly/components/stepper.css +89 -0
- package/neon-butterfly/components/table.css +15 -0
- package/neon-butterfly/design.md +40 -4
- package/neon-butterfly/index.css +5 -0
- package/package.json +61 -32
- package/rackbops-noir/base.css +11 -2
- package/rackbops-noir/components/button.css +16 -0
- package/rackbops-noir/components/card.css +9 -0
- package/rackbops-noir/components/log.css +19 -0
- package/rackbops-noir/components/muted.css +7 -0
- package/rackbops-noir/components/nav-rail.css +14 -0
- package/rackbops-noir/components/pre.css +13 -0
- package/rackbops-noir/components/principle.css +1 -0
- package/rackbops-noir/components/stepper.css +87 -0
- package/rackbops-noir/components/table.css +18 -0
- package/rackbops-noir/design.md +6 -3
- package/rackbops-noir/index.css +5 -0
- package/rackbops-studio/base.css +11 -2
- package/rackbops-studio/components/button.css +16 -0
- package/rackbops-studio/components/card.css +9 -0
- package/rackbops-studio/components/log.css +19 -0
- package/rackbops-studio/components/muted.css +7 -0
- package/rackbops-studio/components/nav-rail.css +14 -0
- package/rackbops-studio/components/pre.css +13 -0
- package/rackbops-studio/components/principle.css +1 -0
- package/rackbops-studio/components/stepper.css +87 -0
- package/rackbops-studio/components/table.css +18 -0
- package/rackbops-studio/design.md +29 -2
- package/rackbops-studio/index.css +5 -0
- package/summer-cloud/base.css +13 -1
- package/summer-cloud/components/button.css +17 -0
- package/summer-cloud/components/log.css +19 -0
- package/summer-cloud/components/muted.css +8 -0
- package/summer-cloud/components/nav-rail.css +17 -0
- package/summer-cloud/components/pre.css +16 -0
- package/summer-cloud/components/progress.css +14 -8
- package/summer-cloud/components/stepper.css +90 -0
- package/summer-cloud/components/table.css +11 -0
- package/summer-cloud/design.md +41 -3
- package/summer-cloud/index.css +5 -0
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
/* mono-field — design tokens
|
|
2
|
+
* An original standalone theme for @rackbops/styles: the library's
|
|
3
|
+
* deliberately restrained, "anti-flashy" light theme — a quiet foil to the
|
|
4
|
+
* glow/gradient/neon themes elsewhere in the roster. Consume via:
|
|
5
|
+
* @import "@rackbops/styles/mono-field/tokens";
|
|
6
|
+
* or pull the whole theme with ./index.css.
|
|
7
|
+
*
|
|
8
|
+
* Nothing applies until an element carries data-rb-style="mono-field" — set it
|
|
9
|
+
* on <html> for a page, or on any container for an embedded island. The
|
|
10
|
+
* :where() keeps specificity at zero, so any consumer rule overrides.
|
|
11
|
+
*
|
|
12
|
+
* There is no ported or reverse-documented source: this is a purpose-designed
|
|
13
|
+
* theme built directly to the library's shared baseline --rb-* contract, with
|
|
14
|
+
* no theme extras. Visual hierarchy comes from thin 1px hairline borders and
|
|
15
|
+
* generous spacing rather than color contrast between surface layers or
|
|
16
|
+
* shadow depth; the one gradient (--rb-accent-grad) is rationed to the
|
|
17
|
+
* active-tab underline and appears nowhere else.
|
|
18
|
+
*/
|
|
19
|
+
:where([data-rb-style="mono-field"]) {
|
|
20
|
+
color-scheme: light;
|
|
21
|
+
|
|
22
|
+
/* color — near-flat grayscale surfaces; hierarchy comes from borders, not fills */
|
|
23
|
+
--rb-bg: #ffffff;
|
|
24
|
+
--rb-surface: #ffffff;
|
|
25
|
+
--rb-surface-2: #f7f7f7;
|
|
26
|
+
--rb-surface-sunken: #f0f0f0;
|
|
27
|
+
--rb-text: #111111;
|
|
28
|
+
--rb-text-soft: #5a5a5a;
|
|
29
|
+
--rb-text-faint: #6b6b6b;
|
|
30
|
+
--rb-border: #e0e0e0;
|
|
31
|
+
--rb-border-strong: #c4c4c4;
|
|
32
|
+
|
|
33
|
+
/* accent — a near-black ink-blue, just enough to read as "the interactive
|
|
34
|
+
color" without ever reading as decoration */
|
|
35
|
+
--rb-accent: #1d2733;
|
|
36
|
+
--rb-accent-fg: #ffffff;
|
|
37
|
+
--rb-accent-wash: rgba(29, 39, 51, 0.06);
|
|
38
|
+
|
|
39
|
+
/* the ONE gradient — rationed to the active-tab underline, nowhere else */
|
|
40
|
+
--rb-accent-grad: linear-gradient(120deg, #1d2733, #4a5568);
|
|
41
|
+
|
|
42
|
+
/* semantic — desaturated compared to the rest of the roster, to keep this
|
|
43
|
+
theme's voice consistently quiet. Warning darkened from #a9791f (3.60:1
|
|
44
|
+
on --rb-surface-2, failed AA) to #91681b (4.67:1) — the sole failing hue. */
|
|
45
|
+
--rb-info: #4a6fa5;
|
|
46
|
+
--rb-success: #3f7d4f;
|
|
47
|
+
--rb-warning: #91681b;
|
|
48
|
+
--rb-danger: #a13a3a;
|
|
49
|
+
|
|
50
|
+
/* typography — small/tight system-ui type; no uppercase tricks anywhere */
|
|
51
|
+
--rb-font-display: system-ui, -apple-system, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;
|
|
52
|
+
--rb-font-body: system-ui, -apple-system, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;
|
|
53
|
+
--rb-font-mono: ui-monospace, "Cascadia Code", "Cascadia Mono", "Segoe UI Mono", Consolas, Menlo, monospace;
|
|
54
|
+
--rb-font-weight: 400;
|
|
55
|
+
--rb-font-weight-medium: 500;
|
|
56
|
+
--rb-font-weight-bold: 600; /* this theme never goes past 600 — part of the quiet voice */
|
|
57
|
+
--rb-heading-tracking: -0.005em;
|
|
58
|
+
--rb-label-tracking: 0.02em;
|
|
59
|
+
--rb-text-sm: 13px;
|
|
60
|
+
|
|
61
|
+
/* shape & effects — small tight radii, barely-there shadows, no glass, no glow */
|
|
62
|
+
--rb-radius: 0.25rem;
|
|
63
|
+
--rb-radius-lg: 0.375rem;
|
|
64
|
+
--rb-radius-pill: 999px;
|
|
65
|
+
--rb-shadow-sm: 0 1px 2px rgba(0, 0, 0, 0.06);
|
|
66
|
+
--rb-shadow-lg: 0 4px 12px rgba(0, 0, 0, 0.08);
|
|
67
|
+
--rb-blur: 8px;
|
|
68
|
+
--rb-transition: 0.12s;
|
|
69
|
+
|
|
70
|
+
/* spacing */
|
|
71
|
+
--rb-space-1: 0.25rem;
|
|
72
|
+
--rb-space-2: 0.5rem;
|
|
73
|
+
--rb-space-3: 0.75rem;
|
|
74
|
+
--rb-space-4: 1rem;
|
|
75
|
+
--rb-space-5: 1.5rem;
|
|
76
|
+
}
|
package/neon-butterfly/base.css
CHANGED
|
@@ -39,6 +39,24 @@
|
|
|
39
39
|
background-color: var(--rb-bg-blend);
|
|
40
40
|
}
|
|
41
41
|
|
|
42
|
+
:where([data-rb-style="neon-butterfly"], [data-rb-style="neon-butterfly"] *):where(h1, h2, h3, h4, h5, h6) {
|
|
43
|
+
margin: 0 0 var(--rb-space-3);
|
|
44
|
+
font-family: var(--rb-font-display);
|
|
45
|
+
font-weight: var(--rb-font-weight-bold);
|
|
46
|
+
letter-spacing: var(--rb-heading-tracking);
|
|
47
|
+
line-height: 1.2;
|
|
48
|
+
text-wrap: balance;
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
:where([data-rb-style="neon-butterfly"], [data-rb-style="neon-butterfly"] *):where(p) {
|
|
52
|
+
margin: 0 0 var(--rb-space-3);
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
:where([data-rb-style="neon-butterfly"], [data-rb-style="neon-butterfly"] *):where(ul, ol) {
|
|
56
|
+
margin: 0 0 var(--rb-space-3);
|
|
57
|
+
padding-inline-start: var(--rb-space-4);
|
|
58
|
+
}
|
|
59
|
+
|
|
42
60
|
:where([data-rb-style="neon-butterfly"], [data-rb-style="neon-butterfly"] *):where(a) {
|
|
43
61
|
color: var(--rb-accent);
|
|
44
62
|
}
|
|
@@ -18,6 +18,21 @@
|
|
|
18
18
|
border-color var(--rb-transition),
|
|
19
19
|
color var(--rb-transition);
|
|
20
20
|
}
|
|
21
|
+
/* --sm: compact size for inline/table-row actions (composes with any variant) */
|
|
22
|
+
:where([data-rb-style="neon-butterfly"], [data-rb-style="neon-butterfly"] *).rb-btn--sm {
|
|
23
|
+
padding: var(--rb-space-1) var(--rb-space-2);
|
|
24
|
+
font-size: calc(var(--rb-text-sm) - 1px);
|
|
25
|
+
}
|
|
26
|
+
/* --icon: square icon-only hit target (>=2rem); pair with .rb-btn (+ an
|
|
27
|
+
* optional color variant) — inherits color/border/hover/focus from it. */
|
|
28
|
+
:where([data-rb-style="neon-butterfly"], [data-rb-style="neon-butterfly"] *).rb-icon-btn {
|
|
29
|
+
padding: var(--rb-space-2);
|
|
30
|
+
min-width: 2rem;
|
|
31
|
+
min-height: 2rem;
|
|
32
|
+
gap: 0;
|
|
33
|
+
justify-content: center;
|
|
34
|
+
line-height: 1;
|
|
35
|
+
}
|
|
21
36
|
:where([data-rb-style="neon-butterfly"], [data-rb-style="neon-butterfly"] *).rb-btn:hover,
|
|
22
37
|
:where([data-rb-style="neon-butterfly"], [data-rb-style="neon-butterfly"] *).rb-btn:focus-visible {
|
|
23
38
|
border-color: var(--rb-accent-border);
|
|
@@ -37,6 +52,17 @@
|
|
|
37
52
|
border-color: var(--rb-danger);
|
|
38
53
|
color: var(--rb-danger);
|
|
39
54
|
}
|
|
55
|
+
/* ghost: minimal-emphasis variant — no border/fill until hover reveals the glass surface */
|
|
56
|
+
:where([data-rb-style="neon-butterfly"], [data-rb-style="neon-butterfly"] *).rb-btn--ghost {
|
|
57
|
+
background: transparent;
|
|
58
|
+
border-color: transparent;
|
|
59
|
+
color: var(--rb-text-soft);
|
|
60
|
+
}
|
|
61
|
+
:where([data-rb-style="neon-butterfly"], [data-rb-style="neon-butterfly"] *).rb-btn--ghost:hover,
|
|
62
|
+
:where([data-rb-style="neon-butterfly"], [data-rb-style="neon-butterfly"] *).rb-btn--ghost:focus-visible {
|
|
63
|
+
background: var(--rb-surface-glass);
|
|
64
|
+
}
|
|
65
|
+
|
|
40
66
|
:where([data-rb-style="neon-butterfly"], [data-rb-style="neon-butterfly"] *).rb-btn:disabled {
|
|
41
67
|
opacity: 0.5;
|
|
42
68
|
cursor: not-allowed;
|
|
@@ -34,6 +34,16 @@
|
|
|
34
34
|
color: var(--rb-accent-2);
|
|
35
35
|
text-shadow: 0 0 5px var(--rb-accent-2-glow);
|
|
36
36
|
}
|
|
37
|
+
/* --active: the current route — the hover color/glow, resting, without the
|
|
38
|
+
* hover-only slide (that's a click-me cue; an active item is already "here"). */
|
|
39
|
+
:where([data-rb-style="neon-butterfly"], [data-rb-style="neon-butterfly"] *).rb-link--active {
|
|
40
|
+
border-color: var(--rb-accent-border);
|
|
41
|
+
color: var(--rb-accent);
|
|
42
|
+
}
|
|
43
|
+
:where([data-rb-style="neon-butterfly"], [data-rb-style="neon-butterfly"] *).rb-link--active::before {
|
|
44
|
+
color: var(--rb-accent-2);
|
|
45
|
+
text-shadow: 0 0 5px var(--rb-accent-2-glow);
|
|
46
|
+
}
|
|
37
47
|
|
|
38
48
|
@keyframes rb-nb-pulse-glow {
|
|
39
49
|
0%,
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/* neon-butterfly — log / terminal block
|
|
2
|
+
* Pairs with .rb-pre for the shared look (surface-sunken well, hairline
|
|
3
|
+
* border, radius, small mono) -- .rb-log itself only adds what changes for
|
|
4
|
+
* multi-line streaming output: a capped height with vertical scroll, wrapped
|
|
5
|
+
* long lines instead of .rb-pre's horizontal scroll, and a touch more
|
|
6
|
+
* line-height so dense text stays readable. Use together on one element:
|
|
7
|
+
* <pre class="rb-pre rb-log">. */
|
|
8
|
+
:where([data-rb-style="neon-butterfly"], [data-rb-style="neon-butterfly"] *).rb-log {
|
|
9
|
+
max-height: 16rem;
|
|
10
|
+
overflow-y: auto;
|
|
11
|
+
white-space: pre-wrap;
|
|
12
|
+
overflow-wrap: anywhere;
|
|
13
|
+
line-height: 1.5;
|
|
14
|
+
}
|
|
15
|
+
/* Specificity-pinned (not import-order-dependent) override of .rb-pre's
|
|
16
|
+
* overflow-x: auto -- .rb-log wraps instead of scrolling horizontally. */
|
|
17
|
+
:where([data-rb-style="neon-butterfly"], [data-rb-style="neon-butterfly"] *).rb-pre.rb-log {
|
|
18
|
+
overflow-x: hidden;
|
|
19
|
+
}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/* neon-butterfly — muted / empty-state text
|
|
2
|
+
* Faint secondary text — captions, meta, "No results yet." style empty
|
|
3
|
+
* states. No italic: this theme's mono/uppercase terminal voice never
|
|
4
|
+
* reaches for a literary flourish — "a command console, not a document". */
|
|
5
|
+
:where([data-rb-style="neon-butterfly"], [data-rb-style="neon-butterfly"] *).rb-muted {
|
|
6
|
+
color: var(--rb-text-faint);
|
|
7
|
+
}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/* neon-butterfly — nav rail (vertical sidebar container)
|
|
2
|
+
* Flush edge chrome, not a floating card: fixed-width flex column, the same
|
|
3
|
+
* glass panel + blur as .rb-card, a hairline right edge. Composes with
|
|
4
|
+
* .rb-link for items -- active/hover are entirely that component's own
|
|
5
|
+
* tokens, nothing new here. */
|
|
6
|
+
:where([data-rb-style="neon-butterfly"], [data-rb-style="neon-butterfly"] *).rb-nav-rail {
|
|
7
|
+
display: flex;
|
|
8
|
+
flex-direction: column;
|
|
9
|
+
flex-shrink: 0;
|
|
10
|
+
gap: var(--rb-space-1);
|
|
11
|
+
width: 14rem;
|
|
12
|
+
padding: var(--rb-space-3);
|
|
13
|
+
background: var(--rb-surface-glass);
|
|
14
|
+
border-right: 1px solid var(--rb-border);
|
|
15
|
+
backdrop-filter: blur(var(--rb-blur));
|
|
16
|
+
-webkit-backdrop-filter: blur(var(--rb-blur));
|
|
17
|
+
}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/* neon-butterfly — command / log block
|
|
2
|
+
* Styled <pre> for shell commands or short log output: sunken well,
|
|
3
|
+
* hairline border, small mono, scrolls horizontally instead of wrapping. */
|
|
4
|
+
:where([data-rb-style="neon-butterfly"], [data-rb-style="neon-butterfly"] *).rb-pre {
|
|
5
|
+
margin: 0;
|
|
6
|
+
padding: var(--rb-space-3) var(--rb-space-4);
|
|
7
|
+
background: var(--rb-surface-sunken);
|
|
8
|
+
border: 1px solid var(--rb-border);
|
|
9
|
+
border-radius: var(--rb-radius);
|
|
10
|
+
font-family: var(--rb-font-mono);
|
|
11
|
+
font-size: var(--rb-text-sm);
|
|
12
|
+
overflow-x: auto;
|
|
13
|
+
}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
/* neon-butterfly — progress bar & spinner */
|
|
2
2
|
:where([data-rb-style="neon-butterfly"], [data-rb-style="neon-butterfly"] *).rb-progress {
|
|
3
|
+
appearance: none;
|
|
3
4
|
display: block;
|
|
4
5
|
width: 100%;
|
|
5
6
|
height: 0.5rem;
|
|
@@ -8,14 +9,22 @@
|
|
|
8
9
|
border-radius: 1rem;
|
|
9
10
|
overflow: hidden;
|
|
10
11
|
}
|
|
11
|
-
:where([data-rb-style="neon-butterfly"], [data-rb-style="neon-butterfly"] *).rb-
|
|
12
|
-
|
|
12
|
+
:where([data-rb-style="neon-butterfly"], [data-rb-style="neon-butterfly"] *).rb-progress::-webkit-progress-bar {
|
|
13
|
+
background: var(--rb-surface);
|
|
14
|
+
}
|
|
15
|
+
:where([data-rb-style="neon-butterfly"], [data-rb-style="neon-butterfly"] *).rb-progress::-webkit-progress-value {
|
|
13
16
|
background: var(--rb-accent);
|
|
14
17
|
box-shadow: 0 0 8px var(--rb-accent-glow);
|
|
15
|
-
border-radius: 1rem;
|
|
16
|
-
transition: width var(--rb-transition);
|
|
17
18
|
}
|
|
18
|
-
:where([data-rb-style="neon-butterfly"], [data-rb-style="neon-butterfly"] *).rb-
|
|
19
|
+
:where([data-rb-style="neon-butterfly"], [data-rb-style="neon-butterfly"] *).rb-progress::-moz-progress-bar {
|
|
20
|
+
background: var(--rb-accent);
|
|
21
|
+
box-shadow: 0 0 8px var(--rb-accent-glow);
|
|
22
|
+
}
|
|
23
|
+
:where([data-rb-style="neon-butterfly"], [data-rb-style="neon-butterfly"] *).rb-progress--accent::-webkit-progress-value {
|
|
24
|
+
background: var(--rb-accent-2);
|
|
25
|
+
box-shadow: 0 0 8px var(--rb-accent-2-glow);
|
|
26
|
+
}
|
|
27
|
+
:where([data-rb-style="neon-butterfly"], [data-rb-style="neon-butterfly"] *).rb-progress--accent::-moz-progress-bar {
|
|
19
28
|
background: var(--rb-accent-2);
|
|
20
29
|
box-shadow: 0 0 8px var(--rb-accent-2-glow);
|
|
21
30
|
}
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
/* neon-butterfly — stepper (delivery / milestone tracker)
|
|
2
|
+
* <ol class="rb-stepper"> with one
|
|
3
|
+
* <li class="rb-stepper__step rb-stepper--complete|current|upcoming"> per
|
|
4
|
+
* milestone: a .rb-stepper__node icon/number circle + .rb-stepper__label.
|
|
5
|
+
* Each non-first step draws its OWN connector segment back to the previous
|
|
6
|
+
* step's node (right: 50%; width: 100% of that step's own flex slice, self-
|
|
7
|
+
* aligning to node centers regardless of item count or label width -- a
|
|
8
|
+
* single full-width rail can't do this without knowing how many steps there
|
|
9
|
+
* are, since node centers sit inset within their own slice). isolation:
|
|
10
|
+
* isolate keeps every segment's negative z-index scoped to this stepper, so
|
|
11
|
+
* it paints behind every node without needing per-node z-index of its own.
|
|
12
|
+
* A segment fills once its OWN step is reached (complete or current) -- the
|
|
13
|
+
* same state class already on the <li>, not a second progress mechanism.
|
|
14
|
+
* Elevation here is glow, not shadow: a filled segment and the current node
|
|
15
|
+
* both take the same accent-glow box-shadow .rb-progress's value fill already
|
|
16
|
+
* uses. */
|
|
17
|
+
:where([data-rb-style="neon-butterfly"], [data-rb-style="neon-butterfly"] *).rb-stepper {
|
|
18
|
+
display: flex;
|
|
19
|
+
isolation: isolate;
|
|
20
|
+
list-style: none;
|
|
21
|
+
margin: 0;
|
|
22
|
+
padding: 0;
|
|
23
|
+
}
|
|
24
|
+
:where([data-rb-style="neon-butterfly"], [data-rb-style="neon-butterfly"] *).rb-stepper__step {
|
|
25
|
+
position: relative;
|
|
26
|
+
flex: 1;
|
|
27
|
+
min-width: 0;
|
|
28
|
+
display: flex;
|
|
29
|
+
flex-direction: column;
|
|
30
|
+
align-items: center;
|
|
31
|
+
gap: var(--rb-space-2);
|
|
32
|
+
text-align: center;
|
|
33
|
+
}
|
|
34
|
+
:where([data-rb-style="neon-butterfly"], [data-rb-style="neon-butterfly"] *).rb-stepper__step:not(:first-child)::before {
|
|
35
|
+
content: "";
|
|
36
|
+
position: absolute;
|
|
37
|
+
top: 1rem;
|
|
38
|
+
right: 50%;
|
|
39
|
+
width: 100%;
|
|
40
|
+
height: 2px;
|
|
41
|
+
background: var(--rb-surface);
|
|
42
|
+
z-index: -1;
|
|
43
|
+
transition: background-color var(--rb-transition), box-shadow var(--rb-transition);
|
|
44
|
+
}
|
|
45
|
+
:where([data-rb-style="neon-butterfly"], [data-rb-style="neon-butterfly"] *).rb-stepper__step:not(:first-child).rb-stepper--complete::before,
|
|
46
|
+
:where([data-rb-style="neon-butterfly"], [data-rb-style="neon-butterfly"] *).rb-stepper__step:not(:first-child).rb-stepper--current::before {
|
|
47
|
+
background: var(--rb-accent);
|
|
48
|
+
box-shadow: 0 0 8px var(--rb-accent-glow);
|
|
49
|
+
}
|
|
50
|
+
:where([data-rb-style="neon-butterfly"], [data-rb-style="neon-butterfly"] *).rb-stepper__node {
|
|
51
|
+
display: flex;
|
|
52
|
+
align-items: center;
|
|
53
|
+
justify-content: center;
|
|
54
|
+
width: 2rem;
|
|
55
|
+
height: 2rem;
|
|
56
|
+
border: 2px solid transparent;
|
|
57
|
+
border-radius: var(--rb-radius-pill);
|
|
58
|
+
background: var(--rb-surface-2);
|
|
59
|
+
color: var(--rb-text-faint);
|
|
60
|
+
font-size: var(--rb-text-sm);
|
|
61
|
+
font-weight: var(--rb-font-weight-medium);
|
|
62
|
+
}
|
|
63
|
+
:where([data-rb-style="neon-butterfly"], [data-rb-style="neon-butterfly"] *).rb-stepper__label {
|
|
64
|
+
font-size: var(--rb-text-sm);
|
|
65
|
+
color: var(--rb-text-faint);
|
|
66
|
+
}
|
|
67
|
+
:where([data-rb-style="neon-butterfly"], [data-rb-style="neon-butterfly"] *).rb-stepper--complete .rb-stepper__node {
|
|
68
|
+
background: var(--rb-accent);
|
|
69
|
+
color: var(--rb-accent-fg);
|
|
70
|
+
}
|
|
71
|
+
:where([data-rb-style="neon-butterfly"], [data-rb-style="neon-butterfly"] *).rb-stepper--complete .rb-stepper__label {
|
|
72
|
+
color: var(--rb-text);
|
|
73
|
+
}
|
|
74
|
+
:where([data-rb-style="neon-butterfly"], [data-rb-style="neon-butterfly"] *).rb-stepper--current .rb-stepper__node {
|
|
75
|
+
background: var(--rb-surface);
|
|
76
|
+
border-color: var(--rb-accent);
|
|
77
|
+
color: var(--rb-accent);
|
|
78
|
+
box-shadow: 0 0 8px var(--rb-accent-glow);
|
|
79
|
+
}
|
|
80
|
+
:where([data-rb-style="neon-butterfly"], [data-rb-style="neon-butterfly"] *).rb-stepper--current .rb-stepper__label {
|
|
81
|
+
color: var(--rb-accent);
|
|
82
|
+
font-weight: var(--rb-font-weight-medium);
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
@media (prefers-reduced-motion: reduce) {
|
|
86
|
+
:where([data-rb-style="neon-butterfly"], [data-rb-style="neon-butterfly"] *).rb-stepper__step:not(:first-child)::before {
|
|
87
|
+
transition: none;
|
|
88
|
+
}
|
|
89
|
+
}
|
|
@@ -19,9 +19,24 @@
|
|
|
19
19
|
padding: var(--rb-space-2) var(--rb-space-3);
|
|
20
20
|
border-bottom: 1px solid var(--rb-border);
|
|
21
21
|
}
|
|
22
|
+
:where([data-rb-style="neon-butterfly"], [data-rb-style="neon-butterfly"] *).rb-table .rb-num {
|
|
23
|
+
text-align: right;
|
|
24
|
+
font-variant-numeric: tabular-nums;
|
|
25
|
+
}
|
|
22
26
|
:where([data-rb-style="neon-butterfly"], [data-rb-style="neon-butterfly"] *).rb-table tbody tr {
|
|
23
27
|
transition: background var(--rb-transition);
|
|
24
28
|
}
|
|
25
29
|
:where([data-rb-style="neon-butterfly"], [data-rb-style="neon-butterfly"] *).rb-table tbody tr:hover {
|
|
26
30
|
background: var(--rb-surface-glass);
|
|
27
31
|
}
|
|
32
|
+
/* --interactive: clickable rows (a tabindex tr, or a row-wrapping button/link) —
|
|
33
|
+
* pointer cursor plus a keyboard-equivalent of the glass hover and a focus ring. */
|
|
34
|
+
:where([data-rb-style="neon-butterfly"], [data-rb-style="neon-butterfly"] *).rb-table--interactive tbody tr {
|
|
35
|
+
cursor: pointer;
|
|
36
|
+
}
|
|
37
|
+
:where([data-rb-style="neon-butterfly"], [data-rb-style="neon-butterfly"] *).rb-table--interactive tbody tr:focus-visible,
|
|
38
|
+
:where([data-rb-style="neon-butterfly"], [data-rb-style="neon-butterfly"] *).rb-table--interactive tbody tr:has(:focus-visible) {
|
|
39
|
+
outline: 2px solid var(--rb-accent);
|
|
40
|
+
outline-offset: -2px;
|
|
41
|
+
background: var(--rb-surface-glass);
|
|
42
|
+
}
|
package/neon-butterfly/design.md
CHANGED
|
@@ -55,6 +55,11 @@ appear only on interaction or state. Never use pure white or pure black.
|
|
|
55
55
|
- **Interactive text** (buttons, links, tabs, labels, table headers): uppercase,
|
|
56
56
|
700, 14px (labels/headers 11–12px), letter-spacing `0.1em` (`--rb-label-tracking`).
|
|
57
57
|
- **Body text:** sentence case, 450.
|
|
58
|
+
- **Bare tags:** unclassed `h1`-`h6` carry the mono voice at 700 (the same
|
|
59
|
+
weight as everything else marked "interactive" — only 450/700 load), with
|
|
60
|
+
the wide `--rb-heading-tracking` (`0.1em`) and `--rb-space-3` margin below.
|
|
61
|
+
Bare `p` shares that margin; bare `ul`/`ol` add it too, with `--rb-space-4`
|
|
62
|
+
marker indent (real disc/decimal markers, not stripped).
|
|
58
63
|
|
|
59
64
|
Webfonts (JetBrains Mono) are declared in `styles/manifest.json`
|
|
60
65
|
(`neon-butterfly.fonts`); consumers load that stylesheet or self-host, and the
|
|
@@ -76,19 +81,50 @@ token stack falls back to `ui-monospace`.
|
|
|
76
81
|
Class prefix `rb-`. Variants use BEM-ish modifiers (`rb-btn--accent`).
|
|
77
82
|
|
|
78
83
|
- **Card** `.rb-card` — frosted glass panel.
|
|
79
|
-
- **NavLink** `.rb-link` — the switchboard link: `>` chevron turns lime on
|
|
80
|
-
|
|
84
|
+
- **NavLink** `.rb-link` — the switchboard link: `>` chevron turns lime on
|
|
85
|
+
hover; `--active` applies that same color/glow at rest, without the
|
|
86
|
+
hover-only slide, for the current route.
|
|
87
|
+
- **Nav rail** `.rb-nav-rail` — the sidebar container: 14rem fixed-width flex
|
|
88
|
+
column, the same glass panel + blur as `.rb-card`, a hairline right edge.
|
|
89
|
+
Composes with `.rb-link` for items; introduces no active-state convention
|
|
90
|
+
of its own.
|
|
91
|
+
- **Button** `.rb-btn` — `--primary`, `--accent`, `--danger` variants; `--ghost`
|
|
92
|
+
drops the glass fill and border until hover reveals it — the lowest-emphasis
|
|
93
|
+
tier; `--sm` compact size for inline/table-row actions; `.rb-icon-btn` a
|
|
94
|
+
square icon-only hit target (>=2rem), paired with `.rb-btn`.
|
|
81
95
|
- **Form** `.rb-input`, `.rb-textarea`, `.rb-select`, `.rb-label`, `.rb-field`,
|
|
82
96
|
`.rb-checkbox`, `.rb-radio`, `.rb-switch`, `.rb-choice` — checked states glow lime.
|
|
83
97
|
- **Badge** `.rb-badge` + semantic modifiers.
|
|
84
98
|
- **Alert** `.rb-alert` — left accent bar carries the semantic color.
|
|
85
99
|
- **Dialog** `.rb-dialog` — native `<dialog>`, lilac border + glow, blurred backdrop.
|
|
86
100
|
- **Tabs** `.rb-tabs`/`.rb-tab`/`.rb-tabpanel` — active tab underlined in lilac with text glow.
|
|
87
|
-
- **Table** `.rb-table` — lilac header rule, glass row hover.
|
|
101
|
+
- **Table** `.rb-table` (+ `.rb-num`) — lilac header rule, glass row hover. `--interactive`
|
|
102
|
+
marks clickable rows: pointer cursor, plus a focus-visible ring (and the
|
|
103
|
+
same glass wash) for a `tabindex` row or a row-wrapping button/link.
|
|
88
104
|
- **Progress** `.rb-progress`, **Spinner** `.rb-spinner` — glowing lilac indicators.
|
|
105
|
+
- **Stepper** `.rb-stepper` (+ `__step` / `__node` / `__label`, `--complete` /
|
|
106
|
+
`--current` / `--upcoming`) — a milestone rail: complete nodes solid accent
|
|
107
|
+
with a checkmark, current a surface-fill ring with an accent border, both
|
|
108
|
+
the rail fill and the current node glowing with the same `--rb-accent-glow` box-shadow
|
|
109
|
+
`.rb-progress`'s value fill uses. Upcoming reads faint surface-2; rail track is
|
|
110
|
+
`surface` (matching how `.rb-progress` itself sits), and each connector
|
|
111
|
+
segment picks up that same glow once its own step is reached (complete or
|
|
112
|
+
current) -- no separate progress value to keep in sync with the step
|
|
113
|
+
states.
|
|
114
|
+
- **Muted text** `.rb-muted` — faint secondary/empty-state text;
|
|
115
|
+
`color: var(--rb-text-faint)` only, no italic — this theme's mono/uppercase
|
|
116
|
+
terminal voice never reaches for a literary flourish.
|
|
117
|
+
- **Pre / log block** `.rb-pre` — command/log `<pre>`; sunken background,
|
|
118
|
+
hairline border, radius, small mono, horizontal scroll. Pair with `.rb-log`
|
|
119
|
+
(`<pre class="rb-pre rb-log">`) for multi-line streaming output: a capped
|
|
120
|
+
16rem height with vertical scroll, wrapped lines instead of horizontal
|
|
121
|
+
scroll, and roomier line-height for dense text.
|
|
89
122
|
|
|
90
123
|
This port carries nazuraki's original component set; the rackbops-specific
|
|
91
|
-
`eyebrow`, `tabstrip`,
|
|
124
|
+
`eyebrow`, `tabstrip`, and `wordmark` surfaces are not part of it.
|
|
125
|
+
`.rb-card--raised` is also absent: nazuraki's own card never had a second
|
|
126
|
+
elevation tier, so the port doesn't invent one — `Card raised` is a
|
|
127
|
+
documented no-op here (see `contract.test.mjs`'s allowlist).
|
|
92
128
|
|
|
93
129
|
## Code syntax
|
|
94
130
|
|
package/neon-butterfly/index.css
CHANGED
|
@@ -3,6 +3,7 @@
|
|
|
3
3
|
@import "./base.css";
|
|
4
4
|
@import "./components/card.css";
|
|
5
5
|
@import "./components/link.css";
|
|
6
|
+
@import "./components/nav-rail.css";
|
|
6
7
|
@import "./components/button.css";
|
|
7
8
|
@import "./components/form.css";
|
|
8
9
|
@import "./components/badge.css";
|
|
@@ -11,3 +12,7 @@
|
|
|
11
12
|
@import "./components/tabs.css";
|
|
12
13
|
@import "./components/table.css";
|
|
13
14
|
@import "./components/progress.css";
|
|
15
|
+
@import "./components/stepper.css";
|
|
16
|
+
@import "./components/muted.css";
|
|
17
|
+
@import "./components/pre.css";
|
|
18
|
+
@import "./components/log.css";
|
package/package.json
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@rackbops/styles",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.2",
|
|
4
4
|
"description": "Rackbops design-system styles: tokens, base styles, and component classes per theme.",
|
|
5
|
-
"license": "
|
|
5
|
+
"license": "MIT",
|
|
6
6
|
"repository": {
|
|
7
7
|
"type": "git",
|
|
8
8
|
"url": "git+https://github.com/roshne/rackbops-ui-ux-std-lib.git",
|
|
@@ -14,6 +14,9 @@
|
|
|
14
14
|
"scripts": {
|
|
15
15
|
"test": "node --test"
|
|
16
16
|
},
|
|
17
|
+
"devDependencies": {
|
|
18
|
+
"typescript": "^7.0.0"
|
|
19
|
+
},
|
|
17
20
|
"files": [
|
|
18
21
|
"arcane-obsidian",
|
|
19
22
|
"arcane-parchment",
|
|
@@ -22,39 +25,65 @@
|
|
|
22
25
|
"luminous-precision",
|
|
23
26
|
"neon-butterfly",
|
|
24
27
|
"summer-cloud",
|
|
28
|
+
"concrete-signal",
|
|
29
|
+
"concrete-signal-light",
|
|
30
|
+
"amber-hearth",
|
|
31
|
+
"amber-ember",
|
|
32
|
+
"mono-field",
|
|
25
33
|
"all.css",
|
|
26
|
-
"manifest.json"
|
|
34
|
+
"manifest.json",
|
|
35
|
+
"css-side-effect.d.ts"
|
|
27
36
|
],
|
|
28
37
|
"exports": {
|
|
29
|
-
"./all": "./all.css",
|
|
38
|
+
"./all": { "types": "./css-side-effect.d.ts", "default": "./all.css" },
|
|
30
39
|
"./manifest": "./manifest.json",
|
|
31
|
-
"./arcane-obsidian": "./arcane-obsidian/index.css",
|
|
32
|
-
"./arcane-obsidian/tokens": "./arcane-obsidian/tokens.css",
|
|
33
|
-
"./arcane-obsidian/base": "./arcane-obsidian/base.css",
|
|
34
|
-
"./arcane-obsidian/components/*": "./arcane-obsidian/components/*.css",
|
|
35
|
-
"./arcane-parchment": "./arcane-parchment/index.css",
|
|
36
|
-
"./arcane-parchment/tokens": "./arcane-parchment/tokens.css",
|
|
37
|
-
"./arcane-parchment/base": "./arcane-parchment/base.css",
|
|
38
|
-
"./arcane-parchment/components/*": "./arcane-parchment/components/*.css",
|
|
39
|
-
"./rackbops-studio": "./rackbops-studio/index.css",
|
|
40
|
-
"./rackbops-studio/tokens": "./rackbops-studio/tokens.css",
|
|
41
|
-
"./rackbops-studio/base": "./rackbops-studio/base.css",
|
|
42
|
-
"./rackbops-studio/components/*": "./rackbops-studio/components/*.css",
|
|
43
|
-
"./rackbops-noir": "./rackbops-noir/index.css",
|
|
44
|
-
"./rackbops-noir/tokens": "./rackbops-noir/tokens.css",
|
|
45
|
-
"./rackbops-noir/base": "./rackbops-noir/base.css",
|
|
46
|
-
"./rackbops-noir/components/*": "./rackbops-noir/components/*.css",
|
|
47
|
-
"./luminous-precision": "./luminous-precision/index.css",
|
|
48
|
-
"./luminous-precision/tokens": "./luminous-precision/tokens.css",
|
|
49
|
-
"./luminous-precision/base": "./luminous-precision/base.css",
|
|
50
|
-
"./luminous-precision/components/*": "./luminous-precision/components/*.css",
|
|
51
|
-
"./neon-butterfly": "./neon-butterfly/index.css",
|
|
52
|
-
"./neon-butterfly/tokens": "./neon-butterfly/tokens.css",
|
|
53
|
-
"./neon-butterfly/base": "./neon-butterfly/base.css",
|
|
54
|
-
"./neon-butterfly/components/*": "./neon-butterfly/components/*.css",
|
|
55
|
-
"./summer-cloud": "./summer-cloud/index.css",
|
|
56
|
-
"./summer-cloud/tokens": "./summer-cloud/tokens.css",
|
|
57
|
-
"./summer-cloud/base": "./summer-cloud/base.css",
|
|
58
|
-
"./summer-cloud/components/*": "./summer-cloud/components/*.css"
|
|
40
|
+
"./arcane-obsidian": { "types": "./css-side-effect.d.ts", "default": "./arcane-obsidian/index.css" },
|
|
41
|
+
"./arcane-obsidian/tokens": { "types": "./css-side-effect.d.ts", "default": "./arcane-obsidian/tokens.css" },
|
|
42
|
+
"./arcane-obsidian/base": { "types": "./css-side-effect.d.ts", "default": "./arcane-obsidian/base.css" },
|
|
43
|
+
"./arcane-obsidian/components/*": { "types": "./css-side-effect.d.ts", "default": "./arcane-obsidian/components/*.css" },
|
|
44
|
+
"./arcane-parchment": { "types": "./css-side-effect.d.ts", "default": "./arcane-parchment/index.css" },
|
|
45
|
+
"./arcane-parchment/tokens": { "types": "./css-side-effect.d.ts", "default": "./arcane-parchment/tokens.css" },
|
|
46
|
+
"./arcane-parchment/base": { "types": "./css-side-effect.d.ts", "default": "./arcane-parchment/base.css" },
|
|
47
|
+
"./arcane-parchment/components/*": { "types": "./css-side-effect.d.ts", "default": "./arcane-parchment/components/*.css" },
|
|
48
|
+
"./rackbops-studio": { "types": "./css-side-effect.d.ts", "default": "./rackbops-studio/index.css" },
|
|
49
|
+
"./rackbops-studio/tokens": { "types": "./css-side-effect.d.ts", "default": "./rackbops-studio/tokens.css" },
|
|
50
|
+
"./rackbops-studio/base": { "types": "./css-side-effect.d.ts", "default": "./rackbops-studio/base.css" },
|
|
51
|
+
"./rackbops-studio/components/*": { "types": "./css-side-effect.d.ts", "default": "./rackbops-studio/components/*.css" },
|
|
52
|
+
"./rackbops-noir": { "types": "./css-side-effect.d.ts", "default": "./rackbops-noir/index.css" },
|
|
53
|
+
"./rackbops-noir/tokens": { "types": "./css-side-effect.d.ts", "default": "./rackbops-noir/tokens.css" },
|
|
54
|
+
"./rackbops-noir/base": { "types": "./css-side-effect.d.ts", "default": "./rackbops-noir/base.css" },
|
|
55
|
+
"./rackbops-noir/components/*": { "types": "./css-side-effect.d.ts", "default": "./rackbops-noir/components/*.css" },
|
|
56
|
+
"./luminous-precision": { "types": "./css-side-effect.d.ts", "default": "./luminous-precision/index.css" },
|
|
57
|
+
"./luminous-precision/tokens": { "types": "./css-side-effect.d.ts", "default": "./luminous-precision/tokens.css" },
|
|
58
|
+
"./luminous-precision/base": { "types": "./css-side-effect.d.ts", "default": "./luminous-precision/base.css" },
|
|
59
|
+
"./luminous-precision/components/*": { "types": "./css-side-effect.d.ts", "default": "./luminous-precision/components/*.css" },
|
|
60
|
+
"./neon-butterfly": { "types": "./css-side-effect.d.ts", "default": "./neon-butterfly/index.css" },
|
|
61
|
+
"./neon-butterfly/tokens": { "types": "./css-side-effect.d.ts", "default": "./neon-butterfly/tokens.css" },
|
|
62
|
+
"./neon-butterfly/base": { "types": "./css-side-effect.d.ts", "default": "./neon-butterfly/base.css" },
|
|
63
|
+
"./neon-butterfly/components/*": { "types": "./css-side-effect.d.ts", "default": "./neon-butterfly/components/*.css" },
|
|
64
|
+
"./summer-cloud": { "types": "./css-side-effect.d.ts", "default": "./summer-cloud/index.css" },
|
|
65
|
+
"./summer-cloud/tokens": { "types": "./css-side-effect.d.ts", "default": "./summer-cloud/tokens.css" },
|
|
66
|
+
"./summer-cloud/base": { "types": "./css-side-effect.d.ts", "default": "./summer-cloud/base.css" },
|
|
67
|
+
"./summer-cloud/components/*": { "types": "./css-side-effect.d.ts", "default": "./summer-cloud/components/*.css" },
|
|
68
|
+
"./concrete-signal": { "types": "./css-side-effect.d.ts", "default": "./concrete-signal/index.css" },
|
|
69
|
+
"./concrete-signal/tokens": { "types": "./css-side-effect.d.ts", "default": "./concrete-signal/tokens.css" },
|
|
70
|
+
"./concrete-signal/base": { "types": "./css-side-effect.d.ts", "default": "./concrete-signal/base.css" },
|
|
71
|
+
"./concrete-signal/components/*": { "types": "./css-side-effect.d.ts", "default": "./concrete-signal/components/*.css" },
|
|
72
|
+
"./concrete-signal-light": { "types": "./css-side-effect.d.ts", "default": "./concrete-signal-light/index.css" },
|
|
73
|
+
"./concrete-signal-light/tokens": { "types": "./css-side-effect.d.ts", "default": "./concrete-signal-light/tokens.css" },
|
|
74
|
+
"./concrete-signal-light/base": { "types": "./css-side-effect.d.ts", "default": "./concrete-signal-light/base.css" },
|
|
75
|
+
"./concrete-signal-light/components/*": { "types": "./css-side-effect.d.ts", "default": "./concrete-signal-light/components/*.css" },
|
|
76
|
+
"./amber-hearth": { "types": "./css-side-effect.d.ts", "default": "./amber-hearth/index.css" },
|
|
77
|
+
"./amber-hearth/tokens": { "types": "./css-side-effect.d.ts", "default": "./amber-hearth/tokens.css" },
|
|
78
|
+
"./amber-hearth/base": { "types": "./css-side-effect.d.ts", "default": "./amber-hearth/base.css" },
|
|
79
|
+
"./amber-hearth/components/*": { "types": "./css-side-effect.d.ts", "default": "./amber-hearth/components/*.css" },
|
|
80
|
+
"./amber-ember": { "types": "./css-side-effect.d.ts", "default": "./amber-ember/index.css" },
|
|
81
|
+
"./amber-ember/tokens": { "types": "./css-side-effect.d.ts", "default": "./amber-ember/tokens.css" },
|
|
82
|
+
"./amber-ember/base": { "types": "./css-side-effect.d.ts", "default": "./amber-ember/base.css" },
|
|
83
|
+
"./amber-ember/components/*": { "types": "./css-side-effect.d.ts", "default": "./amber-ember/components/*.css" },
|
|
84
|
+
"./mono-field": { "types": "./css-side-effect.d.ts", "default": "./mono-field/index.css" },
|
|
85
|
+
"./mono-field/tokens": { "types": "./css-side-effect.d.ts", "default": "./mono-field/tokens.css" },
|
|
86
|
+
"./mono-field/base": { "types": "./css-side-effect.d.ts", "default": "./mono-field/base.css" },
|
|
87
|
+
"./mono-field/components/*": { "types": "./css-side-effect.d.ts", "default": "./mono-field/components/*.css" }
|
|
59
88
|
}
|
|
60
89
|
}
|
package/rackbops-noir/base.css
CHANGED
|
@@ -28,8 +28,8 @@
|
|
|
28
28
|
}
|
|
29
29
|
|
|
30
30
|
/* Heavy, balanced headlines with tight tracking — the studio's editorial voice. */
|
|
31
|
-
:where([data-rb-style="rackbops-noir"], [data-rb-style="rackbops-noir"] *):where(h1, h2, h3) {
|
|
32
|
-
margin: 0;
|
|
31
|
+
:where([data-rb-style="rackbops-noir"], [data-rb-style="rackbops-noir"] *):where(h1, h2, h3, h4, h5, h6) {
|
|
32
|
+
margin: 0 0 var(--rb-space-3);
|
|
33
33
|
font-family: var(--rb-font-display);
|
|
34
34
|
font-weight: var(--rb-font-weight-bold);
|
|
35
35
|
letter-spacing: var(--rb-heading-tracking);
|
|
@@ -37,6 +37,15 @@
|
|
|
37
37
|
text-wrap: balance;
|
|
38
38
|
}
|
|
39
39
|
|
|
40
|
+
:where([data-rb-style="rackbops-noir"], [data-rb-style="rackbops-noir"] *):where(p) {
|
|
41
|
+
margin: 0 0 var(--rb-space-3);
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
:where([data-rb-style="rackbops-noir"], [data-rb-style="rackbops-noir"] *):where(ul, ol) {
|
|
45
|
+
margin: 0 0 var(--rb-space-3);
|
|
46
|
+
padding-inline-start: var(--rb-space-4);
|
|
47
|
+
}
|
|
48
|
+
|
|
40
49
|
:where([data-rb-style="rackbops-noir"], [data-rb-style="rackbops-noir"] *):where(a) {
|
|
41
50
|
color: inherit;
|
|
42
51
|
}
|
|
@@ -20,6 +20,22 @@
|
|
|
20
20
|
border-color var(--rb-transition) ease,
|
|
21
21
|
color var(--rb-transition) ease;
|
|
22
22
|
}
|
|
23
|
+
/* --sm: compact size for inline/table-row actions; drops to the theme's small
|
|
24
|
+
* type scale. The optional arrow inherits font-size, so it scales too. */
|
|
25
|
+
:where([data-rb-style="rackbops-noir"], [data-rb-style="rackbops-noir"] *).rb-btn--sm {
|
|
26
|
+
padding: 7px 14px;
|
|
27
|
+
font-size: var(--rb-text-sm);
|
|
28
|
+
}
|
|
29
|
+
/* --icon: square icon-only hit target (>=2rem); pair with .rb-btn (+ an
|
|
30
|
+
* optional color variant) — inherits color/hover/focus from it. */
|
|
31
|
+
:where([data-rb-style="rackbops-noir"], [data-rb-style="rackbops-noir"] *).rb-icon-btn {
|
|
32
|
+
padding: var(--rb-space-2);
|
|
33
|
+
min-width: 2rem;
|
|
34
|
+
min-height: 2rem;
|
|
35
|
+
gap: 0;
|
|
36
|
+
justify-content: center;
|
|
37
|
+
line-height: 1;
|
|
38
|
+
}
|
|
23
39
|
:where([data-rb-style="rackbops-noir"], [data-rb-style="rackbops-noir"] *).rb-btn:active {
|
|
24
40
|
transform: translateY(1px);
|
|
25
41
|
}
|