@zenit-hosting/zenit-ui 0.1.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 +400 -0
- package/fesm2022/zenit-hosting-zenit-ui.mjs +11289 -0
- package/fesm2022/zenit-hosting-zenit-ui.mjs.map +1 -0
- package/llms-full.txt +5120 -0
- package/llms.txt +179 -0
- package/package.json +44 -0
- package/schematics/collection.json +15 -0
- package/schematics/migrate-material/component.js +241 -0
- package/schematics/migrate-material/index.js +463 -0
- package/schematics/migrate-material/report.js +125 -0
- package/schematics/migrate-material/schema.js +2 -0
- package/schematics/migrate-material/schema.json +32 -0
- package/schematics/migrate-material/tables.js +138 -0
- package/schematics/migrate-material/template.js +871 -0
- package/schematics/ng-add/html.js +151 -0
- package/schematics/ng-add/index.js +609 -0
- package/schematics/ng-add/init-script.js +108 -0
- package/schematics/ng-add/schema.js +2 -0
- package/schematics/ng-add/schema.json +34 -0
- package/schematics/package.json +3 -0
- package/styles/_daten.css +138 -0
- package/styles/_formulare.css +97 -0
- package/styles/_grundlage.css +424 -0
- package/styles/_konfigurator.css +216 -0
- package/styles/_navigation.css +179 -0
- package/styles/_overlays.css +86 -0
- package/styles/_rueckmeldung.css +100 -0
- package/styles/_werkzeuge.css +119 -0
- package/styles/themes/accents.css +91 -0
- package/styles/themes/base.css +26 -0
- package/styles/themes/contrast.css +67 -0
- package/styles/themes/light.css +74 -0
- package/styles/themes.css +21 -0
- package/styles/tokens.css +76 -0
- package/styles/zenit-ui.css +12 -0
- package/types/zenit-hosting-zenit-ui.d.ts +5957 -0
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
/* Zenit themes / contrast.
|
|
2
|
+
|
|
3
|
+
A high contrast variant of the dark scheme, for glare, cheap panels and
|
|
4
|
+
everyone who turns the operating system setting on. Same token names, same
|
|
5
|
+
roles, same hues: only the distance between them grows. The derivation:
|
|
6
|
+
|
|
7
|
+
1. Surfaces. The ground drops to pure black and the three steps above it grow
|
|
8
|
+
wider than in the dark scheme (#000000, #0b0b0e, #17171d, #24242c), so the
|
|
9
|
+
four levels stay apart although the whole ramp is darker.
|
|
10
|
+
2. Text. text is pure white, text-muted and text-subtle are lifted until they
|
|
11
|
+
clear 7:1 and 4.5:1 with room to spare on all three surfaces; in the dark
|
|
12
|
+
scheme text-subtle sits at 4.78:1 on surface-raised, here at 8.77:1.
|
|
13
|
+
3. Borders. This is the one place where a role really changes: border is no
|
|
14
|
+
longer purely decorative. In the dark scheme it is a hairline at about
|
|
15
|
+
1.3:1; here it reaches 3:1 on surface (3.07:1, and 3.29:1 on bg, 2.79:1
|
|
16
|
+
on surface-raised), so the line between two rows is visible without
|
|
17
|
+
relying on the difference between the two surfaces. border-control stays
|
|
18
|
+
clearly above it (2.75:1 between the two lines).
|
|
19
|
+
4. Accent. The fill is the one of the dark scheme. A deeper fill sinks into
|
|
20
|
+
the black ground (the former hover #ab1033 stood at 2.85:1 against bg), a
|
|
21
|
+
lighter one costs white as on-accent its 4.5:1: 4.70:1 on accent, 6.29:1
|
|
22
|
+
on accent-hover. accent-text is brightened so red text clears 4.5:1 on a
|
|
23
|
+
black ground.
|
|
24
|
+
5. Status. The four status colours are brightened versions of the dark ones
|
|
25
|
+
and the -subtle fills go from 12 % to 16 % opacity, so a badge is a fill
|
|
26
|
+
and not a guess. danger is pushed towards orange: with a red-green
|
|
27
|
+
deficiency (deuteranopia) the former #ffa08c sat next to success at a
|
|
28
|
+
colour difference of about 3.5, #ff9661 at about 17.8. It keeps its
|
|
29
|
+
distance from accent-text in luminance as well.
|
|
30
|
+
6. focus stays white; against every surface and against accent it is far
|
|
31
|
+
above the required 3:1.
|
|
32
|
+
7. scrim and shadow-overlay go to 80 % black: on a black ground a 50 % scrim
|
|
33
|
+
no longer separates the dialog from the page.
|
|
34
|
+
|
|
35
|
+
No new effects: no gradient, one shadow, same radii, same type scale.
|
|
36
|
+
All values are verified by tools/check-theme-contrast.mjs. */
|
|
37
|
+
[data-theme="contrast"] {
|
|
38
|
+
color-scheme: dark;
|
|
39
|
+
--bg: #000000;
|
|
40
|
+
--surface: #0b0b0e;
|
|
41
|
+
--surface-raised: #17171d;
|
|
42
|
+
--surface-hover: #24242c;
|
|
43
|
+
--border: #5e5e6a;
|
|
44
|
+
--border-control: #a9a9b5;
|
|
45
|
+
--text: #ffffff;
|
|
46
|
+
--text-muted: #d5d9e1;
|
|
47
|
+
--text-subtle: #b0b6c2;
|
|
48
|
+
--accent: #e11d48;
|
|
49
|
+
--accent-hover: #be123c;
|
|
50
|
+
--on-accent: #ffffff;
|
|
51
|
+
--accent-text: #ff6b85;
|
|
52
|
+
--accent-subtle: rgba(255, 107, 133, 0.16);
|
|
53
|
+
--scrim: rgba(0, 0, 0, 0.8);
|
|
54
|
+
--focus: #ffffff;
|
|
55
|
+
--success: #7ce38b;
|
|
56
|
+
--success-subtle: rgba(124, 227, 139, 0.16);
|
|
57
|
+
--warning: #ffc75c;
|
|
58
|
+
--warning-subtle: rgba(255, 199, 92, 0.16);
|
|
59
|
+
--danger: #ff9661;
|
|
60
|
+
--danger-subtle: rgba(255, 150, 97, 0.16);
|
|
61
|
+
--info: #9ccdff;
|
|
62
|
+
--info-subtle: rgba(156, 205, 255, 0.16);
|
|
63
|
+
--mc-accent: #78d964;
|
|
64
|
+
--mc-accent-hover: #63bd51;
|
|
65
|
+
--on-mc: #031e06;
|
|
66
|
+
--shadow-overlay: 0 8px 24px rgba(0, 0, 0, 0.8);
|
|
67
|
+
}
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
/* Zenit themes / light.
|
|
2
|
+
|
|
3
|
+
Every token name and role of tokens.css stays as it is; only the values
|
|
4
|
+
change. The dark scheme is not touched. These values are derived, not
|
|
5
|
+
specified: spec/tokens.json knows one colour scheme (dark). The derivation:
|
|
6
|
+
|
|
7
|
+
1. Surfaces. Dark steps up from the page ground (#060608) to the active row
|
|
8
|
+
(#1b1b21) in four values. Light mirrors that and steps DOWN from white, in
|
|
9
|
+
slightly larger absolute steps because the eye separates light greys less
|
|
10
|
+
well: #ffffff, #f4f4f6, #eaeaee, #dfdfe5. The faint blue cast of the dark
|
|
11
|
+
ramp (blue channel a few points above red and green) is kept.
|
|
12
|
+
2. Text. Three levels, measured against bg, surface AND surface-raised; the
|
|
13
|
+
darkest of the three (surface-raised) is the worst case for dark type.
|
|
14
|
+
text >= 12:1, text-muted >= 7:1, text-subtle >= 4.5:1.
|
|
15
|
+
3. Borders. border is decorative and stays low contrast. border-control
|
|
16
|
+
carries meaning and keeps >= 3:1 on surface.
|
|
17
|
+
4. Accent. Rot stays the brand. The fill (accent, accent-hover) is deepened
|
|
18
|
+
until white as on-accent clears 4.5:1 on both, and accent-text is deepened
|
|
19
|
+
further until it clears 4.5:1 on bg and on surface.
|
|
20
|
+
5. Status. On a light ground a status colour has to be dark, so success,
|
|
21
|
+
warning, danger and info are the deep variants of the dark hues. The
|
|
22
|
+
-subtle fills are NOT the same colour at 10 % opacity: on a light ground
|
|
23
|
+
that darkens the badge and eats the contrast the word inside it needs.
|
|
24
|
+
They are opaque light tints of the same hue instead, lighter than
|
|
25
|
+
surface-raised, which keeps the status word above 4.5:1 on its own badge.
|
|
26
|
+
6. danger stays visibly apart from accent-text (CLAUDE.md, "Farbe"): it is
|
|
27
|
+
the more orange and the lighter of the two, measured as >= 1.25:1 between
|
|
28
|
+
the two colours. It is also read on surface-raised and surface-hover (the
|
|
29
|
+
danger item of a menu and its hover), so it clears 4.5:1 there as well;
|
|
30
|
+
surface-hover is the binding ground (4.59:1).
|
|
31
|
+
7. focus is near black here, the counterpart of white in the dark scheme. It
|
|
32
|
+
keeps >= 3:1 against all four surfaces and against accent. It does not
|
|
33
|
+
against accent-hover (2.41:1 with rot), and it cannot: a fill that keeps
|
|
34
|
+
white at 4.5:1 and near black at 3:1 has to sit in a band so narrow that
|
|
35
|
+
hover would look like rest. The ring does not need it, because it is
|
|
36
|
+
drawn with a 2px offset and lies on the surface around the button, never
|
|
37
|
+
on the fill.
|
|
38
|
+
8. scrim and shadow-overlay stay black based but lose weight; a light page
|
|
39
|
+
does not need a 50 % shadow to lift a dialog.
|
|
40
|
+
9. Minecraft subtheme: mc-accent is deepened so the primary button carries on
|
|
41
|
+
a white ground, and on-mc becomes white instead of the dark green.
|
|
42
|
+
|
|
43
|
+
All values are verified by tools/check-theme-contrast.mjs. */
|
|
44
|
+
[data-theme="light"] {
|
|
45
|
+
color-scheme: light;
|
|
46
|
+
--bg: #ffffff;
|
|
47
|
+
--surface: #f4f4f6;
|
|
48
|
+
--surface-raised: #eaeaee;
|
|
49
|
+
--surface-hover: #dfdfe5;
|
|
50
|
+
--border: #dcdce2;
|
|
51
|
+
--border-control: #85858f;
|
|
52
|
+
--text: #18181b;
|
|
53
|
+
--text-muted: #4a4a54;
|
|
54
|
+
--text-subtle: #66666f;
|
|
55
|
+
--accent: #c2123f;
|
|
56
|
+
--accent-hover: #9d0e33;
|
|
57
|
+
--on-accent: #ffffff;
|
|
58
|
+
--accent-text: #a11039;
|
|
59
|
+
--accent-subtle: #fbe7ec;
|
|
60
|
+
--scrim: rgba(9, 9, 11, 0.5);
|
|
61
|
+
--focus: #09090b;
|
|
62
|
+
--success: #166534;
|
|
63
|
+
--success-subtle: #e4f3e7;
|
|
64
|
+
--warning: #8a5300;
|
|
65
|
+
--warning-subtle: #fdf0dc;
|
|
66
|
+
--danger: #b5330f;
|
|
67
|
+
--danger-subtle: #fdece7;
|
|
68
|
+
--info: #17548f;
|
|
69
|
+
--info-subtle: #e4eefa;
|
|
70
|
+
--mc-accent: #2f7d32;
|
|
71
|
+
--mc-accent-hover: #276b2a;
|
|
72
|
+
--on-mc: #ffffff;
|
|
73
|
+
--shadow-overlay: 0 8px 24px rgba(9, 9, 11, 0.18);
|
|
74
|
+
}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
/* Zenit themes: every colour scheme and every accent of the library in one
|
|
2
|
+
file. Opt in, never part of zenit-ui.css, because a product that only ships
|
|
3
|
+
the dark scheme should not pay for the rest.
|
|
4
|
+
|
|
5
|
+
Include order: tokens.css, then this file, then zenit-ui.css. tokens.css has
|
|
6
|
+
to come first: :root and [data-theme="light"] have the same specificity
|
|
7
|
+
(0,1,0), so the later rule wins, not the more specific one.
|
|
8
|
+
|
|
9
|
+
From a package: @import "zenit-ui/styles/themes.css";
|
|
10
|
+
Single schemes: @import "zenit-ui/styles/themes/base.css";
|
|
11
|
+
@import "zenit-ui/styles/themes/light.css";
|
|
12
|
+
The order inside this file is fixed: base sets color-scheme for dark, light
|
|
13
|
+
and contrast override it, accents override the accent tokens of all three.
|
|
14
|
+
|
|
15
|
+
Checked by tools/check-theme-contrast.mjs, which reads this file to learn
|
|
16
|
+
the include order. */
|
|
17
|
+
|
|
18
|
+
@import "./themes/base.css";
|
|
19
|
+
@import "./themes/light.css";
|
|
20
|
+
@import "./themes/contrast.css";
|
|
21
|
+
@import "./themes/accents.css";
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
/* Zenit tokens.css: kompiliert aus tokens.json (Version 1). Einzige Stelle mit Hex- und Pixel-Werten. Nicht von Hand ändern. */
|
|
2
|
+
:root, [data-theme="dark"] {
|
|
3
|
+
--bg: #060608;
|
|
4
|
+
--surface: #0e0e11;
|
|
5
|
+
--surface-raised: #15151a;
|
|
6
|
+
--surface-hover: #1b1b21;
|
|
7
|
+
--border: #26262c;
|
|
8
|
+
--border-control: #62626d;
|
|
9
|
+
--text: #f2f2f3;
|
|
10
|
+
--text-muted: #9ca3af;
|
|
11
|
+
--text-subtle: #7d838f;
|
|
12
|
+
--accent: #e11d48;
|
|
13
|
+
--accent-hover: #be123c;
|
|
14
|
+
--on-accent: #ffffff;
|
|
15
|
+
--accent-text: #ff2d4f;
|
|
16
|
+
--accent-subtle: rgba(255, 45, 79, 0.1);
|
|
17
|
+
--scrim: rgba(0, 0, 0, 0.6);
|
|
18
|
+
--focus: #ffffff;
|
|
19
|
+
--success: #4caf50;
|
|
20
|
+
--success-subtle: rgba(76, 175, 80, 0.12);
|
|
21
|
+
--warning: #f5a524;
|
|
22
|
+
--warning-subtle: rgba(245, 165, 36, 0.12);
|
|
23
|
+
--danger: #ff6b6b;
|
|
24
|
+
--danger-subtle: rgba(255, 107, 107, 0.12);
|
|
25
|
+
--info: #6cb6ff;
|
|
26
|
+
--info-subtle: rgba(108, 182, 255, 0.12);
|
|
27
|
+
--mc-accent: #5fb84e;
|
|
28
|
+
--mc-accent-hover: #4ea03f;
|
|
29
|
+
--on-mc: #06280a;
|
|
30
|
+
--chart-1: #3987e5;
|
|
31
|
+
--chart-2: #d95926;
|
|
32
|
+
--chart-3: #199e70;
|
|
33
|
+
--chart-4: #c98500;
|
|
34
|
+
--shadow-overlay: 0 8px 24px rgba(0, 0, 0, 0.5);
|
|
35
|
+
}
|
|
36
|
+
:root {
|
|
37
|
+
--space-1: 4px;
|
|
38
|
+
--space-2: 8px;
|
|
39
|
+
--space-3: 12px;
|
|
40
|
+
--space-4: 16px;
|
|
41
|
+
--space-5: 24px;
|
|
42
|
+
--space-6: 32px;
|
|
43
|
+
--space-7: 48px;
|
|
44
|
+
--space-8: 64px;
|
|
45
|
+
--space-9: 96px;
|
|
46
|
+
--radius-sm: 4px;
|
|
47
|
+
--radius-md: 8px;
|
|
48
|
+
--radius-full: 9999px;
|
|
49
|
+
--control-sm: 32px;
|
|
50
|
+
--control-md: 40px;
|
|
51
|
+
--control-lg: 48px;
|
|
52
|
+
--icon: 20px;
|
|
53
|
+
--container: 1120px;
|
|
54
|
+
--sidebar: 240px;
|
|
55
|
+
--header: 56px;
|
|
56
|
+
--measure: 65ch;
|
|
57
|
+
--z-header: 100;
|
|
58
|
+
--z-overlay: 1000;
|
|
59
|
+
--z-toast: 1100;
|
|
60
|
+
--font-display: "Space Grotesk", system-ui, sans-serif;
|
|
61
|
+
--font-body: "Inter", system-ui, sans-serif;
|
|
62
|
+
--font-mono: "JetBrains Mono", ui-monospace, monospace;
|
|
63
|
+
}
|
|
64
|
+
.display-xl { font-family: var(--font-display); font-size: 56px; line-height: 60px; font-weight: 700; letter-spacing: -0.02em; }
|
|
65
|
+
.display-lg { font-family: var(--font-display); font-size: 40px; line-height: 44px; font-weight: 700; letter-spacing: -0.02em; }
|
|
66
|
+
.heading-1 { font-family: var(--font-display); font-size: 28px; line-height: 34px; font-weight: 600; letter-spacing: -0.01em; }
|
|
67
|
+
.heading-2 { font-family: var(--font-display); font-size: 20px; line-height: 28px; font-weight: 600; }
|
|
68
|
+
.body-lg { font-family: var(--font-body); font-size: 20px; line-height: 30px; font-weight: 400; }
|
|
69
|
+
.body { font-family: var(--font-body); font-size: 16px; line-height: 24px; font-weight: 400; }
|
|
70
|
+
.body-sm { font-family: var(--font-body); font-size: 14px; line-height: 20px; font-weight: 400; }
|
|
71
|
+
.title-sm { font-family: var(--font-body); font-size: 14px; line-height: 20px; font-weight: 600; }
|
|
72
|
+
.caption { font-family: var(--font-body); font-size: 12px; line-height: 16px; font-weight: 400; }
|
|
73
|
+
.mono-xl { font-family: var(--font-mono); font-size: 28px; line-height: 34px; font-weight: 600; }
|
|
74
|
+
.mono-lg { font-family: var(--font-mono); font-size: 20px; line-height: 28px; font-weight: 600; }
|
|
75
|
+
.mono { font-family: var(--font-mono); font-size: 14px; line-height: 20px; font-weight: 400; }
|
|
76
|
+
.mono-sm { font-family: var(--font-mono); font-size: 12px; line-height: 16px; font-weight: 400; }
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/* Zenit UI: styles of the zenit-ui library. Every value comes from tokens.css.
|
|
2
|
+
Include order: tokens.css, then @angular/cdk/overlay-prebuilt.css, then this file.
|
|
3
|
+
The class z-root belongs on <html> and <body>. */
|
|
4
|
+
|
|
5
|
+
@import "./_grundlage.css";
|
|
6
|
+
@import "./_formulare.css";
|
|
7
|
+
@import "./_navigation.css";
|
|
8
|
+
@import "./_daten.css";
|
|
9
|
+
@import "./_rueckmeldung.css";
|
|
10
|
+
@import "./_overlays.css";
|
|
11
|
+
@import "./_werkzeuge.css";
|
|
12
|
+
@import "./_konfigurator.css";
|