@birdapi/velinstyle 0.7.0 → 0.8.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.de.md +26 -4
- package/README.md +26 -4
- package/cli/blueprint.js +8 -0
- package/cli/blueprints/bottom-nav-mobile.html +17 -0
- package/cli/blueprints/cookie-consent.html +9 -0
- package/cli/blueprints/empty-state.html +5 -0
- package/cli/blueprints/filter-bar.html +15 -0
- package/cli/blueprints/notification-center.html +13 -0
- package/cli/blueprints/onboarding.html +23 -0
- package/cli/blueprints/pricing-table.html +20 -0
- package/cli/blueprints/settings-panel.html +20 -0
- package/cli/index.js +116 -1
- package/cli/layout-audit.js +325 -0
- package/cli/scaffold-recipes.json +70 -0
- package/cli/scaffold.js +155 -0
- package/cli/scanner.js +68 -0
- package/components/index.js +19 -0
- package/components/sanitize.js +29 -3
- package/components/shadow-a11y-styles.js +18 -0
- package/components/velin-announcer.js +35 -0
- package/components/velin-bottom-nav.js +89 -0
- package/components/velin-combobox.js +149 -0
- package/components/velin-command.js +127 -0
- package/components/velin-counter.js +152 -0
- package/components/velin-flip.js +220 -0
- package/components/velin-icon.js +43 -9
- package/components/velin-live-dot.js +85 -0
- package/components/velin-menubar.js +83 -0
- package/components/velin-rating.js +91 -0
- package/components/velin-reveal.js +80 -0
- package/components/velin-segmented-control.js +108 -0
- package/components/velin-sheet.js +107 -0
- package/components/velin-sparkline.js +207 -0
- package/components/velin-theme-toggle.js +277 -60
- package/dist/velinstyle-components.iife.js +1629 -69
- package/dist/velinstyle-components.js +1649 -69
- package/dist/velinstyle-components.min.js +424 -80
- package/dist/velinstyle.css +472 -3
- package/dist/velinstyle.min.css +1 -1
- package/package.json +3 -2
- package/src/a11y/security.css +18 -0
- package/src/base/reset.css +12 -1
- package/src/components/nav.css +152 -151
- package/src/tokens/motion.css +7 -0
- package/src/utilities/animation.css +97 -1
- package/src/utilities/chart-animation.css +101 -0
- package/src/utilities/filter-effects.css +103 -0
- package/src/utilities/safe-area.css +39 -0
- package/src/velinstyle.css +3 -0
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Filter-Effect utilities — saturate, hue-rotate, contrast, invert, sepia,
|
|
3
|
+
* drop-shadow plus extended backdrop and glass composites.
|
|
4
|
+
*
|
|
5
|
+
* Layered under `utilities`; pair with the existing blur/brightness/grayscale
|
|
6
|
+
* helpers from src/utilities/position.css. The reduced-motion block at the
|
|
7
|
+
* bottom strips saturation/hue rotation because those distort color contrast
|
|
8
|
+
* for users who request reduced motion as a proxy for visual calm.
|
|
9
|
+
*/
|
|
10
|
+
|
|
11
|
+
@layer utilities {
|
|
12
|
+
/* === Saturate === */
|
|
13
|
+
.velin-saturate-0 { filter: saturate(0); }
|
|
14
|
+
.velin-saturate-50 { filter: saturate(0.5); }
|
|
15
|
+
.velin-saturate-100 { filter: saturate(1); }
|
|
16
|
+
.velin-saturate-150 { filter: saturate(1.5); }
|
|
17
|
+
.velin-saturate-200 { filter: saturate(2); }
|
|
18
|
+
|
|
19
|
+
/* === Hue rotate === */
|
|
20
|
+
.velin-hue-rotate-15 { filter: hue-rotate(15deg); }
|
|
21
|
+
.velin-hue-rotate-30 { filter: hue-rotate(30deg); }
|
|
22
|
+
.velin-hue-rotate-60 { filter: hue-rotate(60deg); }
|
|
23
|
+
.velin-hue-rotate-90 { filter: hue-rotate(90deg); }
|
|
24
|
+
.velin-hue-rotate-180 { filter: hue-rotate(180deg); }
|
|
25
|
+
|
|
26
|
+
/* === Contrast === */
|
|
27
|
+
.velin-contrast-50 { filter: contrast(0.5); }
|
|
28
|
+
.velin-contrast-75 { filter: contrast(0.75); }
|
|
29
|
+
.velin-contrast-100 { filter: contrast(1); }
|
|
30
|
+
.velin-contrast-125 { filter: contrast(1.25); }
|
|
31
|
+
.velin-contrast-150 { filter: contrast(1.5); }
|
|
32
|
+
|
|
33
|
+
/* === Invert === */
|
|
34
|
+
.velin-invert { filter: invert(1); }
|
|
35
|
+
.velin-invert-0 { filter: invert(0); }
|
|
36
|
+
|
|
37
|
+
/* === Sepia === */
|
|
38
|
+
.velin-sepia { filter: sepia(1); }
|
|
39
|
+
.velin-sepia-50 { filter: sepia(0.5); }
|
|
40
|
+
.velin-sepia-0 { filter: sepia(0); }
|
|
41
|
+
|
|
42
|
+
/* === Drop shadow (paints under transparent SVG/PNG content; differs from box-shadow) === */
|
|
43
|
+
.velin-drop-shadow-sm {
|
|
44
|
+
filter: drop-shadow(0 1px 1px oklch(0% 0 0 / 0.18));
|
|
45
|
+
}
|
|
46
|
+
.velin-drop-shadow-md {
|
|
47
|
+
filter: drop-shadow(0 4px 6px oklch(0% 0 0 / 0.18));
|
|
48
|
+
}
|
|
49
|
+
.velin-drop-shadow-lg {
|
|
50
|
+
filter: drop-shadow(0 12px 24px oklch(0% 0 0 / 0.22));
|
|
51
|
+
}
|
|
52
|
+
.velin-drop-shadow-glow {
|
|
53
|
+
filter: drop-shadow(0 0 1.5rem color-mix(in oklch, var(--velin-color-primary, #2563eb) 60%, transparent));
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
/* === Extended backdrop helpers === */
|
|
57
|
+
.velin-backdrop-saturate {
|
|
58
|
+
backdrop-filter: saturate(180%);
|
|
59
|
+
-webkit-backdrop-filter: saturate(180%);
|
|
60
|
+
}
|
|
61
|
+
.velin-backdrop-brightness-90 {
|
|
62
|
+
backdrop-filter: brightness(0.9);
|
|
63
|
+
-webkit-backdrop-filter: brightness(0.9);
|
|
64
|
+
}
|
|
65
|
+
.velin-backdrop-brightness-110 {
|
|
66
|
+
backdrop-filter: brightness(1.1);
|
|
67
|
+
-webkit-backdrop-filter: brightness(1.1);
|
|
68
|
+
}
|
|
69
|
+
.velin-backdrop-grayscale {
|
|
70
|
+
backdrop-filter: grayscale(1);
|
|
71
|
+
-webkit-backdrop-filter: grayscale(1);
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
/* === Glass composites — frosted surfaces for sticky bars/cards === */
|
|
75
|
+
.velin-glass {
|
|
76
|
+
background: color-mix(in oklch, var(--velin-color-surface-bright, #fff) 70%, transparent);
|
|
77
|
+
backdrop-filter: blur(12px) saturate(160%);
|
|
78
|
+
-webkit-backdrop-filter: blur(12px) saturate(160%);
|
|
79
|
+
border: 1px solid color-mix(in oklch, var(--velin-color-border, #ddd) 60%, transparent);
|
|
80
|
+
}
|
|
81
|
+
.velin-glass-strong {
|
|
82
|
+
background: color-mix(in oklch, var(--velin-color-surface-bright, #fff) 55%, transparent);
|
|
83
|
+
backdrop-filter: blur(20px) saturate(180%);
|
|
84
|
+
-webkit-backdrop-filter: blur(20px) saturate(180%);
|
|
85
|
+
border: 1px solid color-mix(in oklch, var(--velin-color-border, #ddd) 70%, transparent);
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
/* Reduced-motion / reduced-transparency: strip color distortion. */
|
|
89
|
+
@media (prefers-reduced-motion: reduce) {
|
|
90
|
+
.velin-saturate-0,
|
|
91
|
+
.velin-saturate-50,
|
|
92
|
+
.velin-saturate-100,
|
|
93
|
+
.velin-saturate-150,
|
|
94
|
+
.velin-saturate-200,
|
|
95
|
+
.velin-hue-rotate-15,
|
|
96
|
+
.velin-hue-rotate-30,
|
|
97
|
+
.velin-hue-rotate-60,
|
|
98
|
+
.velin-hue-rotate-90,
|
|
99
|
+
.velin-hue-rotate-180 {
|
|
100
|
+
filter: none;
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
@layer utilities {
|
|
2
|
+
.velin-pt-safe {
|
|
3
|
+
padding-block-start: max(var(--velin-space-4, 1rem), env(safe-area-inset-top, 0px));
|
|
4
|
+
}
|
|
5
|
+
|
|
6
|
+
.velin-pb-safe {
|
|
7
|
+
padding-block-end: max(var(--velin-space-4, 1rem), env(safe-area-inset-bottom, 0px));
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
.velin-px-safe {
|
|
11
|
+
padding-inline: max(var(--velin-space-4, 1rem), env(safe-area-inset-left, 0px))
|
|
12
|
+
max(var(--velin-space-4, 1rem), env(safe-area-inset-right, 0px));
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
.velin-p-safe {
|
|
16
|
+
padding-block: max(var(--velin-space-4, 1rem), env(safe-area-inset-top, 0px))
|
|
17
|
+
max(var(--velin-space-4, 1rem), env(safe-area-inset-bottom, 0px));
|
|
18
|
+
padding-inline: max(var(--velin-space-4, 1rem), env(safe-area-inset-left, 0px))
|
|
19
|
+
max(var(--velin-space-4, 1rem), env(safe-area-inset-right, 0px));
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
.velin-mobile-only {
|
|
23
|
+
display: block;
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
.velin-desktop-only {
|
|
27
|
+
display: none;
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
@media (min-width: 48rem) {
|
|
31
|
+
.velin-mobile-only {
|
|
32
|
+
display: none;
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
.velin-desktop-only {
|
|
36
|
+
display: block;
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
}
|
package/src/velinstyle.css
CHANGED
|
@@ -73,9 +73,12 @@
|
|
|
73
73
|
@import "utilities/border.css";
|
|
74
74
|
@import "utilities/position.css";
|
|
75
75
|
@import "utilities/animation.css";
|
|
76
|
+
@import "utilities/filter-effects.css";
|
|
77
|
+
@import "utilities/chart-animation.css";
|
|
76
78
|
@import "utilities/gradient.css";
|
|
77
79
|
@import "utilities/print.css";
|
|
78
80
|
@import "utilities/responsive.css";
|
|
81
|
+
@import "utilities/safe-area.css";
|
|
79
82
|
@import "utilities/divide.css";
|
|
80
83
|
@import "utilities/scroll.css";
|
|
81
84
|
@import "utilities/color-mix.css";
|