@codenhub/styles 0.6.0 → 0.7.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/NOTICE +18 -16
- package/README.es.md +61 -0
- package/README.md +21 -16
- package/README.pt-BR.md +61 -0
- package/dist/aesthetics/chunky-tile.css +1 -1
- package/dist/aesthetics/cyber.css +1 -1
- package/dist/aesthetics/glass.css +1 -1
- package/dist/aesthetics/index.css +2 -2
- package/dist/aesthetics/neobrutalism.css +1 -1
- package/dist/aesthetics/pixel.css +1 -1
- package/dist/aesthetics/sketch.css +1 -1
- package/dist/components.css +2 -2
- package/dist/index.css +2 -2
- package/dist/native.css +2 -2
- package/dist/palette.css +1 -1
- package/dist/theme.css +2 -2
- package/dist/tw/aesthetics/chunky-tile.css +81 -23
- package/dist/tw/aesthetics/cyber.css +86 -29
- package/dist/tw/aesthetics/glass.css +177 -50
- package/dist/tw/aesthetics/neobrutalism.css +98 -22
- package/dist/tw/aesthetics/pixel.css +93 -8
- package/dist/tw/aesthetics/sketch.css +87 -22
- package/dist/tw/box.css +21 -2
- package/dist/tw/components/feedback.css +2 -2
- package/dist/tw/components/form.css +58 -19
- package/dist/tw/components/index.css +3 -4
- package/dist/tw/components/surface.css +15 -6
- package/dist/tw/index.css +1 -1
- package/dist/tw/intent.css +6 -5
- package/dist/tw/native.css +8 -8
- package/dist/tw/palette.css +6 -6
- package/dist/tw/reset.css +15 -15
- package/dist/tw/theme.css +29 -17
- package/dist/tw/utilities/content.css +43 -1
- package/dist/tw/utilities/layout.css +26 -12
- package/docs/accessibility.md +89 -60
- package/docs/changelog/0.1.1.md +1 -0
- package/docs/changelog/0.2.0.md +1 -0
- package/docs/changelog/0.3.0.md +1 -0
- package/docs/changelog/0.4.0.md +1 -0
- package/docs/changelog/0.5.0.md +8 -3
- package/docs/changelog/0.6.0.md +2 -1
- package/docs/changelog/0.7.0.md +50 -0
- package/docs/changelog/index.md +1 -0
- package/docs/concepts.md +188 -46
- package/docs/es/accessibility.md +150 -0
- package/docs/es/concepts.md +212 -0
- package/docs/es/index.md +104 -0
- package/docs/es/integrating/astro.md +35 -0
- package/docs/es/integrating/index.md +47 -0
- package/docs/es/integrating/nextjs.md +67 -0
- package/docs/es/integrating/svelte.md +45 -0
- package/docs/es/integrating/tailwind.md +78 -0
- package/docs/es/integrating/vue.md +31 -0
- package/docs/es/integrating/without-a-bundler.md +115 -0
- package/docs/es/setup.md +180 -0
- package/docs/es/usage/aesthetics.md +276 -0
- package/docs/es/usage/buttons.md +131 -0
- package/docs/es/usage/composing.md +164 -0
- package/docs/es/usage/content-and-layout.md +215 -0
- package/docs/es/usage/customizing.md +298 -0
- package/docs/es/usage/feedback.md +153 -0
- package/docs/es/usage/forms.md +231 -0
- package/docs/es/usage/index.md +29 -0
- package/docs/es/usage/solo.md +84 -0
- package/docs/es/usage/theming.md +296 -0
- package/docs/es/usage/tooltips.md +127 -0
- package/docs/index.md +85 -26
- package/docs/integrating/astro.md +3 -4
- package/docs/integrating/index.md +18 -13
- package/docs/integrating/nextjs.md +3 -4
- package/docs/integrating/svelte.md +5 -4
- package/docs/integrating/tailwind.md +16 -3
- package/docs/integrating/vue.md +3 -4
- package/docs/integrating/without-a-bundler.md +114 -0
- package/docs/pt-BR/accessibility.md +150 -0
- package/docs/pt-BR/concepts.md +212 -0
- package/docs/pt-BR/index.md +104 -0
- package/docs/pt-BR/integrating/astro.md +35 -0
- package/docs/pt-BR/integrating/index.md +47 -0
- package/docs/pt-BR/integrating/nextjs.md +67 -0
- package/docs/pt-BR/integrating/svelte.md +45 -0
- package/docs/pt-BR/integrating/tailwind.md +78 -0
- package/docs/pt-BR/integrating/vue.md +31 -0
- package/docs/pt-BR/integrating/without-a-bundler.md +115 -0
- package/docs/pt-BR/setup.md +180 -0
- package/docs/pt-BR/usage/aesthetics.md +276 -0
- package/docs/pt-BR/usage/buttons.md +131 -0
- package/docs/pt-BR/usage/composing.md +164 -0
- package/docs/pt-BR/usage/content-and-layout.md +215 -0
- package/docs/pt-BR/usage/customizing.md +298 -0
- package/docs/pt-BR/usage/feedback.md +153 -0
- package/docs/pt-BR/usage/forms.md +231 -0
- package/docs/pt-BR/usage/index.md +29 -0
- package/docs/pt-BR/usage/solo.md +84 -0
- package/docs/pt-BR/usage/theming.md +296 -0
- package/docs/pt-BR/usage/tooltips.md +127 -0
- package/docs/setup.md +134 -91
- package/docs/usage/aesthetics.md +76 -66
- package/docs/usage/buttons.md +108 -40
- package/docs/usage/composing.md +105 -92
- package/docs/usage/content-and-layout.md +157 -126
- package/docs/usage/customizing.md +107 -37
- package/docs/usage/feedback.md +134 -71
- package/docs/usage/forms.md +176 -107
- package/docs/usage/index.md +18 -14
- package/docs/usage/solo.md +83 -0
- package/docs/usage/theming.md +260 -118
- package/docs/usage/tooltips.md +90 -49
- package/llms-full.txt +2358 -1313
- package/llms.txt +24 -22
- package/package.json +25 -32
- package/dist/tw/components/loader.css +0 -116
package/llms.txt
CHANGED
|
@@ -4,29 +4,31 @@
|
|
|
4
4
|
|
|
5
5
|
Use compiled entrypoints for ready-to-import CSS or `/tw` entrypoints in a
|
|
6
6
|
Tailwind CSS v4 build. The package has no JavaScript behavior. Supported behavior
|
|
7
|
-
is the
|
|
7
|
+
is what the public docs describe and the demo at https://demo.codenhub.dev/styles/ shows.
|
|
8
8
|
|
|
9
9
|
## Documentation
|
|
10
10
|
|
|
11
|
-
- [
|
|
12
|
-
- [README](./README.md): Installation, first
|
|
13
|
-
- [Setup](./docs/setup.md):
|
|
14
|
-
- [
|
|
15
|
-
- [
|
|
16
|
-
- [
|
|
17
|
-
- [
|
|
18
|
-
- [
|
|
19
|
-
- [
|
|
20
|
-
- [
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
- [
|
|
24
|
-
- [
|
|
25
|
-
- [
|
|
26
|
-
- [
|
|
27
|
-
- [
|
|
28
|
-
- [
|
|
29
|
-
- [
|
|
30
|
-
- [
|
|
31
|
-
- [
|
|
11
|
+
- [Introduction](./docs/index.md): Primary entrypoint: what the package is for, what it does not do, versioning, and the reading order.
|
|
12
|
+
- [README](./README.md): Installation, a first example, requirements, and license.
|
|
13
|
+
- [Setup](./docs/setup.md): Installing, choosing compiled CSS or Tailwind source, requirements, every entrypoint, classless HTML, cascade layers, and what to check when nothing is styled.
|
|
14
|
+
- [Integrating](./docs/integrating/index.md): How the stylesheet loads in a framework build, and which guide to follow.
|
|
15
|
+
- [Tailwind CSS v4](./docs/integrating/tailwind.md): Using the `/tw` source entrypoints in a Tailwind CSS v4 build, focused entrypoints, the `dark:` variant, and troubleshooting.
|
|
16
|
+
- [Next.js](./docs/integrating/nextjs.md): Importing the stylesheet in a Next.js or React app.
|
|
17
|
+
- [Vue](./docs/integrating/vue.md): Importing the stylesheet in a Vue or Vite app.
|
|
18
|
+
- [Svelte](./docs/integrating/svelte.md): Importing the stylesheet in a Svelte or SvelteKit app.
|
|
19
|
+
- [Astro](./docs/integrating/astro.md): Importing the stylesheet in an Astro app.
|
|
20
|
+
- [Without a bundler](./docs/integrating/without-a-bundler.md): Linking the compiled files from plain HTML, Rails, Django, or a CDN.
|
|
21
|
+
- [Building a screen](./docs/concepts.md): Layout, type, cards, and buttons, and the model behind them: intent, fill, edge, aesthetic, and what passes down to children.
|
|
22
|
+
- [Usage overview](./docs/usage/index.md): The task guides in order, then the lookup pages.
|
|
23
|
+
- [Buttons](./docs/usage/buttons.md): Destructive and secondary actions, icon buttons, sizes, link buttons, disabled states, and loading icons.
|
|
24
|
+
- [Forms](./docs/usage/forms.md): Labeled fields, hints and errors, icons and fixed prefixes, selects, and checkbox, radio, and switch toggles.
|
|
25
|
+
- [Feedback](./docs/usage/feedback.md): A saving button, alerts, badges, skeletons, progress bars, and motion that keeps running.
|
|
26
|
+
- [Tooltips](./docs/usage/tooltips.md): Field help on hover and focus, the ARIA wiring and Escape handler, and where a tooltip gets clipped.
|
|
27
|
+
- [Theming](./docs/usage/theming.md): Light and dark mode, brand colors, custom intents, and every color, intent, foundation, and font token with its default.
|
|
28
|
+
- [Aesthetics](./docs/usage/aesthetics.md): The six optional looks, what each changes, its knobs, and its limits.
|
|
29
|
+
- [Solo classes](./docs/usage/solo.md): Painting an aesthetic onto one element from another library, and what a solo class reads and ignores.
|
|
30
|
+
- [Composing](./docs/usage/composing.md): Lookup for combining classes, every component's default look, presentation rules, the component axis matrix, and elevation.
|
|
31
|
+
- [Customizing](./docs/usage/customizing.md): Lookup for presentation and material tokens, aesthetic knobs, the six public component variables, the generated palette, and composition helpers.
|
|
32
|
+
- [Content and layout](./docs/usage/content-and-layout.md): Lookup for layout helpers, the type scale, cards and panels, tables, quotes, code, and keys.
|
|
33
|
+
- [Accessibility](./docs/accessibility.md): What the CSS provides for focus, states, motion, contrast, forced colors, and right-to-left text, and what the application must add.
|
|
32
34
|
- [Changelog](./docs/changelog/index.md): Release history, including breaking changes.
|
package/package.json
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@codenhub/styles",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.7.0",
|
|
4
4
|
"private": false,
|
|
5
|
-
"description": "
|
|
5
|
+
"description": "Build a consistent, themeable interface by writing class names on plain HTML, with one stylesheet of tokens, a reset, layout and type helpers, and component classes, and no JavaScript.",
|
|
6
6
|
"homepage": "https://github.com/codenhub/codenhub/tree/main/packages/styles",
|
|
7
7
|
"license": "Apache-2.0",
|
|
8
8
|
"repository": {
|
|
@@ -113,11 +113,6 @@
|
|
|
113
113
|
"import": "./dist/tw/components/feedback.css",
|
|
114
114
|
"default": "./dist/tw/components/feedback.css"
|
|
115
115
|
},
|
|
116
|
-
"./tw/loader": {
|
|
117
|
-
"style": "./dist/tw/components/loader.css",
|
|
118
|
-
"import": "./dist/tw/components/loader.css",
|
|
119
|
-
"default": "./dist/tw/components/loader.css"
|
|
120
|
-
},
|
|
121
116
|
"./tw/tooltip": {
|
|
122
117
|
"style": "./dist/tw/components/tooltip.css",
|
|
123
118
|
"import": "./dist/tw/components/tooltip.css",
|
|
@@ -188,6 +183,28 @@
|
|
|
188
183
|
"publishConfig": {
|
|
189
184
|
"access": "public"
|
|
190
185
|
},
|
|
186
|
+
"devDependencies": {
|
|
187
|
+
"@codenhub/tools": "0.1.0",
|
|
188
|
+
"@playwright/test": "~1.63.0",
|
|
189
|
+
"@tailwindcss/cli": "^4.3.2",
|
|
190
|
+
"@types/node": "^26.6.6",
|
|
191
|
+
"tailwindcss": "^4.3.2",
|
|
192
|
+
"typescript": "^6.0.3",
|
|
193
|
+
"vitest": "^4.1.10"
|
|
194
|
+
},
|
|
195
|
+
"peerDependencies": {
|
|
196
|
+
"tailwindcss": ">=4.3.2 <5"
|
|
197
|
+
},
|
|
198
|
+
"peerDependenciesMeta": {
|
|
199
|
+
"tailwindcss": {
|
|
200
|
+
"optional": true
|
|
201
|
+
}
|
|
202
|
+
},
|
|
203
|
+
"codenhub": {
|
|
204
|
+
"label": "StyleKit",
|
|
205
|
+
"status": "active",
|
|
206
|
+
"docs": {}
|
|
207
|
+
},
|
|
191
208
|
"scripts": {
|
|
192
209
|
"clean": "node -e \"fs.rmSync('dist', { recursive: true, force: true })\"",
|
|
193
210
|
"dev": "pnpm --filter=@codenhub/styles-dev dev",
|
|
@@ -198,7 +215,6 @@
|
|
|
198
215
|
"build:styles": "node scripts/build-styles.mjs --styles",
|
|
199
216
|
"build:aesthetics": "node scripts/build-styles.mjs --aesthetics",
|
|
200
217
|
"build:tw": "node scripts/build-tw.mjs",
|
|
201
|
-
"prepublishOnly": "pnpm build && pnpm typecheck && pnpm test",
|
|
202
218
|
"status:npm": "npm view @codenhub/styles version dist-tags time --json && npm dist-tag ls @codenhub/styles && npm access get status @codenhub/styles",
|
|
203
219
|
"status:pack": "npm pack --dry-run --ignore-scripts",
|
|
204
220
|
"test": "vitest run",
|
|
@@ -207,28 +223,5 @@
|
|
|
207
223
|
"test:coverage": "pnpm test",
|
|
208
224
|
"test:watch": "vitest --watch",
|
|
209
225
|
"typecheck": "tsc -b"
|
|
210
|
-
},
|
|
211
|
-
"devDependencies": {
|
|
212
|
-
"@codenhub/tools": "workspace:*",
|
|
213
|
-
"@playwright/test": "catalog:",
|
|
214
|
-
"@tailwindcss/cli": "catalog:",
|
|
215
|
-
"@types/node": "catalog:",
|
|
216
|
-
"tailwindcss": "catalog:",
|
|
217
|
-
"typescript": "catalog:",
|
|
218
|
-
"vitest": "catalog:"
|
|
219
|
-
},
|
|
220
|
-
"peerDependencies": {
|
|
221
|
-
"tailwindcss": ">=4.3.2 <5"
|
|
222
|
-
},
|
|
223
|
-
"peerDependenciesMeta": {
|
|
224
|
-
"tailwindcss": {
|
|
225
|
-
"optional": true
|
|
226
|
-
}
|
|
227
|
-
},
|
|
228
|
-
"codenhub": {
|
|
229
|
-
"docs": {
|
|
230
|
-
"label": "StyleKit",
|
|
231
|
-
"status": "active"
|
|
232
|
-
}
|
|
233
226
|
}
|
|
234
|
-
}
|
|
227
|
+
}
|
|
@@ -1,116 +0,0 @@
|
|
|
1
|
-
@source inline("loader dots-wave dots-fade dots-queue dots-rotate dots-grow dots-grow-alternate dot-bounce bars-wave pulse-ring");
|
|
2
|
-
|
|
3
|
-
/* The mask machinery, shared by the loader and by any component that shows a
|
|
4
|
-
spinner of its own. Artwork is a mask rather than an image so it takes its
|
|
5
|
-
colour from whatever paints behind it, which is the whole indicator contract:
|
|
6
|
-
an intent class recolours the loader and nothing else has to know.
|
|
7
|
-
|
|
8
|
-
Each artwork's closing `style` tag is percent-encoded. A stylesheet pasted
|
|
9
|
-
into an HTML `<style>` element ends at the first literal close tag, so one
|
|
10
|
-
left raw would silently drop every rule after it; the data URI decodes the
|
|
11
|
-
escape before the SVG is parsed, so the artwork is unchanged. The exports
|
|
12
|
-
test fails a build that ships the raw sequence. */
|
|
13
|
-
@utility loader-mask {
|
|
14
|
-
mask-image: var(--loader-art);
|
|
15
|
-
-webkit-mask-image: var(--loader-art);
|
|
16
|
-
mask-size: contain;
|
|
17
|
-
-webkit-mask-size: contain;
|
|
18
|
-
mask-repeat: no-repeat;
|
|
19
|
-
-webkit-mask-repeat: no-repeat;
|
|
20
|
-
mask-position: center;
|
|
21
|
-
-webkit-mask-position: center;
|
|
22
|
-
}
|
|
23
|
-
|
|
24
|
-
/* In `utilities`, beside the loader and art utilities it defaults for -- see
|
|
25
|
-
the seams note in `form.css`. */
|
|
26
|
-
@layer utilities {
|
|
27
|
-
.loader:not(
|
|
28
|
-
:where(
|
|
29
|
-
.dots-wave,
|
|
30
|
-
.dots-fade,
|
|
31
|
-
.dots-queue,
|
|
32
|
-
.dots-rotate,
|
|
33
|
-
.dots-grow,
|
|
34
|
-
.dots-grow-alternate,
|
|
35
|
-
.dot-bounce,
|
|
36
|
-
.bars-wave,
|
|
37
|
-
.pulse-ring
|
|
38
|
-
)
|
|
39
|
-
) {
|
|
40
|
-
--loader-art: url("data:image/svg+xml;charset=utf-8,<svg stroke='currentColor' viewBox='0 0 24 24' xmlns='http://www.w3.org/2000/svg'><style>.spinner_V8m1{transform-origin:center;animation:spinner_zKoa 2s linear infinite}.spinner_V8m1 circle{stroke-linecap:round;animation:spinner_YpZS 1.5s ease-in-out infinite}@keyframes spinner_zKoa{100%{transform:rotate(360deg)}}@keyframes spinner_YpZS{0%{stroke-dasharray:0 150;stroke-dashoffset:0}47.5%{stroke-dasharray:42 150;stroke-dashoffset:-16}95%,100%{stroke-dasharray:42 150;stroke-dashoffset:-59}}%3C/style%3E<g class='spinner_V8m1'><circle cx='12' cy='12' r='9.5' fill='none' stroke-width='3'></circle></g></svg>");
|
|
41
|
-
}
|
|
42
|
-
}
|
|
43
|
-
|
|
44
|
-
@utility dots-wave {
|
|
45
|
-
--loader-art: url("data:image/svg+xml;charset=utf-8,<svg fill='currentColor' viewBox='0 0 24 24' xmlns='http://www.w3.org/2000/svg'><style>@keyframes spinner_8HQG{0%,57.14%{animation-timing-function:cubic-bezier(.33,.66,.66,1);transform:translate(0)}28.57%{animation-timing-function:cubic-bezier(.33,0,.66,.33);transform:translateY(-6px)}to{transform:translate(0)}}.spinner_qM83{animation:spinner_8HQG 1.05s infinite}%3C/style%3E<circle class='spinner_qM83' cx='4' cy='12' r='3'/><circle class='spinner_qM83' cx='12' cy='12' r='3' style='animation-delay:.1s'/><circle class='spinner_qM83' cx='20' cy='12' r='3' style='animation-delay:.2s'/></svg>");
|
|
46
|
-
}
|
|
47
|
-
|
|
48
|
-
@utility dots-fade {
|
|
49
|
-
--loader-art: url("data:image/svg+xml;charset=utf-8,<svg viewBox='0 0 24 24' xmlns='http://www.w3.org/2000/svg'><style>.dot{animation:dot-anim 1s ease-in-out infinite;fill:currentColor}.d1{animation-delay:-0.32s}.d2{animation-delay:-0.16s}@keyframes dot-anim{0%,80%,100%{transform:scale(0.6);opacity:0.2}40%{transform:scale(1);opacity:1}}%3C/style%3E<circle class='dot d1' cx='4' cy='12' r='3' transform-origin='4px 12px'></circle><circle class='dot d2' cx='12' cy='12' r='3' transform-origin='12px 12px'></circle><circle class='dot d3' cx='20' cy='12' r='3' transform-origin='20px 12px'></circle></svg>");
|
|
50
|
-
}
|
|
51
|
-
|
|
52
|
-
@utility dots-queue {
|
|
53
|
-
--loader-art: url("data:image/svg+xml;charset=utf-8,<svg viewBox='0 0 24 24' xmlns='http://www.w3.org/2000/svg'><style>@keyframes spinner_qtyZ{0%{r:0}25%{r:3px;cx:4px}50%{r:3px;cx:12px}75%{r:3px;cx:20px}to{r:0;cx:20px}}.spinner_nOfF{animation:spinner_qtyZ 2s cubic-bezier(.36,.6,.31,1) infinite}%3C/style%3E<circle class='spinner_nOfF' cx='4' cy='12' r='3'/><circle class='spinner_nOfF' cx='4' cy='12' r='3' style='animation-delay:-.5s'/><circle class='spinner_nOfF' cx='4' cy='12' r='3' style='animation-delay:-1s'/><circle class='spinner_nOfF' cx='4' cy='12' r='3' style='animation-delay:-1.5s'/></svg>");
|
|
54
|
-
}
|
|
55
|
-
|
|
56
|
-
@utility dots-rotate {
|
|
57
|
-
--loader-art: url("data:image/svg+xml;charset=utf-8,<svg viewBox='0 0 24 24' xmlns='http://www.w3.org/2000/svg'><style>@keyframes spinner_XVY9{50%{transform:rotate(180deg)}to{transform:rotate(360deg)}}%3C/style%3E<circle cx='12' cy='12' r='3'/><g style='transform-origin:center;animation:spinner_XVY9 1s cubic-bezier(.36,.6,.31,1) infinite'><circle cx='4' cy='12' r='3'/><circle cx='20' cy='12' r='3'/></g></svg>");
|
|
58
|
-
}
|
|
59
|
-
|
|
60
|
-
@utility dots-grow {
|
|
61
|
-
--loader-art: url("data:image/svg+xml;charset=utf-8,<svg viewBox='0 0 24 24' xmlns='http://www.w3.org/2000/svg'><style>@keyframes spinner_xe7Q{93.75%,to{r:3px}46.875%{r:.2px}}.spinner_b2T7{animation:spinner_xe7Q .8s linear infinite}%3C/style%3E<circle class='spinner_b2T7' cx='4' cy='12' r='3'/><circle class='spinner_b2T7' cx='12' cy='12' r='3' style='animation-delay:-.65s'/><circle class='spinner_b2T7' cx='20' cy='12' r='3' style='animation-delay:-.5s'/></svg>");
|
|
62
|
-
}
|
|
63
|
-
|
|
64
|
-
@utility dots-grow-alternate {
|
|
65
|
-
--loader-art: url("data:image/svg+xml;charset=utf-8,<svg viewBox='0 0 24 24' xmlns='http://www.w3.org/2000/svg'><style>@keyframes spinner_qhi1{0%,to{r:1.5px}50%{r:3px}}.spinner_I8Q1{animation:spinner_qhi1 .75s linear infinite}%3C/style%3E<circle class='spinner_I8Q1' cx='4' cy='12' r='1.5'/><circle class='spinner_I8Q1' cx='12' cy='12' r='3' style='animation-delay:-.375s'/><circle class='spinner_I8Q1' cx='20' cy='12' r='1.5'/></svg>");
|
|
66
|
-
}
|
|
67
|
-
|
|
68
|
-
@utility dot-bounce {
|
|
69
|
-
--loader-art: url("data:image/svg+xml;charset=utf-8,<svg viewBox='0 0 24 24' xmlns='http://www.w3.org/2000/svg'><style>@keyframes spinner_YeBj{0%{animation-timing-function:cubic-bezier(.33,0,.66,.33);cy:5px}46.875%{cy:20px;rx:4px;ry:4px}50%{animation-timing-function:cubic-bezier(.33,.66,.66,1);cy:20.5px;rx:4.8px;ry:3px}53.125%{rx:4px;ry:4px}to{cy:5px}}%3C/style%3E<circle cx='12' cy='5' style='animation:spinner_YeBj .8s infinite' r='4'/></svg>");
|
|
70
|
-
}
|
|
71
|
-
|
|
72
|
-
@utility bars-wave {
|
|
73
|
-
--loader-art: url("data:image/svg+xml;charset=utf-8,<svg viewBox='0 0 24 24' xmlns='http://www.w3.org/2000/svg'><style>.bar{animation:bar-anim 1s ease-in-out infinite;fill:currentColor}.b1{animation-delay:-0.4s}.b2{animation-delay:-0.2s}@keyframes bar-anim{0%,100%{transform:scaleY(0.3)}50%{transform:scaleY(1)}}%3C/style%3E<rect class='bar b1' x='3' y='2' width='4' height='20' rx='2' transform-origin='5px 12px'></rect><rect class='bar b2' x='10' y='2' width='4' height='20' rx='2' transform-origin='12px 12px'></rect><rect class='bar b3' x='17' y='2' width='4' height='20' rx='2' transform-origin='19px 12px'></rect></svg>");
|
|
74
|
-
}
|
|
75
|
-
|
|
76
|
-
@utility pulse-ring {
|
|
77
|
-
--loader-art: url("data:image/svg+xml;charset=utf-8,<svg viewBox='0 0 24 24' xmlns='http://www.w3.org/2000/svg'><style>.pulse{animation:pulse-anim 1.2s cubic-bezier(0, 0.2, 0.8, 1) infinite;stroke:currentColor;transform-origin:center}.p2{animation-delay:-0.6s}@keyframes pulse-anim{0%{transform:scale(0);opacity:1}100%{transform:scale(1);opacity:0}}%3C/style%3E<circle class='pulse p1' cx='12' cy='12' r='10' fill='none' stroke-width='3'></circle><circle class='pulse p2' cx='12' cy='12' r='10' fill='none' stroke-width='3'></circle></svg>");
|
|
78
|
-
}
|
|
79
|
-
|
|
80
|
-
/* A loader takes a colour and its own geometry, and nothing else: no fill, no
|
|
81
|
-
edge, no silhouette. `--intent-color` defaults to `currentColor` for
|
|
82
|
-
indicators, so a loader inside filled content matches the text around it and
|
|
83
|
-
`.loader.success` is green. */
|
|
84
|
-
@utility loader {
|
|
85
|
-
@apply loader-mask inline-block size-7 [&.lg]:size-9 [&.sm]:size-5;
|
|
86
|
-
|
|
87
|
-
color: var(--intent-color);
|
|
88
|
-
background-color: currentColor;
|
|
89
|
-
}
|
|
90
|
-
|
|
91
|
-
@media (prefers-reduced-motion: reduce) {
|
|
92
|
-
.loader {
|
|
93
|
-
--loader-art: url("data:image/svg+xml;charset=utf-8,<svg viewBox='0 0 24 24' xmlns='http://www.w3.org/2000/svg'><circle cx='12' cy='12' r='9.5' fill='none' stroke='black' stroke-width='3' stroke-linecap='round' stroke-dasharray='42 18'/></svg>");
|
|
94
|
-
}
|
|
95
|
-
|
|
96
|
-
.dots-wave,
|
|
97
|
-
.dots-fade,
|
|
98
|
-
.dots-queue,
|
|
99
|
-
.dots-rotate,
|
|
100
|
-
.dots-grow,
|
|
101
|
-
.dots-grow-alternate {
|
|
102
|
-
--loader-art: url("data:image/svg+xml;charset=utf-8,<svg viewBox='0 0 24 24' xmlns='http://www.w3.org/2000/svg'><circle cx='4' cy='12' r='3'/><circle cx='12' cy='12' r='3'/><circle cx='20' cy='12' r='3'/></svg>");
|
|
103
|
-
}
|
|
104
|
-
|
|
105
|
-
.dot-bounce {
|
|
106
|
-
--loader-art: url("data:image/svg+xml;charset=utf-8,<svg viewBox='0 0 24 24' xmlns='http://www.w3.org/2000/svg'><circle cx='12' cy='12' r='4'/></svg>");
|
|
107
|
-
}
|
|
108
|
-
|
|
109
|
-
.bars-wave {
|
|
110
|
-
--loader-art: url("data:image/svg+xml;charset=utf-8,<svg viewBox='0 0 24 24' xmlns='http://www.w3.org/2000/svg'><rect x='3' y='5' width='4' height='14' rx='2'/><rect x='10' y='5' width='4' height='14' rx='2'/><rect x='17' y='5' width='4' height='14' rx='2'/></svg>");
|
|
111
|
-
}
|
|
112
|
-
|
|
113
|
-
.pulse-ring {
|
|
114
|
-
--loader-art: url("data:image/svg+xml;charset=utf-8,<svg viewBox='0 0 24 24' xmlns='http://www.w3.org/2000/svg'><circle cx='12' cy='12' r='9' fill='none' stroke='black' stroke-width='3'/></svg>");
|
|
115
|
-
}
|
|
116
|
-
}
|