@hubpav/hwio-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 +8 -0
- package/package.json +40 -0
- package/src/components/HWioBreadcrumbs.astro +19 -0
- package/src/components/HWioButton.astro +43 -0
- package/src/components/HWioChoiceCards.astro +31 -0
- package/src/components/HWioContactSection.astro +37 -0
- package/src/components/HWioCookieConsent.astro +87 -0
- package/src/components/HWioCtaBand.astro +20 -0
- package/src/components/HWioFaq.astro +19 -0
- package/src/components/HWioFeatureCard.astro +15 -0
- package/src/components/HWioFeatureGrid.astro +9 -0
- package/src/components/HWioFontGate.astro +18 -0
- package/src/components/HWioFooter.astro +96 -0
- package/src/components/HWioFooterSites.astro +16 -0
- package/src/components/HWioFormField.astro +29 -0
- package/src/components/HWioHeader.astro +92 -0
- package/src/components/HWioHeroSplit.astro +33 -0
- package/src/components/HWioHubSpotForm.astro +58 -0
- package/src/components/HWioIcon.astro +44 -0
- package/src/components/HWioLanguageSwitcher.astro +27 -0
- package/src/components/HWioLogoStrip.astro +29 -0
- package/src/components/HWioNotFound.astro +12 -0
- package/src/components/HWioPricingTiers.astro +28 -0
- package/src/components/HWioProcessSteps.astro +17 -0
- package/src/components/HWioSection.astro +10 -0
- package/src/components/HWioSectionHeader.astro +24 -0
- package/src/components/HWioSeoHead.astro +83 -0
- package/src/components/HWioShell.astro +20 -0
- package/src/components/HWioSkipLink.astro +5 -0
- package/src/components/HWioStatsBand.astro +27 -0
- package/src/components/HWioThemeToggle.astro +22 -0
- package/src/components/HWioTurnstile.astro +10 -0
- package/src/html.ts +31 -0
- package/src/integration.mjs +61 -0
- package/src/schemas.ts +51 -0
- package/src/styles/prose.css +24 -0
- package/src/styles/styles.css +221 -0
- package/src/styles/themes/er3o.css +55 -0
- package/src/styles/themes/hwio-dark.css +49 -0
- package/src/styles/themes/hwio-forestry-dark.css +42 -0
- package/src/styles/themes/hwio-forestry.css +42 -0
- package/src/styles/themes/hwio.css +42 -0
- package/src/types.ts +51 -0
|
@@ -0,0 +1,221 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* @hubpav/hwio-ui entry stylesheet. A site's global.css does:
|
|
3
|
+
* @import "tailwindcss";
|
|
4
|
+
* @import "@hubpav/hwio-ui/styles.css";
|
|
5
|
+
* @import "@hubpav/hwio-ui/themes/hwio.css"; exactly one light theme (default: true)
|
|
6
|
+
* @import "@hubpav/hwio-ui/themes/hwio-dark.css"; optional: at most one dark theme (prefersdark)
|
|
7
|
+
* @import "@hubpav/hwio-brand/fonts/inter.css";
|
|
8
|
+
* :root { --hwio-container: 1640px; } landing preset only (hub sites keep 1275px)
|
|
9
|
+
*/
|
|
10
|
+
@plugin "daisyui" {
|
|
11
|
+
themes: false;
|
|
12
|
+
exclude: rootscrollgutter;
|
|
13
|
+
logs: false;
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
/* The package's own component sources, so Tailwind emits the classes they use. */
|
|
17
|
+
@source "../components";
|
|
18
|
+
|
|
19
|
+
@theme inline {
|
|
20
|
+
--font-sans: var(--hwio-font-sans);
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
/* One container for the fleet; width comes from the theme (hub) or the site (landing). */
|
|
24
|
+
@utility container {
|
|
25
|
+
width: 100%;
|
|
26
|
+
margin-inline: auto;
|
|
27
|
+
max-width: var(--hwio-container);
|
|
28
|
+
padding-inline: var(--hwio-container-pad);
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
@layer base {
|
|
32
|
+
html {
|
|
33
|
+
font-family: var(--hwio-font-sans);
|
|
34
|
+
scroll-behavior: smooth;
|
|
35
|
+
scroll-padding-top: 100px;
|
|
36
|
+
}
|
|
37
|
+
html.is-routing {
|
|
38
|
+
scroll-behavior: auto;
|
|
39
|
+
}
|
|
40
|
+
body {
|
|
41
|
+
-webkit-font-smoothing: antialiased;
|
|
42
|
+
overflow-x: hidden;
|
|
43
|
+
background-color: var(--color-base-100);
|
|
44
|
+
color: var(--color-base-content);
|
|
45
|
+
font-size: 1.0625rem; /* 17 px body (direction A) */
|
|
46
|
+
line-height: 1.6;
|
|
47
|
+
}
|
|
48
|
+
button:not(:disabled),
|
|
49
|
+
[role='button']:not(:disabled) {
|
|
50
|
+
cursor: pointer;
|
|
51
|
+
}
|
|
52
|
+
/* Type ramp (direction A): 56 / 40 / 28 / 22 / 17 on large screens, tighter tracking as size grows. */
|
|
53
|
+
h1, h2, h3, h4, h5, h6 {
|
|
54
|
+
font-weight: 700;
|
|
55
|
+
text-wrap: balance;
|
|
56
|
+
}
|
|
57
|
+
h1 { font-size: 2.5rem; line-height: 1.05; letter-spacing: -0.03em; }
|
|
58
|
+
h2 { font-size: 2rem; line-height: 1.1; letter-spacing: -0.025em; }
|
|
59
|
+
h3 { font-size: 1.375rem; line-height: 1.2; letter-spacing: -0.01em; }
|
|
60
|
+
h4 { font-size: 1.125rem; line-height: 1.3; letter-spacing: -0.005em; }
|
|
61
|
+
@media (width >= 48rem) {
|
|
62
|
+
h1 { font-size: 3rem; }
|
|
63
|
+
h2 { font-size: 2.5rem; }
|
|
64
|
+
h3 { font-size: 1.375rem; }
|
|
65
|
+
}
|
|
66
|
+
@media (width >= 64rem) {
|
|
67
|
+
h1 { font-size: 3.5rem; }
|
|
68
|
+
}
|
|
69
|
+
:focus-visible {
|
|
70
|
+
outline: 2px solid var(--color-secondary);
|
|
71
|
+
outline-offset: 2px;
|
|
72
|
+
}
|
|
73
|
+
/* Font gate (owner ruling R3): text stays invisible until the face decodes; a bounded
|
|
74
|
+
failure pins the metric-matched fallback so nothing repaints later. */
|
|
75
|
+
html.fonts-loading body > :not([data-hwio-font-exempt]) {
|
|
76
|
+
visibility: hidden;
|
|
77
|
+
}
|
|
78
|
+
html.fonts-failed {
|
|
79
|
+
--hwio-font-sans: 'Inter Fallback', ui-sans-serif, system-ui, sans-serif;
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
@layer components {
|
|
84
|
+
/* Rhythm (direction A): 80 / 112 px sections, 40 / 48 px compact bands. */
|
|
85
|
+
.hwio-section { padding-block: calc(var(--spacing) * 20); }
|
|
86
|
+
.hwio-section-compact { padding-block: calc(var(--spacing) * 10); }
|
|
87
|
+
@media (width >= 64rem) {
|
|
88
|
+
.hwio-section { padding-block: calc(var(--spacing) * 28); }
|
|
89
|
+
.hwio-section-compact { padding-block: calc(var(--spacing) * 12); }
|
|
90
|
+
}
|
|
91
|
+
/* Kicker: the sentence-case red label above a heading (replaces www's uppercase eyebrows). */
|
|
92
|
+
.hwio-kicker,
|
|
93
|
+
.hwio-eyebrow {
|
|
94
|
+
color: var(--color-accent);
|
|
95
|
+
font-size: 0.875rem;
|
|
96
|
+
font-weight: 600;
|
|
97
|
+
line-height: 1.4;
|
|
98
|
+
}
|
|
99
|
+
.hwio-tone-neutral .hwio-kicker,
|
|
100
|
+
.hwio-tone-neutral .hwio-eyebrow {
|
|
101
|
+
color: var(--hwio-kicker-on-neutral, var(--color-accent));
|
|
102
|
+
}
|
|
103
|
+
.hwio-muted {
|
|
104
|
+
color: color-mix(in oklab, var(--color-base-content) 72%, transparent);
|
|
105
|
+
}
|
|
106
|
+
.hwio-tone-neutral .hwio-muted {
|
|
107
|
+
color: color-mix(in oklab, var(--color-neutral-content) 75%, transparent);
|
|
108
|
+
}
|
|
109
|
+
.hwio-lead {
|
|
110
|
+
font-size: 1.1875rem;
|
|
111
|
+
line-height: 1.55;
|
|
112
|
+
color: color-mix(in oklab, var(--color-base-content) 72%, transparent);
|
|
113
|
+
}
|
|
114
|
+
.hwio-tone-neutral .hwio-lead {
|
|
115
|
+
color: color-mix(in oklab, var(--color-neutral-content) 75%, transparent);
|
|
116
|
+
}
|
|
117
|
+
.hwio-hairline { border-color: var(--color-base-300); }
|
|
118
|
+
/* Inverse button for ink/neutral panels (navy on ink has no contrast). */
|
|
119
|
+
.hwio-btn-inverse {
|
|
120
|
+
background-color: var(--color-base-100);
|
|
121
|
+
border-color: var(--color-base-100);
|
|
122
|
+
color: var(--color-neutral);
|
|
123
|
+
}
|
|
124
|
+
.hwio-btn-inverse:hover {
|
|
125
|
+
background-color: var(--color-base-200);
|
|
126
|
+
border-color: var(--color-base-200);
|
|
127
|
+
}
|
|
128
|
+
.hwio-chip {
|
|
129
|
+
display: inline-flex;
|
|
130
|
+
align-items: center;
|
|
131
|
+
padding: calc(var(--spacing) * 1.5) calc(var(--spacing) * 3);
|
|
132
|
+
border-radius: 9999px;
|
|
133
|
+
background: color-mix(in oklab, var(--color-base-content) 6%, transparent);
|
|
134
|
+
font-size: var(--text-sm);
|
|
135
|
+
font-weight: 500;
|
|
136
|
+
}
|
|
137
|
+
/* Honeypot: off-screen, never display:none (bots check that), no inline style attribute. */
|
|
138
|
+
.hwio-hp {
|
|
139
|
+
position: absolute;
|
|
140
|
+
left: -9999px;
|
|
141
|
+
width: 1px;
|
|
142
|
+
height: 1px;
|
|
143
|
+
overflow: hidden;
|
|
144
|
+
opacity: 0;
|
|
145
|
+
}
|
|
146
|
+
[data-hs-status] {
|
|
147
|
+
margin-top: calc(var(--spacing) * 3);
|
|
148
|
+
font-size: var(--text-sm);
|
|
149
|
+
line-height: 1.4;
|
|
150
|
+
}
|
|
151
|
+
[data-hs-status].hs-status-success { color: var(--color-success); }
|
|
152
|
+
[data-hs-status].hs-status-error { color: var(--color-error); }
|
|
153
|
+
|
|
154
|
+
/* Scroll reveal: visible at rest for no-JS, animates in once the runtime marks it. */
|
|
155
|
+
.js [data-hwio-reveal]:not([data-hwio-revealed]) {
|
|
156
|
+
opacity: 0;
|
|
157
|
+
transform: translateY(24px);
|
|
158
|
+
}
|
|
159
|
+
[data-hwio-reveal] {
|
|
160
|
+
transition: opacity 0.6s ease-out, transform 0.6s ease-out;
|
|
161
|
+
}
|
|
162
|
+
[data-hwio-reveal][data-hwio-revealed] {
|
|
163
|
+
opacity: 1;
|
|
164
|
+
transform: none;
|
|
165
|
+
}
|
|
166
|
+
|
|
167
|
+
/* Count-up: reserve the width of the final value so the layout never jumps. */
|
|
168
|
+
.hwio-stat-value {
|
|
169
|
+
display: block;
|
|
170
|
+
font-variant-numeric: tabular-nums;
|
|
171
|
+
white-space: nowrap;
|
|
172
|
+
}
|
|
173
|
+
|
|
174
|
+
/* Logo marquee */
|
|
175
|
+
.hwio-marquee-track {
|
|
176
|
+
width: max-content;
|
|
177
|
+
animation: hwio-marquee 38s linear infinite;
|
|
178
|
+
will-change: transform;
|
|
179
|
+
}
|
|
180
|
+
.hwio-marquee-track:hover,
|
|
181
|
+
.hwio-marquee-track:focus-within {
|
|
182
|
+
animation-play-state: paused;
|
|
183
|
+
}
|
|
184
|
+
@keyframes hwio-marquee {
|
|
185
|
+
to { transform: translate3d(-25%, 0, 0); }
|
|
186
|
+
}
|
|
187
|
+
.hwio-logo-grey {
|
|
188
|
+
filter: grayscale(100%);
|
|
189
|
+
opacity: 0.55;
|
|
190
|
+
transition: filter 0.3s, opacity 0.3s;
|
|
191
|
+
}
|
|
192
|
+
.hwio-logo-grey:hover { filter: none; opacity: 1; }
|
|
193
|
+
[data-theme$='-dark'] .hwio-logo-grey { filter: grayscale(100%) invert(1); }
|
|
194
|
+
[data-theme$='-dark'] .hwio-logo-grey:hover { filter: grayscale(100%) invert(1); opacity: 1; }
|
|
195
|
+
|
|
196
|
+
.hwio-theme-transition,
|
|
197
|
+
.hwio-theme-transition *,
|
|
198
|
+
.hwio-theme-transition *::before,
|
|
199
|
+
.hwio-theme-transition *::after {
|
|
200
|
+
transition: background-color 0.3s ease, color 0.3s ease, border-color 0.3s ease !important;
|
|
201
|
+
}
|
|
202
|
+
|
|
203
|
+
@media (prefers-reduced-motion: reduce) {
|
|
204
|
+
[data-hwio-reveal] { opacity: 1 !important; transform: none !important; transition: none !important; }
|
|
205
|
+
.hwio-marquee-track { animation: none; transform: none; will-change: auto; }
|
|
206
|
+
.hwio-marquee-track > [aria-hidden='true'] { display: none; }
|
|
207
|
+
}
|
|
208
|
+
}
|
|
209
|
+
|
|
210
|
+
/* Brand overrides of DaisyUI defaults. Unlayered on purpose: DaisyUI lives in the utilities layer
|
|
211
|
+
and would otherwise win. Direction A: 15 px/600 sentence-case buttons, 48 px tall, 8 px radius,
|
|
212
|
+
28 px padding on large buttons at the same height; card padding 32 px. */
|
|
213
|
+
.btn {
|
|
214
|
+
--fontsize: 0.9375rem;
|
|
215
|
+
font-weight: 600;
|
|
216
|
+
padding-inline: 1.5rem;
|
|
217
|
+
}
|
|
218
|
+
.btn-sm { --fontsize: 0.875rem; padding-inline: 1rem; }
|
|
219
|
+
.btn-lg { height: var(--size); --fontsize: 0.9375rem; padding-inline: 1.75rem; }
|
|
220
|
+
.btn-square, .btn-circle { padding-inline: 0; }
|
|
221
|
+
.card .card-body { --card-p: 2rem; }
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
/* Generated from brand.json by @hubpav/hwio-ui (scripts/build-themes.mjs). Theme "er3o". */
|
|
2
|
+
@plugin "daisyui/theme" {
|
|
3
|
+
name: "er3o";
|
|
4
|
+
default: false;
|
|
5
|
+
prefersdark: false;
|
|
6
|
+
color-scheme: light;
|
|
7
|
+
--color-base-100: #ffffff;
|
|
8
|
+
--color-base-200: #f9fafb;
|
|
9
|
+
--color-base-300: #f3f4f6;
|
|
10
|
+
--color-base-content: #333333;
|
|
11
|
+
--color-primary: #14A0C0;
|
|
12
|
+
--color-primary-content: #ffffff;
|
|
13
|
+
--color-secondary: #01CC9B;
|
|
14
|
+
--color-secondary-content: #061920;
|
|
15
|
+
--color-accent: #0C6678;
|
|
16
|
+
--color-accent-content: #ffffff;
|
|
17
|
+
--color-neutral: #252532;
|
|
18
|
+
--color-neutral-content: #ffffff;
|
|
19
|
+
--color-info: #19768B;
|
|
20
|
+
--color-info-content: #ffffff;
|
|
21
|
+
--color-success: #15803d;
|
|
22
|
+
--color-success-content: #ffffff;
|
|
23
|
+
--color-warning: #b45309;
|
|
24
|
+
--color-warning-content: #ffffff;
|
|
25
|
+
--color-error: #dc2626;
|
|
26
|
+
--color-error-content: #ffffff;
|
|
27
|
+
--radius-selector: 2rem;
|
|
28
|
+
--radius-field: 2rem;
|
|
29
|
+
--radius-box: 1.5rem;
|
|
30
|
+
--size-selector: 0.25rem;
|
|
31
|
+
--size-field: 0.3rem;
|
|
32
|
+
--border: 1px;
|
|
33
|
+
--depth: 0;
|
|
34
|
+
--noise: 0;
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
[data-theme="er3o"] {
|
|
38
|
+
--hwio-font-sans: 'Poppins', 'Poppins Fallback', ui-sans-serif, system-ui, sans-serif;
|
|
39
|
+
--hwio-container: 1275px;
|
|
40
|
+
--hwio-container-pad: 27px;
|
|
41
|
+
--er3o-gradient-from: #01CC9B;
|
|
42
|
+
--er3o-gradient-to: #14A0C0;
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
/* ENEROOO carries its gradient as a theme rule: DaisyUI slots are single colours. */
|
|
46
|
+
[data-theme="er3o"] .btn-primary {
|
|
47
|
+
background-image: linear-gradient(90deg, var(--er3o-gradient-from), var(--er3o-gradient-to));
|
|
48
|
+
border-color: transparent;
|
|
49
|
+
}
|
|
50
|
+
[data-theme="er3o"] .er3o-gradient-text {
|
|
51
|
+
background-image: linear-gradient(90deg, var(--er3o-gradient-from), var(--er3o-gradient-to));
|
|
52
|
+
-webkit-background-clip: text;
|
|
53
|
+
background-clip: text;
|
|
54
|
+
color: transparent;
|
|
55
|
+
}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
/* Generated from brand.json by @hubpav/hwio-ui (scripts/build-themes.mjs). Theme "hwio-dark". */
|
|
2
|
+
@plugin "daisyui/theme" {
|
|
3
|
+
name: "hwio-dark";
|
|
4
|
+
default: false;
|
|
5
|
+
prefersdark: true;
|
|
6
|
+
color-scheme: dark;
|
|
7
|
+
--color-base-100: #0f0f14;
|
|
8
|
+
--color-base-200: #1a1a22;
|
|
9
|
+
--color-base-300: #23232f;
|
|
10
|
+
--color-base-content: #e7e7ee;
|
|
11
|
+
--color-primary: #06367a;
|
|
12
|
+
--color-primary-content: #ffffff;
|
|
13
|
+
--color-secondary: #016ad4;
|
|
14
|
+
--color-secondary-content: #ffffff;
|
|
15
|
+
--color-accent: #f43f5e;
|
|
16
|
+
--color-accent-content: #0f0f14;
|
|
17
|
+
--color-neutral: #23232f;
|
|
18
|
+
--color-neutral-content: #e7e7ee;
|
|
19
|
+
--color-info: #009cfa;
|
|
20
|
+
--color-info-content: #06367a;
|
|
21
|
+
--color-success: #15803d;
|
|
22
|
+
--color-success-content: #ffffff;
|
|
23
|
+
--color-warning: #b45309;
|
|
24
|
+
--color-warning-content: #ffffff;
|
|
25
|
+
--color-error: #dc2626;
|
|
26
|
+
--color-error-content: #ffffff;
|
|
27
|
+
--radius-selector: 2rem;
|
|
28
|
+
--radius-field: 0.5rem;
|
|
29
|
+
--radius-box: 1rem;
|
|
30
|
+
--size-selector: 0.25rem;
|
|
31
|
+
--size-field: 0.3rem;
|
|
32
|
+
--border: 1px;
|
|
33
|
+
--depth: 0;
|
|
34
|
+
--noise: 0;
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
[data-theme="hwio-dark"] {
|
|
38
|
+
--hwio-font-sans: 'Inter', 'Inter Fallback', ui-sans-serif, system-ui, sans-serif;
|
|
39
|
+
--hwio-container: 1275px;
|
|
40
|
+
--hwio-container-pad: 27px;
|
|
41
|
+
--hwio-kicker-on-neutral: #f43f5e;
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
@media (prefers-color-scheme: dark) {
|
|
45
|
+
:root:not([data-theme]) {
|
|
46
|
+
--hwio-font-sans: 'Inter', 'Inter Fallback', ui-sans-serif, system-ui, sans-serif;
|
|
47
|
+
--hwio-kicker-on-neutral: #f43f5e;
|
|
48
|
+
}
|
|
49
|
+
}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
/* Generated from brand.json by @hubpav/hwio-ui (scripts/build-themes.mjs). Theme "hwio-forestry-dark". */
|
|
2
|
+
@plugin "daisyui/theme" {
|
|
3
|
+
name: "hwio-forestry-dark";
|
|
4
|
+
default: false;
|
|
5
|
+
prefersdark: false;
|
|
6
|
+
color-scheme: dark;
|
|
7
|
+
--color-base-100: #0f0f14;
|
|
8
|
+
--color-base-200: #1a1a22;
|
|
9
|
+
--color-base-300: #23232f;
|
|
10
|
+
--color-base-content: #e7e7ee;
|
|
11
|
+
--color-primary: #2B7036;
|
|
12
|
+
--color-primary-content: #ffffff;
|
|
13
|
+
--color-secondary: #016ad4;
|
|
14
|
+
--color-secondary-content: #ffffff;
|
|
15
|
+
--color-accent: #5aa864;
|
|
16
|
+
--color-accent-content: #0f0f14;
|
|
17
|
+
--color-neutral: #23232f;
|
|
18
|
+
--color-neutral-content: #e7e7ee;
|
|
19
|
+
--color-info: #009cfa;
|
|
20
|
+
--color-info-content: #06367a;
|
|
21
|
+
--color-success: #15803d;
|
|
22
|
+
--color-success-content: #ffffff;
|
|
23
|
+
--color-warning: #b45309;
|
|
24
|
+
--color-warning-content: #ffffff;
|
|
25
|
+
--color-error: #dc2626;
|
|
26
|
+
--color-error-content: #ffffff;
|
|
27
|
+
--radius-selector: 2rem;
|
|
28
|
+
--radius-field: 0.5rem;
|
|
29
|
+
--radius-box: 1rem;
|
|
30
|
+
--size-selector: 0.25rem;
|
|
31
|
+
--size-field: 0.3rem;
|
|
32
|
+
--border: 1px;
|
|
33
|
+
--depth: 0;
|
|
34
|
+
--noise: 0;
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
[data-theme="hwio-forestry-dark"] {
|
|
38
|
+
--hwio-font-sans: 'Inter', 'Inter Fallback', ui-sans-serif, system-ui, sans-serif;
|
|
39
|
+
--hwio-container: 1275px;
|
|
40
|
+
--hwio-container-pad: 27px;
|
|
41
|
+
--hwio-kicker-on-neutral: #f43f5e;
|
|
42
|
+
}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
/* Generated from brand.json by @hubpav/hwio-ui (scripts/build-themes.mjs). Theme "hwio-forestry". */
|
|
2
|
+
@plugin "daisyui/theme" {
|
|
3
|
+
name: "hwio-forestry";
|
|
4
|
+
default: false;
|
|
5
|
+
prefersdark: false;
|
|
6
|
+
color-scheme: light;
|
|
7
|
+
--color-base-100: #ffffff;
|
|
8
|
+
--color-base-200: #F1FAFF;
|
|
9
|
+
--color-base-300: #e5e7eb;
|
|
10
|
+
--color-base-content: #252532;
|
|
11
|
+
--color-primary: #2B7036;
|
|
12
|
+
--color-primary-content: #ffffff;
|
|
13
|
+
--color-secondary: #016ad4;
|
|
14
|
+
--color-secondary-content: #ffffff;
|
|
15
|
+
--color-accent: #2B7036;
|
|
16
|
+
--color-accent-content: #ffffff;
|
|
17
|
+
--color-neutral: #252532;
|
|
18
|
+
--color-neutral-content: #f3f4f6;
|
|
19
|
+
--color-info: #009cfa;
|
|
20
|
+
--color-info-content: #06367a;
|
|
21
|
+
--color-success: #15803d;
|
|
22
|
+
--color-success-content: #ffffff;
|
|
23
|
+
--color-warning: #b45309;
|
|
24
|
+
--color-warning-content: #ffffff;
|
|
25
|
+
--color-error: #dc2626;
|
|
26
|
+
--color-error-content: #ffffff;
|
|
27
|
+
--radius-selector: 2rem;
|
|
28
|
+
--radius-field: 0.5rem;
|
|
29
|
+
--radius-box: 1rem;
|
|
30
|
+
--size-selector: 0.25rem;
|
|
31
|
+
--size-field: 0.3rem;
|
|
32
|
+
--border: 1px;
|
|
33
|
+
--depth: 0;
|
|
34
|
+
--noise: 0;
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
[data-theme="hwio-forestry"] {
|
|
38
|
+
--hwio-font-sans: 'Inter', 'Inter Fallback', ui-sans-serif, system-ui, sans-serif;
|
|
39
|
+
--hwio-container: 1275px;
|
|
40
|
+
--hwio-container-pad: 27px;
|
|
41
|
+
--hwio-kicker-on-neutral: #f43f5e;
|
|
42
|
+
}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
/* Generated from brand.json by @hubpav/hwio-ui (scripts/build-themes.mjs). Theme "hwio". */
|
|
2
|
+
@plugin "daisyui/theme" {
|
|
3
|
+
name: "hwio";
|
|
4
|
+
default: true;
|
|
5
|
+
prefersdark: false;
|
|
6
|
+
color-scheme: light;
|
|
7
|
+
--color-base-100: #ffffff;
|
|
8
|
+
--color-base-200: #F1FAFF;
|
|
9
|
+
--color-base-300: #e5e7eb;
|
|
10
|
+
--color-base-content: #252532;
|
|
11
|
+
--color-primary: #06367a;
|
|
12
|
+
--color-primary-content: #ffffff;
|
|
13
|
+
--color-secondary: #016ad4;
|
|
14
|
+
--color-secondary-content: #ffffff;
|
|
15
|
+
--color-accent: #e30427;
|
|
16
|
+
--color-accent-content: #ffffff;
|
|
17
|
+
--color-neutral: #252532;
|
|
18
|
+
--color-neutral-content: #f3f4f6;
|
|
19
|
+
--color-info: #009cfa;
|
|
20
|
+
--color-info-content: #06367a;
|
|
21
|
+
--color-success: #15803d;
|
|
22
|
+
--color-success-content: #ffffff;
|
|
23
|
+
--color-warning: #b45309;
|
|
24
|
+
--color-warning-content: #ffffff;
|
|
25
|
+
--color-error: #dc2626;
|
|
26
|
+
--color-error-content: #ffffff;
|
|
27
|
+
--radius-selector: 2rem;
|
|
28
|
+
--radius-field: 0.5rem;
|
|
29
|
+
--radius-box: 1rem;
|
|
30
|
+
--size-selector: 0.25rem;
|
|
31
|
+
--size-field: 0.3rem;
|
|
32
|
+
--border: 1px;
|
|
33
|
+
--depth: 0;
|
|
34
|
+
--noise: 0;
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
:root, [data-theme="hwio"] {
|
|
38
|
+
--hwio-font-sans: 'Inter', 'Inter Fallback', ui-sans-serif, system-ui, sans-serif;
|
|
39
|
+
--hwio-container: 1275px;
|
|
40
|
+
--hwio-container-pad: 27px;
|
|
41
|
+
--hwio-kicker-on-neutral: #f43f5e;
|
|
42
|
+
}
|
package/src/types.ts
ADDED
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
/** Measurement contract shared with the GTM containers: data-track / data-track-location. */
|
|
2
|
+
export interface HWioTrack {
|
|
3
|
+
id: string;
|
|
4
|
+
location?: string;
|
|
5
|
+
}
|
|
6
|
+
|
|
7
|
+
export interface HWioLinkItem {
|
|
8
|
+
label: string;
|
|
9
|
+
href: string;
|
|
10
|
+
external?: boolean;
|
|
11
|
+
current?: boolean;
|
|
12
|
+
track?: HWioTrack;
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
export interface HWioMedia {
|
|
16
|
+
src: string;
|
|
17
|
+
alt: string;
|
|
18
|
+
width: number;
|
|
19
|
+
height: number;
|
|
20
|
+
srcset?: string;
|
|
21
|
+
sizes?: string;
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
export interface HWioCta extends HWioLinkItem {
|
|
25
|
+
/** Visual weight; primary is the DaisyUI btn-primary fill. */
|
|
26
|
+
variant?: 'primary' | 'secondary' | 'ghost';
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
export type HWioTone = 'base' | 'alt' | 'neutral';
|
|
30
|
+
export type HWioLocale = string;
|
|
31
|
+
|
|
32
|
+
export interface HWioAlternate {
|
|
33
|
+
lang: string;
|
|
34
|
+
href: string;
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
/** A form field definition for HWioHubSpotForm / HWioFormField. */
|
|
38
|
+
export interface HWioFieldDef {
|
|
39
|
+
name: string;
|
|
40
|
+
label: string;
|
|
41
|
+
type?: 'text' | 'email' | 'tel' | 'url' | 'textarea' | 'select' | 'checkbox' | 'hidden';
|
|
42
|
+
required?: boolean;
|
|
43
|
+
placeholder?: string;
|
|
44
|
+
autocomplete?: string;
|
|
45
|
+
options?: { value: string; label: string }[];
|
|
46
|
+
/** UI-only qualification field folded into the message ("Label: value"). */
|
|
47
|
+
messageField?: boolean;
|
|
48
|
+
half?: boolean;
|
|
49
|
+
value?: string;
|
|
50
|
+
rows?: number;
|
|
51
|
+
}
|