@nswds/app 1.97.15 → 1.99.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
@@ -42,6 +42,8 @@ import * as LabelPrimitive from '@radix-ui/react-label';
42
42
  import * as RadioGroupPrimitive from '@radix-ui/react-radio-group';
43
43
  import * as TabsPrimitives from '@radix-ui/react-tabs';
44
44
  import * as CollapsiblePrimitive from '@radix-ui/react-collapsible';
45
+ import * as ToggleGroupPrimitive from '@radix-ui/react-toggle-group';
46
+ import * as TogglePrimitive from '@radix-ui/react-toggle';
45
47
  import { Command as Command$1 } from 'cmdk';
46
48
  import * as DialogPrimitive from '@radix-ui/react-dialog';
47
49
  import * as ContextMenuPrimitive from '@radix-ui/react-context-menu';
@@ -49,8 +51,6 @@ import { useReactTable, getFacetedUniqueValues, getFacetedRowModel, getSortedRow
49
51
  import * as SeparatorPrimitive from '@radix-ui/react-separator';
50
52
  import { Drawer as Drawer$1 } from 'vaul';
51
53
  import { FormProvider, Controller, useFormContext, useFormState } from 'react-hook-form';
52
- import * as ToggleGroupPrimitive from '@radix-ui/react-toggle-group';
53
- import * as TogglePrimitive from '@radix-ui/react-toggle';
54
54
  import Image2 from 'next/image';
55
55
  import * as HoverCardPrimitive from '@radix-ui/react-hover-card';
56
56
  import { OTPInput, OTPInputContext } from 'input-otp';
@@ -4105,7 +4105,7 @@ function AccordionContent({
4105
4105
  );
4106
4106
  }
4107
4107
  var alertVariants = cva(
4108
- "relative w-full rounded-lg border px-4 py-3 text-sm grid has-[>svg]:grid-cols-[calc(var(--spacing)*4)_1fr] grid-cols-[0_1fr] has-[>svg]:gap-x-3 gap-y-0.5 items-start [&>svg]:size-4 [&>svg]:translate-y-0.5 [&>svg]:text-current",
4108
+ "relative w-full rounded-sm border px-4 py-3 text-sm grid has-[>svg]:grid-cols-[calc(var(--spacing)*4)_1fr] grid-cols-[0_1fr] has-[>svg]:gap-x-3 gap-y-0.5 items-start [&>svg]:size-4 [&>svg]:translate-y-0.5 [&>svg]:text-current",
4109
4109
  {
4110
4110
  variants: {
4111
4111
  variant: {
@@ -4551,7 +4551,7 @@ var AlertDialogContent = React5.forwardRef(function AlertDialogContent2({ classN
4551
4551
  ref,
4552
4552
  "data-slot": "alert-dialog-content",
4553
4553
  className: cn(
4554
- "fixed top-[50%] left-[50%] z-50 grid w-full max-w-[calc(100%-2rem)] translate-x-[-50%] translate-y-[-50%] gap-4 rounded-lg border bg-background p-6 shadow-lg duration-200 sm:max-w-lg",
4554
+ "fixed top-[50%] left-[50%] z-50 grid w-full max-w-[calc(100%-2rem)] translate-x-[-50%] translate-y-[-50%] gap-4 rounded-sm border bg-background p-6 shadow-lg duration-200 sm:max-w-lg",
4555
4555
  "data-[state=closed]:animate-out data-[state=open]:animate-in",
4556
4556
  "data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0",
4557
4557
  "data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95",
@@ -5017,7 +5017,7 @@ var ChartTooltip = ({ active, payload, label, valueFormatter }) => {
5017
5017
  {
5018
5018
  className: cn(
5019
5019
  // base
5020
- "rounded-md border text-sm shadow-md",
5020
+ "rounded-sm border text-sm shadow-md",
5021
5021
  // border color
5022
5022
  "border-gray-200 dark:border-gray-800",
5023
5023
  // background color
@@ -6292,7 +6292,7 @@ var ChartTooltip2 = ({ active, payload, label, valueFormatter }) => {
6292
6292
  {
6293
6293
  className: cn(
6294
6294
  // base
6295
- "rounded-md border text-sm shadow-md",
6295
+ "rounded-sm border text-sm shadow-md",
6296
6296
  // border color
6297
6297
  "border-gray-200 dark:border-gray-800",
6298
6298
  // background color
@@ -7386,7 +7386,7 @@ function DropdownMenuSubContent({
7386
7386
  // Base
7387
7387
  ""
7388
7388
  ],
7389
- "z-50 min-w-[8rem] origin-(--radix-dropdown-menu-content-transform-origin) overflow-hidden rounded-md border bg-popover p-1 text-popover-foreground shadow-lg data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[state=open]:animate-in data-[state=open]:fade-in-0 data-[state=open]:zoom-in-95",
7389
+ "z-50 min-w-[8rem] origin-(--radix-dropdown-menu-content-transform-origin) overflow-hidden rounded-sm border bg-popover p-1 text-popover-foreground shadow-lg data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[state=open]:animate-in data-[state=open]:fade-in-0 data-[state=open]:zoom-in-95",
7390
7390
  className
7391
7391
  ),
7392
7392
  ...props
@@ -7478,7 +7478,7 @@ function Breadcrumbs({
7478
7478
  ] }) });
7479
7479
  }
7480
7480
  var buttonVariants2 = cva(
7481
- "inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium transition-all disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4 shrink-0 [&_svg]:shrink-0 outline-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive cursor-pointer",
7481
+ "inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-sm text-sm font-medium transition-all disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4 shrink-0 [&_svg]:shrink-0 outline-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive cursor-pointer",
7482
7482
  {
7483
7483
  variants: {
7484
7484
  variant: {
@@ -7572,7 +7572,7 @@ function Calendar({
7572
7572
  defaultClassNames.dropdowns
7573
7573
  ),
7574
7574
  dropdown_root: cn(
7575
- "relative has-focus:border-ring border border-input shadow-xs has-focus:ring-ring/50 has-focus:ring-[3px] rounded-md",
7575
+ "relative rounded-sm border border-input shadow-xs has-focus:border-ring has-focus:ring-ring/50 has-focus:ring-[3px]",
7576
7576
  defaultClassNames.dropdown_root
7577
7577
  ),
7578
7578
  dropdown: cn("absolute inset-0 opacity-0", defaultClassNames.dropdown),
@@ -7658,7 +7658,7 @@ function CalendarDayButton({
7658
7658
  "data-range-end": modifiers.range_end,
7659
7659
  "data-range-middle": modifiers.range_middle,
7660
7660
  className: cn(
7661
- "flex aspect-square size-auto w-full min-w-(--cell-size) flex-col gap-1 leading-none font-normal group-data-[focused=true]/day:relative group-data-[focused=true]/day:z-10 group-data-[focused=true]/day:border-ring group-data-[focused=true]/day:ring-[3px] group-data-[focused=true]/day:ring-ring/50 data-[range-end=true]:rounded-md data-[range-end=true]:rounded-r-md data-[range-end=true]:bg-primary data-[range-end=true]:text-primary-foreground data-[range-middle=true]:rounded-none data-[range-middle=true]:bg-accent data-[range-middle=true]:text-accent-foreground data-[range-start=true]:rounded-md data-[range-start=true]:rounded-l-md data-[range-start=true]:bg-primary data-[range-start=true]:text-primary-foreground data-[selected-single=true]:bg-primary-800 data-[selected-single=true]:text-white dark:hover:text-accent-foreground [&>span]:text-xs [&>span]:opacity-70",
7661
+ "flex aspect-square size-auto w-full min-w-(--cell-size) flex-col gap-1 leading-none font-normal group-data-[focused=true]/day:relative group-data-[focused=true]/day:z-10 group-data-[focused=true]/day:border-ring group-data-[focused=true]/day:ring-[3px] group-data-[focused=true]/day:ring-ring/50 data-[range-end=true]:rounded-sm data-[range-end=true]:rounded-r-sm data-[range-end=true]:bg-primary data-[range-end=true]:text-primary-foreground data-[range-middle=true]:rounded-none data-[range-middle=true]:bg-accent data-[range-middle=true]:text-accent-foreground data-[range-start=true]:rounded-sm data-[range-start=true]:rounded-l-sm data-[range-start=true]:bg-primary data-[range-start=true]:text-primary-foreground data-[selected-single=true]:bg-primary-800 data-[selected-single=true]:text-white dark:hover:text-accent-foreground [&>span]:text-xs [&>span]:opacity-70",
7662
7662
  defaultClassNames.day,
7663
7663
  className
7664
7664
  ),
@@ -7672,7 +7672,7 @@ function Card({ className, ...props }) {
7672
7672
  {
7673
7673
  "data-slot": "card",
7674
7674
  className: cn(
7675
- "flex flex-col gap-6 rounded-md border border-grey-200 bg-card py-6 text-card-foreground dark:border-grey-700",
7675
+ "flex flex-col gap-6 rounded-sm border border-grey-200 bg-card py-6 text-card-foreground dark:border-grey-700",
7676
7676
  className
7677
7677
  ),
7678
7678
  ...props
@@ -8235,7 +8235,7 @@ function ChartTooltipContent({
8235
8235
  "div",
8236
8236
  {
8237
8237
  className: cn(
8238
- "grid min-w-[8rem] items-start gap-1.5 rounded-lg border border-border/50 bg-background px-2.5 py-1.5 text-xs shadow-xl",
8238
+ "grid min-w-[8rem] items-start gap-1.5 rounded-sm border border-border/50 bg-background px-2.5 py-1.5 text-xs shadow-xl",
8239
8239
  className
8240
8240
  ),
8241
8241
  children: [
@@ -8256,7 +8256,7 @@ function ChartTooltipContent({
8256
8256
  "div",
8257
8257
  {
8258
8258
  className: cn(
8259
- "shrink-0 rounded-[2px] border-(--color-border) bg-(--color-bg)",
8259
+ "shrink-0 rounded-sm border-(--color-border) bg-(--color-bg)",
8260
8260
  {
8261
8261
  "h-2.5 w-2.5": indicator === "dot",
8262
8262
  "w-1": indicator === "line",
@@ -8363,7 +8363,7 @@ function Checkbox({ className, ...props }) {
8363
8363
  "data-slot": "checkbox",
8364
8364
  className: cn(
8365
8365
  // Base styles
8366
- "peer flex size-8 shrink-0 cursor-pointer items-center justify-center rounded-[4px] border border-primary-800 shadow-xs ring-offset-white transition-shadow outline-none",
8366
+ "peer flex size-8 shrink-0 cursor-pointer items-center justify-center rounded-sm border border-primary-800 shadow-xs ring-offset-white transition-shadow outline-none",
8367
8367
  // Dark mode styles
8368
8368
  "dark:bg-input/30",
8369
8369
  // Checked styles
@@ -13525,7 +13525,7 @@ function PreWithCopy(props) {
13525
13525
  /* @__PURE__ */ jsxs(
13526
13526
  "button",
13527
13527
  {
13528
- className: "absolute top-2 right-2 m-0.5 inline-flex h-8 items-center justify-center rounded-lg border border-gray-200 bg-white px-2.5 py-2 text-gray-900 opacity-0 transition-opacity group-hover:opacity-100 hover:bg-gray-100 dark:border-gray-600 dark:bg-gray-800 dark:text-gray-400 dark:hover:bg-gray-700",
13528
+ className: "absolute top-2 right-2 m-0.5 inline-flex h-8 items-center justify-center rounded-sm border border-gray-200 bg-white px-2.5 py-2 text-gray-900 opacity-0 transition-opacity group-hover:opacity-100 hover:bg-gray-100 dark:border-gray-600 dark:bg-gray-800 dark:text-gray-400 dark:hover:bg-gray-700",
13529
13529
  "aria-label": "Copy code to clipboard",
13530
13530
  onClick: handleCopy,
13531
13531
  children: [
@@ -13591,7 +13591,7 @@ function PopoverContent({
13591
13591
  className: cn(
13592
13592
  [
13593
13593
  // Base
13594
- "z-50 w-72 origin-(--radix-popover-content-transform-origin) rounded-md border bg-background p-4 text-foreground shadow-md outline-hidden",
13594
+ "z-50 w-72 origin-(--radix-popover-content-transform-origin) rounded-sm border bg-background p-4 text-foreground shadow-md outline-hidden",
13595
13595
  // Open
13596
13596
  "data-[state=open]:animate-in data-[state=open]:fade-in-0 data-[state=open]:zoom-in-95",
13597
13597
  // Closed
@@ -13968,7 +13968,7 @@ function SegmentedControlTrigger({
13968
13968
  {
13969
13969
  "data-slot": "segmented-control-trigger",
13970
13970
  className: cn(
13971
- "inline-flex h-[calc(100%-1px)] flex-1 items-center justify-center gap-1.5 rounded-md border border-transparent px-2 py-1 text-sm font-medium whitespace-nowrap text-foreground transition-[color,box-shadow] focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 focus-visible:outline-1 focus-visible:outline-ring disabled:pointer-events-none disabled:opacity-50 data-[state=active]:bg-background data-[state=active]:shadow-sm dark:text-muted-foreground dark:data-[state=active]:border-input dark:data-[state=active]:bg-input/30 dark:data-[state=active]:text-foreground [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",
13971
+ "inline-flex h-[calc(100%-1px)] flex-1 items-center justify-center gap-1.5 rounded-sm border border-transparent px-2 py-1 text-sm font-medium whitespace-nowrap text-foreground transition-[color,box-shadow] focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 focus-visible:outline-1 focus-visible:outline-ring disabled:pointer-events-none disabled:opacity-50 data-[state=active]:bg-background data-[state=active]:shadow-sm dark:text-muted-foreground dark:data-[state=active]:border-input dark:data-[state=active]:bg-input/30 dark:data-[state=active]:text-foreground [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",
13972
13972
  className
13973
13973
  ),
13974
13974
  ...props
@@ -13994,7 +13994,7 @@ function ThemeSelectorLoading() {
13994
13994
  ] }),
13995
13995
  /* @__PURE__ */ jsxs("div", { className: "space-y-3", children: [
13996
13996
  /* @__PURE__ */ jsx("div", { className: "h-5 w-20 rounded bg-grey-200" }),
13997
- /* @__PURE__ */ jsxs("div", { className: "gap-3 rounded-md border border-muted bg-muted/30 p-3", children: [
13997
+ /* @__PURE__ */ jsxs("div", { className: "gap-3 rounded-sm border border-muted bg-muted/30 p-3", children: [
13998
13998
  /* @__PURE__ */ jsxs("div", { className: "mb-2 flex min-w-0 items-center justify-between", children: [
13999
13999
  /* @__PURE__ */ jsx("div", { className: "h-4 w-48 rounded bg-grey-200" }),
14000
14000
  /* @__PURE__ */ jsx("div", { className: "h-8 w-8 rounded bg-grey-200" })
@@ -14174,7 +14174,7 @@ function ThemeSelectorContent({
14174
14174
  ] }),
14175
14175
  /* @__PURE__ */ jsxs("div", { className: "space-y-3", children: [
14176
14176
  /* @__PURE__ */ jsx("h3", { className: "font-medium", children: "Share Theme" }),
14177
- /* @__PURE__ */ jsxs("div", { className: "gap-3 rounded-md border border-muted bg-muted/30 p-3", children: [
14177
+ /* @__PURE__ */ jsxs("div", { className: "gap-3 rounded-sm border border-muted bg-muted/30 p-3", children: [
14178
14178
  /* @__PURE__ */ jsxs("div", { className: "mb-2 flex min-w-0 items-center justify-between", children: [
14179
14179
  /* @__PURE__ */ jsx("p", { className: "text-sm text-muted-foreground", children: "Copy this URL to share your theme selection:" }),
14180
14180
  /* @__PURE__ */ jsxs(
@@ -14192,7 +14192,7 @@ function ThemeSelectorContent({
14192
14192
  }
14193
14193
  )
14194
14194
  ] }),
14195
- /* @__PURE__ */ jsx("code", { className: "block w-full rounded border bg-background px-2 py-1.5 font-mono text-xs break-all text-foreground", children: themeUrl })
14195
+ /* @__PURE__ */ jsx("code", { className: "block w-full rounded-sm border bg-background px-2 py-1.5 font-mono text-xs break-all text-foreground", children: themeUrl })
14196
14196
  ] })
14197
14197
  ] })
14198
14198
  ] });
@@ -14244,7 +14244,7 @@ function TooltipContent({
14244
14244
  }
14245
14245
  function CodeDemoLoading() {
14246
14246
  return /* @__PURE__ */ jsxs("div", { className: "mt-8 animate-pulse", children: [
14247
- /* @__PURE__ */ jsx("div", { className: "w-full rounded-t-xl border border-grey-200 bg-grey-50 p-4 dark:border-grey-600 dark:bg-grey-700", children: /* @__PURE__ */ jsxs("div", { className: "grid grid-cols-2 sm:grid-cols-3", children: [
14247
+ /* @__PURE__ */ jsx("div", { className: "w-full rounded-t-sm border border-grey-200 bg-grey-50 p-4 dark:border-grey-600 dark:bg-grey-700", children: /* @__PURE__ */ jsxs("div", { className: "grid grid-cols-2 sm:grid-cols-3", children: [
14248
14248
  /* @__PURE__ */ jsx("div", { className: "h-10 w-32 rounded bg-grey-200 dark:bg-grey-600" }),
14249
14249
  /* @__PURE__ */ jsx("div", { className: "h-10 w-32 rounded bg-grey-200 dark:bg-grey-600" }),
14250
14250
  /* @__PURE__ */ jsxs("div", { className: "flex justify-end gap-3", children: [
@@ -14255,7 +14255,7 @@ function CodeDemoLoading() {
14255
14255
  ] }) }),
14256
14256
  /* @__PURE__ */ jsx("div", { className: "flex border-x border-grey-200 bg-white bg-gradient-to-r p-5 dark:border-grey-600 dark:bg-grey-900", children: /* @__PURE__ */ jsx("div", { className: "h-64 w-full rounded bg-grey-200 dark:bg-grey-600" }) }),
14257
14257
  /* @__PURE__ */ jsxs("div", { className: "border border-grey-200 dark:border-grey-600", children: [
14258
- /* @__PURE__ */ jsx("div", { className: "flex w-full rounded-t-md border-b border-grey-200 bg-grey-50 p-2 dark:border-grey-600 dark:bg-grey-700", children: /* @__PURE__ */ jsx("div", { className: "h-8 w-24 rounded bg-grey-200 dark:bg-grey-600" }) }),
14258
+ /* @__PURE__ */ jsx("div", { className: "flex w-full rounded-t-sm border-b border-grey-200 bg-grey-50 p-2 dark:border-grey-600 dark:bg-grey-700", children: /* @__PURE__ */ jsx("div", { className: "h-8 w-24 rounded bg-grey-200 dark:bg-grey-600" }) }),
14259
14259
  /* @__PURE__ */ jsx("div", { className: "h-48 bg-grey-100 dark:bg-grey-800" })
14260
14260
  ] })
14261
14261
  ] });
@@ -14439,7 +14439,7 @@ function CodeDemoContent({ data, showCode = true, controls = defaultControls })
14439
14439
  }
14440
14440
  }, [themeCategory, primaryColor, accentColor, greyColor, isThemeInitialized]);
14441
14441
  return /* @__PURE__ */ jsxs("div", { className: "mt-8", children: [
14442
- /* @__PURE__ */ jsx("div", { className: "w-full rounded-t-xl border border-grey-200 bg-grey-50 p-4 dark:border-grey-600 dark:bg-grey-700", children: /* @__PURE__ */ jsxs("div", { className: "relative flex w-full items-center", children: [
14442
+ /* @__PURE__ */ jsx("div", { className: "w-full rounded-t-sm border border-grey-200 bg-grey-50 p-4 dark:border-grey-600 dark:bg-grey-700", children: /* @__PURE__ */ jsxs("div", { className: "relative flex w-full items-center", children: [
14443
14443
  /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-2", children: [
14444
14444
  data.githubSlug && /* @__PURE__ */ jsx(EditOnGithubButton, { githubSlug: data.githubSlug }),
14445
14445
  data.figmaSlug && /* @__PURE__ */ jsx(OpenInFigmaButton, { figmaSlug: data.figmaSlug })
@@ -14498,7 +14498,7 @@ function CodeDemoContent({ data, showCode = true, controls = defaultControls })
14498
14498
  shouldExpand && "pb-[41px]"
14499
14499
  ),
14500
14500
  children: [
14501
- /* @__PURE__ */ jsxs("div", { className: "flex w-full rounded-t-md border-b border-grey-200 bg-grey-50 dark:border-grey-600 dark:bg-grey-700", children: [
14501
+ /* @__PURE__ */ jsxs("div", { className: "flex w-full rounded-t-sm border-b border-grey-200 bg-grey-50 dark:border-grey-600 dark:bg-grey-700", children: [
14502
14502
  /* @__PURE__ */ jsx(Tabs, { tabIndex, items: codeItems, onSelect: setTabIndex }),
14503
14503
  variants.length > 0 && /* @__PURE__ */ jsxs(Select, { onValueChange: (value) => handleSelectVariant(value), children: [
14504
14504
  /* @__PURE__ */ jsx(SelectTrigger, { size: "sm", children: /* @__PURE__ */ jsx(SelectValue, { placeholder: "Select a variant" }) }),
@@ -14918,6 +14918,972 @@ function ColorCard({ name, token, hex: hex2, rgb: rgb2, hsl, oklch: oklch2, form
14918
14918
  ] })
14919
14919
  ] }) });
14920
14920
  }
14921
+ var recommendedBackgroundTones = [50, 100, 200, 400, 600, 800];
14922
+ var AAA_NORMAL_TEXT_RATIO = 7;
14923
+ var MIN_DARK_BACKGROUND_TONE_FOR_WHITE = 600;
14924
+ var WHITE_FOREGROUND = {
14925
+ token: "white",
14926
+ name: "White",
14927
+ hex: "#ffffff",
14928
+ rgb: "rgb(255, 255, 255)",
14929
+ hsl: "hsl(0, 0%, 100%)",
14930
+ oklch: "oklch(1 0 0)",
14931
+ tone: 0
14932
+ };
14933
+ function extractTone(token) {
14934
+ const match = token.match(/-(\d+)$/);
14935
+ return match ? Number.parseInt(match[1], 10) : 0;
14936
+ }
14937
+ function formatFamilyLabel(name, key) {
14938
+ if (key === "grey") return "Grey";
14939
+ return name.replace(/^NSW Aboriginal\s+/i, "").replace(/^NSW\s+/i, "").trim();
14940
+ }
14941
+ function toPairingColor(color2) {
14942
+ return {
14943
+ ...color2,
14944
+ tone: extractTone(color2.token)
14945
+ };
14946
+ }
14947
+ function getPreferredForegroundTone(backgroundTone) {
14948
+ if (backgroundTone <= 200) return 800;
14949
+ if (backgroundTone <= 500) return 700;
14950
+ if (backgroundTone <= 650) return 250;
14951
+ return 200;
14952
+ }
14953
+ function getPairRating(contrastRatio) {
14954
+ if (contrastRatio >= 7) return "AAA";
14955
+ if (contrastRatio >= 4.5) return "AA";
14956
+ return "AA Large";
14957
+ }
14958
+ function isPreferredDirection(backgroundTone, foregroundTone, preferredForegroundTone) {
14959
+ if (preferredForegroundTone < backgroundTone) {
14960
+ return foregroundTone < backgroundTone;
14961
+ }
14962
+ return foregroundTone > backgroundTone;
14963
+ }
14964
+ function buildPair(background, foreground) {
14965
+ const contrastRatio = culori.wcagContrast(background.hex, foreground.hex);
14966
+ return {
14967
+ id: `${background.token}:${foreground.token}`,
14968
+ background,
14969
+ foreground,
14970
+ contrastRatio,
14971
+ passes: {
14972
+ aaLarge: contrastRatio >= 3,
14973
+ aaText: contrastRatio >= 4.5,
14974
+ aaaLarge: contrastRatio >= 4.5,
14975
+ aaaText: contrastRatio >= 7
14976
+ },
14977
+ rating: getPairRating(contrastRatio)
14978
+ };
14979
+ }
14980
+ function pickForeground(colorsToPair, background, minimumRatio) {
14981
+ const preferredForegroundTone = getPreferredForegroundTone(background.tone);
14982
+ const passingCandidates = colorsToPair.filter((color2) => color2.token !== background.token).map((color2) => buildPair(background, color2)).filter((pair) => pair.contrastRatio >= minimumRatio);
14983
+ if (passingCandidates.length === 0) return null;
14984
+ const preferredCandidates = passingCandidates.filter(
14985
+ (pair) => isPreferredDirection(background.tone, pair.foreground.tone, preferredForegroundTone)
14986
+ );
14987
+ const candidates = preferredCandidates.length > 0 ? preferredCandidates : passingCandidates;
14988
+ return candidates.sort((left, right) => {
14989
+ const leftTargetDelta = Math.abs(left.foreground.tone - preferredForegroundTone);
14990
+ const rightTargetDelta = Math.abs(right.foreground.tone - preferredForegroundTone);
14991
+ if (leftTargetDelta !== rightTargetDelta) {
14992
+ return leftTargetDelta - rightTargetDelta;
14993
+ }
14994
+ const leftToneGap = Math.abs(left.foreground.tone - background.tone);
14995
+ const rightToneGap = Math.abs(right.foreground.tone - background.tone);
14996
+ if (leftToneGap !== rightToneGap) {
14997
+ return rightToneGap - leftToneGap;
14998
+ }
14999
+ return right.contrastRatio - left.contrastRatio;
15000
+ })[0];
15001
+ }
15002
+ function buildRecommendedPairs(colorsToPair, minimumRatio) {
15003
+ const backgrounds = recommendedBackgroundTones.map((tone) => colorsToPair.find((color2) => color2.tone === tone)).filter((color2) => Boolean(color2));
15004
+ const recommendedPairs = [];
15005
+ for (const background of backgrounds) {
15006
+ const pair = pickForeground(colorsToPair, background, minimumRatio);
15007
+ const whitePair = background.tone >= MIN_DARK_BACKGROUND_TONE_FOR_WHITE ? buildPair(background, WHITE_FOREGROUND) : null;
15008
+ if (pair && !recommendedPairs.some((item) => item.id === pair.id)) {
15009
+ recommendedPairs.push(pair);
15010
+ }
15011
+ if (whitePair && whitePair.contrastRatio >= minimumRatio && !recommendedPairs.some((item) => item.id === whitePair.id)) {
15012
+ recommendedPairs.push(whitePair);
15013
+ }
15014
+ }
15015
+ return recommendedPairs;
15016
+ }
15017
+ function buildRecommendedCollections(minimumRatio) {
15018
+ return {
15019
+ brand: Object.entries(colors.brand).map(([key, palette]) => {
15020
+ const scale2 = palette.colors.map(toPairingColor);
15021
+ return {
15022
+ key,
15023
+ label: formatFamilyLabel(palette.name, key),
15024
+ paletteName: palette.name,
15025
+ colors: scale2,
15026
+ recommendedPairs: buildRecommendedPairs(scale2, minimumRatio)
15027
+ };
15028
+ }),
15029
+ aboriginal: Object.entries(colors.aboriginal).map(([key, palette]) => {
15030
+ const scale2 = palette.colors.map(toPairingColor);
15031
+ return {
15032
+ key,
15033
+ label: formatFamilyLabel(palette.name, key),
15034
+ paletteName: palette.name,
15035
+ colors: scale2,
15036
+ recommendedPairs: buildRecommendedPairs(scale2, minimumRatio)
15037
+ };
15038
+ })
15039
+ };
15040
+ }
15041
+ var recommendedAaaPairingCollections = buildRecommendedCollections(AAA_NORMAL_TEXT_RATIO);
15042
+ function getWhiteForegroundPair(background) {
15043
+ return buildPair(background, WHITE_FOREGROUND);
15044
+ }
15045
+ function supportsWhiteForegroundPreview(background) {
15046
+ return background.tone >= MIN_DARK_BACKGROUND_TONE_FOR_WHITE;
15047
+ }
15048
+ function getPairingColorValue(color2, format) {
15049
+ return getColorValue(color2, format);
15050
+ }
15051
+ var styles3 = {
15052
+ base: [
15053
+ // Base
15054
+ "inline-flex items-center justify-center gap-2 rounded-sm text-sm font-medium bg-transparent transition-all whitespace-nowrap cursor-pointer border-(--toggle-border) [--toggle-border:var(--color-grey-200)] text-grey-800",
15055
+ // States
15056
+ "data-[state=on]:bg-grey-100 data-[state=on]:text-grey-850",
15057
+ // Hover
15058
+ "hover:bg-grey-100 hover:text-grey-850",
15059
+ // Focus
15060
+ "focus:outline focus:outline-2 focus:outline-offset-0 focus:outline-(--toggle-border)",
15061
+ // Dark mode
15062
+ "dark:text-white",
15063
+ // Dark mode states
15064
+ "dark:data-[state=on]:bg-white/10 dark:data-[state=on]:text-white",
15065
+ // Dark mode hover
15066
+ "dark:hover:bg-white/10 dark:hover:text-white",
15067
+ // Disabled
15068
+ "disabled:pointer-events-none disabled:opacity-50",
15069
+ // Icon
15070
+ '[&_svg]:pointer-events-none [&_svg:not([class*="size-"])]:size-4 [&_svg]:shrink-0',
15071
+ // Aria invalid
15072
+ "aria-invalid:ring-destructive/20 aria-invalid:border-destructive",
15073
+ // Aria invalid dark mode
15074
+ "dark:aria-invalid:ring-destructive/40"
15075
+ ],
15076
+ outline: [
15077
+ // Base
15078
+ "text-grey-800 border [--toggle-border:var(--color-grey-300)]",
15079
+ // States
15080
+ "hover:[--toggle-border:var(--color-grey-400)]",
15081
+ // Dark mode
15082
+ "dark:[--toggle-border:white]/40",
15083
+ // Dark mode states
15084
+ "dark:hover:[--toggle-border:white]/50",
15085
+ // Data on
15086
+ "data-[state=on]:bg-primary-800/10"
15087
+ ]
15088
+ };
15089
+ var toggleVariants = cva(styles3.base, {
15090
+ variants: {
15091
+ variant: {
15092
+ ghost: "",
15093
+ outline: clsx12(styles3.outline)
15094
+ },
15095
+ size: {
15096
+ default: "h-9 px-2 min-w-9",
15097
+ sm: "h-8 px-1.5 min-w-8",
15098
+ lg: "h-10 px-2.5 min-w-10"
15099
+ }
15100
+ },
15101
+ defaultVariants: {
15102
+ variant: "ghost",
15103
+ size: "default"
15104
+ }
15105
+ });
15106
+ function Toggle({
15107
+ className,
15108
+ variant,
15109
+ size,
15110
+ ...props
15111
+ }) {
15112
+ return /* @__PURE__ */ jsx(
15113
+ TogglePrimitive.Root,
15114
+ {
15115
+ "data-slot": "toggle",
15116
+ className: cn(toggleVariants({ variant, size, className })),
15117
+ ...props
15118
+ }
15119
+ );
15120
+ }
15121
+ var ToggleGroupContext = React5.createContext({
15122
+ size: "default",
15123
+ variant: "ghost"
15124
+ });
15125
+ function ToggleGroup({
15126
+ className,
15127
+ variant,
15128
+ size,
15129
+ children,
15130
+ ...props
15131
+ }) {
15132
+ return /* @__PURE__ */ jsx(
15133
+ ToggleGroupPrimitive.Root,
15134
+ {
15135
+ "data-slot": "toggle-group",
15136
+ "data-variant": variant,
15137
+ "data-size": size,
15138
+ className: cn(
15139
+ "group/toggle-group flex w-fit items-center rounded-md data-[variant=outline]:shadow-xs",
15140
+ className
15141
+ ),
15142
+ ...props,
15143
+ children: /* @__PURE__ */ jsx(ToggleGroupContext.Provider, { value: { variant, size }, children })
15144
+ }
15145
+ );
15146
+ }
15147
+ function ToggleGroupItem({
15148
+ className,
15149
+ children,
15150
+ variant,
15151
+ size,
15152
+ ...props
15153
+ }) {
15154
+ const context = React5.useContext(ToggleGroupContext);
15155
+ return /* @__PURE__ */ jsx(
15156
+ ToggleGroupPrimitive.Item,
15157
+ {
15158
+ "data-slot": "toggle-group-item",
15159
+ "data-variant": context.variant || variant,
15160
+ "data-size": context.size || size,
15161
+ className: cn(
15162
+ toggleVariants({
15163
+ variant: context.variant || variant,
15164
+ size: context.size || size
15165
+ }),
15166
+ "min-w-0 shrink-0 rounded-none shadow-none first:rounded-l-sm last:rounded-r-sm focus:z-10 focus-visible:z-10 data-[variant=outline]:border-l-0 data-[variant=outline]:first:border-l",
15167
+ className
15168
+ ),
15169
+ ...props,
15170
+ children
15171
+ }
15172
+ );
15173
+ }
15174
+ function FormatToggle({ format, setFormat }) {
15175
+ return /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-2", children: [
15176
+ /* @__PURE__ */ jsx("span", { className: "text-sm font-medium", children: "Format:" }),
15177
+ /* @__PURE__ */ jsxs(
15178
+ ToggleGroup,
15179
+ {
15180
+ type: "single",
15181
+ value: format,
15182
+ onValueChange: (value) => value && setFormat(value),
15183
+ children: [
15184
+ /* @__PURE__ */ jsx(ToggleGroupItem, { value: "hex", "aria-label": "HEX format", children: "HEX" }),
15185
+ /* @__PURE__ */ jsx(ToggleGroupItem, { value: "rgb", "aria-label": "RGB format", children: "RGB" }),
15186
+ /* @__PURE__ */ jsx(ToggleGroupItem, { value: "hsl", "aria-label": "HSL format", children: "HSL" }),
15187
+ /* @__PURE__ */ jsx(ToggleGroupItem, { value: "oklch", "aria-label": "OKLCH format", children: "OKLCH" })
15188
+ ]
15189
+ }
15190
+ )
15191
+ ] });
15192
+ }
15193
+ function getPreferredFamilyKey(families) {
15194
+ return families.find((family) => family.key === "green")?.key ?? families[0]?.key ?? "";
15195
+ }
15196
+ function getDefaultPair(family) {
15197
+ if (!family || family.recommendedPairs.length === 0) return null;
15198
+ return family.recommendedPairs.reduce((bestPair, pair) => {
15199
+ const bestDelta = Math.abs(bestPair.background.tone - 600);
15200
+ const currentDelta = Math.abs(pair.background.tone - 600);
15201
+ return currentDelta < bestDelta ? pair : bestPair;
15202
+ }, family.recommendedPairs[0]);
15203
+ }
15204
+ function getFamilySwatchColor(family) {
15205
+ return family.colors.find((color2) => color2.tone === 500)?.hex ?? family.colors.find((color2) => color2.tone === 400)?.hex ?? family.colors[Math.min(3, family.colors.length - 1)]?.hex ?? "transparent";
15206
+ }
15207
+ function getToneFromToken(token) {
15208
+ if (!token) return null;
15209
+ const match = token.match(/-(\d+)$/);
15210
+ return match ? Number.parseInt(match[1], 10) : null;
15211
+ }
15212
+ function isApprovedBackgroundTone(color2) {
15213
+ return recommendedBackgroundTones.includes(
15214
+ color2.tone
15215
+ );
15216
+ }
15217
+ function getBackgroundOptions(family) {
15218
+ return family?.colors.filter(isApprovedBackgroundTone) ?? [];
15219
+ }
15220
+ function isWhiteForegroundPair(pair) {
15221
+ return pair.foreground.token === "white";
15222
+ }
15223
+ function getRecommendedPairForBackground(family, backgroundToken, preferredPairId) {
15224
+ if (!family) return null;
15225
+ const backgroundPairs = family.recommendedPairs.filter(
15226
+ (pair) => pair.background.token === backgroundToken
15227
+ );
15228
+ if (backgroundPairs.length === 0) return null;
15229
+ if (preferredPairId) {
15230
+ const preferredPair = backgroundPairs.find((pair) => pair.id === preferredPairId);
15231
+ if (preferredPair) {
15232
+ return preferredPair;
15233
+ }
15234
+ }
15235
+ return backgroundPairs.find((pair) => !isWhiteForegroundPair(pair)) ?? backgroundPairs[0];
15236
+ }
15237
+ function getFallbackBackgroundToken(family, preferredTone) {
15238
+ const backgroundOptions = getBackgroundOptions(family);
15239
+ if (preferredTone) {
15240
+ const preferredBackground = backgroundOptions.find((color2) => color2.tone === preferredTone);
15241
+ if (preferredBackground) {
15242
+ return preferredBackground.token;
15243
+ }
15244
+ }
15245
+ return getDefaultPair(family)?.background.token ?? backgroundOptions[0]?.token ?? "";
15246
+ }
15247
+ function ColorPairingToolLoading() {
15248
+ return /* @__PURE__ */ jsxs("div", { className: "animate-pulse space-y-6", children: [
15249
+ /* @__PURE__ */ jsx("div", { className: "h-40 rounded-sm border border-grey-200 bg-grey-50 dark:border-grey-700 dark:bg-grey-900" }),
15250
+ /* @__PURE__ */ jsxs("div", { className: "grid gap-6 xl:grid-cols-[minmax(0,1.3fr)_minmax(20rem,0.9fr)]", children: [
15251
+ /* @__PURE__ */ jsx("div", { className: "h-96 rounded-sm border border-grey-200 bg-grey-50 dark:border-grey-700 dark:bg-grey-900" }),
15252
+ /* @__PURE__ */ jsx("div", { className: "h-96 rounded-sm border border-grey-200 bg-grey-50 dark:border-grey-700 dark:bg-grey-900" })
15253
+ ] })
15254
+ ] });
15255
+ }
15256
+ function getInitialPairingState(searchParams) {
15257
+ const paletteParam = searchParams.get("palette");
15258
+ const familyParam = searchParams.get("family");
15259
+ const pairParam = searchParams.get("pair");
15260
+ const backgroundParam = searchParams.get("background");
15261
+ const themeCategory = paletteParam === "brand" || paletteParam === "aboriginal" ? paletteParam : "brand";
15262
+ const families = recommendedAaaPairingCollections[themeCategory];
15263
+ const familyKey = families.some((family) => family.key === familyParam) ? familyParam : getPreferredFamilyKey(families);
15264
+ const activeFamily = families.find((family) => family.key === familyKey) ?? families[0];
15265
+ const backgroundOptions = getBackgroundOptions(activeFamily);
15266
+ const pairBackgroundToken = activeFamily?.recommendedPairs.find((pair) => pair.id === pairParam)?.background.token ?? null;
15267
+ const selectedBackgroundToken = backgroundOptions.some((color2) => color2.token === backgroundParam) ? backgroundParam : getFallbackBackgroundToken(
15268
+ activeFamily,
15269
+ getToneFromToken(backgroundParam ?? pairBackgroundToken)
15270
+ );
15271
+ const selectedPairId = getRecommendedPairForBackground(activeFamily, selectedBackgroundToken, pairParam)?.id ?? "";
15272
+ return { familyKey, selectedBackgroundToken, selectedPairId, themeCategory };
15273
+ }
15274
+ function PairPreview({
15275
+ family,
15276
+ isRecommended,
15277
+ pair
15278
+ }) {
15279
+ const whiteForeground = isWhiteForegroundPair(pair);
15280
+ const statusLabel = isRecommended ? "Pass" : pair.passes.aaaLarge ? "Large text only" : "Example only";
15281
+ const StatusIcon = isRecommended ? Icons.check : Icons.info;
15282
+ return /* @__PURE__ */ jsx(Card, { className: "gap-0 overflow-hidden py-0", children: /* @__PURE__ */ jsx(
15283
+ "div",
15284
+ {
15285
+ className: "p-6 sm:min-h-[26rem] sm:p-8",
15286
+ style: {
15287
+ backgroundColor: pair.background.hex,
15288
+ color: pair.foreground.hex
15289
+ },
15290
+ children: /* @__PURE__ */ jsxs("div", { className: "flex min-h-[22rem] flex-col justify-between gap-8", children: [
15291
+ /* @__PURE__ */ jsxs("div", { className: "flex flex-wrap items-center gap-2", children: [
15292
+ /* @__PURE__ */ jsxs(
15293
+ "span",
15294
+ {
15295
+ className: "inline-flex items-center gap-2 rounded-full border px-3 py-1 text-[0.72rem] font-semibold tracking-[0.16em] uppercase",
15296
+ style: {
15297
+ borderColor: pair.foreground.hex,
15298
+ backgroundColor: pair.foreground.hex,
15299
+ color: pair.background.hex
15300
+ },
15301
+ children: [
15302
+ /* @__PURE__ */ jsx(Icons.palette, { "data-slot": "icon", className: "size-4" }),
15303
+ family.label
15304
+ ]
15305
+ }
15306
+ ),
15307
+ /* @__PURE__ */ jsxs(
15308
+ "span",
15309
+ {
15310
+ className: "inline-flex rounded-full border px-3 py-1 text-[0.72rem] font-semibold tracking-[0.16em] uppercase",
15311
+ style: {
15312
+ borderColor: pair.foreground.hex
15313
+ },
15314
+ children: [
15315
+ pair.rating,
15316
+ " ",
15317
+ pair.contrastRatio.toFixed(2),
15318
+ ":1"
15319
+ ]
15320
+ }
15321
+ )
15322
+ ] }),
15323
+ /* @__PURE__ */ jsxs("div", { className: "max-w-xl space-y-4 pb-12 sm:pb-16", children: [
15324
+ /* @__PURE__ */ jsx("p", { className: "text-sm font-semibold tracking-[0.22em] uppercase", children: whiteForeground && !isRecommended ? "White on colour example" : whiteForeground ? "White on colour" : "Tone on tone" }),
15325
+ /* @__PURE__ */ jsxs("div", { className: "space-y-4", children: [
15326
+ /* @__PURE__ */ jsx("h3", { className: "max-w-lg text-4xl leading-none font-bold text-current sm:text-5xl", children: "Pair colour with confidence." }),
15327
+ /* @__PURE__ */ jsx("p", { className: "max-w-md text-sm/6 sm:text-base/7", children: whiteForeground ? isRecommended ? "Use white text on dark colour only when it meets AAA for headings, body copy, and calls to action." : "This white text example is included for reference on approved dark backgrounds. Check the result card below before using it for normal or large text." : "Use only AAA-recommended tone-on-tone combinations for headings, body copy, and calls to action on colour." })
15328
+ ] })
15329
+ ] }),
15330
+ /* @__PURE__ */ jsxs("div", { className: "flex flex-wrap items-center gap-3", children: [
15331
+ /* @__PURE__ */ jsxs(
15332
+ "span",
15333
+ {
15334
+ className: "inline-flex items-center gap-2 rounded-full px-4 py-2 text-sm font-semibold",
15335
+ style: {
15336
+ backgroundColor: pair.foreground.hex,
15337
+ color: pair.background.hex
15338
+ },
15339
+ children: [
15340
+ statusLabel,
15341
+ /* @__PURE__ */ jsx(StatusIcon, { "data-slot": "icon", className: "size-4" })
15342
+ ]
15343
+ }
15344
+ ),
15345
+ /* @__PURE__ */ jsxs(
15346
+ "span",
15347
+ {
15348
+ className: "inline-flex rounded-full border px-4 py-2 text-sm",
15349
+ style: {
15350
+ borderColor: pair.foreground.hex
15351
+ },
15352
+ children: [
15353
+ pair.background.token,
15354
+ " / ",
15355
+ pair.foreground.token
15356
+ ]
15357
+ }
15358
+ )
15359
+ ] })
15360
+ ] })
15361
+ }
15362
+ ) });
15363
+ }
15364
+ function PairDetailCard({
15365
+ color: color2,
15366
+ format,
15367
+ role
15368
+ }) {
15369
+ const [, copyToClipboardRaw] = useCopyToClipboard();
15370
+ const [copiedField, setCopiedField] = useState(null);
15371
+ const valueLabel = format.toUpperCase();
15372
+ const formattedValue = getPairingColorValue(color2, format);
15373
+ const copyField = (field) => {
15374
+ const fieldValue = field === "token" ? color2.token : field === "tone" ? String(color2.tone) : formattedValue;
15375
+ copyToClipboardRaw(fieldValue);
15376
+ setCopiedField(field);
15377
+ const toastLabel = field === "token" ? "Token" : field === "tone" ? "Tone" : `${valueLabel} value`;
15378
+ toast(`${toastLabel} copied to clipboard`, {
15379
+ duration: 2e3
15380
+ });
15381
+ setTimeout(() => setCopiedField(null), 2e3);
15382
+ };
15383
+ const renderCopyButton = (field, srLabel, className) => /* @__PURE__ */ jsxs(
15384
+ Button2,
15385
+ {
15386
+ variant: "ghost",
15387
+ size: "icon",
15388
+ className: cn("shrink-0", className),
15389
+ onClick: () => copyField(field),
15390
+ children: [
15391
+ copiedField === field ? /* @__PURE__ */ jsx(Icons.check, { "data-slot": "icon", className: "size-5" }) : /* @__PURE__ */ jsx(Icons.content_copy, { "data-slot": "icon", className: "size-5" }),
15392
+ /* @__PURE__ */ jsx("span", { className: "sr-only", children: srLabel })
15393
+ ]
15394
+ }
15395
+ );
15396
+ return /* @__PURE__ */ jsxs(Card, { className: "gap-4", children: [
15397
+ /* @__PURE__ */ jsx(CardHeader, { className: "gap-3 border-b", children: /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-4", children: [
15398
+ /* @__PURE__ */ jsx(
15399
+ "div",
15400
+ {
15401
+ className: "size-14 rounded-sm border border-grey-200 shadow-sm dark:border-grey-700",
15402
+ style: { backgroundColor: color2.hex }
15403
+ }
15404
+ ),
15405
+ /* @__PURE__ */ jsxs("div", { className: "space-y-1", children: [
15406
+ /* @__PURE__ */ jsx(CardTitle, { children: role }),
15407
+ /* @__PURE__ */ jsx(CardDescription, { children: color2.name ?? color2.token })
15408
+ ] })
15409
+ ] }) }),
15410
+ /* @__PURE__ */ jsxs(CardContent, { className: "grid gap-4", children: [
15411
+ /* @__PURE__ */ jsxs("div", { className: "space-y-2", children: [
15412
+ /* @__PURE__ */ jsxs("div", { className: "flex items-center justify-between gap-3", children: [
15413
+ /* @__PURE__ */ jsx("p", { className: "text-xs font-semibold tracking-[0.16em] text-muted-foreground uppercase", children: "Token" }),
15414
+ renderCopyButton("token", `Copy ${role.toLowerCase()} token`)
15415
+ ] }),
15416
+ /* @__PURE__ */ jsx("p", { className: "font-mono text-base break-all", children: color2.token })
15417
+ ] }),
15418
+ /* @__PURE__ */ jsxs("div", { className: "space-y-2", children: [
15419
+ /* @__PURE__ */ jsxs("div", { className: "flex items-center justify-between gap-3", children: [
15420
+ /* @__PURE__ */ jsx("p", { className: "text-xs font-semibold tracking-[0.16em] text-muted-foreground uppercase", children: "Tone" }),
15421
+ renderCopyButton("tone", `Copy ${role.toLowerCase()} tone`)
15422
+ ] }),
15423
+ /* @__PURE__ */ jsx("p", { className: "font-medium", children: color2.tone })
15424
+ ] }),
15425
+ /* @__PURE__ */ jsxs("div", { className: "space-y-2", children: [
15426
+ /* @__PURE__ */ jsxs("div", { className: "flex items-center justify-between gap-3", children: [
15427
+ /* @__PURE__ */ jsx("p", { className: "text-xs font-semibold tracking-[0.16em] text-muted-foreground uppercase", children: valueLabel }),
15428
+ renderCopyButton("value", `Copy ${role.toLowerCase()} ${valueLabel} value`)
15429
+ ] }),
15430
+ /* @__PURE__ */ jsx("p", { className: "font-mono text-sm break-all", children: formattedValue })
15431
+ ] })
15432
+ ] })
15433
+ ] });
15434
+ }
15435
+ function ComplianceRow({
15436
+ label,
15437
+ passes,
15438
+ threshold
15439
+ }) {
15440
+ return /* @__PURE__ */ jsxs("div", { className: "flex items-center justify-between gap-4 rounded-sm border border-grey-200 px-4 py-3 dark:border-grey-700", children: [
15441
+ /* @__PURE__ */ jsxs("div", { className: "space-y-1", children: [
15442
+ /* @__PURE__ */ jsx("p", { className: "font-medium", children: label }),
15443
+ /* @__PURE__ */ jsx("p", { className: "text-sm text-muted-foreground", children: threshold })
15444
+ ] }),
15445
+ /* @__PURE__ */ jsxs(
15446
+ "span",
15447
+ {
15448
+ className: cn(
15449
+ "inline-flex items-center gap-1 rounded-full px-2.5 py-1 text-xs font-semibold",
15450
+ passes ? "bg-success-50 text-success-800 dark:bg-success-950/30 dark:text-success-200" : "bg-danger-50 text-danger-800 dark:bg-danger-950/30 dark:text-danger-200"
15451
+ ),
15452
+ children: [
15453
+ passes ? /* @__PURE__ */ jsx(Icons.check, { "data-slot": "icon", className: "size-4" }) : /* @__PURE__ */ jsx(Icons.close, { "data-slot": "icon", className: "size-4" }),
15454
+ passes ? "Pass" : "Fail"
15455
+ ]
15456
+ }
15457
+ )
15458
+ ] });
15459
+ }
15460
+ function PairComplianceCard({ pair }) {
15461
+ return /* @__PURE__ */ jsxs(Card, { children: [
15462
+ /* @__PURE__ */ jsxs(CardHeader, { className: "gap-2 border-b", children: [
15463
+ /* @__PURE__ */ jsx(CardTitle, { className: "text-base", children: "AAA compliance" }),
15464
+ /* @__PURE__ */ jsx(CardDescription, { children: "Only pairs that pass AAA normal-text contrast are suggested here. Evaluation uses the raw contrast ratio, not the rounded display value." })
15465
+ ] }),
15466
+ /* @__PURE__ */ jsxs(CardContent, { className: "space-y-3", children: [
15467
+ /* @__PURE__ */ jsxs("div", { className: "rounded-sm border border-grey-200 bg-grey-50 px-4 py-3 dark:border-grey-700 dark:bg-grey-900/60", children: [
15468
+ /* @__PURE__ */ jsx("p", { className: "text-xs font-semibold tracking-[0.16em] text-muted-foreground uppercase", children: "Contrast ratio" }),
15469
+ /* @__PURE__ */ jsxs("p", { className: "mt-1 text-2xl font-semibold", children: [
15470
+ pair.contrastRatio.toFixed(2),
15471
+ ":1"
15472
+ ] })
15473
+ ] }),
15474
+ /* @__PURE__ */ jsx(
15475
+ ComplianceRow,
15476
+ {
15477
+ label: "AAA normal text",
15478
+ passes: pair.passes.aaaText,
15479
+ threshold: "7.0:1 or higher"
15480
+ }
15481
+ ),
15482
+ /* @__PURE__ */ jsx(
15483
+ ComplianceRow,
15484
+ {
15485
+ label: "AAA large text",
15486
+ passes: pair.passes.aaaLarge,
15487
+ threshold: "4.5:1 or higher"
15488
+ }
15489
+ )
15490
+ ] })
15491
+ ] });
15492
+ }
15493
+ function WhiteTextExampleCard({ pair }) {
15494
+ return /* @__PURE__ */ jsxs(Card, { children: [
15495
+ /* @__PURE__ */ jsxs(CardHeader, { className: "gap-2 border-b", children: [
15496
+ /* @__PURE__ */ jsx(CardTitle, { className: "text-base", children: "White text example" }),
15497
+ /* @__PURE__ */ jsx(CardDescription, { children: "For approved dark backgrounds, white text may be suitable for large text. It is only recommended in this tool when it also passes AAA normal text." })
15498
+ ] }),
15499
+ /* @__PURE__ */ jsxs(CardContent, { className: "grid gap-6 xl:grid-cols-[minmax(0,1.1fr)_minmax(18rem,0.9fr)]", children: [
15500
+ /* @__PURE__ */ jsx(
15501
+ "div",
15502
+ {
15503
+ className: "rounded-sm border border-grey-200 p-6 dark:border-grey-700",
15504
+ style: {
15505
+ backgroundColor: pair.background.hex,
15506
+ color: pair.foreground.hex
15507
+ },
15508
+ children: /* @__PURE__ */ jsxs("div", { className: "space-y-4", children: [
15509
+ /* @__PURE__ */ jsxs("div", { className: "space-y-2", children: [
15510
+ /* @__PURE__ */ jsx("p", { className: "text-lg leading-tight font-semibold", children: "Large text example" }),
15511
+ /* @__PURE__ */ jsxs("p", { className: "text-sm/6", children: [
15512
+ "White text on ",
15513
+ pair.background.token
15514
+ ] })
15515
+ ] }),
15516
+ /* @__PURE__ */ jsxs("div", { className: "space-y-1 text-sm/6", children: [
15517
+ /* @__PURE__ */ jsxs("p", { children: [
15518
+ "AAA normal text: ",
15519
+ /* @__PURE__ */ jsx("strong", { children: pair.passes.aaaText ? "pass" : "fail" })
15520
+ ] }),
15521
+ /* @__PURE__ */ jsxs("p", { children: [
15522
+ "AAA large text: ",
15523
+ /* @__PURE__ */ jsx("strong", { children: pair.passes.aaaLarge ? "pass" : "fail" })
15524
+ ] })
15525
+ ] })
15526
+ ] })
15527
+ }
15528
+ ),
15529
+ /* @__PURE__ */ jsxs("div", { className: "space-y-3", children: [
15530
+ /* @__PURE__ */ jsxs("div", { className: "rounded-sm border border-grey-200 bg-grey-50 px-4 py-3 dark:border-grey-700 dark:bg-grey-900/60", children: [
15531
+ /* @__PURE__ */ jsx("p", { className: "text-xs font-semibold tracking-[0.16em] text-muted-foreground uppercase", children: "Contrast ratio" }),
15532
+ /* @__PURE__ */ jsxs("p", { className: "mt-1 text-2xl font-semibold", children: [
15533
+ pair.contrastRatio.toFixed(2),
15534
+ ":1"
15535
+ ] })
15536
+ ] }),
15537
+ /* @__PURE__ */ jsx(
15538
+ ComplianceRow,
15539
+ {
15540
+ label: "AAA normal text",
15541
+ passes: pair.passes.aaaText,
15542
+ threshold: "7.0:1 or higher"
15543
+ }
15544
+ ),
15545
+ /* @__PURE__ */ jsx(
15546
+ ComplianceRow,
15547
+ {
15548
+ label: "AAA large text",
15549
+ passes: pair.passes.aaaLarge,
15550
+ threshold: "4.5:1 or higher"
15551
+ }
15552
+ )
15553
+ ] })
15554
+ ] })
15555
+ ] });
15556
+ }
15557
+ function ColorPairingToolContent() {
15558
+ const searchParams = useSearchParams();
15559
+ const {
15560
+ familyKey: initialFamilyKey,
15561
+ selectedBackgroundToken: initialSelectedBackgroundToken,
15562
+ selectedPairId: initialSelectedPairId,
15563
+ themeCategory: initialThemeCategory
15564
+ } = getInitialPairingState(searchParams);
15565
+ const [themeCategory, setThemeCategory] = useState(initialThemeCategory);
15566
+ const [format, setFormat] = useState("hex");
15567
+ const [activeFamilyKey, setActiveFamilyKey] = useState(initialFamilyKey);
15568
+ const [selectedBackgroundToken, setSelectedBackgroundToken] = useState(
15569
+ initialSelectedBackgroundToken
15570
+ );
15571
+ const [selectedPairId, setSelectedPairId] = useState(initialSelectedPairId);
15572
+ const families = recommendedAaaPairingCollections[themeCategory];
15573
+ const resolvedActiveFamilyKey = families.some((family) => family.key === activeFamilyKey) ? activeFamilyKey : getPreferredFamilyKey(families);
15574
+ const activeFamily = families.find((family) => family.key === resolvedActiveFamilyKey) ?? families[0];
15575
+ const backgroundOptions = getBackgroundOptions(activeFamily);
15576
+ const selectedBackground = backgroundOptions.find((color2) => color2.token === selectedBackgroundToken) ?? backgroundOptions[0] ?? activeFamily?.colors[0] ?? null;
15577
+ const selectedPair = selectedBackground ? getRecommendedPairForBackground(activeFamily, selectedBackground.token, selectedPairId) : null;
15578
+ const whiteForegroundExample = selectedBackground && supportsWhiteForegroundPreview(selectedBackground) ? getWhiteForegroundPair(selectedBackground) : null;
15579
+ const previewPair = selectedPair ?? whiteForegroundExample;
15580
+ const showWhiteForegroundExample = Boolean(whiteForegroundExample) && (!selectedPair || selectedPair.foreground.token !== "white");
15581
+ const detailForeground = selectedPair?.foreground ?? whiteForegroundExample?.foreground ?? null;
15582
+ const updateUrlParams = (nextThemeCategory, nextFamilyKey, nextSelectedBackgroundToken, nextSelectedPairId) => {
15583
+ const params = new URLSearchParams(window.location.search);
15584
+ params.set("palette", nextThemeCategory);
15585
+ params.set("family", nextFamilyKey);
15586
+ params.set("background", nextSelectedBackgroundToken);
15587
+ if (nextSelectedPairId) {
15588
+ params.set("pair", nextSelectedPairId);
15589
+ } else {
15590
+ params.delete("pair");
15591
+ }
15592
+ window.history.replaceState(
15593
+ null,
15594
+ "",
15595
+ `${window.location.pathname}?${params.toString()}${window.location.hash}`
15596
+ );
15597
+ };
15598
+ const handleThemeCategoryChange = (nextThemeCategory) => {
15599
+ const nextFamilies = recommendedAaaPairingCollections[nextThemeCategory];
15600
+ const nextFamilyKey = nextFamilies.some((family) => family.key === activeFamilyKey) ? activeFamilyKey : getPreferredFamilyKey(nextFamilies);
15601
+ const nextActiveFamily = nextFamilies.find((family) => family.key === nextFamilyKey) ?? nextFamilies[0];
15602
+ const nextSelectedBackgroundToken = getFallbackBackgroundToken(
15603
+ nextActiveFamily,
15604
+ getToneFromToken(selectedBackgroundToken)
15605
+ );
15606
+ const nextSelectedPair = getRecommendedPairForBackground(
15607
+ nextActiveFamily,
15608
+ nextSelectedBackgroundToken,
15609
+ selectedPairId
15610
+ );
15611
+ setThemeCategory(nextThemeCategory);
15612
+ setActiveFamilyKey(nextFamilyKey);
15613
+ setSelectedBackgroundToken(nextSelectedBackgroundToken);
15614
+ setSelectedPairId(nextSelectedPair?.id ?? "");
15615
+ updateUrlParams(
15616
+ nextThemeCategory,
15617
+ nextFamilyKey,
15618
+ nextSelectedBackgroundToken,
15619
+ nextSelectedPair?.id ?? ""
15620
+ );
15621
+ };
15622
+ const handleFamilyChange = (nextFamilyKey) => {
15623
+ const nextActiveFamily = families.find((family) => family.key === nextFamilyKey);
15624
+ const nextSelectedBackgroundToken = getFallbackBackgroundToken(
15625
+ nextActiveFamily,
15626
+ getToneFromToken(selectedBackgroundToken)
15627
+ );
15628
+ const nextSelectedPair = getRecommendedPairForBackground(
15629
+ nextActiveFamily,
15630
+ nextSelectedBackgroundToken,
15631
+ selectedPairId
15632
+ );
15633
+ setActiveFamilyKey(nextFamilyKey);
15634
+ setSelectedBackgroundToken(nextSelectedBackgroundToken);
15635
+ setSelectedPairId(nextSelectedPair?.id ?? "");
15636
+ updateUrlParams(
15637
+ themeCategory,
15638
+ nextFamilyKey,
15639
+ nextSelectedBackgroundToken,
15640
+ nextSelectedPair?.id ?? ""
15641
+ );
15642
+ };
15643
+ const handleBackgroundChange = (nextSelectedBackgroundToken) => {
15644
+ const nextSelectedPair = getRecommendedPairForBackground(
15645
+ activeFamily,
15646
+ nextSelectedBackgroundToken,
15647
+ selectedPairId
15648
+ );
15649
+ setSelectedBackgroundToken(nextSelectedBackgroundToken);
15650
+ setSelectedPairId(nextSelectedPair?.id ?? "");
15651
+ updateUrlParams(
15652
+ themeCategory,
15653
+ resolvedActiveFamilyKey,
15654
+ nextSelectedBackgroundToken,
15655
+ nextSelectedPair?.id ?? ""
15656
+ );
15657
+ };
15658
+ const handlePairChange = (nextSelectedPairId) => {
15659
+ const nextSelectedPair = activeFamily?.recommendedPairs.find((pair) => pair.id === nextSelectedPairId) ?? null;
15660
+ if (!nextSelectedPair) return;
15661
+ setSelectedBackgroundToken(nextSelectedPair.background.token);
15662
+ setSelectedPairId(nextSelectedPairId);
15663
+ updateUrlParams(
15664
+ themeCategory,
15665
+ resolvedActiveFamilyKey,
15666
+ nextSelectedPair.background.token,
15667
+ nextSelectedPairId
15668
+ );
15669
+ };
15670
+ if (!activeFamily || !selectedBackground) {
15671
+ return /* @__PURE__ */ jsx(Card, { children: /* @__PURE__ */ jsxs(CardHeader, { children: [
15672
+ /* @__PURE__ */ jsx(CardTitle, { children: "No approved background tones available" }),
15673
+ /* @__PURE__ */ jsx(CardDescription, { children: "No approved tones are available for the current palette." })
15674
+ ] }) });
15675
+ }
15676
+ return /* @__PURE__ */ jsxs("div", { className: "space-y-6", children: [
15677
+ /* @__PURE__ */ jsxs("div", { className: "flex flex-col gap-4 sm:flex-row sm:items-center sm:justify-between", children: [
15678
+ /* @__PURE__ */ jsxs("div", { className: "flex flex-wrap items-center gap-3", children: [
15679
+ /* @__PURE__ */ jsx("span", { className: "text-sm font-medium", children: "Palette:" }),
15680
+ /* @__PURE__ */ jsx(
15681
+ SegmentedControl,
15682
+ {
15683
+ value: themeCategory,
15684
+ onValueChange: (value) => handleThemeCategoryChange(value),
15685
+ children: /* @__PURE__ */ jsxs(SegmentedControlList, { className: "w-full sm:w-fit", children: [
15686
+ /* @__PURE__ */ jsx(SegmentedControlTrigger, { value: "brand", children: "Brand palette" }),
15687
+ /* @__PURE__ */ jsx(SegmentedControlTrigger, { value: "aboriginal", children: "Aboriginal palette" })
15688
+ ] })
15689
+ }
15690
+ )
15691
+ ] }),
15692
+ /* @__PURE__ */ jsx(FormatToggle, { format, setFormat })
15693
+ ] }),
15694
+ /* @__PURE__ */ jsx("div", { className: "space-y-3", children: /* @__PURE__ */ jsx("div", { className: "grid grid-cols-2 gap-2 lg:grid-cols-4 xl:grid-cols-5", children: families.map((family) => {
15695
+ const isActive = family.key === resolvedActiveFamilyKey;
15696
+ return /* @__PURE__ */ jsxs(
15697
+ "button",
15698
+ {
15699
+ type: "button",
15700
+ onClick: () => handleFamilyChange(family.key),
15701
+ className: cn(
15702
+ "group relative flex w-full items-center gap-3 rounded-sm border px-3 py-2 text-left transition-colors",
15703
+ "border-grey-200 bg-background hover:bg-primary-800/10 hover:text-foreground dark:hover:bg-white/10",
15704
+ isActive && "border-grey-800 dark:border-grey-400"
15705
+ ),
15706
+ children: [
15707
+ /* @__PURE__ */ jsx(
15708
+ "span",
15709
+ {
15710
+ className: "size-4 shrink-0 rounded-full",
15711
+ style: { backgroundColor: getFamilySwatchColor(family) }
15712
+ }
15713
+ ),
15714
+ /* @__PURE__ */ jsx("span", { className: "truncate font-medium", children: family.label })
15715
+ ]
15716
+ },
15717
+ family.key
15718
+ );
15719
+ }) }) }),
15720
+ /* @__PURE__ */ jsxs("div", { className: "space-y-6", children: [
15721
+ /* @__PURE__ */ jsxs("div", { className: "grid items-start gap-6 xl:grid-cols-[minmax(0,1.5fr)_minmax(17rem,0.68fr)]", children: [
15722
+ /* @__PURE__ */ jsxs("div", { className: "space-y-6", children: [
15723
+ previewPair ? /* @__PURE__ */ jsx(
15724
+ PairPreview,
15725
+ {
15726
+ family: activeFamily,
15727
+ isRecommended: Boolean(selectedPair),
15728
+ pair: previewPair
15729
+ }
15730
+ ) : /* @__PURE__ */ jsx(Card, { className: "gap-0 overflow-hidden py-0", children: /* @__PURE__ */ jsx(
15731
+ "div",
15732
+ {
15733
+ className: "p-6 sm:min-h-[26rem] sm:p-8",
15734
+ style: {
15735
+ backgroundColor: selectedBackground.hex,
15736
+ color: selectedBackground.tone >= 600 ? "#ffffff" : "#002664"
15737
+ },
15738
+ children: /* @__PURE__ */ jsxs("div", { className: "flex min-h-[22rem] flex-col justify-between gap-8", children: [
15739
+ /* @__PURE__ */ jsx("div", { className: "flex flex-wrap items-center gap-2", children: /* @__PURE__ */ jsxs("span", { className: "inline-flex items-center gap-2 rounded-full border border-current bg-transparent px-3 py-1 text-[0.72rem] font-semibold tracking-[0.16em] uppercase", children: [
15740
+ /* @__PURE__ */ jsx(Icons.palette, { "data-slot": "icon", className: "size-4" }),
15741
+ activeFamily.label
15742
+ ] }) }),
15743
+ /* @__PURE__ */ jsxs("div", { className: "max-w-xl space-y-4 pb-12 sm:pb-16", children: [
15744
+ /* @__PURE__ */ jsx("p", { className: "text-sm font-semibold tracking-[0.22em] uppercase", children: "Approved background" }),
15745
+ /* @__PURE__ */ jsxs("div", { className: "space-y-4", children: [
15746
+ /* @__PURE__ */ jsx("h3", { className: "max-w-lg text-4xl leading-none font-bold text-current sm:text-5xl", children: "Pair colour with confidence." }),
15747
+ /* @__PURE__ */ jsx("p", { className: "max-w-md text-sm/6 sm:text-base/7", children: "This approved background tone does not currently have a recommended AAA foreground in this tool." })
15748
+ ] })
15749
+ ] }),
15750
+ /* @__PURE__ */ jsxs("div", { className: "flex flex-wrap items-center gap-3", children: [
15751
+ /* @__PURE__ */ jsxs("span", { className: "inline-flex items-center gap-2 rounded-full bg-current/10 px-4 py-2 text-sm font-semibold", children: [
15752
+ "No recommendation",
15753
+ /* @__PURE__ */ jsx(Icons.info, { "data-slot": "icon", className: "size-4" })
15754
+ ] }),
15755
+ /* @__PURE__ */ jsx("span", { className: "inline-flex rounded-full border border-current px-4 py-2 text-sm", children: selectedBackground.token })
15756
+ ] })
15757
+ ] })
15758
+ }
15759
+ ) }),
15760
+ /* @__PURE__ */ jsxs(Card, { children: [
15761
+ /* @__PURE__ */ jsxs(CardHeader, { className: "gap-2 border-b", children: [
15762
+ /* @__PURE__ */ jsx(CardTitle, { className: "text-base", children: "Background tone strip" }),
15763
+ /* @__PURE__ */ jsx(CardDescription, { children: "Only approved background tones are shown. Filled chips have a recommended AAA foreground pair, and dark backgrounds may also offer white text where it passes AAA." })
15764
+ ] }),
15765
+ /* @__PURE__ */ jsxs(CardContent, { className: "space-y-4", children: [
15766
+ /* @__PURE__ */ jsx("div", { className: "grid grid-cols-5 gap-2 sm:grid-cols-7 lg:grid-cols-10 xl:grid-cols-[repeat(19,minmax(0,1fr))]", children: backgroundOptions.map((color2) => {
15767
+ const pair = getRecommendedPairForBackground(activeFamily, color2.token);
15768
+ const hasWhiteExample = supportsWhiteForegroundPreview(color2);
15769
+ const isSelected = selectedBackground.token === color2.token;
15770
+ return /* @__PURE__ */ jsxs(
15771
+ "button",
15772
+ {
15773
+ type: "button",
15774
+ onClick: () => handleBackgroundChange(color2.token),
15775
+ className: cn(
15776
+ "group relative h-12 rounded-sm border border-grey-200 transition-transform hover:scale-[1.03] dark:border-grey-700",
15777
+ isSelected && "ring-2 ring-primary-500 ring-offset-2 ring-offset-background"
15778
+ ),
15779
+ style: { backgroundColor: color2.hex },
15780
+ children: [
15781
+ pair ? /* @__PURE__ */ jsx(
15782
+ "span",
15783
+ {
15784
+ className: "absolute top-1/2 left-1/2 size-3 -translate-x-1/2 -translate-y-1/2 rounded-full border border-white/30 shadow-sm",
15785
+ style: { backgroundColor: pair.foreground.hex }
15786
+ }
15787
+ ) : null,
15788
+ /* @__PURE__ */ jsxs("span", { className: "sr-only", children: [
15789
+ color2.token,
15790
+ pair ? ` paired with ${pair.foreground.token}` : hasWhiteExample ? " has a white text example in this tool" : " has no recommended pair in this tool"
15791
+ ] })
15792
+ ]
15793
+ },
15794
+ color2.token
15795
+ );
15796
+ }) }),
15797
+ /* @__PURE__ */ jsxs("div", { className: "flex flex-wrap items-center gap-4 text-sm text-muted-foreground", children: [
15798
+ /* @__PURE__ */ jsxs("span", { children: [
15799
+ "Selected background:",
15800
+ " ",
15801
+ /* @__PURE__ */ jsx("strong", { className: "text-foreground", children: selectedBackground.token })
15802
+ ] }),
15803
+ /* @__PURE__ */ jsxs("span", { children: [
15804
+ selectedPair ? "Recommended foreground:" : "White text example:",
15805
+ " ",
15806
+ /* @__PURE__ */ jsx("strong", { className: "text-foreground", children: selectedPair?.foreground.token ?? whiteForegroundExample?.foreground.token ?? "None" })
15807
+ ] })
15808
+ ] })
15809
+ ] })
15810
+ ] }),
15811
+ /* @__PURE__ */ jsxs("div", { className: "grid gap-4 lg:grid-cols-2", children: [
15812
+ /* @__PURE__ */ jsx(PairDetailCard, { color: selectedBackground, format, role: "Background" }),
15813
+ detailForeground ? /* @__PURE__ */ jsx(PairDetailCard, { color: detailForeground, format, role: "Foreground" }) : /* @__PURE__ */ jsxs(Card, { className: "gap-4", children: [
15814
+ /* @__PURE__ */ jsx(CardHeader, { className: "gap-3 border-b", children: /* @__PURE__ */ jsxs("div", { className: "space-y-1", children: [
15815
+ /* @__PURE__ */ jsx(CardTitle, { children: "Foreground" }),
15816
+ /* @__PURE__ */ jsx(CardDescription, { children: "No recommended foreground available" })
15817
+ ] }) }),
15818
+ /* @__PURE__ */ jsx(CardContent, { children: /* @__PURE__ */ jsx("p", { className: "text-sm text-muted-foreground", children: "Select another approved tone or review the recommended pairs list for the same family." }) })
15819
+ ] })
15820
+ ] })
15821
+ ] }),
15822
+ /* @__PURE__ */ jsx("div", { className: "space-y-6", children: /* @__PURE__ */ jsxs(Card, { className: "h-fit", children: [
15823
+ /* @__PURE__ */ jsxs(CardHeader, { className: "gap-2 border-b", children: [
15824
+ /* @__PURE__ */ jsx(CardTitle, { className: "text-base", children: "Recommended pairs" }),
15825
+ /* @__PURE__ */ jsx(CardDescription, { children: "Recommended AAA combinations for this family, including white on eligible dark backgrounds." })
15826
+ ] }),
15827
+ /* @__PURE__ */ jsx(CardContent, { className: "grid gap-3", children: activeFamily.recommendedPairs.map((pair) => {
15828
+ const isActive = selectedPair?.id === pair.id;
15829
+ return /* @__PURE__ */ jsxs(
15830
+ "button",
15831
+ {
15832
+ type: "button",
15833
+ onClick: () => handlePairChange(pair.id),
15834
+ className: cn(
15835
+ "rounded-sm border p-4 text-left transition-colors",
15836
+ isActive ? "border-primary-500 bg-primary-50/70 dark:bg-primary-950/30" : "border-grey-200 hover:border-grey-400 hover:bg-grey-50 dark:border-grey-700 dark:hover:border-grey-500 dark:hover:bg-grey-900/70"
15837
+ ),
15838
+ children: [
15839
+ /* @__PURE__ */ jsxs("div", { className: "flex items-start justify-between gap-4", children: [
15840
+ /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-3", children: [
15841
+ /* @__PURE__ */ jsx(
15842
+ "div",
15843
+ {
15844
+ className: "size-11 rounded-sm border border-grey-200 shadow-sm dark:border-grey-700",
15845
+ style: { backgroundColor: pair.background.hex }
15846
+ }
15847
+ ),
15848
+ /* @__PURE__ */ jsx(
15849
+ "div",
15850
+ {
15851
+ className: "size-11 rounded-sm border border-grey-200 shadow-sm dark:border-grey-700",
15852
+ style: { backgroundColor: pair.foreground.hex }
15853
+ }
15854
+ )
15855
+ ] }),
15856
+ /* @__PURE__ */ jsxs("span", { className: "inline-flex items-center gap-1 rounded-full border border-grey-200 px-2.5 py-1 text-xs font-semibold text-muted-foreground dark:border-grey-700", children: [
15857
+ /* @__PURE__ */ jsx(Icons.contrast, { "data-slot": "icon", className: "size-4" }),
15858
+ pair.rating
15859
+ ] })
15860
+ ] }),
15861
+ /* @__PURE__ */ jsxs("div", { className: "mt-4 space-y-1", children: [
15862
+ /* @__PURE__ */ jsxs("p", { className: "font-medium text-foreground", children: [
15863
+ pair.background.token,
15864
+ " / ",
15865
+ pair.foreground.token
15866
+ ] }),
15867
+ /* @__PURE__ */ jsxs("p", { className: "text-sm text-muted-foreground", children: [
15868
+ pair.contrastRatio.toFixed(2),
15869
+ ":1 contrast ratio"
15870
+ ] })
15871
+ ] })
15872
+ ]
15873
+ },
15874
+ pair.id
15875
+ );
15876
+ }) })
15877
+ ] }) })
15878
+ ] }),
15879
+ selectedPair ? /* @__PURE__ */ jsx(PairComplianceCard, { pair: selectedPair }) : null,
15880
+ showWhiteForegroundExample && whiteForegroundExample ? /* @__PURE__ */ jsx(WhiteTextExampleCard, { pair: whiteForegroundExample }) : null
15881
+ ] })
15882
+ ] });
15883
+ }
15884
+ function ColorPairingTool() {
15885
+ return /* @__PURE__ */ jsx(Suspense, { fallback: /* @__PURE__ */ jsx(ColorPairingToolLoading, {}), children: /* @__PURE__ */ jsx(ColorPairingToolContent, {}) });
15886
+ }
14921
15887
  function ColorSwatches({ theme: theme2, format, viewMode }) {
14922
15888
  return /* @__PURE__ */ jsx(
14923
15889
  "div",
@@ -15279,7 +16245,7 @@ var ChartTooltip4 = ({
15279
16245
  {
15280
16246
  className: cn(
15281
16247
  // base
15282
- "rounded-md border text-sm shadow-md",
16248
+ "rounded-sm border text-sm shadow-md",
15283
16249
  // border color
15284
16250
  "border-gray-200 dark:border-gray-800",
15285
16251
  // background color
@@ -15871,7 +16837,7 @@ function DialogContent({
15871
16837
  {
15872
16838
  "data-slot": "dialog-content",
15873
16839
  className: cn(
15874
- "fixed top-[50%] left-[50%] z-50 grid w-full max-w-[calc(100%-2rem)] translate-x-[-50%] translate-y-[-50%] gap-4 rounded-lg border bg-background p-6 shadow-lg duration-200 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[state=open]:animate-in data-[state=open]:fade-in-0 data-[state=open]:zoom-in-95 sm:max-w-lg",
16840
+ "fixed top-[50%] left-[50%] z-50 grid w-full max-w-[calc(100%-2rem)] translate-x-[-50%] translate-y-[-50%] gap-4 rounded-sm border bg-background p-6 shadow-lg duration-200 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[state=open]:animate-in data-[state=open]:fade-in-0 data-[state=open]:zoom-in-95 sm:max-w-lg",
15875
16841
  className
15876
16842
  ),
15877
16843
  ...props,
@@ -16101,7 +17067,7 @@ function ContextMenuSubContent({
16101
17067
  {
16102
17068
  "data-slot": "context-menu-sub-content",
16103
17069
  className: cn(
16104
- "z-50 min-w-[8rem] origin-(--radix-context-menu-content-transform-origin) overflow-hidden rounded-md border bg-popover p-1 text-popover-foreground shadow-lg data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[state=open]:animate-in data-[state=open]:fade-in-0 data-[state=open]:zoom-in-95",
17070
+ "z-50 min-w-[8rem] origin-(--radix-context-menu-content-transform-origin) overflow-hidden rounded-sm border bg-popover p-1 text-popover-foreground shadow-lg data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[state=open]:animate-in data-[state=open]:fade-in-0 data-[state=open]:zoom-in-95",
16105
17071
  className
16106
17072
  ),
16107
17073
  ...props
@@ -16117,7 +17083,7 @@ function ContextMenuContent({
16117
17083
  {
16118
17084
  "data-slot": "context-menu-content",
16119
17085
  className: cn(
16120
- "z-50 max-h-(--radix-context-menu-content-available-height) min-w-[8rem] origin-(--radix-context-menu-content-transform-origin) overflow-x-hidden overflow-y-auto rounded-md border bg-popover p-1 text-popover-foreground shadow-md data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[state=open]:animate-in data-[state=open]:fade-in-0 data-[state=open]:zoom-in-95",
17086
+ "z-50 max-h-(--radix-context-menu-content-available-height) min-w-[8rem] origin-(--radix-context-menu-content-transform-origin) overflow-x-hidden overflow-y-auto rounded-sm border bg-popover p-1 text-popover-foreground shadow-md data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[state=open]:animate-in data-[state=open]:fade-in-0 data-[state=open]:zoom-in-95",
16121
17087
  className
16122
17088
  ),
16123
17089
  ...props
@@ -16624,7 +17590,7 @@ function DataTable({
16624
17590
  });
16625
17591
  return /* @__PURE__ */ jsxs("div", { className: "space-y-4 p-1", children: [
16626
17592
  /* @__PURE__ */ jsx(DataTableToolbar, { table, search, toolbar }),
16627
- /* @__PURE__ */ jsx("div", { className: "rounded-md border", children: /* @__PURE__ */ jsxs(Table, { children: [
17593
+ /* @__PURE__ */ jsx("div", { className: "rounded-sm border", children: /* @__PURE__ */ jsxs(Table, { children: [
16628
17594
  /* @__PURE__ */ jsx(TableHeader, { children: table.getHeaderGroups().map((headerGroup) => /* @__PURE__ */ jsx(TableRow, { children: headerGroup.headers.map((header) => {
16629
17595
  return /* @__PURE__ */ jsx(TableHead, { colSpan: header.colSpan, children: header.isPlaceholder ? null : flexRender(header.column.columnDef.header, header.getContext()) }, header.id);
16630
17596
  }) }, headerGroup.id)) }),
@@ -16742,7 +17708,7 @@ var ChartTooltip5 = ({ active, payload, valueFormatter }) => {
16742
17708
  {
16743
17709
  className: cn(
16744
17710
  // base
16745
- "rounded-md border text-sm shadow-md",
17711
+ "rounded-sm border text-sm shadow-md",
16746
17712
  // border color
16747
17713
  "border-gray-200 dark:border-gray-800",
16748
17714
  // background color
@@ -16980,8 +17946,8 @@ function DrawerContent({
16980
17946
  "data-slot": "drawer-content",
16981
17947
  className: cn(
16982
17948
  "group/drawer-content fixed z-50 flex h-auto flex-col bg-background",
16983
- "data-[vaul-drawer-direction=top]:inset-x-0 data-[vaul-drawer-direction=top]:top-0 data-[vaul-drawer-direction=top]:mb-24 data-[vaul-drawer-direction=top]:max-h-[80vh] data-[vaul-drawer-direction=top]:rounded-b-lg data-[vaul-drawer-direction=top]:border-b",
16984
- "data-[vaul-drawer-direction=bottom]:inset-x-0 data-[vaul-drawer-direction=bottom]:bottom-0 data-[vaul-drawer-direction=bottom]:mt-24 data-[vaul-drawer-direction=bottom]:max-h-[80vh] data-[vaul-drawer-direction=bottom]:rounded-t-lg data-[vaul-drawer-direction=bottom]:border-t",
17949
+ "data-[vaul-drawer-direction=top]:inset-x-0 data-[vaul-drawer-direction=top]:top-0 data-[vaul-drawer-direction=top]:mb-24 data-[vaul-drawer-direction=top]:max-h-[80vh] data-[vaul-drawer-direction=top]:rounded-b-sm data-[vaul-drawer-direction=top]:border-b",
17950
+ "data-[vaul-drawer-direction=bottom]:inset-x-0 data-[vaul-drawer-direction=bottom]:bottom-0 data-[vaul-drawer-direction=bottom]:mt-24 data-[vaul-drawer-direction=bottom]:max-h-[80vh] data-[vaul-drawer-direction=bottom]:rounded-t-sm data-[vaul-drawer-direction=bottom]:border-t",
16985
17951
  "data-[vaul-drawer-direction=right]:inset-y-0 data-[vaul-drawer-direction=right]:right-0 data-[vaul-drawer-direction=right]:w-3/4 data-[vaul-drawer-direction=right]:border-l data-[vaul-drawer-direction=right]:sm:max-w-sm",
16986
17952
  "data-[vaul-drawer-direction=left]:inset-y-0 data-[vaul-drawer-direction=left]:left-0 data-[vaul-drawer-direction=left]:w-3/4 data-[vaul-drawer-direction=left]:border-r data-[vaul-drawer-direction=left]:sm:max-w-sm",
16987
17953
  className
@@ -17397,152 +18363,10 @@ function FormMessage({ className, ...props }) {
17397
18363
  }
17398
18364
  );
17399
18365
  }
17400
- var styles3 = {
17401
- base: [
17402
- // Base
17403
- "inline-flex items-center justify-center gap-2 rounded-sm text-sm font-medium bg-transparent transition-all whitespace-nowrap cursor-pointer border-(--toggle-border) [--toggle-border:var(--color-grey-200)] text-grey-800",
17404
- // States
17405
- "data-[state=on]:bg-grey-100 data-[state=on]:text-grey-850",
17406
- // Hover
17407
- "hover:bg-grey-100 hover:text-grey-850",
17408
- // Focus
17409
- "focus:outline focus:outline-2 focus:outline-offset-0 focus:outline-(--toggle-border)",
17410
- // Dark mode
17411
- "dark:text-white",
17412
- // Dark mode states
17413
- "dark:data-[state=on]:bg-white/10 dark:data-[state=on]:text-white",
17414
- // Dark mode hover
17415
- "dark:hover:bg-white/10 dark:hover:text-white",
17416
- // Disabled
17417
- "disabled:pointer-events-none disabled:opacity-50",
17418
- // Icon
17419
- '[&_svg]:pointer-events-none [&_svg:not([class*="size-"])]:size-4 [&_svg]:shrink-0',
17420
- // Aria invalid
17421
- "aria-invalid:ring-destructive/20 aria-invalid:border-destructive",
17422
- // Aria invalid dark mode
17423
- "dark:aria-invalid:ring-destructive/40"
17424
- ],
17425
- outline: [
17426
- // Base
17427
- "text-grey-800 border [--toggle-border:var(--color-grey-300)]",
17428
- // States
17429
- "hover:[--toggle-border:var(--color-grey-400)]",
17430
- // Dark mode
17431
- "dark:[--toggle-border:white]/40",
17432
- // Dark mode states
17433
- "dark:hover:[--toggle-border:white]/50",
17434
- // Data on
17435
- "data-[state=on]:bg-primary-800/10"
17436
- ]
17437
- };
17438
- var toggleVariants = cva(styles3.base, {
17439
- variants: {
17440
- variant: {
17441
- ghost: "",
17442
- outline: clsx12(styles3.outline)
17443
- },
17444
- size: {
17445
- default: "h-9 px-2 min-w-9",
17446
- sm: "h-8 px-1.5 min-w-8",
17447
- lg: "h-10 px-2.5 min-w-10"
17448
- }
17449
- },
17450
- defaultVariants: {
17451
- variant: "ghost",
17452
- size: "default"
17453
- }
17454
- });
17455
- function Toggle({
17456
- className,
17457
- variant,
17458
- size,
17459
- ...props
17460
- }) {
17461
- return /* @__PURE__ */ jsx(
17462
- TogglePrimitive.Root,
17463
- {
17464
- "data-slot": "toggle",
17465
- className: cn(toggleVariants({ variant, size, className })),
17466
- ...props
17467
- }
17468
- );
17469
- }
17470
- var ToggleGroupContext = React5.createContext({
17471
- size: "default",
17472
- variant: "ghost"
17473
- });
17474
- function ToggleGroup({
17475
- className,
17476
- variant,
17477
- size,
17478
- children,
17479
- ...props
17480
- }) {
17481
- return /* @__PURE__ */ jsx(
17482
- ToggleGroupPrimitive.Root,
17483
- {
17484
- "data-slot": "toggle-group",
17485
- "data-variant": variant,
17486
- "data-size": size,
17487
- className: cn(
17488
- "group/toggle-group flex w-fit items-center rounded-md data-[variant=outline]:shadow-xs",
17489
- className
17490
- ),
17491
- ...props,
17492
- children: /* @__PURE__ */ jsx(ToggleGroupContext.Provider, { value: { variant, size }, children })
17493
- }
17494
- );
17495
- }
17496
- function ToggleGroupItem({
17497
- className,
17498
- children,
17499
- variant,
17500
- size,
17501
- ...props
17502
- }) {
17503
- const context = React5.useContext(ToggleGroupContext);
17504
- return /* @__PURE__ */ jsx(
17505
- ToggleGroupPrimitive.Item,
17506
- {
17507
- "data-slot": "toggle-group-item",
17508
- "data-variant": context.variant || variant,
17509
- "data-size": context.size || size,
17510
- className: cn(
17511
- toggleVariants({
17512
- variant: context.variant || variant,
17513
- size: context.size || size
17514
- }),
17515
- "min-w-0 shrink-0 rounded-none shadow-none first:rounded-l-sm last:rounded-r-sm focus:z-10 focus-visible:z-10 data-[variant=outline]:border-l-0 data-[variant=outline]:first:border-l",
17516
- className
17517
- ),
17518
- ...props,
17519
- children
17520
- }
17521
- );
17522
- }
17523
- function FormatToggle({ format, setFormat }) {
17524
- return /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-2", children: [
17525
- /* @__PURE__ */ jsx("span", { className: "text-sm font-medium", children: "Format:" }),
17526
- /* @__PURE__ */ jsxs(
17527
- ToggleGroup,
17528
- {
17529
- type: "single",
17530
- value: format,
17531
- onValueChange: (value) => value && setFormat(value),
17532
- children: [
17533
- /* @__PURE__ */ jsx(ToggleGroupItem, { value: "hex", "aria-label": "HEX format", children: "HEX" }),
17534
- /* @__PURE__ */ jsx(ToggleGroupItem, { value: "rgb", "aria-label": "RGB format", children: "RGB" }),
17535
- /* @__PURE__ */ jsx(ToggleGroupItem, { value: "hsl", "aria-label": "HSL format", children: "HSL" }),
17536
- /* @__PURE__ */ jsx(ToggleGroupItem, { value: "oklch", "aria-label": "OKLCH format", children: "OKLCH" })
17537
- ]
17538
- }
17539
- )
17540
- ] });
17541
- }
17542
18366
 
17543
18367
  // package.json
17544
18368
  var package_default = {
17545
- version: "1.96.0"};
18369
+ version: "1.98.0"};
17546
18370
  var SluggerContext = React5__default.createContext(null);
17547
18371
  function flattenText(nodes) {
17548
18372
  if (nodes == null || typeof nodes === "boolean") return "";
@@ -17693,7 +18517,7 @@ function SiteSearch({ navigation }) {
17693
18517
  children: [
17694
18518
  /* @__PURE__ */ jsx("span", { className: "hidden text-grey-600 lg:inline-flex dark:text-grey-200", children: "Search site..." }),
17695
18519
  /* @__PURE__ */ jsx("span", { className: "inline-flex lg:hidden dark:text-grey-200", children: "Search..." }),
17696
- /* @__PURE__ */ jsxs("kbd", { className: "pointer-events-none absolute top-2 right-2 hidden h-5 items-center gap-1 rounded border bg-muted px-2 font-mono text-xs font-medium opacity-100 select-none sm:flex", children: [
18520
+ /* @__PURE__ */ jsxs("kbd", { className: "pointer-events-none absolute top-2 right-2 hidden h-5 items-center gap-1 rounded-sm border bg-muted px-2 font-mono text-xs font-medium opacity-100 select-none sm:flex", children: [
17697
18521
  /* @__PURE__ */ jsx("span", { className: "text-xs", children: "\u2318" }),
17698
18522
  "K"
17699
18523
  ] })
@@ -17908,7 +18732,7 @@ function HoverCardContent({
17908
18732
  align,
17909
18733
  sideOffset,
17910
18734
  className: cn(
17911
- "z-50 w-64 origin-(--radix-hover-card-content-transform-origin) rounded-md border bg-popover p-4 text-popover-foreground shadow-md outline-hidden data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[state=open]:animate-in data-[state=open]:fade-in-0 data-[state=open]:zoom-in-95",
18735
+ "z-50 w-64 origin-(--radix-hover-card-content-transform-origin) rounded-sm border bg-popover p-4 text-popover-foreground shadow-md outline-hidden data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[state=open]:animate-in data-[state=open]:fade-in-0 data-[state=open]:zoom-in-95",
17912
18736
  className
17913
18737
  ),
17914
18738
  ...props
@@ -17946,7 +18770,7 @@ function InputOTPSlot({
17946
18770
  "data-slot": "input-otp-slot",
17947
18771
  "data-active": isActive,
17948
18772
  className: cn(
17949
- "relative flex h-9 w-9 items-center justify-center border-y border-r border-input text-sm shadow-xs transition-all outline-none first:rounded-l-md first:border-l last:rounded-r-md aria-invalid:border-destructive data-[active=true]:z-10 data-[active=true]:border-ring data-[active=true]:ring-[3px] data-[active=true]:ring-ring/50 data-[active=true]:aria-invalid:border-destructive data-[active=true]:aria-invalid:ring-destructive/20 dark:bg-input/30 dark:data-[active=true]:aria-invalid:ring-destructive/40",
18773
+ "relative flex h-9 w-9 items-center justify-center border-y border-r border-input text-sm shadow-xs transition-all outline-none first:rounded-l-sm first:border-l last:rounded-r-sm aria-invalid:border-destructive data-[active=true]:z-10 data-[active=true]:border-ring data-[active=true]:ring-[3px] data-[active=true]:ring-ring/50 data-[active=true]:aria-invalid:border-destructive data-[active=true]:aria-invalid:ring-destructive/20 dark:bg-input/30 dark:data-[active=true]:aria-invalid:ring-destructive/40",
17950
18774
  className
17951
18775
  ),
17952
18776
  ...props,
@@ -18231,7 +19055,7 @@ var ChartTooltip6 = ({ active, payload, label, valueFormatter }) => {
18231
19055
  {
18232
19056
  className: cn(
18233
19057
  // base
18234
- "rounded-md border text-sm shadow-md",
19058
+ "rounded-sm border text-sm shadow-md",
18235
19059
  // border color
18236
19060
  "border-gray-200 dark:border-gray-800",
18237
19061
  // background color
@@ -19126,7 +19950,7 @@ function Menubar({ className, ...props }) {
19126
19950
  {
19127
19951
  "data-slot": "menubar",
19128
19952
  className: cn(
19129
- "flex h-9 items-center gap-1 rounded-md border bg-background p-1 shadow-xs",
19953
+ "flex h-9 items-center gap-1 rounded-sm border bg-background p-1 shadow-xs",
19130
19954
  className
19131
19955
  ),
19132
19956
  ...props
@@ -19176,7 +20000,7 @@ function MenubarContent({
19176
20000
  alignOffset,
19177
20001
  sideOffset,
19178
20002
  className: cn(
19179
- "z-50 min-w-[12rem] origin-(--radix-menubar-content-transform-origin) overflow-hidden rounded-md border bg-popover p-1 text-popover-foreground shadow-md data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[state=open]:animate-in data-[state=open]:fade-in-0 data-[state=open]:zoom-in-95",
20003
+ "z-50 min-w-[12rem] origin-(--radix-menubar-content-transform-origin) overflow-hidden rounded-sm border bg-popover p-1 text-popover-foreground shadow-md data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[state=open]:animate-in data-[state=open]:fade-in-0 data-[state=open]:zoom-in-95",
19180
20004
  className
19181
20005
  ),
19182
20006
  ...props
@@ -19320,7 +20144,7 @@ function MenubarSubContent({
19320
20144
  {
19321
20145
  "data-slot": "menubar-sub-content",
19322
20146
  className: cn(
19323
- "z-50 min-w-[8rem] origin-(--radix-menubar-content-transform-origin) overflow-hidden rounded-md border bg-popover p-1 text-popover-foreground shadow-lg data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[state=open]:animate-in data-[state=open]:fade-in-0 data-[state=open]:zoom-in-95",
20147
+ "z-50 min-w-[8rem] origin-(--radix-menubar-content-transform-origin) overflow-hidden rounded-sm border bg-popover p-1 text-popover-foreground shadow-lg data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[state=open]:animate-in data-[state=open]:fade-in-0 data-[state=open]:zoom-in-95",
19324
20148
  className
19325
20149
  ),
19326
20150
  ...props
@@ -27739,7 +28563,7 @@ function NavigationLink({
27739
28563
  href,
27740
28564
  onClick,
27741
28565
  className: clsx12(
27742
- "inline-block w-full cursor-pointer rounded-r-md border-l py-1 pr-2 pl-4 text-left text-base/8 sm:text-sm/6",
28566
+ "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",
27743
28567
  "hover:border-grey-950 hover:bg-primary-800/10 hover:font-semibold hover:text-grey-950",
27744
28568
  "dark:text-grey-400 dark:hover:border-grey-400 dark:hover:text-white",
27745
28569
  href === pathname && "border-l border-primary-800 bg-primary-800/10 font-bold text-primary-800 dark:border-white dark:bg-white/20"
@@ -27841,7 +28665,7 @@ function NavigationMenuContent({
27841
28665
  "data-slot": "navigation-menu-content",
27842
28666
  className: cn(
27843
28667
  "top-0 left-0 w-full p-2 pr-2.5 data-[motion=from-end]:slide-in-from-right-52 data-[motion=from-start]:slide-in-from-left-52 data-[motion=to-end]:slide-out-to-right-52 data-[motion=to-start]:slide-out-to-left-52 data-[motion^=from-]:animate-in data-[motion^=from-]:fade-in data-[motion^=to-]:animate-out data-[motion^=to-]:fade-out md:absolute md:w-auto",
27844
- "group-data-[viewport=false]/navigation-menu:top-full group-data-[viewport=false]/navigation-menu:mt-1.5 group-data-[viewport=false]/navigation-menu:overflow-hidden group-data-[viewport=false]/navigation-menu:rounded-md group-data-[viewport=false]/navigation-menu:border group-data-[viewport=false]/navigation-menu:bg-popover group-data-[viewport=false]/navigation-menu:text-popover-foreground group-data-[viewport=false]/navigation-menu:shadow group-data-[viewport=false]/navigation-menu:duration-200 **:data-[slot=navigation-menu-link]:focus:ring-0 **:data-[slot=navigation-menu-link]:focus:outline-none group-data-[viewport=false]/navigation-menu:data-[state=closed]:animate-out group-data-[viewport=false]/navigation-menu:data-[state=closed]:fade-out-0 group-data-[viewport=false]/navigation-menu:data-[state=closed]:zoom-out-95 group-data-[viewport=false]/navigation-menu:data-[state=open]:animate-in group-data-[viewport=false]/navigation-menu:data-[state=open]:fade-in-0 group-data-[viewport=false]/navigation-menu:data-[state=open]:zoom-in-95",
28668
+ "group-data-[viewport=false]/navigation-menu:top-full group-data-[viewport=false]/navigation-menu:mt-1.5 group-data-[viewport=false]/navigation-menu:overflow-hidden group-data-[viewport=false]/navigation-menu:rounded-sm group-data-[viewport=false]/navigation-menu:border group-data-[viewport=false]/navigation-menu:bg-popover group-data-[viewport=false]/navigation-menu:text-popover-foreground group-data-[viewport=false]/navigation-menu:shadow group-data-[viewport=false]/navigation-menu:duration-200 **:data-[slot=navigation-menu-link]:focus:ring-0 **:data-[slot=navigation-menu-link]:focus:outline-none group-data-[viewport=false]/navigation-menu:data-[state=closed]:animate-out group-data-[viewport=false]/navigation-menu:data-[state=closed]:fade-out-0 group-data-[viewport=false]/navigation-menu:data-[state=closed]:zoom-out-95 group-data-[viewport=false]/navigation-menu:data-[state=open]:animate-in group-data-[viewport=false]/navigation-menu:data-[state=open]:fade-in-0 group-data-[viewport=false]/navigation-menu:data-[state=open]:zoom-in-95",
27845
28669
  className
27846
28670
  ),
27847
28671
  ...props
@@ -27857,7 +28681,7 @@ function NavigationMenuViewport({
27857
28681
  {
27858
28682
  "data-slot": "navigation-menu-viewport",
27859
28683
  className: cn(
27860
- "origin-top-center relative mt-1.5 h-[var(--radix-navigation-menu-viewport-height)] w-full overflow-hidden rounded-md border bg-popover text-popover-foreground shadow data-[state=closed]:animate-out data-[state=closed]:zoom-out-95 data-[state=open]:animate-in data-[state=open]:zoom-in-90 md:w-[var(--radix-navigation-menu-viewport-width)]",
28684
+ "origin-top-center relative mt-1.5 h-[var(--radix-navigation-menu-viewport-height)] w-full overflow-hidden rounded-sm border bg-popover text-popover-foreground shadow data-[state=closed]:animate-out data-[state=closed]:zoom-out-95 data-[state=open]:animate-in data-[state=open]:zoom-in-90 md:w-[var(--radix-navigation-menu-viewport-width)]",
27861
28685
  className
27862
28686
  ),
27863
28687
  ...props
@@ -28180,7 +29004,7 @@ function NSWCard({
28180
29004
  "div",
28181
29005
  {
28182
29006
  className: cn(
28183
- "h-full rounded-md border border-(--nsw-card-border)",
29007
+ "h-full rounded-sm border border-(--nsw-card-border)",
28184
29008
  hasImage && "border-t-none rounded-t-none"
28185
29009
  ),
28186
29010
  children: /* @__PURE__ */ jsx("div", { className: "flex h-full flex-col p-8", children: bodyChildren })
@@ -28192,7 +29016,7 @@ function NSWCard({
28192
29016
  "div",
28193
29017
  {
28194
29018
  className: cn(
28195
- "flex h-full flex-col rounded-md border border-(--nsw-card-border) p-8",
29019
+ "flex h-full flex-col rounded-sm border border-(--nsw-card-border) p-8",
28196
29020
  hasImage && "border-t-none rounded-t-none"
28197
29021
  ),
28198
29022
  children: bodyChildren
@@ -28747,7 +29571,7 @@ function ResizableHandle({
28747
29571
  className
28748
29572
  ),
28749
29573
  ...props,
28750
- children: withHandle && /* @__PURE__ */ jsx("div", { className: "z-10 flex h-4 w-3 items-center justify-center rounded-xs border bg-border", children: /* @__PURE__ */ jsx(Icons.drag_indicator, { className: "size-2.5" }) })
29574
+ children: withHandle && /* @__PURE__ */ jsx("div", { className: "z-10 flex h-4 w-3 items-center justify-center rounded-sm border bg-border", children: /* @__PURE__ */ jsx(Icons.drag_indicator, { className: "size-2.5" }) })
28751
29575
  }
28752
29576
  );
28753
29577
  }
@@ -29046,7 +29870,7 @@ function Sidebar({
29046
29870
  {
29047
29871
  "data-sidebar": "sidebar",
29048
29872
  "data-slot": "sidebar-inner",
29049
- className: "flex h-full w-full flex-col bg-sidebar group-data-[variant=floating]:rounded-lg group-data-[variant=floating]:border group-data-[variant=floating]:border-sidebar-border group-data-[variant=floating]:shadow-sm",
29873
+ className: "flex h-full w-full flex-col bg-sidebar group-data-[variant=floating]:rounded-sm group-data-[variant=floating]:border group-data-[variant=floating]:border-sidebar-border group-data-[variant=floating]:shadow-sm",
29050
29874
  children
29051
29875
  }
29052
29876
  )
@@ -29505,7 +30329,7 @@ function SidebarLink({ link, pathname, onLinkClick, depth }) {
29505
30329
  const isActive = pathname === link.href;
29506
30330
  const isActiveOrHasActiveDescendant = isLinkOrDescendantActive(link, pathname);
29507
30331
  const baseLinkClasses = clsx12(
29508
- "w-full cursor-pointer rounded-r-md border-l py-1 pr-2 pl-4 text-left text-base/8 sm:text-sm/6",
30332
+ "w-full cursor-pointer rounded-r-sm border-l py-1 pr-2 pl-4 text-left text-base/8 sm:text-sm/6",
29509
30333
  "hover:border-grey-950 hover:bg-primary-800/10 hover:font-semibold hover:text-grey-950",
29510
30334
  "dark:text-grey-400 dark:hover:border-grey-400 dark:hover:text-white",
29511
30335
  isActive && "border-l border-primary-800 bg-primary-800/10 font-bold text-primary-800 dark:border-white dark:bg-white/20"
@@ -30441,7 +31265,7 @@ var TabNavigation = React5__default.forwardRef(({ className, children, ...props
30441
31265
  motion.div,
30442
31266
  {
30443
31267
  layoutId: "hoverBackground",
30444
- className: "absolute top-2 bottom-2 transform rounded-md border border-grey-100 bg-grey-150 transition-all duration-200 ease-out dark:border-grey-700 dark:bg-grey-800",
31268
+ className: "absolute top-2 bottom-2 transform rounded-sm border border-grey-100 bg-grey-150 transition-all duration-200 ease-out dark:border-grey-700 dark:bg-grey-800",
30445
31269
  transition: {
30446
31270
  type: "spring",
30447
31271
  stiffness: 500,
@@ -30977,7 +31801,7 @@ var Tracker = React5__default.forwardRef(
30977
31801
  );
30978
31802
  Tracker.displayName = "Tracker";
30979
31803
  var buttonVariants4 = cva(
30980
- "inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium transition-all disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4 shrink-0 [&_svg]:shrink-0 outline-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive",
31804
+ "inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-sm text-sm font-medium transition-all disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4 shrink-0 [&_svg]:shrink-0 outline-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive",
30981
31805
  {
30982
31806
  variants: {
30983
31807
  variant: {
@@ -31096,7 +31920,7 @@ var Artifact = ({ className, ...props }) => /* @__PURE__ */ jsx(
31096
31920
  "div",
31097
31921
  {
31098
31922
  className: cn(
31099
- "flex flex-col overflow-hidden rounded-lg border bg-background shadow-sm",
31923
+ "flex flex-col overflow-hidden rounded-sm border bg-background shadow-sm",
31100
31924
  className
31101
31925
  ),
31102
31926
  ...props
@@ -31342,7 +32166,7 @@ function isFunction(value) {
31342
32166
  return typeof value === "function";
31343
32167
  }
31344
32168
  var badgeVariants2 = cva(
31345
- "inline-flex items-center justify-center rounded-md border px-2 py-0.5 text-xs font-medium w-fit whitespace-nowrap shrink-0 [&>svg]:size-3 gap-1 [&>svg]:pointer-events-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive transition-[color,box-shadow] overflow-hidden",
32169
+ "inline-flex items-center justify-center rounded-sm border px-2 py-0.5 text-xs font-medium w-fit whitespace-nowrap shrink-0 [&>svg]:size-3 gap-1 [&>svg]:pointer-events-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive transition-[color,box-shadow] overflow-hidden",
31346
32170
  {
31347
32171
  variants: {
31348
32172
  variant: {
@@ -31527,7 +32351,7 @@ var CodeBlock = ({
31527
32351
  "div",
31528
32352
  {
31529
32353
  className: cn(
31530
- "relative w-full overflow-hidden rounded-md border bg-background text-foreground",
32354
+ "relative w-full overflow-hidden rounded-sm border bg-background text-foreground",
31531
32355
  className
31532
32356
  ),
31533
32357
  ...props,
@@ -31642,7 +32466,7 @@ function HoverCardContent2({
31642
32466
  align,
31643
32467
  sideOffset,
31644
32468
  className: cn(
31645
- "z-50 w-64 origin-(--radix-hover-card-content-transform-origin) rounded-md border bg-popover p-4 text-popover-foreground shadow-md outline-hidden data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[state=open]:animate-in data-[state=open]:fade-in-0 data-[state=open]:zoom-in-95",
32469
+ "z-50 w-64 origin-(--radix-hover-card-content-transform-origin) rounded-sm border bg-popover p-4 text-popover-foreground shadow-md outline-hidden data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[state=open]:animate-in data-[state=open]:fade-in-0 data-[state=open]:zoom-in-95",
31646
32470
  className
31647
32471
  ),
31648
32472
  ...props
@@ -32346,7 +33170,7 @@ function DropdownMenuContent2({
32346
33170
  "data-slot": "dropdown-menu-content",
32347
33171
  sideOffset,
32348
33172
  className: cn(
32349
- "z-50 max-h-(--radix-dropdown-menu-content-available-height) min-w-[8rem] origin-(--radix-dropdown-menu-content-transform-origin) overflow-x-hidden overflow-y-auto rounded-md border bg-popover p-1 text-popover-foreground shadow-md data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[state=open]:animate-in data-[state=open]:fade-in-0 data-[state=open]:zoom-in-95",
33173
+ "z-50 max-h-(--radix-dropdown-menu-content-available-height) min-w-[8rem] origin-(--radix-dropdown-menu-content-transform-origin) overflow-x-hidden overflow-y-auto rounded-sm border bg-popover p-1 text-popover-foreground shadow-md data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[state=open]:animate-in data-[state=open]:fade-in-0 data-[state=open]:zoom-in-95",
32350
33174
  className
32351
33175
  ),
32352
33176
  ...props
@@ -32633,7 +33457,7 @@ function Textarea2({ className, ...props }) {
32633
33457
  {
32634
33458
  "data-slot": "textarea",
32635
33459
  className: cn(
32636
- "flex field-sizing-content min-h-16 w-full rounded-md border border-input bg-transparent px-3 py-2 text-base shadow-xs transition-[color,box-shadow] outline-none placeholder:text-muted-foreground focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 disabled:cursor-not-allowed disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-destructive/20 md:text-sm dark:bg-input/30 dark:aria-invalid:ring-destructive/40",
33460
+ "flex field-sizing-content min-h-16 w-full rounded-sm border border-input bg-transparent px-3 py-2 text-base shadow-xs transition-[color,box-shadow] outline-none placeholder:text-muted-foreground focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 disabled:cursor-not-allowed disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-destructive/20 md:text-sm dark:bg-input/30 dark:aria-invalid:ring-destructive/40",
32637
33461
  className
32638
33462
  ),
32639
33463
  ...props
@@ -32653,7 +33477,7 @@ function PromptInputAttachment({ data, className, ...props }) {
32653
33477
  return /* @__PURE__ */ jsxs(
32654
33478
  "div",
32655
33479
  {
32656
- className: cn("group relative h-14 w-14 rounded-md border", className),
33480
+ className: cn("group relative h-14 w-14 rounded-sm border", className),
32657
33481
  ...props,
32658
33482
  children: [
32659
33483
  data.mediaType?.startsWith("image/") && data.url ? /* @__PURE__ */ jsx(
@@ -32931,7 +33755,7 @@ var PromptInput = ({
32931
33755
  "form",
32932
33756
  {
32933
33757
  className: cn(
32934
- "w-full divide-y overflow-hidden rounded-xl border bg-background shadow-sm",
33758
+ "w-full divide-y overflow-hidden rounded-sm border bg-background shadow-sm",
32935
33759
  className
32936
33760
  ),
32937
33761
  onSubmit: handleSubmit,
@@ -33296,7 +34120,7 @@ var TaskItemFile = ({ children, className, ...props }) => /* @__PURE__ */ jsx(
33296
34120
  "div",
33297
34121
  {
33298
34122
  className: cn(
33299
- "inline-flex items-center gap-1 rounded-md border bg-secondary px-1.5 py-0.5 text-xs text-foreground",
34123
+ "inline-flex items-center gap-1 rounded-sm border bg-secondary px-1.5 py-0.5 text-xs text-foreground",
33300
34124
  className
33301
34125
  ),
33302
34126
  ...props,
@@ -33331,7 +34155,7 @@ var TaskContent = ({ children, className, ...props }) => /* @__PURE__ */ jsx(
33331
34155
  children: /* @__PURE__ */ jsx("div", { className: "mt-4 space-y-2 border-l-2 border-muted pl-4", children })
33332
34156
  }
33333
34157
  );
33334
- var Tool = ({ className, ...props }) => /* @__PURE__ */ jsx(Collapsible2, { className: cn("not-prose mb-4 w-full rounded-md border", className), ...props });
34158
+ var Tool = ({ className, ...props }) => /* @__PURE__ */ jsx(Collapsible2, { className: cn("not-prose mb-4 w-full rounded-sm border", className), ...props });
33335
34159
  var getStatusBadge = (status) => {
33336
34160
  const labels = {
33337
34161
  "input-streaming": "Pending",
@@ -33413,7 +34237,7 @@ function Input2({ className, type, ...props }) {
33413
34237
  type,
33414
34238
  "data-slot": "input",
33415
34239
  className: cn(
33416
- "h-9 w-full min-w-0 rounded-md border border-input bg-transparent px-3 py-1 text-base shadow-xs transition-[color,box-shadow] outline-none selection:bg-primary selection:text-primary-foreground file:inline-flex file:h-7 file:border-0 file:bg-transparent file:text-sm file:font-medium file:text-foreground placeholder:text-muted-foreground disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-50 md:text-sm dark:bg-input/30",
34240
+ "h-9 w-full min-w-0 rounded-sm border border-input bg-transparent px-3 py-1 text-base shadow-xs transition-[color,box-shadow] outline-none selection:bg-primary selection:text-primary-foreground file:inline-flex file:h-7 file:border-0 file:bg-transparent file:text-sm file:font-medium file:text-foreground placeholder:text-muted-foreground disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-50 md:text-sm dark:bg-input/30",
33417
34241
  "focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50",
33418
34242
  "aria-invalid:border-destructive aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40",
33419
34243
  className
@@ -33452,7 +34276,7 @@ var WebPreview = ({
33452
34276
  return /* @__PURE__ */ jsx(WebPreviewContext.Provider, { value: contextValue, children: /* @__PURE__ */ jsx(
33453
34277
  "div",
33454
34278
  {
33455
- className: cn("flex size-full flex-col rounded-lg border bg-card", className),
34279
+ className: cn("flex size-full flex-col rounded-sm border bg-card", className),
33456
34280
  ...props,
33457
34281
  children
33458
34282
  }
@@ -33691,6 +34515,6 @@ var languages = [
33691
34515
  "html"
33692
34516
  ];
33693
34517
 
33694
- 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, 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 };
34518
+ 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 };
33695
34519
  //# sourceMappingURL=index.js.map
33696
34520
  //# sourceMappingURL=index.js.map