zeus-css 1.0.2 → 1.0.4
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 +3 -3
- package/bin/postinstall.js +13 -0
- package/dist/zeus.css +0 -2
- package/dist/zeus.min.css +1 -1
- package/package.json +15 -20
- package/scss/.stylelintrc.json +41 -0
- package/{CHANGELOG.md → scss/CHANGELOG.md} +2 -4
- package/scss/LICENSE +21 -0
- package/scss/README.md +160 -0
- package/scss/dist/zeus.css +8465 -0
- package/scss/dist/zeus.css.map +1 -0
- package/scss/dist/zeus.min.css +1 -0
- package/scss/dist/zeus.min.css.map +1 -0
- package/scss/package.json +89 -0
- package/scss/scripts/gen-cheatsheet.mjs +178 -0
- package/scss/scripts/gen-tokens.mjs +91 -0
- package/scss/scripts/test-compile.mjs +474 -0
- package/dist/zeus.css.map +0 -1
- package/dist/zeus.min.css.map +0 -1
- /package/{API.md → scss/API.md} +0 -0
- /package/{cheatsheet.md → scss/cheatsheet.md} +0 -0
- /package/{llms.txt → scss/llms.txt} +0 -0
package/package.json
CHANGED
|
@@ -1,13 +1,24 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "zeus-css",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.4",
|
|
4
4
|
"description": "⚡ A Premium, Zero-Emission, Fluid-Scaling CSS Framework based on Sass SCSS Engine",
|
|
5
5
|
"author": "Stavros Lazaris",
|
|
6
6
|
"license": "MIT",
|
|
7
|
+
"homepage": "https://www.npmjs.com/package/zeus-css",
|
|
8
|
+
"repository": {
|
|
9
|
+
"type": "git",
|
|
10
|
+
"url": "git+https://github.com/zeus-css/zeus-css-framework.git"
|
|
11
|
+
},
|
|
12
|
+
"bugs": {
|
|
13
|
+
"url": "https://github.com/zeus-css/zeus-css-framework/issues"
|
|
14
|
+
},
|
|
7
15
|
"main": "./dist/zeus.css",
|
|
8
16
|
"style": "./dist/zeus.css",
|
|
9
17
|
"bin": {
|
|
10
|
-
"zeus-css": "bin/init.js"
|
|
18
|
+
"zeus-css": "./bin/init.js"
|
|
19
|
+
},
|
|
20
|
+
"scripts": {
|
|
21
|
+
"postinstall": "node ./bin/postinstall.js"
|
|
11
22
|
},
|
|
12
23
|
"exports": {
|
|
13
24
|
".": {
|
|
@@ -26,27 +37,11 @@
|
|
|
26
37
|
"files": [
|
|
27
38
|
"scss",
|
|
28
39
|
"dist",
|
|
29
|
-
"bin"
|
|
30
|
-
"LICENSE",
|
|
31
|
-
"README.md",
|
|
32
|
-
"CHANGELOG.md",
|
|
33
|
-
"API.md",
|
|
34
|
-
"cheatsheet.md",
|
|
35
|
-
"llms.txt"
|
|
40
|
+
"bin"
|
|
36
41
|
],
|
|
37
|
-
"engines": {
|
|
38
|
-
"node": ">=16"
|
|
39
|
-
},
|
|
40
|
-
"scripts": {
|
|
41
|
-
"build:css": "sass scss/foundation/foundation.scss dist/zeus.css --style=expanded && sass scss/foundation/foundation.scss dist/zeus.min.css --style=compressed",
|
|
42
|
-
"prepack": "npm run build:css"
|
|
43
|
-
},
|
|
44
42
|
"peerDependencies": {
|
|
45
43
|
"sass": "^1.60.0"
|
|
46
44
|
},
|
|
47
|
-
"devDependencies": {
|
|
48
|
-
"sass": "^1.99.0"
|
|
49
|
-
},
|
|
50
45
|
"keywords": [
|
|
51
46
|
"zeus",
|
|
52
47
|
"css",
|
|
@@ -57,4 +52,4 @@
|
|
|
57
52
|
"design-tokens",
|
|
58
53
|
"type-safe"
|
|
59
54
|
]
|
|
60
|
-
}
|
|
55
|
+
}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
{
|
|
2
|
+
"extends": "stylelint-config-standard-scss",
|
|
3
|
+
"ignoreFiles": ["zeus.token.sets.example.scss"],
|
|
4
|
+
"rules": {
|
|
5
|
+
"no-empty-source": null,
|
|
6
|
+
"scss/at-rule-no-unknown": true,
|
|
7
|
+
|
|
8
|
+
"selector-class-pattern": null,
|
|
9
|
+
"custom-property-pattern": null,
|
|
10
|
+
"scss/dollar-variable-pattern": null,
|
|
11
|
+
"scss/at-function-pattern": null,
|
|
12
|
+
|
|
13
|
+
"alpha-value-notation": null,
|
|
14
|
+
"color-function-notation": null,
|
|
15
|
+
"hue-degree-notation": null,
|
|
16
|
+
"value-keyword-case": null,
|
|
17
|
+
|
|
18
|
+
"no-descending-specificity": null,
|
|
19
|
+
"declaration-block-single-line-max-declarations": null,
|
|
20
|
+
"shorthand-property-no-redundant-values": null,
|
|
21
|
+
"font-family-name-quotes": null,
|
|
22
|
+
"property-no-vendor-prefix": null,
|
|
23
|
+
|
|
24
|
+
"scss/at-mixin-argumentless-call-parentheses": null,
|
|
25
|
+
"scss/at-mixin-pattern": null,
|
|
26
|
+
"scss/at-if-closing-brace-newline-after": null,
|
|
27
|
+
"scss/at-if-closing-brace-space-after": null,
|
|
28
|
+
"scss/at-if-no-null": null,
|
|
29
|
+
"scss/at-else-empty-line-before": null,
|
|
30
|
+
"scss/double-slash-comment-empty-line-before": null,
|
|
31
|
+
"scss/double-slash-comment-whitespace-inside": null,
|
|
32
|
+
"scss/dollar-variable-empty-line-before": null,
|
|
33
|
+
"scss/dollar-variable-colon-space-after": null,
|
|
34
|
+
"scss/operator-no-unspaced": null,
|
|
35
|
+
"declaration-empty-line-before": null,
|
|
36
|
+
"rule-empty-line-before": null,
|
|
37
|
+
"at-rule-empty-line-before": null,
|
|
38
|
+
"comment-empty-line-before": null,
|
|
39
|
+
"scss/comment-no-empty": null
|
|
40
|
+
}
|
|
41
|
+
}
|
|
@@ -6,10 +6,8 @@ documented in [`API.md`](API.md).
|
|
|
6
6
|
|
|
7
7
|
## [Unreleased]
|
|
8
8
|
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
public API surface; semver will become binding once `1.0.0` is actually
|
|
12
|
-
published, not before.
|
|
9
|
+
Published to npm as `zeus-css`. [`API.md`](API.md) documents the public API
|
|
10
|
+
surface this changelog's semver contract is now binding against.
|
|
13
11
|
|
|
14
12
|
### Removed (since first written)
|
|
15
13
|
- **Dark mode**, entirely — `$zeus-dark-mode-strategy` and
|
package/scss/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 Stavros Kosmas Lazaris
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
package/scss/README.md
ADDED
|
@@ -0,0 +1,160 @@
|
|
|
1
|
+
# ⚡ Zeus CSS
|
|
2
|
+
|
|
3
|
+
Zeus is a fluid-first SCSS design system. Every size, space, and font size scales
|
|
4
|
+
smoothly between a mobile floor and a desktop ceiling using native CSS
|
|
5
|
+
`clamp()` driven by container-query units (`cqi`) — no breakpoint jumps, no
|
|
6
|
+
`calc()` guesswork. Colors are OKLCH-based semantic tokens with automatic
|
|
7
|
+
light/dark derivation. The whole system is expressed as plain Sass maps, which
|
|
8
|
+
makes it easy for both humans and AI coding assistants to read, extend, and
|
|
9
|
+
reason about.
|
|
10
|
+
|
|
11
|
+
- **Fluid by default** — `clamp()` scaling for spacing, type, radii, borders, icons.
|
|
12
|
+
- **Semantic OKLCH tokens** — define 5 base colors, get light/dark/muted/border variants derived automatically.
|
|
13
|
+
- **Cascade layers** — `reset → tokens → base → layout → components → utilities`, so utility classes always win without `!important`.
|
|
14
|
+
- **Zero-emission module entry** — `@use "zeus" as *` in a component's `.module.scss` gives you every mixin/function with **no** leaked CSS.
|
|
15
|
+
- **Config-first** — every token lives in one file you can override; nothing is hardcoded past that boundary.
|
|
16
|
+
|
|
17
|
+
## Browser support
|
|
18
|
+
|
|
19
|
+
Zeus targets evergreen browsers only — there is no fallback path for the core
|
|
20
|
+
and none is planned. There is no IE11, no legacy Safari, and no polyfill
|
|
21
|
+
story: if you need to support browsers older than ~2023, Zeus is not the
|
|
22
|
+
right choice.
|
|
23
|
+
|
|
24
|
+
**Required (the whole framework depends on these).** Cascade layers
|
|
25
|
+
(`@layer`), container query units (`cqi`, `container-type`), `@property`,
|
|
26
|
+
relative color syntax (`oklch(from …)`), `:has()`, `color-mix()`. All are
|
|
27
|
+
Baseline "Widely available" in current Chrome/Edge, Firefox, and Safari.
|
|
28
|
+
|
|
29
|
+
**Progressive enhancement (a few components use these and degrade if
|
|
30
|
+
absent).** These are *not* uniformly Baseline — check current support for
|
|
31
|
+
your targets rather than assuming:
|
|
32
|
+
|
|
33
|
+
| Feature | Used by | Without it you get |
|
|
34
|
+
| --- | --- | --- |
|
|
35
|
+
| `popover` attribute | `.z-tooltip`, `.z-dropdown`, `.z-toast-region` | No top-layer rendering or light-dismiss — these three need it to function; verify support before relying on them |
|
|
36
|
+
| CSS anchor positioning (`position-anchor`, `position-area`) | `.z-tooltip`, `.z-dropdown` | Still a fully working popover, just placed by the UA default instead of anchored to its trigger |
|
|
37
|
+
| `@starting-style`, `transition-behavior: allow-discrete` | `.z-tooltip`, `.z-dropdown` enter/exit | Instant show/hide instead of a fade — purely cosmetic |
|
|
38
|
+
|
|
39
|
+
Anchor positioning has the narrowest support of the three (Chromium shipped
|
|
40
|
+
it well ahead of the other engines). The components are written so its
|
|
41
|
+
absence costs placement, never functionality.
|
|
42
|
+
|
|
43
|
+
## Install
|
|
44
|
+
|
|
45
|
+
```bash
|
|
46
|
+
npm install zeus-css
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
## Two entry points
|
|
50
|
+
|
|
51
|
+
Zeus ships two distinct ways to consume it — pick the right one per file.
|
|
52
|
+
|
|
53
|
+
### 1. Global stylesheet — `foundation`
|
|
54
|
+
|
|
55
|
+
Import **once**, at your app root. Emits the full compiled CSS: reset, design
|
|
56
|
+
tokens as CSS custom properties, typography base, and every utility class
|
|
57
|
+
(`.padding-lg`, `.text-h1`, `.grid-cols-3`, …).
|
|
58
|
+
|
|
59
|
+
```scss
|
|
60
|
+
// app/globals.scss
|
|
61
|
+
@use "zeus-css/foundation";
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
### 2. Component modules — `zeus`
|
|
65
|
+
|
|
66
|
+
Import in **every** `.module.scss` component file. Exposes all mixins and
|
|
67
|
+
functions (`@include padding(...)`, `@include text(...)`, `color(...)`, …) but
|
|
68
|
+
emits **zero** CSS of its own — only the rules you actually write.
|
|
69
|
+
|
|
70
|
+
```scss
|
|
71
|
+
// Button.module.scss
|
|
72
|
+
@use "zeus-css/zeus" as *;
|
|
73
|
+
|
|
74
|
+
.button {
|
|
75
|
+
@include padding("md", "x");
|
|
76
|
+
@include text("button");
|
|
77
|
+
@include border-radius("sm");
|
|
78
|
+
background: color("primary");
|
|
79
|
+
color: var(--color-text-inverse);
|
|
80
|
+
|
|
81
|
+
&:hover {
|
|
82
|
+
background: color("primary-dark");
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
```
|
|
86
|
+
|
|
87
|
+
## 5-minute quickstart
|
|
88
|
+
|
|
89
|
+
```scss
|
|
90
|
+
// 1. app/globals.scss — load the framework once
|
|
91
|
+
@use "zeus-css/foundation";
|
|
92
|
+
```
|
|
93
|
+
|
|
94
|
+
```tsx
|
|
95
|
+
// 2. app/layout.tsx — import the global stylesheet
|
|
96
|
+
import "./globals.scss";
|
|
97
|
+
```
|
|
98
|
+
|
|
99
|
+
```scss
|
|
100
|
+
// 3. components/Card.module.scss — build a component with the API
|
|
101
|
+
@use "zeus-css/zeus" as *;
|
|
102
|
+
|
|
103
|
+
.card {
|
|
104
|
+
@include padding("lg");
|
|
105
|
+
@include border-radius("md");
|
|
106
|
+
@include card-shadow();
|
|
107
|
+
background: var(--color-surface);
|
|
108
|
+
border: var(--border-line-xs) solid var(--color-border);
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
.title {
|
|
112
|
+
@include text("h4");
|
|
113
|
+
color: var(--color-text);
|
|
114
|
+
}
|
|
115
|
+
```
|
|
116
|
+
|
|
117
|
+
```tsx
|
|
118
|
+
// components/Card.tsx
|
|
119
|
+
import styles from "./Card.module.scss";
|
|
120
|
+
|
|
121
|
+
export function Card({ children }: { children: React.ReactNode }) {
|
|
122
|
+
return <div className={styles.card}>{children}</div>;
|
|
123
|
+
}
|
|
124
|
+
```
|
|
125
|
+
|
|
126
|
+
That's it — no build config, no PostCSS plugin. Zeus compiles with any
|
|
127
|
+
standard Dart Sass pipeline (Next.js, Vite, webpack `sass-loader`, or the
|
|
128
|
+
`sass` CLI directly).
|
|
129
|
+
|
|
130
|
+
## Theming your brand
|
|
131
|
+
|
|
132
|
+
Every visual token — colors, typography, spacing, radii, shadows, breakpoints
|
|
133
|
+
— lives in **one file**: `zeus.customize.scss`. Copy the keys you want to
|
|
134
|
+
override from `zeus.token.sets.example.scss` (a reference-only file, never
|
|
135
|
+
imported) into your own `zeus.customize.scss` before the `@use` chain resolves.
|
|
136
|
+
|
|
137
|
+
```scss
|
|
138
|
+
// zeus.customize.scss
|
|
139
|
+
$zeus-colors: (
|
|
140
|
+
"primary": oklch(60% 0.2 250),
|
|
141
|
+
"primary-light": oklch(75% 0.15 250),
|
|
142
|
+
"primary-dark": oklch(45% 0.25 250),
|
|
143
|
+
// ...
|
|
144
|
+
);
|
|
145
|
+
```
|
|
146
|
+
|
|
147
|
+
Layout/engine behavior (prefixing, responsive strategy, fluid viewport bounds)
|
|
148
|
+
lives in `zeus.config.scss` — separate from design tokens on purpose, so
|
|
149
|
+
brand changes and structural changes never collide in the same diff.
|
|
150
|
+
|
|
151
|
+
## Learn more
|
|
152
|
+
|
|
153
|
+
- `zeus.token.sets.example.scss` — full reference of every default token value.
|
|
154
|
+
- `CHANGELOG.md` — what changed between versions.
|
|
155
|
+
- The framework's docs site (component gallery, `/tokens-reference`, full API
|
|
156
|
+
reference) already exists in this monorepo — see `API.md` §6.
|
|
157
|
+
|
|
158
|
+
## License
|
|
159
|
+
|
|
160
|
+
MIT © Stavros Kosmas Lazaris
|