@almadar/ui 4.57.4 → 5.0.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.
Files changed (41) hide show
  1. package/dist/avl/index.cjs +270 -69
  2. package/dist/avl/index.js +270 -69
  3. package/dist/components/index.cjs +101 -68
  4. package/dist/components/index.js +101 -68
  5. package/dist/context/index.cjs +199 -0
  6. package/dist/context/index.js +199 -0
  7. package/dist/context/themeTokens.d.ts +1 -1
  8. package/dist/docs/index.cjs +21 -21
  9. package/dist/docs/index.js +21 -21
  10. package/dist/marketing/index.cjs +18 -18
  11. package/dist/marketing/index.js +18 -18
  12. package/dist/providers/index.cjs +101 -68
  13. package/dist/providers/index.js +101 -68
  14. package/dist/runtime/index.cjs +270 -69
  15. package/dist/runtime/index.js +270 -69
  16. package/package.json +2 -2
  17. package/tailwind-preset.cjs +118 -3
  18. package/themes/_contract.md +198 -0
  19. package/themes/almadar-website.css +212 -0
  20. package/themes/almadar.css +210 -0
  21. package/themes/arctic.css +210 -0
  22. package/themes/atelier.css +427 -0
  23. package/themes/copper.css +210 -0
  24. package/themes/ember.css +210 -0
  25. package/themes/forest.css +210 -0
  26. package/themes/gazette.css +411 -0
  27. package/themes/index.css +7 -0
  28. package/themes/kiosk.css +412 -0
  29. package/themes/lavender.css +210 -0
  30. package/themes/midnight.css +210 -0
  31. package/themes/minimalist.css +210 -0
  32. package/themes/neon.css +210 -0
  33. package/themes/ocean.css +210 -0
  34. package/themes/prism.css +406 -0
  35. package/themes/rose.css +210 -0
  36. package/themes/sand.css +210 -0
  37. package/themes/slate.css +210 -0
  38. package/themes/sunset.css +210 -0
  39. package/themes/terminal.css +422 -0
  40. package/themes/trait-wars.css +210 -0
  41. package/themes/wireframe.css +216 -0
@@ -5171,6 +5171,37 @@ var init_ThemeContext = __esm({
5171
5171
  displayName: "Copper",
5172
5172
  hasLightMode: true,
5173
5173
  hasDarkMode: true
5174
+ },
5175
+ // Layer 1 skin axes — truly-unique themes (compact tech / editorial / brutalist dense / display-heavy / touch-first)
5176
+ {
5177
+ name: "prism",
5178
+ displayName: "Prism",
5179
+ hasLightMode: true,
5180
+ hasDarkMode: true
5181
+ },
5182
+ {
5183
+ name: "gazette",
5184
+ displayName: "Gazette",
5185
+ hasLightMode: true,
5186
+ hasDarkMode: true
5187
+ },
5188
+ {
5189
+ name: "terminal",
5190
+ displayName: "Terminal",
5191
+ hasLightMode: true,
5192
+ hasDarkMode: true
5193
+ },
5194
+ {
5195
+ name: "atelier",
5196
+ displayName: "Atelier",
5197
+ hasLightMode: true,
5198
+ hasDarkMode: true
5199
+ },
5200
+ {
5201
+ name: "kiosk",
5202
+ displayName: "Kiosk",
5203
+ hasLightMode: true,
5204
+ hasDarkMode: true
5174
5205
  }
5175
5206
  ];
5176
5207
  ThemeContext = React96.createContext(void 0);
@@ -5878,7 +5909,7 @@ var init_Button = __esm({
5878
5909
  };
5879
5910
  iconSizeStyles = {
5880
5911
  sm: "h-3.5 w-3.5",
5881
- md: "h-4 w-4",
5912
+ md: "h-icon-default w-icon-default",
5882
5913
  lg: "h-5 w-5"
5883
5914
  };
5884
5915
  Button = React96__namespace.default.forwardRef(
@@ -5931,7 +5962,7 @@ var init_Button = __esm({
5931
5962
  ...props,
5932
5963
  "data-testid": props["data-testid"] ?? (action ? `action-${action}` : void 0),
5933
5964
  children: [
5934
- isLoading ? /* @__PURE__ */ jsxRuntime.jsx(LucideIcons.Loader2, { className: "h-4 w-4 animate-spin" }) : resolvedLeftIcon && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "flex-shrink-0", children: resolvedLeftIcon }),
5965
+ isLoading ? /* @__PURE__ */ jsxRuntime.jsx(LucideIcons.Loader2, { className: "h-icon-default w-icon-default animate-spin" }) : resolvedLeftIcon && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "flex-shrink-0", children: resolvedLeftIcon }),
5935
5966
  children || label,
5936
5967
  resolvedRightIcon && !isLoading && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "flex-shrink-0", children: resolvedRightIcon })
5937
5968
  ]
@@ -6120,7 +6151,7 @@ var init_Modal = __esm({
6120
6151
  // Reset browser-default dialog chrome — we own styling.
6121
6152
  "m-0 p-0 border-0 bg-transparent",
6122
6153
  // Pre-existing dialog frame
6123
- "pointer-events-auto w-full flex flex-col bg-surface border shadow-lg rounded-md",
6154
+ "pointer-events-auto w-full flex flex-col bg-surface border shadow-elevation-dialog rounded-container",
6124
6155
  // Desktop sizing + viewport-aware floor.
6125
6156
  sizeClasses2[size],
6126
6157
  minWidthClasses[size],
@@ -6547,7 +6578,7 @@ var init_Toast = __esm({
6547
6578
  // `min-w-[300px]` only kicks in at `sm:` and above so a phone
6548
6579
  // viewport doesn't get a toast wider than the screen near the
6549
6580
  // edge. `max-w-[calc(100vw-2rem)]` clamps to viewport too.
6550
- "border-l-4 p-4 shadow min-w-0 sm:min-w-[300px] max-w-md max-w-[calc(100vw-2rem)]",
6581
+ "border-l-4 p-4 shadow-elevation-toast min-w-0 sm:min-w-[300px] max-w-md max-w-[calc(100vw-2rem)]",
6551
6582
  "rounded-sm",
6552
6583
  variantClasses[variant],
6553
6584
  className
@@ -7467,7 +7498,7 @@ var init_Input = __esm({
7467
7498
  ...props
7468
7499
  }, ref) => {
7469
7500
  const type = inputType || htmlType || "text";
7470
- const resolvedLeftIcon = leftIcon || IconComponent && /* @__PURE__ */ jsxRuntime.jsx(IconComponent, { className: "h-4 w-4" });
7501
+ const resolvedLeftIcon = leftIcon || IconComponent && /* @__PURE__ */ jsxRuntime.jsx(IconComponent, { className: "h-icon-default w-icon-default" });
7471
7502
  const showClearButton = clearable && value && String(value).length > 0;
7472
7503
  const baseClassName = cn(
7473
7504
  "block w-full rounded-sm transition-all duration-[var(--transition-fast)]",
@@ -7499,7 +7530,7 @@ var init_Input = __esm({
7499
7530
  ]
7500
7531
  }
7501
7532
  ),
7502
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: "absolute inset-y-0 right-0 pr-3 flex items-center pointer-events-none text-muted-foreground", children: /* @__PURE__ */ jsxRuntime.jsx(LucideIcons.ChevronDown, { className: "h-4 w-4" }) })
7533
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "absolute inset-y-0 right-0 pr-3 flex items-center pointer-events-none text-muted-foreground", children: /* @__PURE__ */ jsxRuntime.jsx(LucideIcons.ChevronDown, { className: "h-icon-default w-icon-default" }) })
7503
7534
  ] });
7504
7535
  }
7505
7536
  if (type === "textarea") {
@@ -7553,7 +7584,7 @@ var init_Input = __esm({
7553
7584
  type: "button",
7554
7585
  onClick: onClear,
7555
7586
  className: "absolute inset-y-0 right-0 pr-3 flex items-center text-muted-foreground hover:text-foreground",
7556
- children: /* @__PURE__ */ jsxRuntime.jsx(LucideIcons.X, { className: "h-4 w-4" })
7587
+ children: /* @__PURE__ */ jsxRuntime.jsx(LucideIcons.X, { className: "h-icon-default w-icon-default" })
7557
7588
  }
7558
7589
  ),
7559
7590
  rightIcon && !showClearButton && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "absolute inset-y-0 right-0 pr-3 flex items-center text-muted-foreground", children: rightIcon })
@@ -7653,7 +7684,7 @@ var init_Select = __esm({
7653
7684
  ]
7654
7685
  }
7655
7686
  ),
7656
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: "absolute inset-y-0 right-0 pr-3 flex items-center pointer-events-none", children: /* @__PURE__ */ jsxRuntime.jsx(LucideIcons.ChevronDown, { className: "h-4 w-4 text-foreground" }) })
7687
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "absolute inset-y-0 right-0 pr-3 flex items-center pointer-events-none", children: /* @__PURE__ */ jsxRuntime.jsx(LucideIcons.ChevronDown, { className: "h-icon-default w-icon-default text-foreground" }) })
7657
7688
  ] });
7658
7689
  }
7659
7690
  );
@@ -7706,23 +7737,23 @@ var init_Card = __esm({
7706
7737
  default: [
7707
7738
  "bg-card",
7708
7739
  "border-[length:var(--border-width)] border-border",
7709
- "shadow-sm",
7740
+ "shadow-elevation-card",
7710
7741
  "transition-all duration-[var(--transition-normal)]",
7711
- "hover:shadow-lg hover:-translate-y-0.5"
7742
+ "hover:shadow-elevation-dialog hover:-translate-y-0.5"
7712
7743
  ].join(" "),
7713
7744
  bordered: [
7714
7745
  "bg-card",
7715
7746
  "border-[length:var(--border-width)] border-border",
7716
- "shadow-sm",
7747
+ "shadow-elevation-card",
7717
7748
  "transition-all duration-[var(--transition-normal)]",
7718
- "hover:shadow-lg hover:-translate-y-0.5"
7749
+ "hover:shadow-elevation-dialog hover:-translate-y-0.5"
7719
7750
  ].join(" "),
7720
7751
  elevated: [
7721
7752
  "bg-card",
7722
7753
  "border-[length:var(--border-width)] border-border",
7723
7754
  "shadow",
7724
7755
  "transition-all duration-[var(--transition-normal)]",
7725
- "hover:shadow-lg hover:-translate-y-0.5"
7756
+ "hover:shadow-elevation-dialog hover:-translate-y-0.5"
7726
7757
  ].join(" "),
7727
7758
  // Interactive variant with theme-specific hover effects
7728
7759
  interactive: [
@@ -7731,20 +7762,20 @@ var init_Card = __esm({
7731
7762
  "shadow",
7732
7763
  "cursor-pointer",
7733
7764
  "transition-all duration-[var(--transition-normal)]",
7734
- "hover:shadow-lg"
7765
+ "hover:shadow-elevation-dialog"
7735
7766
  ].join(" ")
7736
7767
  };
7737
7768
  paddingStyles2 = {
7738
7769
  none: "",
7739
- sm: "p-3",
7740
- md: "p-4",
7741
- lg: "p-6"
7770
+ sm: "p-card-sm",
7771
+ md: "p-card-md",
7772
+ lg: "p-card-lg"
7742
7773
  };
7743
7774
  shadowStyles2 = {
7744
7775
  none: "shadow-none",
7745
- sm: "shadow-sm",
7776
+ sm: "shadow-elevation-card",
7746
7777
  md: "shadow",
7747
- lg: "shadow-lg"
7778
+ lg: "shadow-elevation-dialog"
7748
7779
  };
7749
7780
  Card = React96__namespace.default.forwardRef(
7750
7781
  ({
@@ -7762,7 +7793,7 @@ var init_Card = __esm({
7762
7793
  {
7763
7794
  ref,
7764
7795
  className: cn(
7765
- "rounded-md",
7796
+ "rounded-container",
7766
7797
  "transition-all duration-[var(--transition-normal)]",
7767
7798
  variantStyles4[variant],
7768
7799
  paddingStyles2[padding],
@@ -7891,7 +7922,7 @@ var init_FilterPill = __esm({
7891
7922
  {
7892
7923
  ref,
7893
7924
  className: cn(
7894
- "inline-flex items-center gap-1 font-bold rounded-full",
7925
+ "inline-flex items-center gap-1 font-bold rounded-pill",
7895
7926
  variantStyles5[variant],
7896
7927
  sizeStyles4[size],
7897
7928
  (onClick || clickEvent) && "cursor-pointer",
@@ -7992,8 +8023,8 @@ var init_Avatar = __esm({
7992
8023
  busy: "bg-error"
7993
8024
  };
7994
8025
  badgeSizeClasses = {
7995
- xs: "w-3 h-3 text-[8px]",
7996
- sm: "w-4 h-4 text-[10px]",
8026
+ xs: "w-3 h-3 text-xs",
8027
+ sm: "w-4 h-4 text-xs",
7997
8028
  md: "w-5 h-5 text-xs",
7998
8029
  lg: "w-6 h-6 text-sm",
7999
8030
  xl: "w-7 h-7 text-base"
@@ -8265,7 +8296,7 @@ var init_ProgressBar = __esm({
8265
8296
  "div",
8266
8297
  {
8267
8298
  className: cn(
8268
- "h-full transition-all duration-300 ease-out",
8299
+ "h-full transition-all duration-normal ease-emphasized",
8269
8300
  colorClasses[effectiveColor]
8270
8301
  ),
8271
8302
  style: { width: `${percentage}%` },
@@ -8321,7 +8352,7 @@ var init_ProgressBar = __esm({
8321
8352
  strokeDashoffset: offset,
8322
8353
  strokeLinecap: "round",
8323
8354
  className: cn(
8324
- "transition-all duration-300 ease-out",
8355
+ "transition-all duration-normal ease-emphasized",
8325
8356
  colorClasses[effectiveColor]
8326
8357
  )
8327
8358
  }
@@ -8360,7 +8391,7 @@ var init_ProgressBar = __esm({
8360
8391
  "div",
8361
8392
  {
8362
8393
  className: cn(
8363
- "h-full transition-all duration-300 ease-out",
8394
+ "h-full transition-all duration-normal ease-emphasized",
8364
8395
  (isActive || isPartial) && colorClasses[effectiveColor]
8365
8396
  ),
8366
8397
  style: {
@@ -8771,7 +8802,7 @@ var init_ThemeToggle = __esm({
8771
8802
  "text-foreground",
8772
8803
  "hover:bg-muted border-[length:var(--border-width)] border-transparent hover:border-border",
8773
8804
  "focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2",
8774
- "transition-colors duration-200",
8805
+ "transition-colors duration-fast",
8775
8806
  sizeClasses4[size],
8776
8807
  className
8777
8808
  ),
@@ -8818,7 +8849,7 @@ var init_FlipContainer = __esm({
8818
8849
  children: /* @__PURE__ */ jsxRuntime.jsx(
8819
8850
  Box,
8820
8851
  {
8821
- className: "relative w-full h-full transition-transform duration-500",
8852
+ className: "relative w-full h-full transition-transform duration-slow",
8822
8853
  style: {
8823
8854
  transformStyle: "preserve-3d",
8824
8855
  transform: flipped ? "rotateY(180deg)" : "rotateY(0deg)"
@@ -8876,7 +8907,7 @@ var init_ConditionalWrapper = __esm({
8876
8907
  Box,
8877
8908
  {
8878
8909
  overflow: "hidden",
8879
- className: `transition-all duration-200 ${isVisible ? "opacity-100 max-h-[1000px]" : "opacity-0 max-h-0"}`,
8910
+ className: `transition-all duration-fast ${isVisible ? "opacity-100 max-h-[1000px]" : "opacity-0 max-h-0"}`,
8880
8911
  children: isVisible ? children : fallback
8881
8912
  }
8882
8913
  );
@@ -12432,7 +12463,7 @@ var init_InstallBox = __esm({
12432
12463
  /* @__PURE__ */ jsxRuntime.jsx(
12433
12464
  Box,
12434
12465
  {
12435
- className: "bg-surface rounded-md border-[length:var(--border-width)] border-border",
12466
+ className: "bg-surface rounded-container border-[length:var(--border-width)] border-border",
12436
12467
  padding: "md",
12437
12468
  children: /* @__PURE__ */ jsxRuntime.jsxs(Box, { className: "flex items-center gap-3", children: [
12438
12469
  /* @__PURE__ */ jsxRuntime.jsx(
@@ -13157,7 +13188,7 @@ var init_Tooltip = __esm({
13157
13188
  className: cn(
13158
13189
  "fixed z-50 px-3 py-2 max-w-xs",
13159
13190
  "bg-primary text-primary-foreground",
13160
- "shadow-sm rounded-sm",
13191
+ "shadow-elevation-popover rounded-sm",
13161
13192
  "text-sm pointer-events-none",
13162
13193
  "break-words whitespace-normal",
13163
13194
  "h-auto min-h-fit",
@@ -13312,7 +13343,7 @@ var init_Popover = __esm({
13312
13343
  ref: popoverRef,
13313
13344
  className: cn(
13314
13345
  "fixed z-50 p-4",
13315
- "bg-card border-2 border-border shadow-lg",
13346
+ "bg-card border-2 border-border shadow-elevation-popover",
13316
13347
  positionClasses2[position],
13317
13348
  className
13318
13349
  ),
@@ -13426,7 +13457,7 @@ var init_Menu = __esm({
13426
13457
  const menuContainerStyles = cn(
13427
13458
  "bg-card",
13428
13459
  "border-[length:var(--border-width)] border-border",
13429
- "shadow",
13460
+ "shadow-elevation-popover",
13430
13461
  "rounded-sm",
13431
13462
  "min-w-0 sm:min-w-[200px] max-w-[calc(100vw-1rem)] py-1"
13432
13463
  );
@@ -13594,7 +13625,7 @@ var init_Accordion = __esm({
13594
13625
  "w-full flex items-center justify-between px-4 py-3",
13595
13626
  "bg-card",
13596
13627
  "hover:bg-muted",
13597
- "transition-colors duration-200",
13628
+ "transition-colors duration-fast",
13598
13629
  "focus:outline-none focus:ring-2 focus:ring-ring focus:ring-inset",
13599
13630
  "disabled:opacity-50 disabled:cursor-not-allowed",
13600
13631
  isOpen && "bg-muted font-bold"
@@ -13609,7 +13640,7 @@ var init_Accordion = __esm({
13609
13640
  icon: LucideIcons.ChevronDown,
13610
13641
  size: "sm",
13611
13642
  className: cn(
13612
- "transition-transform duration-200",
13643
+ "transition-transform duration-fast",
13613
13644
  isOpen && "transform rotate-180"
13614
13645
  )
13615
13646
  }
@@ -13739,7 +13770,7 @@ var init_FloatingActionButton = __esm({
13739
13770
  {
13740
13771
  align: "center",
13741
13772
  gap: "sm",
13742
- className: "transition-all duration-200",
13773
+ className: "transition-all duration-fast",
13743
13774
  style: {
13744
13775
  opacity: isExpanded ? 1 : 0,
13745
13776
  transform: isExpanded ? "translateY(0)" : "translateY(10px)",
@@ -13777,7 +13808,7 @@ var init_FloatingActionButton = __esm({
13777
13808
  size: "lg",
13778
13809
  icon: isExpanded ? LucideIcons.X : LucideIcons.Plus,
13779
13810
  onClick: handleMainClick,
13780
- className: "rounded-full shadow-lg transition-all duration-300",
13811
+ className: "rounded-full shadow-lg transition-all duration-normal",
13781
13812
  "aria-label": isExpanded ? "Close actions" : "Open actions",
13782
13813
  "aria-expanded": isExpanded,
13783
13814
  children: /* @__PURE__ */ jsxRuntime.jsx(Typography, { as: "span", className: "sr-only", children: isExpanded ? t("common.close") : t("common.open") })
@@ -17153,8 +17184,8 @@ function Card2({
17153
17184
  className: `
17154
17185
  bg-card
17155
17186
  border border-border
17156
- rounded-md shadow-sm
17157
- ${isClickable ? "cursor-pointer hover:shadow-lg transition-shadow" : ""}
17187
+ rounded-container shadow-elevation-card
17188
+ ${isClickable ? "cursor-pointer hover:shadow-elevation-dialog transition-shadow" : ""}
17158
17189
  ${className}
17159
17190
  `,
17160
17191
  onClick: isClickable ? handleClick : void 0,
@@ -19959,7 +19990,7 @@ var init_BranchingLogicBuilder = __esm({
19959
19990
  const height = PADDING * 2 + items.length * (NODE_HEIGHT + NODE_GAP_Y);
19960
19991
  return { items, positions, width, height };
19961
19992
  }, [questions]);
19962
- return /* @__PURE__ */ jsxRuntime.jsx(Box, { className: "overflow-auto rounded-md border border-border bg-card p-2", children: /* @__PURE__ */ jsxRuntime.jsxs(
19993
+ return /* @__PURE__ */ jsxRuntime.jsx(Box, { className: "overflow-auto rounded-container border border-border bg-card p-2", children: /* @__PURE__ */ jsxRuntime.jsxs(
19963
19994
  "svg",
19964
19995
  {
19965
19996
  width: layout.width,
@@ -22857,7 +22888,7 @@ var init_Carousel = __esm({
22857
22888
  Box,
22858
22889
  {
22859
22890
  className: cn(
22860
- "rounded-full cursor-pointer transition-all duration-200"
22891
+ "rounded-full cursor-pointer transition-all duration-fast"
22861
22892
  ),
22862
22893
  style: {
22863
22894
  width: isActive ? 10 : 8,
@@ -23949,7 +23980,7 @@ var init_CodeExample = __esm({
23949
23980
  {
23950
23981
  className: cn(
23951
23982
  "bg-foreground",
23952
- "rounded-md",
23983
+ "rounded-container",
23953
23984
  "border-[length:var(--border-width)] border-border",
23954
23985
  "overflow-hidden",
23955
23986
  className
@@ -26330,7 +26361,7 @@ function DataGrid({
26330
26361
  className: cn(
26331
26362
  "bg-card rounded-lg",
26332
26363
  "border border-border",
26333
- "shadow-sm hover:shadow-lg",
26364
+ "shadow-elevation-card hover:shadow-elevation-dialog",
26334
26365
  "hover:border-primary transition-all",
26335
26366
  "flex flex-col",
26336
26367
  isSelected && "ring-2 ring-primary border-primary"
@@ -26704,7 +26735,7 @@ function DataList({
26704
26735
  {
26705
26736
  variant: "caption",
26706
26737
  className: cn(
26707
- "mt-1 text-[0.65rem]",
26738
+ "mt-1 text-xs",
26708
26739
  isSent ? "opacity-70" : "text-muted-foreground"
26709
26740
  ),
26710
26741
  children: formatDate3(timestamp)
@@ -26769,7 +26800,7 @@ function DataList({
26769
26800
  Box,
26770
26801
  {
26771
26802
  className: cn(
26772
- "group flex items-center gap-4 transition-all duration-200",
26803
+ "group flex items-center gap-4 transition-all duration-fast",
26773
26804
  isCompact ? "px-4 py-2" : "px-6 py-4",
26774
26805
  "hover:bg-muted/80",
26775
26806
  !isCard && !isCompact && "rounded-lg border border-transparent hover:border-border"
@@ -26856,7 +26887,7 @@ function DataList({
26856
26887
  Box,
26857
26888
  {
26858
26889
  className: cn(
26859
- isCard && "bg-card rounded-xl border border-border shadow-lg overflow-hidden",
26890
+ isCard && "bg-card rounded-xl border border-border shadow-elevation-dialog overflow-hidden",
26860
26891
  !isCard && gapClass,
26861
26892
  className
26862
26893
  ),
@@ -26998,7 +27029,7 @@ var init_FileTree = __esm({
26998
27029
  Typography,
26999
27030
  {
27000
27031
  variant: "caption",
27001
- className: `truncate font-mono text-[11px] !text-inherit ${isSelected ? "font-semibold" : ""}`,
27032
+ className: `truncate font-mono text-xs !text-inherit ${isSelected ? "font-semibold" : ""}`,
27002
27033
  children: node.name
27003
27034
  }
27004
27035
  ),
@@ -27448,7 +27479,7 @@ var init_FilterGroup = __esm({
27448
27479
  "div",
27449
27480
  {
27450
27481
  className: cn(
27451
- "p-4 rounded-md",
27482
+ "p-4 rounded-container",
27452
27483
  "bg-card",
27453
27484
  "border-[length:var(--border-width)] border-border",
27454
27485
  className
@@ -28130,7 +28161,7 @@ var init_SidePanel = __esm({
28130
28161
  "border-l-2 border-border",
28131
28162
  position === "left" && "border-l-0 border-r-2",
28132
28163
  "flex flex-col",
28133
- "transition-transform duration-300 ease-in-out",
28164
+ "transition-transform duration-normal ease-standard",
28134
28165
  width,
28135
28166
  position === "right" ? "right-0" : "left-0",
28136
28167
  className
@@ -28532,7 +28563,7 @@ var init_ViolationAlert = __esm({
28532
28563
  Box,
28533
28564
  {
28534
28565
  className: cn(
28535
- "px-3 py-2 rounded-md border",
28566
+ "px-3 py-2 rounded-container border",
28536
28567
  bgColor,
28537
28568
  className
28538
28569
  ),
@@ -28793,7 +28824,7 @@ var init_FlipCard = __esm({
28793
28824
  /* @__PURE__ */ jsxRuntime.jsx(
28794
28825
  Box,
28795
28826
  {
28796
- className: "absolute inset-0 w-full h-full rounded-lg shadow-lg flex items-center justify-center p-6",
28827
+ className: "absolute inset-0 w-full h-full rounded-lg shadow-elevation-dialog flex items-center justify-center p-6",
28797
28828
  style: { backfaceVisibility: "hidden", transform: "rotateY(0deg)" },
28798
28829
  children: front
28799
28830
  }
@@ -28801,7 +28832,7 @@ var init_FlipCard = __esm({
28801
28832
  /* @__PURE__ */ jsxRuntime.jsx(
28802
28833
  Box,
28803
28834
  {
28804
- className: "absolute inset-0 w-full h-full rounded-lg shadow-lg flex items-center justify-center p-6",
28835
+ className: "absolute inset-0 w-full h-full rounded-lg shadow-elevation-dialog flex items-center justify-center p-6",
28805
28836
  style: { backfaceVisibility: "hidden", transform: "rotateY(180deg)" },
28806
28837
  children: back
28807
28838
  }
@@ -29146,7 +29177,7 @@ var init_ProgressDots = __esm({
29146
29177
  Box,
29147
29178
  {
29148
29179
  className: cn(
29149
- "rounded-full transition-all duration-200",
29180
+ "rounded-full transition-all duration-fast",
29150
29181
  onDotClick && "cursor-pointer"
29151
29182
  ),
29152
29183
  style: {
@@ -32167,7 +32198,7 @@ var init_Meter = __esm({
32167
32198
  strokeDasharray: circumference,
32168
32199
  strokeDashoffset: offset,
32169
32200
  strokeLinecap: "round",
32170
- className: "transition-all duration-500 ease-out"
32201
+ className: "transition-all duration-slow ease-emphasized"
32171
32202
  }
32172
32203
  )
32173
32204
  ]
@@ -32210,7 +32241,7 @@ var init_Meter = __esm({
32210
32241
  Box,
32211
32242
  {
32212
32243
  className: cn(
32213
- "h-2 flex-1 rounded-sm transition-all duration-300",
32244
+ "h-2 flex-1 rounded-sm transition-all duration-normal",
32214
32245
  !isActive && "bg-muted"
32215
32246
  ),
32216
32247
  style: isActive ? { backgroundColor: segColor } : void 0
@@ -32229,7 +32260,7 @@ var init_Meter = __esm({
32229
32260
  /* @__PURE__ */ jsxRuntime.jsx(Box, { className: "w-full h-3 bg-muted rounded-full overflow-hidden", children: /* @__PURE__ */ jsxRuntime.jsx(
32230
32261
  Box,
32231
32262
  {
32232
- className: "h-full rounded-full transition-all duration-500 ease-out",
32263
+ className: "h-full rounded-full transition-all duration-slow ease-emphasized",
32233
32264
  style: {
32234
32265
  width: `${percentage}%`,
32235
32266
  backgroundColor: activeColor
@@ -32755,7 +32786,7 @@ var init_PullToRefresh = __esm({
32755
32786
  className: cn(
32756
32787
  "top-0 left-0 right-0 z-10",
32757
32788
  "items-center justify-center",
32758
- "transition-opacity duration-200",
32789
+ "transition-opacity duration-fast",
32759
32790
  showIndicator ? "opacity-100" : "opacity-0"
32760
32791
  ),
32761
32792
  style: {
@@ -32941,7 +32972,7 @@ var init_PricingCard = __esm({
32941
32972
  "hover:-translate-y-1 transition-all",
32942
32973
  highlighted && [
32943
32974
  "border-[length:2px] border-primary",
32944
- "shadow-lg",
32975
+ "shadow-elevation-dialog",
32945
32976
  "scale-[1.05]",
32946
32977
  "ring-2 ring-primary"
32947
32978
  ],
@@ -34998,7 +35029,7 @@ var init_PositionedCanvas = __esm({
34998
35029
  {
34999
35030
  ref: containerRef,
35000
35031
  "data-testid": "positioned-canvas",
35001
- className: "relative bg-background border border-border rounded-md overflow-hidden",
35032
+ className: "relative bg-background border border-border rounded-container overflow-hidden",
35002
35033
  style: { width, height },
35003
35034
  onClick: handleContainerClick,
35004
35035
  children: items.map((item) => {
@@ -35199,7 +35230,7 @@ function BlockMenu({ block, readOnly, onDelete, onDuplicate, onChangeType }) {
35199
35230
  role: "menu",
35200
35231
  className: cn(
35201
35232
  "absolute right-0 z-10 mt-1 w-44",
35202
- "rounded-md border border-border bg-popover shadow-md",
35233
+ "rounded-container border border-border bg-popover shadow-elevation-popover",
35203
35234
  "py-1 text-sm"
35204
35235
  ),
35205
35236
  children: [
@@ -36475,7 +36506,7 @@ function DocCodeBlock({
36475
36506
  Box,
36476
36507
  {
36477
36508
  className: cn(
36478
- "rounded-md border border-border overflow-hidden",
36509
+ "rounded-container border border-border overflow-hidden",
36479
36510
  className
36480
36511
  ),
36481
36512
  position: "relative",
@@ -36634,11 +36665,11 @@ var init_DocPagination = __esm({
36634
36665
  init_Typography();
36635
36666
  linkCardStyles = [
36636
36667
  "border border-border",
36637
- "rounded-md",
36668
+ "rounded-container",
36638
36669
  "p-4",
36639
36670
  "transition-all",
36640
36671
  "hover:border-primary",
36641
- "hover:shadow-lg",
36672
+ "hover:shadow-elevation-dialog",
36642
36673
  "no-underline",
36643
36674
  "flex-1",
36644
36675
  "min-w-0",
@@ -36775,7 +36806,7 @@ function DocSearch({
36775
36806
  Box,
36776
36807
  {
36777
36808
  position: "absolute",
36778
- className: "top-full left-0 right-0 mt-1 z-50 bg-card border border-border rounded-md shadow-lg max-h-80 overflow-y-auto",
36809
+ className: "top-full left-0 right-0 mt-1 z-50 bg-card border border-border rounded-container shadow-elevation-popover max-h-80 overflow-y-auto",
36779
36810
  children: /* @__PURE__ */ jsxRuntime.jsx(VStack, { gap: "none", children: results.map((result, index) => /* @__PURE__ */ jsxRuntime.jsx(
36780
36811
  Box,
36781
36812
  {
@@ -39312,10 +39343,11 @@ var init_Form = __esm({
39312
39343
  type: f3.type,
39313
39344
  required: f3.required,
39314
39345
  defaultValue: f3.default,
39315
- values: f3.values,
39346
+ // EntityField is a discriminated union — `values` lives on Scalar/Enum, `relation` lives on Relation.
39347
+ values: "values" in f3 ? f3.values : void 0,
39316
39348
  min: f3.min,
39317
39349
  max: f3.max,
39318
- relation: f3.relation ? { entity: f3.relation.entity } : void 0
39350
+ relation: "relation" in f3 ? { entity: f3.relation.entity } : void 0
39319
39351
  })
39320
39352
  );
39321
39353
  }, [entity, fields]);
@@ -39543,10 +39575,11 @@ var init_Form = __esm({
39543
39575
  type: entityField.type,
39544
39576
  required: entityField.required,
39545
39577
  defaultValue: entityField.default,
39546
- values: entityField.values,
39578
+ // EntityField is a discriminated union — `values` lives on Scalar/Enum, `relation` lives on Relation.
39579
+ values: "values" in entityField ? entityField.values : void 0,
39547
39580
  min: entityField.min,
39548
39581
  max: entityField.max,
39549
- relation: entityField.relation ? { entity: entityField.relation.entity } : void 0
39582
+ relation: "relation" in entityField ? { entity: entityField.relation.entity } : void 0
39550
39583
  };
39551
39584
  }
39552
39585
  return { name: field, type: "string" };
@@ -59732,8 +59765,176 @@ function themeTokensToCssVars(tokens, mode = "light", darkVariant) {
59732
59765
  vars[`--shadow-${key}`] = value;
59733
59766
  }
59734
59767
  }
59768
+ const pickDensity = isDark && darkVariant?.density ? darkVariant.density : tokens.density;
59769
+ emitDensity(pickDensity, vars);
59770
+ const pickTypeScale = isDark && darkVariant?.typeScale ? darkVariant.typeScale : tokens.typeScale;
59771
+ emitTypeScale(pickTypeScale, vars);
59772
+ const pickMotion = isDark && darkVariant?.motion ? darkVariant.motion : tokens.motion;
59773
+ emitMotion(pickMotion, vars);
59774
+ const pickIconography = isDark && darkVariant?.iconography ? darkVariant.iconography : tokens.iconography;
59775
+ emitIconography(pickIconography, vars);
59776
+ const pickElevation = isDark && darkVariant?.elevation ? darkVariant.elevation : tokens.elevation;
59777
+ emitElevation(pickElevation, vars);
59778
+ const pickGeometry = isDark && darkVariant?.geometry ? darkVariant.geometry : tokens.geometry;
59779
+ emitGeometry(pickGeometry, vars);
59735
59780
  return vars;
59736
59781
  }
59782
+ function emitDensity(density, vars) {
59783
+ if (!density) return;
59784
+ if (density.spacing) {
59785
+ const s = density.spacing;
59786
+ const pairs2 = [
59787
+ ["0", s.space0],
59788
+ ["1", s.space1],
59789
+ ["2", s.space2],
59790
+ ["3", s.space3],
59791
+ ["4", s.space4],
59792
+ ["5", s.space5],
59793
+ ["6", s.space6],
59794
+ ["7", s.space7],
59795
+ ["8", s.space8],
59796
+ ["9", s.space9],
59797
+ ["10", s.space10],
59798
+ ["11", s.space11],
59799
+ ["12", s.space12]
59800
+ ];
59801
+ for (const [k, v] of pairs2) {
59802
+ if (v !== void 0) vars[`--space-${k}`] = v;
59803
+ }
59804
+ }
59805
+ const pairs = [
59806
+ ["button-height-sm", density.buttonHeightSm],
59807
+ ["button-height-md", density.buttonHeightMd],
59808
+ ["button-height-lg", density.buttonHeightLg],
59809
+ ["input-height-sm", density.inputHeightSm],
59810
+ ["input-height-md", density.inputHeightMd],
59811
+ ["input-height-lg", density.inputHeightLg],
59812
+ ["row-height-compact", density.rowHeightCompact],
59813
+ ["row-height-normal", density.rowHeightNormal],
59814
+ ["row-height-spacious", density.rowHeightSpacious],
59815
+ ["card-padding-sm", density.cardPaddingSm],
59816
+ ["card-padding-md", density.cardPaddingMd],
59817
+ ["card-padding-lg", density.cardPaddingLg],
59818
+ ["dialog-padding", density.dialogPadding],
59819
+ ["section-gap", density.sectionGap]
59820
+ ];
59821
+ for (const [k, v] of pairs) {
59822
+ if (v !== void 0) vars[`--${k}`] = v;
59823
+ }
59824
+ }
59825
+ function typeSizeKeyStr(k) {
59826
+ return k;
59827
+ }
59828
+ function typeWeightStr(w) {
59829
+ return w;
59830
+ }
59831
+ function emitTypeIntent(name, intent, vars) {
59832
+ const sizeKey = typeSizeKeyStr(intent.size);
59833
+ const weight = typeWeightStr(intent.weight);
59834
+ vars[`--intent-${name}-size`] = `var(--text-${sizeKey})`;
59835
+ vars[`--intent-${name}-weight`] = `var(--font-weight-${weight})`;
59836
+ vars[`--intent-${name}-leading`] = `var(--leading-${sizeKey})`;
59837
+ }
59838
+ function emitTypeScale(ts, vars) {
59839
+ if (!ts) return;
59840
+ if (ts.displayFamily !== void 0) vars["--font-family-display"] = ts.displayFamily;
59841
+ if (ts.bodyFamily !== void 0) vars["--font-family-body"] = ts.bodyFamily;
59842
+ if (ts.monoFamily !== void 0) vars["--font-family-mono"] = ts.monoFamily;
59843
+ if (ts.scale) {
59844
+ const s = ts.scale;
59845
+ const pairs = [
59846
+ ["xs", s.xs],
59847
+ ["sm", s.sm],
59848
+ ["base", s.base],
59849
+ ["lg", s.lg],
59850
+ ["xl", s.xl],
59851
+ ["2xl", s["2xl"]],
59852
+ ["3xl", s["3xl"]],
59853
+ ["4xl", s["4xl"]],
59854
+ ["display-1", s["display-1"]],
59855
+ ["display-2", s["display-2"]]
59856
+ ];
59857
+ for (const [k, entry] of pairs) {
59858
+ if (entry !== void 0) {
59859
+ vars[`--text-${k}`] = entry.size;
59860
+ vars[`--leading-${k}`] = entry.lineHeight;
59861
+ }
59862
+ }
59863
+ }
59864
+ if (ts.intents) {
59865
+ const i = ts.intents;
59866
+ if (i.headingMajor) emitTypeIntent("heading-major", i.headingMajor, vars);
59867
+ if (i.headingMinor) emitTypeIntent("heading-minor", i.headingMinor, vars);
59868
+ if (i.bodyEmphasis) emitTypeIntent("body-emphasis", i.bodyEmphasis, vars);
59869
+ if (i.bodyDefault) emitTypeIntent("body-default", i.bodyDefault, vars);
59870
+ if (i.bodyQuiet) emitTypeIntent("body-quiet", i.bodyQuiet, vars);
59871
+ if (i.caption) emitTypeIntent("caption", i.caption, vars);
59872
+ if (i.numeric) emitTypeIntent("numeric", i.numeric, vars);
59873
+ }
59874
+ }
59875
+ function emitMotionIntent(name, intent, vars) {
59876
+ vars[`--intent-${name}-duration`] = `var(--duration-${intent.duration})`;
59877
+ vars[`--intent-${name}-easing`] = `var(--easing-${intent.easing})`;
59878
+ }
59879
+ function emitMotion(m, vars) {
59880
+ if (!m) return;
59881
+ if (m.durations) {
59882
+ const d = m.durations;
59883
+ const pairs = [
59884
+ ["instant", d.instant],
59885
+ ["fast", d.fast],
59886
+ ["normal", d.normal],
59887
+ ["slow", d.slow],
59888
+ ["dramatic", d.dramatic]
59889
+ ];
59890
+ for (const [k, v] of pairs) {
59891
+ if (v !== void 0) vars[`--duration-${k}`] = v;
59892
+ }
59893
+ }
59894
+ if (m.easings) {
59895
+ const e = m.easings;
59896
+ const pairs = [
59897
+ ["linear", e.linear],
59898
+ ["standard", e.standard],
59899
+ ["emphasized", e.emphasized],
59900
+ ["spring", e.spring]
59901
+ ];
59902
+ for (const [k, v] of pairs) {
59903
+ if (v !== void 0) vars[`--easing-${k}`] = v;
59904
+ }
59905
+ }
59906
+ if (m.intents) {
59907
+ const i = m.intents;
59908
+ if (i.enter) emitMotionIntent("enter", i.enter, vars);
59909
+ if (i.exit) emitMotionIntent("exit", i.exit, vars);
59910
+ if (i.hover) emitMotionIntent("hover", i.hover, vars);
59911
+ if (i.press) emitMotionIntent("press", i.press, vars);
59912
+ if (i.expand) emitMotionIntent("expand", i.expand, vars);
59913
+ if (i.transition) emitMotionIntent("transition", i.transition, vars);
59914
+ }
59915
+ }
59916
+ function emitIconography(i, vars) {
59917
+ if (!i) return;
59918
+ if (i.family !== void 0) vars["--icon-family"] = i.family;
59919
+ if (i.strokeWidth !== void 0) vars["--icon-stroke-width"] = i.strokeWidth;
59920
+ if (i.defaultSize !== void 0) vars["--icon-default-size"] = i.defaultSize;
59921
+ }
59922
+ function emitElevation(e, vars) {
59923
+ if (!e) return;
59924
+ if (e.cardElevation !== void 0) vars["--elevation-card"] = e.cardElevation;
59925
+ if (e.popoverElevation !== void 0) vars["--elevation-popover"] = e.popoverElevation;
59926
+ if (e.dialogElevation !== void 0) vars["--elevation-dialog"] = e.dialogElevation;
59927
+ if (e.toastElevation !== void 0) vars["--elevation-toast"] = e.toastElevation;
59928
+ }
59929
+ function emitGeometry(g, vars) {
59930
+ if (!g) return;
59931
+ if (g.radiusContainer !== void 0) vars["--radius-container"] = g.radiusContainer;
59932
+ if (g.radiusInteractive !== void 0) vars["--radius-interactive"] = g.radiusInteractive;
59933
+ if (g.radiusPill !== void 0) vars["--radius-pill"] = g.radiusPill;
59934
+ if (g.borderHairline !== void 0) vars["--border-hairline"] = g.borderHairline;
59935
+ if (g.borderStandard !== void 0) vars["--border-standard"] = g.borderStandard;
59936
+ if (g.borderHeavy !== void 0) vars["--border-heavy"] = g.borderHeavy;
59937
+ }
59737
59938
  function resolveThemeForRuntime(theme) {
59738
59939
  if (theme === void 0) return void 0;
59739
59940
  if (typeof theme === "string") return void 0;
@@ -59835,7 +60036,7 @@ function generateEntityRow(entity, idx) {
59835
60036
  return row;
59836
60037
  }
59837
60038
  function generateFieldValue(entityName, field, idx) {
59838
- if (field.values && field.values.length > 0) {
60039
+ if ("values" in field && field.values && field.values.length > 0) {
59839
60040
  return field.values[(idx - 1) % field.values.length];
59840
60041
  }
59841
60042
  const fieldName = field.name ?? "";