@openwarelabs/blocks 0.0.0-stage → 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/README.md +45 -2
- package/dist/heroes/Hero01/Hero01.d.cts +3 -0
- package/dist/heroes/Hero01/Hero01.d.ts +3 -0
- package/dist/heroes/Hero01/Hero01.types.d.cts +18 -0
- package/dist/heroes/Hero01/Hero01.types.d.ts +18 -0
- package/dist/heroes/Hero02/Hero02.d.cts +3 -0
- package/dist/heroes/Hero02/Hero02.d.ts +3 -0
- package/dist/heroes/Hero02/Hero02.types.d.cts +18 -0
- package/dist/heroes/Hero02/Hero02.types.d.ts +18 -0
- package/dist/heroes/Hero03/Hero03.d.cts +3 -0
- package/dist/heroes/Hero03/Hero03.d.ts +3 -0
- package/dist/heroes/Hero03/Hero03.types.d.cts +40 -0
- package/dist/heroes/Hero03/Hero03.types.d.ts +40 -0
- package/dist/heroes/Hero04/Hero04.d.cts +3 -0
- package/dist/heroes/Hero04/Hero04.d.ts +3 -0
- package/dist/heroes/Hero04/Hero04.types.d.cts +21 -0
- package/dist/heroes/Hero04/Hero04.types.d.ts +21 -0
- package/dist/heroes/Hero05/Hero05.d.cts +3 -0
- package/dist/heroes/Hero05/Hero05.d.ts +3 -0
- package/dist/heroes/Hero05/Hero05.types.d.cts +24 -0
- package/dist/heroes/Hero05/Hero05.types.d.ts +24 -0
- package/dist/heroes/Hero06/Hero06.d.cts +3 -0
- package/dist/heroes/Hero06/Hero06.d.ts +3 -0
- package/dist/heroes/Hero06/Hero06.types.d.cts +37 -0
- package/dist/heroes/Hero06/Hero06.types.d.ts +37 -0
- package/dist/index.cjs +370 -0
- package/dist/index.cjs.map +7 -0
- package/dist/index.d.cts +13 -0
- package/dist/index.d.ts +13 -0
- package/dist/index.js +347 -0
- package/dist/index.js.map +7 -0
- package/dist/shared/BlockActions.d.cts +5 -0
- package/dist/shared/BlockActions.d.ts +5 -0
- package/dist/shared/icons.d.cts +4 -0
- package/dist/shared/icons.d.ts +4 -0
- package/dist/shared/shared.types.d.cts +38 -0
- package/dist/shared/shared.types.d.ts +38 -0
- package/dist/styles.css +569 -0
- package/package.json +55 -4
package/dist/index.cjs
ADDED
|
@@ -0,0 +1,370 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __defProp = Object.defineProperty;
|
|
3
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
+
var __export = (target, all) => {
|
|
7
|
+
for (var name in all)
|
|
8
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
9
|
+
};
|
|
10
|
+
var __copyProps = (to, from, except, desc) => {
|
|
11
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
12
|
+
for (let key of __getOwnPropNames(from))
|
|
13
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
14
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
15
|
+
}
|
|
16
|
+
return to;
|
|
17
|
+
};
|
|
18
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
19
|
+
|
|
20
|
+
// blocks/src/index.ts
|
|
21
|
+
var index_exports = {};
|
|
22
|
+
__export(index_exports, {
|
|
23
|
+
Hero01: () => Hero01,
|
|
24
|
+
Hero02: () => Hero02,
|
|
25
|
+
Hero03: () => Hero03,
|
|
26
|
+
Hero04: () => Hero04,
|
|
27
|
+
Hero05: () => Hero05,
|
|
28
|
+
Hero06: () => Hero06
|
|
29
|
+
});
|
|
30
|
+
module.exports = __toCommonJS(index_exports);
|
|
31
|
+
|
|
32
|
+
// blocks/src/heroes/Hero01/Hero01.tsx
|
|
33
|
+
var import_react = require("react");
|
|
34
|
+
var import_ui2 = require("@openwarelabs/ui");
|
|
35
|
+
|
|
36
|
+
// blocks/src/shared/BlockActions.tsx
|
|
37
|
+
var import_ui = require("@openwarelabs/ui");
|
|
38
|
+
var import_jsx_runtime = require("react/jsx-runtime");
|
|
39
|
+
function BlockActionButton({ action, variant }) {
|
|
40
|
+
const { label, href, onClick, startIcon, endIcon, target, "aria-label": ariaLabel } = action;
|
|
41
|
+
if (href !== void 0) {
|
|
42
|
+
return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(
|
|
43
|
+
"a",
|
|
44
|
+
{
|
|
45
|
+
className: (0, import_ui.buttonClassName)({ variant, size: "lg", shape: "pill" }),
|
|
46
|
+
href,
|
|
47
|
+
target,
|
|
48
|
+
rel: target === "_blank" ? "noopener noreferrer" : void 0,
|
|
49
|
+
"aria-label": ariaLabel,
|
|
50
|
+
onClick,
|
|
51
|
+
children: [
|
|
52
|
+
startIcon ? /* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", { className: "ow-button__icon", children: startIcon }) : null,
|
|
53
|
+
label,
|
|
54
|
+
endIcon ? /* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", { className: "ow-button__icon", children: endIcon }) : null
|
|
55
|
+
]
|
|
56
|
+
}
|
|
57
|
+
);
|
|
58
|
+
}
|
|
59
|
+
return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_ui.Button, { variant, shape: "pill", size: "lg", startIcon, endIcon, "aria-label": ariaLabel, onClick, children: label });
|
|
60
|
+
}
|
|
61
|
+
function BlockActions({ primary, secondary, className }) {
|
|
62
|
+
return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { className, children: [
|
|
63
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(BlockActionButton, { action: primary, variant: "primary" }),
|
|
64
|
+
secondary ? /* @__PURE__ */ (0, import_jsx_runtime.jsx)(BlockActionButton, { action: secondary, variant: "secondary" }) : null
|
|
65
|
+
] });
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
// blocks/src/heroes/Hero01/Hero01.tsx
|
|
69
|
+
var import_jsx_runtime2 = require("react/jsx-runtime");
|
|
70
|
+
function Hero01({ eyebrow, title, description, primaryAction, secondaryAction, note, visual, className, ...props }) {
|
|
71
|
+
const titleId = (0, import_react.useId)();
|
|
72
|
+
return /* @__PURE__ */ (0, import_jsx_runtime2.jsxs)("section", { className: (0, import_ui2.cx)("ow-hero01", className), "aria-labelledby": titleId, ...props, children: [
|
|
73
|
+
/* @__PURE__ */ (0, import_jsx_runtime2.jsxs)("div", { className: "ow-hero01__inner", children: [
|
|
74
|
+
eyebrow ? /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(import_ui2.Chip, { children: eyebrow }) : null,
|
|
75
|
+
/* @__PURE__ */ (0, import_jsx_runtime2.jsx)(import_ui2.Text, { variant: "hero", align: "center", id: titleId, className: "ow-hero01__title", children: title }),
|
|
76
|
+
/* @__PURE__ */ (0, import_jsx_runtime2.jsx)(import_ui2.Text, { variant: "lead", align: "center", className: "ow-hero01__lead", children: description }),
|
|
77
|
+
/* @__PURE__ */ (0, import_jsx_runtime2.jsx)(BlockActions, { className: "ow-hero01__actions", primary: primaryAction, secondary: secondaryAction }),
|
|
78
|
+
note ? /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(import_ui2.Text, { variant: "caption", as: "p", className: "ow-hero01__note", children: note }) : null
|
|
79
|
+
] }),
|
|
80
|
+
visual ? /* @__PURE__ */ (0, import_jsx_runtime2.jsx)("div", { className: "ow-hero01__visual", children: visual }) : null
|
|
81
|
+
] });
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
// blocks/src/heroes/Hero02/Hero02.tsx
|
|
85
|
+
var import_react2 = require("react");
|
|
86
|
+
var import_ui3 = require("@openwarelabs/ui");
|
|
87
|
+
|
|
88
|
+
// blocks/src/shared/icons.tsx
|
|
89
|
+
var import_jsx_runtime3 = require("react/jsx-runtime");
|
|
90
|
+
var icon = (paths) => function BlockIcon({ size = 16 }) {
|
|
91
|
+
return /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(
|
|
92
|
+
"svg",
|
|
93
|
+
{
|
|
94
|
+
xmlns: "http://www.w3.org/2000/svg",
|
|
95
|
+
width: size,
|
|
96
|
+
height: size,
|
|
97
|
+
viewBox: "0 0 24 24",
|
|
98
|
+
fill: "none",
|
|
99
|
+
stroke: "currentColor",
|
|
100
|
+
strokeWidth: 2,
|
|
101
|
+
strokeLinecap: "round",
|
|
102
|
+
strokeLinejoin: "round",
|
|
103
|
+
"aria-hidden": "true",
|
|
104
|
+
children: paths
|
|
105
|
+
}
|
|
106
|
+
);
|
|
107
|
+
};
|
|
108
|
+
var CheckIcon = icon(/* @__PURE__ */ (0, import_jsx_runtime3.jsx)("path", { d: "M20 6 9 17l-5-5" }));
|
|
109
|
+
var MailIcon = icon(
|
|
110
|
+
/* @__PURE__ */ (0, import_jsx_runtime3.jsxs)(import_jsx_runtime3.Fragment, { children: [
|
|
111
|
+
/* @__PURE__ */ (0, import_jsx_runtime3.jsx)("path", { d: "m22 7-8.991 5.727a2 2 0 0 1-2.009 0L2 7" }),
|
|
112
|
+
/* @__PURE__ */ (0, import_jsx_runtime3.jsx)("rect", { x: "2", y: "4", width: "20", height: "16", rx: "2" })
|
|
113
|
+
] })
|
|
114
|
+
);
|
|
115
|
+
var DownloadIcon = icon(
|
|
116
|
+
/* @__PURE__ */ (0, import_jsx_runtime3.jsxs)(import_jsx_runtime3.Fragment, { children: [
|
|
117
|
+
/* @__PURE__ */ (0, import_jsx_runtime3.jsx)("path", { d: "M12 15V3" }),
|
|
118
|
+
/* @__PURE__ */ (0, import_jsx_runtime3.jsx)("path", { d: "M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4" }),
|
|
119
|
+
/* @__PURE__ */ (0, import_jsx_runtime3.jsx)("path", { d: "m7 10 5 5 5-5" })
|
|
120
|
+
] })
|
|
121
|
+
);
|
|
122
|
+
|
|
123
|
+
// blocks/src/heroes/Hero02/Hero02.tsx
|
|
124
|
+
var import_jsx_runtime4 = require("react/jsx-runtime");
|
|
125
|
+
function Hero02({ eyebrow, title, description, primaryAction, secondaryAction, points, visual, className, ...props }) {
|
|
126
|
+
const titleId = (0, import_react2.useId)();
|
|
127
|
+
return /* @__PURE__ */ (0, import_jsx_runtime4.jsx)("section", { className: (0, import_ui3.cx)("ow-hero02", className), "aria-labelledby": titleId, ...props, children: /* @__PURE__ */ (0, import_jsx_runtime4.jsxs)("div", { className: "ow-hero02__inner", children: [
|
|
128
|
+
/* @__PURE__ */ (0, import_jsx_runtime4.jsxs)("div", { className: "ow-hero02__text", children: [
|
|
129
|
+
eyebrow ? /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(import_ui3.Chip, { children: eyebrow }) : null,
|
|
130
|
+
/* @__PURE__ */ (0, import_jsx_runtime4.jsx)(import_ui3.Text, { variant: "page-title", id: titleId, className: "ow-hero02__title", children: title }),
|
|
131
|
+
/* @__PURE__ */ (0, import_jsx_runtime4.jsx)(import_ui3.Text, { variant: "lead", className: "ow-hero02__lead", children: description }),
|
|
132
|
+
/* @__PURE__ */ (0, import_jsx_runtime4.jsx)(BlockActions, { className: "ow-hero02__actions", primary: primaryAction, secondary: secondaryAction }),
|
|
133
|
+
points?.length ? /* @__PURE__ */ (0, import_jsx_runtime4.jsx)("ul", { className: "ow-hero02__points", children: points.map((point, index) => /* @__PURE__ */ (0, import_jsx_runtime4.jsxs)(import_ui3.Text, { as: "li", tone: "muted", className: "ow-hero02__point", children: [
|
|
134
|
+
/* @__PURE__ */ (0, import_jsx_runtime4.jsx)(CheckIcon, { size: 15 }),
|
|
135
|
+
point
|
|
136
|
+
] }, index)) }) : null
|
|
137
|
+
] }),
|
|
138
|
+
visual
|
|
139
|
+
] }) });
|
|
140
|
+
}
|
|
141
|
+
|
|
142
|
+
// blocks/src/heroes/Hero03/Hero03.tsx
|
|
143
|
+
var import_react3 = require("react");
|
|
144
|
+
var import_ui4 = require("@openwarelabs/ui");
|
|
145
|
+
var import_jsx_runtime5 = require("react/jsx-runtime");
|
|
146
|
+
var emailPattern = /^[^\s@]+@[^\s@]+\.[^\s@]+$/;
|
|
147
|
+
function Hero03({
|
|
148
|
+
eyebrow,
|
|
149
|
+
title,
|
|
150
|
+
description,
|
|
151
|
+
submitLabel,
|
|
152
|
+
onSubmit,
|
|
153
|
+
note,
|
|
154
|
+
successTitle,
|
|
155
|
+
successDescription,
|
|
156
|
+
visual,
|
|
157
|
+
labels = {},
|
|
158
|
+
className,
|
|
159
|
+
...props
|
|
160
|
+
}) {
|
|
161
|
+
const [email, setEmail] = (0, import_react3.useState)("");
|
|
162
|
+
const [error, setError] = (0, import_react3.useState)(null);
|
|
163
|
+
const [sending, setSending] = (0, import_react3.useState)(false);
|
|
164
|
+
const [joined, setJoined] = (0, import_react3.useState)(null);
|
|
165
|
+
const inputRef = (0, import_react3.useRef)(null);
|
|
166
|
+
const doneRef = (0, import_react3.useRef)(null);
|
|
167
|
+
const touched = (0, import_react3.useRef)(false);
|
|
168
|
+
const id = (0, import_react3.useId)();
|
|
169
|
+
const titleId = `${id}-title`;
|
|
170
|
+
(0, import_react3.useEffect)(() => {
|
|
171
|
+
if (!touched.current) return;
|
|
172
|
+
if (joined) doneRef.current?.focus();
|
|
173
|
+
else inputRef.current?.focus();
|
|
174
|
+
}, [joined]);
|
|
175
|
+
const submit = async (event) => {
|
|
176
|
+
event.preventDefault();
|
|
177
|
+
const value = email.trim();
|
|
178
|
+
const problem = !value ? labels.empty ?? "Enter your work email to join the waitlist." : !emailPattern.test(value) ? labels.invalid ?? "That doesn't look like an email address. Try one like maya@example.com." : null;
|
|
179
|
+
setError(problem);
|
|
180
|
+
if (problem) {
|
|
181
|
+
inputRef.current?.focus();
|
|
182
|
+
return;
|
|
183
|
+
}
|
|
184
|
+
setSending(true);
|
|
185
|
+
try {
|
|
186
|
+
await onSubmit(value);
|
|
187
|
+
touched.current = true;
|
|
188
|
+
setJoined(value);
|
|
189
|
+
} catch (failure) {
|
|
190
|
+
setError(failure instanceof Error && failure.message ? failure.message : labels.failed ?? "That didn't go through. Try again in a moment.");
|
|
191
|
+
inputRef.current?.focus();
|
|
192
|
+
} finally {
|
|
193
|
+
setSending(false);
|
|
194
|
+
}
|
|
195
|
+
};
|
|
196
|
+
return /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("section", { className: (0, import_ui4.cx)("ow-hero03", className), "aria-labelledby": titleId, ...props, children: /* @__PURE__ */ (0, import_jsx_runtime5.jsxs)("div", { className: "ow-hero03__inner", children: [
|
|
197
|
+
eyebrow ? /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(import_ui4.Chip, { children: eyebrow }) : null,
|
|
198
|
+
/* @__PURE__ */ (0, import_jsx_runtime5.jsx)(import_ui4.Text, { variant: "hero", align: "center", id: titleId, className: "ow-hero03__title", children: title }),
|
|
199
|
+
/* @__PURE__ */ (0, import_jsx_runtime5.jsx)(import_ui4.Text, { variant: "lead", align: "center", className: "ow-hero03__lead", children: description }),
|
|
200
|
+
joined ? /* @__PURE__ */ (0, import_jsx_runtime5.jsxs)("div", { ref: doneRef, className: "ow-hero03__done", tabIndex: -1, children: [
|
|
201
|
+
/* @__PURE__ */ (0, import_jsx_runtime5.jsx)("span", { className: "ow-hero03__done-icon", "aria-hidden": "true", children: /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(CheckIcon, { size: 16 }) }),
|
|
202
|
+
/* @__PURE__ */ (0, import_jsx_runtime5.jsxs)("div", { className: "ow-hero03__done-text", children: [
|
|
203
|
+
/* @__PURE__ */ (0, import_jsx_runtime5.jsx)(import_ui4.Text, { variant: "label", children: successTitle }),
|
|
204
|
+
successDescription ? /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(import_ui4.Text, { variant: "caption", as: "p", className: "ow-hero03__done-detail", children: successDescription(joined) }) : null
|
|
205
|
+
] }),
|
|
206
|
+
/* @__PURE__ */ (0, import_jsx_runtime5.jsx)(
|
|
207
|
+
import_ui4.Button,
|
|
208
|
+
{
|
|
209
|
+
variant: "ghost",
|
|
210
|
+
size: "sm",
|
|
211
|
+
onClick: () => {
|
|
212
|
+
touched.current = true;
|
|
213
|
+
setJoined(null);
|
|
214
|
+
},
|
|
215
|
+
children: labels.change ?? "Change email"
|
|
216
|
+
}
|
|
217
|
+
)
|
|
218
|
+
] }) : /* @__PURE__ */ (0, import_jsx_runtime5.jsxs)("form", { className: "ow-hero03__form", noValidate: true, onSubmit: submit, children: [
|
|
219
|
+
/* @__PURE__ */ (0, import_jsx_runtime5.jsxs)("div", { className: "ow-hero03__row", children: [
|
|
220
|
+
/* @__PURE__ */ (0, import_jsx_runtime5.jsx)(
|
|
221
|
+
import_ui4.Input,
|
|
222
|
+
{
|
|
223
|
+
ref: inputRef,
|
|
224
|
+
className: "ow-hero03__input",
|
|
225
|
+
type: "email",
|
|
226
|
+
autoComplete: "email",
|
|
227
|
+
"aria-label": labels.email ?? "Work email",
|
|
228
|
+
"aria-describedby": error ? `${id}-error` : note ? `${id}-note` : void 0,
|
|
229
|
+
placeholder: labels.placeholder ?? "you@company.com",
|
|
230
|
+
startContent: /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(MailIcon, { size: 16 }),
|
|
231
|
+
value: email,
|
|
232
|
+
isInvalid: Boolean(error),
|
|
233
|
+
onChange: (event) => {
|
|
234
|
+
setEmail(event.target.value);
|
|
235
|
+
if (error) setError(null);
|
|
236
|
+
}
|
|
237
|
+
}
|
|
238
|
+
),
|
|
239
|
+
/* @__PURE__ */ (0, import_jsx_runtime5.jsx)(import_ui4.Button, { type: "submit", variant: "primary", shape: "pill", size: "lg", loading: sending, children: submitLabel })
|
|
240
|
+
] }),
|
|
241
|
+
error ? /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(import_ui4.Text, { tone: "danger", id: `${id}-error`, className: "ow-hero03__error", role: "alert", children: error }) : null,
|
|
242
|
+
note ? /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(import_ui4.Text, { variant: "caption", as: "p", id: `${id}-note`, className: "ow-hero03__note", children: note }) : null
|
|
243
|
+
] }),
|
|
244
|
+
visual
|
|
245
|
+
] }) });
|
|
246
|
+
}
|
|
247
|
+
|
|
248
|
+
// blocks/src/heroes/Hero04/Hero04.tsx
|
|
249
|
+
var import_react4 = require("react");
|
|
250
|
+
var import_ui5 = require("@openwarelabs/ui");
|
|
251
|
+
var import_jsx_runtime6 = require("react/jsx-runtime");
|
|
252
|
+
function Hero04({ eyebrow, title, description, primaryAction, secondaryAction, start, end, interactive = true, className, ...props }) {
|
|
253
|
+
const titleId = (0, import_react4.useId)();
|
|
254
|
+
return /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("section", { className: (0, import_ui5.cx)("ow-hero04", className), "aria-labelledby": titleId, ...props, children: /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(import_ui5.DotGrid, { fade: true, interactive, className: "ow-hero04__grid", children: /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)("div", { className: "ow-hero04__layout", children: [
|
|
255
|
+
start,
|
|
256
|
+
/* @__PURE__ */ (0, import_jsx_runtime6.jsxs)("div", { className: "ow-hero04__text", children: [
|
|
257
|
+
eyebrow ? /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(import_ui5.Chip, { children: eyebrow }) : null,
|
|
258
|
+
/* @__PURE__ */ (0, import_jsx_runtime6.jsx)(import_ui5.Text, { variant: "hero", align: "center", id: titleId, className: "ow-hero04__title", children: title }),
|
|
259
|
+
/* @__PURE__ */ (0, import_jsx_runtime6.jsx)(import_ui5.Text, { variant: "lead", align: "center", className: "ow-hero04__lead", children: description }),
|
|
260
|
+
/* @__PURE__ */ (0, import_jsx_runtime6.jsx)(BlockActions, { className: "ow-hero04__actions", primary: primaryAction, secondary: secondaryAction })
|
|
261
|
+
] }),
|
|
262
|
+
end
|
|
263
|
+
] }) }) });
|
|
264
|
+
}
|
|
265
|
+
|
|
266
|
+
// blocks/src/heroes/Hero05/Hero05.tsx
|
|
267
|
+
var import_react5 = require("react");
|
|
268
|
+
var import_ui6 = require("@openwarelabs/ui");
|
|
269
|
+
var import_jsx_runtime7 = require("react/jsx-runtime");
|
|
270
|
+
function Hero05({ eyebrow, title, description, primaryAction, secondaryAction, logosTitle, logos, className, ...props }) {
|
|
271
|
+
const id = (0, import_react5.useId)();
|
|
272
|
+
return /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("section", { className: (0, import_ui6.cx)("ow-hero05", className), "aria-labelledby": `${id}-title`, ...props, children: /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)("div", { className: "ow-hero05__inner", children: [
|
|
273
|
+
/* @__PURE__ */ (0, import_jsx_runtime7.jsxs)("div", { className: "ow-hero05__top", children: [
|
|
274
|
+
/* @__PURE__ */ (0, import_jsx_runtime7.jsxs)("div", { className: "ow-hero05__heading", children: [
|
|
275
|
+
eyebrow ? /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(import_ui6.Chip, { children: eyebrow }) : null,
|
|
276
|
+
/* @__PURE__ */ (0, import_jsx_runtime7.jsx)(import_ui6.Text, { variant: "hero", id: `${id}-title`, className: "ow-hero05__title", children: title })
|
|
277
|
+
] }),
|
|
278
|
+
/* @__PURE__ */ (0, import_jsx_runtime7.jsxs)("div", { children: [
|
|
279
|
+
/* @__PURE__ */ (0, import_jsx_runtime7.jsx)(import_ui6.Text, { variant: "lead", children: description }),
|
|
280
|
+
/* @__PURE__ */ (0, import_jsx_runtime7.jsx)(BlockActions, { className: "ow-hero05__actions", primary: primaryAction, secondary: secondaryAction })
|
|
281
|
+
] })
|
|
282
|
+
] }),
|
|
283
|
+
/* @__PURE__ */ (0, import_jsx_runtime7.jsxs)("div", { className: "ow-hero05__proof", children: [
|
|
284
|
+
/* @__PURE__ */ (0, import_jsx_runtime7.jsx)(import_ui6.Text, { tone: "muted", id: `${id}-logos`, children: logosTitle }),
|
|
285
|
+
/* @__PURE__ */ (0, import_jsx_runtime7.jsx)("ul", { className: "ow-hero05__list", "aria-labelledby": `${id}-logos`, children: logos.map((logo) => /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("li", { className: "ow-hero05__logo", children: logo.logo }, logo.name)) })
|
|
286
|
+
] })
|
|
287
|
+
] }) });
|
|
288
|
+
}
|
|
289
|
+
|
|
290
|
+
// blocks/src/heroes/Hero06/Hero06.tsx
|
|
291
|
+
var import_react6 = require("react");
|
|
292
|
+
var import_ui7 = require("@openwarelabs/ui");
|
|
293
|
+
var import_jsx_runtime8 = require("react/jsx-runtime");
|
|
294
|
+
function detectPlatform() {
|
|
295
|
+
const nav = navigator;
|
|
296
|
+
const name = `${nav.userAgentData?.platform ?? ""} ${navigator.platform} ${navigator.userAgent}`.toLowerCase();
|
|
297
|
+
if (/android|iphone|ipad|ipod/.test(name) || name.includes("mac") && navigator.maxTouchPoints > 1) return null;
|
|
298
|
+
if (name.includes("mac")) return "mac";
|
|
299
|
+
if (name.includes("win")) return "windows";
|
|
300
|
+
if (name.includes("linux") || name.includes("x11")) return "linux";
|
|
301
|
+
return null;
|
|
302
|
+
}
|
|
303
|
+
var defaultLabel = (name) => `Download for ${name}`;
|
|
304
|
+
function Hero06({
|
|
305
|
+
eyebrow,
|
|
306
|
+
title,
|
|
307
|
+
description,
|
|
308
|
+
platforms,
|
|
309
|
+
version,
|
|
310
|
+
otherDownloads,
|
|
311
|
+
downloadLabel = defaultLabel,
|
|
312
|
+
visual,
|
|
313
|
+
className,
|
|
314
|
+
...props
|
|
315
|
+
}) {
|
|
316
|
+
const titleId = (0, import_react6.useId)();
|
|
317
|
+
const [detected, setDetected] = (0, import_react6.useState)(null);
|
|
318
|
+
(0, import_react6.useEffect)(() => setDetected(detectPlatform()), []);
|
|
319
|
+
const current = platforms.find((platform) => platform.id === detected) ?? platforms[0];
|
|
320
|
+
const order = current ? [current, ...platforms.filter((platform) => platform !== current)] : [];
|
|
321
|
+
const button = (platform, primary) => {
|
|
322
|
+
const label = downloadLabel(platform.name);
|
|
323
|
+
const content = primary ? label : platform.name;
|
|
324
|
+
const icon2 = primary ? /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(DownloadIcon, { size: 16 }) : null;
|
|
325
|
+
if (platform.href !== void 0) {
|
|
326
|
+
return /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)(
|
|
327
|
+
"a",
|
|
328
|
+
{
|
|
329
|
+
className: (0, import_ui7.buttonClassName)({ variant: primary ? "primary" : "secondary", size: "lg", shape: "pill" }),
|
|
330
|
+
href: platform.href,
|
|
331
|
+
"aria-label": primary ? void 0 : label,
|
|
332
|
+
onClick: platform.onDownload,
|
|
333
|
+
children: [
|
|
334
|
+
icon2 ? /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("span", { className: "ow-button__icon", children: icon2 }) : null,
|
|
335
|
+
content
|
|
336
|
+
]
|
|
337
|
+
},
|
|
338
|
+
platform.id
|
|
339
|
+
);
|
|
340
|
+
}
|
|
341
|
+
return /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(
|
|
342
|
+
import_ui7.Button,
|
|
343
|
+
{
|
|
344
|
+
variant: primary ? "primary" : "secondary",
|
|
345
|
+
shape: "pill",
|
|
346
|
+
size: "lg",
|
|
347
|
+
startIcon: icon2,
|
|
348
|
+
"aria-label": primary ? void 0 : label,
|
|
349
|
+
onClick: platform.onDownload,
|
|
350
|
+
children: content
|
|
351
|
+
},
|
|
352
|
+
platform.id
|
|
353
|
+
);
|
|
354
|
+
};
|
|
355
|
+
return /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("section", { className: (0, import_ui7.cx)("ow-hero06", className), "aria-labelledby": titleId, ...props, children: /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)("div", { className: "ow-hero06__inner", children: [
|
|
356
|
+
/* @__PURE__ */ (0, import_jsx_runtime8.jsxs)("div", { className: "ow-hero06__text", children: [
|
|
357
|
+
eyebrow ? /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(import_ui7.Chip, { children: eyebrow }) : null,
|
|
358
|
+
/* @__PURE__ */ (0, import_jsx_runtime8.jsx)(import_ui7.Text, { variant: "page-title", id: titleId, className: "ow-hero06__title", children: title }),
|
|
359
|
+
/* @__PURE__ */ (0, import_jsx_runtime8.jsx)(import_ui7.Text, { variant: "lead", className: "ow-hero06__lead", children: description }),
|
|
360
|
+
/* @__PURE__ */ (0, import_jsx_runtime8.jsx)("div", { className: "ow-hero06__buttons", children: order.map((platform, index) => button(platform, index === 0)) }),
|
|
361
|
+
version || current?.requirement || otherDownloads ? /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)(import_ui7.Text, { variant: "caption", as: "p", className: "ow-hero06__meta", children: [
|
|
362
|
+
version ? /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("span", { children: version }) : null,
|
|
363
|
+
current?.requirement ? /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("span", { children: current.requirement }) : null,
|
|
364
|
+
otherDownloads ? /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("span", { className: "ow-hero06__other", children: /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(import_ui7.Link, { href: otherDownloads.href, variant: "muted", children: otherDownloads.label }) }) : null
|
|
365
|
+
] }) : null
|
|
366
|
+
] }),
|
|
367
|
+
visual
|
|
368
|
+
] }) });
|
|
369
|
+
}
|
|
370
|
+
//# sourceMappingURL=index.cjs.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../src/index.ts", "../src/heroes/Hero01/Hero01.tsx", "../src/shared/BlockActions.tsx", "../src/heroes/Hero02/Hero02.tsx", "../src/shared/icons.tsx", "../src/heroes/Hero03/Hero03.tsx", "../src/heroes/Hero04/Hero04.tsx", "../src/heroes/Hero05/Hero05.tsx", "../src/heroes/Hero06/Hero06.tsx"],
|
|
4
|
+
"sourcesContent": ["// @openwarelabs/blocks: whole page sections built from @openwarelabs/ui, as components that take their content as props.\n// Styles: import \"@openwarelabs/blocks/styles.css\" once, after \"@openwarelabs/ui/styles.css\".\nexport { Hero01 } from \"./heroes/Hero01/Hero01\";\nexport type { Hero01Props } from \"./heroes/Hero01/Hero01.types\";\nexport { Hero02 } from \"./heroes/Hero02/Hero02\";\nexport type { Hero02Props } from \"./heroes/Hero02/Hero02.types\";\nexport { Hero03 } from \"./heroes/Hero03/Hero03\";\nexport type { Hero03Labels, Hero03Props } from \"./heroes/Hero03/Hero03.types\";\nexport { Hero04 } from \"./heroes/Hero04/Hero04\";\nexport type { Hero04Props } from \"./heroes/Hero04/Hero04.types\";\nexport { Hero05 } from \"./heroes/Hero05/Hero05\";\nexport type { Hero05Logo, Hero05Props } from \"./heroes/Hero05/Hero05.types\";\nexport { Hero06 } from \"./heroes/Hero06/Hero06\";\nexport type { Hero06Platform, Hero06PlatformId, Hero06Props } from \"./heroes/Hero06/Hero06.types\";\n\nexport type { BlockAction, BlockLink } from \"./shared/shared.types\";\n", "import { useId } from \"react\";\n\nimport { Chip, cx, Text } from \"@openwarelabs/ui\";\n\nimport { BlockActions } from \"@blocks/shared/BlockActions\";\nimport type { Hero01Props } from \"./Hero01.types\";\n\n/** A centred hero: an eyebrow, the headline, a lead, two actions and a note, with the product below, running on into the page. */\nexport function Hero01({ eyebrow, title, description, primaryAction, secondaryAction, note, visual, className, ...props }: Hero01Props) {\n const titleId = useId();\n return (\n <section className={cx(\"ow-hero01\", className)} aria-labelledby={titleId} {...props}>\n <div className=\"ow-hero01__inner\">\n {eyebrow ? <Chip>{eyebrow}</Chip> : null}\n <Text variant=\"hero\" align=\"center\" id={titleId} className=\"ow-hero01__title\">\n {title}\n </Text>\n <Text variant=\"lead\" align=\"center\" className=\"ow-hero01__lead\">\n {description}\n </Text>\n <BlockActions className=\"ow-hero01__actions\" primary={primaryAction} secondary={secondaryAction} />\n {note ? (\n <Text variant=\"caption\" as=\"p\" className=\"ow-hero01__note\">\n {note}\n </Text>\n ) : null}\n </div>\n {visual ? <div className=\"ow-hero01__visual\">{visual}</div> : null}\n </section>\n );\n}\n", "import { Button, buttonClassName } from \"@openwarelabs/ui\";\n\nimport type { BlockActionButtonProps, BlockActionsProps } from \"@blocks/shared/shared.types\";\n\n/** One action as a large pill: a link styled as a button when it has an href, a button otherwise. */\nexport function BlockActionButton({ action, variant }: BlockActionButtonProps) {\n const { label, href, onClick, startIcon, endIcon, target, \"aria-label\": ariaLabel } = action;\n if (href !== undefined) {\n return (\n <a\n className={buttonClassName({ variant, size: \"lg\", shape: \"pill\" })}\n href={href}\n target={target}\n rel={target === \"_blank\" ? \"noopener noreferrer\" : undefined}\n aria-label={ariaLabel}\n onClick={onClick}\n >\n {startIcon ? <span className=\"ow-button__icon\">{startIcon}</span> : null}\n {label}\n {endIcon ? <span className=\"ow-button__icon\">{endIcon}</span> : null}\n </a>\n );\n }\n return (\n <Button variant={variant} shape=\"pill\" size=\"lg\" startIcon={startIcon} endIcon={endIcon} aria-label={ariaLabel} onClick={onClick}>\n {label}\n </Button>\n );\n}\n\n/** The primary action and an optional secondary one, side by side. */\nexport function BlockActions({ primary, secondary, className }: BlockActionsProps) {\n return (\n <div className={className}>\n <BlockActionButton action={primary} variant=\"primary\" />\n {secondary ? <BlockActionButton action={secondary} variant=\"secondary\" /> : null}\n </div>\n );\n}\n", "import { useId } from \"react\";\n\nimport { Chip, cx, Text } from \"@openwarelabs/ui\";\n\nimport { BlockActions } from \"@blocks/shared/BlockActions\";\nimport { CheckIcon } from \"@blocks/shared/icons\";\nimport type { Hero02Props } from \"./Hero02.types\";\n\n/** A split hero: the words on the left and the product on the right. They stack on phones. */\nexport function Hero02({ eyebrow, title, description, primaryAction, secondaryAction, points, visual, className, ...props }: Hero02Props) {\n const titleId = useId();\n return (\n <section className={cx(\"ow-hero02\", className)} aria-labelledby={titleId} {...props}>\n <div className=\"ow-hero02__inner\">\n <div className=\"ow-hero02__text\">\n {eyebrow ? <Chip>{eyebrow}</Chip> : null}\n <Text variant=\"page-title\" id={titleId} className=\"ow-hero02__title\">\n {title}\n </Text>\n <Text variant=\"lead\" className=\"ow-hero02__lead\">\n {description}\n </Text>\n <BlockActions className=\"ow-hero02__actions\" primary={primaryAction} secondary={secondaryAction} />\n {points?.length ? (\n <ul className=\"ow-hero02__points\">\n {points.map((point, index) => (\n <Text as=\"li\" key={index} tone=\"muted\" className=\"ow-hero02__point\">\n <CheckIcon size={15} />\n {point}\n </Text>\n ))}\n </ul>\n ) : null}\n </div>\n {visual}\n </div>\n </section>\n );\n}\n", "import type { ReactNode } from \"react\";\n\nimport type { BlockIconProps } from \"@blocks/shared/shared.types\";\n\n// The few icons the blocks draw themselves, as Lucide shapes (ISC licence), so the package needs no icon library.\nconst icon = (paths: ReactNode) =>\n function BlockIcon({ size = 16 }: BlockIconProps) {\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth={2}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n >\n {paths}\n </svg>\n );\n };\n\nexport const CheckIcon = icon(<path d=\"M20 6 9 17l-5-5\" />);\nexport const MailIcon = icon(\n <>\n <path d=\"m22 7-8.991 5.727a2 2 0 0 1-2.009 0L2 7\" />\n <rect x=\"2\" y=\"4\" width=\"20\" height=\"16\" rx=\"2\" />\n </>,\n);\nexport const DownloadIcon = icon(\n <>\n <path d=\"M12 15V3\" />\n <path d=\"M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4\" />\n <path d=\"m7 10 5 5 5-5\" />\n </>,\n);\n", "import { useEffect, useId, useRef, useState, type FormEvent } from \"react\";\n\nimport { Button, Chip, cx, Input, Text } from \"@openwarelabs/ui\";\n\nimport { CheckIcon, MailIcon } from \"@blocks/shared/icons\";\nimport type { Hero03Props } from \"./Hero03.types\";\n\nconst emailPattern = /^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$/;\n\n/** A hero with an email field: join a waitlist or start a trial in one step, with a confirmation in place of the form. */\nexport function Hero03({\n eyebrow,\n title,\n description,\n submitLabel,\n onSubmit,\n note,\n successTitle,\n successDescription,\n visual,\n labels = {},\n className,\n ...props\n}: Hero03Props) {\n const [email, setEmail] = useState(\"\");\n const [error, setError] = useState<string | null>(null);\n const [sending, setSending] = useState(false);\n const [joined, setJoined] = useState<string | null>(null);\n const inputRef = useRef<HTMLInputElement>(null);\n const doneRef = useRef<HTMLDivElement>(null);\n const touched = useRef(false);\n const id = useId();\n const titleId = `${id}-title`;\n\n // Moving between the form and the confirmation, take focus along so it isn't lost with the element that had it.\n useEffect(() => {\n if (!touched.current) return;\n if (joined) doneRef.current?.focus();\n else inputRef.current?.focus();\n }, [joined]);\n\n const submit = async (event: FormEvent<HTMLFormElement>) => {\n event.preventDefault();\n const value = email.trim();\n const problem = !value\n ? (labels.empty ?? \"Enter your work email to join the waitlist.\")\n : !emailPattern.test(value)\n ? (labels.invalid ?? \"That doesn't look like an email address. Try one like maya@example.com.\")\n : null;\n setError(problem);\n if (problem) {\n inputRef.current?.focus();\n return;\n }\n setSending(true);\n try {\n await onSubmit(value);\n touched.current = true;\n setJoined(value);\n } catch (failure) {\n setError(failure instanceof Error && failure.message ? failure.message : (labels.failed ?? \"That didn't go through. Try again in a moment.\"));\n inputRef.current?.focus();\n } finally {\n setSending(false);\n }\n };\n\n return (\n <section className={cx(\"ow-hero03\", className)} aria-labelledby={titleId} {...props}>\n <div className=\"ow-hero03__inner\">\n {eyebrow ? <Chip>{eyebrow}</Chip> : null}\n <Text variant=\"hero\" align=\"center\" id={titleId} className=\"ow-hero03__title\">\n {title}\n </Text>\n <Text variant=\"lead\" align=\"center\" className=\"ow-hero03__lead\">\n {description}\n </Text>\n\n {joined ? (\n <div ref={doneRef} className=\"ow-hero03__done\" tabIndex={-1}>\n <span className=\"ow-hero03__done-icon\" aria-hidden=\"true\">\n <CheckIcon size={16} />\n </span>\n <div className=\"ow-hero03__done-text\">\n <Text variant=\"label\">{successTitle}</Text>\n {successDescription ? (\n <Text variant=\"caption\" as=\"p\" className=\"ow-hero03__done-detail\">\n {successDescription(joined)}\n </Text>\n ) : null}\n </div>\n <Button\n variant=\"ghost\"\n size=\"sm\"\n onClick={() => {\n touched.current = true;\n setJoined(null);\n }}\n >\n {labels.change ?? \"Change email\"}\n </Button>\n </div>\n ) : (\n <form className=\"ow-hero03__form\" noValidate onSubmit={submit}>\n <div className=\"ow-hero03__row\">\n <Input\n ref={inputRef}\n className=\"ow-hero03__input\"\n type=\"email\"\n autoComplete=\"email\"\n aria-label={labels.email ?? \"Work email\"}\n aria-describedby={error ? `${id}-error` : note ? `${id}-note` : undefined}\n placeholder={labels.placeholder ?? \"you@company.com\"}\n startContent={<MailIcon size={16} />}\n value={email}\n isInvalid={Boolean(error)}\n onChange={(event) => {\n setEmail(event.target.value);\n if (error) setError(null);\n }}\n />\n <Button type=\"submit\" variant=\"primary\" shape=\"pill\" size=\"lg\" loading={sending}>\n {submitLabel}\n </Button>\n </div>\n {error ? (\n <Text tone=\"danger\" id={`${id}-error`} className=\"ow-hero03__error\" role=\"alert\">\n {error}\n </Text>\n ) : null}\n {note ? (\n <Text variant=\"caption\" as=\"p\" id={`${id}-note`} className=\"ow-hero03__note\">\n {note}\n </Text>\n ) : null}\n </form>\n )}\n\n {visual}\n </div>\n </section>\n );\n}\n", "import { useId } from \"react\";\n\nimport { Chip, cx, DotGrid, Text } from \"@openwarelabs/ui\";\n\nimport { BlockActions } from \"@blocks/shared/BlockActions\";\nimport type { Hero04Props } from \"./Hero04.types\";\n\n/** A hero on Openware's dot grid, with the dots turning brass under the pointer and room for something either side. */\nexport function Hero04({ eyebrow, title, description, primaryAction, secondaryAction, start, end, interactive = true, className, ...props }: Hero04Props) {\n const titleId = useId();\n return (\n <section className={cx(\"ow-hero04\", className)} aria-labelledby={titleId} {...props}>\n <DotGrid fade interactive={interactive} className=\"ow-hero04__grid\">\n <div className=\"ow-hero04__layout\">\n {start}\n <div className=\"ow-hero04__text\">\n {eyebrow ? <Chip>{eyebrow}</Chip> : null}\n <Text variant=\"hero\" align=\"center\" id={titleId} className=\"ow-hero04__title\">\n {title}\n </Text>\n <Text variant=\"lead\" align=\"center\" className=\"ow-hero04__lead\">\n {description}\n </Text>\n <BlockActions className=\"ow-hero04__actions\" primary={primaryAction} secondary={secondaryAction} />\n </div>\n {end}\n </div>\n </DotGrid>\n </section>\n );\n}\n", "import { useId } from \"react\";\n\nimport { Chip, cx, Text } from \"@openwarelabs/ui\";\n\nimport { BlockActions } from \"@blocks/shared/BlockActions\";\nimport type { Hero05Props } from \"./Hero05.types\";\n\n/** The usual hero, with the headline beside the lead, then a row of customers' logos as the first proof. */\nexport function Hero05({ eyebrow, title, description, primaryAction, secondaryAction, logosTitle, logos, className, ...props }: Hero05Props) {\n const id = useId();\n return (\n <section className={cx(\"ow-hero05\", className)} aria-labelledby={`${id}-title`} {...props}>\n <div className=\"ow-hero05__inner\">\n <div className=\"ow-hero05__top\">\n <div className=\"ow-hero05__heading\">\n {eyebrow ? <Chip>{eyebrow}</Chip> : null}\n <Text variant=\"hero\" id={`${id}-title`} className=\"ow-hero05__title\">\n {title}\n </Text>\n </div>\n <div>\n <Text variant=\"lead\">{description}</Text>\n <BlockActions className=\"ow-hero05__actions\" primary={primaryAction} secondary={secondaryAction} />\n </div>\n </div>\n\n <div className=\"ow-hero05__proof\">\n <Text tone=\"muted\" id={`${id}-logos`}>\n {logosTitle}\n </Text>\n <ul className=\"ow-hero05__list\" aria-labelledby={`${id}-logos`}>\n {logos.map((logo) => (\n <li key={logo.name} className=\"ow-hero05__logo\">\n {logo.logo}\n </li>\n ))}\n </ul>\n </div>\n </div>\n </section>\n );\n}\n", "import { useEffect, useId, useState } from \"react\";\n\nimport { Button, buttonClassName, Chip, cx, Link, Text } from \"@openwarelabs/ui\";\n\nimport { DownloadIcon } from \"@blocks/shared/icons\";\nimport type { Hero06Platform, Hero06PlatformId, Hero06Props } from \"./Hero06.types\";\n\n/** The computer this page is open on, or null for phones, tablets and anything unknown. */\nfunction detectPlatform(): Hero06PlatformId | null {\n const nav = navigator as Navigator & { userAgentData?: { platform?: string } };\n const name = `${nav.userAgentData?.platform ?? \"\"} ${navigator.platform} ${navigator.userAgent}`.toLowerCase();\n if (/android|iphone|ipad|ipod/.test(name) || (name.includes(\"mac\") && navigator.maxTouchPoints > 1)) return null;\n if (name.includes(\"mac\")) return \"mac\";\n if (name.includes(\"win\")) return \"windows\";\n if (name.includes(\"linux\") || name.includes(\"x11\")) return \"linux\";\n return null;\n}\n\nconst defaultLabel = (name: string) => `Download for ${name}`;\n\n/** A hero for a desktop app: a download button for each system, with the visitor's own first, and the app beside it. */\nexport function Hero06({\n eyebrow,\n title,\n description,\n platforms,\n version,\n otherDownloads,\n downloadLabel = defaultLabel,\n visual,\n className,\n ...props\n}: Hero06Props) {\n const titleId = useId();\n // Until the page knows which computer it's on (after it mounts), the first platform leads.\n const [detected, setDetected] = useState<Hero06PlatformId | null>(null);\n useEffect(() => setDetected(detectPlatform()), []);\n\n const current = platforms.find((platform) => platform.id === detected) ?? platforms[0];\n const order = current ? [current, ...platforms.filter((platform) => platform !== current)] : [];\n\n const button = (platform: Hero06Platform, primary: boolean) => {\n const label = downloadLabel(platform.name);\n const content = primary ? label : platform.name;\n const icon = primary ? <DownloadIcon size={16} /> : null;\n if (platform.href !== undefined) {\n return (\n <a\n key={platform.id}\n className={buttonClassName({ variant: primary ? \"primary\" : \"secondary\", size: \"lg\", shape: \"pill\" })}\n href={platform.href}\n aria-label={primary ? undefined : label}\n onClick={platform.onDownload}\n >\n {icon ? <span className=\"ow-button__icon\">{icon}</span> : null}\n {content}\n </a>\n );\n }\n return (\n <Button\n key={platform.id}\n variant={primary ? \"primary\" : \"secondary\"}\n shape=\"pill\"\n size=\"lg\"\n startIcon={icon}\n aria-label={primary ? undefined : label}\n onClick={platform.onDownload}\n >\n {content}\n </Button>\n );\n };\n\n return (\n <section className={cx(\"ow-hero06\", className)} aria-labelledby={titleId} {...props}>\n <div className=\"ow-hero06__inner\">\n <div className=\"ow-hero06__text\">\n {eyebrow ? <Chip>{eyebrow}</Chip> : null}\n <Text variant=\"page-title\" id={titleId} className=\"ow-hero06__title\">\n {title}\n </Text>\n <Text variant=\"lead\" className=\"ow-hero06__lead\">\n {description}\n </Text>\n <div className=\"ow-hero06__buttons\">{order.map((platform, index) => button(platform, index === 0))}</div>\n {version || current?.requirement || otherDownloads ? (\n <Text variant=\"caption\" as=\"p\" className=\"ow-hero06__meta\">\n {version ? <span>{version}</span> : null}\n {current?.requirement ? <span>{current.requirement}</span> : null}\n {otherDownloads ? (\n <span className=\"ow-hero06__other\">\n <Link href={otherDownloads.href} variant=\"muted\">\n {otherDownloads.label}\n </Link>\n </span>\n ) : null}\n </Text>\n ) : null}\n </div>\n {visual}\n </div>\n </section>\n );\n}\n"],
|
|
5
|
+
"mappings": ";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACAA,mBAAsB;AAEtB,IAAAA,aAA+B;;;ACF/B,gBAAwC;AAS5B;AAJL,SAAS,kBAAkB,EAAE,QAAQ,QAAQ,GAA2B;AAC3E,QAAM,EAAE,OAAO,MAAM,SAAS,WAAW,SAAS,QAAQ,cAAc,UAAU,IAAI;AACtF,MAAI,SAAS,QAAW;AACpB,WACI;AAAA,MAAC;AAAA;AAAA,QACG,eAAW,2BAAgB,EAAE,SAAS,MAAM,MAAM,OAAO,OAAO,CAAC;AAAA,QACjE;AAAA,QACA;AAAA,QACA,KAAK,WAAW,WAAW,wBAAwB;AAAA,QACnD,cAAY;AAAA,QACZ;AAAA,QAEC;AAAA,sBAAY,4CAAC,UAAK,WAAU,mBAAmB,qBAAU,IAAU;AAAA,UACnE;AAAA,UACA,UAAU,4CAAC,UAAK,WAAU,mBAAmB,mBAAQ,IAAU;AAAA;AAAA;AAAA,IACpE;AAAA,EAER;AACA,SACI,4CAAC,oBAAO,SAAkB,OAAM,QAAO,MAAK,MAAK,WAAsB,SAAkB,cAAY,WAAW,SAC3G,iBACL;AAER;AAGO,SAAS,aAAa,EAAE,SAAS,WAAW,UAAU,GAAsB;AAC/E,SACI,6CAAC,SAAI,WACD;AAAA,gDAAC,qBAAkB,QAAQ,SAAS,SAAQ,WAAU;AAAA,IACrD,YAAY,4CAAC,qBAAkB,QAAQ,WAAW,SAAQ,aAAY,IAAK;AAAA,KAChF;AAER;;;AD1BY,IAAAC,sBAAA;AAJL,SAAS,OAAO,EAAE,SAAS,OAAO,aAAa,eAAe,iBAAiB,MAAM,QAAQ,WAAW,GAAG,MAAM,GAAgB;AACpI,QAAM,cAAU,oBAAM;AACtB,SACI,8CAAC,aAAQ,eAAW,eAAG,aAAa,SAAS,GAAG,mBAAiB,SAAU,GAAG,OAC1E;AAAA,kDAAC,SAAI,WAAU,oBACV;AAAA,gBAAU,6CAAC,mBAAM,mBAAQ,IAAU;AAAA,MACpC,6CAAC,mBAAK,SAAQ,QAAO,OAAM,UAAS,IAAI,SAAS,WAAU,oBACtD,iBACL;AAAA,MACA,6CAAC,mBAAK,SAAQ,QAAO,OAAM,UAAS,WAAU,mBACzC,uBACL;AAAA,MACA,6CAAC,gBAAa,WAAU,sBAAqB,SAAS,eAAe,WAAW,iBAAiB;AAAA,MAChG,OACG,6CAAC,mBAAK,SAAQ,WAAU,IAAG,KAAI,WAAU,mBACpC,gBACL,IACA;AAAA,OACR;AAAA,IACC,SAAS,6CAAC,SAAI,WAAU,qBAAqB,kBAAO,IAAS;AAAA,KAClE;AAER;;;AE9BA,IAAAC,gBAAsB;AAEtB,IAAAC,aAA+B;;;ACMnB,IAAAC,sBAAA;AAHZ,IAAM,OAAO,CAAC,UACV,SAAS,UAAU,EAAE,OAAO,GAAG,GAAmB;AAC9C,SACI;AAAA,IAAC;AAAA;AAAA,MACG,OAAM;AAAA,MACN,OAAO;AAAA,MACP,QAAQ;AAAA,MACR,SAAQ;AAAA,MACR,MAAK;AAAA,MACL,QAAO;AAAA,MACP,aAAa;AAAA,MACb,eAAc;AAAA,MACd,gBAAe;AAAA,MACf,eAAY;AAAA,MAEX;AAAA;AAAA,EACL;AAER;AAEG,IAAM,YAAY,KAAK,6CAAC,UAAK,GAAE,mBAAkB,CAAE;AACnD,IAAM,WAAW;AAAA,EACpB,8EACI;AAAA,iDAAC,UAAK,GAAE,2CAA0C;AAAA,IAClD,6CAAC,UAAK,GAAE,KAAI,GAAE,KAAI,OAAM,MAAK,QAAO,MAAK,IAAG,KAAI;AAAA,KACpD;AACJ;AACO,IAAM,eAAe;AAAA,EACxB,8EACI;AAAA,iDAAC,UAAK,GAAE,YAAW;AAAA,IACnB,6CAAC,UAAK,GAAE,6CAA4C;AAAA,IACpD,6CAAC,UAAK,GAAE,iBAAgB;AAAA,KAC5B;AACJ;;;ADvB+B,IAAAC,sBAAA;AANxB,SAAS,OAAO,EAAE,SAAS,OAAO,aAAa,eAAe,iBAAiB,QAAQ,QAAQ,WAAW,GAAG,MAAM,GAAgB;AACtI,QAAM,cAAU,qBAAM;AACtB,SACI,6CAAC,aAAQ,eAAW,eAAG,aAAa,SAAS,GAAG,mBAAiB,SAAU,GAAG,OAC1E,wDAAC,SAAI,WAAU,oBACX;AAAA,kDAAC,SAAI,WAAU,mBACV;AAAA,gBAAU,6CAAC,mBAAM,mBAAQ,IAAU;AAAA,MACpC,6CAAC,mBAAK,SAAQ,cAAa,IAAI,SAAS,WAAU,oBAC7C,iBACL;AAAA,MACA,6CAAC,mBAAK,SAAQ,QAAO,WAAU,mBAC1B,uBACL;AAAA,MACA,6CAAC,gBAAa,WAAU,sBAAqB,SAAS,eAAe,WAAW,iBAAiB;AAAA,MAChG,QAAQ,SACL,6CAAC,QAAG,WAAU,qBACT,iBAAO,IAAI,CAAC,OAAO,UAChB,8CAAC,mBAAK,IAAG,MAAiB,MAAK,SAAQ,WAAU,oBAC7C;AAAA,qDAAC,aAAU,MAAM,IAAI;AAAA,QACpB;AAAA,WAFc,KAGnB,CACH,GACL,IACA;AAAA,OACR;AAAA,IACC;AAAA,KACL,GACJ;AAER;;;AEtCA,IAAAC,gBAAmE;AAEnE,IAAAC,aAA8C;AAoEnB,IAAAC,sBAAA;AA/D3B,IAAM,eAAe;AAGd,SAAS,OAAO;AAAA,EACnB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,SAAS,CAAC;AAAA,EACV;AAAA,EACA,GAAG;AACP,GAAgB;AACZ,QAAM,CAAC,OAAO,QAAQ,QAAI,wBAAS,EAAE;AACrC,QAAM,CAAC,OAAO,QAAQ,QAAI,wBAAwB,IAAI;AACtD,QAAM,CAAC,SAAS,UAAU,QAAI,wBAAS,KAAK;AAC5C,QAAM,CAAC,QAAQ,SAAS,QAAI,wBAAwB,IAAI;AACxD,QAAM,eAAW,sBAAyB,IAAI;AAC9C,QAAM,cAAU,sBAAuB,IAAI;AAC3C,QAAM,cAAU,sBAAO,KAAK;AAC5B,QAAM,SAAK,qBAAM;AACjB,QAAM,UAAU,GAAG,EAAE;AAGrB,+BAAU,MAAM;AACZ,QAAI,CAAC,QAAQ,QAAS;AACtB,QAAI,OAAQ,SAAQ,SAAS,MAAM;AAAA,QAC9B,UAAS,SAAS,MAAM;AAAA,EACjC,GAAG,CAAC,MAAM,CAAC;AAEX,QAAM,SAAS,OAAO,UAAsC;AACxD,UAAM,eAAe;AACrB,UAAM,QAAQ,MAAM,KAAK;AACzB,UAAM,UAAU,CAAC,QACV,OAAO,SAAS,gDACjB,CAAC,aAAa,KAAK,KAAK,IACrB,OAAO,WAAW,4EACnB;AACR,aAAS,OAAO;AAChB,QAAI,SAAS;AACT,eAAS,SAAS,MAAM;AACxB;AAAA,IACJ;AACA,eAAW,IAAI;AACf,QAAI;AACA,YAAM,SAAS,KAAK;AACpB,cAAQ,UAAU;AAClB,gBAAU,KAAK;AAAA,IACnB,SAAS,SAAS;AACd,eAAS,mBAAmB,SAAS,QAAQ,UAAU,QAAQ,UAAW,OAAO,UAAU,gDAAiD;AAC5I,eAAS,SAAS,MAAM;AAAA,IAC5B,UAAE;AACE,iBAAW,KAAK;AAAA,IACpB;AAAA,EACJ;AAEA,SACI,6CAAC,aAAQ,eAAW,eAAG,aAAa,SAAS,GAAG,mBAAiB,SAAU,GAAG,OAC1E,wDAAC,SAAI,WAAU,oBACV;AAAA,cAAU,6CAAC,mBAAM,mBAAQ,IAAU;AAAA,IACpC,6CAAC,mBAAK,SAAQ,QAAO,OAAM,UAAS,IAAI,SAAS,WAAU,oBACtD,iBACL;AAAA,IACA,6CAAC,mBAAK,SAAQ,QAAO,OAAM,UAAS,WAAU,mBACzC,uBACL;AAAA,IAEC,SACG,8CAAC,SAAI,KAAK,SAAS,WAAU,mBAAkB,UAAU,IACrD;AAAA,mDAAC,UAAK,WAAU,wBAAuB,eAAY,QAC/C,uDAAC,aAAU,MAAM,IAAI,GACzB;AAAA,MACA,8CAAC,SAAI,WAAU,wBACX;AAAA,qDAAC,mBAAK,SAAQ,SAAS,wBAAa;AAAA,QACnC,qBACG,6CAAC,mBAAK,SAAQ,WAAU,IAAG,KAAI,WAAU,0BACpC,6BAAmB,MAAM,GAC9B,IACA;AAAA,SACR;AAAA,MACA;AAAA,QAAC;AAAA;AAAA,UACG,SAAQ;AAAA,UACR,MAAK;AAAA,UACL,SAAS,MAAM;AACX,oBAAQ,UAAU;AAClB,sBAAU,IAAI;AAAA,UAClB;AAAA,UAEC,iBAAO,UAAU;AAAA;AAAA,MACtB;AAAA,OACJ,IAEA,8CAAC,UAAK,WAAU,mBAAkB,YAAU,MAAC,UAAU,QACnD;AAAA,oDAAC,SAAI,WAAU,kBACX;AAAA;AAAA,UAAC;AAAA;AAAA,YACG,KAAK;AAAA,YACL,WAAU;AAAA,YACV,MAAK;AAAA,YACL,cAAa;AAAA,YACb,cAAY,OAAO,SAAS;AAAA,YAC5B,oBAAkB,QAAQ,GAAG,EAAE,WAAW,OAAO,GAAG,EAAE,UAAU;AAAA,YAChE,aAAa,OAAO,eAAe;AAAA,YACnC,cAAc,6CAAC,YAAS,MAAM,IAAI;AAAA,YAClC,OAAO;AAAA,YACP,WAAW,QAAQ,KAAK;AAAA,YACxB,UAAU,CAAC,UAAU;AACjB,uBAAS,MAAM,OAAO,KAAK;AAC3B,kBAAI,MAAO,UAAS,IAAI;AAAA,YAC5B;AAAA;AAAA,QACJ;AAAA,QACA,6CAAC,qBAAO,MAAK,UAAS,SAAQ,WAAU,OAAM,QAAO,MAAK,MAAK,SAAS,SACnE,uBACL;AAAA,SACJ;AAAA,MACC,QACG,6CAAC,mBAAK,MAAK,UAAS,IAAI,GAAG,EAAE,UAAU,WAAU,oBAAmB,MAAK,SACpE,iBACL,IACA;AAAA,MACH,OACG,6CAAC,mBAAK,SAAQ,WAAU,IAAG,KAAI,IAAI,GAAG,EAAE,SAAS,WAAU,mBACtD,gBACL,IACA;AAAA,OACR;AAAA,IAGH;AAAA,KACL,GACJ;AAER;;;AC9IA,IAAAC,gBAAsB;AAEtB,IAAAC,aAAwC;AAapB,IAAAC,sBAAA;AAPb,SAAS,OAAO,EAAE,SAAS,OAAO,aAAa,eAAe,iBAAiB,OAAO,KAAK,cAAc,MAAM,WAAW,GAAG,MAAM,GAAgB;AACtJ,QAAM,cAAU,qBAAM;AACtB,SACI,6CAAC,aAAQ,eAAW,eAAG,aAAa,SAAS,GAAG,mBAAiB,SAAU,GAAG,OAC1E,uDAAC,sBAAQ,MAAI,MAAC,aAA0B,WAAU,mBAC9C,wDAAC,SAAI,WAAU,qBACV;AAAA;AAAA,IACD,8CAAC,SAAI,WAAU,mBACV;AAAA,gBAAU,6CAAC,mBAAM,mBAAQ,IAAU;AAAA,MACpC,6CAAC,mBAAK,SAAQ,QAAO,OAAM,UAAS,IAAI,SAAS,WAAU,oBACtD,iBACL;AAAA,MACA,6CAAC,mBAAK,SAAQ,QAAO,OAAM,UAAS,WAAU,mBACzC,uBACL;AAAA,MACA,6CAAC,gBAAa,WAAU,sBAAqB,SAAS,eAAe,WAAW,iBAAiB;AAAA,OACrG;AAAA,IACC;AAAA,KACL,GACJ,GACJ;AAER;;;AC9BA,IAAAC,gBAAsB;AAEtB,IAAAC,aAA+B;AAYX,IAAAC,sBAAA;AANb,SAAS,OAAO,EAAE,SAAS,OAAO,aAAa,eAAe,iBAAiB,YAAY,OAAO,WAAW,GAAG,MAAM,GAAgB;AACzI,QAAM,SAAK,qBAAM;AACjB,SACI,6CAAC,aAAQ,eAAW,eAAG,aAAa,SAAS,GAAG,mBAAiB,GAAG,EAAE,UAAW,GAAG,OAChF,wDAAC,SAAI,WAAU,oBACX;AAAA,kDAAC,SAAI,WAAU,kBACX;AAAA,oDAAC,SAAI,WAAU,sBACV;AAAA,kBAAU,6CAAC,mBAAM,mBAAQ,IAAU;AAAA,QACpC,6CAAC,mBAAK,SAAQ,QAAO,IAAI,GAAG,EAAE,UAAU,WAAU,oBAC7C,iBACL;AAAA,SACJ;AAAA,MACA,8CAAC,SACG;AAAA,qDAAC,mBAAK,SAAQ,QAAQ,uBAAY;AAAA,QAClC,6CAAC,gBAAa,WAAU,sBAAqB,SAAS,eAAe,WAAW,iBAAiB;AAAA,SACrG;AAAA,OACJ;AAAA,IAEA,8CAAC,SAAI,WAAU,oBACX;AAAA,mDAAC,mBAAK,MAAK,SAAQ,IAAI,GAAG,EAAE,UACvB,sBACL;AAAA,MACA,6CAAC,QAAG,WAAU,mBAAkB,mBAAiB,GAAG,EAAE,UACjD,gBAAM,IAAI,CAAC,SACR,6CAAC,QAAmB,WAAU,mBACzB,eAAK,QADD,KAAK,IAEd,CACH,GACL;AAAA,OACJ;AAAA,KACJ,GACJ;AAER;;;ACzCA,IAAAC,gBAA2C;AAE3C,IAAAC,aAA8D;AA0C/B,IAAAC,sBAAA;AApC/B,SAAS,iBAA0C;AAC/C,QAAM,MAAM;AACZ,QAAM,OAAO,GAAG,IAAI,eAAe,YAAY,EAAE,IAAI,UAAU,QAAQ,IAAI,UAAU,SAAS,GAAG,YAAY;AAC7G,MAAI,2BAA2B,KAAK,IAAI,KAAM,KAAK,SAAS,KAAK,KAAK,UAAU,iBAAiB,EAAI,QAAO;AAC5G,MAAI,KAAK,SAAS,KAAK,EAAG,QAAO;AACjC,MAAI,KAAK,SAAS,KAAK,EAAG,QAAO;AACjC,MAAI,KAAK,SAAS,OAAO,KAAK,KAAK,SAAS,KAAK,EAAG,QAAO;AAC3D,SAAO;AACX;AAEA,IAAM,eAAe,CAAC,SAAiB,gBAAgB,IAAI;AAGpD,SAAS,OAAO;AAAA,EACnB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,gBAAgB;AAAA,EAChB;AAAA,EACA;AAAA,EACA,GAAG;AACP,GAAgB;AACZ,QAAM,cAAU,qBAAM;AAEtB,QAAM,CAAC,UAAU,WAAW,QAAI,wBAAkC,IAAI;AACtE,+BAAU,MAAM,YAAY,eAAe,CAAC,GAAG,CAAC,CAAC;AAEjD,QAAM,UAAU,UAAU,KAAK,CAAC,aAAa,SAAS,OAAO,QAAQ,KAAK,UAAU,CAAC;AACrF,QAAM,QAAQ,UAAU,CAAC,SAAS,GAAG,UAAU,OAAO,CAAC,aAAa,aAAa,OAAO,CAAC,IAAI,CAAC;AAE9F,QAAM,SAAS,CAAC,UAA0B,YAAqB;AAC3D,UAAM,QAAQ,cAAc,SAAS,IAAI;AACzC,UAAM,UAAU,UAAU,QAAQ,SAAS;AAC3C,UAAMC,QAAO,UAAU,6CAAC,gBAAa,MAAM,IAAI,IAAK;AACpD,QAAI,SAAS,SAAS,QAAW;AAC7B,aACI;AAAA,QAAC;AAAA;AAAA,UAEG,eAAW,4BAAgB,EAAE,SAAS,UAAU,YAAY,aAAa,MAAM,MAAM,OAAO,OAAO,CAAC;AAAA,UACpG,MAAM,SAAS;AAAA,UACf,cAAY,UAAU,SAAY;AAAA,UAClC,SAAS,SAAS;AAAA,UAEjB;AAAA,YAAAA,QAAO,6CAAC,UAAK,WAAU,mBAAmB,UAAAA,OAAK,IAAU;AAAA,YACzD;AAAA;AAAA;AAAA,QAPI,SAAS;AAAA,MAQlB;AAAA,IAER;AACA,WACI;AAAA,MAAC;AAAA;AAAA,QAEG,SAAS,UAAU,YAAY;AAAA,QAC/B,OAAM;AAAA,QACN,MAAK;AAAA,QACL,WAAWA;AAAA,QACX,cAAY,UAAU,SAAY;AAAA,QAClC,SAAS,SAAS;AAAA,QAEjB;AAAA;AAAA,MARI,SAAS;AAAA,IASlB;AAAA,EAER;AAEA,SACI,6CAAC,aAAQ,eAAW,eAAG,aAAa,SAAS,GAAG,mBAAiB,SAAU,GAAG,OAC1E,wDAAC,SAAI,WAAU,oBACX;AAAA,kDAAC,SAAI,WAAU,mBACV;AAAA,gBAAU,6CAAC,mBAAM,mBAAQ,IAAU;AAAA,MACpC,6CAAC,mBAAK,SAAQ,cAAa,IAAI,SAAS,WAAU,oBAC7C,iBACL;AAAA,MACA,6CAAC,mBAAK,SAAQ,QAAO,WAAU,mBAC1B,uBACL;AAAA,MACA,6CAAC,SAAI,WAAU,sBAAsB,gBAAM,IAAI,CAAC,UAAU,UAAU,OAAO,UAAU,UAAU,CAAC,CAAC,GAAE;AAAA,MAClG,WAAW,SAAS,eAAe,iBAChC,8CAAC,mBAAK,SAAQ,WAAU,IAAG,KAAI,WAAU,mBACpC;AAAA,kBAAU,6CAAC,UAAM,mBAAQ,IAAU;AAAA,QACnC,SAAS,cAAc,6CAAC,UAAM,kBAAQ,aAAY,IAAU;AAAA,QAC5D,iBACG,6CAAC,UAAK,WAAU,oBACZ,uDAAC,mBAAK,MAAM,eAAe,MAAM,SAAQ,SACpC,yBAAe,OACpB,GACJ,IACA;AAAA,SACR,IACA;AAAA,OACR;AAAA,IACC;AAAA,KACL,GACJ;AAER;",
|
|
6
|
+
"names": ["import_ui", "import_jsx_runtime", "import_react", "import_ui", "import_jsx_runtime", "import_jsx_runtime", "import_react", "import_ui", "import_jsx_runtime", "import_react", "import_ui", "import_jsx_runtime", "import_react", "import_ui", "import_jsx_runtime", "import_react", "import_ui", "import_jsx_runtime", "icon"]
|
|
7
|
+
}
|
package/dist/index.d.cts
ADDED
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
export { Hero01 } from "./heroes/Hero01/Hero01.cjs";
|
|
2
|
+
export type { Hero01Props } from "./heroes/Hero01/Hero01.types.cjs";
|
|
3
|
+
export { Hero02 } from "./heroes/Hero02/Hero02.cjs";
|
|
4
|
+
export type { Hero02Props } from "./heroes/Hero02/Hero02.types.cjs";
|
|
5
|
+
export { Hero03 } from "./heroes/Hero03/Hero03.cjs";
|
|
6
|
+
export type { Hero03Labels, Hero03Props } from "./heroes/Hero03/Hero03.types.cjs";
|
|
7
|
+
export { Hero04 } from "./heroes/Hero04/Hero04.cjs";
|
|
8
|
+
export type { Hero04Props } from "./heroes/Hero04/Hero04.types.cjs";
|
|
9
|
+
export { Hero05 } from "./heroes/Hero05/Hero05.cjs";
|
|
10
|
+
export type { Hero05Logo, Hero05Props } from "./heroes/Hero05/Hero05.types.cjs";
|
|
11
|
+
export { Hero06 } from "./heroes/Hero06/Hero06.cjs";
|
|
12
|
+
export type { Hero06Platform, Hero06PlatformId, Hero06Props } from "./heroes/Hero06/Hero06.types.cjs";
|
|
13
|
+
export type { BlockAction, BlockLink } from "./shared/shared.types.cjs";
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
export { Hero01 } from "./heroes/Hero01/Hero01.js";
|
|
2
|
+
export type { Hero01Props } from "./heroes/Hero01/Hero01.types.js";
|
|
3
|
+
export { Hero02 } from "./heroes/Hero02/Hero02.js";
|
|
4
|
+
export type { Hero02Props } from "./heroes/Hero02/Hero02.types.js";
|
|
5
|
+
export { Hero03 } from "./heroes/Hero03/Hero03.js";
|
|
6
|
+
export type { Hero03Labels, Hero03Props } from "./heroes/Hero03/Hero03.types.js";
|
|
7
|
+
export { Hero04 } from "./heroes/Hero04/Hero04.js";
|
|
8
|
+
export type { Hero04Props } from "./heroes/Hero04/Hero04.types.js";
|
|
9
|
+
export { Hero05 } from "./heroes/Hero05/Hero05.js";
|
|
10
|
+
export type { Hero05Logo, Hero05Props } from "./heroes/Hero05/Hero05.types.js";
|
|
11
|
+
export { Hero06 } from "./heroes/Hero06/Hero06.js";
|
|
12
|
+
export type { Hero06Platform, Hero06PlatformId, Hero06Props } from "./heroes/Hero06/Hero06.types.js";
|
|
13
|
+
export type { BlockAction, BlockLink } from "./shared/shared.types.js";
|