@clanwolf/ui-kit 1.0.2 → 2.0.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 +131 -1
- package/fesm2022/clanwolf-ui-kit.mjs +59 -4
- package/fesm2022/clanwolf-ui-kit.mjs.map +1 -1
- package/package.json +7 -5
- package/styles/_animations.scss +36 -0
- package/styles/_colors.scss +38 -0
- package/styles/_fonts.scss +18 -0
- package/styles/_loading.scss +69 -0
- package/styles/_scrollbar.scss +39 -0
- package/styles/_theme.scss +331 -0
- package/styles/_typography.scss +26 -0
- package/styles/aux-theme/_aux-theme.scss +1492 -0
- package/styles/fonts/Anta-Regular.ttf +0 -0
- package/styles/fonts/Quantico-Regular.ttf +0 -0
- package/styles/index.scss +12 -0
- package/types/clanwolf-ui-kit.d.ts +37 -1
|
@@ -0,0 +1,331 @@
|
|
|
1
|
+
@use "./colors" as colors;
|
|
2
|
+
@use "./typography" as typography;
|
|
3
|
+
@forward "./colors";
|
|
4
|
+
@forward "./typography";
|
|
5
|
+
@forward "./scrollbar";
|
|
6
|
+
@forward "./loading";
|
|
7
|
+
|
|
8
|
+
// --------------------------------------
|
|
9
|
+
// 🧩 Mixins
|
|
10
|
+
// --------------------------------------
|
|
11
|
+
|
|
12
|
+
/* hervorgehobene Textfelder / panel look */
|
|
13
|
+
@mixin panel {
|
|
14
|
+
background-color: colors.$bg-secondary;
|
|
15
|
+
border: 1px solid colors.$border;
|
|
16
|
+
box-shadow: colors.$shadow;
|
|
17
|
+
color: colors.$text-primary;
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
@mixin text-glow {
|
|
21
|
+
color: colors.$accent;
|
|
22
|
+
text-shadow: 0 0 6px rgba(colors.$accent, 0.7);
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
@mixin svg-fill-accent {
|
|
26
|
+
filter: brightness(0) saturate(100%) invert(64%) sepia(89%) saturate(1613%)
|
|
27
|
+
hue-rotate(117deg) brightness(107%) contrast(101%);
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
@mixin theme-line {
|
|
31
|
+
border-color: colors.$divider;
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
@mixin border-highlight {
|
|
35
|
+
border: 1px solid rgba(colors.$accent, 0.5);
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
@mixin btn-primary {
|
|
39
|
+
background-color: transparent;
|
|
40
|
+
border: 1px solid colors.$accent;
|
|
41
|
+
color: colors.$accent;
|
|
42
|
+
text-transform: uppercase;
|
|
43
|
+
letter-spacing: 0.05em;
|
|
44
|
+
transition: all 0.2s ease-in-out;
|
|
45
|
+
|
|
46
|
+
&:hover {
|
|
47
|
+
background-color: colors.$accent-soft;
|
|
48
|
+
box-shadow: 0 0 10px rgba(colors.$accent, 0.5);
|
|
49
|
+
color: colors.$accent-strong;
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
@mixin btn-secondary {
|
|
54
|
+
background-color: transparent;
|
|
55
|
+
border: 1px solid colors.$text-dim;
|
|
56
|
+
color: colors.$text-secondary;
|
|
57
|
+
transition: all 0.2s ease-in-out;
|
|
58
|
+
|
|
59
|
+
&:hover {
|
|
60
|
+
border-color: colors.$accent;
|
|
61
|
+
color: colors.$accent;
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
@mixin theme-grid {
|
|
66
|
+
background-image:
|
|
67
|
+
linear-gradient(to right, rgba(colors.$accent, 0.05) 1px, transparent 1px),
|
|
68
|
+
linear-gradient(to bottom, rgba(colors.$accent, 0.05) 1px, transparent 1px);
|
|
69
|
+
background-size: 40px 40px;
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
// 🌫️ Overlay / Focus / Scanner Effects
|
|
73
|
+
@mixin overlay {
|
|
74
|
+
background-color: colors.$overlay;
|
|
75
|
+
backdrop-filter: blur(4px);
|
|
76
|
+
border: 1px solid colors.$border;
|
|
77
|
+
box-shadow: inset 0 0 30px rgba(colors.$accent, 0.1);
|
|
78
|
+
color: colors.$text-primary;
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
@mixin overlay-focus {
|
|
82
|
+
@include overlay;
|
|
83
|
+
box-shadow:
|
|
84
|
+
0 0 25px rgba(colors.$accent, 0.25),
|
|
85
|
+
inset 0 0 20px rgba(colors.$accent, 0.15);
|
|
86
|
+
border-color: rgba(colors.$accent, 0.4);
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
@mixin overlay-highlight {
|
|
90
|
+
background-color: rgba(10, 20, 20, 0.65);
|
|
91
|
+
backdrop-filter: blur(3px);
|
|
92
|
+
border: 1px solid rgba(colors.$accent, 0.5);
|
|
93
|
+
box-shadow:
|
|
94
|
+
0 0 25px rgba(colors.$accent, 0.3),
|
|
95
|
+
inset 0 0 25px rgba(colors.$accent, 0.15),
|
|
96
|
+
0 0 40px rgba(0, 255, 200, 0.1);
|
|
97
|
+
color: colors.$text-primary;
|
|
98
|
+
transition: all 0.3s ease-in-out;
|
|
99
|
+
|
|
100
|
+
// leichtes Pulsieren für Live-Effekt
|
|
101
|
+
animation: themePulse 4s ease-in-out infinite;
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
@keyframes themePulse {
|
|
105
|
+
0%,
|
|
106
|
+
100% {
|
|
107
|
+
box-shadow:
|
|
108
|
+
0 0 25px rgba(colors.$accent, 0.25),
|
|
109
|
+
inset 0 0 25px rgba(colors.$accent, 0.1);
|
|
110
|
+
}
|
|
111
|
+
50% {
|
|
112
|
+
box-shadow:
|
|
113
|
+
0 0 40px rgba(colors.$accent, 0.45),
|
|
114
|
+
inset 0 0 35px rgba(colors.$accent, 0.2);
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
@mixin scanner-effect {
|
|
119
|
+
background: linear-gradient(
|
|
120
|
+
rgba(0, 255, 200, 0.05) 0%,
|
|
121
|
+
rgba(0, 255, 200, 0.2) 50%,
|
|
122
|
+
rgba(0, 255, 200, 0.05) 100%
|
|
123
|
+
);
|
|
124
|
+
background-size: 100% 200%;
|
|
125
|
+
animation: scan 3s linear infinite;
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
@keyframes scan {
|
|
129
|
+
0% {
|
|
130
|
+
background-position-y: 100%;
|
|
131
|
+
}
|
|
132
|
+
100% {
|
|
133
|
+
background-position-y: 0%;
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
|
|
137
|
+
@mixin distortion-enter {
|
|
138
|
+
animation: distortion 400ms cubic-bezier(0.25, 1, 0.5, 1);
|
|
139
|
+
}
|
|
140
|
+
|
|
141
|
+
@keyframes distortion {
|
|
142
|
+
0% {
|
|
143
|
+
filter: blur(10px) brightness(2);
|
|
144
|
+
transform: scale(1.05);
|
|
145
|
+
opacity: 0;
|
|
146
|
+
}
|
|
147
|
+
60% {
|
|
148
|
+
filter: blur(2px) brightness(1.2);
|
|
149
|
+
transform: scale(1.02);
|
|
150
|
+
opacity: 0.8;
|
|
151
|
+
}
|
|
152
|
+
100% {
|
|
153
|
+
filter: blur(0);
|
|
154
|
+
transform: scale(1);
|
|
155
|
+
opacity: 1;
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
|
|
159
|
+
// --------------------------------------
|
|
160
|
+
// 🎞️ CRT-Style Distortion Effect
|
|
161
|
+
// --------------------------------------
|
|
162
|
+
|
|
163
|
+
@mixin crt-distortion-enter {
|
|
164
|
+
position: relative;
|
|
165
|
+
overflow: hidden;
|
|
166
|
+
animation: crtPowerOn 650ms cubic-bezier(0.19, 1, 0.22, 1);
|
|
167
|
+
|
|
168
|
+
// grüner Overlay Scan / CRT-Look
|
|
169
|
+
&::before {
|
|
170
|
+
content: "";
|
|
171
|
+
position: absolute;
|
|
172
|
+
inset: 0;
|
|
173
|
+
background: linear-gradient(
|
|
174
|
+
rgba(0, 255, 150, 0.05) 50%,
|
|
175
|
+
rgba(0, 255, 150, 0.1) 51%
|
|
176
|
+
);
|
|
177
|
+
background-size: 100% 3px;
|
|
178
|
+
mix-blend-mode: overlay;
|
|
179
|
+
animation: crtScan 4s linear infinite;
|
|
180
|
+
pointer-events: none;
|
|
181
|
+
}
|
|
182
|
+
|
|
183
|
+
// leichtes Noise-Flimmern
|
|
184
|
+
&::after {
|
|
185
|
+
content: "";
|
|
186
|
+
position: absolute;
|
|
187
|
+
inset: 0;
|
|
188
|
+
background: repeating-linear-gradient(
|
|
189
|
+
0deg,
|
|
190
|
+
rgba(0, 255, 200, 0.02),
|
|
191
|
+
rgba(0, 255, 200, 0.02) 1px,
|
|
192
|
+
rgba(0, 255, 200, 0.05) 2px
|
|
193
|
+
);
|
|
194
|
+
mix-blend-mode: soft-light;
|
|
195
|
+
animation: flicker 0.2s infinite;
|
|
196
|
+
pointer-events: none;
|
|
197
|
+
}
|
|
198
|
+
}
|
|
199
|
+
|
|
200
|
+
@keyframes crtPowerOn {
|
|
201
|
+
0% {
|
|
202
|
+
opacity: 0;
|
|
203
|
+
transform: scale(1.05) skewX(5deg);
|
|
204
|
+
filter: brightness(2) contrast(1.5) blur(8px);
|
|
205
|
+
}
|
|
206
|
+
30% {
|
|
207
|
+
opacity: 0.7;
|
|
208
|
+
transform: scale(1.02) skewX(-3deg);
|
|
209
|
+
filter: brightness(1.6) contrast(1.3) blur(3px);
|
|
210
|
+
}
|
|
211
|
+
70% {
|
|
212
|
+
opacity: 0.9;
|
|
213
|
+
transform: scale(1.01);
|
|
214
|
+
filter: brightness(1.2) contrast(1.1) blur(1px);
|
|
215
|
+
}
|
|
216
|
+
100% {
|
|
217
|
+
opacity: 1;
|
|
218
|
+
transform: none;
|
|
219
|
+
filter: none;
|
|
220
|
+
}
|
|
221
|
+
}
|
|
222
|
+
|
|
223
|
+
@keyframes crtScan {
|
|
224
|
+
0% {
|
|
225
|
+
background-position-y: 100%;
|
|
226
|
+
}
|
|
227
|
+
100% {
|
|
228
|
+
background-position-y: 0%;
|
|
229
|
+
}
|
|
230
|
+
}
|
|
231
|
+
|
|
232
|
+
@keyframes flicker {
|
|
233
|
+
0%,
|
|
234
|
+
100% {
|
|
235
|
+
opacity: 1;
|
|
236
|
+
}
|
|
237
|
+
50% {
|
|
238
|
+
opacity: 0.95;
|
|
239
|
+
}
|
|
240
|
+
}
|
|
241
|
+
|
|
242
|
+
// --------------------------------------
|
|
243
|
+
// 🧱 Utility Classes
|
|
244
|
+
// --------------------------------------
|
|
245
|
+
|
|
246
|
+
// Base/Heading font-family, respects overrides of
|
|
247
|
+
// typography.$font-family-base / $font-family-heading
|
|
248
|
+
.theme-font-base {
|
|
249
|
+
@include typography.base-font;
|
|
250
|
+
}
|
|
251
|
+
.theme-font-heading {
|
|
252
|
+
@include typography.heading-font;
|
|
253
|
+
}
|
|
254
|
+
|
|
255
|
+
// Nicht-transparenter Hintergrund im Theme-Look
|
|
256
|
+
.theme-bg {
|
|
257
|
+
@include colors.theme-bg;
|
|
258
|
+
}
|
|
259
|
+
|
|
260
|
+
// Container für Inhalt ohne Transparenz
|
|
261
|
+
.theme-panel {
|
|
262
|
+
@include panel;
|
|
263
|
+
}
|
|
264
|
+
|
|
265
|
+
// leuchtender Text
|
|
266
|
+
.text-glow {
|
|
267
|
+
@include text-glow;
|
|
268
|
+
}
|
|
269
|
+
|
|
270
|
+
// buttons
|
|
271
|
+
.btn-theme-primary {
|
|
272
|
+
@include btn-primary;
|
|
273
|
+
}
|
|
274
|
+
.btn-theme-secondary {
|
|
275
|
+
@include btn-secondary;
|
|
276
|
+
}
|
|
277
|
+
|
|
278
|
+
.svg-fill-accent {
|
|
279
|
+
@include svg-fill-accent;
|
|
280
|
+
}
|
|
281
|
+
|
|
282
|
+
// erstellt ein Grid für das passende div
|
|
283
|
+
.theme-grid {
|
|
284
|
+
@include theme-grid;
|
|
285
|
+
}
|
|
286
|
+
|
|
287
|
+
.border-highlight {
|
|
288
|
+
@include border-highlight;
|
|
289
|
+
}
|
|
290
|
+
|
|
291
|
+
.theme-line {
|
|
292
|
+
@include theme-line;
|
|
293
|
+
}
|
|
294
|
+
|
|
295
|
+
// halbtransparente Box mit Leuchten nach innen
|
|
296
|
+
.overlay {
|
|
297
|
+
@include overlay;
|
|
298
|
+
}
|
|
299
|
+
// Das gleiche nur intensiver
|
|
300
|
+
.overlay-focus {
|
|
301
|
+
@include overlay-focus;
|
|
302
|
+
}
|
|
303
|
+
// Rand stärker hervorgehoben mit Puls
|
|
304
|
+
.overlay-highlight {
|
|
305
|
+
@include overlay-highlight;
|
|
306
|
+
}
|
|
307
|
+
|
|
308
|
+
// scan effect
|
|
309
|
+
.scanner-effect {
|
|
310
|
+
@include scanner-effect;
|
|
311
|
+
}
|
|
312
|
+
|
|
313
|
+
// distortion effect
|
|
314
|
+
.distortion-enter {
|
|
315
|
+
@include distortion-enter;
|
|
316
|
+
}
|
|
317
|
+
.crt-distortion-enter {
|
|
318
|
+
@include crt-distortion-enter;
|
|
319
|
+
@include overlay-focus;
|
|
320
|
+
}
|
|
321
|
+
|
|
322
|
+
.list-btn-primary {
|
|
323
|
+
@include btn-primary;
|
|
324
|
+
width: 30vw;
|
|
325
|
+
height: 4rem;
|
|
326
|
+
list-style: none;
|
|
327
|
+
text-align: center;
|
|
328
|
+
align-content: center;
|
|
329
|
+
font-size: 1.25rem;
|
|
330
|
+
}
|
|
331
|
+
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
// --------------------------------------
|
|
2
|
+
// 🔤 ui-kit Typography
|
|
3
|
+
// --------------------------------------
|
|
4
|
+
//
|
|
5
|
+
// Override these in the consuming app via Sass module configuration:
|
|
6
|
+
//
|
|
7
|
+
// @use "@clanwolf/ui-kit/styles" as theme with (
|
|
8
|
+
// $font-family-base: "'Roboto', sans-serif",
|
|
9
|
+
// $font-family-heading: "'Roboto', sans-serif"
|
|
10
|
+
// );
|
|
11
|
+
//
|
|
12
|
+
// No need to re-import the font files if you override with a font
|
|
13
|
+
// that is already available in your app (e.g. a system font or one
|
|
14
|
+
// loaded via Google Fonts).
|
|
15
|
+
|
|
16
|
+
$font-family-base: "Quantico", sans-serif !default;
|
|
17
|
+
$font-family-heading: "Anta", sans-serif !default;
|
|
18
|
+
|
|
19
|
+
@mixin base-font {
|
|
20
|
+
font-family: $font-family-base;
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
@mixin heading-font {
|
|
24
|
+
font-family: $font-family-heading;
|
|
25
|
+
}
|
|
26
|
+
|