@cascivo/themes 0.1.0 → 0.2.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/package.json +19 -5
- package/src/all.css +18 -0
- package/src/base.css +23 -0
- package/src/brutalist.css +3 -2
- package/src/corporate.css +3 -2
- package/src/dark.css +4 -2
- package/src/flat.css +3 -2
- package/src/light.css +4 -2
- package/src/midnight.css +3 -2
- package/src/minimal.css +3 -2
- package/src/pastel.css +3 -2
- package/src/terminal.css +3 -2
- package/src/warm.css +3 -2
package/README.md
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
# @cascivo/themes
|
|
4
4
|
|
|
5
|
-
> First-party
|
|
5
|
+
> First-party cascivo themes: light, dark, warm, flat, minimal, midnight, pastel, brutalist, corporate, terminal
|
|
6
6
|
|
|
7
7
|
[cascivo.com](https://cascivo.com) · [Docs](https://docs.cascivo.com) · [Storybook](https://storybook.cascivo.com) · [GitHub](https://github.com/urbanisierung/cascivo)
|
|
8
8
|
|
package/package.json
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@cascivo/themes",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.2.0",
|
|
4
4
|
"private": false,
|
|
5
|
-
"description": "First-party
|
|
5
|
+
"description": "First-party cascivo themes: light, dark, warm, flat, minimal, midnight, pastel, brutalist, corporate, terminal",
|
|
6
6
|
"keywords": [
|
|
7
7
|
"cascivo",
|
|
8
8
|
"css",
|
|
@@ -27,16 +27,30 @@
|
|
|
27
27
|
"!src/**/*.test.ts"
|
|
28
28
|
],
|
|
29
29
|
"exports": {
|
|
30
|
+
"./all": "./src/all.css",
|
|
31
|
+
"./all.css": "./src/all.css",
|
|
32
|
+
"./base": "./src/base.css",
|
|
33
|
+
"./base.css": "./src/base.css",
|
|
30
34
|
"./light": "./src/light.css",
|
|
35
|
+
"./light.css": "./src/light.css",
|
|
31
36
|
"./dark": "./src/dark.css",
|
|
37
|
+
"./dark.css": "./src/dark.css",
|
|
32
38
|
"./warm": "./src/warm.css",
|
|
39
|
+
"./warm.css": "./src/warm.css",
|
|
33
40
|
"./flat": "./src/flat.css",
|
|
41
|
+
"./flat.css": "./src/flat.css",
|
|
34
42
|
"./minimal": "./src/minimal.css",
|
|
43
|
+
"./minimal.css": "./src/minimal.css",
|
|
35
44
|
"./midnight": "./src/midnight.css",
|
|
45
|
+
"./midnight.css": "./src/midnight.css",
|
|
36
46
|
"./pastel": "./src/pastel.css",
|
|
47
|
+
"./pastel.css": "./src/pastel.css",
|
|
37
48
|
"./brutalist": "./src/brutalist.css",
|
|
49
|
+
"./brutalist.css": "./src/brutalist.css",
|
|
38
50
|
"./corporate": "./src/corporate.css",
|
|
39
|
-
"./
|
|
51
|
+
"./corporate.css": "./src/corporate.css",
|
|
52
|
+
"./terminal": "./src/terminal.css",
|
|
53
|
+
"./terminal.css": "./src/terminal.css"
|
|
40
54
|
},
|
|
41
55
|
"publishConfig": {
|
|
42
56
|
"access": "public",
|
|
@@ -45,8 +59,8 @@
|
|
|
45
59
|
"devDependencies": {
|
|
46
60
|
"@types/node": "^25",
|
|
47
61
|
"typescript": "^5",
|
|
48
|
-
"vite-plus": "^0.1
|
|
49
|
-
"@cascivo/tokens": "0.
|
|
62
|
+
"vite-plus": "^0.2.1",
|
|
63
|
+
"@cascivo/tokens": "0.2.0"
|
|
50
64
|
},
|
|
51
65
|
"peerDependencies": {
|
|
52
66
|
"@cascivo/tokens": ">=0.0.0"
|
package/src/all.css
ADDED
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/* cascivo — All-in-one theming bundle */
|
|
2
|
+
/* The single-import path for the common light + dark setup (#3):
|
|
3
|
+
|
|
4
|
+
@import '@cascivo/themes/all';
|
|
5
|
+
|
|
6
|
+
It loads @cascivo/tokens exactly ONCE (here), then the base layer, then the
|
|
7
|
+
light and dark themes (each scoped by [data-theme]). The per-theme files
|
|
8
|
+
below also self-import @cascivo/tokens for standalone use; bundlers and
|
|
9
|
+
browsers dedupe the identical @import URL, so tokens are still emitted once.
|
|
10
|
+
|
|
11
|
+
Layer order (first appearance, lowest → highest priority):
|
|
12
|
+
cascivo.tokens < cascivo.base < cascivo.theme ( < cascivo.component )
|
|
13
|
+
Component CSS (@cascivo/react/styles.css) adds cascivo.component on top. */
|
|
14
|
+
|
|
15
|
+
@import '@cascivo/tokens';
|
|
16
|
+
@import './base.css';
|
|
17
|
+
@import './light.css';
|
|
18
|
+
@import './dark.css';
|
package/src/base.css
ADDED
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
/* cascivo — Base Layer */
|
|
2
|
+
/* The one rule that activates the shipped font token (#6): applies
|
|
3
|
+
--cascivo-font-sans + a sane line-height/color/background to the document
|
|
4
|
+
root so plain consumer markup (headings, raw text, prose pages) renders in
|
|
5
|
+
the sans stack instead of falling back to the browser serif default.
|
|
6
|
+
|
|
7
|
+
This is NOT a full reset — it is the minimal base every consumer who imports
|
|
8
|
+
a theme should get for free. It lives in @layer cascivo.base, which sits
|
|
9
|
+
BELOW cascivo.theme and cascivo.component, so themes and components (and any
|
|
10
|
+
unlayered consumer CSS) always win.
|
|
11
|
+
|
|
12
|
+
Uses the canonical color tokens (foreground/background). Those are defined by
|
|
13
|
+
the themes, and --cascivo-font-sans by @cascivo/tokens; pair this with a theme
|
|
14
|
+
(or import @cascivo/themes/all). */
|
|
15
|
+
|
|
16
|
+
@layer cascivo.base {
|
|
17
|
+
html {
|
|
18
|
+
font-family: var(--cascivo-font-sans);
|
|
19
|
+
line-height: var(--cascivo-leading-normal, 1.5);
|
|
20
|
+
color: var(--cascivo-color-foreground);
|
|
21
|
+
background-color: var(--cascivo-color-background);
|
|
22
|
+
}
|
|
23
|
+
}
|
package/src/brutalist.css
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
/*
|
|
1
|
+
/* cascivo — Brutalist Theme */
|
|
2
2
|
/* Neo-brutalism: cream background, zero radius, thick borders, hard offset shadows */
|
|
3
3
|
|
|
4
4
|
@import '@cascivo/tokens';
|
|
5
5
|
|
|
6
|
-
@layer
|
|
6
|
+
@layer cascivo.theme {
|
|
7
7
|
[data-theme='brutalist'] {
|
|
8
8
|
color-scheme: light;
|
|
9
9
|
|
|
@@ -60,6 +60,7 @@
|
|
|
60
60
|
--cascivo-color-info-subtle: oklch(0.95 0.05 250);
|
|
61
61
|
--cascivo-color-success-foreground: oklch(0.52 0.18 145);
|
|
62
62
|
--cascivo-color-warning-foreground: oklch(0.5 0.15 75);
|
|
63
|
+
--cascivo-color-destructive-foreground: oklch(0.4 0.2 22);
|
|
63
64
|
|
|
64
65
|
/* ── Radius — zero ───────────────────────────────── */
|
|
65
66
|
--cascivo-radius-base: 0;
|
package/src/corporate.css
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
/*
|
|
1
|
+
/* cascivo — Corporate Theme */
|
|
2
2
|
/* Enterprise/data-dense, crisp 2px radius, conservative blue, tight hairlines */
|
|
3
3
|
|
|
4
4
|
@import '@cascivo/tokens';
|
|
5
5
|
|
|
6
|
-
@layer
|
|
6
|
+
@layer cascivo.theme {
|
|
7
7
|
[data-theme='corporate'] {
|
|
8
8
|
color-scheme: light;
|
|
9
9
|
|
|
@@ -60,6 +60,7 @@
|
|
|
60
60
|
--cascivo-color-info-subtle: oklch(0.95 0.03 255);
|
|
61
61
|
--cascivo-color-success-foreground: oklch(0.45 0.14 145);
|
|
62
62
|
--cascivo-color-warning-foreground: oklch(0.5 0.13 75);
|
|
63
|
+
--cascivo-color-destructive-foreground: oklch(0.448 0.17 22);
|
|
63
64
|
|
|
64
65
|
/* ── Radius — 2px ────────────────────────────────── */
|
|
65
66
|
--cascivo-radius-base: 0.125rem;
|
package/src/dark.css
CHANGED
|
@@ -1,9 +1,10 @@
|
|
|
1
|
-
/*
|
|
1
|
+
/* cascivo — Dark Theme */
|
|
2
2
|
/* Bold/editorial, high contrast, developer-cool */
|
|
3
3
|
|
|
4
|
+
/* Self-imports tokens for standalone use; deduped by URL when combined (see ./all.css). */
|
|
4
5
|
@import '@cascivo/tokens';
|
|
5
6
|
|
|
6
|
-
@layer
|
|
7
|
+
@layer cascivo.theme {
|
|
7
8
|
[data-theme='dark'] {
|
|
8
9
|
color-scheme: dark;
|
|
9
10
|
|
|
@@ -54,6 +55,7 @@
|
|
|
54
55
|
/* Foreground-safe variants: bright for text on dark backgrounds (WCAG AA ≥4.5:1) */
|
|
55
56
|
--cascivo-color-success-foreground: oklch(0.72 0.13 145);
|
|
56
57
|
--cascivo-color-warning-foreground: oklch(0.82 0.13 75);
|
|
58
|
+
--cascivo-color-destructive-foreground: oklch(0.85 0.12 22);
|
|
57
59
|
|
|
58
60
|
/* ── Primary — inverted monochrome ── */
|
|
59
61
|
--cascivo-color-primary: oklch(0.922 0 0);
|
package/src/flat.css
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
/*
|
|
1
|
+
/* cascivo — Flat Theme */
|
|
2
2
|
/* Zero shadows, zero radius, high-contrast borders, vivid green accent */
|
|
3
3
|
|
|
4
4
|
@import '@cascivo/tokens';
|
|
5
5
|
|
|
6
|
-
@layer
|
|
6
|
+
@layer cascivo.theme {
|
|
7
7
|
[data-theme='flat'] {
|
|
8
8
|
color-scheme: light;
|
|
9
9
|
|
|
@@ -84,6 +84,7 @@
|
|
|
84
84
|
--cascivo-color-info-subtle: oklch(0.95 0.04 250);
|
|
85
85
|
--cascivo-color-success-foreground: oklch(0.52 0.18 145);
|
|
86
86
|
--cascivo-color-warning-foreground: oklch(0.5 0.14 75);
|
|
87
|
+
--cascivo-color-destructive-foreground: oklch(0.42 0.19 22);
|
|
87
88
|
|
|
88
89
|
--cascivo-radius-component: 0;
|
|
89
90
|
--cascivo-radius-button: 0;
|
package/src/light.css
CHANGED
|
@@ -1,9 +1,10 @@
|
|
|
1
|
-
/*
|
|
1
|
+
/* cascivo — Light Theme */
|
|
2
2
|
/* Minimal/sharp, neutral grays, clean lines */
|
|
3
3
|
|
|
4
|
+
/* Self-imports tokens for standalone use; deduped by URL when combined (see ./all.css). */
|
|
4
5
|
@import '@cascivo/tokens';
|
|
5
6
|
|
|
6
|
-
@layer
|
|
7
|
+
@layer cascivo.theme {
|
|
7
8
|
[data-theme='light'],
|
|
8
9
|
:root:not([data-theme]) {
|
|
9
10
|
color-scheme: light;
|
|
@@ -64,6 +65,7 @@
|
|
|
64
65
|
/* Foreground-safe variants: darker for text on light backgrounds (WCAG AA ≥4.5:1) */
|
|
65
66
|
--cascivo-color-success-foreground: oklch(0.45 0.14 145);
|
|
66
67
|
--cascivo-color-warning-foreground: oklch(0.5 0.14 75);
|
|
68
|
+
--cascivo-color-destructive-foreground: oklch(0.448 0.17 22);
|
|
67
69
|
|
|
68
70
|
/* ── Radius — one knob; semantic scale derives in tokens ── */
|
|
69
71
|
--cascivo-radius-base: 0.375rem; /* 6px */
|
package/src/midnight.css
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
/*
|
|
1
|
+
/* cascivo — Midnight Theme */
|
|
2
2
|
/* Premium dark, deep indigo-black, violet accent, soft colored glow */
|
|
3
3
|
|
|
4
4
|
@import '@cascivo/tokens';
|
|
5
5
|
|
|
6
|
-
@layer
|
|
6
|
+
@layer cascivo.theme {
|
|
7
7
|
[data-theme='midnight'] {
|
|
8
8
|
color-scheme: dark;
|
|
9
9
|
|
|
@@ -60,6 +60,7 @@
|
|
|
60
60
|
--cascivo-color-info-subtle: oklch(0.7 0.22 290 / 0.1);
|
|
61
61
|
--cascivo-color-success-foreground: oklch(0.72 0.13 145);
|
|
62
62
|
--cascivo-color-warning-foreground: oklch(0.82 0.13 75);
|
|
63
|
+
--cascivo-color-destructive-foreground: oklch(0.85 0.12 22);
|
|
63
64
|
|
|
64
65
|
/* ── Radius — 10px ───────────────────────────────── */
|
|
65
66
|
--cascivo-radius-base: 0.625rem;
|
package/src/minimal.css
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
/*
|
|
1
|
+
/* cascivo — Minimal Theme */
|
|
2
2
|
/* Very subtle shadows, rounder radius, near-invisible borders, monochrome accent */
|
|
3
3
|
|
|
4
4
|
@import '@cascivo/tokens';
|
|
5
5
|
|
|
6
|
-
@layer
|
|
6
|
+
@layer cascivo.theme {
|
|
7
7
|
[data-theme='minimal'] {
|
|
8
8
|
color-scheme: light;
|
|
9
9
|
|
|
@@ -84,6 +84,7 @@
|
|
|
84
84
|
--cascivo-color-info-subtle: oklch(0.96 0.025 250);
|
|
85
85
|
--cascivo-color-success-foreground: oklch(0.45 0.13 145);
|
|
86
86
|
--cascivo-color-warning-foreground: oklch(0.5 0.12 75);
|
|
87
|
+
--cascivo-color-destructive-foreground: oklch(0.448 0.17 22);
|
|
87
88
|
|
|
88
89
|
--cascivo-radius-component: var(--cascivo-radius-base);
|
|
89
90
|
--cascivo-radius-button: var(--cascivo-radius-base);
|
package/src/pastel.css
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
/*
|
|
1
|
+
/* cascivo — Pastel Theme */
|
|
2
2
|
/* Playful/consumer, soft candy palette, pill controls, diffuse shadows */
|
|
3
3
|
|
|
4
4
|
@import '@cascivo/tokens';
|
|
5
5
|
|
|
6
|
-
@layer
|
|
6
|
+
@layer cascivo.theme {
|
|
7
7
|
[data-theme='pastel'] {
|
|
8
8
|
color-scheme: light;
|
|
9
9
|
|
|
@@ -60,6 +60,7 @@
|
|
|
60
60
|
--cascivo-color-info-subtle: oklch(0.96 0.04 350);
|
|
61
61
|
--cascivo-color-success-foreground: oklch(0.46 0.13 165);
|
|
62
62
|
--cascivo-color-warning-foreground: oklch(0.5 0.13 75);
|
|
63
|
+
--cascivo-color-destructive-foreground: oklch(0.448 0.17 22);
|
|
63
64
|
|
|
64
65
|
/* ── Radius — 16px pill ──────────────────────────── */
|
|
65
66
|
--cascivo-radius-base: 1rem;
|
package/src/terminal.css
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
/*
|
|
1
|
+
/* cascivo — Terminal Theme */
|
|
2
2
|
/* Developer/CLI, phosphor green on near-black, zero radius, green glow */
|
|
3
3
|
|
|
4
4
|
@import '@cascivo/tokens';
|
|
5
5
|
|
|
6
|
-
@layer
|
|
6
|
+
@layer cascivo.theme {
|
|
7
7
|
[data-theme='terminal'] {
|
|
8
8
|
color-scheme: dark;
|
|
9
9
|
|
|
@@ -60,6 +60,7 @@
|
|
|
60
60
|
--cascivo-color-info-subtle: oklch(0.82 0.2 145 / 0.1);
|
|
61
61
|
--cascivo-color-success-foreground: oklch(0.82 0.2 145);
|
|
62
62
|
--cascivo-color-warning-foreground: oklch(0.82 0.16 75);
|
|
63
|
+
--cascivo-color-destructive-foreground: oklch(0.82 0.15 22);
|
|
63
64
|
|
|
64
65
|
/* ── Radius — zero ───────────────────────────────── */
|
|
65
66
|
--cascivo-radius-base: 0;
|
package/src/warm.css
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
/*
|
|
1
|
+
/* cascivo — Warm Theme */
|
|
2
2
|
/* Organic/approachable, warm neutrals, rounded */
|
|
3
3
|
|
|
4
4
|
@import '@cascivo/tokens';
|
|
5
5
|
|
|
6
|
-
@layer
|
|
6
|
+
@layer cascivo.theme {
|
|
7
7
|
[data-theme='warm'] {
|
|
8
8
|
color-scheme: light;
|
|
9
9
|
|
|
@@ -60,6 +60,7 @@
|
|
|
60
60
|
--cascivo-color-info-subtle: var(--cascivo-blue-50);
|
|
61
61
|
--cascivo-color-success-foreground: oklch(0.45 0.14 145);
|
|
62
62
|
--cascivo-color-warning-foreground: oklch(0.5 0.14 75);
|
|
63
|
+
--cascivo-color-destructive-foreground: oklch(0.448 0.17 22);
|
|
63
64
|
|
|
64
65
|
/* ── Radius — one knob, warmer = rounder (8px) ────── */
|
|
65
66
|
--cascivo-radius-base: 0.5rem;
|