@mieweb/ui 0.10.0-dev.23 → 0.10.0-dev.25
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/dist/brands/bluehive.cjs +3 -3
- package/dist/brands/bluehive.css +3 -0
- package/dist/brands/bluehive.js +1 -1
- package/dist/brands/index.cjs +9 -9
- package/dist/brands/index.js +3 -3
- package/dist/{chunk-YQDA366U.js → chunk-33DEVA3P.js} +2 -2
- package/dist/{chunk-YQDA366U.js.map → chunk-33DEVA3P.js.map} +1 -1
- package/dist/{chunk-WNJRS7Y7.cjs → chunk-3ZWCIPFT.cjs} +4 -2
- package/dist/chunk-3ZWCIPFT.cjs.map +1 -0
- package/dist/{chunk-J5CSLNCN.cjs → chunk-6VFDHJSO.cjs} +2 -2
- package/dist/{chunk-J5CSLNCN.cjs.map → chunk-6VFDHJSO.cjs.map} +1 -1
- package/dist/{chunk-ZTW4KODY.js → chunk-6ZPTZTKN.js} +3 -3
- package/dist/{chunk-ZTW4KODY.js.map → chunk-6ZPTZTKN.js.map} +1 -1
- package/dist/{chunk-SQ2D7AON.cjs → chunk-AAYXCZMV.cjs} +6 -6
- package/dist/{chunk-SQ2D7AON.cjs.map → chunk-AAYXCZMV.cjs.map} +1 -1
- package/dist/{chunk-WCDJFMZO.cjs → chunk-ADW7ZYCY.cjs} +1235 -495
- package/dist/chunk-ADW7ZYCY.cjs.map +1 -0
- package/dist/{chunk-2G75X6TS.cjs → chunk-AHHFFXJR.cjs} +3 -3
- package/dist/{chunk-2G75X6TS.cjs.map → chunk-AHHFFXJR.cjs.map} +1 -1
- package/dist/{chunk-HQ4CGVWX.cjs → chunk-B2X732V3.cjs} +7 -7
- package/dist/{chunk-HQ4CGVWX.cjs.map → chunk-B2X732V3.cjs.map} +1 -1
- package/dist/{chunk-UAMXCMST.cjs → chunk-CFI3TQMA.cjs} +3 -3
- package/dist/{chunk-UAMXCMST.cjs.map → chunk-CFI3TQMA.cjs.map} +1 -1
- package/dist/{chunk-2ABWFQQH.js → chunk-CRS2CQWM.js} +4 -4
- package/dist/{chunk-2ABWFQQH.js.map → chunk-CRS2CQWM.js.map} +1 -1
- package/dist/{chunk-MZNCLXXU.js → chunk-D22GE27K.js} +3 -3
- package/dist/{chunk-MZNCLXXU.js.map → chunk-D22GE27K.js.map} +1 -1
- package/dist/{chunk-IH55BEB3.js → chunk-DZFGTWYF.js} +6 -6
- package/dist/{chunk-IH55BEB3.js.map → chunk-DZFGTWYF.js.map} +1 -1
- package/dist/{chunk-TF7YWJHU.js → chunk-E2PBPQGS.js} +3 -3
- package/dist/{chunk-TF7YWJHU.js.map → chunk-E2PBPQGS.js.map} +1 -1
- package/dist/chunk-FBCDYTWM.js +385 -0
- package/dist/chunk-FBCDYTWM.js.map +1 -0
- package/dist/{chunk-R2O72G6Z.cjs → chunk-HC3NAN55.cjs} +7 -7
- package/dist/{chunk-R2O72G6Z.cjs.map → chunk-HC3NAN55.cjs.map} +1 -1
- package/dist/{chunk-DSB4DKWG.js → chunk-K34DXMLZ.js} +2 -2
- package/dist/{chunk-DSB4DKWG.js.map → chunk-K34DXMLZ.js.map} +1 -1
- package/dist/{chunk-Z5V7SAZ4.js → chunk-KFEN2SRZ.js} +3 -3
- package/dist/{chunk-Z5V7SAZ4.js.map → chunk-KFEN2SRZ.js.map} +1 -1
- package/dist/{chunk-MQPG3KVK.cjs → chunk-KGKBZN3T.cjs} +2 -2
- package/dist/{chunk-MQPG3KVK.cjs.map → chunk-KGKBZN3T.cjs.map} +1 -1
- package/dist/{chunk-G45FBKKV.js → chunk-P4VGVJVI.js} +4 -4
- package/dist/{chunk-G45FBKKV.js.map → chunk-P4VGVJVI.js.map} +1 -1
- package/dist/{chunk-3T7QGLNB.js → chunk-PJEL5ZZV.js} +4 -2
- package/dist/chunk-PJEL5ZZV.js.map +1 -0
- package/dist/{chunk-LJZKEMAH.cjs → chunk-R5Z7AOVU.cjs} +10 -10
- package/dist/{chunk-LJZKEMAH.cjs.map → chunk-R5Z7AOVU.cjs.map} +1 -1
- package/dist/{chunk-RJ6NTJHC.js → chunk-SRMTRD7F.js} +3 -3
- package/dist/{chunk-RJ6NTJHC.js.map → chunk-SRMTRD7F.js.map} +1 -1
- package/dist/{chunk-KHSFJTEX.js → chunk-T4JYUICS.js} +1177 -444
- package/dist/chunk-T4JYUICS.js.map +1 -0
- package/dist/{chunk-NJ6MY6V5.js → chunk-T5BBZQ66.js} +3 -3
- package/dist/{chunk-NJ6MY6V5.js.map → chunk-T5BBZQ66.js.map} +1 -1
- package/dist/{chunk-VYPPQPSZ.cjs → chunk-TJCX4OML.cjs} +3 -3
- package/dist/{chunk-VYPPQPSZ.cjs.map → chunk-TJCX4OML.cjs.map} +1 -1
- package/dist/{chunk-TAXD5ADA.cjs → chunk-UEDTZYGI.cjs} +3 -3
- package/dist/{chunk-TAXD5ADA.cjs.map → chunk-UEDTZYGI.cjs.map} +1 -1
- package/dist/{chunk-UQ3VVR6A.cjs → chunk-UPWIJC6I.cjs} +3 -3
- package/dist/{chunk-UQ3VVR6A.cjs.map → chunk-UPWIJC6I.cjs.map} +1 -1
- package/dist/{chunk-QNDP6PE5.cjs → chunk-VCCGR4J3.cjs} +92 -3
- package/dist/chunk-VCCGR4J3.cjs.map +1 -0
- package/dist/{chunk-S7WCHDBO.js → chunk-VCI2Y7ST.js} +3 -3
- package/dist/{chunk-S7WCHDBO.js.map → chunk-VCI2Y7ST.js.map} +1 -1
- package/dist/{chunk-Z4JR23IB.cjs → chunk-VOQJHSXN.cjs} +9 -9
- package/dist/{chunk-Z4JR23IB.cjs.map → chunk-VOQJHSXN.cjs.map} +1 -1
- package/dist/{chunk-EK3BCET6.js → chunk-WFVE36PO.js} +92 -3
- package/dist/chunk-WFVE36PO.js.map +1 -0
- package/dist/chunk-XI74P5F2.cjs +424 -0
- package/dist/chunk-XI74P5F2.cjs.map +1 -0
- package/dist/components/BoardView/index.d.cts +2 -90
- package/dist/components/BoardView/index.d.ts +2 -90
- package/dist/components/CalendarView/index.d.cts +1 -1
- package/dist/components/CalendarView/index.d.ts +1 -1
- package/dist/components/CountryCodeDropdown/index.cjs +5 -5
- package/dist/components/CountryCodeDropdown/index.js +2 -2
- package/dist/components/Dropdown/index.cjs +9 -9
- package/dist/components/Dropdown/index.js +2 -2
- package/dist/components/GanttView/index.d.cts +1 -1
- package/dist/components/GanttView/index.d.ts +1 -1
- package/dist/components/GlossaryTooltip/index.cjs +3 -3
- package/dist/components/GlossaryTooltip/index.js +2 -2
- package/dist/components/Markdown/index.cjs +15 -15
- package/dist/components/Markdown/index.js +3 -3
- package/dist/components/MediaEditor/index.cjs +10 -10
- package/dist/components/MediaEditor/index.js +5 -5
- package/dist/components/RadialExplorer/index.cjs +1 -1
- package/dist/components/RadialExplorer/index.js +1 -1
- package/dist/components/RichTextEditor/index.cjs +6 -6
- package/dist/components/RichTextEditor/index.js +3 -3
- package/dist/components/Select/index.cjs +4 -4
- package/dist/components/Select/index.js +2 -2
- package/dist/components/SourceTip/index.cjs +3 -3
- package/dist/components/SourceTip/index.js +2 -2
- package/dist/components/SuperChat/index.cjs +11 -11
- package/dist/components/SuperChat/index.js +4 -4
- package/dist/components/SuperChat/plugins/index.cjs +5 -5
- package/dist/components/SuperChat/plugins/index.js +4 -4
- package/dist/components/ViewSet/index.d.cts +1 -101
- package/dist/components/ViewSet/index.d.ts +1 -101
- package/dist/components/ViewSwitcher/index.d.cts +4 -57
- package/dist/components/ViewSwitcher/index.d.ts +4 -57
- package/dist/datavis.cjs +1 -1
- package/dist/datavis.js +1 -1
- package/dist/deck.cjs +3360 -0
- package/dist/deck.cjs.map +1 -0
- package/dist/deck.d.cts +712 -0
- package/dist/deck.d.ts +712 -0
- package/dist/deck.js +3316 -0
- package/dist/deck.js.map +1 -0
- package/dist/esheet.cjs +10 -10
- package/dist/esheet.js +7 -7
- package/dist/hooks/index.cjs +15 -15
- package/dist/hooks/index.js +3 -3
- package/dist/icons-wBacj6BW.d.cts +142 -0
- package/dist/icons-wBacj6BW.d.ts +142 -0
- package/dist/index-DoYYWsNc.d.cts +127 -0
- package/dist/index-DoYYWsNc.d.ts +127 -0
- package/dist/index.cjs +604 -551
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +313 -4
- package/dist/index.d.ts +313 -4
- package/dist/index.js +60 -59
- package/dist/index.js.map +1 -1
- package/dist/maps.cjs +160 -0
- package/dist/maps.cjs.map +1 -0
- package/dist/maps.d.cts +42 -0
- package/dist/maps.d.ts +42 -0
- package/dist/maps.js +138 -0
- package/dist/maps.js.map +1 -0
- package/dist/styles/effects.css +100 -0
- package/dist/styles/init.css +3 -0
- package/dist/styles.css +1 -1
- package/dist/tailwind-preset.cjs +4 -4
- package/dist/tailwind-preset.js +1 -1
- package/dist/templates.cjs +82 -29
- package/dist/templates.d.cts +316 -142
- package/dist/templates.d.ts +316 -142
- package/dist/templates.js +2 -1
- package/dist/{types-C3HQe74F.d.cts → types-DsdZvEI1.d.cts} +7 -1
- package/dist/{types-C3HQe74F.d.ts → types-DsdZvEI1.d.ts} +7 -1
- package/package.json +27 -1
- package/dist/chunk-3T7QGLNB.js.map +0 -1
- package/dist/chunk-EK3BCET6.js.map +0 -1
- package/dist/chunk-KHSFJTEX.js.map +0 -1
- package/dist/chunk-QNDP6PE5.cjs.map +0 -1
- package/dist/chunk-WCDJFMZO.cjs.map +0 -1
- package/dist/chunk-WNJRS7Y7.cjs.map +0 -1
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
+
var chunkXI74P5F2_cjs = require('./chunk-XI74P5F2.cjs');
|
|
3
4
|
var chunkZ5S5JEJD_cjs = require('./chunk-Z5S5JEJD.cjs');
|
|
4
5
|
var chunkYVL3XATO_cjs = require('./chunk-YVL3XATO.cjs');
|
|
5
6
|
var chunkDXEPYK3I_cjs = require('./chunk-DXEPYK3I.cjs');
|
|
6
7
|
var chunkS5RVSXDV_cjs = require('./chunk-S5RVSXDV.cjs');
|
|
7
|
-
var
|
|
8
|
+
var React5 = require('react');
|
|
8
9
|
var lucideReact = require('lucide-react');
|
|
9
10
|
var jsxRuntime = require('react/jsx-runtime');
|
|
10
11
|
|
|
@@ -26,330 +27,10 @@ function _interopNamespace(e) {
|
|
|
26
27
|
return Object.freeze(n);
|
|
27
28
|
}
|
|
28
29
|
|
|
29
|
-
var
|
|
30
|
+
var React5__namespace = /*#__PURE__*/_interopNamespace(React5);
|
|
30
31
|
|
|
31
|
-
// src/utils/own.ts
|
|
32
|
-
function ownProperty(map, key) {
|
|
33
|
-
return map != null && Object.hasOwn(map, key) ? map[key] : void 0;
|
|
34
|
-
}
|
|
35
|
-
var templateIcons = {
|
|
36
|
-
activity: lucideReact.Activity,
|
|
37
|
-
award: lucideReact.Award,
|
|
38
|
-
"badge-check": lucideReact.BadgeCheck,
|
|
39
|
-
bell: lucideReact.Bell,
|
|
40
|
-
briefcase: lucideReact.Briefcase,
|
|
41
|
-
building: lucideReact.Building2,
|
|
42
|
-
calendar: lucideReact.Calendar,
|
|
43
|
-
"calendar-check": lucideReact.CalendarCheck,
|
|
44
|
-
"chart-column": lucideReact.ChartColumn,
|
|
45
|
-
"chart-line": lucideReact.ChartLine,
|
|
46
|
-
"circle-check": lucideReact.CircleCheck,
|
|
47
|
-
"clipboard-check": lucideReact.ClipboardCheck,
|
|
48
|
-
clock: lucideReact.Clock,
|
|
49
|
-
cloud: lucideReact.Cloud,
|
|
50
|
-
database: lucideReact.Database,
|
|
51
|
-
"dollar-sign": lucideReact.DollarSign,
|
|
52
|
-
factory: lucideReact.Factory,
|
|
53
|
-
"file-text": lucideReact.FileText,
|
|
54
|
-
flask: lucideReact.FlaskConical,
|
|
55
|
-
globe: lucideReact.Globe,
|
|
56
|
-
"graduation-cap": lucideReact.GraduationCap,
|
|
57
|
-
handshake: lucideReact.Handshake,
|
|
58
|
-
"hard-hat": lucideReact.HardHat,
|
|
59
|
-
headset: lucideReact.Headset,
|
|
60
|
-
"heart-pulse": lucideReact.HeartPulse,
|
|
61
|
-
hospital: lucideReact.Hospital,
|
|
62
|
-
layers: lucideReact.Layers,
|
|
63
|
-
leaf: lucideReact.Leaf,
|
|
64
|
-
lightbulb: lucideReact.Lightbulb,
|
|
65
|
-
lock: lucideReact.Lock,
|
|
66
|
-
mail: lucideReact.Mail,
|
|
67
|
-
"map-pin": lucideReact.MapPin,
|
|
68
|
-
"message-square": lucideReact.MessageSquare,
|
|
69
|
-
microscope: lucideReact.Microscope,
|
|
70
|
-
phone: lucideReact.Phone,
|
|
71
|
-
plane: lucideReact.Plane,
|
|
72
|
-
plug: lucideReact.Plug,
|
|
73
|
-
rocket: lucideReact.Rocket,
|
|
74
|
-
scale: lucideReact.Scale,
|
|
75
|
-
search: lucideReact.Search,
|
|
76
|
-
settings: lucideReact.Settings,
|
|
77
|
-
shield: lucideReact.Shield,
|
|
78
|
-
"shield-check": lucideReact.ShieldCheck,
|
|
79
|
-
smartphone: lucideReact.Smartphone,
|
|
80
|
-
sparkles: lucideReact.Sparkles,
|
|
81
|
-
stethoscope: lucideReact.Stethoscope,
|
|
82
|
-
syringe: lucideReact.Syringe,
|
|
83
|
-
target: lucideReact.Target,
|
|
84
|
-
timer: lucideReact.Timer,
|
|
85
|
-
"trending-up": lucideReact.TrendingUp,
|
|
86
|
-
truck: lucideReact.Truck,
|
|
87
|
-
"user-check": lucideReact.UserCheck,
|
|
88
|
-
users: lucideReact.Users,
|
|
89
|
-
workflow: lucideReact.Workflow,
|
|
90
|
-
wrench: lucideReact.Wrench,
|
|
91
|
-
zap: lucideReact.Zap
|
|
92
|
-
};
|
|
93
|
-
function TemplateIcon({ name, icons, className }) {
|
|
94
|
-
const Icon = ownProperty(icons, name) ?? ownProperty(templateIcons, name);
|
|
95
|
-
if (Icon)
|
|
96
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
97
|
-
Icon,
|
|
98
|
-
{
|
|
99
|
-
"aria-hidden": "true",
|
|
100
|
-
strokeWidth: 1.75,
|
|
101
|
-
className: chunkS5RVSXDV_cjs.cn("size-5", className)
|
|
102
|
-
}
|
|
103
|
-
);
|
|
104
|
-
if (name.length <= 4)
|
|
105
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
106
|
-
"span",
|
|
107
|
-
{
|
|
108
|
-
"aria-hidden": "true",
|
|
109
|
-
className: chunkS5RVSXDV_cjs.cn("text-xs font-bold tracking-wide", className),
|
|
110
|
-
children: name
|
|
111
|
-
}
|
|
112
|
-
);
|
|
113
|
-
return null;
|
|
114
|
-
}
|
|
115
|
-
var toneSurface = {
|
|
116
|
-
default: "bg-background text-foreground",
|
|
117
|
-
muted: "bg-muted text-foreground",
|
|
118
|
-
brand: "bg-primary-900 text-white"
|
|
119
|
-
};
|
|
120
|
-
var toneClass = (tone) => toneSurface[tone];
|
|
121
|
-
var cardClass = (tone) => tone === "brand" ? "border border-white/15 bg-white/5 text-white" : "border border-border bg-card text-card-foreground";
|
|
122
|
-
var mutedTextClass = (tone) => tone === "brand" ? "text-white/80" : tone === "muted" ? "text-foreground/80" : "text-muted-foreground";
|
|
123
|
-
var headingTextClass = (tone) => tone === "brand" ? "text-white" : "text-foreground";
|
|
124
|
-
var accentTextClass = (tone) => tone === "brand" ? "text-white" : "text-primary-800 dark:text-primary-300";
|
|
125
|
-
var containerClass = (width = "wide") => chunkS5RVSXDV_cjs.cn(
|
|
126
|
-
"mx-auto w-full px-4 sm:px-6 lg:px-8",
|
|
127
|
-
width === "narrow" ? "max-w-3xl" : "max-w-7xl"
|
|
128
|
-
);
|
|
129
|
-
var SAFE_HREF_SCHEME = /^(?:https?|mailto|tel):/i;
|
|
130
|
-
function safeHref(href) {
|
|
131
|
-
if (href == null) return void 0;
|
|
132
|
-
const stripped = href.replace(/[\u0000-\u0020]/g, "");
|
|
133
|
-
if (!stripped) return void 0;
|
|
134
|
-
if (!/^[a-z][a-z0-9+.-]*:/i.test(stripped)) return href;
|
|
135
|
-
return SAFE_HREF_SCHEME.test(stripped) ? href : void 0;
|
|
136
|
-
}
|
|
137
|
-
function TemplateAnchor({
|
|
138
|
-
components,
|
|
139
|
-
trackingId,
|
|
140
|
-
children,
|
|
141
|
-
...props
|
|
142
|
-
}) {
|
|
143
|
-
const Link = components?.Link;
|
|
144
|
-
const href = safeHref(props.href);
|
|
145
|
-
const all = { ...props, href, "data-track": trackingId };
|
|
146
|
-
return Link && href != null ? /* @__PURE__ */ jsxRuntime.jsx(Link, { ...all, href, children }) : /* @__PURE__ */ jsxRuntime.jsx("a", { ...all, children });
|
|
147
|
-
}
|
|
148
|
-
var fetchPriorityHigh = React__namespace.version.startsWith("18.") ? { fetchpriority: "high" } : { fetchPriority: "high" };
|
|
149
|
-
function TemplateImg({
|
|
150
|
-
components,
|
|
151
|
-
priority,
|
|
152
|
-
...image
|
|
153
|
-
}) {
|
|
154
|
-
const Image = components?.Image;
|
|
155
|
-
if (Image) return /* @__PURE__ */ jsxRuntime.jsx(Image, { ...image, priority });
|
|
156
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
157
|
-
"img",
|
|
158
|
-
{
|
|
159
|
-
...image,
|
|
160
|
-
alt: image.alt,
|
|
161
|
-
loading: priority ? void 0 : "lazy",
|
|
162
|
-
...priority ? fetchPriorityHigh : {},
|
|
163
|
-
decoding: "async"
|
|
164
|
-
}
|
|
165
|
-
);
|
|
166
|
-
}
|
|
167
|
-
function SectionHeading({
|
|
168
|
-
eyebrow,
|
|
169
|
-
title,
|
|
170
|
-
description,
|
|
171
|
-
as: Heading = "h2",
|
|
172
|
-
size = "section",
|
|
173
|
-
align = "start",
|
|
174
|
-
tone = "default",
|
|
175
|
-
titleId,
|
|
176
|
-
className
|
|
177
|
-
}) {
|
|
178
|
-
if (!eyebrow && !title && !description) return null;
|
|
179
|
-
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
180
|
-
"div",
|
|
181
|
-
{
|
|
182
|
-
"data-slot": "section-heading",
|
|
183
|
-
className: chunkS5RVSXDV_cjs.cn(
|
|
184
|
-
"max-w-3xl",
|
|
185
|
-
align === "center" && "mx-auto text-center",
|
|
186
|
-
className
|
|
187
|
-
),
|
|
188
|
-
children: [
|
|
189
|
-
eyebrow && /* @__PURE__ */ jsxRuntime.jsx(
|
|
190
|
-
"p",
|
|
191
|
-
{
|
|
192
|
-
className: chunkS5RVSXDV_cjs.cn(
|
|
193
|
-
"mb-3 text-sm font-semibold tracking-wider uppercase",
|
|
194
|
-
accentTextClass(tone)
|
|
195
|
-
),
|
|
196
|
-
children: eyebrow
|
|
197
|
-
}
|
|
198
|
-
),
|
|
199
|
-
title && /* @__PURE__ */ jsxRuntime.jsx(
|
|
200
|
-
Heading,
|
|
201
|
-
{
|
|
202
|
-
id: titleId,
|
|
203
|
-
className: chunkS5RVSXDV_cjs.cn(
|
|
204
|
-
"font-bold tracking-tight text-balance",
|
|
205
|
-
headingTextClass(tone),
|
|
206
|
-
size === "hero" ? "text-4xl sm:text-5xl lg:text-6xl" : "text-3xl sm:text-4xl"
|
|
207
|
-
),
|
|
208
|
-
children: title
|
|
209
|
-
}
|
|
210
|
-
),
|
|
211
|
-
description && /* @__PURE__ */ jsxRuntime.jsx(
|
|
212
|
-
"p",
|
|
213
|
-
{
|
|
214
|
-
className: chunkS5RVSXDV_cjs.cn(
|
|
215
|
-
"mt-4 text-pretty",
|
|
216
|
-
size === "hero" ? "text-lg sm:text-xl" : "text-lg",
|
|
217
|
-
mutedTextClass(tone)
|
|
218
|
-
),
|
|
219
|
-
children: description
|
|
220
|
-
}
|
|
221
|
-
)
|
|
222
|
-
]
|
|
223
|
-
}
|
|
224
|
-
);
|
|
225
|
-
}
|
|
226
|
-
var SectionShell = React__namespace.forwardRef(
|
|
227
|
-
({
|
|
228
|
-
eyebrow,
|
|
229
|
-
title,
|
|
230
|
-
description,
|
|
231
|
-
tone = "default",
|
|
232
|
-
align = "start",
|
|
233
|
-
width = "wide",
|
|
234
|
-
spacing = "default",
|
|
235
|
-
className,
|
|
236
|
-
children,
|
|
237
|
-
components,
|
|
238
|
-
...rest
|
|
239
|
-
}, ref) => {
|
|
240
|
-
const titleId = React__namespace.useId();
|
|
241
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
242
|
-
"section",
|
|
243
|
-
{
|
|
244
|
-
ref,
|
|
245
|
-
"data-slot": "landing-section",
|
|
246
|
-
"data-tone": tone,
|
|
247
|
-
"aria-labelledby": title ? titleId : void 0,
|
|
248
|
-
className: chunkS5RVSXDV_cjs.cn(
|
|
249
|
-
spacing === "compact" ? "py-10 sm:py-14" : "py-16 sm:py-24",
|
|
250
|
-
toneClass(tone),
|
|
251
|
-
className
|
|
252
|
-
),
|
|
253
|
-
...rest,
|
|
254
|
-
children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: containerClass(width), children: [
|
|
255
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
256
|
-
SectionHeading,
|
|
257
|
-
{
|
|
258
|
-
eyebrow,
|
|
259
|
-
title,
|
|
260
|
-
description,
|
|
261
|
-
align,
|
|
262
|
-
tone,
|
|
263
|
-
titleId,
|
|
264
|
-
className: chunkS5RVSXDV_cjs.cn(width === "narrow" && "max-w-none")
|
|
265
|
-
}
|
|
266
|
-
),
|
|
267
|
-
children
|
|
268
|
-
] })
|
|
269
|
-
}
|
|
270
|
-
);
|
|
271
|
-
}
|
|
272
|
-
);
|
|
273
|
-
SectionShell.displayName = "SectionShell";
|
|
274
|
-
function CtaLinks({
|
|
275
|
-
primary,
|
|
276
|
-
secondary,
|
|
277
|
-
tone = "default",
|
|
278
|
-
align = "start",
|
|
279
|
-
className,
|
|
280
|
-
components
|
|
281
|
-
}) {
|
|
282
|
-
if (!primary && !secondary) return null;
|
|
283
|
-
const onBrand = tone === "brand";
|
|
284
|
-
const wrap = "h-auto min-h-12 py-3 whitespace-normal text-center";
|
|
285
|
-
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
286
|
-
"div",
|
|
287
|
-
{
|
|
288
|
-
"data-slot": "cta-links",
|
|
289
|
-
className: chunkS5RVSXDV_cjs.cn(
|
|
290
|
-
"flex flex-col gap-3 sm:flex-row sm:flex-wrap",
|
|
291
|
-
align === "center" && "sm:justify-center",
|
|
292
|
-
className
|
|
293
|
-
),
|
|
294
|
-
children: [
|
|
295
|
-
primary && /* @__PURE__ */ jsxRuntime.jsxs(
|
|
296
|
-
TemplateAnchor,
|
|
297
|
-
{
|
|
298
|
-
href: primary.href,
|
|
299
|
-
trackingId: primary.trackingId,
|
|
300
|
-
components,
|
|
301
|
-
"data-slot": "cta-primary",
|
|
302
|
-
className: chunkS5RVSXDV_cjs.cn(
|
|
303
|
-
chunkDXEPYK3I_cjs.buttonVariants({ variant: "primary", size: "lg" }),
|
|
304
|
-
wrap,
|
|
305
|
-
onBrand && "text-primary-900 hover:bg-primary-50 active:bg-primary-100 bg-white"
|
|
306
|
-
),
|
|
307
|
-
children: [
|
|
308
|
-
primary.label,
|
|
309
|
-
/* @__PURE__ */ jsxRuntime.jsx(lucideReact.ArrowRight, { "aria-hidden": "true", className: "size-5 rtl:-scale-x-100" })
|
|
310
|
-
]
|
|
311
|
-
}
|
|
312
|
-
),
|
|
313
|
-
secondary && /* @__PURE__ */ jsxRuntime.jsx(
|
|
314
|
-
TemplateAnchor,
|
|
315
|
-
{
|
|
316
|
-
href: secondary.href,
|
|
317
|
-
trackingId: secondary.trackingId,
|
|
318
|
-
components,
|
|
319
|
-
"data-slot": "cta-secondary",
|
|
320
|
-
className: chunkS5RVSXDV_cjs.cn(
|
|
321
|
-
chunkDXEPYK3I_cjs.buttonVariants({ variant: "outline", size: "lg" }),
|
|
322
|
-
wrap,
|
|
323
|
-
onBrand && "border-white/70 text-white hover:bg-white/10 hover:text-white dark:border-white/70 dark:text-white dark:hover:bg-white/10"
|
|
324
|
-
),
|
|
325
|
-
children: secondary.label
|
|
326
|
-
}
|
|
327
|
-
)
|
|
328
|
-
]
|
|
329
|
-
}
|
|
330
|
-
);
|
|
331
|
-
}
|
|
332
|
-
function IconTile({
|
|
333
|
-
name,
|
|
334
|
-
icons,
|
|
335
|
-
tone = "default",
|
|
336
|
-
className
|
|
337
|
-
}) {
|
|
338
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
339
|
-
"span",
|
|
340
|
-
{
|
|
341
|
-
"data-slot": "icon-tile",
|
|
342
|
-
className: chunkS5RVSXDV_cjs.cn(
|
|
343
|
-
"inline-flex size-11 shrink-0 items-center justify-center rounded-xl",
|
|
344
|
-
tone === "brand" ? "bg-white/10 text-white" : "bg-primary-100 text-primary-900 dark:bg-primary-900/60 dark:text-primary-200",
|
|
345
|
-
className
|
|
346
|
-
),
|
|
347
|
-
children: /* @__PURE__ */ jsxRuntime.jsx(TemplateIcon, { name, icons })
|
|
348
|
-
}
|
|
349
|
-
);
|
|
350
|
-
}
|
|
351
32
|
var cellClass = "px-3 py-3 sm:px-5 sm:py-4";
|
|
352
|
-
var ComparisonSection =
|
|
33
|
+
var ComparisonSection = React5__namespace.forwardRef(
|
|
353
34
|
({
|
|
354
35
|
columns,
|
|
355
36
|
rows,
|
|
@@ -375,13 +56,13 @@ var ComparisonSection = React__namespace.forwardRef(
|
|
|
375
56
|
lucideReact.X,
|
|
376
57
|
{
|
|
377
58
|
"aria-hidden": "true",
|
|
378
|
-
className: chunkS5RVSXDV_cjs.cn("mx-auto size-5", mutedTextClass(tone))
|
|
59
|
+
className: chunkS5RVSXDV_cjs.cn("mx-auto size-5", chunkXI74P5F2_cjs.mutedTextClass(tone))
|
|
379
60
|
}
|
|
380
61
|
),
|
|
381
62
|
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "sr-only", children: labels?.notIncluded ?? "Not included" })
|
|
382
63
|
] });
|
|
383
64
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
384
|
-
SectionShell,
|
|
65
|
+
chunkXI74P5F2_cjs.SectionShell,
|
|
385
66
|
{
|
|
386
67
|
ref,
|
|
387
68
|
"data-slot": "comparison-section",
|
|
@@ -392,7 +73,7 @@ var ComparisonSection = React__namespace.forwardRef(
|
|
|
392
73
|
children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
393
74
|
"div",
|
|
394
75
|
{
|
|
395
|
-
className: chunkS5RVSXDV_cjs.cn("mt-12 overflow-x-auto rounded-2xl", cardClass(tone)),
|
|
76
|
+
className: chunkS5RVSXDV_cjs.cn("mt-12 overflow-x-auto rounded-2xl", chunkXI74P5F2_cjs.cardClass(tone)),
|
|
396
77
|
children: /* @__PURE__ */ jsxRuntime.jsxs(
|
|
397
78
|
"table",
|
|
398
79
|
{
|
|
@@ -468,7 +149,7 @@ var ComparisonSection = React__namespace.forwardRef(
|
|
|
468
149
|
}
|
|
469
150
|
);
|
|
470
151
|
ComparisonSection.displayName = "ComparisonSection";
|
|
471
|
-
var CtaSection =
|
|
152
|
+
var CtaSection = React5__namespace.forwardRef(
|
|
472
153
|
({
|
|
473
154
|
eyebrow,
|
|
474
155
|
title,
|
|
@@ -483,10 +164,10 @@ var CtaSection = React__namespace.forwardRef(
|
|
|
483
164
|
className,
|
|
484
165
|
...rest
|
|
485
166
|
}, ref) => {
|
|
486
|
-
const titleId =
|
|
167
|
+
const titleId = React5__namespace.useId();
|
|
487
168
|
const body = /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
488
169
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
489
|
-
SectionHeading,
|
|
170
|
+
chunkXI74P5F2_cjs.SectionHeading,
|
|
490
171
|
{
|
|
491
172
|
eyebrow,
|
|
492
173
|
title,
|
|
@@ -497,7 +178,7 @@ var CtaSection = React__namespace.forwardRef(
|
|
|
497
178
|
}
|
|
498
179
|
),
|
|
499
180
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
500
|
-
CtaLinks,
|
|
181
|
+
chunkXI74P5F2_cjs.CtaLinks,
|
|
501
182
|
{
|
|
502
183
|
primary: primaryCta,
|
|
503
184
|
secondary: secondaryCta,
|
|
@@ -512,7 +193,7 @@ var CtaSection = React__namespace.forwardRef(
|
|
|
512
193
|
{
|
|
513
194
|
className: chunkS5RVSXDV_cjs.cn(
|
|
514
195
|
"mt-4 text-sm",
|
|
515
|
-
mutedTextClass(tone),
|
|
196
|
+
chunkXI74P5F2_cjs.mutedTextClass(tone),
|
|
516
197
|
align === "center" && "text-center"
|
|
517
198
|
),
|
|
518
199
|
children: note
|
|
@@ -528,16 +209,16 @@ var CtaSection = React__namespace.forwardRef(
|
|
|
528
209
|
"aria-labelledby": titleId,
|
|
529
210
|
className: chunkS5RVSXDV_cjs.cn(
|
|
530
211
|
"py-16 sm:py-24",
|
|
531
|
-
layout === "band" ? toneClass(tone) : "bg-background",
|
|
212
|
+
layout === "band" ? chunkXI74P5F2_cjs.toneClass(tone) : "bg-background",
|
|
532
213
|
className
|
|
533
214
|
),
|
|
534
215
|
...rest,
|
|
535
|
-
children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: containerClass(), children: layout === "panel" ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
216
|
+
children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: chunkXI74P5F2_cjs.containerClass(), children: layout === "panel" ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
536
217
|
"div",
|
|
537
218
|
{
|
|
538
219
|
className: chunkS5RVSXDV_cjs.cn(
|
|
539
220
|
"rounded-3xl px-6 py-12 sm:px-12 sm:py-16",
|
|
540
|
-
toneClass(tone),
|
|
221
|
+
chunkXI74P5F2_cjs.toneClass(tone),
|
|
541
222
|
tone !== "brand" && "border-border border"
|
|
542
223
|
),
|
|
543
224
|
children: body
|
|
@@ -548,9 +229,9 @@ var CtaSection = React__namespace.forwardRef(
|
|
|
548
229
|
}
|
|
549
230
|
);
|
|
550
231
|
CtaSection.displayName = "CtaSection";
|
|
551
|
-
var FaqSection =
|
|
232
|
+
var FaqSection = React5__namespace.forwardRef(
|
|
552
233
|
({ items, tone = "default", align = "center", ...rest }, ref) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
553
|
-
SectionShell,
|
|
234
|
+
chunkXI74P5F2_cjs.SectionShell,
|
|
554
235
|
{
|
|
555
236
|
ref,
|
|
556
237
|
"data-slot": "faq-section",
|
|
@@ -562,7 +243,7 @@ var FaqSection = React__namespace.forwardRef(
|
|
|
562
243
|
"details",
|
|
563
244
|
{
|
|
564
245
|
id: item.id,
|
|
565
|
-
className: chunkS5RVSXDV_cjs.cn("group rounded-xl", cardClass(tone)),
|
|
246
|
+
className: chunkS5RVSXDV_cjs.cn("group rounded-xl", chunkXI74P5F2_cjs.cardClass(tone)),
|
|
566
247
|
children: [
|
|
567
248
|
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
568
249
|
"summary",
|
|
@@ -589,7 +270,7 @@ var FaqSection = React__namespace.forwardRef(
|
|
|
589
270
|
{
|
|
590
271
|
className: chunkS5RVSXDV_cjs.cn(
|
|
591
272
|
"px-5 pb-5 whitespace-pre-line",
|
|
592
|
-
mutedTextClass(tone)
|
|
273
|
+
chunkXI74P5F2_cjs.mutedTextClass(tone)
|
|
593
274
|
),
|
|
594
275
|
children: item.answer
|
|
595
276
|
}
|
|
@@ -607,7 +288,7 @@ var columnClass = {
|
|
|
607
288
|
3: "lg:grid-cols-3",
|
|
608
289
|
4: "lg:grid-cols-4"
|
|
609
290
|
};
|
|
610
|
-
var FeatureGridSection =
|
|
291
|
+
var FeatureGridSection = React5__namespace.forwardRef(
|
|
611
292
|
({
|
|
612
293
|
features,
|
|
613
294
|
columns = 3,
|
|
@@ -618,7 +299,7 @@ var FeatureGridSection = React__namespace.forwardRef(
|
|
|
618
299
|
components,
|
|
619
300
|
...rest
|
|
620
301
|
}, ref) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
621
|
-
SectionShell,
|
|
302
|
+
chunkXI74P5F2_cjs.SectionShell,
|
|
622
303
|
{
|
|
623
304
|
ref,
|
|
624
305
|
"data-slot": "feature-grid-section",
|
|
@@ -634,31 +315,31 @@ var FeatureGridSection = React__namespace.forwardRef(
|
|
|
634
315
|
{
|
|
635
316
|
className: chunkS5RVSXDV_cjs.cn(
|
|
636
317
|
"flex flex-col gap-3",
|
|
637
|
-
variant === "cards" && chunkS5RVSXDV_cjs.cn("rounded-2xl p-6", cardClass(tone))
|
|
318
|
+
variant === "cards" && chunkS5RVSXDV_cjs.cn("rounded-2xl p-6", chunkXI74P5F2_cjs.cardClass(tone))
|
|
638
319
|
),
|
|
639
320
|
children: [
|
|
640
|
-
feature.icon && /* @__PURE__ */ jsxRuntime.jsx(IconTile, { name: feature.icon, icons, tone }),
|
|
321
|
+
feature.icon && /* @__PURE__ */ jsxRuntime.jsx(chunkXI74P5F2_cjs.IconTile, { name: feature.icon, icons, tone }),
|
|
641
322
|
feature.tag && /* @__PURE__ */ jsxRuntime.jsx(
|
|
642
323
|
"p",
|
|
643
324
|
{
|
|
644
325
|
className: chunkS5RVSXDV_cjs.cn(
|
|
645
326
|
"text-xs font-semibold tracking-wider uppercase",
|
|
646
|
-
accentTextClass(tone)
|
|
327
|
+
chunkXI74P5F2_cjs.accentTextClass(tone)
|
|
647
328
|
),
|
|
648
329
|
children: feature.tag
|
|
649
330
|
}
|
|
650
331
|
),
|
|
651
|
-
/* @__PURE__ */ jsxRuntime.jsx("h3", { className: chunkS5RVSXDV_cjs.cn("text-lg font-semibold", headingTextClass(tone)), children: feature.title }),
|
|
652
|
-
/* @__PURE__ */ jsxRuntime.jsx("p", { className: mutedTextClass(tone), children: feature.description }),
|
|
332
|
+
/* @__PURE__ */ jsxRuntime.jsx("h3", { className: chunkS5RVSXDV_cjs.cn("text-lg font-semibold", chunkXI74P5F2_cjs.headingTextClass(tone)), children: feature.title }),
|
|
333
|
+
/* @__PURE__ */ jsxRuntime.jsx("p", { className: chunkXI74P5F2_cjs.mutedTextClass(tone), children: feature.description }),
|
|
653
334
|
feature.link && /* @__PURE__ */ jsxRuntime.jsxs(
|
|
654
|
-
TemplateAnchor,
|
|
335
|
+
chunkXI74P5F2_cjs.TemplateAnchor,
|
|
655
336
|
{
|
|
656
337
|
href: feature.link.href,
|
|
657
338
|
trackingId: feature.link.trackingId,
|
|
658
339
|
components,
|
|
659
340
|
className: chunkS5RVSXDV_cjs.cn(
|
|
660
341
|
"mt-auto inline-flex items-center gap-1 font-semibold hover:underline",
|
|
661
|
-
accentTextClass(tone)
|
|
342
|
+
chunkXI74P5F2_cjs.accentTextClass(tone)
|
|
662
343
|
),
|
|
663
344
|
children: [
|
|
664
345
|
feature.link.label,
|
|
@@ -682,7 +363,7 @@ var FeatureGridSection = React__namespace.forwardRef(
|
|
|
682
363
|
)
|
|
683
364
|
);
|
|
684
365
|
FeatureGridSection.displayName = "FeatureGridSection";
|
|
685
|
-
var HeroSection =
|
|
366
|
+
var HeroSection = React5__namespace.forwardRef(
|
|
686
367
|
({
|
|
687
368
|
eyebrow,
|
|
688
369
|
title,
|
|
@@ -693,6 +374,8 @@ var HeroSection = React__namespace.forwardRef(
|
|
|
693
374
|
secondaryCta,
|
|
694
375
|
ctaNote,
|
|
695
376
|
highlights,
|
|
377
|
+
meta,
|
|
378
|
+
logo,
|
|
696
379
|
image,
|
|
697
380
|
breadcrumbs,
|
|
698
381
|
headingLevel = "h1",
|
|
@@ -701,7 +384,7 @@ var HeroSection = React__namespace.forwardRef(
|
|
|
701
384
|
className,
|
|
702
385
|
...rest
|
|
703
386
|
}, ref) => {
|
|
704
|
-
const titleId =
|
|
387
|
+
const titleId = React5__namespace.useId();
|
|
705
388
|
const split = variant === "split" && !!image;
|
|
706
389
|
const align = split ? "start" : "center";
|
|
707
390
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -711,13 +394,13 @@ var HeroSection = React__namespace.forwardRef(
|
|
|
711
394
|
"data-slot": "hero-section",
|
|
712
395
|
"data-tone": tone,
|
|
713
396
|
"aria-labelledby": titleId,
|
|
714
|
-
className: chunkS5RVSXDV_cjs.cn("py-16 sm:py-24 lg:py-28", toneClass(tone), className),
|
|
397
|
+
className: chunkS5RVSXDV_cjs.cn("py-16 sm:py-24 lg:py-28", chunkXI74P5F2_cjs.toneClass(tone), className),
|
|
715
398
|
...rest,
|
|
716
399
|
children: /* @__PURE__ */ jsxRuntime.jsxs(
|
|
717
400
|
"div",
|
|
718
401
|
{
|
|
719
402
|
className: chunkS5RVSXDV_cjs.cn(
|
|
720
|
-
containerClass(),
|
|
403
|
+
chunkXI74P5F2_cjs.containerClass(),
|
|
721
404
|
split && "grid items-center gap-12 lg:grid-cols-2"
|
|
722
405
|
),
|
|
723
406
|
children: [
|
|
@@ -732,14 +415,14 @@ var HeroSection = React__namespace.forwardRef(
|
|
|
732
415
|
{
|
|
733
416
|
className: chunkS5RVSXDV_cjs.cn(
|
|
734
417
|
"flex flex-wrap items-center gap-1 text-sm",
|
|
735
|
-
mutedTextClass(tone),
|
|
418
|
+
chunkXI74P5F2_cjs.mutedTextClass(tone),
|
|
736
419
|
!split && "justify-center"
|
|
737
420
|
),
|
|
738
421
|
children: breadcrumbs.map((crumb, i) => {
|
|
739
422
|
const last = i === breadcrumbs.length - 1;
|
|
740
423
|
return /* @__PURE__ */ jsxRuntime.jsx("li", { className: "flex items-center gap-1", children: last ? /* @__PURE__ */ jsxRuntime.jsx("span", { "aria-current": "page", children: crumb.label }) : /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
741
424
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
742
|
-
TemplateAnchor,
|
|
425
|
+
chunkXI74P5F2_cjs.TemplateAnchor,
|
|
743
426
|
{
|
|
744
427
|
href: crumb.href,
|
|
745
428
|
trackingId: crumb.trackingId,
|
|
@@ -761,8 +444,16 @@ var HeroSection = React__namespace.forwardRef(
|
|
|
761
444
|
)
|
|
762
445
|
}
|
|
763
446
|
),
|
|
447
|
+
logo && /* @__PURE__ */ jsxRuntime.jsx(
|
|
448
|
+
chunkXI74P5F2_cjs.TemplateImg,
|
|
449
|
+
{
|
|
450
|
+
...logo,
|
|
451
|
+
components,
|
|
452
|
+
className: "mb-6 h-12 w-auto"
|
|
453
|
+
}
|
|
454
|
+
),
|
|
764
455
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
765
|
-
SectionHeading,
|
|
456
|
+
chunkXI74P5F2_cjs.SectionHeading,
|
|
766
457
|
{
|
|
767
458
|
as: headingLevel,
|
|
768
459
|
size: "hero",
|
|
@@ -774,8 +465,23 @@ var HeroSection = React__namespace.forwardRef(
|
|
|
774
465
|
titleId
|
|
775
466
|
}
|
|
776
467
|
),
|
|
468
|
+
meta && meta.length > 0 && /* @__PURE__ */ jsxRuntime.jsx(
|
|
469
|
+
"p",
|
|
470
|
+
{
|
|
471
|
+
"data-slot": "hero-meta",
|
|
472
|
+
className: chunkS5RVSXDV_cjs.cn(
|
|
473
|
+
"mt-6 flex flex-wrap gap-x-2 gap-y-1 text-sm font-medium",
|
|
474
|
+
chunkXI74P5F2_cjs.mutedTextClass(tone),
|
|
475
|
+
!split && "justify-center"
|
|
476
|
+
),
|
|
477
|
+
children: meta.map((item, i) => /* @__PURE__ */ jsxRuntime.jsxs(React5__namespace.Fragment, { children: [
|
|
478
|
+
i > 0 && /* @__PURE__ */ jsxRuntime.jsx("span", { "aria-hidden": "true", children: "\xB7" }),
|
|
479
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { children: item })
|
|
480
|
+
] }, item))
|
|
481
|
+
}
|
|
482
|
+
),
|
|
777
483
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
778
|
-
CtaLinks,
|
|
484
|
+
chunkXI74P5F2_cjs.CtaLinks,
|
|
779
485
|
{
|
|
780
486
|
primary: primaryCta,
|
|
781
487
|
secondary: secondaryCta,
|
|
@@ -785,7 +491,7 @@ var HeroSection = React__namespace.forwardRef(
|
|
|
785
491
|
className: "mt-8"
|
|
786
492
|
}
|
|
787
493
|
),
|
|
788
|
-
ctaNote && /* @__PURE__ */ jsxRuntime.jsx("p", { className: chunkS5RVSXDV_cjs.cn("mt-4 text-sm", mutedTextClass(tone)), children: ctaNote }),
|
|
494
|
+
ctaNote && /* @__PURE__ */ jsxRuntime.jsx("p", { className: chunkS5RVSXDV_cjs.cn("mt-4 text-sm", chunkXI74P5F2_cjs.mutedTextClass(tone)), children: ctaNote }),
|
|
789
495
|
highlights && highlights.length > 0 && /* @__PURE__ */ jsxRuntime.jsx(
|
|
790
496
|
"ul",
|
|
791
497
|
{
|
|
@@ -798,7 +504,7 @@ var HeroSection = React__namespace.forwardRef(
|
|
|
798
504
|
lucideReact.CircleCheck,
|
|
799
505
|
{
|
|
800
506
|
"aria-hidden": "true",
|
|
801
|
-
className: chunkS5RVSXDV_cjs.cn("size-4 shrink-0", accentTextClass(tone))
|
|
507
|
+
className: chunkS5RVSXDV_cjs.cn("size-4 shrink-0", chunkXI74P5F2_cjs.accentTextClass(tone))
|
|
802
508
|
}
|
|
803
509
|
),
|
|
804
510
|
item
|
|
@@ -807,7 +513,7 @@ var HeroSection = React__namespace.forwardRef(
|
|
|
807
513
|
)
|
|
808
514
|
] }),
|
|
809
515
|
image && /* @__PURE__ */ jsxRuntime.jsx(
|
|
810
|
-
TemplateImg,
|
|
516
|
+
chunkXI74P5F2_cjs.TemplateImg,
|
|
811
517
|
{
|
|
812
518
|
...image,
|
|
813
519
|
priority: true,
|
|
@@ -861,7 +567,7 @@ var controlClass = chunkS5RVSXDV_cjs.cn(
|
|
|
861
567
|
chunkZ5S5JEJD_cjs.inputVariants({ size: "md" }),
|
|
862
568
|
"block h-auto py-2.5"
|
|
863
569
|
);
|
|
864
|
-
var LeadFormSection =
|
|
570
|
+
var LeadFormSection = React5__namespace.forwardRef(
|
|
865
571
|
({
|
|
866
572
|
eyebrow,
|
|
867
573
|
title,
|
|
@@ -873,16 +579,17 @@ var LeadFormSection = React__namespace.forwardRef(
|
|
|
873
579
|
submitLabel = "Submit",
|
|
874
580
|
note,
|
|
875
581
|
layout = "split",
|
|
582
|
+
highlights,
|
|
876
583
|
tone = "muted",
|
|
877
584
|
submitTrackingId,
|
|
878
585
|
components,
|
|
879
586
|
className,
|
|
880
587
|
...rest
|
|
881
588
|
}, ref) => {
|
|
882
|
-
const baseId =
|
|
589
|
+
const baseId = React5__namespace.useId();
|
|
883
590
|
const titleId = `${baseId}-title`;
|
|
884
591
|
const split = layout === "split";
|
|
885
|
-
const resolvedAction = typeof action === "string" ? safeHref(action) : action;
|
|
592
|
+
const resolvedAction = typeof action === "string" ? chunkXI74P5F2_cjs.safeHref(action) : action;
|
|
886
593
|
if (resolvedAction == null) return null;
|
|
887
594
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
888
595
|
"section",
|
|
@@ -891,27 +598,52 @@ var LeadFormSection = React__namespace.forwardRef(
|
|
|
891
598
|
"data-slot": "lead-form-section",
|
|
892
599
|
"data-tone": tone,
|
|
893
600
|
"aria-labelledby": titleId,
|
|
894
|
-
className: chunkS5RVSXDV_cjs.cn("py-16 sm:py-24", toneClass(tone), className),
|
|
601
|
+
className: chunkS5RVSXDV_cjs.cn("py-16 sm:py-24", chunkXI74P5F2_cjs.toneClass(tone), className),
|
|
895
602
|
...rest,
|
|
896
603
|
children: /* @__PURE__ */ jsxRuntime.jsxs(
|
|
897
604
|
"div",
|
|
898
605
|
{
|
|
899
606
|
className: chunkS5RVSXDV_cjs.cn(
|
|
900
|
-
containerClass(split ? "wide" : "narrow"),
|
|
607
|
+
chunkXI74P5F2_cjs.containerClass(split ? "wide" : "narrow"),
|
|
901
608
|
split && "grid items-start gap-12 lg:grid-cols-2"
|
|
902
609
|
),
|
|
903
610
|
children: [
|
|
904
|
-
/* @__PURE__ */ jsxRuntime.
|
|
905
|
-
|
|
906
|
-
|
|
907
|
-
|
|
908
|
-
|
|
909
|
-
|
|
910
|
-
|
|
911
|
-
|
|
912
|
-
|
|
913
|
-
|
|
914
|
-
|
|
611
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
|
|
612
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
613
|
+
chunkXI74P5F2_cjs.SectionHeading,
|
|
614
|
+
{
|
|
615
|
+
eyebrow,
|
|
616
|
+
title,
|
|
617
|
+
description,
|
|
618
|
+
align: split ? "start" : "center",
|
|
619
|
+
tone,
|
|
620
|
+
titleId
|
|
621
|
+
}
|
|
622
|
+
),
|
|
623
|
+
highlights && highlights.length > 0 && /* @__PURE__ */ jsxRuntime.jsx(
|
|
624
|
+
"ul",
|
|
625
|
+
{
|
|
626
|
+
className: chunkS5RVSXDV_cjs.cn(
|
|
627
|
+
"mt-6 space-y-2",
|
|
628
|
+
!split && "mx-auto w-fit",
|
|
629
|
+
chunkXI74P5F2_cjs.mutedTextClass(tone)
|
|
630
|
+
),
|
|
631
|
+
children: highlights.map((item) => /* @__PURE__ */ jsxRuntime.jsxs("li", { className: "flex items-start gap-2", children: [
|
|
632
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
633
|
+
lucideReact.CircleCheck,
|
|
634
|
+
{
|
|
635
|
+
"aria-hidden": "true",
|
|
636
|
+
className: chunkS5RVSXDV_cjs.cn(
|
|
637
|
+
"mt-0.5 size-4 shrink-0",
|
|
638
|
+
chunkXI74P5F2_cjs.accentTextClass(tone)
|
|
639
|
+
)
|
|
640
|
+
}
|
|
641
|
+
),
|
|
642
|
+
item
|
|
643
|
+
] }, item))
|
|
644
|
+
}
|
|
645
|
+
)
|
|
646
|
+
] }),
|
|
915
647
|
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
916
648
|
"form",
|
|
917
649
|
{
|
|
@@ -921,7 +653,7 @@ var LeadFormSection = React__namespace.forwardRef(
|
|
|
921
653
|
className: chunkS5RVSXDV_cjs.cn(
|
|
922
654
|
"grid gap-5 rounded-2xl p-6 sm:grid-cols-2 sm:p-8",
|
|
923
655
|
// The form card always uses the theme surface so inputs stay legible on a brand band.
|
|
924
|
-
cardClass("default"),
|
|
656
|
+
chunkXI74P5F2_cjs.cardClass("default"),
|
|
925
657
|
!split && "mt-10"
|
|
926
658
|
),
|
|
927
659
|
children: [
|
|
@@ -991,7 +723,7 @@ var LeadFormSection = React__namespace.forwardRef(
|
|
|
991
723
|
children: submitLabel
|
|
992
724
|
}
|
|
993
725
|
),
|
|
994
|
-
note && /* @__PURE__ */ jsxRuntime.jsx("p", { className: chunkS5RVSXDV_cjs.cn("mt-3 text-xs", mutedTextClass("default")), children: note })
|
|
726
|
+
note && /* @__PURE__ */ jsxRuntime.jsx("p", { className: chunkS5RVSXDV_cjs.cn("mt-3 text-xs", chunkXI74P5F2_cjs.mutedTextClass("default")), children: note })
|
|
995
727
|
] })
|
|
996
728
|
]
|
|
997
729
|
}
|
|
@@ -1029,13 +761,13 @@ function Logo({
|
|
|
1029
761
|
{
|
|
1030
762
|
className: chunkS5RVSXDV_cjs.cn(
|
|
1031
763
|
"text-lg font-semibold whitespace-nowrap",
|
|
1032
|
-
mutedTextClass(tone ?? "default")
|
|
764
|
+
chunkXI74P5F2_cjs.mutedTextClass(tone ?? "default")
|
|
1033
765
|
),
|
|
1034
766
|
children: logo.name
|
|
1035
767
|
}
|
|
1036
768
|
);
|
|
1037
769
|
return logo.href ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
1038
|
-
TemplateAnchor,
|
|
770
|
+
chunkXI74P5F2_cjs.TemplateAnchor,
|
|
1039
771
|
{
|
|
1040
772
|
href: logo.href,
|
|
1041
773
|
trackingId: logo.trackingId,
|
|
@@ -1046,7 +778,7 @@ function Logo({
|
|
|
1046
778
|
}
|
|
1047
779
|
) : mark;
|
|
1048
780
|
}
|
|
1049
|
-
var LogoCloudSection =
|
|
781
|
+
var LogoCloudSection = React5__namespace.forwardRef(
|
|
1050
782
|
({
|
|
1051
783
|
logos,
|
|
1052
784
|
variant = "grid",
|
|
@@ -1056,7 +788,7 @@ var LogoCloudSection = React__namespace.forwardRef(
|
|
|
1056
788
|
components,
|
|
1057
789
|
...rest
|
|
1058
790
|
}, ref) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
1059
|
-
SectionShell,
|
|
791
|
+
chunkXI74P5F2_cjs.SectionShell,
|
|
1060
792
|
{
|
|
1061
793
|
ref,
|
|
1062
794
|
"data-slot": "logo-cloud-section",
|
|
@@ -1095,9 +827,9 @@ var columnClass2 = [
|
|
|
1095
827
|
"lg:grid-cols-3",
|
|
1096
828
|
"lg:grid-cols-4"
|
|
1097
829
|
];
|
|
1098
|
-
var PricingSection =
|
|
830
|
+
var PricingSection = React5__namespace.forwardRef(
|
|
1099
831
|
({ plans, note, tone = "default", align = "center", components, ...rest }, ref) => /* @__PURE__ */ jsxRuntime.jsxs(
|
|
1100
|
-
SectionShell,
|
|
832
|
+
chunkXI74P5F2_cjs.SectionShell,
|
|
1101
833
|
{
|
|
1102
834
|
ref,
|
|
1103
835
|
"data-slot": "pricing-section",
|
|
@@ -1118,25 +850,25 @@ var PricingSection = React__namespace.forwardRef(
|
|
|
1118
850
|
{
|
|
1119
851
|
className: chunkS5RVSXDV_cjs.cn(
|
|
1120
852
|
"relative flex flex-col rounded-2xl p-6 sm:p-8",
|
|
1121
|
-
cardClass(tone),
|
|
853
|
+
chunkXI74P5F2_cjs.cardClass(tone),
|
|
1122
854
|
plan.highlighted && "ring-primary-600 dark:ring-primary-400 ring-2"
|
|
1123
855
|
),
|
|
1124
856
|
children: [
|
|
1125
857
|
plan.highlighted && plan.badge && /* @__PURE__ */ jsxRuntime.jsx(chunkYVL3XATO_cjs.Badge, { className: "bg-primary-800 dark:bg-primary-800 absolute start-6 -top-3 px-3 py-1 text-xs font-semibold text-white dark:text-white", children: plan.badge }),
|
|
1126
|
-
/* @__PURE__ */ jsxRuntime.jsx("h3", { className: chunkS5RVSXDV_cjs.cn("text-lg font-semibold", headingTextClass(tone)), children: plan.name }),
|
|
1127
|
-
plan.description && /* @__PURE__ */ jsxRuntime.jsx("p", { className: chunkS5RVSXDV_cjs.cn("mt-2 text-sm", mutedTextClass(tone)), children: plan.description }),
|
|
858
|
+
/* @__PURE__ */ jsxRuntime.jsx("h3", { className: chunkS5RVSXDV_cjs.cn("text-lg font-semibold", chunkXI74P5F2_cjs.headingTextClass(tone)), children: plan.name }),
|
|
859
|
+
plan.description && /* @__PURE__ */ jsxRuntime.jsx("p", { className: chunkS5RVSXDV_cjs.cn("mt-2 text-sm", chunkXI74P5F2_cjs.mutedTextClass(tone)), children: plan.description }),
|
|
1128
860
|
/* @__PURE__ */ jsxRuntime.jsxs("p", { className: "mt-6 flex flex-wrap items-baseline gap-x-2", children: [
|
|
1129
861
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
1130
862
|
"span",
|
|
1131
863
|
{
|
|
1132
864
|
className: chunkS5RVSXDV_cjs.cn(
|
|
1133
865
|
"text-4xl font-bold tracking-tight",
|
|
1134
|
-
headingTextClass(tone)
|
|
866
|
+
chunkXI74P5F2_cjs.headingTextClass(tone)
|
|
1135
867
|
),
|
|
1136
868
|
children: plan.price
|
|
1137
869
|
}
|
|
1138
870
|
),
|
|
1139
|
-
plan.period && /* @__PURE__ */ jsxRuntime.jsx("span", { className: chunkS5RVSXDV_cjs.cn("text-sm", mutedTextClass(tone)), children: plan.period })
|
|
871
|
+
plan.period && /* @__PURE__ */ jsxRuntime.jsx("span", { className: chunkS5RVSXDV_cjs.cn("text-sm", chunkXI74P5F2_cjs.mutedTextClass(tone)), children: plan.period })
|
|
1140
872
|
] }),
|
|
1141
873
|
/* @__PURE__ */ jsxRuntime.jsx("ul", { className: "mt-6 flex-1 space-y-3 text-sm", children: plan.features.map((feature) => /* @__PURE__ */ jsxRuntime.jsxs("li", { className: "flex gap-3", children: [
|
|
1142
874
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -1145,14 +877,14 @@ var PricingSection = React__namespace.forwardRef(
|
|
|
1145
877
|
"aria-hidden": "true",
|
|
1146
878
|
className: chunkS5RVSXDV_cjs.cn(
|
|
1147
879
|
"mt-0.5 size-4 shrink-0",
|
|
1148
|
-
accentTextClass(tone)
|
|
880
|
+
chunkXI74P5F2_cjs.accentTextClass(tone)
|
|
1149
881
|
)
|
|
1150
882
|
}
|
|
1151
883
|
),
|
|
1152
884
|
feature
|
|
1153
885
|
] }, feature)) }),
|
|
1154
886
|
plan.cta && /* @__PURE__ */ jsxRuntime.jsx(
|
|
1155
|
-
TemplateAnchor,
|
|
887
|
+
chunkXI74P5F2_cjs.TemplateAnchor,
|
|
1156
888
|
{
|
|
1157
889
|
href: plan.cta.href,
|
|
1158
890
|
trackingId: plan.cta.trackingId,
|
|
@@ -1180,7 +912,7 @@ var PricingSection = React__namespace.forwardRef(
|
|
|
1180
912
|
{
|
|
1181
913
|
className: chunkS5RVSXDV_cjs.cn(
|
|
1182
914
|
"mt-8 text-sm",
|
|
1183
|
-
mutedTextClass(tone),
|
|
915
|
+
chunkXI74P5F2_cjs.mutedTextClass(tone),
|
|
1184
916
|
align === "center" && "text-center"
|
|
1185
917
|
),
|
|
1186
918
|
children: note
|
|
@@ -1205,10 +937,10 @@ var connectorInset = [
|
|
|
1205
937
|
"inset-x-[16.667%]",
|
|
1206
938
|
"inset-x-[12.5%]"
|
|
1207
939
|
];
|
|
1208
|
-
var ProcessStepsSection =
|
|
940
|
+
var ProcessStepsSection = React5__namespace.forwardRef(({ steps, icons, tone = "default", align = "center", ...rest }, ref) => {
|
|
1209
941
|
const columns = Math.min(steps.length, 4);
|
|
1210
942
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
1211
|
-
SectionShell,
|
|
943
|
+
chunkXI74P5F2_cjs.SectionShell,
|
|
1212
944
|
{
|
|
1213
945
|
ref,
|
|
1214
946
|
"data-slot": "process-steps-section",
|
|
@@ -1240,7 +972,7 @@ var ProcessStepsSection = React__namespace.forwardRef(({ steps, icons, tone = "d
|
|
|
1240
972
|
"flex size-12 items-center justify-center rounded-full text-lg font-bold",
|
|
1241
973
|
tone === "brand" ? "text-primary-900 bg-white" : "bg-primary-800 text-white"
|
|
1242
974
|
),
|
|
1243
|
-
children: step.icon ? /* @__PURE__ */ jsxRuntime.jsx(TemplateIcon, { name: step.icon, icons }) : i + 1
|
|
975
|
+
children: step.icon ? /* @__PURE__ */ jsxRuntime.jsx(chunkXI74P5F2_cjs.TemplateIcon, { name: step.icon, icons }) : i + 1
|
|
1244
976
|
}
|
|
1245
977
|
),
|
|
1246
978
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -1248,12 +980,12 @@ var ProcessStepsSection = React__namespace.forwardRef(({ steps, icons, tone = "d
|
|
|
1248
980
|
{
|
|
1249
981
|
className: chunkS5RVSXDV_cjs.cn(
|
|
1250
982
|
"mt-5 text-lg font-semibold",
|
|
1251
|
-
headingTextClass(tone)
|
|
983
|
+
chunkXI74P5F2_cjs.headingTextClass(tone)
|
|
1252
984
|
),
|
|
1253
985
|
children: step.title
|
|
1254
986
|
}
|
|
1255
987
|
),
|
|
1256
|
-
/* @__PURE__ */ jsxRuntime.jsx("p", { className: chunkS5RVSXDV_cjs.cn("mt-2 max-w-xs", mutedTextClass(tone)), children: step.description })
|
|
988
|
+
/* @__PURE__ */ jsxRuntime.jsx("p", { className: chunkS5RVSXDV_cjs.cn("mt-2 max-w-xs", chunkXI74P5F2_cjs.mutedTextClass(tone)), children: step.description })
|
|
1257
989
|
]
|
|
1258
990
|
},
|
|
1259
991
|
step.title
|
|
@@ -1268,7 +1000,7 @@ var columnClass4 = {
|
|
|
1268
1000
|
3: "lg:grid-cols-3",
|
|
1269
1001
|
4: "lg:grid-cols-4"
|
|
1270
1002
|
};
|
|
1271
|
-
var ResourceCardsSection =
|
|
1003
|
+
var ResourceCardsSection = React5__namespace.forwardRef(
|
|
1272
1004
|
({
|
|
1273
1005
|
items,
|
|
1274
1006
|
columns = 3,
|
|
@@ -1278,7 +1010,7 @@ var ResourceCardsSection = React__namespace.forwardRef(
|
|
|
1278
1010
|
components,
|
|
1279
1011
|
...rest
|
|
1280
1012
|
}, ref) => /* @__PURE__ */ jsxRuntime.jsxs(
|
|
1281
|
-
SectionShell,
|
|
1013
|
+
chunkXI74P5F2_cjs.SectionShell,
|
|
1282
1014
|
{
|
|
1283
1015
|
ref,
|
|
1284
1016
|
"data-slot": "resource-cards-section",
|
|
@@ -1296,11 +1028,11 @@ var ResourceCardsSection = React__namespace.forwardRef(
|
|
|
1296
1028
|
className: chunkS5RVSXDV_cjs.cn(
|
|
1297
1029
|
"group relative flex flex-col overflow-hidden rounded-2xl",
|
|
1298
1030
|
"focus-within:ring-ring focus-within:ring-2",
|
|
1299
|
-
cardClass(tone)
|
|
1031
|
+
chunkXI74P5F2_cjs.cardClass(tone)
|
|
1300
1032
|
),
|
|
1301
1033
|
children: [
|
|
1302
1034
|
item.image && /* @__PURE__ */ jsxRuntime.jsx(
|
|
1303
|
-
TemplateImg,
|
|
1035
|
+
chunkXI74P5F2_cjs.TemplateImg,
|
|
1304
1036
|
{
|
|
1305
1037
|
...item.image,
|
|
1306
1038
|
components,
|
|
@@ -1313,7 +1045,7 @@ var ResourceCardsSection = React__namespace.forwardRef(
|
|
|
1313
1045
|
{
|
|
1314
1046
|
className: chunkS5RVSXDV_cjs.cn(
|
|
1315
1047
|
"text-xs font-semibold tracking-wider uppercase",
|
|
1316
|
-
accentTextClass(tone)
|
|
1048
|
+
chunkXI74P5F2_cjs.accentTextClass(tone)
|
|
1317
1049
|
),
|
|
1318
1050
|
children: item.kind
|
|
1319
1051
|
}
|
|
@@ -1321,9 +1053,9 @@ var ResourceCardsSection = React__namespace.forwardRef(
|
|
|
1321
1053
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
1322
1054
|
"h3",
|
|
1323
1055
|
{
|
|
1324
|
-
className: chunkS5RVSXDV_cjs.cn("text-lg font-semibold", headingTextClass(tone)),
|
|
1056
|
+
className: chunkS5RVSXDV_cjs.cn("text-lg font-semibold", chunkXI74P5F2_cjs.headingTextClass(tone)),
|
|
1325
1057
|
children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
1326
|
-
TemplateAnchor,
|
|
1058
|
+
chunkXI74P5F2_cjs.TemplateAnchor,
|
|
1327
1059
|
{
|
|
1328
1060
|
href: item.href,
|
|
1329
1061
|
trackingId: item.trackingId,
|
|
@@ -1334,8 +1066,8 @@ var ResourceCardsSection = React__namespace.forwardRef(
|
|
|
1334
1066
|
)
|
|
1335
1067
|
}
|
|
1336
1068
|
),
|
|
1337
|
-
item.excerpt && /* @__PURE__ */ jsxRuntime.jsx("p", { className: chunkS5RVSXDV_cjs.cn("line-clamp-3", mutedTextClass(tone)), children: item.excerpt }),
|
|
1338
|
-
item.meta && /* @__PURE__ */ jsxRuntime.jsx("p", { className: chunkS5RVSXDV_cjs.cn("mt-auto pt-2 text-sm", mutedTextClass(tone)), children: item.meta })
|
|
1069
|
+
item.excerpt && /* @__PURE__ */ jsxRuntime.jsx("p", { className: chunkS5RVSXDV_cjs.cn("line-clamp-3", chunkXI74P5F2_cjs.mutedTextClass(tone)), children: item.excerpt }),
|
|
1070
|
+
item.meta && /* @__PURE__ */ jsxRuntime.jsx("p", { className: chunkS5RVSXDV_cjs.cn("mt-auto pt-2 text-sm", chunkXI74P5F2_cjs.mutedTextClass(tone)), children: item.meta })
|
|
1339
1071
|
] })
|
|
1340
1072
|
]
|
|
1341
1073
|
},
|
|
@@ -1344,14 +1076,14 @@ var ResourceCardsSection = React__namespace.forwardRef(
|
|
|
1344
1076
|
}
|
|
1345
1077
|
),
|
|
1346
1078
|
viewAll && /* @__PURE__ */ jsxRuntime.jsx("p", { className: chunkS5RVSXDV_cjs.cn("mt-10", align === "center" && "text-center"), children: /* @__PURE__ */ jsxRuntime.jsxs(
|
|
1347
|
-
TemplateAnchor,
|
|
1079
|
+
chunkXI74P5F2_cjs.TemplateAnchor,
|
|
1348
1080
|
{
|
|
1349
1081
|
href: viewAll.href,
|
|
1350
1082
|
trackingId: viewAll.trackingId,
|
|
1351
1083
|
components,
|
|
1352
1084
|
className: chunkS5RVSXDV_cjs.cn(
|
|
1353
1085
|
"inline-flex items-center gap-1 font-semibold hover:underline",
|
|
1354
|
-
accentTextClass(tone)
|
|
1086
|
+
chunkXI74P5F2_cjs.accentTextClass(tone)
|
|
1355
1087
|
),
|
|
1356
1088
|
children: [
|
|
1357
1089
|
viewAll.label,
|
|
@@ -1370,7 +1102,7 @@ var ResourceCardsSection = React__namespace.forwardRef(
|
|
|
1370
1102
|
)
|
|
1371
1103
|
);
|
|
1372
1104
|
ResourceCardsSection.displayName = "ResourceCardsSection";
|
|
1373
|
-
var SplitContentSection =
|
|
1105
|
+
var SplitContentSection = React5__namespace.forwardRef(
|
|
1374
1106
|
({
|
|
1375
1107
|
eyebrow,
|
|
1376
1108
|
title,
|
|
@@ -1386,7 +1118,7 @@ var SplitContentSection = React__namespace.forwardRef(
|
|
|
1386
1118
|
className,
|
|
1387
1119
|
...rest
|
|
1388
1120
|
}, ref) => {
|
|
1389
|
-
const titleId =
|
|
1121
|
+
const titleId = React5__namespace.useId();
|
|
1390
1122
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
1391
1123
|
"section",
|
|
1392
1124
|
{
|
|
@@ -1394,19 +1126,19 @@ var SplitContentSection = React__namespace.forwardRef(
|
|
|
1394
1126
|
"data-slot": "split-content-section",
|
|
1395
1127
|
"data-tone": tone,
|
|
1396
1128
|
"aria-labelledby": titleId,
|
|
1397
|
-
className: chunkS5RVSXDV_cjs.cn("py-16 sm:py-24", toneClass(tone), className),
|
|
1129
|
+
className: chunkS5RVSXDV_cjs.cn("py-16 sm:py-24", chunkXI74P5F2_cjs.toneClass(tone), className),
|
|
1398
1130
|
...rest,
|
|
1399
1131
|
children: /* @__PURE__ */ jsxRuntime.jsxs(
|
|
1400
1132
|
"div",
|
|
1401
1133
|
{
|
|
1402
1134
|
className: chunkS5RVSXDV_cjs.cn(
|
|
1403
|
-
containerClass(),
|
|
1135
|
+
chunkXI74P5F2_cjs.containerClass(),
|
|
1404
1136
|
"grid items-center gap-12 lg:grid-cols-2"
|
|
1405
1137
|
),
|
|
1406
1138
|
children: [
|
|
1407
1139
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
|
|
1408
1140
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
1409
|
-
SectionHeading,
|
|
1141
|
+
chunkXI74P5F2_cjs.SectionHeading,
|
|
1410
1142
|
{
|
|
1411
1143
|
eyebrow,
|
|
1412
1144
|
title,
|
|
@@ -1422,14 +1154,14 @@ var SplitContentSection = React__namespace.forwardRef(
|
|
|
1422
1154
|
"aria-hidden": "true",
|
|
1423
1155
|
className: chunkS5RVSXDV_cjs.cn(
|
|
1424
1156
|
"mt-0.5 size-5 shrink-0",
|
|
1425
|
-
accentTextClass(tone)
|
|
1157
|
+
chunkXI74P5F2_cjs.accentTextClass(tone)
|
|
1426
1158
|
)
|
|
1427
1159
|
}
|
|
1428
1160
|
),
|
|
1429
|
-
/* @__PURE__ */ jsxRuntime.jsx("span", { className: mutedTextClass(tone), children: item })
|
|
1161
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: chunkXI74P5F2_cjs.mutedTextClass(tone), children: item })
|
|
1430
1162
|
] }, item)) }),
|
|
1431
1163
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
1432
|
-
CtaLinks,
|
|
1164
|
+
chunkXI74P5F2_cjs.CtaLinks,
|
|
1433
1165
|
{
|
|
1434
1166
|
primary: primaryCta,
|
|
1435
1167
|
secondary: secondaryCta,
|
|
@@ -1441,14 +1173,14 @@ var SplitContentSection = React__namespace.forwardRef(
|
|
|
1441
1173
|
] }),
|
|
1442
1174
|
/* @__PURE__ */ jsxRuntime.jsxs("figure", { className: chunkS5RVSXDV_cjs.cn(mediaPosition === "start" && "lg:order-first"), children: [
|
|
1443
1175
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
1444
|
-
TemplateImg,
|
|
1176
|
+
chunkXI74P5F2_cjs.TemplateImg,
|
|
1445
1177
|
{
|
|
1446
1178
|
...image,
|
|
1447
1179
|
components,
|
|
1448
1180
|
className: "h-auto w-full rounded-2xl object-cover shadow-lg"
|
|
1449
1181
|
}
|
|
1450
1182
|
),
|
|
1451
|
-
caption && /* @__PURE__ */ jsxRuntime.jsx("figcaption", { className: chunkS5RVSXDV_cjs.cn("mt-3 text-sm", mutedTextClass(tone)), children: caption })
|
|
1183
|
+
caption && /* @__PURE__ */ jsxRuntime.jsx("figcaption", { className: chunkS5RVSXDV_cjs.cn("mt-3 text-sm", chunkXI74P5F2_cjs.mutedTextClass(tone)), children: caption })
|
|
1452
1184
|
] })
|
|
1453
1185
|
]
|
|
1454
1186
|
}
|
|
@@ -1465,7 +1197,7 @@ var columnClass5 = [
|
|
|
1465
1197
|
"lg:grid-cols-3",
|
|
1466
1198
|
"lg:grid-cols-4"
|
|
1467
1199
|
];
|
|
1468
|
-
var StatsSection =
|
|
1200
|
+
var StatsSection = React5__namespace.forwardRef(
|
|
1469
1201
|
({
|
|
1470
1202
|
stats,
|
|
1471
1203
|
variant = "plain",
|
|
@@ -1476,7 +1208,7 @@ var StatsSection = React__namespace.forwardRef(
|
|
|
1476
1208
|
}, ref) => {
|
|
1477
1209
|
const format = new Intl.NumberFormat(locale);
|
|
1478
1210
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
1479
|
-
SectionShell,
|
|
1211
|
+
chunkXI74P5F2_cjs.SectionShell,
|
|
1480
1212
|
{
|
|
1481
1213
|
ref,
|
|
1482
1214
|
"data-slot": "stats-section",
|
|
@@ -1492,13 +1224,17 @@ var StatsSection = React__namespace.forwardRef(
|
|
|
1492
1224
|
),
|
|
1493
1225
|
children: stats.map((stat) => {
|
|
1494
1226
|
const Trend = stat.trend === "down" ? lucideReact.TrendingDown : lucideReact.TrendingUp;
|
|
1227
|
+
const ruled = variant === "ruled";
|
|
1228
|
+
const shown = typeof stat.value === "number" ? format.format(stat.value) : stat.value;
|
|
1229
|
+
const long = `${stat.prefix ?? ""}${shown}${stat.suffix ?? ""}`.length > 6;
|
|
1495
1230
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
1496
1231
|
"div",
|
|
1497
1232
|
{
|
|
1498
1233
|
className: chunkS5RVSXDV_cjs.cn(
|
|
1499
1234
|
"flex flex-col-reverse gap-2",
|
|
1500
|
-
align === "center" && "items-center text-center",
|
|
1501
|
-
variant === "cards" && chunkS5RVSXDV_cjs.cn("rounded-2xl p-6", cardClass(tone))
|
|
1235
|
+
align === "center" && !ruled && "items-center text-center",
|
|
1236
|
+
variant === "cards" && chunkS5RVSXDV_cjs.cn("rounded-2xl p-6", chunkXI74P5F2_cjs.cardClass(tone)),
|
|
1237
|
+
ruled && "border-accent/70 border-s-2 ps-5"
|
|
1502
1238
|
),
|
|
1503
1239
|
children: [
|
|
1504
1240
|
/* @__PURE__ */ jsxRuntime.jsxs("dt", { children: [
|
|
@@ -1506,7 +1242,7 @@ var StatsSection = React__namespace.forwardRef(
|
|
|
1506
1242
|
stat.description && /* @__PURE__ */ jsxRuntime.jsx(
|
|
1507
1243
|
"span",
|
|
1508
1244
|
{
|
|
1509
|
-
className: chunkS5RVSXDV_cjs.cn("mt-1 block text-sm", mutedTextClass(tone)),
|
|
1245
|
+
className: chunkS5RVSXDV_cjs.cn("mt-1 block text-sm", chunkXI74P5F2_cjs.mutedTextClass(tone)),
|
|
1510
1246
|
children: stat.description
|
|
1511
1247
|
}
|
|
1512
1248
|
)
|
|
@@ -1515,13 +1251,14 @@ var StatsSection = React__namespace.forwardRef(
|
|
|
1515
1251
|
"dd",
|
|
1516
1252
|
{
|
|
1517
1253
|
className: chunkS5RVSXDV_cjs.cn(
|
|
1518
|
-
"flex items-center gap-2
|
|
1254
|
+
"flex items-center gap-2 font-bold tracking-tight tabular-nums",
|
|
1255
|
+
ruled && long ? "text-2xl sm:text-3xl" : "text-4xl sm:text-5xl",
|
|
1519
1256
|
tone === "brand" ? "text-white" : "text-primary-800 dark:text-primary-300"
|
|
1520
1257
|
),
|
|
1521
1258
|
children: [
|
|
1522
1259
|
stat.trend && /* @__PURE__ */ jsxRuntime.jsx(Trend, { "aria-hidden": "true", className: "size-7 shrink-0" }),
|
|
1523
1260
|
stat.prefix,
|
|
1524
|
-
|
|
1261
|
+
shown,
|
|
1525
1262
|
stat.suffix
|
|
1526
1263
|
]
|
|
1527
1264
|
}
|
|
@@ -1538,7 +1275,7 @@ var StatsSection = React__namespace.forwardRef(
|
|
|
1538
1275
|
}
|
|
1539
1276
|
);
|
|
1540
1277
|
StatsSection.displayName = "StatsSection";
|
|
1541
|
-
var TestimonialSection =
|
|
1278
|
+
var TestimonialSection = React5__namespace.forwardRef(
|
|
1542
1279
|
({
|
|
1543
1280
|
testimonials,
|
|
1544
1281
|
variant = "cards",
|
|
@@ -1551,7 +1288,7 @@ var TestimonialSection = React__namespace.forwardRef(
|
|
|
1551
1288
|
const featured = variant === "featured";
|
|
1552
1289
|
const items = featured ? testimonials.slice(0, 1) : testimonials;
|
|
1553
1290
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
1554
|
-
SectionShell,
|
|
1291
|
+
chunkXI74P5F2_cjs.SectionShell,
|
|
1555
1292
|
{
|
|
1556
1293
|
ref,
|
|
1557
1294
|
"data-slot": "testimonial-section",
|
|
@@ -1571,7 +1308,7 @@ var TestimonialSection = React__namespace.forwardRef(
|
|
|
1571
1308
|
{
|
|
1572
1309
|
className: chunkS5RVSXDV_cjs.cn(
|
|
1573
1310
|
"flex h-full flex-col gap-6",
|
|
1574
|
-
featured ? "items-center text-center" : chunkS5RVSXDV_cjs.cn("rounded-2xl p-6", cardClass(tone))
|
|
1311
|
+
featured ? "items-center text-center" : chunkS5RVSXDV_cjs.cn("rounded-2xl p-6", chunkXI74P5F2_cjs.cardClass(tone))
|
|
1575
1312
|
),
|
|
1576
1313
|
children: [
|
|
1577
1314
|
rating && /* @__PURE__ */ jsxRuntime.jsxs("p", { className: "text-warning flex gap-0.5", children: [
|
|
@@ -1598,7 +1335,7 @@ var TestimonialSection = React__namespace.forwardRef(
|
|
|
1598
1335
|
"text-pretty",
|
|
1599
1336
|
featured ? chunkS5RVSXDV_cjs.cn(
|
|
1600
1337
|
"text-2xl font-medium sm:text-3xl",
|
|
1601
|
-
headingTextClass(tone)
|
|
1338
|
+
chunkXI74P5F2_cjs.headingTextClass(tone)
|
|
1602
1339
|
) : "text-base"
|
|
1603
1340
|
),
|
|
1604
1341
|
children: /* @__PURE__ */ jsxRuntime.jsx("p", { children: t.quote })
|
|
@@ -1606,7 +1343,7 @@ var TestimonialSection = React__namespace.forwardRef(
|
|
|
1606
1343
|
),
|
|
1607
1344
|
/* @__PURE__ */ jsxRuntime.jsxs("figcaption", { className: "mt-auto flex items-center gap-3", children: [
|
|
1608
1345
|
t.avatar && /* @__PURE__ */ jsxRuntime.jsx(
|
|
1609
|
-
TemplateImg,
|
|
1346
|
+
chunkXI74P5F2_cjs.TemplateImg,
|
|
1610
1347
|
{
|
|
1611
1348
|
src: t.avatar,
|
|
1612
1349
|
alt: "",
|
|
@@ -1621,7 +1358,7 @@ var TestimonialSection = React__namespace.forwardRef(
|
|
|
1621
1358
|
(t.role || t.company) && /* @__PURE__ */ jsxRuntime.jsx(
|
|
1622
1359
|
"span",
|
|
1623
1360
|
{
|
|
1624
|
-
className: chunkS5RVSXDV_cjs.cn("block text-sm", mutedTextClass(tone)),
|
|
1361
|
+
className: chunkS5RVSXDV_cjs.cn("block text-sm", chunkXI74P5F2_cjs.mutedTextClass(tone)),
|
|
1625
1362
|
children: [t.role, t.company].filter(Boolean).join(", ")
|
|
1626
1363
|
}
|
|
1627
1364
|
)
|
|
@@ -1637,9 +1374,9 @@ var TestimonialSection = React__namespace.forwardRef(
|
|
|
1637
1374
|
}
|
|
1638
1375
|
);
|
|
1639
1376
|
TestimonialSection.displayName = "TestimonialSection";
|
|
1640
|
-
var VideoSection =
|
|
1377
|
+
var VideoSection = React5__namespace.forwardRef(
|
|
1641
1378
|
({ video, caption, tone = "default", align = "center", ...rest }, ref) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
1642
|
-
SectionShell,
|
|
1379
|
+
chunkXI74P5F2_cjs.SectionShell,
|
|
1643
1380
|
{
|
|
1644
1381
|
ref,
|
|
1645
1382
|
"data-slot": "video-section",
|
|
@@ -1685,7 +1422,7 @@ var VideoSection = React__namespace.forwardRef(
|
|
|
1685
1422
|
{
|
|
1686
1423
|
className: chunkS5RVSXDV_cjs.cn(
|
|
1687
1424
|
"mt-3 text-sm",
|
|
1688
|
-
mutedTextClass(tone),
|
|
1425
|
+
chunkXI74P5F2_cjs.mutedTextClass(tone),
|
|
1689
1426
|
align === "center" && "text-center"
|
|
1690
1427
|
),
|
|
1691
1428
|
children: caption
|
|
@@ -1696,64 +1433,1022 @@ var VideoSection = React__namespace.forwardRef(
|
|
|
1696
1433
|
)
|
|
1697
1434
|
);
|
|
1698
1435
|
VideoSection.displayName = "VideoSection";
|
|
1699
|
-
var
|
|
1700
|
-
|
|
1701
|
-
|
|
1702
|
-
|
|
1703
|
-
|
|
1704
|
-
|
|
1705
|
-
|
|
1706
|
-
|
|
1707
|
-
|
|
1708
|
-
|
|
1709
|
-
|
|
1710
|
-
|
|
1711
|
-
|
|
1712
|
-
|
|
1713
|
-
|
|
1714
|
-
};
|
|
1715
|
-
var landingBlockTypes = [
|
|
1716
|
-
...Object.keys(sections),
|
|
1717
|
-
"custom"
|
|
1718
|
-
];
|
|
1719
|
-
var takesIcons = /* @__PURE__ */ new Set(["features", "process"]);
|
|
1720
|
-
var LandingPage = React__namespace.forwardRef(
|
|
1721
|
-
({ blocks, icons, components, custom, actions, ...rest }, ref) => /* @__PURE__ */ jsxRuntime.jsx("div", { ref, "data-slot": "landing-page", ...rest, children: blocks.map((block, i) => {
|
|
1722
|
-
const key = block.id ?? `${block.type}-${i}`;
|
|
1723
|
-
if (block.type === "custom") {
|
|
1724
|
-
const Custom = ownProperty(custom, block.component);
|
|
1725
|
-
return Custom ? /* @__PURE__ */ jsxRuntime.jsx(Custom, { id: block.id, ...block.props }, key) : null;
|
|
1726
|
-
}
|
|
1727
|
-
const { type, ...props } = block;
|
|
1728
|
-
const Section = ownProperty(
|
|
1729
|
-
sections,
|
|
1730
|
-
type
|
|
1436
|
+
var BenchmarkTableSection = React5__namespace.forwardRef(
|
|
1437
|
+
({
|
|
1438
|
+
columns,
|
|
1439
|
+
rows,
|
|
1440
|
+
rowHeader,
|
|
1441
|
+
caption,
|
|
1442
|
+
footnote,
|
|
1443
|
+
locale,
|
|
1444
|
+
tone = "default",
|
|
1445
|
+
components,
|
|
1446
|
+
title,
|
|
1447
|
+
...rest
|
|
1448
|
+
}, ref) => {
|
|
1449
|
+
const formatters = columns.map(
|
|
1450
|
+
(col) => new Intl.NumberFormat(locale, col.format)
|
|
1731
1451
|
);
|
|
1732
|
-
|
|
1733
|
-
|
|
1734
|
-
|
|
1735
|
-
|
|
1736
|
-
|
|
1737
|
-
|
|
1738
|
-
|
|
1739
|
-
|
|
1452
|
+
const maxima = columns.map(
|
|
1453
|
+
(col) => col.bar ? Math.max(
|
|
1454
|
+
1,
|
|
1455
|
+
...rows.map((r) => {
|
|
1456
|
+
const v = r.values[col.key];
|
|
1457
|
+
return typeof v === "number" ? v : 0;
|
|
1458
|
+
})
|
|
1459
|
+
) : 1
|
|
1460
|
+
);
|
|
1461
|
+
const cellBase = "px-4 py-3 tabular-nums";
|
|
1462
|
+
const stickyBg = tone === "brand" ? "bg-primary-900" : "bg-card";
|
|
1463
|
+
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
1464
|
+
chunkXI74P5F2_cjs.SectionShell,
|
|
1740
1465
|
{
|
|
1741
|
-
|
|
1466
|
+
ref,
|
|
1467
|
+
"data-slot": "benchmark-table-section",
|
|
1468
|
+
tone,
|
|
1469
|
+
title,
|
|
1742
1470
|
components,
|
|
1743
|
-
...
|
|
1744
|
-
|
|
1745
|
-
|
|
1746
|
-
|
|
1471
|
+
...rest,
|
|
1472
|
+
children: [
|
|
1473
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
1474
|
+
"div",
|
|
1475
|
+
{
|
|
1476
|
+
className: chunkS5RVSXDV_cjs.cn("mt-10 overflow-x-auto rounded-2xl", chunkXI74P5F2_cjs.cardClass(tone)),
|
|
1477
|
+
children: /* @__PURE__ */ jsxRuntime.jsxs("table", { className: "divide-border min-w-full divide-y text-sm", children: [
|
|
1478
|
+
(caption ?? title) && /* @__PURE__ */ jsxRuntime.jsx("caption", { className: "sr-only", children: caption ?? title }),
|
|
1479
|
+
/* @__PURE__ */ jsxRuntime.jsx("thead", { children: /* @__PURE__ */ jsxRuntime.jsxs("tr", { children: [
|
|
1480
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
1481
|
+
"th",
|
|
1482
|
+
{
|
|
1483
|
+
scope: "col",
|
|
1484
|
+
className: chunkS5RVSXDV_cjs.cn(
|
|
1485
|
+
"sticky start-0 z-10 px-4 py-3 text-start font-semibold",
|
|
1486
|
+
stickyBg
|
|
1487
|
+
),
|
|
1488
|
+
children: rowHeader
|
|
1489
|
+
}
|
|
1490
|
+
),
|
|
1491
|
+
columns.map((col) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
1492
|
+
"th",
|
|
1493
|
+
{
|
|
1494
|
+
scope: "col",
|
|
1495
|
+
className: chunkS5RVSXDV_cjs.cn(
|
|
1496
|
+
"px-4 py-3 font-semibold whitespace-nowrap",
|
|
1497
|
+
col.bar ? "text-start" : "text-end",
|
|
1498
|
+
col.emphasis && "bg-primary-500/10"
|
|
1499
|
+
),
|
|
1500
|
+
children: col.label
|
|
1501
|
+
},
|
|
1502
|
+
col.key
|
|
1503
|
+
))
|
|
1504
|
+
] }) }),
|
|
1505
|
+
/* @__PURE__ */ jsxRuntime.jsx("tbody", { className: "divide-border divide-y", children: rows.map((row) => /* @__PURE__ */ jsxRuntime.jsxs("tr", { children: [
|
|
1506
|
+
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
1507
|
+
"th",
|
|
1508
|
+
{
|
|
1509
|
+
scope: "row",
|
|
1510
|
+
className: chunkS5RVSXDV_cjs.cn(
|
|
1511
|
+
"sticky start-0 z-10 px-4 py-3 text-start font-medium",
|
|
1512
|
+
stickyBg
|
|
1513
|
+
),
|
|
1514
|
+
children: [
|
|
1515
|
+
row.href ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
1516
|
+
chunkXI74P5F2_cjs.TemplateAnchor,
|
|
1517
|
+
{
|
|
1518
|
+
href: row.href,
|
|
1519
|
+
components,
|
|
1520
|
+
className: chunkS5RVSXDV_cjs.cn(
|
|
1521
|
+
"underline-offset-2 hover:underline",
|
|
1522
|
+
chunkXI74P5F2_cjs.accentTextClass(tone)
|
|
1523
|
+
),
|
|
1524
|
+
children: row.label
|
|
1525
|
+
}
|
|
1526
|
+
) : row.label,
|
|
1527
|
+
row.sublabel && /* @__PURE__ */ jsxRuntime.jsx(
|
|
1528
|
+
"span",
|
|
1529
|
+
{
|
|
1530
|
+
className: chunkS5RVSXDV_cjs.cn(
|
|
1531
|
+
"block text-xs font-normal",
|
|
1532
|
+
chunkXI74P5F2_cjs.mutedTextClass(tone)
|
|
1533
|
+
),
|
|
1534
|
+
children: row.sublabel
|
|
1535
|
+
}
|
|
1536
|
+
)
|
|
1537
|
+
]
|
|
1538
|
+
}
|
|
1539
|
+
),
|
|
1540
|
+
columns.map((col, c) => {
|
|
1541
|
+
const v = row.values[col.key];
|
|
1542
|
+
const shown = v == null ? "\u2014" : typeof v === "number" ? formatters[c].format(v) : v;
|
|
1543
|
+
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
1544
|
+
"td",
|
|
1545
|
+
{
|
|
1546
|
+
className: chunkS5RVSXDV_cjs.cn(
|
|
1547
|
+
cellBase,
|
|
1548
|
+
col.bar ? "text-start" : "text-end whitespace-nowrap",
|
|
1549
|
+
col.emphasis && chunkS5RVSXDV_cjs.cn(
|
|
1550
|
+
"bg-primary-500/10 font-semibold",
|
|
1551
|
+
chunkXI74P5F2_cjs.accentTextClass(tone)
|
|
1552
|
+
)
|
|
1553
|
+
),
|
|
1554
|
+
children: col.bar && typeof v === "number" ? /* @__PURE__ */ jsxRuntime.jsxs("span", { className: "flex items-center gap-3", children: [
|
|
1555
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
1556
|
+
"span",
|
|
1557
|
+
{
|
|
1558
|
+
"aria-hidden": "true",
|
|
1559
|
+
className: "bg-muted h-2 w-32 max-w-full flex-none overflow-hidden rounded-full",
|
|
1560
|
+
children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
1561
|
+
"span",
|
|
1562
|
+
{
|
|
1563
|
+
className: "bg-primary-600 block h-full rounded-full",
|
|
1564
|
+
style: {
|
|
1565
|
+
width: `${Math.round(v / maxima[c] * 100)}%`
|
|
1566
|
+
}
|
|
1567
|
+
}
|
|
1568
|
+
)
|
|
1569
|
+
}
|
|
1570
|
+
),
|
|
1571
|
+
shown
|
|
1572
|
+
] }) : shown
|
|
1573
|
+
},
|
|
1574
|
+
col.key
|
|
1575
|
+
);
|
|
1576
|
+
})
|
|
1577
|
+
] }, row.label)) })
|
|
1578
|
+
] })
|
|
1579
|
+
}
|
|
1580
|
+
),
|
|
1581
|
+
footnote && /* @__PURE__ */ jsxRuntime.jsx("p", { className: chunkS5RVSXDV_cjs.cn("mt-4 max-w-3xl text-sm", chunkXI74P5F2_cjs.mutedTextClass(tone)), children: footnote })
|
|
1582
|
+
]
|
|
1583
|
+
}
|
|
1747
1584
|
);
|
|
1748
|
-
}
|
|
1585
|
+
}
|
|
1749
1586
|
);
|
|
1750
|
-
|
|
1751
|
-
|
|
1752
|
-
|
|
1753
|
-
|
|
1754
|
-
|
|
1755
|
-
|
|
1756
|
-
|
|
1587
|
+
BenchmarkTableSection.displayName = "BenchmarkTableSection";
|
|
1588
|
+
var LinkGroupsSection = React5__namespace.forwardRef(({ groups, columns = 3, tone = "muted", components, ...rest }, ref) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
1589
|
+
chunkXI74P5F2_cjs.SectionShell,
|
|
1590
|
+
{
|
|
1591
|
+
ref,
|
|
1592
|
+
"data-slot": "link-groups-section",
|
|
1593
|
+
tone,
|
|
1594
|
+
components,
|
|
1595
|
+
...rest,
|
|
1596
|
+
children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
1597
|
+
"div",
|
|
1598
|
+
{
|
|
1599
|
+
className: chunkS5RVSXDV_cjs.cn(
|
|
1600
|
+
"mt-10 grid gap-6",
|
|
1601
|
+
columns === 3 ? "lg:grid-cols-3" : "md:grid-cols-2"
|
|
1602
|
+
),
|
|
1603
|
+
children: groups.map((group) => /* @__PURE__ */ jsxRuntime.jsxs(
|
|
1604
|
+
"div",
|
|
1605
|
+
{
|
|
1606
|
+
className: chunkS5RVSXDV_cjs.cn("rounded-2xl p-6", chunkXI74P5F2_cjs.cardClass(tone)),
|
|
1607
|
+
children: [
|
|
1608
|
+
/* @__PURE__ */ jsxRuntime.jsx("h3", { className: chunkS5RVSXDV_cjs.cn("text-lg font-semibold", chunkXI74P5F2_cjs.headingTextClass(tone)), children: group.title }),
|
|
1609
|
+
group.description && /* @__PURE__ */ jsxRuntime.jsx("p", { className: chunkS5RVSXDV_cjs.cn("mt-1 text-sm", chunkXI74P5F2_cjs.mutedTextClass(tone)), children: group.description }),
|
|
1610
|
+
/* @__PURE__ */ jsxRuntime.jsx("ul", { className: "mt-4 space-y-1", children: group.links.map((link) => /* @__PURE__ */ jsxRuntime.jsx("li", { children: /* @__PURE__ */ jsxRuntime.jsxs(
|
|
1611
|
+
chunkXI74P5F2_cjs.TemplateAnchor,
|
|
1612
|
+
{
|
|
1613
|
+
href: link.href,
|
|
1614
|
+
trackingId: link.trackingId,
|
|
1615
|
+
components,
|
|
1616
|
+
className: chunkS5RVSXDV_cjs.cn(
|
|
1617
|
+
"group flex items-center justify-between gap-2 rounded-lg px-3 py-2 text-sm font-medium transition-colors",
|
|
1618
|
+
tone === "brand" ? "hover:bg-white/10" : "hover:bg-primary-500/10 hover:text-primary-800 dark:hover:text-primary-300"
|
|
1619
|
+
),
|
|
1620
|
+
children: [
|
|
1621
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { children: link.label }),
|
|
1622
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
1623
|
+
lucideReact.ArrowRight,
|
|
1624
|
+
{
|
|
1625
|
+
"aria-hidden": "true",
|
|
1626
|
+
className: "size-4 flex-none opacity-50 group-hover:opacity-100 rtl:-scale-x-100"
|
|
1627
|
+
}
|
|
1628
|
+
)
|
|
1629
|
+
]
|
|
1630
|
+
}
|
|
1631
|
+
) }, link.href)) })
|
|
1632
|
+
]
|
|
1633
|
+
},
|
|
1634
|
+
group.title
|
|
1635
|
+
))
|
|
1636
|
+
}
|
|
1637
|
+
)
|
|
1638
|
+
}
|
|
1639
|
+
));
|
|
1640
|
+
LinkGroupsSection.displayName = "LinkGroupsSection";
|
|
1641
|
+
var MetricListSection = React5__namespace.forwardRef(
|
|
1642
|
+
({
|
|
1643
|
+
metrics,
|
|
1644
|
+
takeaway,
|
|
1645
|
+
positive,
|
|
1646
|
+
labels,
|
|
1647
|
+
tone = "default",
|
|
1648
|
+
components,
|
|
1649
|
+
...rest
|
|
1650
|
+
}, ref) => {
|
|
1651
|
+
const measured = metrics.some((m) => m.value);
|
|
1652
|
+
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
1653
|
+
chunkXI74P5F2_cjs.SectionShell,
|
|
1654
|
+
{
|
|
1655
|
+
ref,
|
|
1656
|
+
"data-slot": "metric-list-section",
|
|
1657
|
+
"data-measured": measured || void 0,
|
|
1658
|
+
tone,
|
|
1659
|
+
spacing: "compact",
|
|
1660
|
+
status: measured ? "live" : "maturing",
|
|
1661
|
+
components,
|
|
1662
|
+
...rest,
|
|
1663
|
+
children: [
|
|
1664
|
+
!measured && /* @__PURE__ */ jsxRuntime.jsx("p", { className: chunkS5RVSXDV_cjs.cn("mt-3 text-xs font-medium", chunkXI74P5F2_cjs.mutedTextClass(tone)), children: labels?.preview ?? "Roadmap preview" }),
|
|
1665
|
+
takeaway && /* @__PURE__ */ jsxRuntime.jsx(
|
|
1666
|
+
"p",
|
|
1667
|
+
{
|
|
1668
|
+
className: chunkS5RVSXDV_cjs.cn(
|
|
1669
|
+
"mt-6 max-w-3xl rounded-xl border p-4 text-sm leading-relaxed font-medium",
|
|
1670
|
+
tone === "brand" ? "border-white/20 bg-white/5" : "border-success/30 bg-success/10 text-foreground"
|
|
1671
|
+
),
|
|
1672
|
+
children: takeaway
|
|
1673
|
+
}
|
|
1674
|
+
),
|
|
1675
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
1676
|
+
"ul",
|
|
1677
|
+
{
|
|
1678
|
+
className: chunkS5RVSXDV_cjs.cn(
|
|
1679
|
+
"mt-8 grid gap-4 sm:grid-cols-2 lg:grid-cols-3",
|
|
1680
|
+
!measured && "border-border rounded-3xl border border-dashed p-4"
|
|
1681
|
+
),
|
|
1682
|
+
children: metrics.map((metric) => /* @__PURE__ */ jsxRuntime.jsxs(
|
|
1683
|
+
"li",
|
|
1684
|
+
{
|
|
1685
|
+
className: chunkS5RVSXDV_cjs.cn(
|
|
1686
|
+
"rounded-xl p-5",
|
|
1687
|
+
chunkXI74P5F2_cjs.cardClass(tone),
|
|
1688
|
+
positive && metric.value && "border-s-success border-s-4"
|
|
1689
|
+
),
|
|
1690
|
+
children: [
|
|
1691
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-start justify-between gap-3", children: [
|
|
1692
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
1693
|
+
"h3",
|
|
1694
|
+
{
|
|
1695
|
+
className: chunkS5RVSXDV_cjs.cn(
|
|
1696
|
+
"min-w-0 text-sm font-semibold",
|
|
1697
|
+
chunkXI74P5F2_cjs.headingTextClass(tone)
|
|
1698
|
+
),
|
|
1699
|
+
children: metric.label
|
|
1700
|
+
}
|
|
1701
|
+
),
|
|
1702
|
+
metric.unit && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "bg-primary-500/10 flex-none rounded-full px-2 py-0.5 text-xs font-medium", children: metric.unit })
|
|
1703
|
+
] }),
|
|
1704
|
+
metric.value && /* @__PURE__ */ jsxRuntime.jsx(
|
|
1705
|
+
"p",
|
|
1706
|
+
{
|
|
1707
|
+
className: chunkS5RVSXDV_cjs.cn(
|
|
1708
|
+
"mt-3 text-3xl font-bold tracking-tight tabular-nums",
|
|
1709
|
+
chunkXI74P5F2_cjs.headingTextClass(tone)
|
|
1710
|
+
),
|
|
1711
|
+
children: metric.value
|
|
1712
|
+
}
|
|
1713
|
+
),
|
|
1714
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
1715
|
+
"p",
|
|
1716
|
+
{
|
|
1717
|
+
className: chunkS5RVSXDV_cjs.cn(
|
|
1718
|
+
"mt-2 text-sm leading-relaxed",
|
|
1719
|
+
chunkXI74P5F2_cjs.mutedTextClass(tone)
|
|
1720
|
+
),
|
|
1721
|
+
children: metric.description
|
|
1722
|
+
}
|
|
1723
|
+
)
|
|
1724
|
+
]
|
|
1725
|
+
},
|
|
1726
|
+
metric.label
|
|
1727
|
+
))
|
|
1728
|
+
}
|
|
1729
|
+
)
|
|
1730
|
+
]
|
|
1731
|
+
}
|
|
1732
|
+
);
|
|
1733
|
+
}
|
|
1734
|
+
);
|
|
1735
|
+
MetricListSection.displayName = "MetricListSection";
|
|
1736
|
+
var PdfEmbedSection = React5__namespace.forwardRef(
|
|
1737
|
+
({
|
|
1738
|
+
title,
|
|
1739
|
+
src,
|
|
1740
|
+
downloadAs,
|
|
1741
|
+
aspectRatio = 0.5625,
|
|
1742
|
+
notice,
|
|
1743
|
+
labels,
|
|
1744
|
+
tone = "muted",
|
|
1745
|
+
align = "center",
|
|
1746
|
+
components,
|
|
1747
|
+
...rest
|
|
1748
|
+
}, ref) => {
|
|
1749
|
+
const pdfSrc = chunkXI74P5F2_cjs.safeHref(src);
|
|
1750
|
+
const viewerSrc = pdfSrc && (pdfSrc.includes("#") ? pdfSrc : `${pdfSrc}#view=FitH`);
|
|
1751
|
+
const onBrand = tone === "brand";
|
|
1752
|
+
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
1753
|
+
chunkXI74P5F2_cjs.SectionShell,
|
|
1754
|
+
{
|
|
1755
|
+
ref,
|
|
1756
|
+
"data-slot": "pdf-embed-section",
|
|
1757
|
+
title,
|
|
1758
|
+
tone,
|
|
1759
|
+
align,
|
|
1760
|
+
components,
|
|
1761
|
+
...rest,
|
|
1762
|
+
children: [
|
|
1763
|
+
notice && /* @__PURE__ */ jsxRuntime.jsxs("p", { className: "border-primary-500/30 bg-primary-500/10 mx-auto mt-8 flex max-w-3xl items-start gap-3 rounded-xl border px-4 py-3 text-start text-sm", children: [
|
|
1764
|
+
/* @__PURE__ */ jsxRuntime.jsx(lucideReact.Info, { "aria-hidden": "true", className: "mt-0.5 size-5 flex-none" }),
|
|
1765
|
+
notice
|
|
1766
|
+
] }),
|
|
1767
|
+
pdfSrc && /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
1768
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
1769
|
+
"div",
|
|
1770
|
+
{
|
|
1771
|
+
className: "border-border bg-card relative mt-10 overflow-hidden rounded-2xl border shadow-lg",
|
|
1772
|
+
style: { paddingTop: `${(aspectRatio * 100).toFixed(4)}%` },
|
|
1773
|
+
children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
1774
|
+
"object",
|
|
1775
|
+
{
|
|
1776
|
+
data: viewerSrc,
|
|
1777
|
+
type: "application/pdf",
|
|
1778
|
+
"aria-label": title,
|
|
1779
|
+
className: "absolute inset-0 size-full",
|
|
1780
|
+
children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
1781
|
+
"p",
|
|
1782
|
+
{
|
|
1783
|
+
className: chunkS5RVSXDV_cjs.cn(
|
|
1784
|
+
"flex size-full items-center justify-center p-6 text-center text-sm",
|
|
1785
|
+
chunkXI74P5F2_cjs.mutedTextClass("default")
|
|
1786
|
+
),
|
|
1787
|
+
children: /* @__PURE__ */ jsxRuntime.jsx("a", { href: pdfSrc, className: "underline underline-offset-2", children: labels?.fallback ?? "Open the PDF" })
|
|
1788
|
+
}
|
|
1789
|
+
)
|
|
1790
|
+
}
|
|
1791
|
+
)
|
|
1792
|
+
}
|
|
1793
|
+
),
|
|
1794
|
+
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
1795
|
+
"div",
|
|
1796
|
+
{
|
|
1797
|
+
className: chunkS5RVSXDV_cjs.cn(
|
|
1798
|
+
"mt-6 flex flex-wrap gap-3",
|
|
1799
|
+
align === "center" && "justify-center"
|
|
1800
|
+
),
|
|
1801
|
+
children: [
|
|
1802
|
+
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
1803
|
+
"a",
|
|
1804
|
+
{
|
|
1805
|
+
href: pdfSrc,
|
|
1806
|
+
download: downloadAs ?? true,
|
|
1807
|
+
className: chunkS5RVSXDV_cjs.cn(
|
|
1808
|
+
chunkDXEPYK3I_cjs.buttonVariants({ variant: "primary" }),
|
|
1809
|
+
onBrand && "text-primary-900 hover:bg-primary-50 bg-white"
|
|
1810
|
+
),
|
|
1811
|
+
children: [
|
|
1812
|
+
/* @__PURE__ */ jsxRuntime.jsx(lucideReact.Download, { "aria-hidden": "true", className: "size-4" }),
|
|
1813
|
+
labels?.download ?? "Download PDF"
|
|
1814
|
+
]
|
|
1815
|
+
}
|
|
1816
|
+
),
|
|
1817
|
+
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
1818
|
+
"a",
|
|
1819
|
+
{
|
|
1820
|
+
href: pdfSrc,
|
|
1821
|
+
target: "_blank",
|
|
1822
|
+
rel: "noopener noreferrer",
|
|
1823
|
+
className: chunkS5RVSXDV_cjs.cn(
|
|
1824
|
+
chunkDXEPYK3I_cjs.buttonVariants({ variant: "outline" }),
|
|
1825
|
+
onBrand && "border-white/70 text-white hover:bg-white/10"
|
|
1826
|
+
),
|
|
1827
|
+
children: [
|
|
1828
|
+
/* @__PURE__ */ jsxRuntime.jsx(lucideReact.ExternalLink, { "aria-hidden": "true", className: "size-4" }),
|
|
1829
|
+
labels?.open ?? "Open in new tab"
|
|
1830
|
+
]
|
|
1831
|
+
}
|
|
1832
|
+
)
|
|
1833
|
+
]
|
|
1834
|
+
}
|
|
1835
|
+
)
|
|
1836
|
+
] })
|
|
1837
|
+
]
|
|
1838
|
+
}
|
|
1839
|
+
);
|
|
1840
|
+
}
|
|
1841
|
+
);
|
|
1842
|
+
PdfEmbedSection.displayName = "PdfEmbedSection";
|
|
1843
|
+
var barClass = {
|
|
1844
|
+
primary: "bg-primary-600",
|
|
1845
|
+
accent: "bg-accent",
|
|
1846
|
+
success: "bg-success"
|
|
1847
|
+
};
|
|
1848
|
+
var RankedListSection = React5__namespace.forwardRef(
|
|
1849
|
+
({
|
|
1850
|
+
lists,
|
|
1851
|
+
numbered,
|
|
1852
|
+
layout = "stacked",
|
|
1853
|
+
bar = "primary",
|
|
1854
|
+
locale,
|
|
1855
|
+
tone = "default",
|
|
1856
|
+
components,
|
|
1857
|
+
...rest
|
|
1858
|
+
}, ref) => {
|
|
1859
|
+
const format = new Intl.NumberFormat(locale);
|
|
1860
|
+
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
1861
|
+
chunkXI74P5F2_cjs.SectionShell,
|
|
1862
|
+
{
|
|
1863
|
+
ref,
|
|
1864
|
+
"data-slot": "ranked-list-section",
|
|
1865
|
+
tone,
|
|
1866
|
+
components,
|
|
1867
|
+
...rest,
|
|
1868
|
+
children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
1869
|
+
"div",
|
|
1870
|
+
{
|
|
1871
|
+
className: chunkS5RVSXDV_cjs.cn(
|
|
1872
|
+
"mt-10 grid gap-6",
|
|
1873
|
+
lists.length > 1 && "lg:grid-cols-2"
|
|
1874
|
+
),
|
|
1875
|
+
children: lists.map((list, l) => {
|
|
1876
|
+
const max = Math.max(1, ...list.items.map((i) => i.value));
|
|
1877
|
+
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
1878
|
+
"div",
|
|
1879
|
+
{
|
|
1880
|
+
className: chunkS5RVSXDV_cjs.cn(
|
|
1881
|
+
layout === "inline" && chunkS5RVSXDV_cjs.cn("rounded-2xl p-6", chunkXI74P5F2_cjs.cardClass(tone))
|
|
1882
|
+
),
|
|
1883
|
+
children: [
|
|
1884
|
+
list.title && /* @__PURE__ */ jsxRuntime.jsx(
|
|
1885
|
+
"h3",
|
|
1886
|
+
{
|
|
1887
|
+
className: chunkS5RVSXDV_cjs.cn(
|
|
1888
|
+
"mb-4 text-lg font-semibold",
|
|
1889
|
+
chunkXI74P5F2_cjs.headingTextClass(tone)
|
|
1890
|
+
),
|
|
1891
|
+
children: list.title
|
|
1892
|
+
}
|
|
1893
|
+
),
|
|
1894
|
+
/* @__PURE__ */ jsxRuntime.jsx("ol", { className: "space-y-3", children: list.items.map((item, i) => {
|
|
1895
|
+
const label = item.href ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
1896
|
+
chunkXI74P5F2_cjs.TemplateAnchor,
|
|
1897
|
+
{
|
|
1898
|
+
href: item.href,
|
|
1899
|
+
components,
|
|
1900
|
+
className: chunkS5RVSXDV_cjs.cn(
|
|
1901
|
+
"font-medium underline-offset-2 hover:underline",
|
|
1902
|
+
chunkXI74P5F2_cjs.accentTextClass(tone)
|
|
1903
|
+
),
|
|
1904
|
+
children: item.label
|
|
1905
|
+
}
|
|
1906
|
+
) : /* @__PURE__ */ jsxRuntime.jsx(
|
|
1907
|
+
"span",
|
|
1908
|
+
{
|
|
1909
|
+
className: chunkS5RVSXDV_cjs.cn("font-medium", chunkXI74P5F2_cjs.headingTextClass(tone)),
|
|
1910
|
+
children: item.label
|
|
1911
|
+
}
|
|
1912
|
+
);
|
|
1913
|
+
const track = /* @__PURE__ */ jsxRuntime.jsx(
|
|
1914
|
+
"span",
|
|
1915
|
+
{
|
|
1916
|
+
"aria-hidden": "true",
|
|
1917
|
+
className: chunkS5RVSXDV_cjs.cn(
|
|
1918
|
+
"block h-2 overflow-hidden rounded-full",
|
|
1919
|
+
tone === "brand" ? "bg-white/10" : "bg-muted"
|
|
1920
|
+
),
|
|
1921
|
+
children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
1922
|
+
"span",
|
|
1923
|
+
{
|
|
1924
|
+
className: chunkS5RVSXDV_cjs.cn(
|
|
1925
|
+
"block h-full rounded-full",
|
|
1926
|
+
barClass[bar]
|
|
1927
|
+
),
|
|
1928
|
+
style: {
|
|
1929
|
+
width: `${Math.round(item.value / max * 100)}%`
|
|
1930
|
+
}
|
|
1931
|
+
}
|
|
1932
|
+
)
|
|
1933
|
+
}
|
|
1934
|
+
);
|
|
1935
|
+
const rank = numbered && /* @__PURE__ */ jsxRuntime.jsx(
|
|
1936
|
+
"span",
|
|
1937
|
+
{
|
|
1938
|
+
className: chunkS5RVSXDV_cjs.cn(
|
|
1939
|
+
"text-sm font-semibold tabular-nums",
|
|
1940
|
+
chunkXI74P5F2_cjs.mutedTextClass(tone)
|
|
1941
|
+
),
|
|
1942
|
+
children: String(i + 1).padStart(2, "0")
|
|
1943
|
+
}
|
|
1944
|
+
);
|
|
1945
|
+
const value = item.display ?? format.format(item.value);
|
|
1946
|
+
return layout === "inline" ? /* @__PURE__ */ jsxRuntime.jsxs(
|
|
1947
|
+
"li",
|
|
1948
|
+
{
|
|
1949
|
+
className: "flex items-center gap-3 text-sm",
|
|
1950
|
+
children: [
|
|
1951
|
+
rank,
|
|
1952
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "w-28 flex-none truncate sm:w-36", children: label }),
|
|
1953
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "flex-1", children: track }),
|
|
1954
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "w-20 flex-none text-end font-semibold tabular-nums", children: value })
|
|
1955
|
+
]
|
|
1956
|
+
},
|
|
1957
|
+
item.label
|
|
1958
|
+
) : /* @__PURE__ */ jsxRuntime.jsxs(
|
|
1959
|
+
"li",
|
|
1960
|
+
{
|
|
1961
|
+
className: chunkS5RVSXDV_cjs.cn("rounded-xl p-4", chunkXI74P5F2_cjs.cardClass(tone)),
|
|
1962
|
+
children: [
|
|
1963
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center justify-between gap-4", children: [
|
|
1964
|
+
/* @__PURE__ */ jsxRuntime.jsxs("span", { className: "flex items-center gap-3", children: [
|
|
1965
|
+
rank,
|
|
1966
|
+
label
|
|
1967
|
+
] }),
|
|
1968
|
+
/* @__PURE__ */ jsxRuntime.jsxs("span", { className: chunkS5RVSXDV_cjs.cn("text-xs", chunkXI74P5F2_cjs.mutedTextClass(tone)), children: [
|
|
1969
|
+
item.note ?? value,
|
|
1970
|
+
item.note && /* @__PURE__ */ jsxRuntime.jsxs("span", { className: "sr-only", children: [
|
|
1971
|
+
": ",
|
|
1972
|
+
value
|
|
1973
|
+
] })
|
|
1974
|
+
] })
|
|
1975
|
+
] }),
|
|
1976
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "mt-2 block", children: track })
|
|
1977
|
+
]
|
|
1978
|
+
},
|
|
1979
|
+
item.label
|
|
1980
|
+
);
|
|
1981
|
+
}) })
|
|
1982
|
+
]
|
|
1983
|
+
},
|
|
1984
|
+
list.title ?? l
|
|
1985
|
+
);
|
|
1986
|
+
})
|
|
1987
|
+
}
|
|
1988
|
+
)
|
|
1989
|
+
}
|
|
1990
|
+
);
|
|
1991
|
+
}
|
|
1992
|
+
);
|
|
1993
|
+
RankedListSection.displayName = "RankedListSection";
|
|
1994
|
+
var ReportByline = React5__namespace.forwardRef(
|
|
1995
|
+
({
|
|
1996
|
+
authors,
|
|
1997
|
+
published,
|
|
1998
|
+
updated,
|
|
1999
|
+
labels,
|
|
2000
|
+
tone = "default",
|
|
2001
|
+
components,
|
|
2002
|
+
className,
|
|
2003
|
+
...rest
|
|
2004
|
+
}, ref) => {
|
|
2005
|
+
const headingId = React5__namespace.useId();
|
|
2006
|
+
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
2007
|
+
"section",
|
|
2008
|
+
{
|
|
2009
|
+
ref,
|
|
2010
|
+
"data-slot": "report-byline",
|
|
2011
|
+
"data-tone": tone,
|
|
2012
|
+
"aria-labelledby": headingId,
|
|
2013
|
+
className: chunkS5RVSXDV_cjs.cn(
|
|
2014
|
+
"border-border border-t py-8",
|
|
2015
|
+
chunkXI74P5F2_cjs.toneClass(tone),
|
|
2016
|
+
className
|
|
2017
|
+
),
|
|
2018
|
+
...rest,
|
|
2019
|
+
children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: chunkXI74P5F2_cjs.containerClass(), children: [
|
|
2020
|
+
/* @__PURE__ */ jsxRuntime.jsx("h2", { id: headingId, className: "sr-only", children: labels?.heading ?? "About the author" }),
|
|
2021
|
+
/* @__PURE__ */ jsxRuntime.jsx("ul", { className: "flex flex-col gap-6", children: authors.map((author) => /* @__PURE__ */ jsxRuntime.jsxs(
|
|
2022
|
+
"li",
|
|
2023
|
+
{
|
|
2024
|
+
className: "flex flex-wrap items-center gap-4",
|
|
2025
|
+
children: [
|
|
2026
|
+
author.avatar && /* @__PURE__ */ jsxRuntime.jsx(
|
|
2027
|
+
chunkXI74P5F2_cjs.TemplateImg,
|
|
2028
|
+
{
|
|
2029
|
+
...author.avatar,
|
|
2030
|
+
width: author.avatar.width ?? 48,
|
|
2031
|
+
height: author.avatar.height ?? 48,
|
|
2032
|
+
components,
|
|
2033
|
+
className: "ring-border size-12 flex-none rounded-full object-cover ring-1"
|
|
2034
|
+
}
|
|
2035
|
+
),
|
|
2036
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "min-w-0", children: [
|
|
2037
|
+
/* @__PURE__ */ jsxRuntime.jsxs("p", { className: chunkS5RVSXDV_cjs.cn("text-sm", chunkXI74P5F2_cjs.mutedTextClass(tone)), children: [
|
|
2038
|
+
labels?.by ?? "By",
|
|
2039
|
+
" ",
|
|
2040
|
+
author.href ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
2041
|
+
chunkXI74P5F2_cjs.TemplateAnchor,
|
|
2042
|
+
{
|
|
2043
|
+
href: author.href,
|
|
2044
|
+
components,
|
|
2045
|
+
className: chunkS5RVSXDV_cjs.cn(
|
|
2046
|
+
"font-semibold underline-offset-2 hover:underline",
|
|
2047
|
+
chunkXI74P5F2_cjs.headingTextClass(tone)
|
|
2048
|
+
),
|
|
2049
|
+
children: author.name
|
|
2050
|
+
}
|
|
2051
|
+
) : /* @__PURE__ */ jsxRuntime.jsx(
|
|
2052
|
+
"span",
|
|
2053
|
+
{
|
|
2054
|
+
className: chunkS5RVSXDV_cjs.cn("font-semibold", chunkXI74P5F2_cjs.headingTextClass(tone)),
|
|
2055
|
+
children: author.name
|
|
2056
|
+
}
|
|
2057
|
+
),
|
|
2058
|
+
author.role && /* @__PURE__ */ jsxRuntime.jsxs("span", { children: [
|
|
2059
|
+
" \xB7 ",
|
|
2060
|
+
author.role
|
|
2061
|
+
] })
|
|
2062
|
+
] }),
|
|
2063
|
+
(published || updated) && /* @__PURE__ */ jsxRuntime.jsxs("p", { className: chunkS5RVSXDV_cjs.cn("text-sm", chunkXI74P5F2_cjs.mutedTextClass(tone)), children: [
|
|
2064
|
+
published && `${labels?.published ?? "Published"} ${published}`,
|
|
2065
|
+
published && updated && " \xB7 ",
|
|
2066
|
+
updated && `${labels?.updated ?? "Updated"} ${updated}`
|
|
2067
|
+
] })
|
|
2068
|
+
] }),
|
|
2069
|
+
author.profiles && author.profiles.length > 0 && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "ms-auto flex flex-wrap gap-2", children: author.profiles.map((profile) => {
|
|
2070
|
+
const href = chunkXI74P5F2_cjs.safeHref(profile.href);
|
|
2071
|
+
if (!href) return null;
|
|
2072
|
+
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
2073
|
+
"a",
|
|
2074
|
+
{
|
|
2075
|
+
href,
|
|
2076
|
+
target: "_blank",
|
|
2077
|
+
rel: "noopener noreferrer",
|
|
2078
|
+
"data-track": profile.trackingId,
|
|
2079
|
+
className: "border-border hover:border-primary-600 hover:text-primary-800 dark:hover:text-primary-300 inline-flex items-center rounded-full border px-3 py-1.5 text-sm font-medium",
|
|
2080
|
+
children: [
|
|
2081
|
+
/* @__PURE__ */ jsxRuntime.jsxs("span", { className: "sr-only", children: [
|
|
2082
|
+
author.name,
|
|
2083
|
+
" on "
|
|
2084
|
+
] }),
|
|
2085
|
+
profile.label
|
|
2086
|
+
]
|
|
2087
|
+
},
|
|
2088
|
+
profile.href
|
|
2089
|
+
);
|
|
2090
|
+
}) })
|
|
2091
|
+
]
|
|
2092
|
+
},
|
|
2093
|
+
author.name
|
|
2094
|
+
)) })
|
|
2095
|
+
] })
|
|
2096
|
+
}
|
|
2097
|
+
);
|
|
2098
|
+
}
|
|
2099
|
+
);
|
|
2100
|
+
ReportByline.displayName = "ReportByline";
|
|
2101
|
+
var ReportLegend = React5__namespace.forwardRef(
|
|
2102
|
+
({
|
|
2103
|
+
entries,
|
|
2104
|
+
title = "How to read the data",
|
|
2105
|
+
tone = "muted",
|
|
2106
|
+
components,
|
|
2107
|
+
...rest
|
|
2108
|
+
}, ref) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
2109
|
+
chunkXI74P5F2_cjs.SectionShell,
|
|
2110
|
+
{
|
|
2111
|
+
ref,
|
|
2112
|
+
"data-slot": "report-legend",
|
|
2113
|
+
title,
|
|
2114
|
+
tone,
|
|
2115
|
+
spacing: "compact",
|
|
2116
|
+
components,
|
|
2117
|
+
...rest,
|
|
2118
|
+
children: /* @__PURE__ */ jsxRuntime.jsx("dl", { className: "mt-6 grid gap-3 sm:grid-cols-2 lg:grid-cols-3", children: entries.map((entry) => /* @__PURE__ */ jsxRuntime.jsxs(
|
|
2119
|
+
"div",
|
|
2120
|
+
{
|
|
2121
|
+
className: chunkS5RVSXDV_cjs.cn(
|
|
2122
|
+
"flex flex-col gap-2 rounded-xl p-4",
|
|
2123
|
+
chunkXI74P5F2_cjs.cardClass(tone)
|
|
2124
|
+
),
|
|
2125
|
+
children: [
|
|
2126
|
+
/* @__PURE__ */ jsxRuntime.jsx("dt", { children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
2127
|
+
chunkXI74P5F2_cjs.MetricStatusBadge,
|
|
2128
|
+
{
|
|
2129
|
+
status: entry.status,
|
|
2130
|
+
label: entry.label,
|
|
2131
|
+
onDark: tone === "brand"
|
|
2132
|
+
}
|
|
2133
|
+
) }),
|
|
2134
|
+
/* @__PURE__ */ jsxRuntime.jsx("dd", { className: chunkS5RVSXDV_cjs.cn("text-sm leading-snug", chunkXI74P5F2_cjs.mutedTextClass(tone)), children: entry.description })
|
|
2135
|
+
]
|
|
2136
|
+
},
|
|
2137
|
+
entry.status
|
|
2138
|
+
)) })
|
|
2139
|
+
}
|
|
2140
|
+
)
|
|
2141
|
+
);
|
|
2142
|
+
ReportLegend.displayName = "ReportLegend";
|
|
2143
|
+
var ReportMethodology = React5__namespace.forwardRef(
|
|
2144
|
+
({
|
|
2145
|
+
sources,
|
|
2146
|
+
citation,
|
|
2147
|
+
notes,
|
|
2148
|
+
resources,
|
|
2149
|
+
labels,
|
|
2150
|
+
tone = "muted",
|
|
2151
|
+
components,
|
|
2152
|
+
...rest
|
|
2153
|
+
}, ref) => {
|
|
2154
|
+
const card = chunkS5RVSXDV_cjs.cn("rounded-2xl p-6", chunkXI74P5F2_cjs.cardClass(tone));
|
|
2155
|
+
const subheading = chunkS5RVSXDV_cjs.cn(
|
|
2156
|
+
"text-sm font-semibold tracking-wide uppercase",
|
|
2157
|
+
chunkXI74P5F2_cjs.mutedTextClass(tone)
|
|
2158
|
+
);
|
|
2159
|
+
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
2160
|
+
chunkXI74P5F2_cjs.SectionShell,
|
|
2161
|
+
{
|
|
2162
|
+
ref,
|
|
2163
|
+
"data-slot": "report-methodology",
|
|
2164
|
+
tone,
|
|
2165
|
+
components,
|
|
2166
|
+
...rest,
|
|
2167
|
+
children: [
|
|
2168
|
+
/* @__PURE__ */ jsxRuntime.jsx("dl", { className: "mt-10 grid gap-6 sm:grid-cols-2", children: sources.map((source) => /* @__PURE__ */ jsxRuntime.jsxs("div", { className: card, children: [
|
|
2169
|
+
/* @__PURE__ */ jsxRuntime.jsx("dt", { className: chunkS5RVSXDV_cjs.cn("font-semibold", chunkXI74P5F2_cjs.headingTextClass(tone)), children: source.label }),
|
|
2170
|
+
/* @__PURE__ */ jsxRuntime.jsxs("dd", { className: chunkS5RVSXDV_cjs.cn("mt-2 text-sm", chunkXI74P5F2_cjs.mutedTextClass(tone)), children: [
|
|
2171
|
+
source.description,
|
|
2172
|
+
chunkXI74P5F2_cjs.safeHref(source.href) && /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
2173
|
+
" ",
|
|
2174
|
+
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
2175
|
+
"a",
|
|
2176
|
+
{
|
|
2177
|
+
href: chunkXI74P5F2_cjs.safeHref(source.href),
|
|
2178
|
+
rel: "noopener noreferrer",
|
|
2179
|
+
className: chunkS5RVSXDV_cjs.cn(
|
|
2180
|
+
"font-medium underline underline-offset-2",
|
|
2181
|
+
chunkXI74P5F2_cjs.accentTextClass(tone)
|
|
2182
|
+
),
|
|
2183
|
+
children: [
|
|
2184
|
+
labels?.sourceLink ?? "Source",
|
|
2185
|
+
/* @__PURE__ */ jsxRuntime.jsxs("span", { className: "sr-only", children: [
|
|
2186
|
+
": ",
|
|
2187
|
+
source.label
|
|
2188
|
+
] })
|
|
2189
|
+
]
|
|
2190
|
+
}
|
|
2191
|
+
)
|
|
2192
|
+
] })
|
|
2193
|
+
] })
|
|
2194
|
+
] }, source.label)) }),
|
|
2195
|
+
citation && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: chunkS5RVSXDV_cjs.cn(card, "mt-10 border-dashed"), children: [
|
|
2196
|
+
/* @__PURE__ */ jsxRuntime.jsx("h3", { className: subheading, children: labels?.citation ?? "How to cite this report" }),
|
|
2197
|
+
/* @__PURE__ */ jsxRuntime.jsx("p", { className: "mt-3 font-mono text-sm break-words select-all", children: citation })
|
|
2198
|
+
] }),
|
|
2199
|
+
notes?.map((note) => /* @__PURE__ */ jsxRuntime.jsxs("div", { className: chunkS5RVSXDV_cjs.cn(card, "mt-6"), children: [
|
|
2200
|
+
/* @__PURE__ */ jsxRuntime.jsx("h3", { className: subheading, children: note.title }),
|
|
2201
|
+
/* @__PURE__ */ jsxRuntime.jsx("p", { className: chunkS5RVSXDV_cjs.cn("mt-3 max-w-3xl text-sm", chunkXI74P5F2_cjs.mutedTextClass(tone)), children: note.body })
|
|
2202
|
+
] }, note.title)),
|
|
2203
|
+
resources && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: chunkS5RVSXDV_cjs.cn(card, "mt-6"), children: [
|
|
2204
|
+
/* @__PURE__ */ jsxRuntime.jsx("h3", { className: subheading, children: resources.title }),
|
|
2205
|
+
resources.description && /* @__PURE__ */ jsxRuntime.jsx("p", { className: chunkS5RVSXDV_cjs.cn("mt-3 max-w-3xl text-sm", chunkXI74P5F2_cjs.mutedTextClass(tone)), children: resources.description }),
|
|
2206
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "mt-4 flex flex-wrap gap-3", children: resources.links.map((link) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
2207
|
+
chunkXI74P5F2_cjs.TemplateAnchor,
|
|
2208
|
+
{
|
|
2209
|
+
href: link.href,
|
|
2210
|
+
trackingId: link.trackingId,
|
|
2211
|
+
components,
|
|
2212
|
+
className: chunkS5RVSXDV_cjs.cn(
|
|
2213
|
+
"border-border hover:border-primary-600 inline-flex items-center rounded-full border px-4 py-2 text-sm font-medium",
|
|
2214
|
+
chunkXI74P5F2_cjs.accentTextClass(tone)
|
|
2215
|
+
),
|
|
2216
|
+
children: link.label
|
|
2217
|
+
},
|
|
2218
|
+
link.href
|
|
2219
|
+
)) })
|
|
2220
|
+
] })
|
|
2221
|
+
]
|
|
2222
|
+
}
|
|
2223
|
+
);
|
|
2224
|
+
}
|
|
2225
|
+
);
|
|
2226
|
+
ReportMethodology.displayName = "ReportMethodology";
|
|
2227
|
+
|
|
2228
|
+
// src/components/TileCartogramSection/tiles.ts
|
|
2229
|
+
var grid = [
|
|
2230
|
+
["AK", "Alaska", 0, 0],
|
|
2231
|
+
["ME", "Maine", 0, 10],
|
|
2232
|
+
["VT", "Vermont", 1, 9],
|
|
2233
|
+
["NH", "New Hampshire", 1, 10],
|
|
2234
|
+
["WA", "Washington", 2, 0],
|
|
2235
|
+
["ID", "Idaho", 2, 1],
|
|
2236
|
+
["MT", "Montana", 2, 2],
|
|
2237
|
+
["ND", "North Dakota", 2, 3],
|
|
2238
|
+
["MN", "Minnesota", 2, 4],
|
|
2239
|
+
["IL", "Illinois", 2, 5],
|
|
2240
|
+
["WI", "Wisconsin", 2, 6],
|
|
2241
|
+
["MI", "Michigan", 2, 8],
|
|
2242
|
+
["NY", "New York", 2, 9],
|
|
2243
|
+
["MA", "Massachusetts", 2, 10],
|
|
2244
|
+
["OR", "Oregon", 3, 0],
|
|
2245
|
+
["NV", "Nevada", 3, 1],
|
|
2246
|
+
["WY", "Wyoming", 3, 2],
|
|
2247
|
+
["SD", "South Dakota", 3, 3],
|
|
2248
|
+
["IA", "Iowa", 3, 4],
|
|
2249
|
+
["IN", "Indiana", 3, 5],
|
|
2250
|
+
["OH", "Ohio", 3, 6],
|
|
2251
|
+
["PA", "Pennsylvania", 3, 7],
|
|
2252
|
+
["NJ", "New Jersey", 3, 8],
|
|
2253
|
+
["CT", "Connecticut", 3, 9],
|
|
2254
|
+
["RI", "Rhode Island", 3, 10],
|
|
2255
|
+
["CA", "California", 4, 0],
|
|
2256
|
+
["UT", "Utah", 4, 1],
|
|
2257
|
+
["CO", "Colorado", 4, 2],
|
|
2258
|
+
["NE", "Nebraska", 4, 3],
|
|
2259
|
+
["MO", "Missouri", 4, 4],
|
|
2260
|
+
["KY", "Kentucky", 4, 5],
|
|
2261
|
+
["WV", "West Virginia", 4, 6],
|
|
2262
|
+
["VA", "Virginia", 4, 7],
|
|
2263
|
+
["MD", "Maryland", 4, 8],
|
|
2264
|
+
["DE", "Delaware", 4, 9],
|
|
2265
|
+
["AZ", "Arizona", 5, 1],
|
|
2266
|
+
["NM", "New Mexico", 5, 2],
|
|
2267
|
+
["KS", "Kansas", 5, 3],
|
|
2268
|
+
["AR", "Arkansas", 5, 4],
|
|
2269
|
+
["TN", "Tennessee", 5, 5],
|
|
2270
|
+
["NC", "North Carolina", 5, 6],
|
|
2271
|
+
["SC", "South Carolina", 5, 7],
|
|
2272
|
+
["DC", "District of Columbia", 5, 8],
|
|
2273
|
+
["OK", "Oklahoma", 6, 3],
|
|
2274
|
+
["LA", "Louisiana", 6, 4],
|
|
2275
|
+
["MS", "Mississippi", 6, 5],
|
|
2276
|
+
["AL", "Alabama", 6, 6],
|
|
2277
|
+
["GA", "Georgia", 6, 7],
|
|
2278
|
+
["HI", "Hawaii", 7, 0],
|
|
2279
|
+
["TX", "Texas", 7, 3],
|
|
2280
|
+
["FL", "Florida", 7, 7]
|
|
2281
|
+
];
|
|
2282
|
+
var usStateTiles = grid.map(
|
|
2283
|
+
([code, name, row, col]) => ({ code, name, row, col })
|
|
2284
|
+
);
|
|
2285
|
+
function quartileBuckets(values) {
|
|
2286
|
+
const sorted = Object.values(values).filter((v) => typeof v === "number").sort((a, b) => a - b);
|
|
2287
|
+
const q = (p) => sorted[Math.floor((sorted.length - 1) * p)];
|
|
2288
|
+
const out = {};
|
|
2289
|
+
for (const [code, v] of Object.entries(values)) {
|
|
2290
|
+
out[code] = typeof v !== "number" || sorted.length === 0 ? 0 : v <= q(0.25) ? 1 : v <= q(0.5) ? 2 : v <= q(0.75) ? 3 : 4;
|
|
2291
|
+
}
|
|
2292
|
+
return out;
|
|
2293
|
+
}
|
|
2294
|
+
var bucketClass = {
|
|
2295
|
+
0: "bg-muted text-muted-foreground",
|
|
2296
|
+
1: "bg-primary-600/20 text-foreground",
|
|
2297
|
+
2: "bg-primary-600/40 text-foreground",
|
|
2298
|
+
3: "bg-primary-800 text-white",
|
|
2299
|
+
4: "bg-primary-950 text-white"
|
|
2300
|
+
};
|
|
2301
|
+
var TileCartogramSection = React5__namespace.forwardRef(
|
|
2302
|
+
({
|
|
2303
|
+
values,
|
|
2304
|
+
legend,
|
|
2305
|
+
layout = usStateTiles,
|
|
2306
|
+
mapTitle,
|
|
2307
|
+
mapDescription,
|
|
2308
|
+
tone = "default",
|
|
2309
|
+
components,
|
|
2310
|
+
...rest
|
|
2311
|
+
}, ref) => {
|
|
2312
|
+
const columns = Math.max(...layout.map((t) => t.col)) + 1;
|
|
2313
|
+
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
2314
|
+
chunkXI74P5F2_cjs.SectionShell,
|
|
2315
|
+
{
|
|
2316
|
+
ref,
|
|
2317
|
+
"data-slot": "tile-cartogram-section",
|
|
2318
|
+
tone,
|
|
2319
|
+
components,
|
|
2320
|
+
...rest,
|
|
2321
|
+
children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: chunkS5RVSXDV_cjs.cn("mt-10 rounded-2xl p-6", chunkXI74P5F2_cjs.cardClass(tone)), children: [
|
|
2322
|
+
mapTitle && /* @__PURE__ */ jsxRuntime.jsx("h3", { className: chunkS5RVSXDV_cjs.cn("text-lg font-semibold", chunkXI74P5F2_cjs.headingTextClass(tone)), children: mapTitle }),
|
|
2323
|
+
mapDescription && /* @__PURE__ */ jsxRuntime.jsx("p", { className: chunkS5RVSXDV_cjs.cn("mt-1 text-sm", chunkXI74P5F2_cjs.mutedTextClass(tone)), children: mapDescription }),
|
|
2324
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2325
|
+
"ul",
|
|
2326
|
+
{
|
|
2327
|
+
className: "mx-auto mt-6 grid w-full max-w-xl gap-1",
|
|
2328
|
+
style: {
|
|
2329
|
+
gridTemplateColumns: `repeat(${columns}, minmax(0, 1fr))`
|
|
2330
|
+
},
|
|
2331
|
+
children: layout.map((tile) => {
|
|
2332
|
+
const value = values[tile.code];
|
|
2333
|
+
const bucket = value?.bucket ?? 0;
|
|
2334
|
+
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
2335
|
+
"li",
|
|
2336
|
+
{
|
|
2337
|
+
title: value?.detail ? `${tile.name}: ${value.detail}` : tile.name,
|
|
2338
|
+
style: {
|
|
2339
|
+
gridColumnStart: tile.col + 1,
|
|
2340
|
+
gridRowStart: tile.row + 1
|
|
2341
|
+
},
|
|
2342
|
+
className: chunkS5RVSXDV_cjs.cn(
|
|
2343
|
+
"flex aspect-square items-center justify-center rounded-md text-[9px] font-semibold sm:text-[11px]",
|
|
2344
|
+
bucketClass[bucket]
|
|
2345
|
+
),
|
|
2346
|
+
children: [
|
|
2347
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { "aria-hidden": "true", children: tile.code }),
|
|
2348
|
+
/* @__PURE__ */ jsxRuntime.jsxs("span", { className: "sr-only", children: [
|
|
2349
|
+
tile.name,
|
|
2350
|
+
value?.detail ? `: ${value.detail}` : ""
|
|
2351
|
+
] })
|
|
2352
|
+
]
|
|
2353
|
+
},
|
|
2354
|
+
tile.code
|
|
2355
|
+
);
|
|
2356
|
+
})
|
|
2357
|
+
}
|
|
2358
|
+
),
|
|
2359
|
+
/* @__PURE__ */ jsxRuntime.jsx("ul", { className: "mt-6 flex flex-wrap items-center justify-center gap-x-4 gap-y-2 text-xs", children: legend.map((entry) => /* @__PURE__ */ jsxRuntime.jsxs(
|
|
2360
|
+
"li",
|
|
2361
|
+
{
|
|
2362
|
+
className: "inline-flex items-center gap-1.5",
|
|
2363
|
+
children: [
|
|
2364
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2365
|
+
"span",
|
|
2366
|
+
{
|
|
2367
|
+
"aria-hidden": "true",
|
|
2368
|
+
className: chunkS5RVSXDV_cjs.cn(
|
|
2369
|
+
"ring-border size-3 rounded ring-1",
|
|
2370
|
+
bucketClass[entry.bucket]
|
|
2371
|
+
)
|
|
2372
|
+
}
|
|
2373
|
+
),
|
|
2374
|
+
entry.label
|
|
2375
|
+
]
|
|
2376
|
+
},
|
|
2377
|
+
entry.bucket
|
|
2378
|
+
)) })
|
|
2379
|
+
] })
|
|
2380
|
+
}
|
|
2381
|
+
);
|
|
2382
|
+
}
|
|
2383
|
+
);
|
|
2384
|
+
TileCartogramSection.displayName = "TileCartogramSection";
|
|
2385
|
+
var sections = {
|
|
2386
|
+
hero: HeroSection,
|
|
2387
|
+
logos: LogoCloudSection,
|
|
2388
|
+
features: FeatureGridSection,
|
|
2389
|
+
split: SplitContentSection,
|
|
2390
|
+
process: ProcessStepsSection,
|
|
2391
|
+
stats: StatsSection,
|
|
2392
|
+
comparison: ComparisonSection,
|
|
2393
|
+
pricing: PricingSection,
|
|
2394
|
+
video: VideoSection,
|
|
2395
|
+
testimonials: TestimonialSection,
|
|
2396
|
+
resources: ResourceCardsSection,
|
|
2397
|
+
faq: FaqSection,
|
|
2398
|
+
"lead-form": LeadFormSection,
|
|
2399
|
+
cta: CtaSection,
|
|
2400
|
+
"report-legend": ReportLegend,
|
|
2401
|
+
"benchmark-table": BenchmarkTableSection,
|
|
2402
|
+
"ranked-list": RankedListSection,
|
|
2403
|
+
"tile-cartogram": TileCartogramSection,
|
|
2404
|
+
"metric-list": MetricListSection,
|
|
2405
|
+
methodology: ReportMethodology,
|
|
2406
|
+
byline: ReportByline,
|
|
2407
|
+
"link-groups": LinkGroupsSection,
|
|
2408
|
+
"pdf-embed": PdfEmbedSection
|
|
2409
|
+
};
|
|
2410
|
+
var landingBlockTypes = [
|
|
2411
|
+
...Object.keys(sections),
|
|
2412
|
+
"custom"
|
|
2413
|
+
];
|
|
2414
|
+
var takesIcons = /* @__PURE__ */ new Set(["features", "process"]);
|
|
2415
|
+
var LandingPage = React5__namespace.forwardRef(
|
|
2416
|
+
({ blocks, icons, components, custom, actions, ...rest }, ref) => /* @__PURE__ */ jsxRuntime.jsx("div", { ref, "data-slot": "landing-page", ...rest, children: blocks.map((block, i) => {
|
|
2417
|
+
const key = block.id ?? `${block.type}-${i}`;
|
|
2418
|
+
if (block.type === "custom") {
|
|
2419
|
+
const Custom = chunkXI74P5F2_cjs.ownProperty(custom, block.component);
|
|
2420
|
+
return Custom ? /* @__PURE__ */ jsxRuntime.jsx(Custom, { id: block.id, ...block.props }, key) : null;
|
|
2421
|
+
}
|
|
2422
|
+
const { type, ...props } = block;
|
|
2423
|
+
const Section = chunkXI74P5F2_cjs.ownProperty(
|
|
2424
|
+
sections,
|
|
2425
|
+
type
|
|
2426
|
+
);
|
|
2427
|
+
if (!Section) return null;
|
|
2428
|
+
const action = block.type === "lead-form" ? chunkXI74P5F2_cjs.ownProperty(actions, block.action) ?? chunkXI74P5F2_cjs.safeHref(block.action) : void 0;
|
|
2429
|
+
if (block.type === "lead-form" && action == null) return null;
|
|
2430
|
+
const data = { ...props };
|
|
2431
|
+
delete data.children;
|
|
2432
|
+
delete data.dangerouslySetInnerHTML;
|
|
2433
|
+
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
2434
|
+
Section,
|
|
2435
|
+
{
|
|
2436
|
+
...data,
|
|
2437
|
+
components,
|
|
2438
|
+
...takesIcons.has(type) ? { icons } : {},
|
|
2439
|
+
...block.type === "lead-form" ? { action } : {}
|
|
2440
|
+
},
|
|
2441
|
+
key
|
|
2442
|
+
);
|
|
2443
|
+
}) })
|
|
2444
|
+
);
|
|
2445
|
+
LandingPage.displayName = "LandingPage";
|
|
2446
|
+
|
|
2447
|
+
// src/components/LandingPage/presets.ts
|
|
2448
|
+
var landingPresets = {
|
|
2449
|
+
"vertical-hub": {
|
|
2450
|
+
label: "Industry / vertical hub",
|
|
2451
|
+
description: "One page per industry served: the sector problem, what the product does for it, proof, and a way in.",
|
|
1757
2452
|
sequence: [
|
|
1758
2453
|
"hero",
|
|
1759
2454
|
"logos",
|
|
@@ -1824,14 +2519,38 @@ var landingPresets = {
|
|
|
1824
2519
|
"cta"
|
|
1825
2520
|
],
|
|
1826
2521
|
required: ["hero", "pricing", "faq"]
|
|
2522
|
+
},
|
|
2523
|
+
"benchmark-report": {
|
|
2524
|
+
label: "Benchmark report",
|
|
2525
|
+
description: "A published data report: headline findings, the figures with their provenance, how they were built, and who wrote it.",
|
|
2526
|
+
sequence: [
|
|
2527
|
+
"hero",
|
|
2528
|
+
"stats",
|
|
2529
|
+
"report-legend",
|
|
2530
|
+
"features",
|
|
2531
|
+
"benchmark-table",
|
|
2532
|
+
"tile-cartogram",
|
|
2533
|
+
"ranked-list",
|
|
2534
|
+
"metric-list",
|
|
2535
|
+
"methodology",
|
|
2536
|
+
"byline",
|
|
2537
|
+
"link-groups",
|
|
2538
|
+
"pdf-embed",
|
|
2539
|
+
"lead-form",
|
|
2540
|
+
"cta"
|
|
2541
|
+
],
|
|
2542
|
+
required: ["hero", "methodology"]
|
|
1827
2543
|
}
|
|
1828
2544
|
};
|
|
1829
2545
|
var headedItems = /* @__PURE__ */ new Set([
|
|
1830
2546
|
"features",
|
|
1831
2547
|
"process",
|
|
1832
2548
|
"pricing",
|
|
1833
|
-
"resources"
|
|
2549
|
+
"resources",
|
|
2550
|
+
"metric-list",
|
|
2551
|
+
"link-groups"
|
|
1834
2552
|
]);
|
|
2553
|
+
var rendersH3 = (b) => headedItems.has(b.type) || b.type === "ranked-list" && b.lists.some((l) => l.title) || b.type === "tile-cartogram" && !!b.mapTitle || b.type === "methodology" && !!(b.citation || b.notes?.length || b.resources);
|
|
1835
2554
|
function validateLandingPage(blocks, preset) {
|
|
1836
2555
|
const issues = [];
|
|
1837
2556
|
const types = blocks.map((b) => b.type);
|
|
@@ -1843,7 +2562,7 @@ function validateLandingPage(blocks, preset) {
|
|
|
1843
2562
|
index,
|
|
1844
2563
|
message: `Unknown block type "${b.type}": the renderer skips this block.`
|
|
1845
2564
|
});
|
|
1846
|
-
if (b.type === "lead-form" && safeHref(b.action) == null)
|
|
2565
|
+
if (b.type === "lead-form" && chunkXI74P5F2_cjs.safeHref(b.action) == null)
|
|
1847
2566
|
issues.push({
|
|
1848
2567
|
severity: "error",
|
|
1849
2568
|
index,
|
|
@@ -1896,12 +2615,24 @@ function validateLandingPage(blocks, preset) {
|
|
|
1896
2615
|
});
|
|
1897
2616
|
});
|
|
1898
2617
|
blocks.forEach((b, index) => {
|
|
1899
|
-
if (
|
|
2618
|
+
if (rendersH3(b) && !("title" in b && b.title))
|
|
1900
2619
|
issues.push({
|
|
1901
2620
|
severity: "warning",
|
|
1902
2621
|
index,
|
|
1903
2622
|
message: `"${b.type}" has no title, so its h3 item titles skip the h2 level.`
|
|
1904
2623
|
});
|
|
2624
|
+
if (b.type === "benchmark-table") {
|
|
2625
|
+
const keys = new Set(b.columns.map((c) => c.key));
|
|
2626
|
+
b.rows.forEach((row) => {
|
|
2627
|
+
const unknown = Object.keys(row.values).filter((k) => !keys.has(k));
|
|
2628
|
+
if (unknown.length)
|
|
2629
|
+
issues.push({
|
|
2630
|
+
severity: "warning",
|
|
2631
|
+
index,
|
|
2632
|
+
message: `Benchmark row "${row.label}" has values for unknown columns: ${unknown.join(", ")}.`
|
|
2633
|
+
});
|
|
2634
|
+
});
|
|
2635
|
+
}
|
|
1905
2636
|
if (b.type !== "comparison") return;
|
|
1906
2637
|
b.rows.forEach((row, r) => {
|
|
1907
2638
|
if (row.values.length !== b.columns.length)
|
|
@@ -1927,9 +2658,11 @@ function validateLandingPage(blocks, preset) {
|
|
|
1927
2658
|
message: `Missing required "${type}" block for the ${spec.label} preset.`
|
|
1928
2659
|
});
|
|
1929
2660
|
let last = -1;
|
|
2661
|
+
const placed = /* @__PURE__ */ new Set();
|
|
1930
2662
|
blocks.forEach((b, index) => {
|
|
1931
2663
|
const rank = spec.sequence.indexOf(b.type);
|
|
1932
|
-
if (rank === -1) return;
|
|
2664
|
+
if (rank === -1 || placed.has(b.type)) return;
|
|
2665
|
+
placed.add(b.type);
|
|
1933
2666
|
if (rank < last)
|
|
1934
2667
|
issues.push({
|
|
1935
2668
|
severity: "warning",
|
|
@@ -1941,6 +2674,7 @@ function validateLandingPage(blocks, preset) {
|
|
|
1941
2674
|
return issues;
|
|
1942
2675
|
}
|
|
1943
2676
|
|
|
2677
|
+
exports.BenchmarkTableSection = BenchmarkTableSection;
|
|
1944
2678
|
exports.ComparisonSection = ComparisonSection;
|
|
1945
2679
|
exports.CtaSection = CtaSection;
|
|
1946
2680
|
exports.FaqSection = FaqSection;
|
|
@@ -1948,20 +2682,26 @@ exports.FeatureGridSection = FeatureGridSection;
|
|
|
1948
2682
|
exports.HeroSection = HeroSection;
|
|
1949
2683
|
exports.LandingPage = LandingPage;
|
|
1950
2684
|
exports.LeadFormSection = LeadFormSection;
|
|
2685
|
+
exports.LinkGroupsSection = LinkGroupsSection;
|
|
1951
2686
|
exports.LogoCloudSection = LogoCloudSection;
|
|
2687
|
+
exports.MetricListSection = MetricListSection;
|
|
2688
|
+
exports.PdfEmbedSection = PdfEmbedSection;
|
|
1952
2689
|
exports.PricingSection = PricingSection;
|
|
1953
2690
|
exports.ProcessStepsSection = ProcessStepsSection;
|
|
2691
|
+
exports.RankedListSection = RankedListSection;
|
|
2692
|
+
exports.ReportByline = ReportByline;
|
|
2693
|
+
exports.ReportLegend = ReportLegend;
|
|
2694
|
+
exports.ReportMethodology = ReportMethodology;
|
|
1954
2695
|
exports.ResourceCardsSection = ResourceCardsSection;
|
|
1955
|
-
exports.SectionHeading = SectionHeading;
|
|
1956
|
-
exports.SectionShell = SectionShell;
|
|
1957
2696
|
exports.SplitContentSection = SplitContentSection;
|
|
1958
2697
|
exports.StatsSection = StatsSection;
|
|
1959
|
-
exports.TemplateIcon = TemplateIcon;
|
|
1960
2698
|
exports.TestimonialSection = TestimonialSection;
|
|
2699
|
+
exports.TileCartogramSection = TileCartogramSection;
|
|
1961
2700
|
exports.VideoSection = VideoSection;
|
|
1962
2701
|
exports.defaultLeadFormFields = defaultLeadFormFields;
|
|
1963
2702
|
exports.landingPresets = landingPresets;
|
|
1964
|
-
exports.
|
|
2703
|
+
exports.quartileBuckets = quartileBuckets;
|
|
2704
|
+
exports.usStateTiles = usStateTiles;
|
|
1965
2705
|
exports.validateLandingPage = validateLandingPage;
|
|
1966
|
-
//# sourceMappingURL=chunk-
|
|
1967
|
-
//# sourceMappingURL=chunk-
|
|
2706
|
+
//# sourceMappingURL=chunk-ADW7ZYCY.cjs.map
|
|
2707
|
+
//# sourceMappingURL=chunk-ADW7ZYCY.cjs.map
|