@nswds/app 1.102.0 → 1.103.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/index.js CHANGED
@@ -1,6 +1,6 @@
1
1
  import * as AccordionPrimitive from '@radix-ui/react-accordion';
2
2
  import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
3
- import clsx12, { clsx } from 'clsx';
3
+ import clsx13, { clsx } from 'clsx';
4
4
  import { twMerge } from 'tailwind-merge';
5
5
  import { cva } from 'class-variance-authority';
6
6
  import * as AlertDialogPrimitive from '@radix-ui/react-alert-dialog';
@@ -4499,7 +4499,7 @@ var Button2 = forwardRef(function Button3({ className, variant, color: color2, s
4499
4499
  {
4500
4500
  "data-variant": variant,
4501
4501
  ...props,
4502
- className: clsx12(classes, "cursor-pointer"),
4502
+ className: clsx13(classes, "cursor-pointer"),
4503
4503
  ref,
4504
4504
  children: /* @__PURE__ */ jsx(TouchTarget, { children })
4505
4505
  }
@@ -5958,7 +5958,7 @@ var BadgeButton = forwardRef(function BadgeButton2({
5958
5958
  children,
5959
5959
  ...props
5960
5960
  }, ref) {
5961
- const classes = clsx12(className, focusOutline[color2], [
5961
+ const classes = clsx13(className, focusOutline[color2], [
5962
5962
  // Base
5963
5963
  "group relative inline-flex rounded-sm",
5964
5964
  // Focus
@@ -5980,7 +5980,7 @@ var BadgeButton = forwardRef(function BadgeButton2({
5980
5980
  {
5981
5981
  "data-variant": variant,
5982
5982
  ...props,
5983
- className: clsx12(classes, "cursor-pointer"),
5983
+ className: clsx13(classes, "cursor-pointer"),
5984
5984
  ref,
5985
5985
  children: /* @__PURE__ */ jsx(TouchTarget, { children: /* @__PURE__ */ jsx(Badge, { variant, color: color2, size, children }) })
5986
5986
  }
@@ -15223,7 +15223,7 @@ function Heading({
15223
15223
  ...props,
15224
15224
  id: computedId,
15225
15225
  "data-anchor": true,
15226
- className: clsx12(
15226
+ className: clsx13(
15227
15227
  className,
15228
15228
  trimClasses[trim],
15229
15229
  "m-0",
@@ -16303,6 +16303,877 @@ function ColorPairingTool({
16303
16303
  const normalizedVisibleFormats = [...new Set(visibleFormats)];
16304
16304
  return /* @__PURE__ */ jsx(Suspense, { fallback: /* @__PURE__ */ jsx(ColorPairingToolLoading, {}), children: /* @__PURE__ */ jsx(ColorPairingToolContent, { visibleFormats: normalizedVisibleFormats }) });
16305
16305
  }
16306
+ function Text({ className, trim = "normal", size = 2, label = false, ...props }) {
16307
+ const textSizeClasses = {
16308
+ 1: "text-[length:var(--font-size-1)] leading-[var(--line-height-28)] tracking-[var(--letter-spacing-0)]",
16309
+ 2: "text-[length:var(--font-size-2)] leading-[var(--line-height-24)] tracking-[var(--letter-spacing-0)]",
16310
+ 3: "text-[length:var(--font-size-3)] leading-[var(--line-height-20)] tracking-[var(--letter-spacing-0)]",
16311
+ 4: "text-[length:var(--font-size-4)] leading-[var(--line-height-20)] tracking-[var(--letter-spacing-0)]"
16312
+ };
16313
+ const labelSizeClasses = {
16314
+ 1: "text-[length:var(--font-size-1)] leading-[var(--line-height-24)] tracking-[var(--letter-spacing-0)]",
16315
+ 2: "text-[length:var(--font-size-2)] leading-[var(--line-height-20)] tracking-[var(--letter-spacing-0)]",
16316
+ 3: "text-[length:var(--font-size-3)] leading-[var(--line-height-16)] tracking-[var(--letter-spacing-0)]",
16317
+ 4: "text-[length:var(--font-size-4)] leading-[var(--line-height-16)] tracking-[var(--letter-spacing-0)]"
16318
+ };
16319
+ const sizeClass = label ? labelSizeClasses[size] : textSizeClasses[size];
16320
+ const trimClasses = {
16321
+ normal: ["before:content-none after:content-none"],
16322
+ start: [
16323
+ 'before:content-[""] before:table after:content-none',
16324
+ "before:mb-[calc(var(--leading-trim-start,var(--default-leading-trim-start))-var(--line-height,calc(1em*var(--default-line-height)))/2)]"
16325
+ ],
16326
+ end: [
16327
+ 'before:content-none after:content-[""] after:table',
16328
+ "after:mt-[calc(var(--leading-trim-end,var(--default-leading-trim-end))-var(--line-height,calc(1em*var(--default-line-height)))/2)]"
16329
+ ],
16330
+ both: [
16331
+ 'before:content-[""] before:table after:content-[""] after:table',
16332
+ "before:mb-[calc(var(--leading-trim-start,var(--default-leading-trim-start))-var(--line-height,calc(1em*var(--default-line-height)))/2)]",
16333
+ "after:mt-[calc(var(--leading-trim-end,var(--default-leading-trim-end))-var(--line-height,calc(1em*var(--default-line-height)))/2)]"
16334
+ ]
16335
+ };
16336
+ return /* @__PURE__ */ jsx(
16337
+ "p",
16338
+ {
16339
+ "data-slot": "text",
16340
+ ...props,
16341
+ className: clsx13(className, trimClasses[trim], "text-grey-800 dark:text-grey-400", sizeClass)
16342
+ }
16343
+ );
16344
+ }
16345
+ function TextLink({ className, ...props }) {
16346
+ return /* @__PURE__ */ jsx(
16347
+ Link,
16348
+ {
16349
+ ...props,
16350
+ className: clsx13(
16351
+ className,
16352
+ "text-primary-800 underline decoration-primary-800/50 data-hover:decoration-primary-800 dark:text-white dark:decoration-white/50 dark:data-hover:decoration-white"
16353
+ )
16354
+ }
16355
+ );
16356
+ }
16357
+ function Strong({ className, ...props }) {
16358
+ return /* @__PURE__ */ jsx("strong", { ...props, className: clsx13(className, "font-medium text-grey-950 dark:text-white") });
16359
+ }
16360
+ function Code({ className, ...props }) {
16361
+ const hasLanguageClass = typeof className === "string" && className.includes("language-");
16362
+ return /* @__PURE__ */ jsx(
16363
+ "code",
16364
+ {
16365
+ ...props,
16366
+ className: clsx13(
16367
+ className,
16368
+ !hasLanguageClass && "language-plaintext",
16369
+ "text-sm sm:text-[0.8125rem]"
16370
+ )
16371
+ }
16372
+ );
16373
+ }
16374
+ var PREFERRED_BACKGROUND_TONES2 = [400, 600, 200, 800, 100, 50];
16375
+ var DEFAULT_VISIBLE_FORMATS2 = ["hex", "rgb", "hsl", "oklch"];
16376
+ var DEFAULT_INITIAL_BACKGROUND_TOKEN2 = "nsw-blue-800";
16377
+ var DEFAULT_INITIAL_PAIR_ID2 = "nsw-blue-800:nsw-blue-200";
16378
+ function getToneFromToken2(token) {
16379
+ if (!token) return null;
16380
+ const match = token.match(/-(\d+)$/);
16381
+ return match ? Number.parseInt(match[1], 10) : null;
16382
+ }
16383
+ function getFamilySwatchColor2(family, preferredTone = 600) {
16384
+ const exactMatch = family.colors.find((color2) => color2.tone === preferredTone);
16385
+ if (exactMatch) {
16386
+ return exactMatch.hex;
16387
+ }
16388
+ const closestMatch = [...family.colors].sort(
16389
+ (left, right) => Math.abs(left.tone - preferredTone) - Math.abs(right.tone - preferredTone)
16390
+ )[0];
16391
+ return closestMatch?.hex ?? "transparent";
16392
+ }
16393
+ function getFamilySelectorLabel2(family, themeCategory, selectionRole) {
16394
+ if (themeCategory !== "aboriginal") {
16395
+ return family.label;
16396
+ }
16397
+ const preferredTone = selectionRole === "primary colour" ? 800 : 600;
16398
+ return family.colors.find((color2) => color2.tone === preferredTone)?.name ?? family.label;
16399
+ }
16400
+ function getPairingColorDisplayName2(color2) {
16401
+ return color2.name ?? color2.token;
16402
+ }
16403
+ function isWhiteForegroundPair2(pair) {
16404
+ return pair.foreground.token === "white";
16405
+ }
16406
+ function getWhiteForegroundGuidance2(pair) {
16407
+ if (pair.passes.aaaText) {
16408
+ return "White is approved for headings, body copy, and calls to action on this background.";
16409
+ }
16410
+ if (pair.passes.aaaLarge) {
16411
+ return "Use white only for WCAG large text on this background, such as headings at 24px+ or bold text at 18.5px+. Keep sentence-case body copy at 16px+ and use a darker recommended foreground instead.";
16412
+ }
16413
+ return "Do not use white on this background. Choose one of the recommended foregrounds below instead.";
16414
+ }
16415
+ function getPreviewGuidance2(pair, isRecommended) {
16416
+ if (!isWhiteForegroundPair2(pair)) {
16417
+ return "Use only AAA-recommended combinations across your selected primary, accent, and grey families.";
16418
+ }
16419
+ if (isRecommended) {
16420
+ return "Use white text on dark colour only when it meets AAA for headings, body copy, and calls to action.";
16421
+ }
16422
+ return getWhiteForegroundGuidance2(pair);
16423
+ }
16424
+ function getReadableTextColor(tone) {
16425
+ return tone >= 600 ? "#ffffff" : "#002664";
16426
+ }
16427
+ function getPreferredPairForBackground2(pairs, preferredPairId) {
16428
+ if (preferredPairId) {
16429
+ const preferredPair = pairs.find((pair) => pair.id === preferredPairId);
16430
+ if (preferredPair) {
16431
+ return preferredPair;
16432
+ }
16433
+ }
16434
+ return pairs.find((pair) => !isWhiteForegroundPair2(pair)) ?? pairs[0] ?? null;
16435
+ }
16436
+ function getDefaultBackgroundToken2(context) {
16437
+ for (const tone of PREFERRED_BACKGROUND_TONES2) {
16438
+ for (const group of context.backgroundGroups) {
16439
+ const match = group.backgrounds.find(
16440
+ (background) => background.tone === tone && (context.pairsByBackground[background.token]?.length ?? 0) > 0
16441
+ );
16442
+ if (match) {
16443
+ return match.token;
16444
+ }
16445
+ }
16446
+ }
16447
+ for (const tone of PREFERRED_BACKGROUND_TONES2) {
16448
+ for (const group of context.backgroundGroups) {
16449
+ const match = group.backgrounds.find((background) => background.tone === tone);
16450
+ if (match) {
16451
+ return match.token;
16452
+ }
16453
+ }
16454
+ }
16455
+ return context.backgrounds[0]?.token ?? "";
16456
+ }
16457
+ function resolveBackgroundToken2(context, preferredToken, preferredTone) {
16458
+ if (preferredToken && context.backgrounds.some((background) => background.token === preferredToken)) {
16459
+ return preferredToken;
16460
+ }
16461
+ if (preferredTone !== null && preferredTone !== void 0) {
16462
+ for (const group of context.backgroundGroups) {
16463
+ const match = group.backgrounds.find((background) => background.tone === preferredTone);
16464
+ if (match) {
16465
+ return match.token;
16466
+ }
16467
+ }
16468
+ }
16469
+ return getDefaultBackgroundToken2(context);
16470
+ }
16471
+ function getInitialPairingState2(searchParams) {
16472
+ const paletteParam = searchParams.get("palette");
16473
+ const primaryParam = searchParams.get("primary");
16474
+ const accentParam = searchParams.get("accent");
16475
+ const pairParam = searchParams.get("pair");
16476
+ const backgroundParam = searchParams.get("background");
16477
+ const themeCategory = paletteParam === "brand" || paletteParam === "aboriginal" ? paletteParam : "brand";
16478
+ const context = getPairingContext(themeCategory, primaryParam, accentParam);
16479
+ const shouldUseDefaultBrandExample = !backgroundParam && !pairParam && themeCategory === "brand" && context.primary.key === "blue" && context.accent.key === "red";
16480
+ const defaultBackgroundToken = shouldUseDefaultBrandExample ? context.backgrounds.some(
16481
+ (background) => background.token === DEFAULT_INITIAL_BACKGROUND_TOKEN2
16482
+ ) ? DEFAULT_INITIAL_BACKGROUND_TOKEN2 : null : null;
16483
+ const defaultPairId = shouldUseDefaultBrandExample && defaultBackgroundToken && context.pairsByBackground[defaultBackgroundToken]?.some(
16484
+ (pair) => pair.id === DEFAULT_INITIAL_PAIR_ID2
16485
+ ) ? DEFAULT_INITIAL_PAIR_ID2 : null;
16486
+ const pairBackgroundToken = context.recommendedPairs.find((pair) => pair.id === pairParam)?.background.token ?? null;
16487
+ const selectedBackgroundToken = resolveBackgroundToken2(
16488
+ context,
16489
+ backgroundParam ?? pairBackgroundToken ?? defaultBackgroundToken,
16490
+ getToneFromToken2(backgroundParam ?? pairBackgroundToken ?? defaultBackgroundToken)
16491
+ );
16492
+ const selectedPairId = getPreferredPairForBackground2(
16493
+ context.pairsByBackground[selectedBackgroundToken] ?? [],
16494
+ pairParam ?? defaultPairId
16495
+ )?.id ?? "";
16496
+ return {
16497
+ accentKey: context.accent.key,
16498
+ primaryKey: context.primary.key,
16499
+ selectedBackgroundToken,
16500
+ selectedPairId,
16501
+ themeCategory
16502
+ };
16503
+ }
16504
+ function ColorPairingToolV2Loading() {
16505
+ return /* @__PURE__ */ jsxs("div", { className: "grid gap-8 lg:grid-cols-[18rem_minmax(0,1fr)]", children: [
16506
+ /* @__PURE__ */ jsxs("div", { className: "space-y-6 bg-grey-50/70 p-6", children: [
16507
+ /* @__PURE__ */ jsx("div", { className: "h-10 rounded-sm bg-grey-100" }),
16508
+ /* @__PURE__ */ jsx("div", { className: "h-40 rounded-sm bg-grey-100" }),
16509
+ /* @__PURE__ */ jsx("div", { className: "h-52 rounded-sm bg-grey-100" })
16510
+ ] }),
16511
+ /* @__PURE__ */ jsxs("div", { className: "space-y-6", children: [
16512
+ /* @__PURE__ */ jsx("div", { className: "h-12 rounded-sm bg-grey-100" }),
16513
+ /* @__PURE__ */ jsx("div", { className: "h-64 rounded-sm bg-grey-100" }),
16514
+ /* @__PURE__ */ jsx("div", { className: "h-40 rounded-sm bg-grey-100" }),
16515
+ /* @__PURE__ */ jsxs("div", { className: "grid gap-4 md:grid-cols-2 xl:grid-cols-3", children: [
16516
+ /* @__PURE__ */ jsx("div", { className: "h-44 rounded-sm bg-grey-100" }),
16517
+ /* @__PURE__ */ jsx("div", { className: "h-44 rounded-sm bg-grey-100" }),
16518
+ /* @__PURE__ */ jsx("div", { className: "h-44 rounded-sm bg-grey-100" })
16519
+ ] })
16520
+ ] })
16521
+ ] });
16522
+ }
16523
+ function SidebarStep({
16524
+ children,
16525
+ description,
16526
+ step,
16527
+ title
16528
+ }) {
16529
+ return /* @__PURE__ */ jsxs("section", { className: "space-y-4", children: [
16530
+ /* @__PURE__ */ jsxs("div", { className: "space-y-2", children: [
16531
+ /* @__PURE__ */ jsxs("p", { className: "text-[0.72rem] font-semibold tracking-[0.12em] text-muted-foreground uppercase", children: [
16532
+ "Step ",
16533
+ step
16534
+ ] }),
16535
+ /* @__PURE__ */ jsx(Heading, { level: 3, size: 6, className: "text-foreground", trim: "normal", children: title }),
16536
+ description ? /* @__PURE__ */ jsx("p", { className: "text-sm/6 text-muted-foreground", children: description }) : null
16537
+ ] }),
16538
+ children
16539
+ ] });
16540
+ }
16541
+ function PreviewHeroCard({
16542
+ familySummary,
16543
+ isRecommended,
16544
+ pair
16545
+ }) {
16546
+ const whiteForeground = isWhiteForegroundPair2(pair);
16547
+ const statusLabel = isRecommended ? "Pass" : pair.passes.aaaLarge ? "Large text only" : "Example only";
16548
+ const StatusIcon = isRecommended ? Icons.check : Icons.info;
16549
+ const fauxButtonStyle = {
16550
+ "--btn-bg": pair.foreground.hex,
16551
+ "--btn-border": pair.foreground.hex,
16552
+ "--btn-text": pair.background.hex,
16553
+ "--btn-icon": pair.background.hex,
16554
+ "--btn-hover-overlay": pair.background.hex
16555
+ };
16556
+ return /* @__PURE__ */ jsx(Card, { className: "gap-0 overflow-hidden py-0", children: /* @__PURE__ */ jsx(
16557
+ "div",
16558
+ {
16559
+ className: "p-6 sm:min-h-[26rem] sm:p-8",
16560
+ style: {
16561
+ backgroundColor: pair.background.hex,
16562
+ color: pair.foreground.hex
16563
+ },
16564
+ children: /* @__PURE__ */ jsxs("div", { className: "flex min-h-[22rem] flex-col justify-between gap-8", children: [
16565
+ /* @__PURE__ */ jsxs("div", { className: "flex flex-wrap items-center gap-2", children: [
16566
+ /* @__PURE__ */ jsxs(
16567
+ "span",
16568
+ {
16569
+ className: "inline-flex items-center gap-2 rounded-full border px-3 py-1 text-[0.72rem] font-semibold tracking-[0.16em] uppercase",
16570
+ style: {
16571
+ borderColor: pair.foreground.hex,
16572
+ backgroundColor: pair.foreground.hex,
16573
+ color: pair.background.hex
16574
+ },
16575
+ children: [
16576
+ /* @__PURE__ */ jsx(Icons.palette, { "data-slot": "icon", className: "size-4" }),
16577
+ familySummary
16578
+ ]
16579
+ }
16580
+ ),
16581
+ /* @__PURE__ */ jsxs(
16582
+ "span",
16583
+ {
16584
+ className: "inline-flex rounded-full border px-3 py-1 text-[0.72rem] font-semibold tracking-[0.16em] uppercase",
16585
+ style: {
16586
+ borderColor: pair.foreground.hex
16587
+ },
16588
+ children: [
16589
+ pair.rating,
16590
+ " ",
16591
+ pair.contrastRatio.toFixed(2),
16592
+ ":1"
16593
+ ]
16594
+ }
16595
+ )
16596
+ ] }),
16597
+ /* @__PURE__ */ jsxs("div", { className: "max-w-xl space-y-4 pb-12 sm:pb-16", children: [
16598
+ /* @__PURE__ */ jsx("p", { className: "text-sm font-semibold tracking-[0.22em] uppercase", children: whiteForeground && !isRecommended ? "White on colour example" : whiteForeground ? "White on colour" : "Colour on colour" }),
16599
+ /* @__PURE__ */ jsxs("div", { className: "space-y-4", children: [
16600
+ /* @__PURE__ */ jsx("h3", { className: "max-w-lg text-4xl leading-none font-bold text-current sm:text-5xl", children: "Pair colour with confidence." }),
16601
+ /* @__PURE__ */ jsx("p", { className: "max-w-md text-base/6 sm:text-base/7", children: getPreviewGuidance2(pair, isRecommended) }),
16602
+ /* @__PURE__ */ jsx(
16603
+ "span",
16604
+ {
16605
+ "aria-hidden": "true",
16606
+ "data-variant": "solid",
16607
+ className: cn(
16608
+ buttonVariants({ variant: "solid", size: "default" }),
16609
+ "pointer-events-none cursor-default px-6 text-[16px] font-[700] select-none sm:px-6 sm:text-[16px] sm:font-[700]"
16610
+ ),
16611
+ style: fauxButtonStyle,
16612
+ children: "Get started"
16613
+ }
16614
+ )
16615
+ ] })
16616
+ ] }),
16617
+ /* @__PURE__ */ jsxs("div", { className: "flex flex-wrap items-center gap-3", children: [
16618
+ /* @__PURE__ */ jsxs(
16619
+ "span",
16620
+ {
16621
+ className: "inline-flex items-center gap-2 rounded-full px-4 py-2 text-sm font-semibold",
16622
+ style: {
16623
+ backgroundColor: pair.foreground.hex,
16624
+ color: pair.background.hex
16625
+ },
16626
+ children: [
16627
+ statusLabel,
16628
+ /* @__PURE__ */ jsx(StatusIcon, { "data-slot": "icon", className: "size-4" })
16629
+ ]
16630
+ }
16631
+ ),
16632
+ /* @__PURE__ */ jsxs(
16633
+ "span",
16634
+ {
16635
+ className: "inline-flex rounded-full border px-4 py-2 text-sm",
16636
+ style: {
16637
+ borderColor: pair.foreground.hex
16638
+ },
16639
+ children: [
16640
+ pair.background.token,
16641
+ " / ",
16642
+ pair.foreground.token
16643
+ ]
16644
+ }
16645
+ )
16646
+ ] })
16647
+ ] })
16648
+ }
16649
+ ) });
16650
+ }
16651
+ function PreviewFallbackCard2({ background }) {
16652
+ return /* @__PURE__ */ jsx(Card, { className: "gap-0 overflow-hidden py-0", children: /* @__PURE__ */ jsxs(
16653
+ "div",
16654
+ {
16655
+ className: "space-y-6 px-6 py-7 sm:px-8 sm:py-8",
16656
+ style: {
16657
+ backgroundColor: background.hex,
16658
+ color: getReadableTextColor(background.tone)
16659
+ },
16660
+ children: [
16661
+ /* @__PURE__ */ jsx("p", { className: "text-sm font-semibold", children: "Hero preview" }),
16662
+ /* @__PURE__ */ jsxs("div", { className: "max-w-xl space-y-4", children: [
16663
+ /* @__PURE__ */ jsx("h3", { className: "max-w-lg text-3xl leading-tight font-bold sm:text-4xl", children: "No AAA combination available." }),
16664
+ /* @__PURE__ */ jsx("p", { className: "max-w-lg text-base/7", children: "This background tone is approved, but there are no recommended AAA foreground pairings available for it in the current tool." })
16665
+ ] })
16666
+ ]
16667
+ }
16668
+ ) });
16669
+ }
16670
+ function PairDetailCard2({
16671
+ color: color2,
16672
+ role,
16673
+ visibleFormats
16674
+ }) {
16675
+ const [, copyToClipboardRaw] = useCopyToClipboard();
16676
+ const [copiedField, setCopiedField] = useState(null);
16677
+ const copiedFieldTimeoutRef = useRef(null);
16678
+ const hasDisplayTone = color2.token !== "white";
16679
+ const formatRows = visibleFormats.map((format) => ({
16680
+ key: format,
16681
+ label: format.toUpperCase(),
16682
+ value: color2[format],
16683
+ mono: true,
16684
+ copyable: true
16685
+ }));
16686
+ const valueRows = [
16687
+ { key: "token", label: "Token", value: color2.token, mono: true, copyable: true },
16688
+ {
16689
+ key: "tone",
16690
+ label: "Tone",
16691
+ value: hasDisplayTone ? String(color2.tone) : "Not applicable",
16692
+ mono: false,
16693
+ copyable: hasDisplayTone
16694
+ },
16695
+ ...formatRows
16696
+ ];
16697
+ useEffect(() => {
16698
+ return () => {
16699
+ if (copiedFieldTimeoutRef.current) {
16700
+ clearTimeout(copiedFieldTimeoutRef.current);
16701
+ }
16702
+ };
16703
+ }, []);
16704
+ const copyField = (field) => {
16705
+ if (field === "tone" && !hasDisplayTone) {
16706
+ return;
16707
+ }
16708
+ const fieldValue = valueRows.find((row) => row.key === field)?.value;
16709
+ if (!fieldValue) return;
16710
+ copyToClipboardRaw(fieldValue);
16711
+ setCopiedField(field);
16712
+ const toastLabel = valueRows.find((row) => row.key === field)?.label ?? "Value";
16713
+ toast(`${toastLabel} copied to clipboard`, {
16714
+ duration: 2e3
16715
+ });
16716
+ if (copiedFieldTimeoutRef.current) {
16717
+ clearTimeout(copiedFieldTimeoutRef.current);
16718
+ }
16719
+ copiedFieldTimeoutRef.current = setTimeout(() => {
16720
+ setCopiedField(null);
16721
+ copiedFieldTimeoutRef.current = null;
16722
+ }, 2e3);
16723
+ };
16724
+ const renderCopyButton = (field, srLabel, className) => /* @__PURE__ */ jsxs(
16725
+ Button2,
16726
+ {
16727
+ variant: "ghost",
16728
+ size: "icon",
16729
+ className: cn("shrink-0", className),
16730
+ onClick: () => copyField(field),
16731
+ children: [
16732
+ copiedField === field ? /* @__PURE__ */ jsx(Icons.check, { "data-slot": "icon", className: "size-5" }) : /* @__PURE__ */ jsx(Icons.content_copy, { "data-slot": "icon", className: "size-5" }),
16733
+ /* @__PURE__ */ jsx("span", { className: "sr-only", children: srLabel })
16734
+ ]
16735
+ }
16736
+ );
16737
+ return /* @__PURE__ */ jsxs(Card, { className: "gap-0 pb-0", children: [
16738
+ /* @__PURE__ */ jsxs(CardHeader, { className: "gap-4 border-b", children: [
16739
+ /* @__PURE__ */ jsxs("div", { className: "space-y-1", children: [
16740
+ /* @__PURE__ */ jsx(CardTitle, { children: role }),
16741
+ /* @__PURE__ */ jsx(CardDescription, { children: color2.name ?? color2.token })
16742
+ ] }),
16743
+ /* @__PURE__ */ jsx(
16744
+ "div",
16745
+ {
16746
+ className: "h-14 w-full rounded-sm border border-grey-200 shadow-sm dark:border-grey-700",
16747
+ style: { backgroundColor: color2.hex }
16748
+ }
16749
+ )
16750
+ ] }),
16751
+ /* @__PURE__ */ jsx(CardContent, { className: "px-0 pb-3", children: /* @__PURE__ */ jsx("div", { className: "divide-y divide-grey-100 dark:divide-grey-800", children: valueRows.map((row) => /* @__PURE__ */ jsxs("div", { className: "flex items-start justify-between gap-4 px-6 py-3", children: [
16752
+ /* @__PURE__ */ jsxs("div", { className: "min-w-0 flex-1", children: [
16753
+ /* @__PURE__ */ jsx("p", { className: "text-xs font-semibold tracking-[0.16em] text-muted-foreground uppercase", children: row.label }),
16754
+ /* @__PURE__ */ jsx(
16755
+ "p",
16756
+ {
16757
+ className: cn(
16758
+ "mt-2 min-w-0 text-base text-foreground",
16759
+ row.mono && "font-mono text-sm break-all sm:text-base"
16760
+ ),
16761
+ children: row.value
16762
+ }
16763
+ )
16764
+ ] }),
16765
+ row.copyable ? renderCopyButton(
16766
+ row.key,
16767
+ `Copy ${role.toLowerCase()} ${row.label.toLowerCase()}`,
16768
+ "mt-0.5"
16769
+ ) : null
16770
+ ] }, row.key)) }) })
16771
+ ] });
16772
+ }
16773
+ function AccessibilityScoreCard({ pair }) {
16774
+ return /* @__PURE__ */ jsxs(Card, { className: "gap-0 py-0", children: [
16775
+ /* @__PURE__ */ jsxs("div", { className: "flex flex-col gap-5 px-6 py-6 sm:flex-row sm:items-end sm:justify-between", children: [
16776
+ /* @__PURE__ */ jsxs("div", { className: "space-y-2", children: [
16777
+ /* @__PURE__ */ jsx("p", { className: "text-sm font-semibold text-foreground", children: "Accessibility score" }),
16778
+ /* @__PURE__ */ jsxs("div", { className: "space-y-1", children: [
16779
+ /* @__PURE__ */ jsx("p", { className: "text-5xl leading-none font-bold text-foreground", children: pair ? `${pair.contrastRatio.toFixed(2)}:1` : "N/A" }),
16780
+ /* @__PURE__ */ jsx("p", { className: "text-base text-muted-foreground", children: "Contrast ratio" })
16781
+ ] })
16782
+ ] }),
16783
+ /* @__PURE__ */ jsx(
16784
+ "span",
16785
+ {
16786
+ className: cn(
16787
+ "inline-flex items-center gap-2 rounded-full px-4 py-2 text-base font-semibold",
16788
+ pair ? "bg-success-700 text-white" : "border border-grey-300 bg-background text-foreground"
16789
+ ),
16790
+ children: pair ? /* @__PURE__ */ jsxs(Fragment, { children: [
16791
+ "Pass AAA",
16792
+ /* @__PURE__ */ jsx(Icons.check, { "data-slot": "icon", className: "size-5" })
16793
+ ] }) : "No AAA result"
16794
+ }
16795
+ )
16796
+ ] }),
16797
+ /* @__PURE__ */ jsx("div", { className: "border-t border-grey-200 px-6 py-4 dark:border-grey-700", children: /* @__PURE__ */ jsx("p", { className: "text-sm text-muted-foreground", children: pair ? "Meets WCAG 2.1 AAA standards for large and normal text." : "Choose a different approved background tone to review recommended AAA pairings." }) })
16798
+ ] });
16799
+ }
16800
+ function RecommendedPairCard({
16801
+ isSelected,
16802
+ onSelect,
16803
+ pair
16804
+ }) {
16805
+ return /* @__PURE__ */ jsxs(
16806
+ "button",
16807
+ {
16808
+ type: "button",
16809
+ "aria-label": `Use ${getPairingColorDisplayName2(pair.foreground)} on ${getPairingColorDisplayName2(pair.background)}`,
16810
+ "aria-pressed": isSelected,
16811
+ onClick: onSelect,
16812
+ className: cn(
16813
+ "overflow-hidden rounded-sm border bg-background text-left transition-colors",
16814
+ isSelected ? "border-primary-700 ring-2 ring-primary-700 ring-offset-2 ring-offset-background" : "border-grey-200 hover:border-grey-400 dark:border-grey-700 dark:hover:border-grey-500"
16815
+ ),
16816
+ children: [
16817
+ /* @__PURE__ */ jsxs(
16818
+ "div",
16819
+ {
16820
+ className: "min-h-32 space-y-3 px-4 py-4",
16821
+ style: {
16822
+ backgroundColor: pair.background.hex,
16823
+ color: pair.foreground.hex
16824
+ },
16825
+ children: [
16826
+ /* @__PURE__ */ jsxs("p", { className: "text-[0.68rem] font-semibold tracking-[0.12em] uppercase opacity-90", children: [
16827
+ pair.background.token,
16828
+ " / ",
16829
+ pair.foreground.token
16830
+ ] }),
16831
+ /* @__PURE__ */ jsxs("div", { className: "space-y-1", children: [
16832
+ /* @__PURE__ */ jsx("p", { className: "text-2xl leading-tight font-bold", children: getPairingColorDisplayName2(pair.foreground) }),
16833
+ /* @__PURE__ */ jsxs("p", { className: "text-sm/6 opacity-90", children: [
16834
+ pair.foreground.familyLabel,
16835
+ " on ",
16836
+ pair.background.familyLabel
16837
+ ] })
16838
+ ] })
16839
+ ]
16840
+ }
16841
+ ),
16842
+ /* @__PURE__ */ jsxs("div", { className: "flex items-center justify-between gap-4 px-4 py-3", children: [
16843
+ /* @__PURE__ */ jsxs("span", { className: "text-sm font-semibold text-foreground", children: [
16844
+ pair.contrastRatio.toFixed(2),
16845
+ ":1"
16846
+ ] }),
16847
+ /* @__PURE__ */ jsx("span", { className: "inline-flex items-center gap-1 rounded-full bg-success-50 px-2.5 py-1 text-xs font-semibold text-success-800 dark:bg-success-950/30 dark:text-success-200", children: "AAA" })
16848
+ ] })
16849
+ ]
16850
+ }
16851
+ );
16852
+ }
16853
+ function ColorPairingToolV2Content({ visibleFormats }) {
16854
+ const searchParams = useSearchParams();
16855
+ const [initialState] = useState(() => getInitialPairingState2(searchParams));
16856
+ const [themeCategory, setThemeCategory] = useState(initialState.themeCategory);
16857
+ const [primaryFamilyKey, setPrimaryFamilyKey] = useState(initialState.primaryKey);
16858
+ const [accentFamilyKey, setAccentFamilyKey] = useState(initialState.accentKey);
16859
+ const [selectedBackgroundToken, setSelectedBackgroundToken] = useState(
16860
+ initialState.selectedBackgroundToken
16861
+ );
16862
+ const [selectedPairId, setSelectedPairId] = useState(initialState.selectedPairId);
16863
+ const themeFamilies = getPairingFamilies(themeCategory);
16864
+ const context = getPairingContext(themeCategory, primaryFamilyKey, accentFamilyKey);
16865
+ const selectableFamilies = themeFamilies.filter((family) => family.key !== context.grey.key);
16866
+ const selectableAccentFamilies = selectableFamilies.filter(
16867
+ (family) => family.key !== context.primary.key
16868
+ );
16869
+ const selectedBackground = context.backgrounds.find((background) => background.token === selectedBackgroundToken) ?? context.backgrounds[0] ?? null;
16870
+ const selectedBackgroundPairs = selectedBackground ? context.pairsByBackground[selectedBackground.token] ?? [] : [];
16871
+ const selectedPair = getPreferredPairForBackground2(selectedBackgroundPairs, selectedPairId);
16872
+ const detailForeground = selectedPair?.foreground ?? null;
16873
+ const familySummary = [context.primary.label, context.accent.label, context.grey.label].join(
16874
+ " + "
16875
+ );
16876
+ const updateUrlParams = (nextThemeCategory, nextPrimaryKey, nextAccentKey, nextSelectedBackgroundToken, nextSelectedPairId) => {
16877
+ const params = new URLSearchParams(window.location.search);
16878
+ params.delete("family");
16879
+ params.set("palette", nextThemeCategory);
16880
+ params.set("primary", nextPrimaryKey);
16881
+ params.set("accent", nextAccentKey);
16882
+ params.set("background", nextSelectedBackgroundToken);
16883
+ if (nextSelectedPairId) {
16884
+ params.set("pair", nextSelectedPairId);
16885
+ } else {
16886
+ params.delete("pair");
16887
+ }
16888
+ window.history.replaceState(
16889
+ null,
16890
+ "",
16891
+ `${window.location.pathname}?${params.toString()}${window.location.hash}`
16892
+ );
16893
+ };
16894
+ const syncSelection = (nextThemeCategory, nextPrimaryKey, nextAccentKey, preferredBackgroundToken, preferredPairId) => {
16895
+ const nextContext = getPairingContext(nextThemeCategory, nextPrimaryKey, nextAccentKey);
16896
+ const nextSelectedBackgroundToken = resolveBackgroundToken2(
16897
+ nextContext,
16898
+ preferredBackgroundToken,
16899
+ getToneFromToken2(preferredBackgroundToken)
16900
+ );
16901
+ const nextSelectedPairId = getPreferredPairForBackground2(
16902
+ nextContext.pairsByBackground[nextSelectedBackgroundToken] ?? [],
16903
+ preferredPairId
16904
+ )?.id ?? "";
16905
+ setThemeCategory(nextThemeCategory);
16906
+ setPrimaryFamilyKey(nextContext.primary.key);
16907
+ setAccentFamilyKey(nextContext.accent.key);
16908
+ setSelectedBackgroundToken(nextSelectedBackgroundToken);
16909
+ setSelectedPairId(nextSelectedPairId);
16910
+ updateUrlParams(
16911
+ nextThemeCategory,
16912
+ nextContext.primary.key,
16913
+ nextContext.accent.key,
16914
+ nextSelectedBackgroundToken,
16915
+ nextSelectedPairId
16916
+ );
16917
+ };
16918
+ const handleThemeCategoryChange = (nextThemeCategory) => {
16919
+ syncSelection(
16920
+ nextThemeCategory,
16921
+ primaryFamilyKey,
16922
+ accentFamilyKey,
16923
+ selectedBackgroundToken,
16924
+ selectedPairId
16925
+ );
16926
+ };
16927
+ const handlePrimaryColorChange = (nextPrimaryKey) => {
16928
+ const nextAccentKey = nextPrimaryKey === accentFamilyKey ? getDefaultAccentFamilyKey(themeCategory, nextPrimaryKey) : accentFamilyKey;
16929
+ syncSelection(
16930
+ themeCategory,
16931
+ nextPrimaryKey,
16932
+ nextAccentKey,
16933
+ selectedBackgroundToken,
16934
+ selectedPairId
16935
+ );
16936
+ };
16937
+ const handleAccentColorChange = (nextAccentKey) => {
16938
+ if (nextAccentKey === primaryFamilyKey) return;
16939
+ syncSelection(
16940
+ themeCategory,
16941
+ primaryFamilyKey,
16942
+ nextAccentKey,
16943
+ selectedBackgroundToken,
16944
+ selectedPairId
16945
+ );
16946
+ };
16947
+ const handleBackgroundChange = (nextSelectedBackgroundToken) => {
16948
+ const nextSelectedPairId = getPreferredPairForBackground2(
16949
+ context.pairsByBackground[nextSelectedBackgroundToken] ?? [],
16950
+ selectedPairId
16951
+ )?.id ?? "";
16952
+ setSelectedBackgroundToken(nextSelectedBackgroundToken);
16953
+ setSelectedPairId(nextSelectedPairId);
16954
+ updateUrlParams(
16955
+ themeCategory,
16956
+ context.primary.key,
16957
+ context.accent.key,
16958
+ nextSelectedBackgroundToken,
16959
+ nextSelectedPairId
16960
+ );
16961
+ };
16962
+ const handlePairChange = (nextSelectedPairId) => {
16963
+ if (!selectedBackground) return;
16964
+ setSelectedPairId(nextSelectedPairId);
16965
+ updateUrlParams(
16966
+ themeCategory,
16967
+ context.primary.key,
16968
+ context.accent.key,
16969
+ selectedBackground.token,
16970
+ nextSelectedPairId
16971
+ );
16972
+ };
16973
+ if (!selectedBackground) {
16974
+ return /* @__PURE__ */ jsx(Card, { children: /* @__PURE__ */ jsxs("div", { className: "px-6", children: [
16975
+ /* @__PURE__ */ jsx(Heading, { level: 3, size: 5, className: "text-foreground", trim: "normal", children: "No approved background tones available" }),
16976
+ /* @__PURE__ */ jsx("p", { className: "mt-3 text-base text-muted-foreground", children: "No approved tones are available for the current palette." })
16977
+ ] }) });
16978
+ }
16979
+ return /* @__PURE__ */ jsxs("div", { className: "grid gap-8 lg:grid-cols-[18rem_minmax(0,1fr)]", children: [
16980
+ /* @__PURE__ */ jsx("aside", { className: "bg-grey-50/60 p-6", children: /* @__PURE__ */ jsxs("div", { className: "space-y-8", children: [
16981
+ /* @__PURE__ */ jsxs("div", { className: "space-y-2", children: [
16982
+ /* @__PURE__ */ jsx(Heading, { level: 3, size: 5, className: "text-foreground", trim: "normal", children: "Configuration" }),
16983
+ /* @__PURE__ */ jsx(Text, { size: 2, children: "Choose a palette, set your primary and accent families, then select an approved background." })
16984
+ ] }),
16985
+ /* @__PURE__ */ jsx(SidebarStep, { step: 1, title: "Select your palette", children: /* @__PURE__ */ jsx("div", { className: "grid gap-2", children: ["brand", "aboriginal"].map((palette) => {
16986
+ const isSelected = themeCategory === palette;
16987
+ const label = palette === "brand" ? "Brand palette" : "Aboriginal palette";
16988
+ return /* @__PURE__ */ jsx(
16989
+ "button",
16990
+ {
16991
+ type: "button",
16992
+ "aria-label": `Select ${label}`,
16993
+ "aria-pressed": isSelected,
16994
+ onClick: () => handleThemeCategoryChange(palette),
16995
+ className: cn(
16996
+ "rounded-sm border px-3 py-2.5 text-left text-sm font-semibold transition-colors",
16997
+ isSelected ? "border-primary-800 bg-primary-800 text-white" : "border-grey-300 bg-background text-foreground hover:border-primary-800 hover:bg-primary-50"
16998
+ ),
16999
+ children: label
17000
+ },
17001
+ palette
17002
+ );
17003
+ }) }) }),
17004
+ /* @__PURE__ */ jsx(
17005
+ SidebarStep,
17006
+ {
17007
+ step: 2,
17008
+ title: "Choose your colours",
17009
+ description: "Grey is added automatically from the selected palette.",
17010
+ children: /* @__PURE__ */ jsxs("div", { className: "space-y-5", children: [
17011
+ /* @__PURE__ */ jsxs("div", { className: "space-y-3", children: [
17012
+ /* @__PURE__ */ jsx("p", { className: "text-sm font-semibold text-foreground", children: "Primary colour" }),
17013
+ /* @__PURE__ */ jsx("div", { className: "grid grid-cols-3 gap-2", children: selectableFamilies.map((family) => {
17014
+ const swatchTone = 800;
17015
+ const isSelected = family.key === context.primary.key;
17016
+ const label = getFamilySelectorLabel2(family, themeCategory, "primary colour");
17017
+ return /* @__PURE__ */ jsx(
17018
+ "button",
17019
+ {
17020
+ type: "button",
17021
+ "aria-label": `Select ${label} as primary colour`,
17022
+ "aria-pressed": isSelected,
17023
+ onClick: () => handlePrimaryColorChange(family.key),
17024
+ className: cn(
17025
+ "min-h-11 rounded-sm border px-2 py-2 text-center text-[0.8rem] leading-5 font-semibold transition-transform",
17026
+ isSelected ? "ring-2 ring-primary-700 ring-offset-2 ring-offset-grey-50/60" : "hover:-translate-y-px"
17027
+ ),
17028
+ style: {
17029
+ backgroundColor: getFamilySwatchColor2(family, swatchTone),
17030
+ color: getReadableTextColor(swatchTone),
17031
+ borderColor: "rgba(0, 0, 0, 0.12)"
17032
+ },
17033
+ title: label,
17034
+ children: label
17035
+ },
17036
+ family.key
17037
+ );
17038
+ }) })
17039
+ ] }),
17040
+ /* @__PURE__ */ jsxs("div", { className: "space-y-3", children: [
17041
+ /* @__PURE__ */ jsx("p", { className: "text-sm font-semibold text-foreground", children: "Accent colour" }),
17042
+ /* @__PURE__ */ jsx("div", { className: "grid grid-cols-3 gap-2", children: selectableAccentFamilies.map((family) => {
17043
+ const swatchTone = 600;
17044
+ const isSelected = family.key === context.accent.key;
17045
+ const label = getFamilySelectorLabel2(family, themeCategory, "accent colour");
17046
+ return /* @__PURE__ */ jsx(
17047
+ "button",
17048
+ {
17049
+ type: "button",
17050
+ "aria-label": `Select ${label} as accent colour`,
17051
+ "aria-pressed": isSelected,
17052
+ onClick: () => handleAccentColorChange(family.key),
17053
+ className: cn(
17054
+ "min-h-11 rounded-sm border px-2 py-2 text-center text-[0.8rem] leading-5 font-semibold transition-transform",
17055
+ isSelected ? "ring-2 ring-primary-700 ring-offset-2 ring-offset-grey-50/60" : "hover:-translate-y-px"
17056
+ ),
17057
+ style: {
17058
+ backgroundColor: getFamilySwatchColor2(family, swatchTone),
17059
+ color: getReadableTextColor(swatchTone),
17060
+ borderColor: "rgba(0, 0, 0, 0.12)"
17061
+ },
17062
+ title: label,
17063
+ children: label
17064
+ },
17065
+ family.key
17066
+ );
17067
+ }) })
17068
+ ] })
17069
+ ] })
17070
+ }
17071
+ ),
17072
+ /* @__PURE__ */ jsx(SidebarStep, { step: 3, title: "Pick a background", children: /* @__PURE__ */ jsxs("div", { className: "space-y-4", children: [
17073
+ /* @__PURE__ */ jsxs("p", { className: "text-sm text-muted-foreground", children: [
17074
+ "Selected:",
17075
+ " ",
17076
+ /* @__PURE__ */ jsx("span", { className: "font-semibold text-foreground", children: selectedBackground.token })
17077
+ ] }),
17078
+ /* @__PURE__ */ jsx("div", { className: "grid grid-cols-4 gap-2", children: context.backgrounds.map((background) => {
17079
+ const hasPairs = (context.pairsByBackground[background.token]?.length ?? 0) > 0;
17080
+ const isSelected = selectedBackground.token === background.token;
17081
+ return /* @__PURE__ */ jsx(
17082
+ "button",
17083
+ {
17084
+ type: "button",
17085
+ "aria-label": hasPairs ? `Select ${background.token} background` : `Select ${background.token} background with no AAA pairings`,
17086
+ "aria-pressed": isSelected,
17087
+ onClick: () => handleBackgroundChange(background.token),
17088
+ className: cn(
17089
+ "relative aspect-square rounded-sm border transition-transform",
17090
+ isSelected ? "ring-2 ring-primary-700 ring-offset-2 ring-offset-grey-50/60" : "hover:-translate-y-px",
17091
+ !hasPairs && "opacity-80"
17092
+ ),
17093
+ style: {
17094
+ backgroundColor: background.hex,
17095
+ borderColor: "rgba(0, 0, 0, 0.14)"
17096
+ },
17097
+ title: background.token,
17098
+ children: !hasPairs ? /* @__PURE__ */ jsx("span", { className: "absolute top-1/2 left-1/2 h-0.5 w-5 -translate-x-1/2 -translate-y-1/2 rotate-45 rounded-full bg-white shadow-[0_0_0_1px_rgba(0,0,0,0.28)]" }) : null
17099
+ },
17100
+ background.token
17101
+ );
17102
+ }) })
17103
+ ] }) })
17104
+ ] }) }),
17105
+ /* @__PURE__ */ jsxs("main", { className: "space-y-8", children: [
17106
+ /* @__PURE__ */ jsxs("div", { className: "space-y-2", children: [
17107
+ /* @__PURE__ */ jsx(Heading, { level: 3, size: 5, className: "text-foreground", trim: "normal", children: "Live Preview & Results" }),
17108
+ /* @__PURE__ */ jsx(Text, { size: 2, children: "Review the selected pairing in context, then compare the available AAA combinations for your chosen background." })
17109
+ ] }),
17110
+ /* @__PURE__ */ jsxs("div", { className: "space-y-5", children: [
17111
+ selectedPair ? /* @__PURE__ */ jsx(
17112
+ PreviewHeroCard,
17113
+ {
17114
+ familySummary,
17115
+ isRecommended: Boolean(selectedPair),
17116
+ pair: selectedPair
17117
+ }
17118
+ ) : /* @__PURE__ */ jsx(PreviewFallbackCard2, { background: selectedBackground }),
17119
+ /* @__PURE__ */ jsx(AccessibilityScoreCard, { pair: selectedPair })
17120
+ ] }),
17121
+ /* @__PURE__ */ jsxs("section", { className: "space-y-4", children: [
17122
+ /* @__PURE__ */ jsxs("div", { className: "space-y-2", children: [
17123
+ /* @__PURE__ */ jsx(Heading, { level: 3, size: 5, className: "text-foreground", trim: "normal", children: "Recommended Combinations" }),
17124
+ /* @__PURE__ */ jsxs("p", { className: "text-base text-muted-foreground", children: [
17125
+ "AAA-recommended foregrounds for",
17126
+ " ",
17127
+ /* @__PURE__ */ jsx("span", { className: "font-semibold text-foreground", children: selectedBackground.token }),
17128
+ "."
17129
+ ] })
17130
+ ] }),
17131
+ selectedBackgroundPairs.length > 0 ? /* @__PURE__ */ jsx("div", { className: "grid gap-4 md:grid-cols-2 xl:grid-cols-3", children: selectedBackgroundPairs.map((pair) => /* @__PURE__ */ jsx(
17132
+ RecommendedPairCard,
17133
+ {
17134
+ pair,
17135
+ isSelected: selectedPair?.id === pair.id,
17136
+ onSelect: () => handlePairChange(pair.id)
17137
+ },
17138
+ pair.id
17139
+ )) }) : /* @__PURE__ */ jsx(Card, { className: "gap-0 py-0", children: /* @__PURE__ */ jsxs("div", { className: "px-6 py-6", children: [
17140
+ /* @__PURE__ */ jsx(Heading, { level: 4, size: 6, className: "text-foreground", trim: "normal", children: "No recommended combinations" }),
17141
+ /* @__PURE__ */ jsx("p", { className: "mt-3 text-base text-muted-foreground", children: "Choose another approved background tone to review available AAA pairings." })
17142
+ ] }) })
17143
+ ] }),
17144
+ /* @__PURE__ */ jsxs("div", { className: "grid gap-4 lg:grid-cols-2", children: [
17145
+ /* @__PURE__ */ jsx(
17146
+ PairDetailCard2,
17147
+ {
17148
+ color: selectedBackground,
17149
+ role: "Background",
17150
+ visibleFormats
17151
+ }
17152
+ ),
17153
+ detailForeground ? /* @__PURE__ */ jsx(
17154
+ PairDetailCard2,
17155
+ {
17156
+ color: detailForeground,
17157
+ role: "Foreground",
17158
+ visibleFormats
17159
+ }
17160
+ ) : /* @__PURE__ */ jsxs(Card, { className: "gap-4", children: [
17161
+ /* @__PURE__ */ jsx(CardHeader, { className: "gap-3 border-b", children: /* @__PURE__ */ jsxs("div", { className: "space-y-1", children: [
17162
+ /* @__PURE__ */ jsx(CardTitle, { children: "Foreground" }),
17163
+ /* @__PURE__ */ jsx(CardDescription, { children: "No recommended foreground available" })
17164
+ ] }) }),
17165
+ /* @__PURE__ */ jsx(CardContent, { children: /* @__PURE__ */ jsx("p", { className: "text-sm text-muted-foreground", children: "Choose another approved tone or review the recommended foregrounds for the same background." }) })
17166
+ ] })
17167
+ ] })
17168
+ ] })
17169
+ ] });
17170
+ }
17171
+ function ColorPairingToolV2({
17172
+ visibleFormats = DEFAULT_VISIBLE_FORMATS2
17173
+ } = {}) {
17174
+ const normalizedVisibleFormats = [...new Set(visibleFormats)];
17175
+ return /* @__PURE__ */ jsx(Suspense, { fallback: /* @__PURE__ */ jsx(ColorPairingToolV2Loading, {}), children: /* @__PURE__ */ jsx(ColorPairingToolV2Content, { visibleFormats: normalizedVisibleFormats }) });
17176
+ }
16306
17177
  function ColorSwatches({ theme: theme2, format, viewMode }) {
16307
17178
  return /* @__PURE__ */ jsx(
16308
17179
  "div",
@@ -18078,7 +18949,7 @@ function DescriptionList({ className, ...props }) {
18078
18949
  "dl",
18079
18950
  {
18080
18951
  ...props,
18081
- className: clsx12(
18952
+ className: clsx13(
18082
18953
  className,
18083
18954
  "grid grid-cols-1 text-base/6 sm:grid-cols-[min(50%,--spacing(80))_auto] sm:text-sm/6"
18084
18955
  )
@@ -18090,7 +18961,7 @@ function DescriptionTerm({ className, ...props }) {
18090
18961
  "dt",
18091
18962
  {
18092
18963
  ...props,
18093
- className: clsx12(
18964
+ className: clsx13(
18094
18965
  className,
18095
18966
  "col-start-1 border-t border-grey-950/5 pt-3 text-grey-600 first:border-none sm:border-t sm:border-grey-950/5 sm:py-3 dark:border-white/5 dark:text-grey-400 sm:dark:border-white/5"
18096
18967
  )
@@ -18102,7 +18973,7 @@ function DescriptionDetails({ className, ...props }) {
18102
18973
  "dd",
18103
18974
  {
18104
18975
  ...props,
18105
- className: clsx12(
18976
+ className: clsx13(
18106
18977
  className,
18107
18978
  "pt-1 pb-3 text-grey-950 sm:border-t sm:border-grey-950/5 sm:py-3 sm:nth-2:border-none dark:text-white dark:sm:border-white/5"
18108
18979
  )
@@ -18516,7 +19387,7 @@ function Fieldset2({
18516
19387
  Headless4.Fieldset,
18517
19388
  {
18518
19389
  ...props,
18519
- className: clsx12(className, "*:data-[slot=text]:mt-1 [&>*+[data-slot=control]]:mt-6")
19390
+ className: clsx13(className, "*:data-[slot=text]:mt-1 [&>*+[data-slot=control]]:mt-6")
18520
19391
  }
18521
19392
  );
18522
19393
  }
@@ -18529,7 +19400,7 @@ function Legend6({
18529
19400
  {
18530
19401
  "data-slot": "legend",
18531
19402
  ...props,
18532
- className: clsx12(
19403
+ className: clsx13(
18533
19404
  className,
18534
19405
  "text-base/6 font-semibold text-zinc-950 data-disabled:opacity-50 sm:text-sm/6 dark:text-white"
18535
19406
  )
@@ -18537,7 +19408,7 @@ function Legend6({
18537
19408
  );
18538
19409
  }
18539
19410
  function FieldGroup({ className, ...props }) {
18540
- return /* @__PURE__ */ jsx("div", { "data-slot": "control", ...props, className: clsx12(className, "space-y-8") });
19411
+ return /* @__PURE__ */ jsx("div", { "data-slot": "control", ...props, className: clsx13(className, "space-y-8") });
18541
19412
  }
18542
19413
  function Field2({
18543
19414
  className,
@@ -18547,7 +19418,7 @@ function Field2({
18547
19418
  Headless4.Field,
18548
19419
  {
18549
19420
  ...props,
18550
- className: clsx12(
19421
+ className: clsx13(
18551
19422
  className,
18552
19423
  "[&>[data-slot=label]+[data-slot=control]]:mt-3",
18553
19424
  "[&>[data-slot=label]+[data-slot=description]]:mt-1",
@@ -18568,7 +19439,7 @@ function FieldLabel({
18568
19439
  {
18569
19440
  "data-slot": "label",
18570
19441
  ...props,
18571
- className: clsx12(
19442
+ className: clsx13(
18572
19443
  className,
18573
19444
  "text-base/6 text-zinc-950 select-none data-disabled:opacity-50 sm:text-sm/6 dark:text-white"
18574
19445
  )
@@ -18584,7 +19455,7 @@ function Description4({
18584
19455
  {
18585
19456
  "data-slot": "description",
18586
19457
  ...props,
18587
- className: clsx12(
19458
+ className: clsx13(
18588
19459
  className,
18589
19460
  "text-base/6 text-zinc-500 data-disabled:opacity-50 sm:text-sm/6 dark:text-zinc-400"
18590
19461
  )
@@ -18600,7 +19471,7 @@ function ErrorMessage({
18600
19471
  {
18601
19472
  "data-slot": "error",
18602
19473
  ...props,
18603
- className: clsx12(
19474
+ className: clsx13(
18604
19475
  className,
18605
19476
  "text-base/6 text-red-600 data-disabled:opacity-50 sm:text-sm/6 dark:text-red-500"
18606
19477
  )
@@ -18824,7 +19695,7 @@ var toggleVariants = cva(styles3.base, {
18824
19695
  variants: {
18825
19696
  variant: {
18826
19697
  ghost: "",
18827
- outline: clsx12(styles3.outline)
19698
+ outline: clsx13(styles3.outline)
18828
19699
  },
18829
19700
  size: {
18830
19701
  default: "h-9 px-2 min-w-9",
@@ -18927,7 +19798,7 @@ function FormatToggle({ format, setFormat }) {
18927
19798
 
18928
19799
  // package.json
18929
19800
  var package_default = {
18930
- version: "1.101.0"};
19801
+ version: "1.102.0"};
18931
19802
  function Logo(props) {
18932
19803
  return /* @__PURE__ */ jsxs(Fragment, { children: [
18933
19804
  /* @__PURE__ */ jsx("span", { className: "sr-only", children: "NSW Government" }),
@@ -19077,7 +19948,7 @@ function Header2({
19077
19948
  "data-slot": "header",
19078
19949
  "data-scrolled": isScrolled,
19079
19950
  id: "nsw-header",
19080
- className: clsx12(
19951
+ className: clsx13(
19081
19952
  "sticky top-0 z-50 hidden bg-white px-4 py-5 transition duration-500 sm:px-6 lg:flex lg:flex-none lg:flex-wrap lg:items-center lg:justify-between lg:px-12",
19082
19953
  !hideShadow && "shadow-md shadow-slate-900/5 dark:shadow-none",
19083
19954
  isScrolled ? "dark:bg-slate-900/95 dark:backdrop-blur-sm dark:[@supports(backdrop-filter:blur(0))]:bg-slate-900/75" : "dark:bg-transparent"
@@ -19993,7 +20864,7 @@ function Listbox2({
19993
20864
  autoFocus,
19994
20865
  "data-slot": "control",
19995
20866
  "aria-label": ariaLabel,
19996
- className: clsx12([
20867
+ className: clsx13([
19997
20868
  className,
19998
20869
  // Basic layout
19999
20870
  "group relative block w-full",
@@ -20017,7 +20888,7 @@ function Listbox2({
20017
20888
  as: "span",
20018
20889
  options,
20019
20890
  placeholder: placeholder && /* @__PURE__ */ jsx("span", { className: "block truncate text-grey-500", children: placeholder }),
20020
- className: clsx12([
20891
+ className: clsx13([
20021
20892
  "cursor-pointer",
20022
20893
  // Basic layout
20023
20894
  "relative block w-full appearance-none rounded-sm py-[calc(--spacing(4.5)-1px)] sm:py-[calc(--spacing(3.5)-1px)]",
@@ -20047,7 +20918,7 @@ function Listbox2({
20047
20918
  {
20048
20919
  transition: true,
20049
20920
  anchor: "selection start",
20050
- className: clsx12(
20921
+ className: clsx13(
20051
20922
  // Anchor positioning
20052
20923
  "[--anchor-offset:-1.625rem] [--anchor-padding:--spacing(4)] sm:[--anchor-offset:-1.375rem]",
20053
20924
  // Base styles
@@ -20073,7 +20944,7 @@ function ListboxOption2({
20073
20944
  className,
20074
20945
  ...props
20075
20946
  }) {
20076
- const sharedClasses = clsx12(
20947
+ const sharedClasses = clsx13(
20077
20948
  // Base
20078
20949
  "flex min-w-0 items-center",
20079
20950
  // Icons
@@ -20085,12 +20956,12 @@ function ListboxOption2({
20085
20956
  );
20086
20957
  return /* @__PURE__ */ jsx(Headless4.ListboxOption, { as: Fragment$1, ...props, children: ({ selectedOption }) => {
20087
20958
  if (selectedOption) {
20088
- return /* @__PURE__ */ jsx("div", { className: clsx12(className, sharedClasses), children });
20959
+ return /* @__PURE__ */ jsx("div", { className: clsx13(className, sharedClasses), children });
20089
20960
  }
20090
20961
  return /* @__PURE__ */ jsxs(
20091
20962
  "div",
20092
20963
  {
20093
- className: clsx12(
20964
+ className: clsx13(
20094
20965
  // Basic layout
20095
20966
  "group/option grid cursor-pointer grid-cols-[--spacing(5)_1fr] items-baseline gap-x-2 rounded-sm py-2.5 pr-3.5 pl-2 sm:grid-cols-[--spacing(4)_1fr] sm:py-1.5 sm:pr-3 sm:pl-1.5",
20096
20967
  // Typography
@@ -20121,7 +20992,7 @@ function ListboxOption2({
20121
20992
  )
20122
20993
  }
20123
20994
  ),
20124
- /* @__PURE__ */ jsx("span", { className: clsx12(className, sharedClasses, "col-start-2"), children })
20995
+ /* @__PURE__ */ jsx("span", { className: clsx13(className, sharedClasses, "col-start-2"), children })
20125
20996
  ]
20126
20997
  }
20127
20998
  );
@@ -20132,7 +21003,7 @@ function ListboxLabel({ className, ...props }) {
20132
21003
  "span",
20133
21004
  {
20134
21005
  ...props,
20135
- className: clsx12(className, "ml-2.5 truncate first:ml-0 sm:ml-2 sm:first:ml-0")
21006
+ className: clsx13(className, "ml-2.5 truncate first:ml-0 sm:ml-2 sm:first:ml-0")
20136
21007
  }
20137
21008
  );
20138
21009
  }
@@ -20145,7 +21016,7 @@ function ListboxDescription({
20145
21016
  "span",
20146
21017
  {
20147
21018
  ...props,
20148
- className: clsx12(
21019
+ className: clsx13(
20149
21020
  className,
20150
21021
  "flex flex-1 overflow-hidden text-grey-500 group-data-focus/option:text-white before:w-2 before:min-w-0 before:shrink dark:text-grey-400"
20151
21022
  ),
@@ -20193,74 +21064,6 @@ function Spinner({ className, size = "md", ...props }) {
20193
21064
  }
20194
21065
  ) });
20195
21066
  }
20196
- function Text({ className, trim = "normal", size = 2, label = false, ...props }) {
20197
- const textSizeClasses = {
20198
- 1: "text-[length:var(--font-size-1)] leading-[var(--line-height-28)] tracking-[var(--letter-spacing-0)]",
20199
- 2: "text-[length:var(--font-size-2)] leading-[var(--line-height-24)] tracking-[var(--letter-spacing-0)]",
20200
- 3: "text-[length:var(--font-size-3)] leading-[var(--line-height-20)] tracking-[var(--letter-spacing-0)]",
20201
- 4: "text-[length:var(--font-size-4)] leading-[var(--line-height-20)] tracking-[var(--letter-spacing-0)]"
20202
- };
20203
- const labelSizeClasses = {
20204
- 1: "text-[length:var(--font-size-1)] leading-[var(--line-height-24)] tracking-[var(--letter-spacing-0)]",
20205
- 2: "text-[length:var(--font-size-2)] leading-[var(--line-height-20)] tracking-[var(--letter-spacing-0)]",
20206
- 3: "text-[length:var(--font-size-3)] leading-[var(--line-height-16)] tracking-[var(--letter-spacing-0)]",
20207
- 4: "text-[length:var(--font-size-4)] leading-[var(--line-height-16)] tracking-[var(--letter-spacing-0)]"
20208
- };
20209
- const sizeClass = label ? labelSizeClasses[size] : textSizeClasses[size];
20210
- const trimClasses = {
20211
- normal: ["before:content-none after:content-none"],
20212
- start: [
20213
- 'before:content-[""] before:table after:content-none',
20214
- "before:mb-[calc(var(--leading-trim-start,var(--default-leading-trim-start))-var(--line-height,calc(1em*var(--default-line-height)))/2)]"
20215
- ],
20216
- end: [
20217
- 'before:content-none after:content-[""] after:table',
20218
- "after:mt-[calc(var(--leading-trim-end,var(--default-leading-trim-end))-var(--line-height,calc(1em*var(--default-line-height)))/2)]"
20219
- ],
20220
- both: [
20221
- 'before:content-[""] before:table after:content-[""] after:table',
20222
- "before:mb-[calc(var(--leading-trim-start,var(--default-leading-trim-start))-var(--line-height,calc(1em*var(--default-line-height)))/2)]",
20223
- "after:mt-[calc(var(--leading-trim-end,var(--default-leading-trim-end))-var(--line-height,calc(1em*var(--default-line-height)))/2)]"
20224
- ]
20225
- };
20226
- return /* @__PURE__ */ jsx(
20227
- "p",
20228
- {
20229
- "data-slot": "text",
20230
- ...props,
20231
- className: clsx12(className, trimClasses[trim], "text-grey-800 dark:text-grey-400", sizeClass)
20232
- }
20233
- );
20234
- }
20235
- function TextLink({ className, ...props }) {
20236
- return /* @__PURE__ */ jsx(
20237
- Link,
20238
- {
20239
- ...props,
20240
- className: clsx12(
20241
- className,
20242
- "text-primary-800 underline decoration-primary-800/50 data-hover:decoration-primary-800 dark:text-white dark:decoration-white/50 dark:data-hover:decoration-white"
20243
- )
20244
- }
20245
- );
20246
- }
20247
- function Strong({ className, ...props }) {
20248
- return /* @__PURE__ */ jsx("strong", { ...props, className: clsx12(className, "font-medium text-grey-950 dark:text-white") });
20249
- }
20250
- function Code({ className, ...props }) {
20251
- const hasLanguageClass = typeof className === "string" && className.includes("language-");
20252
- return /* @__PURE__ */ jsx(
20253
- "code",
20254
- {
20255
- ...props,
20256
- className: clsx12(
20257
- className,
20258
- !hasLanguageClass && "language-plaintext",
20259
- "text-sm sm:text-[0.8125rem]"
20260
- )
20261
- }
20262
- );
20263
- }
20264
21067
  function Loading() {
20265
21068
  return /* @__PURE__ */ jsxs("div", { className: "flex min-h-screen items-center justify-center gap-4 bg-grey-50 dark:bg-grey-900", children: [
20266
21069
  /* @__PURE__ */ jsx(Spinner, { "aria-label": "Loading...", size: "lg" }),
@@ -20820,7 +21623,7 @@ function MultiLevelPushMenu({
20820
21623
  {
20821
21624
  href: item.href,
20822
21625
  onClick: (e) => handleItemClick(item, e),
20823
- className: clsx12(
21626
+ className: clsx13(
20824
21627
  "relative flex w-full cursor-pointer items-center justify-between gap-x-6 border-l p-4 transition-colors hover:border-primary-800 hover:bg-primary-800/10",
20825
21628
  pathname === item.href ? "border-primary-800 bg-primary-800/10 font-semibold text-primary-800" : "border-transparent text-grey-800",
20826
21629
  isAnimating && "pointer-events-none"
@@ -20832,7 +21635,7 @@ function MultiLevelPushMenu({
20832
21635
  {
20833
21636
  onClick: (e) => handleItemClick(item, e),
20834
21637
  disabled: isAnimating,
20835
- className: clsx12(
21638
+ className: clsx13(
20836
21639
  "relative flex w-full cursor-pointer items-center justify-between gap-x-6 border-l p-4 transition-colors hover:border-primary-800 hover:bg-primary-800/10",
20837
21640
  pathname === item.href ? "border-primary-800 bg-primary-800/10 font-semibold text-primary-800" : "border-transparent text-grey-800",
20838
21641
  isAnimating && "pointer-events-none"
@@ -20899,7 +21702,7 @@ function MobileHeader({
20899
21702
  /* @__PURE__ */ jsxs(
20900
21703
  "div",
20901
21704
  {
20902
- className: clsx12(
21705
+ className: clsx13(
20903
21706
  "relative flex w-full items-center py-4",
20904
21707
  menu && !search && "justify-start",
20905
21708
  search && "justify-between",
@@ -20915,7 +21718,7 @@ function MobileHeader({
20915
21718
  {
20916
21719
  href: "/",
20917
21720
  "aria-label": "Home page",
20918
- className: clsx12(
21721
+ className: clsx13(
20919
21722
  "flex items-center",
20920
21723
  menu && !search && "justify-start",
20921
21724
  search && !menu && "flex-row justify-between",
@@ -20926,7 +21729,7 @@ function MobileHeader({
20926
21729
  /* @__PURE__ */ jsxs(
20927
21730
  "div",
20928
21731
  {
20929
- className: clsx12(
21732
+ className: clsx13(
20930
21733
  "flex flex-wrap items-center",
20931
21734
  menu && !search && "justify-center text-left",
20932
21735
  search && !menu && "justify-center text-left",
@@ -28937,7 +29740,7 @@ var featureBundle = {
28937
29740
  // node_modules/framer-motion/dist/es/render/components/motion/proxy.mjs
28938
29741
  var motion = /* @__PURE__ */ createMotionProxy(featureBundle, createDomVisualElement);
28939
29742
  function Navbar({ className, ...props }) {
28940
- return /* @__PURE__ */ jsx("nav", { ...props, className: clsx12(className, "flex flex-1 items-center gap-4 py-2.5") });
29743
+ return /* @__PURE__ */ jsx("nav", { ...props, className: clsx13(className, "flex flex-1 items-center gap-4 py-2.5") });
28941
29744
  }
28942
29745
  function NavbarDivider({ className, ...props }) {
28943
29746
  return /* @__PURE__ */ jsx(
@@ -28945,16 +29748,16 @@ function NavbarDivider({ className, ...props }) {
28945
29748
  {
28946
29749
  "aria-hidden": "true",
28947
29750
  ...props,
28948
- className: clsx12(className, "h-6 w-px bg-zinc-950/10 dark:bg-white/10")
29751
+ className: clsx13(className, "h-6 w-px bg-zinc-950/10 dark:bg-white/10")
28949
29752
  }
28950
29753
  );
28951
29754
  }
28952
29755
  function NavbarSection({ className, ...props }) {
28953
29756
  const id3 = useId();
28954
- return /* @__PURE__ */ jsx(LayoutGroup, { id: id3, children: /* @__PURE__ */ jsx("div", { ...props, className: clsx12(className, "flex items-center gap-3") }) });
29757
+ return /* @__PURE__ */ jsx(LayoutGroup, { id: id3, children: /* @__PURE__ */ jsx("div", { ...props, className: clsx13(className, "flex items-center gap-3") }) });
28955
29758
  }
28956
29759
  function NavbarSpacer({ className, ...props }) {
28957
- return /* @__PURE__ */ jsx("div", { "aria-hidden": "true", ...props, className: clsx12(className, "-ml-4 flex-1") });
29760
+ return /* @__PURE__ */ jsx("div", { "aria-hidden": "true", ...props, className: clsx13(className, "-ml-4 flex-1") });
28958
29761
  }
28959
29762
  var NavbarItem = forwardRef(function NavbarItem2({
28960
29763
  current,
@@ -28962,7 +29765,7 @@ var NavbarItem = forwardRef(function NavbarItem2({
28962
29765
  children,
28963
29766
  ...props
28964
29767
  }, ref) {
28965
- const classes = clsx12(
29768
+ const classes = clsx13(
28966
29769
  // Base
28967
29770
  "relative flex min-w-0 items-center gap-3 rounded-lg p-2 text-left text-base/6 font-medium text-zinc-950 sm:text-sm/5",
28968
29771
  // Leading icon/icon-only
@@ -28980,7 +29783,7 @@ var NavbarItem = forwardRef(function NavbarItem2({
28980
29783
  "dark:data-hover:bg-white/5 dark:data-hover:*:data-[slot=icon]:fill-white",
28981
29784
  "dark:data-active:bg-white/5 dark:data-active:*:data-[slot=icon]:fill-white"
28982
29785
  );
28983
- return /* @__PURE__ */ jsxs("span", { className: clsx12(className, "relative"), children: [
29786
+ return /* @__PURE__ */ jsxs("span", { className: clsx13(className, "relative"), children: [
28984
29787
  current && /* @__PURE__ */ jsx(
28985
29788
  motion.span,
28986
29789
  {
@@ -29001,7 +29804,7 @@ var NavbarItem = forwardRef(function NavbarItem2({
29001
29804
  Headless4.Button,
29002
29805
  {
29003
29806
  ...props,
29004
- className: clsx12("cursor-default", classes),
29807
+ className: clsx13("cursor-default", classes),
29005
29808
  "data-current": current ? "true" : void 0,
29006
29809
  ref,
29007
29810
  children: /* @__PURE__ */ jsx(TouchTarget, { children })
@@ -29010,14 +29813,14 @@ var NavbarItem = forwardRef(function NavbarItem2({
29010
29813
  ] });
29011
29814
  });
29012
29815
  function NavbarLabel({ className, ...props }) {
29013
- return /* @__PURE__ */ jsx("span", { ...props, className: clsx12(className, "truncate") });
29816
+ return /* @__PURE__ */ jsx("span", { ...props, className: clsx13(className, "truncate") });
29014
29817
  }
29015
29818
  function Navigation({
29016
29819
  className,
29017
29820
  onLinkClick,
29018
29821
  navigation
29019
29822
  }) {
29020
- return /* @__PURE__ */ jsx("nav", { className: clsx12("text-base lg:text-sm", className), children: /* @__PURE__ */ jsx("ul", { role: "list", className: "flex flex-col gap-9", children: navigation.map((section, index) => /* @__PURE__ */ jsxs("li", { children: [
29823
+ return /* @__PURE__ */ jsx("nav", { className: clsx13("text-base lg:text-sm", className), children: /* @__PURE__ */ jsx("ul", { role: "list", className: "flex flex-col gap-9", children: navigation.map((section, index) => /* @__PURE__ */ jsxs("li", { children: [
29021
29824
  section.links ? /* @__PURE__ */ jsx("h2", { className: "font-display font-medium text-grey-800 dark:text-white", children: section.title }) : /* @__PURE__ */ jsx("ul", { role: "list", className: "mt-2 flex flex-col gap-2 border-l lg:mt-4", children: /* @__PURE__ */ jsx("li", { className: "-ml-px flex flex-col items-start gap-2", children: /* @__PURE__ */ jsx(
29022
29825
  NavigationLink,
29023
29826
  {
@@ -29040,7 +29843,7 @@ function NavigationLink({
29040
29843
  {
29041
29844
  href,
29042
29845
  onClick,
29043
- className: clsx12(
29846
+ className: clsx13(
29044
29847
  "inline-block w-full cursor-pointer rounded-r-sm border-l py-1 pr-2 pl-4 text-left text-base/8 sm:text-sm/6",
29045
29848
  "hover:border-grey-950 hover:bg-primary-800/10 hover:font-semibold hover:text-grey-950",
29046
29849
  "dark:text-grey-400 dark:hover:border-grey-400 dark:hover:text-white",
@@ -29513,7 +30316,7 @@ function Wrapper({
29513
30316
  return /* @__PURE__ */ jsx(
29514
30317
  "div",
29515
30318
  {
29516
- className: clsx12("max-w-8xl mx-auto space-y-8 px-4 py-6 sm:px-6 lg:px-12", className),
30319
+ className: clsx13("max-w-8xl mx-auto space-y-8 px-4 py-6 sm:px-6 lg:px-12", className),
29517
30320
  ...props,
29518
30321
  children
29519
30322
  }
@@ -29527,7 +30330,7 @@ function PageHeading({
29527
30330
  return /* @__PURE__ */ jsx(
29528
30331
  "header",
29529
30332
  {
29530
- className: clsx12(
30333
+ className: clsx13(
29531
30334
  "border-b border-grey-300 bg-white dark:border-grey-700 dark:bg-grey-900",
29532
30335
  className
29533
30336
  ),
@@ -29554,7 +30357,7 @@ function Pagination({
29554
30357
  children,
29555
30358
  ...props
29556
30359
  }) {
29557
- return /* @__PURE__ */ jsx("nav", { "aria-label": ariaLabel, className: clsx12(containerStyles[variant], className), ...props, children: /* @__PURE__ */ jsx(PaginationVariantContext.Provider, { value: variant, children }) });
30360
+ return /* @__PURE__ */ jsx("nav", { "aria-label": ariaLabel, className: clsx13(containerStyles[variant], className), ...props, children: /* @__PURE__ */ jsx(PaginationVariantContext.Provider, { value: variant, children }) });
29558
30361
  }
29559
30362
  function PaginationPrevious({ href = null, className, children = "Previous" }) {
29560
30363
  const variant = React5.useContext(PaginationVariantContext);
@@ -29577,7 +30380,7 @@ function PaginationPrevious({ href = null, className, children = "Previous" }) {
29577
30380
  }
29578
30381
  ) });
29579
30382
  }
29580
- return /* @__PURE__ */ jsx("span", { className: clsx12(className, "grow basis-0"), children: /* @__PURE__ */ jsxs(
30383
+ return /* @__PURE__ */ jsx("span", { className: clsx13(className, "grow basis-0"), children: /* @__PURE__ */ jsxs(
29581
30384
  Button2,
29582
30385
  {
29583
30386
  ...href === null ? { disabled: true } : { href },
@@ -29611,7 +30414,7 @@ function PaginationNext({ href = null, className, children = "Next" }) {
29611
30414
  }
29612
30415
  ) });
29613
30416
  }
29614
- return /* @__PURE__ */ jsx("span", { className: clsx12(className, "flex grow basis-0 justify-end"), children: /* @__PURE__ */ jsxs(
30417
+ return /* @__PURE__ */ jsx("span", { className: clsx13(className, "flex grow basis-0 justify-end"), children: /* @__PURE__ */ jsxs(
29615
30418
  Button2,
29616
30419
  {
29617
30420
  ...href === null ? { disabled: true } : { href },
@@ -29627,9 +30430,9 @@ function PaginationNext({ href = null, className, children = "Next" }) {
29627
30430
  function PaginationList({ className, ...props }) {
29628
30431
  const variant = React5.useContext(PaginationVariantContext);
29629
30432
  if (variant === "line") {
29630
- return /* @__PURE__ */ jsx("div", { className: clsx12(listStyles.line, className), ...props });
30433
+ return /* @__PURE__ */ jsx("div", { className: clsx13(listStyles.line, className), ...props });
29631
30434
  }
29632
- return /* @__PURE__ */ jsx("span", { className: clsx12(listStyles.default, className), ...props });
30435
+ return /* @__PURE__ */ jsx("span", { className: clsx13(listStyles.default, className), ...props });
29633
30436
  }
29634
30437
  function PaginationPage({
29635
30438
  href,
@@ -29661,7 +30464,7 @@ function PaginationPage({
29661
30464
  "aria-current": current ? "page" : void 0,
29662
30465
  variant: current ? "solid" : "ghost",
29663
30466
  color: current ? "accent" : "light",
29664
- className: clsx12(
30467
+ className: clsx13(
29665
30468
  className,
29666
30469
  "leading-none before:absolute before:-inset-px before:rounded-sm",
29667
30470
  "min-h-8 min-w-8 sm:px-[calc(--spacing(4))] sm:py-[calc(--spacing(3))]",
@@ -29682,7 +30485,7 @@ function PaginationGap({
29682
30485
  "span",
29683
30486
  {
29684
30487
  "aria-hidden": "true",
29685
- className: clsx12(
30488
+ className: clsx13(
29686
30489
  "inline-flex items-center border-t-2 border-transparent px-4 pt-4 text-sm font-medium text-grey-800 select-none",
29687
30490
  className
29688
30491
  ),
@@ -29696,7 +30499,7 @@ function PaginationGap({
29696
30499
  {
29697
30500
  "aria-hidden": "true",
29698
30501
  ...props,
29699
- className: clsx12(
30502
+ className: clsx13(
29700
30503
  className,
29701
30504
  "w-9 text-center text-sm/6 font-semibold text-grey-950 select-none dark:text-white"
29702
30505
  ),
@@ -29716,7 +30519,7 @@ function PrevNextLinksPageLink({
29716
30519
  Link13,
29717
30520
  {
29718
30521
  href,
29719
- className: clsx12(
30522
+ className: clsx13(
29720
30523
  "flex items-center gap-x-1 text-base font-semibold text-slate-500 hover:text-slate-600 dark:text-slate-400 dark:hover:text-slate-300",
29721
30524
  dir === "previous" && "flex-row-reverse"
29722
30525
  ),
@@ -29725,7 +30528,7 @@ function PrevNextLinksPageLink({
29725
30528
  /* @__PURE__ */ jsx(
29726
30529
  Icons.east,
29727
30530
  {
29728
- className: clsx12("size-5 flex-none fill-current", dir === "previous" && "-scale-x-100")
30531
+ className: clsx13("size-5 flex-none fill-current", dir === "previous" && "-scale-x-100")
29729
30532
  }
29730
30533
  )
29731
30534
  ]
@@ -29999,7 +30802,7 @@ function Prose({
29999
30802
  return /* @__PURE__ */ jsx(
30000
30803
  Component2,
30001
30804
  {
30002
- className: clsx12(
30805
+ className: clsx13(
30003
30806
  className,
30004
30807
  "prose max-w-none dark:!prose-invert",
30005
30808
  // headings
@@ -30771,7 +31574,7 @@ function SidebarNavigation({
30771
31574
  navigation
30772
31575
  }) {
30773
31576
  const pathname = usePathname();
30774
- return /* @__PURE__ */ jsx("nav", { className: clsx12("text-base lg:text-sm", className), children: /* @__PURE__ */ jsx("ul", { role: "list", className: "flex flex-col gap-9", children: navigation.map((section, sectionIndex) => /* @__PURE__ */ jsxs("li", { children: [
31577
+ return /* @__PURE__ */ jsx("nav", { className: clsx13("text-base lg:text-sm", className), children: /* @__PURE__ */ jsx("ul", { role: "list", className: "flex flex-col gap-9", children: navigation.map((section, sectionIndex) => /* @__PURE__ */ jsxs("li", { children: [
30775
31578
  section.links ? /* @__PURE__ */ jsx("h2", { className: "font-display font-medium text-foreground dark:text-white", children: section.title }) : /* @__PURE__ */ jsx(
30776
31579
  "ul",
30777
31580
  {
@@ -30806,7 +31609,7 @@ function SidebarLink({ link, pathname, onLinkClick, depth }) {
30806
31609
  const hasChildren = Array.isArray(link.links) && link.links.length > 0;
30807
31610
  const isActive = pathname === link.href;
30808
31611
  const isActiveOrHasActiveDescendant = isLinkOrDescendantActive(link, pathname);
30809
- const baseLinkClasses = clsx12(
31612
+ const baseLinkClasses = clsx13(
30810
31613
  "w-full cursor-pointer rounded-r-sm border-l py-1 pr-2 pl-4 text-left text-base/8 sm:text-sm/6",
30811
31614
  "hover:border-grey-950 hover:bg-primary-800/10 hover:font-semibold hover:text-grey-950",
30812
31615
  "dark:text-grey-400 dark:hover:border-grey-400 dark:hover:text-white",
@@ -30816,13 +31619,13 @@ function SidebarLink({ link, pathname, onLinkClick, depth }) {
30816
31619
  /* @__PURE__ */ jsx(CollapsibleTrigger2, { asChild: true, children: /* @__PURE__ */ jsxs(
30817
31620
  "button",
30818
31621
  {
30819
- className: clsx12(baseLinkClasses, "group flex items-center justify-between gap-1"),
31622
+ className: clsx13(baseLinkClasses, "group flex items-center justify-between gap-1"),
30820
31623
  children: [
30821
31624
  /* @__PURE__ */ jsx("span", { children: link.title }),
30822
31625
  /* @__PURE__ */ jsx(
30823
31626
  Icons.chevron_right,
30824
31627
  {
30825
- className: clsx12(
31628
+ className: clsx13(
30826
31629
  "ml-2 size-5 transition-transform duration-200",
30827
31630
  "group-data-[state=open]:rotate-90"
30828
31631
  )
@@ -30831,7 +31634,7 @@ function SidebarLink({ link, pathname, onLinkClick, depth }) {
30831
31634
  ]
30832
31635
  }
30833
31636
  ) }),
30834
- /* @__PURE__ */ jsx(CollapsibleContent2, { children: /* @__PURE__ */ jsx("ul", { className: clsx12("mt-2 ml-5 flex flex-col gap-1 border-l pl-0"), children: link.links && link.links.map((childLink) => /* @__PURE__ */ jsx(
31637
+ /* @__PURE__ */ jsx(CollapsibleContent2, { children: /* @__PURE__ */ jsx("ul", { className: clsx13("mt-2 ml-5 flex flex-col gap-1 border-l pl-0"), children: link.links && link.links.map((childLink) => /* @__PURE__ */ jsx(
30835
31638
  SidebarLink,
30836
31639
  {
30837
31640
  link: childLink,
@@ -31160,7 +31963,7 @@ var StepIndicator = React5.forwardRef(
31160
31963
  return /* @__PURE__ */ jsx("ul", { role: "list", ref, className: cn("w-full", className), ...props, children: array.map((step, stepIdx) => /* @__PURE__ */ jsx(
31161
31964
  "li",
31162
31965
  {
31163
- className: clsx12(stepIdx !== array.length - 1 ? "pb-3" : "", "relative"),
31966
+ className: clsx13(stepIdx !== array.length - 1 ? "pb-3" : "", "relative"),
31164
31967
  children: step.href === pathname && !(step.status === "completed" || step.status === "error" || step.status === "saved" || step.status === "cannot-start") ? /* @__PURE__ */ jsx(Fragment, { children: step.status === "in-progress" ? /* @__PURE__ */ jsxs(Fragment, { children: [
31165
31968
  stepIdx !== array.length - 1 ? /* @__PURE__ */ jsx(
31166
31969
  "div",
@@ -31406,7 +32209,7 @@ function StepNavigation({
31406
32209
  })),
31407
32210
  [navigation, formStatus, getStatus]
31408
32211
  );
31409
- return /* @__PURE__ */ jsx("nav", { className: clsx12("text-base lg:text-sm", className), children: /* @__PURE__ */ jsx("ul", { role: "list", className: "space-y-9", children: navigationWithStatus.map((section) => /* @__PURE__ */ jsxs("li", { children: [
32212
+ return /* @__PURE__ */ jsx("nav", { className: clsx13("text-base lg:text-sm", className), children: /* @__PURE__ */ jsx("ul", { role: "list", className: "space-y-9", children: navigationWithStatus.map((section) => /* @__PURE__ */ jsxs("li", { children: [
31410
32213
  /* @__PURE__ */ jsx("h2", { className: "font-display font-medium text-slate-900 dark:text-white", children: section.title }),
31411
32214
  /* @__PURE__ */ jsx(StepIndicator, { className: "mt-2 lg:mt-4", array: section.links })
31412
32215
  ] }, section.title)) }) });
@@ -31434,7 +32237,7 @@ function SwitchGroup({ className, ...props }) {
31434
32237
  {
31435
32238
  "data-slot": "control",
31436
32239
  ...props,
31437
- className: clsx12(
32240
+ className: clsx13(
31438
32241
  className,
31439
32242
  // Basic groups
31440
32243
  "space-y-3 **:data-[slot=label]:font-normal",
@@ -31453,7 +32256,7 @@ function SwitchField({
31453
32256
  {
31454
32257
  "data-slot": "field",
31455
32258
  ...props,
31456
- className: clsx12(
32259
+ className: clsx13(
31457
32260
  className,
31458
32261
  // Base layout
31459
32262
  "grid grid-cols-[1fr_auto] gap-x-8 gap-y-1 sm:grid-cols-[1fr_auto]",
@@ -31517,7 +32320,7 @@ function Switch2({
31517
32320
  {
31518
32321
  "data-slot": "control",
31519
32322
  ...props,
31520
- className: clsx12(
32323
+ className: clsx13(
31521
32324
  className,
31522
32325
  // Base styles
31523
32326
  "group relative isolate inline-flex h-6 w-10 cursor-default rounded-full p-[3px] sm:h-5 sm:w-8",
@@ -31544,7 +32347,7 @@ function Switch2({
31544
32347
  "span",
31545
32348
  {
31546
32349
  "aria-hidden": "true",
31547
- className: clsx12(
32350
+ className: clsx13(
31548
32351
  // Basic layout
31549
32352
  "pointer-events-none relative inline-block size-4.5 rounded-full sm:size-3.5",
31550
32353
  // Transition
@@ -31653,7 +32456,7 @@ function TableOfContents({ tableOfContents }) {
31653
32456
  "ol",
31654
32457
  {
31655
32458
  role: "list",
31656
- className: clsx12(
32459
+ className: clsx13(
31657
32460
  "mt-3 flex flex-col gap-2",
31658
32461
  "border-l border-grey-900/10 dark:border-white/10",
31659
32462
  "text-sm/6 text-grey-700 dark:text-grey-400"
@@ -31664,7 +32467,7 @@ function TableOfContents({ tableOfContents }) {
31664
32467
  {
31665
32468
  href: `#${section.id}`,
31666
32469
  prefetch: false,
31667
- className: clsx12(
32470
+ className: clsx13(
31668
32471
  "-ml-px inline-block border-l pl-4",
31669
32472
  "hover:border-primary-800 dark:hover:border-white",
31670
32473
  isActive(section) ? "border-primary-800 font-semibold text-primary-800 dark:border-white dark:text-white" : "border-transparent"
@@ -31677,7 +32480,7 @@ function TableOfContents({ tableOfContents }) {
31677
32480
  {
31678
32481
  href: `#${subSection.id}`,
31679
32482
  prefetch: false,
31680
- className: clsx12(
32483
+ className: clsx13(
31681
32484
  "-ml-px inline-block border-l pl-8",
31682
32485
  "hover:border-primary-800 dark:hover:border-white",
31683
32486
  isActive(subSection) ? "border-primary-800 font-semibold text-primary-800 dark:border-white dark:text-white" : "border-transparent"
@@ -34993,6 +35796,6 @@ var languages = [
34993
35796
  "html"
34994
35797
  ];
34995
35798
 
34996
- 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, 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 };
35799
+ 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, ColorPairingToolV2, 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, 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 };
34997
35800
  //# sourceMappingURL=index.js.map
34998
35801
  //# sourceMappingURL=index.js.map