@splendidlabz/styles 4.10.1 → 4.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 +86 -0
- package/package.json +12 -6
- package/src/base.css +15 -0
- package/src/components/astro/fancylist.css +22 -24
- package/src/components/bundle-astro.css +7 -0
- package/src/components/bundle-svelte.css +7 -0
- package/src/components/css/button.css +40 -0
- package/src/{form → components/css/forms}/index.css +0 -1
- package/src/components/css/index.css +2 -0
- package/src/components/css/typography/font-position.css +16 -0
- package/src/effects/bundle.css +5 -0
- package/src/effects/index.css +2 -1
- package/src/generic/anchors-and-buttons.css +3 -40
- package/src/generic/form.css +11 -0
- package/src/layouts/bundle.css +5 -0
- package/src/layouts/index.css +1 -1
- package/src/styles.css +9 -6
- package/src/theming.css +7 -0
- package/src/tools/interact.css +8 -15
- package/src/tools/object.css +6 -1
- package/src/tools/outlines.css +16 -21
- package/src/tools/pigment.css +11 -15
- package/src/tools/scaffolds.css +16 -5
- package/src/tools/transitions.css +5 -4
- package/src/utilities.css +11 -0
- package/src/variables/variables.css +2 -2
- package/dist/no-tw/layouts.css +0 -1895
- package/dist/no-tw/styles.css +0 -3094
- package/src/effects/testgb.css +0 -372
- package/src/form/textarea.css +0 -38
- package/src/type/font-position.css +0 -18
- /package/src/{form → components/css/forms}/checkbox-and-radio.css +0 -0
- /package/src/{form → components/css/forms}/input.css +0 -0
- /package/src/{form → components/css/forms}/select.css +0 -0
- /package/src/{type → components/css/typography}/font.css +0 -0
- /package/src/{type → components/css/typography}/index.css +0 -0
- /package/src/{type → components/css/typography}/text-edge.css +0 -0
- /package/src/{type → components/css/typography}/text-relative.css +0 -0
- /package/src/{animation → effects/animation}/animation.css +0 -0
- /package/src/{animation → effects/animation}/fly.css +0 -0
- /package/src/{animation → effects/animation}/index.css +0 -0
- /package/src/{transitions → effects/transitions}/index.css +0 -0
- /package/src/{transitions → effects/transitions}/starting-style.css +0 -0
package/README.md
ADDED
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
# @splendidlabz/styles
|
|
2
|
+
|
|
3
|
+
Splendid Labz styles for Tailwind CSS v4.
|
|
4
|
+
|
|
5
|
+
## Install
|
|
6
|
+
|
|
7
|
+
```bash
|
|
8
|
+
npm install @splendidlabz/styles
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
## The quickest way — everything
|
|
12
|
+
|
|
13
|
+
```css
|
|
14
|
+
@import 'tailwindcss';
|
|
15
|
+
@import '@splendidlabz/styles';
|
|
16
|
+
```
|
|
17
|
+
|
|
18
|
+
That's the whole system: reset, theme, styled HTML, utilities, and the CSS components (`prose`, `card`, `table`, and friends). Tailwind tree-shakes whatever you don't use, so most projects want this and nothing else.
|
|
19
|
+
|
|
20
|
+
## Keep your own reset — just the classes
|
|
21
|
+
|
|
22
|
+
Already have your own reset and base styles? Take Splendid's utilities and components without letting it touch your HTML:
|
|
23
|
+
|
|
24
|
+
```css
|
|
25
|
+
@import 'tailwindcss';
|
|
26
|
+
@import '@splendidlabz/styles/utilities';
|
|
27
|
+
@import '@splendidlabz/styles/components/css';
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
`utilities` is the same utility classes as above with no reset and no element styling. `components/css` adds the opt-in component classes. Nothing renders differently until you reach for a class.
|
|
31
|
+
|
|
32
|
+
## Using Splendid's Astro or Svelte components
|
|
33
|
+
|
|
34
|
+
If you're pulling in components from `@splendidlabz/astro` or `@splendidlabz/svelte`, there are two extra things to wire up:
|
|
35
|
+
|
|
36
|
+
```css
|
|
37
|
+
/* 1. Point Tailwind at the packages so it scans their class names —
|
|
38
|
+
they live in node_modules, which Tailwind skips by default. */
|
|
39
|
+
@source "../node_modules/@splendidlabz/astro";
|
|
40
|
+
@source "../node_modules/@splendidlabz/svelte";
|
|
41
|
+
|
|
42
|
+
@import 'tailwindcss';
|
|
43
|
+
|
|
44
|
+
/* 2. A base + the framework component styles. */
|
|
45
|
+
@import '@splendidlabz/styles/base';
|
|
46
|
+
@import '@splendidlabz/styles/components/astro'; /* or /components/svelte */
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
Use `base`, not the full `@splendidlabz/styles`. The full import already carries the CSS components, and `/components/astro` brings them along too — so pairing them gives you two copies. `base` is the reset and styling *without* the components, and the framework layer fills them in once.
|
|
50
|
+
|
|
51
|
+
## Without Tailwind's preflight
|
|
52
|
+
|
|
53
|
+
Splendid ships its own reset, so you can drop Tailwind's. Import Tailwind's theme and utilities on their own instead of the whole thing, and set the layer order so Splendid's reset lands first:
|
|
54
|
+
|
|
55
|
+
```css
|
|
56
|
+
@layer reset, theme, base, components, utilities;
|
|
57
|
+
|
|
58
|
+
@import 'tailwindcss/theme.css' layer(theme);
|
|
59
|
+
@import 'tailwindcss/utilities.css' layer(utilities);
|
|
60
|
+
|
|
61
|
+
@import '@splendidlabz/styles';
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
Everything else works the same — this just replaces `@import 'tailwindcss'`.
|
|
65
|
+
|
|
66
|
+
## Two things that'll bite you
|
|
67
|
+
|
|
68
|
+
- **One base at a time.** `@splendidlabz/styles`, `base`, and `utilities` all overlap. Import two of them and you get two copies of the shared parts — Tailwind v4 doesn't merge repeated imports. Pick one.
|
|
69
|
+
- **Component layers need a base under them.** `components/css`, `components/astro`, and `components/svelte` can't stand alone — on their own they have nothing to resolve against and the build fails. Any of the three bases covers them; import order doesn't matter.
|
|
70
|
+
|
|
71
|
+
## Every entry point
|
|
72
|
+
|
|
73
|
+
| Import | What you get |
|
|
74
|
+
| ---------------------- | ---------------------------------------------------------- |
|
|
75
|
+
| `@splendidlabz/styles` | Everything — reset, styled HTML, utilities, CSS components |
|
|
76
|
+
| `…/base` | Reset, styled HTML, utilities — no components |
|
|
77
|
+
| `…/utilities` | Utilities only — leaves your HTML alone |
|
|
78
|
+
| `…/components/css` | CSS component classes (`prose`, `card`, …) |
|
|
79
|
+
| `…/components/astro` | Astro component styles (includes CSS components) |
|
|
80
|
+
| `…/components/svelte` | Svelte component styles (includes CSS components) |
|
|
81
|
+
| `…/components` | All component styles — css, astro, svelte |
|
|
82
|
+
| `…/layouts` | Layout utilities (already in every base) |
|
|
83
|
+
| `…/effects` | Effects, animation, transitions (already in every base) |
|
|
84
|
+
| `…/tools` | The `@apply` / `@variant` helpers |
|
|
85
|
+
| `…/theming` | `@theme` tokens plus color/pigment |
|
|
86
|
+
| `…/variables` | `@theme` tokens on their own |
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@splendidlabz/styles",
|
|
3
|
-
"version": "4.
|
|
3
|
+
"version": "4.12.0",
|
|
4
4
|
"description": "",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"homepage": "https://splendidlabz.com/docs/styles",
|
|
@@ -12,18 +12,24 @@
|
|
|
12
12
|
],
|
|
13
13
|
"exports": {
|
|
14
14
|
".": "./src/styles.css",
|
|
15
|
+
"./base": "./src/base.css",
|
|
16
|
+
"./utilities": "./src/utilities.css",
|
|
17
|
+
"./tools": "./src/tools/index.css",
|
|
18
|
+
"./layouts": "./src/layouts/bundle.css",
|
|
19
|
+
"./effects": "./src/effects/bundle.css",
|
|
20
|
+
"./variables": "./src/variables/index.css",
|
|
21
|
+
"./theming": "./src/theming.css",
|
|
15
22
|
"./components": "./src/components/index.css",
|
|
16
|
-
"./
|
|
23
|
+
"./components/css": "./src/components/css/index.css",
|
|
24
|
+
"./components/astro": "./src/components/bundle-astro.css",
|
|
25
|
+
"./components/svelte": "./src/components/bundle-svelte.css",
|
|
17
26
|
"./pigment": "./src/tools/pigment.css",
|
|
18
27
|
"./scripts": "./scripts/index.js",
|
|
19
28
|
"./scripts/*": "./scripts/*.js"
|
|
20
29
|
},
|
|
21
30
|
"scripts": {
|
|
22
31
|
"lint": "stylelint '**/*.{css,scss}' --fix",
|
|
23
|
-
"lightning": "lightningcss --bundle --targets \">= 0.25%\" ./src/styles.css -o dist/styles.css"
|
|
24
|
-
"build-styles": "npx @tailwindcss/cli -i ./no-tailwind/index.css -o ./dist/no-tw/styles.css",
|
|
25
|
-
"build-layouts": "npx @tailwindcss/cli -i ./no-tailwind/layouts.css -o ./dist/no-tw/layouts.css",
|
|
26
|
-
"build": "npm run build-styles & npm run build-layouts"
|
|
32
|
+
"lightning": "lightningcss --bundle --targets \">= 0.25%\" ./src/styles.css -o dist/styles.css"
|
|
27
33
|
},
|
|
28
34
|
"dependencies": {
|
|
29
35
|
"@splendidlabz/utils": "*"
|
package/src/base.css
ADDED
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/* Opinionated foundation: everything except the CSS/framework components.
|
|
2
|
+
Restyles bare HTML (reset + generic) and registers every utility group
|
|
3
|
+
(tools, layouts, effects), all tree-shaken. This is the foundation that
|
|
4
|
+
powers `base + components/*`. Use base OR utilities, never both. */
|
|
5
|
+
|
|
6
|
+
@import './tools/index.css';
|
|
7
|
+
/* button is a @utility (foundation-level): generic @applies it to bare
|
|
8
|
+
<button>, and framework components @apply button-icon. */
|
|
9
|
+
@import './components/css/button.css';
|
|
10
|
+
@import './reset.css' layer(reset);
|
|
11
|
+
@import './layout-reset.css' layer(reset);
|
|
12
|
+
@import './variables/index.css';
|
|
13
|
+
@import './generic/index.css';
|
|
14
|
+
@import './layouts/index.css';
|
|
15
|
+
@import './effects/index.css';
|
|
@@ -1,33 +1,31 @@
|
|
|
1
1
|
@utility fancylist {
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
display: grid;
|
|
2
|
+
--svg-width: 1em;
|
|
3
|
+
--svg-height: 1lh;
|
|
4
|
+
display: grid;
|
|
6
5
|
|
|
7
|
-
|
|
8
|
-
|
|
6
|
+
/* grid-template-columns: auto 1fr; */
|
|
7
|
+
column-gap: 0.5em;
|
|
9
8
|
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
9
|
+
:where(li) {
|
|
10
|
+
grid-column: 1 / -1;
|
|
11
|
+
display: grid;
|
|
13
12
|
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
13
|
+
/* grid-template-columns: subgrid; */
|
|
14
|
+
grid-template-columns: auto 1fr;
|
|
15
|
+
column-gap: inherit;
|
|
17
16
|
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
17
|
+
/* Positions the Emoji */
|
|
18
|
+
/* This is kind of brute-forced at the moment. */
|
|
19
|
+
:where(.emoji),
|
|
20
|
+
> :where(astro-slot, astro-island) > :where(.emoji) {
|
|
21
|
+
font-size: 0.75em;
|
|
22
|
+
line-height: 1lh;
|
|
23
|
+
}
|
|
25
24
|
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
}
|
|
25
|
+
:where(ul) {
|
|
26
|
+
grid-column: 2;
|
|
27
|
+
display: grid;
|
|
28
|
+
column-gap: inherit;
|
|
31
29
|
}
|
|
32
30
|
}
|
|
33
31
|
}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/* Astro component styles + the CSS components they @apply (prose, etc.).
|
|
2
|
+
Pure layer — no tools/layouts/button. Import a foundation first
|
|
3
|
+
(base or utilities), or these @applies won't resolve. Astro class names may
|
|
4
|
+
clash with common component names — opt in deliberately. */
|
|
5
|
+
|
|
6
|
+
@import './css/index.css';
|
|
7
|
+
@import './astro/index.css';
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/* Svelte component styles + the CSS components they @apply (prose, button-icon).
|
|
2
|
+
Pure layer — no tools/layouts/button. Import a foundation first
|
|
3
|
+
(base or utilities), or these @applies won't resolve. Svelte class names may
|
|
4
|
+
clash with common component names — opt in deliberately. */
|
|
5
|
+
|
|
6
|
+
@import './css/index.css';
|
|
7
|
+
@import './svelte/index.css';
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
@utility button {
|
|
2
|
+
& {
|
|
3
|
+
@apply pigment-with-svg;
|
|
4
|
+
flex-shrink: 0; /* Prevents button from shrinking when used in flex elements */
|
|
5
|
+
display: inline-flex;
|
|
6
|
+
justify-content: center;
|
|
7
|
+
align-items: center;
|
|
8
|
+
gap: 0.5em;
|
|
9
|
+
max-width: 100%;
|
|
10
|
+
padding: 0.125lh 0.75lh;
|
|
11
|
+
font: inherit;
|
|
12
|
+
text-decoration-line: none !important;
|
|
13
|
+
|
|
14
|
+
&[disabled] {
|
|
15
|
+
cursor: default;
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
* {
|
|
19
|
+
pointer-events: none;
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
svg path {
|
|
23
|
+
@apply transition-scaffold;
|
|
24
|
+
transition: var(--transition-values);
|
|
25
|
+
transition-property: var(--transition-props);
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
@utility button-icon {
|
|
31
|
+
& {
|
|
32
|
+
padding: 0.5em;
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
@utility button-round {
|
|
37
|
+
& {
|
|
38
|
+
border-radius: 50%;
|
|
39
|
+
}
|
|
40
|
+
}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/* --font-position-adjust: 1;
|
|
2
|
+
--padding-block: 1em; */
|
|
3
|
+
|
|
4
|
+
@utility font-position {
|
|
5
|
+
> .font-position-adjust,
|
|
6
|
+
&:not(:has(.font-position-adjust)) {
|
|
7
|
+
padding-block: calc(
|
|
8
|
+
var(--padding-block, 1em) * var(--font-position-adjust, 1)
|
|
9
|
+
)
|
|
10
|
+
calc(var(--padding-block, 1em) / var(--font-position-adjust, 1));
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
&:has(.font-position-adjust) {
|
|
14
|
+
padding-block: 0;
|
|
15
|
+
}
|
|
16
|
+
}
|
package/src/effects/index.css
CHANGED
|
@@ -1,8 +1,9 @@
|
|
|
1
|
+
@import './animation/index.css';
|
|
2
|
+
@import './transitions/index.css';
|
|
1
3
|
@import './elevation.css';
|
|
2
4
|
@import './gradients.css';
|
|
3
5
|
@import './fancybox.css';
|
|
4
6
|
@import './bezel.css';
|
|
5
|
-
@import './testgb.css';
|
|
6
7
|
@import './highlight.css';
|
|
7
8
|
@import './shadows.css';
|
|
8
9
|
@import './text.css';
|
|
@@ -1,43 +1,6 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
flex-shrink: 0; /* Prevents button from shrinking when used in flex elements */
|
|
5
|
-
display: inline-flex;
|
|
6
|
-
justify-content: center;
|
|
7
|
-
align-items: center;
|
|
8
|
-
gap: 0.5em;
|
|
9
|
-
max-width: 100%;
|
|
10
|
-
padding: 0.125lh 0.75lh;
|
|
11
|
-
font: inherit;
|
|
12
|
-
text-decoration-line: none !important;
|
|
13
|
-
|
|
14
|
-
&[disabled] {
|
|
15
|
-
cursor: default;
|
|
16
|
-
}
|
|
17
|
-
|
|
18
|
-
* {
|
|
19
|
-
pointer-events: none;
|
|
20
|
-
}
|
|
21
|
-
|
|
22
|
-
svg path {
|
|
23
|
-
@apply transition-scaffold;
|
|
24
|
-
transition: var(--transition-values);
|
|
25
|
-
transition-property: var(--transition-props);
|
|
26
|
-
}
|
|
27
|
-
}
|
|
28
|
-
}
|
|
29
|
-
|
|
30
|
-
@utility button-icon {
|
|
31
|
-
& {
|
|
32
|
-
padding: 0.5em;
|
|
33
|
-
}
|
|
34
|
-
}
|
|
35
|
-
|
|
36
|
-
@utility button-round {
|
|
37
|
-
& {
|
|
38
|
-
border-radius: 50%;
|
|
39
|
-
}
|
|
40
|
-
}
|
|
1
|
+
/* button / button-icon / button-round utilities live in components/css/button.css.
|
|
2
|
+
The base layer below `@apply`s `button`; whichever bundle includes this file
|
|
3
|
+
must also register button.css (styles.css via components/css, base.css directly). */
|
|
41
4
|
|
|
42
5
|
@layer base {
|
|
43
6
|
a {
|
package/src/generic/form.css
CHANGED
|
@@ -1,8 +1,19 @@
|
|
|
1
|
+
@theme {
|
|
2
|
+
--textarea-height: 6lh;
|
|
3
|
+
}
|
|
4
|
+
|
|
1
5
|
@layer base {
|
|
2
6
|
fieldset {
|
|
3
7
|
border: none;
|
|
4
8
|
}
|
|
5
9
|
|
|
10
|
+
textarea {
|
|
11
|
+
min-height: var(--textarea-height);
|
|
12
|
+
resize: vertical;
|
|
13
|
+
/* stylelint-disable-next-line */
|
|
14
|
+
field-sizing: normal; /* Allows textarea to auto */
|
|
15
|
+
}
|
|
16
|
+
|
|
6
17
|
/* Text inputs */
|
|
7
18
|
input:where(
|
|
8
19
|
[type='text'],
|
package/src/layouts/index.css
CHANGED
package/src/styles.css
CHANGED
|
@@ -1,17 +1,20 @@
|
|
|
1
1
|
/* Splendid Styles */
|
|
2
2
|
|
|
3
|
+
/* Canonical full bundle = the base foundation + CSS components. tools/layouts/
|
|
4
|
+
effects/button are registered once here; the pure component bodies below do
|
|
5
|
+
not re-import them. Don't compose this file from base.css + components (base
|
|
6
|
+
also imports button — that would duplicate it). For framework components on
|
|
7
|
+
top of everything, use `base + components/astro`, not this bundle. */
|
|
8
|
+
|
|
9
|
+
@import './tools/index.css';
|
|
10
|
+
@import './components/css/button.css';
|
|
3
11
|
@import './reset.css' layer(reset);
|
|
4
12
|
@import './layout-reset.css' layer(reset);
|
|
5
13
|
@import './variables/index.css';
|
|
6
|
-
@import './tools/index.css';
|
|
7
14
|
@import './generic/index.css';
|
|
8
|
-
@import './form/index.css';
|
|
9
|
-
@import './components/css/index.css';
|
|
10
15
|
@import './layouts/index.css';
|
|
11
|
-
@import './type/index.css';
|
|
12
16
|
@import './effects/index.css';
|
|
13
|
-
@import './
|
|
14
|
-
@import './animation/index.css';
|
|
17
|
+
@import './components/css/index.css';
|
|
15
18
|
|
|
16
19
|
/* Addons */
|
|
17
20
|
/* @import './components/index.css'; */
|
package/src/theming.css
ADDED
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/* Theming layer: the @theme design tokens plus the tools that produce/consume
|
|
2
|
+
them (color, pigment, scaffolds). Full tools is included because pigment
|
|
3
|
+
@applies transition-scaffold / border-scaffold from sibling tool files.
|
|
4
|
+
No reset or generic element styling — safe to drop into an existing project. */
|
|
5
|
+
|
|
6
|
+
@import './variables/index.css';
|
|
7
|
+
@import './tools/index.css';
|
package/src/tools/interact.css
CHANGED
|
@@ -14,22 +14,15 @@
|
|
|
14
14
|
|
|
15
15
|
@custom-variant interact-within {
|
|
16
16
|
&:hover,
|
|
17
|
-
&:focus-
|
|
18
|
-
&.selected,
|
|
19
|
-
&.checked,
|
|
20
|
-
&[aria-current],
|
|
21
|
-
&[aria-selected='true'],
|
|
22
|
-
&[aria-pressed='true'],
|
|
23
|
-
&[aria-expanded='true'],
|
|
24
|
-
&:has(:focus-visible),
|
|
17
|
+
&:focus-within,
|
|
25
18
|
&:has(
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
19
|
+
.selected,
|
|
20
|
+
.checked,
|
|
21
|
+
[aria-current],
|
|
22
|
+
[aria-selected='true'],
|
|
23
|
+
[aria-pressed='true'],
|
|
24
|
+
[aria-expanded='true']
|
|
25
|
+
) {
|
|
33
26
|
@slot;
|
|
34
27
|
}
|
|
35
28
|
}
|
package/src/tools/object.css
CHANGED
|
@@ -1,5 +1,10 @@
|
|
|
1
|
-
/*
|
|
1
|
+
/* Pins an image to fill and cover its positioned parent, so the parent's
|
|
2
|
+
content sets the height. Width/height are needed for object-fit to work in
|
|
3
|
+
Safari: https://stackoverflow.com/questions/60192601/object-fit-cover-not-working-correctly-on-safari */
|
|
2
4
|
@utility object-background {
|
|
5
|
+
position: absolute;
|
|
6
|
+
z-index: -1;
|
|
7
|
+
inset: 0;
|
|
3
8
|
width: 100%;
|
|
4
9
|
height: 100%;
|
|
5
10
|
object-fit: cover;
|
package/src/tools/outlines.css
CHANGED
|
@@ -4,29 +4,26 @@
|
|
|
4
4
|
*********************/
|
|
5
5
|
|
|
6
6
|
@utility outline-scaffold {
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
outline-offset: var(--outline-offset);
|
|
7
|
+
outline: var(--outline-width) var(--outline-style)
|
|
8
|
+
var(--outline-color, transparent);
|
|
9
|
+
outline-offset: var(--outline-offset);
|
|
11
10
|
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
}
|
|
11
|
+
&:focus-visible {
|
|
12
|
+
outline-color: var(--outline-focus-color);
|
|
15
13
|
}
|
|
16
14
|
}
|
|
17
15
|
|
|
18
16
|
@utility focus-within {
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
outline-offset: var(--outline-offset);
|
|
17
|
+
outline: var(--outline-width) var(--outline-style) transparent;
|
|
18
|
+
outline-offset: var(--outline-offset);
|
|
22
19
|
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
20
|
+
&:focus-within {
|
|
21
|
+
outline-color: var(--outline-focus-color);
|
|
22
|
+
}
|
|
26
23
|
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
24
|
+
/* Removes all outlines within the element */
|
|
25
|
+
* {
|
|
26
|
+
--outline-focus-color: transparent;
|
|
30
27
|
}
|
|
31
28
|
}
|
|
32
29
|
|
|
@@ -37,9 +34,7 @@
|
|
|
37
34
|
- content-box is necessary, if not present, box will be cut on the right side
|
|
38
35
|
*********************/
|
|
39
36
|
@utility preserve-outlines {
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
padding: calc(var(--outline-width));
|
|
44
|
-
}
|
|
37
|
+
box-sizing: content-box;
|
|
38
|
+
margin: calc(var(--outline-width) * -1);
|
|
39
|
+
padding: calc(var(--outline-width));
|
|
45
40
|
}
|
package/src/tools/pigment.css
CHANGED
|
@@ -30,27 +30,23 @@ Usage with the Fill System
|
|
|
30
30
|
* Pigment scaffolds *
|
|
31
31
|
*********************/
|
|
32
32
|
@utility pigment-scaffold {
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
background: var(--_bgc);
|
|
41
|
-
}
|
|
33
|
+
@apply transition-scaffold;
|
|
34
|
+
--_bgc: var(--bg-color);
|
|
35
|
+
--_tc: var(--text-color, currentcolor);
|
|
36
|
+
--_bc: var(--border-color, currentcolor);
|
|
37
|
+
border-color: var(--_bc, currentcolor);
|
|
38
|
+
color: var(--_tc);
|
|
39
|
+
background: var(--_bgc);
|
|
42
40
|
}
|
|
43
41
|
|
|
44
42
|
@utility pigment-svg-scaffold {
|
|
45
43
|
--_fc: var(--fill-color);
|
|
46
44
|
--_sc: var(--stroke-color, var(--text-color, currentcolor));
|
|
47
45
|
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
stroke: var(--_sc, currentcolor);
|
|
53
|
-
}
|
|
46
|
+
:where(svg path) {
|
|
47
|
+
@apply transition-scaffold;
|
|
48
|
+
fill: var(--_fc, revert-layer);
|
|
49
|
+
stroke: var(--_sc, currentcolor);
|
|
54
50
|
}
|
|
55
51
|
}
|
|
56
52
|
|
package/src/tools/scaffolds.css
CHANGED
|
@@ -17,11 +17,14 @@
|
|
|
17
17
|
border-radius: var(--radius);
|
|
18
18
|
}
|
|
19
19
|
|
|
20
|
-
@utility
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
}
|
|
24
|
-
|
|
20
|
+
/* @utility border-* {
|
|
21
|
+
border-width: --spacing(--value(number));
|
|
22
|
+
border-width: --value([length]);
|
|
23
|
+
} */
|
|
24
|
+
|
|
25
|
+
/*********************
|
|
26
|
+
* Rounded *
|
|
27
|
+
*********************/
|
|
25
28
|
@utility rounded-* {
|
|
26
29
|
border-radius: --spacing(--value(number));
|
|
27
30
|
}
|
|
@@ -117,3 +120,11 @@
|
|
|
117
120
|
border-bottom-right-radius: --spacing(--value(integer));
|
|
118
121
|
}
|
|
119
122
|
}
|
|
123
|
+
|
|
124
|
+
/*********************
|
|
125
|
+
* Radius *
|
|
126
|
+
*********************/
|
|
127
|
+
@utility radius-* {
|
|
128
|
+
--radius: --value([length]);
|
|
129
|
+
--radius: --spacing(--value(number));
|
|
130
|
+
}
|
|
@@ -11,7 +11,7 @@
|
|
|
11
11
|
--transition-values: var(--transition-duration) var(--transition-delay)
|
|
12
12
|
var(--transition-easing);
|
|
13
13
|
--transition-props:
|
|
14
|
-
background, border-color, color,
|
|
14
|
+
background-color, border-color, color, fill, stroke, opacity, outline,
|
|
15
15
|
transform, translate, scale, rotate, skew, perspective;
|
|
16
16
|
transition: var(--transition-values);
|
|
17
17
|
transition-property: var(--transition-props);
|
|
@@ -20,9 +20,10 @@
|
|
|
20
20
|
@utility transition-scaffold-extended {
|
|
21
21
|
@apply transition-scaffold;
|
|
22
22
|
--transition-props:
|
|
23
|
-
backdrop-filter, background, border-color, color, display, fill,
|
|
24
|
-
gap, opacity, outline, overlay, stroke, transform, translate, scale,
|
|
25
|
-
skew, perspective;
|
|
23
|
+
backdrop-filter, background-color, border-color, color, display, fill,
|
|
24
|
+
filter, gap, opacity, outline, overlay, stroke, transform, translate, scale,
|
|
25
|
+
rotate, skew, perspective;
|
|
26
|
+
transition-behavior: allow-discrete;
|
|
26
27
|
}
|
|
27
28
|
|
|
28
29
|
@utility transition-svg {
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/* Un-opinionated foundation: every utility group (tools, layouts, effects)
|
|
2
|
+
with no reset or bare-HTML restyle. Same build primitives as base, minus the
|
|
3
|
+
opinionated element styling — powers `utilities + components/*`. Unused
|
|
4
|
+
utilities are tree-shaken. Use base OR utilities, never both. */
|
|
5
|
+
|
|
6
|
+
@import './tools/index.css';
|
|
7
|
+
@import './layouts/index.css';
|
|
8
|
+
@import './effects/index.css';
|
|
9
|
+
/* button is a @utility (foundation-level) so framework components layered on
|
|
10
|
+
this foundation can @apply button-icon. */
|
|
11
|
+
@import './components/css/button.css';
|
|
@@ -10,7 +10,7 @@
|
|
|
10
10
|
--border-width: 1px;
|
|
11
11
|
--border-style: solid;
|
|
12
12
|
--border-color: currentcolor;
|
|
13
|
-
--radius:
|
|
13
|
+
--radius: calc(var(--spacing) * 2);
|
|
14
14
|
|
|
15
15
|
/* Outline */
|
|
16
16
|
--outline-width: 2px;
|
|
@@ -21,7 +21,7 @@
|
|
|
21
21
|
/* Transition */
|
|
22
22
|
--transition-duration: 200ms;
|
|
23
23
|
--transition-delay: 0ms;
|
|
24
|
-
--transition-easing: ease-
|
|
24
|
+
--transition-easing: ease-out;
|
|
25
25
|
|
|
26
26
|
/* Forms */
|
|
27
27
|
--input-font: inherit;
|