@nswds/app 1.114.1 → 1.115.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/globals.css +447 -31
- package/dist/index.cjs +261 -83
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +77 -12
- package/dist/index.d.ts +77 -12
- package/dist/index.js +261 -84
- package/dist/index.js.map +1 -1
- package/dist/styles.css +444 -31
- package/dist/styles.css.map +1 -1
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -4177,7 +4177,7 @@ var Link = forwardRef(function Link2({ className, variant, ...props }, ref) {
|
|
|
4177
4177
|
var styles = {
|
|
4178
4178
|
base: [
|
|
4179
4179
|
// Base
|
|
4180
|
-
"relative isolate inline-flex items-baseline justify-center gap-x-2 rounded-sm border text-base/7
|
|
4180
|
+
"relative isolate inline-flex items-baseline justify-center gap-x-2 rounded-sm border text-base/7 font-bold transition-all",
|
|
4181
4181
|
// Focus
|
|
4182
4182
|
"focus:outline focus:outline-2 focus:outline-offset-2 focus:outline-(--btn-bg)",
|
|
4183
4183
|
// Disabled
|
|
@@ -4261,7 +4261,7 @@ var styles = {
|
|
|
4261
4261
|
],
|
|
4262
4262
|
outline: [
|
|
4263
4263
|
// Text color
|
|
4264
|
-
"border-(--btn-bg) text-(--btn-bg)",
|
|
4264
|
+
"border-(--btn-bg) text-(--btn-bg) border-2",
|
|
4265
4265
|
// Optical border, implemented as the button background to avoid corner artifacts
|
|
4266
4266
|
"bg-transparent",
|
|
4267
4267
|
// Button background, implemented as foreground layer to stack on top of pseudo-border layer
|
|
@@ -4422,30 +4422,12 @@ var styles = {
|
|
|
4422
4422
|
"dark:[--btn-bg:var(--color-accent-500)] dark:[--btn-border:var(--color-accent-500)]/90 dark:[--btn-text:white]",
|
|
4423
4423
|
// Dark mode states
|
|
4424
4424
|
"dark:[--btn-hover-overlay:var(--color-accent-500)]/30 dark:data-[variant=solid]:[--btn-hover-overlay:var(--color-white)]/10"
|
|
4425
|
-
],
|
|
4426
|
-
danger: [
|
|
4427
|
-
// Base
|
|
4428
|
-
"",
|
|
4429
|
-
// States
|
|
4430
|
-
"",
|
|
4431
|
-
// Dark mode
|
|
4432
|
-
"",
|
|
4433
|
-
// Dark mode states
|
|
4434
|
-
"",
|
|
4435
|
-
// Icon
|
|
4436
|
-
"",
|
|
4437
|
-
// Icon states
|
|
4438
|
-
"",
|
|
4439
|
-
// Icon dark mode
|
|
4440
|
-
"",
|
|
4441
|
-
// Icon dark mode states
|
|
4442
|
-
""
|
|
4443
4425
|
]
|
|
4444
4426
|
},
|
|
4445
4427
|
size: {
|
|
4446
|
-
default: "px-[calc(--spacing(
|
|
4447
|
-
sm: "px-[calc(--spacing(
|
|
4448
|
-
lg: "px-[calc(--spacing(
|
|
4428
|
+
default: "px-[calc(--spacing(6)-1px)] py-[calc(--spacing(4)-1px)] sm:px-[calc(--spacing(5.5)-1px)] sm:py-[calc(--spacing(3)-1px)]",
|
|
4429
|
+
sm: "px-[calc(--spacing(5)-1px)] py-[calc(--spacing(3)-1px)] sm:px-[calc(--spacing(4.5)-1px)] sm:py-[calc(--spacing(2)-1px)]",
|
|
4430
|
+
lg: "px-[calc(--spacing(7)-1px)] py-[calc(--spacing(5)-1px)] sm:px-[calc(--spacing(6.5)-1px)] sm:py-[calc(--spacing(4)-1px)]",
|
|
4449
4431
|
icon: "w-10 h-10 flex-none"
|
|
4450
4432
|
},
|
|
4451
4433
|
iconSize: {
|
|
@@ -4473,8 +4455,7 @@ var buttonVariants = cva(styles.base, {
|
|
|
4473
4455
|
primary: styles.colors.primary,
|
|
4474
4456
|
secondary: styles.colors.secondary,
|
|
4475
4457
|
tertiary: styles.colors.tertiary,
|
|
4476
|
-
accent: styles.colors.accent
|
|
4477
|
-
danger: styles.colors.danger
|
|
4458
|
+
accent: styles.colors.accent
|
|
4478
4459
|
},
|
|
4479
4460
|
size: {
|
|
4480
4461
|
default: styles.size.default,
|
|
@@ -18781,7 +18762,7 @@ function FormatToggle({ format, setFormat }) {
|
|
|
18781
18762
|
|
|
18782
18763
|
// package.json
|
|
18783
18764
|
var package_default = {
|
|
18784
|
-
version: "1.114.
|
|
18765
|
+
version: "1.114.1"};
|
|
18785
18766
|
var SluggerContext = React5__default.createContext(null);
|
|
18786
18767
|
function flattenText(nodes) {
|
|
18787
18768
|
if (nodes == null || typeof nodes === "boolean") return "";
|
|
@@ -19070,9 +19051,107 @@ var heroBannerVariants = cva("relative", {
|
|
|
19070
19051
|
variants: {
|
|
19071
19052
|
variant: {
|
|
19072
19053
|
"primary-800": "bg-primary-800 text-white",
|
|
19073
|
-
"
|
|
19054
|
+
"primary-600": "bg-primary-600 text-white",
|
|
19055
|
+
"primary-400": "bg-primary-400 text-primary-800",
|
|
19056
|
+
"primary-200": "bg-primary-200 text-primary-800",
|
|
19057
|
+
"grey-800": "bg-grey-800 text-white",
|
|
19058
|
+
"grey-600": "bg-grey-600 text-white",
|
|
19059
|
+
"grey-400": "bg-grey-400 text-grey-800",
|
|
19060
|
+
"grey-200": "bg-grey-200 text-grey-800",
|
|
19074
19061
|
"accent-800": "bg-accent-800 text-white",
|
|
19062
|
+
"accent-600": "bg-accent-600 text-white",
|
|
19063
|
+
"accent-400": "bg-accent-400 text-accent-800",
|
|
19064
|
+
"accent-200": "bg-accent-200 text-accent-800",
|
|
19065
|
+
white: "bg-white text-grey-800"
|
|
19066
|
+
}
|
|
19067
|
+
},
|
|
19068
|
+
defaultVariants: {
|
|
19069
|
+
variant: "primary-800"
|
|
19070
|
+
}
|
|
19071
|
+
});
|
|
19072
|
+
var heroBannerContentAlignments = {
|
|
19073
|
+
center: {
|
|
19074
|
+
content: "text-center",
|
|
19075
|
+
subtitle: "mx-auto",
|
|
19076
|
+
actions: "justify-center"
|
|
19077
|
+
},
|
|
19078
|
+
left: {
|
|
19079
|
+
content: "text-left",
|
|
19080
|
+
subtitle: "",
|
|
19081
|
+
actions: "justify-start"
|
|
19082
|
+
}
|
|
19083
|
+
};
|
|
19084
|
+
function HeroBannerSimple({
|
|
19085
|
+
variant,
|
|
19086
|
+
heading,
|
|
19087
|
+
subtitle,
|
|
19088
|
+
contentAlign = "center",
|
|
19089
|
+
primaryButton,
|
|
19090
|
+
secondaryButton
|
|
19091
|
+
}) {
|
|
19092
|
+
const alignment = heroBannerContentAlignments[contentAlign];
|
|
19093
|
+
return /* @__PURE__ */ jsx("div", { className: heroBannerVariants({ variant }), children: /* @__PURE__ */ jsx("div", { className: "px-6 py-24 sm:py-32 lg:px-8", children: /* @__PURE__ */ jsxs("div", { className: cn("mx-auto max-w-2xl", alignment.content), children: [
|
|
19094
|
+
heading && /* @__PURE__ */ jsx("h1", { className: "text-4xl font-semibold tracking-tight text-balance sm:text-6xl", children: heading }),
|
|
19095
|
+
subtitle && /* @__PURE__ */ jsx("p", { className: cn("mt-6 max-w-xl text-lg leading-8 text-pretty", alignment.subtitle), children: subtitle }),
|
|
19096
|
+
(primaryButton || secondaryButton) && /* @__PURE__ */ jsxs(
|
|
19097
|
+
"div",
|
|
19098
|
+
{
|
|
19099
|
+
className: cn("mt-10 flex flex-wrap items-center gap-x-6 gap-y-4", alignment.actions),
|
|
19100
|
+
children: [
|
|
19101
|
+
primaryButton && (primaryButton.href ? /* @__PURE__ */ jsx(
|
|
19102
|
+
Button2,
|
|
19103
|
+
{
|
|
19104
|
+
href: primaryButton.href,
|
|
19105
|
+
variant: primaryButton.variant,
|
|
19106
|
+
color: primaryButton.color ?? void 0,
|
|
19107
|
+
children: primaryButton.text
|
|
19108
|
+
}
|
|
19109
|
+
) : /* @__PURE__ */ jsx(
|
|
19110
|
+
Button2,
|
|
19111
|
+
{
|
|
19112
|
+
onClick: primaryButton.onClick,
|
|
19113
|
+
variant: primaryButton.variant,
|
|
19114
|
+
color: primaryButton.color ?? void 0,
|
|
19115
|
+
children: primaryButton.text
|
|
19116
|
+
}
|
|
19117
|
+
)),
|
|
19118
|
+
secondaryButton && (secondaryButton.href ? /* @__PURE__ */ jsx(
|
|
19119
|
+
Button2,
|
|
19120
|
+
{
|
|
19121
|
+
href: secondaryButton.href,
|
|
19122
|
+
variant: secondaryButton.variant,
|
|
19123
|
+
color: secondaryButton.color ?? void 0,
|
|
19124
|
+
children: secondaryButton.text
|
|
19125
|
+
}
|
|
19126
|
+
) : /* @__PURE__ */ jsx(
|
|
19127
|
+
Button2,
|
|
19128
|
+
{
|
|
19129
|
+
onClick: secondaryButton.onClick,
|
|
19130
|
+
variant: secondaryButton.variant,
|
|
19131
|
+
color: secondaryButton.color ?? void 0,
|
|
19132
|
+
children: secondaryButton.text
|
|
19133
|
+
}
|
|
19134
|
+
))
|
|
19135
|
+
]
|
|
19136
|
+
}
|
|
19137
|
+
)
|
|
19138
|
+
] }) }) });
|
|
19139
|
+
}
|
|
19140
|
+
var heroBannerVariants2 = cva("relative", {
|
|
19141
|
+
variants: {
|
|
19142
|
+
variant: {
|
|
19143
|
+
"primary-800": "bg-primary-800 text-white",
|
|
19144
|
+
"primary-600": "bg-primary-600 text-white",
|
|
19145
|
+
"primary-400": "bg-primary-400 text-primary-800",
|
|
19075
19146
|
"primary-200": "bg-primary-200 text-primary-800",
|
|
19147
|
+
"grey-800": "bg-grey-800 text-white",
|
|
19148
|
+
"grey-600": "bg-grey-600 text-white",
|
|
19149
|
+
"grey-400": "bg-grey-400 text-grey-800",
|
|
19150
|
+
"grey-200": "bg-grey-200 text-grey-800",
|
|
19151
|
+
"accent-800": "bg-accent-800 text-white",
|
|
19152
|
+
"accent-600": "bg-accent-600 text-white",
|
|
19153
|
+
"accent-400": "bg-accent-400 text-accent-800",
|
|
19154
|
+
"accent-200": "bg-accent-200 text-accent-800",
|
|
19076
19155
|
white: "bg-white text-grey-800"
|
|
19077
19156
|
}
|
|
19078
19157
|
},
|
|
@@ -19080,6 +19159,34 @@ var heroBannerVariants = cva("relative", {
|
|
|
19080
19159
|
variant: "primary-800"
|
|
19081
19160
|
}
|
|
19082
19161
|
});
|
|
19162
|
+
var HERO_BANNER_SUPPORTING_IMAGE_DEFAULT_SPLIT = {
|
|
19163
|
+
left: 8,
|
|
19164
|
+
right: 4
|
|
19165
|
+
};
|
|
19166
|
+
var HERO_BANNER_SUPPORTING_IMAGE_COLUMN_SPANS = {
|
|
19167
|
+
1: "lg:col-span-1",
|
|
19168
|
+
2: "lg:col-span-2",
|
|
19169
|
+
3: "lg:col-span-3",
|
|
19170
|
+
4: "lg:col-span-4",
|
|
19171
|
+
5: "lg:col-span-5",
|
|
19172
|
+
6: "lg:col-span-6",
|
|
19173
|
+
7: "lg:col-span-7",
|
|
19174
|
+
8: "lg:col-span-8",
|
|
19175
|
+
9: "lg:col-span-9",
|
|
19176
|
+
10: "lg:col-span-10",
|
|
19177
|
+
11: "lg:col-span-11"
|
|
19178
|
+
};
|
|
19179
|
+
function resolveHeroBannerSupportingImageSplit(split) {
|
|
19180
|
+
if (!split) {
|
|
19181
|
+
return HERO_BANNER_SUPPORTING_IMAGE_DEFAULT_SPLIT;
|
|
19182
|
+
}
|
|
19183
|
+
const hasValidLeftSpan = split.left in HERO_BANNER_SUPPORTING_IMAGE_COLUMN_SPANS;
|
|
19184
|
+
const hasValidRightSpan = split.right in HERO_BANNER_SUPPORTING_IMAGE_COLUMN_SPANS;
|
|
19185
|
+
if (hasValidLeftSpan && hasValidRightSpan && split.left + split.right === 12) {
|
|
19186
|
+
return split;
|
|
19187
|
+
}
|
|
19188
|
+
return HERO_BANNER_SUPPORTING_IMAGE_DEFAULT_SPLIT;
|
|
19189
|
+
}
|
|
19083
19190
|
function HeroBannerSupportingImage({
|
|
19084
19191
|
variant,
|
|
19085
19192
|
imgAlt,
|
|
@@ -19087,63 +19194,96 @@ function HeroBannerSupportingImage({
|
|
|
19087
19194
|
imgBgcolor,
|
|
19088
19195
|
heading,
|
|
19089
19196
|
subtitle,
|
|
19197
|
+
split,
|
|
19090
19198
|
primaryButton,
|
|
19091
19199
|
secondaryButton
|
|
19092
19200
|
}) {
|
|
19093
|
-
|
|
19094
|
-
|
|
19095
|
-
|
|
19096
|
-
|
|
19097
|
-
|
|
19098
|
-
|
|
19099
|
-
|
|
19100
|
-
|
|
19101
|
-
|
|
19102
|
-
|
|
19103
|
-
|
|
19104
|
-
|
|
19105
|
-
}
|
|
19106
|
-
) : /* @__PURE__ */ jsx(
|
|
19107
|
-
Button2,
|
|
19108
|
-
{
|
|
19109
|
-
onClick: primaryButton.onClick,
|
|
19110
|
-
variant: primaryButton.variant,
|
|
19111
|
-
color: primaryButton.color ?? void 0,
|
|
19112
|
-
children: primaryButton.text
|
|
19113
|
-
}
|
|
19114
|
-
)),
|
|
19115
|
-
secondaryButton && (secondaryButton.href ? /* @__PURE__ */ jsx(
|
|
19116
|
-
Button2,
|
|
19117
|
-
{
|
|
19118
|
-
href: secondaryButton.href,
|
|
19119
|
-
variant: secondaryButton.variant,
|
|
19120
|
-
color: secondaryButton.color ?? void 0,
|
|
19121
|
-
children: secondaryButton.text
|
|
19122
|
-
}
|
|
19123
|
-
) : /* @__PURE__ */ jsx(
|
|
19124
|
-
Button2,
|
|
19201
|
+
const resolvedSplit = resolveHeroBannerSupportingImageSplit(split);
|
|
19202
|
+
const textSpanClassName = HERO_BANNER_SUPPORTING_IMAGE_COLUMN_SPANS[resolvedSplit.left];
|
|
19203
|
+
const imageSpanClassName = HERO_BANNER_SUPPORTING_IMAGE_COLUMN_SPANS[resolvedSplit.right];
|
|
19204
|
+
const imageStart = `${resolvedSplit.left / 12 * 100}%`;
|
|
19205
|
+
const contentMaxWidth = `${Math.min(56, resolvedSplit.left / 8 * 42)}rem`;
|
|
19206
|
+
return /* @__PURE__ */ jsx("div", { className: heroBannerVariants2({ variant }), children: /* @__PURE__ */ jsxs("div", { className: "mx-auto max-w-7xl lg:grid lg:grid-cols-12 lg:gap-x-8 lg:px-8", children: [
|
|
19207
|
+
/* @__PURE__ */ jsx(
|
|
19208
|
+
"div",
|
|
19209
|
+
{
|
|
19210
|
+
className: cn("px-6 pt-10 pb-24 sm:pb-32 lg:px-0 lg:pt-24 lg:pb-28", textSpanClassName),
|
|
19211
|
+
children: /* @__PURE__ */ jsxs(
|
|
19212
|
+
"div",
|
|
19125
19213
|
{
|
|
19126
|
-
|
|
19127
|
-
|
|
19128
|
-
|
|
19129
|
-
|
|
19214
|
+
className: "mx-auto max-w-2xl lg:mx-0 lg:max-w-[var(--hero-copy-max-width)]",
|
|
19215
|
+
style: {
|
|
19216
|
+
"--hero-copy-max-width": contentMaxWidth
|
|
19217
|
+
},
|
|
19218
|
+
children: [
|
|
19219
|
+
heading && /* @__PURE__ */ jsx("h1", { className: "mt-24 text-4xl font-semibold tracking-tight text-balance sm:mt-10 sm:text-6xl", children: heading }),
|
|
19220
|
+
subtitle && /* @__PURE__ */ jsx("p", { className: "mt-6 text-lg leading-8 text-pretty", children: subtitle }),
|
|
19221
|
+
(primaryButton || secondaryButton) && /* @__PURE__ */ jsxs("div", { className: "mt-10 flex flex-wrap items-center gap-x-6 gap-y-4", children: [
|
|
19222
|
+
primaryButton && (primaryButton.href ? /* @__PURE__ */ jsx(
|
|
19223
|
+
Button2,
|
|
19224
|
+
{
|
|
19225
|
+
href: primaryButton.href,
|
|
19226
|
+
variant: primaryButton.variant,
|
|
19227
|
+
color: primaryButton.color ?? void 0,
|
|
19228
|
+
children: primaryButton.text
|
|
19229
|
+
}
|
|
19230
|
+
) : /* @__PURE__ */ jsx(
|
|
19231
|
+
Button2,
|
|
19232
|
+
{
|
|
19233
|
+
onClick: primaryButton.onClick,
|
|
19234
|
+
variant: primaryButton.variant,
|
|
19235
|
+
color: primaryButton.color ?? void 0,
|
|
19236
|
+
children: primaryButton.text
|
|
19237
|
+
}
|
|
19238
|
+
)),
|
|
19239
|
+
secondaryButton && (secondaryButton.href ? /* @__PURE__ */ jsx(
|
|
19240
|
+
Button2,
|
|
19241
|
+
{
|
|
19242
|
+
href: secondaryButton.href,
|
|
19243
|
+
variant: secondaryButton.variant,
|
|
19244
|
+
color: secondaryButton.color ?? void 0,
|
|
19245
|
+
children: secondaryButton.text
|
|
19246
|
+
}
|
|
19247
|
+
) : /* @__PURE__ */ jsx(
|
|
19248
|
+
Button2,
|
|
19249
|
+
{
|
|
19250
|
+
onClick: secondaryButton.onClick,
|
|
19251
|
+
variant: secondaryButton.variant,
|
|
19252
|
+
color: secondaryButton.color ?? void 0,
|
|
19253
|
+
children: secondaryButton.text
|
|
19254
|
+
}
|
|
19255
|
+
))
|
|
19256
|
+
] })
|
|
19257
|
+
]
|
|
19130
19258
|
}
|
|
19131
|
-
)
|
|
19132
|
-
|
|
19133
|
-
|
|
19134
|
-
/* @__PURE__ */ jsx(
|
|
19135
|
-
|
|
19259
|
+
)
|
|
19260
|
+
}
|
|
19261
|
+
),
|
|
19262
|
+
/* @__PURE__ */ jsx(
|
|
19263
|
+
"div",
|
|
19136
19264
|
{
|
|
19137
|
-
alt: imgAlt,
|
|
19138
|
-
src: imgSrc || "/placeholder.svg",
|
|
19139
|
-
width: 800,
|
|
19140
|
-
height: 800,
|
|
19141
19265
|
className: cn(
|
|
19142
|
-
"
|
|
19143
|
-
|
|
19266
|
+
"relative lg:-mr-8 xl:absolute xl:inset-y-0 xl:right-0 xl:left-[var(--hero-image-start)] xl:mr-0",
|
|
19267
|
+
imageSpanClassName
|
|
19268
|
+
),
|
|
19269
|
+
style: {
|
|
19270
|
+
"--hero-image-start": imageStart
|
|
19271
|
+
},
|
|
19272
|
+
children: /* @__PURE__ */ jsx(
|
|
19273
|
+
Image2,
|
|
19274
|
+
{
|
|
19275
|
+
alt: imgAlt,
|
|
19276
|
+
src: imgSrc || "/placeholder.svg",
|
|
19277
|
+
width: 800,
|
|
19278
|
+
height: 800,
|
|
19279
|
+
className: cn(
|
|
19280
|
+
"aspect-[3/2] w-full object-cover lg:absolute lg:inset-0 lg:aspect-auto lg:h-full",
|
|
19281
|
+
imgBgcolor
|
|
19282
|
+
)
|
|
19283
|
+
}
|
|
19144
19284
|
)
|
|
19145
19285
|
}
|
|
19146
|
-
)
|
|
19286
|
+
)
|
|
19147
19287
|
] }) });
|
|
19148
19288
|
}
|
|
19149
19289
|
function HoverCard({ ...props }) {
|
|
@@ -33122,7 +33262,7 @@ var Tracker = React5__default.forwardRef(
|
|
|
33122
33262
|
}
|
|
33123
33263
|
);
|
|
33124
33264
|
Tracker.displayName = "Tracker";
|
|
33125
|
-
var
|
|
33265
|
+
var buttonVariants5 = cva(
|
|
33126
33266
|
"inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-sm text-sm font-medium transition-all disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4 shrink-0 [&_svg]:shrink-0 outline-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive",
|
|
33127
33267
|
{
|
|
33128
33268
|
variants: {
|
|
@@ -33159,7 +33299,7 @@ function Button7({
|
|
|
33159
33299
|
Comp,
|
|
33160
33300
|
{
|
|
33161
33301
|
"data-slot": "button",
|
|
33162
|
-
className: cn(
|
|
33302
|
+
className: cn(buttonVariants5({ variant, size, className })),
|
|
33163
33303
|
...props
|
|
33164
33304
|
}
|
|
33165
33305
|
);
|
|
@@ -35568,6 +35708,23 @@ function Input2({ className, type, ...props }) {
|
|
|
35568
35708
|
}
|
|
35569
35709
|
);
|
|
35570
35710
|
}
|
|
35711
|
+
var sanitizePreviewUrl = (value) => {
|
|
35712
|
+
if (!value) return void 0;
|
|
35713
|
+
const trimmed = value.trim();
|
|
35714
|
+
if (!trimmed) return void 0;
|
|
35715
|
+
const baseOrigin = typeof window !== "undefined" ? window.location.origin : "http://localhost";
|
|
35716
|
+
const hasExplicitScheme = /^[a-zA-Z][a-zA-Z\d+.-]*:/.test(trimmed);
|
|
35717
|
+
const isRelativeUrl = trimmed.startsWith("/") || trimmed.startsWith("./") || trimmed.startsWith("../") || trimmed.startsWith("?") || trimmed.startsWith("#");
|
|
35718
|
+
const isBareHostname = !hasExplicitScheme && !isRelativeUrl && /^[a-zA-Z0-9-]+(\.[a-zA-Z0-9-]+)+([/:?#].*)?$/.test(trimmed);
|
|
35719
|
+
try {
|
|
35720
|
+
const parsed = hasExplicitScheme ? new URL(trimmed) : isBareHostname ? new URL(`https://${trimmed}`) : new URL(trimmed, baseOrigin);
|
|
35721
|
+
if (parsed.protocol === "http:" || parsed.protocol === "https:") {
|
|
35722
|
+
return parsed.toString();
|
|
35723
|
+
}
|
|
35724
|
+
} catch {
|
|
35725
|
+
}
|
|
35726
|
+
return void 0;
|
|
35727
|
+
};
|
|
35571
35728
|
var WebPreviewContext = createContext(null);
|
|
35572
35729
|
var useWebPreview = () => {
|
|
35573
35730
|
const context = useContext(WebPreviewContext);
|
|
@@ -35583,11 +35740,21 @@ var WebPreview = ({
|
|
|
35583
35740
|
onUrlChange,
|
|
35584
35741
|
...props
|
|
35585
35742
|
}) => {
|
|
35586
|
-
const
|
|
35743
|
+
const initialUrl = sanitizePreviewUrl(defaultUrl) ?? "";
|
|
35744
|
+
const [url, setUrl] = useState(initialUrl);
|
|
35587
35745
|
const [consoleOpen, setConsoleOpen] = useState(false);
|
|
35588
35746
|
const handleUrlChange = (newUrl) => {
|
|
35589
|
-
|
|
35590
|
-
|
|
35747
|
+
if (!newUrl.trim()) {
|
|
35748
|
+
setUrl("");
|
|
35749
|
+
onUrlChange?.("");
|
|
35750
|
+
return;
|
|
35751
|
+
}
|
|
35752
|
+
const safeUrl = sanitizePreviewUrl(newUrl);
|
|
35753
|
+
if (safeUrl === void 0) {
|
|
35754
|
+
return;
|
|
35755
|
+
}
|
|
35756
|
+
setUrl(safeUrl);
|
|
35757
|
+
onUrlChange?.(safeUrl);
|
|
35591
35758
|
};
|
|
35592
35759
|
const contextValue = {
|
|
35593
35760
|
url,
|
|
@@ -35630,20 +35797,30 @@ var WebPreviewUrl = ({ value, onChange, onKeyDown, ...props }) => {
|
|
|
35630
35797
|
}
|
|
35631
35798
|
);
|
|
35632
35799
|
};
|
|
35633
|
-
var WebPreviewBody = ({
|
|
35800
|
+
var WebPreviewBody = ({
|
|
35801
|
+
className,
|
|
35802
|
+
loading,
|
|
35803
|
+
loadingFallback,
|
|
35804
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
35805
|
+
sandbox: _sandbox,
|
|
35806
|
+
src,
|
|
35807
|
+
...props
|
|
35808
|
+
}) => {
|
|
35634
35809
|
const { url } = useWebPreview();
|
|
35810
|
+
const safeSrc = sanitizePreviewUrl(src ?? url);
|
|
35811
|
+
const resolvedLoadingFallback = loadingFallback ?? loading;
|
|
35635
35812
|
return /* @__PURE__ */ jsxs("div", { className: "flex-1", children: [
|
|
35636
35813
|
/* @__PURE__ */ jsx(
|
|
35637
35814
|
"iframe",
|
|
35638
35815
|
{
|
|
35639
35816
|
className: cn("size-full", className),
|
|
35640
35817
|
sandbox: "allow-scripts allow-same-origin allow-forms allow-popups allow-presentation",
|
|
35641
|
-
src:
|
|
35818
|
+
src: safeSrc,
|
|
35642
35819
|
title: "Preview",
|
|
35643
35820
|
...props
|
|
35644
35821
|
}
|
|
35645
35822
|
),
|
|
35646
|
-
|
|
35823
|
+
resolvedLoadingFallback
|
|
35647
35824
|
] });
|
|
35648
35825
|
};
|
|
35649
35826
|
var useIsomorphicLayoutEffect2 = typeof window !== "undefined" ? useLayoutEffect : useEffect;
|
|
@@ -35860,6 +36037,6 @@ var languages = [
|
|
|
35860
36037
|
"html"
|
|
35861
36038
|
];
|
|
35862
36039
|
|
|
35863
|
-
export { Accordion, AccordionContent, AccordionItem, AccordionTrigger, Action2 as Action, Actions, Alert, AlertDescription, AlertDialog, AlertDialogAction, AlertDialogCancel, AlertDialogContent, AlertDialogDescription, AlertDialogFooter, AlertDialogHeader, AlertDialogOverlay, AlertDialogPortal, AlertDialogTitle, AlertDialogTrigger, AlertTitle, AreaChart, Artifact, ArtifactAction, ArtifactActions, ArtifactContent, ArtifactDescription, ArtifactHeader, ArtifactTitle, AspectRatio, AuthLayout, AvailableChartColors, Avatar, AvatarFallback, AvatarImage, Badge, BadgeButton, BarChart, BarList, BaseColorSwatches, Branch, BranchMessages, BranchNext, BranchPage, BranchPrevious, BranchSelector, Breadcrumb, BreadcrumbEllipsis, BreadcrumbItem, BreadcrumbLink, BreadcrumbList, BreadcrumbPage, BreadcrumbSeparator, Breadcrumbs, Button2 as Button, Calendar, CalendarDayButton, Card, CardAction, CardContent, CardDescription, CardFooter, CardHeader, CardTitle, Carousel, CarouselContent, CarouselItem, CarouselNext, CarouselPrevious, CategoryBar, ChainOfThought, ChainOfThoughtContent, ChainOfThoughtHeader, ChainOfThoughtImage, ChainOfThoughtSearchResult, ChainOfThoughtSearchResults, ChainOfThoughtStep, ChartContainer, ChartLegend3 as ChartLegend, ChartLegendContent, ChartStyle, ChartTooltip3 as ChartTooltip, ChartTooltipContent, Checkbox, CheckboxSmall, Code, CodeBlock, CodeBlockCopyButton, CodeDemo, CodeHighlight, Collapsible, CollapsibleContent2 as CollapsibleContent, CollapsibleTrigger2 as CollapsibleTrigger, ColorCard, ColorPairingTool, ColorSwatches, ColourScale, ComboChart, Command, CommandDialog, CommandEmpty, CommandGroup, CommandInput, CommandItem, CommandList, CommandSeparator, CommandShortcut, Context, ContextCacheUsage, ContextContent, ContextContentBody, ContextContentFooter, ContextContentHeader, ContextInputUsage, ContextMenu, ContextMenuCheckboxItem, ContextMenuContent, ContextMenuGroup, ContextMenuItem, ContextMenuLabel, ContextMenuPortal, ContextMenuRadioGroup, ContextMenuRadioItem, ContextMenuSeparator, ContextMenuShortcut, ContextMenuSub, ContextMenuSubContent, ContextMenuSubTrigger, ContextMenuTrigger, ContextOutputUsage, ContextReasoningUsage, ContextTrigger, Conversation, ConversationContent, ConversationEmptyState, ConversationScrollButton, DataTable, DataTableColumnHeader, DataTableFacetedFilter, DataTablePagination, DataTableToolbar, DataTableViewOptions, Description4 as Description, DescriptionDetails, DescriptionList, DescriptionTerm, Dialog, DialogClose, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogOverlay, DialogPortal, DialogTitle, DialogTrigger, DonutChart, Drawer, DrawerClose, DrawerContent, DrawerDescription, DrawerFooter, DrawerHeader, DrawerOverlay, DrawerPortal, DrawerTitle, DrawerTrigger, DropdownMenu, DropdownMenuCheckboxItem, DropdownMenuContent, DropdownMenuGroup, DropdownMenuItem, DropdownMenuLabel, DropdownMenuPortal, DropdownMenuRadioGroup, DropdownMenuRadioItem, DropdownMenuSeparator, DropdownMenuShortcut, DropdownMenuSub, DropdownMenuSubContent, DropdownMenuSubTrigger, DropdownMenuTrigger, DynamicFavicon, ErrorMessage, ExpandableSearch, ExpandableSearchField, Field2 as Field, FieldGroup, FieldLabel, Fieldset2 as Fieldset, Footer, FooterAcknowledgement, FooterLegalLinks, FooterSmallPrint, FooterSocialLink, Form, FormControl, FormDescription, FormField, FormItem, FormLabel, FormMessage, FormatToggle, GenerateInterpolatedColors, Header2 as Header, Heading, HeroBannerSupportingImage, HoverCard, HoverCardContent, HoverCardTrigger, Icons, Image4 as Image, InlineCitation, InlineCitationCard, InlineCitationCardBody, InlineCitationCardTrigger, InlineCitationCarousel, InlineCitationCarouselContent, InlineCitationCarouselHeader, InlineCitationCarouselIndex, InlineCitationCarouselItem, InlineCitationSource, InlineCitationText, Input, InputOTP, InputOTPGroup, InputOTPSeparator, InputOTPSlot, Label5 as Label, Legend6 as Legend, LineChart, Link, _List as List, Listbox2 as Listbox, ListboxDescription, ListboxLabel, ListboxOption2 as ListboxOption, Loader, Loading, Logo, MainNavigation, Masthead, MegaMenu, Menubar, MenubarCheckboxItem, MenubarContent, MenubarGroup, MenubarItem, MenubarLabel, MenubarMenu, MenubarPortal, MenubarRadioGroup, MenubarRadioItem, MenubarSeparator, MenubarShortcut, MenubarSub, MenubarSubContent, MenubarSubTrigger, MenubarTrigger, Message, MessageContent, MobileHeader, MobileSearch, MultiLevelPushMenu, NSWCard, NSWCardArrow, NSWCardDescription, NSWCardIcon, NSWCardImg, NSWCardTitle, Navbar, NavbarDivider, NavbarItem, NavbarLabel, NavbarSection, NavbarSpacer, Navigation, NavigationMenu, NavigationMenuContent, NavigationMenuIndicator, NavigationMenuItem, NavigationMenuLink, NavigationMenuList, NavigationMenuMainNavigation, NavigationMenuTrigger, NavigationMenuViewport, NotFound, OpenIn, OpenInChatGPT, OpenInClaude, OpenInContent, OpenInScira, OpenInT3, OpenInTrigger, OpenInv0, PageHeading, Pagination, PaginationGap, PaginationList, PaginationNext, PaginationPage, PaginationPrevious, Popover, PopoverAnchor, PopoverContent, PopoverTrigger, PreWithCopy, PrevNextLinks, PrevNextLinksPageLink, Progress, ProgressBar, ProgressCircle, PromptInput, PromptInputActionAddAttachments, PromptInputActionMenu, PromptInputActionMenuContent, PromptInputActionMenuItem, PromptInputActionMenuTrigger, PromptInputAttachment, PromptInputAttachments, PromptInputBody, PromptInputButton, PromptInputSubmit, PromptInputTextarea, PromptInputToolbar, PromptInputTools, Prose, RadioGroup2 as RadioGroup, RadioGroupItem, Reasoning, ReasoningContent, ReasoningTrigger, ResizableHandle, ResizablePanel, ResizablePanelGroup, Response, ScrollArea, ScrollBar, Select, SelectContent, SelectGroup, SelectItem, SelectLabel, SelectScrollDownButton, SelectScrollUpButton, SelectSeparator, SelectTrigger, SelectValue, Separator4 as Separator, Sheet, SheetClose, SheetContent, SheetDescription, SheetFooter, SheetHeader, SheetTitle, SheetTrigger, Sidebar, SidebarContent, SidebarFooter, SidebarGroup, SidebarGroupAction, SidebarGroupContent, SidebarGroupLabel, SidebarHeader, SidebarInput, SidebarInset, SidebarLink, SidebarMenu, SidebarMenuAction, SidebarMenuBadge, SidebarMenuButton, SidebarMenuItem, SidebarMenuSkeleton, SidebarMenuSub, SidebarMenuSubButton, SidebarMenuSubItem, SidebarNavigation, SidebarProvider, SidebarRail, SidebarSeparator, SidebarTrigger, SiteSearch, Skeleton, Slider, Social, Source, Sources, SourcesContent, SourcesTrigger, SparkAreaChart, SparkBarChart, SparkLineChart, Spinner, StepIndicator, StepNavigation, Strong, SubmitButton, Suggestion, Suggestions, Switch2 as Switch, SwitchField, SwitchGroup, TabNavigation, TabNavigationLink, Table, TableBody, TableCaption, TableCell, TableFooter, TableHead, TableHeader, TableOfContents, TableRow, Tabs2 as Tabs, TabsContent, TabsList, TabsTrigger, Task, TaskContent, TaskItem, TaskItemFile, TaskTrigger, Text, TextLink, Textarea, ThemeColorPalette, ThemeProvider, ThemeSelector, ThemeSwitcher, Toaster, TocContext, TocProvider, Toggle, ToggleGroup, ToggleGroupItem, Tool, ToolContent, ToolHeader, ToolInput, ToolOutput, Tooltip5 as Tooltip, TooltipContent, TooltipProvider, TooltipTrigger, TopLevel, TouchTarget, Tracker, Tooltip3 as TremorTooltip, ViewToggle, WebPreview, WebPreviewBody, WebPreviewNavigation, WebPreviewUrl, Wrapper, aboriginal, addStartStopToColorArray, allPalettes, badgeVariants, brand, buttonVariants, camelCase, chartColors, cn, colorDataArray, colorThemes, colors, constructCategoryColors, createColorArray, createColorData, createFormStore, darkenColor, diverging, domToSimple, focusInput, focusRing, generateColorThemes, generateDataVisColors, getColorClassName, getColorValue, getHeadings, getNodeText, getSurroundingColors, getYAxisDomain, hasErrorInput, hasOnlyOneValueForKey, humaniseVariant, interpolateColors, isLightColor, kebabCase, languages, lightenColor, navigationMenuTriggerStyle, oklchConverter, progressBarVariants, renderColorOutput, renderColorOutputToDTFM, semantic, sequential, shades, themeIndices, themeTokens, toggleVariants, truncate, useActiveSectionObserver, useDisableToc, useFormField, useIsMobile, useOnWindowResize, usePageHeadings, usePromptInputAttachments, useSelectorHeight, useSidebar, useStickyOffset, useToc };
|
|
36040
|
+
export { Accordion, AccordionContent, AccordionItem, AccordionTrigger, Action2 as Action, Actions, Alert, AlertDescription, AlertDialog, AlertDialogAction, AlertDialogCancel, AlertDialogContent, AlertDialogDescription, AlertDialogFooter, AlertDialogHeader, AlertDialogOverlay, AlertDialogPortal, AlertDialogTitle, AlertDialogTrigger, AlertTitle, AreaChart, Artifact, ArtifactAction, ArtifactActions, ArtifactContent, ArtifactDescription, ArtifactHeader, ArtifactTitle, AspectRatio, AuthLayout, AvailableChartColors, Avatar, AvatarFallback, AvatarImage, Badge, BadgeButton, BarChart, BarList, BaseColorSwatches, Branch, BranchMessages, BranchNext, BranchPage, BranchPrevious, BranchSelector, Breadcrumb, BreadcrumbEllipsis, BreadcrumbItem, BreadcrumbLink, BreadcrumbList, BreadcrumbPage, BreadcrumbSeparator, Breadcrumbs, Button2 as Button, Calendar, CalendarDayButton, Card, CardAction, CardContent, CardDescription, CardFooter, CardHeader, CardTitle, Carousel, CarouselContent, CarouselItem, CarouselNext, CarouselPrevious, CategoryBar, ChainOfThought, ChainOfThoughtContent, ChainOfThoughtHeader, ChainOfThoughtImage, ChainOfThoughtSearchResult, ChainOfThoughtSearchResults, ChainOfThoughtStep, ChartContainer, ChartLegend3 as ChartLegend, ChartLegendContent, ChartStyle, ChartTooltip3 as ChartTooltip, ChartTooltipContent, Checkbox, CheckboxSmall, Code, CodeBlock, CodeBlockCopyButton, CodeDemo, CodeHighlight, Collapsible, CollapsibleContent2 as CollapsibleContent, CollapsibleTrigger2 as CollapsibleTrigger, ColorCard, ColorPairingTool, ColorSwatches, ColourScale, ComboChart, Command, CommandDialog, CommandEmpty, CommandGroup, CommandInput, CommandItem, CommandList, CommandSeparator, CommandShortcut, Context, ContextCacheUsage, ContextContent, ContextContentBody, ContextContentFooter, ContextContentHeader, ContextInputUsage, ContextMenu, ContextMenuCheckboxItem, ContextMenuContent, ContextMenuGroup, ContextMenuItem, ContextMenuLabel, ContextMenuPortal, ContextMenuRadioGroup, ContextMenuRadioItem, ContextMenuSeparator, ContextMenuShortcut, ContextMenuSub, ContextMenuSubContent, ContextMenuSubTrigger, ContextMenuTrigger, ContextOutputUsage, ContextReasoningUsage, ContextTrigger, Conversation, ConversationContent, ConversationEmptyState, ConversationScrollButton, DataTable, DataTableColumnHeader, DataTableFacetedFilter, DataTablePagination, DataTableToolbar, DataTableViewOptions, Description4 as Description, DescriptionDetails, DescriptionList, DescriptionTerm, Dialog, DialogClose, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogOverlay, DialogPortal, DialogTitle, DialogTrigger, DonutChart, Drawer, DrawerClose, DrawerContent, DrawerDescription, DrawerFooter, DrawerHeader, DrawerOverlay, DrawerPortal, DrawerTitle, DrawerTrigger, DropdownMenu, DropdownMenuCheckboxItem, DropdownMenuContent, DropdownMenuGroup, DropdownMenuItem, DropdownMenuLabel, DropdownMenuPortal, DropdownMenuRadioGroup, DropdownMenuRadioItem, DropdownMenuSeparator, DropdownMenuShortcut, DropdownMenuSub, DropdownMenuSubContent, DropdownMenuSubTrigger, DropdownMenuTrigger, DynamicFavicon, ErrorMessage, ExpandableSearch, ExpandableSearchField, Field2 as Field, FieldGroup, FieldLabel, Fieldset2 as Fieldset, Footer, FooterAcknowledgement, FooterLegalLinks, FooterSmallPrint, FooterSocialLink, Form, FormControl, FormDescription, FormField, FormItem, FormLabel, FormMessage, FormatToggle, GenerateInterpolatedColors, Header2 as Header, Heading, HeroBannerSimple, HeroBannerSupportingImage, HoverCard, HoverCardContent, HoverCardTrigger, Icons, Image4 as Image, InlineCitation, InlineCitationCard, InlineCitationCardBody, InlineCitationCardTrigger, InlineCitationCarousel, InlineCitationCarouselContent, InlineCitationCarouselHeader, InlineCitationCarouselIndex, InlineCitationCarouselItem, InlineCitationSource, InlineCitationText, Input, InputOTP, InputOTPGroup, InputOTPSeparator, InputOTPSlot, Label5 as Label, Legend6 as Legend, LineChart, Link, _List as List, Listbox2 as Listbox, ListboxDescription, ListboxLabel, ListboxOption2 as ListboxOption, Loader, Loading, Logo, MainNavigation, Masthead, MegaMenu, Menubar, MenubarCheckboxItem, MenubarContent, MenubarGroup, MenubarItem, MenubarLabel, MenubarMenu, MenubarPortal, MenubarRadioGroup, MenubarRadioItem, MenubarSeparator, MenubarShortcut, MenubarSub, MenubarSubContent, MenubarSubTrigger, MenubarTrigger, Message, MessageContent, MobileHeader, MobileSearch, MultiLevelPushMenu, NSWCard, NSWCardArrow, NSWCardDescription, NSWCardIcon, NSWCardImg, NSWCardTitle, Navbar, NavbarDivider, NavbarItem, NavbarLabel, NavbarSection, NavbarSpacer, Navigation, NavigationMenu, NavigationMenuContent, NavigationMenuIndicator, NavigationMenuItem, NavigationMenuLink, NavigationMenuList, NavigationMenuMainNavigation, NavigationMenuTrigger, NavigationMenuViewport, NotFound, OpenIn, OpenInChatGPT, OpenInClaude, OpenInContent, OpenInScira, OpenInT3, OpenInTrigger, OpenInv0, PageHeading, Pagination, PaginationGap, PaginationList, PaginationNext, PaginationPage, PaginationPrevious, Popover, PopoverAnchor, PopoverContent, PopoverTrigger, PreWithCopy, PrevNextLinks, PrevNextLinksPageLink, Progress, ProgressBar, ProgressCircle, PromptInput, PromptInputActionAddAttachments, PromptInputActionMenu, PromptInputActionMenuContent, PromptInputActionMenuItem, PromptInputActionMenuTrigger, PromptInputAttachment, PromptInputAttachments, PromptInputBody, PromptInputButton, PromptInputSubmit, PromptInputTextarea, PromptInputToolbar, PromptInputTools, Prose, RadioGroup2 as RadioGroup, RadioGroupItem, Reasoning, ReasoningContent, ReasoningTrigger, ResizableHandle, ResizablePanel, ResizablePanelGroup, Response, ScrollArea, ScrollBar, Select, SelectContent, SelectGroup, SelectItem, SelectLabel, SelectScrollDownButton, SelectScrollUpButton, SelectSeparator, SelectTrigger, SelectValue, Separator4 as Separator, Sheet, SheetClose, SheetContent, SheetDescription, SheetFooter, SheetHeader, SheetTitle, SheetTrigger, Sidebar, SidebarContent, SidebarFooter, SidebarGroup, SidebarGroupAction, SidebarGroupContent, SidebarGroupLabel, SidebarHeader, SidebarInput, SidebarInset, SidebarLink, SidebarMenu, SidebarMenuAction, SidebarMenuBadge, SidebarMenuButton, SidebarMenuItem, SidebarMenuSkeleton, SidebarMenuSub, SidebarMenuSubButton, SidebarMenuSubItem, SidebarNavigation, SidebarProvider, SidebarRail, SidebarSeparator, SidebarTrigger, SiteSearch, Skeleton, Slider, Social, Source, Sources, SourcesContent, SourcesTrigger, SparkAreaChart, SparkBarChart, SparkLineChart, Spinner, StepIndicator, StepNavigation, Strong, SubmitButton, Suggestion, Suggestions, Switch2 as Switch, SwitchField, SwitchGroup, TabNavigation, TabNavigationLink, Table, TableBody, TableCaption, TableCell, TableFooter, TableHead, TableHeader, TableOfContents, TableRow, Tabs2 as Tabs, TabsContent, TabsList, TabsTrigger, Task, TaskContent, TaskItem, TaskItemFile, TaskTrigger, Text, TextLink, Textarea, ThemeColorPalette, ThemeProvider, ThemeSelector, ThemeSwitcher, Toaster, TocContext, TocProvider, Toggle, ToggleGroup, ToggleGroupItem, Tool, ToolContent, ToolHeader, ToolInput, ToolOutput, Tooltip5 as Tooltip, TooltipContent, TooltipProvider, TooltipTrigger, TopLevel, TouchTarget, Tracker, Tooltip3 as TremorTooltip, ViewToggle, WebPreview, WebPreviewBody, WebPreviewNavigation, WebPreviewUrl, Wrapper, aboriginal, addStartStopToColorArray, allPalettes, badgeVariants, brand, buttonVariants, camelCase, chartColors, cn, colorDataArray, colorThemes, colors, constructCategoryColors, createColorArray, createColorData, createFormStore, darkenColor, diverging, domToSimple, focusInput, focusRing, generateColorThemes, generateDataVisColors, getColorClassName, getColorValue, getHeadings, getNodeText, getSurroundingColors, getYAxisDomain, hasErrorInput, hasOnlyOneValueForKey, humaniseVariant, interpolateColors, isLightColor, kebabCase, languages, lightenColor, navigationMenuTriggerStyle, oklchConverter, progressBarVariants, renderColorOutput, renderColorOutputToDTFM, semantic, sequential, shades, themeIndices, themeTokens, toggleVariants, truncate, useActiveSectionObserver, useDisableToc, useFormField, useIsMobile, useOnWindowResize, usePageHeadings, usePromptInputAttachments, useSelectorHeight, useSidebar, useStickyOffset, useToc };
|
|
35864
36041
|
//# sourceMappingURL=index.js.map
|
|
35865
36042
|
//# sourceMappingURL=index.js.map
|