@almadar/ui 4.57.5 → 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
@@ -1186,7 +1186,7 @@ var init_Button = __esm({
1186
1186
  };
1187
1187
  iconSizeStyles = {
1188
1188
  sm: "h-3.5 w-3.5",
1189
- md: "h-4 w-4",
1189
+ md: "h-icon-default w-icon-default",
1190
1190
  lg: "h-5 w-5"
1191
1191
  };
1192
1192
  Button = React83__namespace.default.forwardRef(
@@ -1239,7 +1239,7 @@ var init_Button = __esm({
1239
1239
  ...props,
1240
1240
  "data-testid": props["data-testid"] ?? (action ? `action-${action}` : void 0),
1241
1241
  children: [
1242
- isLoading ? /* @__PURE__ */ jsxRuntime.jsx(LucideIcons.Loader2, { className: "h-4 w-4 animate-spin" }) : resolvedLeftIcon && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "flex-shrink-0", children: resolvedLeftIcon }),
1242
+ 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 }),
1243
1243
  children || label,
1244
1244
  resolvedRightIcon && !isLoading && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "flex-shrink-0", children: resolvedRightIcon })
1245
1245
  ]
@@ -1589,7 +1589,7 @@ var init_Modal = __esm({
1589
1589
  // Reset browser-default dialog chrome — we own styling.
1590
1590
  "m-0 p-0 border-0 bg-transparent",
1591
1591
  // Pre-existing dialog frame
1592
- "pointer-events-auto w-full flex flex-col bg-surface border shadow-lg rounded-md",
1592
+ "pointer-events-auto w-full flex flex-col bg-surface border shadow-elevation-dialog rounded-container",
1593
1593
  // Desktop sizing + viewport-aware floor.
1594
1594
  sizeClasses2[size],
1595
1595
  minWidthClasses[size],
@@ -2016,7 +2016,7 @@ var init_Toast = __esm({
2016
2016
  // `min-w-[300px]` only kicks in at `sm:` and above so a phone
2017
2017
  // viewport doesn't get a toast wider than the screen near the
2018
2018
  // edge. `max-w-[calc(100vw-2rem)]` clamps to viewport too.
2019
- "border-l-4 p-4 shadow min-w-0 sm:min-w-[300px] max-w-md max-w-[calc(100vw-2rem)]",
2019
+ "border-l-4 p-4 shadow-elevation-toast min-w-0 sm:min-w-[300px] max-w-md max-w-[calc(100vw-2rem)]",
2020
2020
  "rounded-sm",
2021
2021
  variantClasses[variant],
2022
2022
  className
@@ -2936,7 +2936,7 @@ var init_Input = __esm({
2936
2936
  ...props
2937
2937
  }, ref) => {
2938
2938
  const type = inputType || htmlType || "text";
2939
- const resolvedLeftIcon = leftIcon || IconComponent && /* @__PURE__ */ jsxRuntime.jsx(IconComponent, { className: "h-4 w-4" });
2939
+ const resolvedLeftIcon = leftIcon || IconComponent && /* @__PURE__ */ jsxRuntime.jsx(IconComponent, { className: "h-icon-default w-icon-default" });
2940
2940
  const showClearButton = clearable && value && String(value).length > 0;
2941
2941
  const baseClassName = cn(
2942
2942
  "block w-full rounded-sm transition-all duration-[var(--transition-fast)]",
@@ -2968,7 +2968,7 @@ var init_Input = __esm({
2968
2968
  ]
2969
2969
  }
2970
2970
  ),
2971
- /* @__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" }) })
2971
+ /* @__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" }) })
2972
2972
  ] });
2973
2973
  }
2974
2974
  if (type === "textarea") {
@@ -3022,7 +3022,7 @@ var init_Input = __esm({
3022
3022
  type: "button",
3023
3023
  onClick: onClear,
3024
3024
  className: "absolute inset-y-0 right-0 pr-3 flex items-center text-muted-foreground hover:text-foreground",
3025
- children: /* @__PURE__ */ jsxRuntime.jsx(LucideIcons.X, { className: "h-4 w-4" })
3025
+ children: /* @__PURE__ */ jsxRuntime.jsx(LucideIcons.X, { className: "h-icon-default w-icon-default" })
3026
3026
  }
3027
3027
  ),
3028
3028
  rightIcon && !showClearButton && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "absolute inset-y-0 right-0 pr-3 flex items-center text-muted-foreground", children: rightIcon })
@@ -3122,7 +3122,7 @@ var init_Select = __esm({
3122
3122
  ]
3123
3123
  }
3124
3124
  ),
3125
- /* @__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" }) })
3125
+ /* @__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" }) })
3126
3126
  ] });
3127
3127
  }
3128
3128
  );
@@ -3175,23 +3175,23 @@ var init_Card = __esm({
3175
3175
  default: [
3176
3176
  "bg-card",
3177
3177
  "border-[length:var(--border-width)] border-border",
3178
- "shadow-sm",
3178
+ "shadow-elevation-card",
3179
3179
  "transition-all duration-[var(--transition-normal)]",
3180
- "hover:shadow-lg hover:-translate-y-0.5"
3180
+ "hover:shadow-elevation-dialog hover:-translate-y-0.5"
3181
3181
  ].join(" "),
3182
3182
  bordered: [
3183
3183
  "bg-card",
3184
3184
  "border-[length:var(--border-width)] border-border",
3185
- "shadow-sm",
3185
+ "shadow-elevation-card",
3186
3186
  "transition-all duration-[var(--transition-normal)]",
3187
- "hover:shadow-lg hover:-translate-y-0.5"
3187
+ "hover:shadow-elevation-dialog hover:-translate-y-0.5"
3188
3188
  ].join(" "),
3189
3189
  elevated: [
3190
3190
  "bg-card",
3191
3191
  "border-[length:var(--border-width)] border-border",
3192
3192
  "shadow",
3193
3193
  "transition-all duration-[var(--transition-normal)]",
3194
- "hover:shadow-lg hover:-translate-y-0.5"
3194
+ "hover:shadow-elevation-dialog hover:-translate-y-0.5"
3195
3195
  ].join(" "),
3196
3196
  // Interactive variant with theme-specific hover effects
3197
3197
  interactive: [
@@ -3200,20 +3200,20 @@ var init_Card = __esm({
3200
3200
  "shadow",
3201
3201
  "cursor-pointer",
3202
3202
  "transition-all duration-[var(--transition-normal)]",
3203
- "hover:shadow-lg"
3203
+ "hover:shadow-elevation-dialog"
3204
3204
  ].join(" ")
3205
3205
  };
3206
3206
  paddingStyles2 = {
3207
3207
  none: "",
3208
- sm: "p-3",
3209
- md: "p-4",
3210
- lg: "p-6"
3208
+ sm: "p-card-sm",
3209
+ md: "p-card-md",
3210
+ lg: "p-card-lg"
3211
3211
  };
3212
3212
  shadowStyles2 = {
3213
3213
  none: "shadow-none",
3214
- sm: "shadow-sm",
3214
+ sm: "shadow-elevation-card",
3215
3215
  md: "shadow",
3216
- lg: "shadow-lg"
3216
+ lg: "shadow-elevation-dialog"
3217
3217
  };
3218
3218
  Card = React83__namespace.default.forwardRef(
3219
3219
  ({
@@ -3231,7 +3231,7 @@ var init_Card = __esm({
3231
3231
  {
3232
3232
  ref,
3233
3233
  className: cn(
3234
- "rounded-md",
3234
+ "rounded-container",
3235
3235
  "transition-all duration-[var(--transition-normal)]",
3236
3236
  variantStyles4[variant],
3237
3237
  paddingStyles2[padding],
@@ -3360,7 +3360,7 @@ var init_FilterPill = __esm({
3360
3360
  {
3361
3361
  ref,
3362
3362
  className: cn(
3363
- "inline-flex items-center gap-1 font-bold rounded-full",
3363
+ "inline-flex items-center gap-1 font-bold rounded-pill",
3364
3364
  variantStyles5[variant],
3365
3365
  sizeStyles4[size],
3366
3366
  (onClick || clickEvent) && "cursor-pointer",
@@ -3461,8 +3461,8 @@ var init_Avatar = __esm({
3461
3461
  busy: "bg-error"
3462
3462
  };
3463
3463
  badgeSizeClasses = {
3464
- xs: "w-3 h-3 text-[8px]",
3465
- sm: "w-4 h-4 text-[10px]",
3464
+ xs: "w-3 h-3 text-xs",
3465
+ sm: "w-4 h-4 text-xs",
3466
3466
  md: "w-5 h-5 text-xs",
3467
3467
  lg: "w-6 h-6 text-sm",
3468
3468
  xl: "w-7 h-7 text-base"
@@ -3734,7 +3734,7 @@ var init_ProgressBar = __esm({
3734
3734
  "div",
3735
3735
  {
3736
3736
  className: cn(
3737
- "h-full transition-all duration-300 ease-out",
3737
+ "h-full transition-all duration-normal ease-emphasized",
3738
3738
  colorClasses[effectiveColor]
3739
3739
  ),
3740
3740
  style: { width: `${percentage}%` },
@@ -3790,7 +3790,7 @@ var init_ProgressBar = __esm({
3790
3790
  strokeDashoffset: offset,
3791
3791
  strokeLinecap: "round",
3792
3792
  className: cn(
3793
- "transition-all duration-300 ease-out",
3793
+ "transition-all duration-normal ease-emphasized",
3794
3794
  colorClasses[effectiveColor]
3795
3795
  )
3796
3796
  }
@@ -3829,7 +3829,7 @@ var init_ProgressBar = __esm({
3829
3829
  "div",
3830
3830
  {
3831
3831
  className: cn(
3832
- "h-full transition-all duration-300 ease-out",
3832
+ "h-full transition-all duration-normal ease-emphasized",
3833
3833
  (isActive || isPartial) && colorClasses[effectiveColor]
3834
3834
  ),
3835
3835
  style: {
@@ -4414,6 +4414,37 @@ var init_ThemeContext = __esm({
4414
4414
  displayName: "Copper",
4415
4415
  hasLightMode: true,
4416
4416
  hasDarkMode: true
4417
+ },
4418
+ // Layer 1 skin axes — truly-unique themes (compact tech / editorial / brutalist dense / display-heavy / touch-first)
4419
+ {
4420
+ name: "prism",
4421
+ displayName: "Prism",
4422
+ hasLightMode: true,
4423
+ hasDarkMode: true
4424
+ },
4425
+ {
4426
+ name: "gazette",
4427
+ displayName: "Gazette",
4428
+ hasLightMode: true,
4429
+ hasDarkMode: true
4430
+ },
4431
+ {
4432
+ name: "terminal",
4433
+ displayName: "Terminal",
4434
+ hasLightMode: true,
4435
+ hasDarkMode: true
4436
+ },
4437
+ {
4438
+ name: "atelier",
4439
+ displayName: "Atelier",
4440
+ hasLightMode: true,
4441
+ hasDarkMode: true
4442
+ },
4443
+ {
4444
+ name: "kiosk",
4445
+ displayName: "Kiosk",
4446
+ hasLightMode: true,
4447
+ hasDarkMode: true
4417
4448
  }
4418
4449
  ];
4419
4450
  ThemeContext = React83.createContext(void 0);
@@ -4452,7 +4483,7 @@ var init_ThemeToggle = __esm({
4452
4483
  "text-foreground",
4453
4484
  "hover:bg-muted border-[length:var(--border-width)] border-transparent hover:border-border",
4454
4485
  "focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2",
4455
- "transition-colors duration-200",
4486
+ "transition-colors duration-fast",
4456
4487
  sizeClasses4[size],
4457
4488
  className
4458
4489
  ),
@@ -4499,7 +4530,7 @@ var init_FlipContainer = __esm({
4499
4530
  children: /* @__PURE__ */ jsxRuntime.jsx(
4500
4531
  Box,
4501
4532
  {
4502
- className: "relative w-full h-full transition-transform duration-500",
4533
+ className: "relative w-full h-full transition-transform duration-slow",
4503
4534
  style: {
4504
4535
  transformStyle: "preserve-3d",
4505
4536
  transform: flipped ? "rotateY(180deg)" : "rotateY(0deg)"
@@ -4557,7 +4588,7 @@ var init_ConditionalWrapper = __esm({
4557
4588
  Box,
4558
4589
  {
4559
4590
  overflow: "hidden",
4560
- className: `transition-all duration-200 ${isVisible ? "opacity-100 max-h-[1000px]" : "opacity-0 max-h-0"}`,
4591
+ className: `transition-all duration-fast ${isVisible ? "opacity-100 max-h-[1000px]" : "opacity-0 max-h-0"}`,
4561
4592
  children: isVisible ? children : fallback
4562
4593
  }
4563
4594
  );
@@ -7945,7 +7976,7 @@ var init_InstallBox = __esm({
7945
7976
  /* @__PURE__ */ jsxRuntime.jsx(
7946
7977
  Box,
7947
7978
  {
7948
- className: "bg-surface rounded-md border-[length:var(--border-width)] border-border",
7979
+ className: "bg-surface rounded-container border-[length:var(--border-width)] border-border",
7949
7980
  padding: "md",
7950
7981
  children: /* @__PURE__ */ jsxRuntime.jsxs(Box, { className: "flex items-center gap-3", children: [
7951
7982
  /* @__PURE__ */ jsxRuntime.jsx(
@@ -8670,7 +8701,7 @@ var init_Tooltip = __esm({
8670
8701
  className: cn(
8671
8702
  "fixed z-50 px-3 py-2 max-w-xs",
8672
8703
  "bg-primary text-primary-foreground",
8673
- "shadow-sm rounded-sm",
8704
+ "shadow-elevation-popover rounded-sm",
8674
8705
  "text-sm pointer-events-none",
8675
8706
  "break-words whitespace-normal",
8676
8707
  "h-auto min-h-fit",
@@ -8825,7 +8856,7 @@ var init_Popover = __esm({
8825
8856
  ref: popoverRef,
8826
8857
  className: cn(
8827
8858
  "fixed z-50 p-4",
8828
- "bg-card border-2 border-border shadow-lg",
8859
+ "bg-card border-2 border-border shadow-elevation-popover",
8829
8860
  positionClasses2[position],
8830
8861
  className
8831
8862
  ),
@@ -8939,7 +8970,7 @@ var init_Menu = __esm({
8939
8970
  const menuContainerStyles = cn(
8940
8971
  "bg-card",
8941
8972
  "border-[length:var(--border-width)] border-border",
8942
- "shadow",
8973
+ "shadow-elevation-popover",
8943
8974
  "rounded-sm",
8944
8975
  "min-w-0 sm:min-w-[200px] max-w-[calc(100vw-1rem)] py-1"
8945
8976
  );
@@ -9107,7 +9138,7 @@ var init_Accordion = __esm({
9107
9138
  "w-full flex items-center justify-between px-4 py-3",
9108
9139
  "bg-card",
9109
9140
  "hover:bg-muted",
9110
- "transition-colors duration-200",
9141
+ "transition-colors duration-fast",
9111
9142
  "focus:outline-none focus:ring-2 focus:ring-ring focus:ring-inset",
9112
9143
  "disabled:opacity-50 disabled:cursor-not-allowed",
9113
9144
  isOpen && "bg-muted font-bold"
@@ -9122,7 +9153,7 @@ var init_Accordion = __esm({
9122
9153
  icon: LucideIcons.ChevronDown,
9123
9154
  size: "sm",
9124
9155
  className: cn(
9125
- "transition-transform duration-200",
9156
+ "transition-transform duration-fast",
9126
9157
  isOpen && "transform rotate-180"
9127
9158
  )
9128
9159
  }
@@ -9252,7 +9283,7 @@ var init_FloatingActionButton = __esm({
9252
9283
  {
9253
9284
  align: "center",
9254
9285
  gap: "sm",
9255
- className: "transition-all duration-200",
9286
+ className: "transition-all duration-fast",
9256
9287
  style: {
9257
9288
  opacity: isExpanded ? 1 : 0,
9258
9289
  transform: isExpanded ? "translateY(0)" : "translateY(10px)",
@@ -9290,7 +9321,7 @@ var init_FloatingActionButton = __esm({
9290
9321
  size: "lg",
9291
9322
  icon: isExpanded ? LucideIcons.X : LucideIcons.Plus,
9292
9323
  onClick: handleMainClick,
9293
- className: "rounded-full shadow-lg transition-all duration-300",
9324
+ className: "rounded-full shadow-lg transition-all duration-normal",
9294
9325
  "aria-label": isExpanded ? "Close actions" : "Open actions",
9295
9326
  "aria-expanded": isExpanded,
9296
9327
  children: /* @__PURE__ */ jsxRuntime.jsx(Typography, { as: "span", className: "sr-only", children: isExpanded ? t("common.close") : t("common.open") })
@@ -13415,8 +13446,8 @@ function Card2({
13415
13446
  className: `
13416
13447
  bg-card
13417
13448
  border border-border
13418
- rounded-md shadow-sm
13419
- ${isClickable ? "cursor-pointer hover:shadow-lg transition-shadow" : ""}
13449
+ rounded-container shadow-elevation-card
13450
+ ${isClickable ? "cursor-pointer hover:shadow-elevation-dialog transition-shadow" : ""}
13420
13451
  ${className}
13421
13452
  `,
13422
13453
  onClick: isClickable ? handleClick : void 0,
@@ -16221,7 +16252,7 @@ var init_BranchingLogicBuilder = __esm({
16221
16252
  const height = PADDING * 2 + items.length * (NODE_HEIGHT + NODE_GAP_Y);
16222
16253
  return { items, positions, width, height };
16223
16254
  }, [questions]);
16224
- return /* @__PURE__ */ jsxRuntime.jsx(Box, { className: "overflow-auto rounded-md border border-border bg-card p-2", children: /* @__PURE__ */ jsxRuntime.jsxs(
16255
+ return /* @__PURE__ */ jsxRuntime.jsx(Box, { className: "overflow-auto rounded-container border border-border bg-card p-2", children: /* @__PURE__ */ jsxRuntime.jsxs(
16225
16256
  "svg",
16226
16257
  {
16227
16258
  width: layout.width,
@@ -19052,7 +19083,7 @@ var init_Carousel = __esm({
19052
19083
  Box,
19053
19084
  {
19054
19085
  className: cn(
19055
- "rounded-full cursor-pointer transition-all duration-200"
19086
+ "rounded-full cursor-pointer transition-all duration-fast"
19056
19087
  ),
19057
19088
  style: {
19058
19089
  width: isActive ? 10 : 8,
@@ -20144,7 +20175,7 @@ var init_CodeExample = __esm({
20144
20175
  {
20145
20176
  className: cn(
20146
20177
  "bg-foreground",
20147
- "rounded-md",
20178
+ "rounded-container",
20148
20179
  "border-[length:var(--border-width)] border-border",
20149
20180
  "overflow-hidden",
20150
20181
  className
@@ -22511,7 +22542,7 @@ function DataGrid({
22511
22542
  className: cn(
22512
22543
  "bg-card rounded-lg",
22513
22544
  "border border-border",
22514
- "shadow-sm hover:shadow-lg",
22545
+ "shadow-elevation-card hover:shadow-elevation-dialog",
22515
22546
  "hover:border-primary transition-all",
22516
22547
  "flex flex-col",
22517
22548
  isSelected && "ring-2 ring-primary border-primary"
@@ -22885,7 +22916,7 @@ function DataList({
22885
22916
  {
22886
22917
  variant: "caption",
22887
22918
  className: cn(
22888
- "mt-1 text-[0.65rem]",
22919
+ "mt-1 text-xs",
22889
22920
  isSent ? "opacity-70" : "text-muted-foreground"
22890
22921
  ),
22891
22922
  children: formatDate3(timestamp)
@@ -22950,7 +22981,7 @@ function DataList({
22950
22981
  Box,
22951
22982
  {
22952
22983
  className: cn(
22953
- "group flex items-center gap-4 transition-all duration-200",
22984
+ "group flex items-center gap-4 transition-all duration-fast",
22954
22985
  isCompact ? "px-4 py-2" : "px-6 py-4",
22955
22986
  "hover:bg-muted/80",
22956
22987
  !isCard && !isCompact && "rounded-lg border border-transparent hover:border-border"
@@ -23037,7 +23068,7 @@ function DataList({
23037
23068
  Box,
23038
23069
  {
23039
23070
  className: cn(
23040
- isCard && "bg-card rounded-xl border border-border shadow-lg overflow-hidden",
23071
+ isCard && "bg-card rounded-xl border border-border shadow-elevation-dialog overflow-hidden",
23041
23072
  !isCard && gapClass,
23042
23073
  className
23043
23074
  ),
@@ -23179,7 +23210,7 @@ var init_FileTree = __esm({
23179
23210
  Typography,
23180
23211
  {
23181
23212
  variant: "caption",
23182
- className: `truncate font-mono text-[11px] !text-inherit ${isSelected ? "font-semibold" : ""}`,
23213
+ className: `truncate font-mono text-xs !text-inherit ${isSelected ? "font-semibold" : ""}`,
23183
23214
  children: node.name
23184
23215
  }
23185
23216
  ),
@@ -23565,7 +23596,7 @@ var init_FilterGroup = __esm({
23565
23596
  "div",
23566
23597
  {
23567
23598
  className: cn(
23568
- "p-4 rounded-md",
23599
+ "p-4 rounded-container",
23569
23600
  "bg-card",
23570
23601
  "border-[length:var(--border-width)] border-border",
23571
23602
  className
@@ -24247,7 +24278,7 @@ var init_SidePanel = __esm({
24247
24278
  "border-l-2 border-border",
24248
24279
  position === "left" && "border-l-0 border-r-2",
24249
24280
  "flex flex-col",
24250
- "transition-transform duration-300 ease-in-out",
24281
+ "transition-transform duration-normal ease-standard",
24251
24282
  width,
24252
24283
  position === "right" ? "right-0" : "left-0",
24253
24284
  className
@@ -24649,7 +24680,7 @@ var init_ViolationAlert = __esm({
24649
24680
  Box,
24650
24681
  {
24651
24682
  className: cn(
24652
- "px-3 py-2 rounded-md border",
24683
+ "px-3 py-2 rounded-container border",
24653
24684
  bgColor,
24654
24685
  className
24655
24686
  ),
@@ -24910,7 +24941,7 @@ var init_FlipCard = __esm({
24910
24941
  /* @__PURE__ */ jsxRuntime.jsx(
24911
24942
  Box,
24912
24943
  {
24913
- className: "absolute inset-0 w-full h-full rounded-lg shadow-lg flex items-center justify-center p-6",
24944
+ className: "absolute inset-0 w-full h-full rounded-lg shadow-elevation-dialog flex items-center justify-center p-6",
24914
24945
  style: { backfaceVisibility: "hidden", transform: "rotateY(0deg)" },
24915
24946
  children: front
24916
24947
  }
@@ -24918,7 +24949,7 @@ var init_FlipCard = __esm({
24918
24949
  /* @__PURE__ */ jsxRuntime.jsx(
24919
24950
  Box,
24920
24951
  {
24921
- className: "absolute inset-0 w-full h-full rounded-lg shadow-lg flex items-center justify-center p-6",
24952
+ className: "absolute inset-0 w-full h-full rounded-lg shadow-elevation-dialog flex items-center justify-center p-6",
24922
24953
  style: { backfaceVisibility: "hidden", transform: "rotateY(180deg)" },
24923
24954
  children: back
24924
24955
  }
@@ -25263,7 +25294,7 @@ var init_ProgressDots = __esm({
25263
25294
  Box,
25264
25295
  {
25265
25296
  className: cn(
25266
- "rounded-full transition-all duration-200",
25297
+ "rounded-full transition-all duration-fast",
25267
25298
  onDotClick && "cursor-pointer"
25268
25299
  ),
25269
25300
  style: {
@@ -28284,7 +28315,7 @@ var init_Meter = __esm({
28284
28315
  strokeDasharray: circumference,
28285
28316
  strokeDashoffset: offset,
28286
28317
  strokeLinecap: "round",
28287
- className: "transition-all duration-500 ease-out"
28318
+ className: "transition-all duration-slow ease-emphasized"
28288
28319
  }
28289
28320
  )
28290
28321
  ]
@@ -28327,7 +28358,7 @@ var init_Meter = __esm({
28327
28358
  Box,
28328
28359
  {
28329
28360
  className: cn(
28330
- "h-2 flex-1 rounded-sm transition-all duration-300",
28361
+ "h-2 flex-1 rounded-sm transition-all duration-normal",
28331
28362
  !isActive && "bg-muted"
28332
28363
  ),
28333
28364
  style: isActive ? { backgroundColor: segColor } : void 0
@@ -28346,7 +28377,7 @@ var init_Meter = __esm({
28346
28377
  /* @__PURE__ */ jsxRuntime.jsx(Box, { className: "w-full h-3 bg-muted rounded-full overflow-hidden", children: /* @__PURE__ */ jsxRuntime.jsx(
28347
28378
  Box,
28348
28379
  {
28349
- className: "h-full rounded-full transition-all duration-500 ease-out",
28380
+ className: "h-full rounded-full transition-all duration-slow ease-emphasized",
28350
28381
  style: {
28351
28382
  width: `${percentage}%`,
28352
28383
  backgroundColor: activeColor
@@ -28734,7 +28765,7 @@ var init_PullToRefresh = __esm({
28734
28765
  className: cn(
28735
28766
  "top-0 left-0 right-0 z-10",
28736
28767
  "items-center justify-center",
28737
- "transition-opacity duration-200",
28768
+ "transition-opacity duration-fast",
28738
28769
  showIndicator ? "opacity-100" : "opacity-0"
28739
28770
  ),
28740
28771
  style: {
@@ -28920,7 +28951,7 @@ var init_PricingCard = __esm({
28920
28951
  "hover:-translate-y-1 transition-all",
28921
28952
  highlighted && [
28922
28953
  "border-[length:2px] border-primary",
28923
- "shadow-lg",
28954
+ "shadow-elevation-dialog",
28924
28955
  "scale-[1.05]",
28925
28956
  "ring-2 ring-primary"
28926
28957
  ],
@@ -30977,7 +31008,7 @@ var init_PositionedCanvas = __esm({
30977
31008
  {
30978
31009
  ref: containerRef,
30979
31010
  "data-testid": "positioned-canvas",
30980
- className: "relative bg-background border border-border rounded-md overflow-hidden",
31011
+ className: "relative bg-background border border-border rounded-container overflow-hidden",
30981
31012
  style: { width, height },
30982
31013
  onClick: handleContainerClick,
30983
31014
  children: items.map((item) => {
@@ -31178,7 +31209,7 @@ function BlockMenu({ block, readOnly, onDelete, onDuplicate, onChangeType }) {
31178
31209
  role: "menu",
31179
31210
  className: cn(
31180
31211
  "absolute right-0 z-10 mt-1 w-44",
31181
- "rounded-md border border-border bg-popover shadow-md",
31212
+ "rounded-container border border-border bg-popover shadow-elevation-popover",
31182
31213
  "py-1 text-sm"
31183
31214
  ),
31184
31215
  children: [
@@ -32454,7 +32485,7 @@ function DocCodeBlock({
32454
32485
  Box,
32455
32486
  {
32456
32487
  className: cn(
32457
- "rounded-md border border-border overflow-hidden",
32488
+ "rounded-container border border-border overflow-hidden",
32458
32489
  className
32459
32490
  ),
32460
32491
  position: "relative",
@@ -32613,11 +32644,11 @@ var init_DocPagination = __esm({
32613
32644
  init_Typography();
32614
32645
  linkCardStyles = [
32615
32646
  "border border-border",
32616
- "rounded-md",
32647
+ "rounded-container",
32617
32648
  "p-4",
32618
32649
  "transition-all",
32619
32650
  "hover:border-primary",
32620
- "hover:shadow-lg",
32651
+ "hover:shadow-elevation-dialog",
32621
32652
  "no-underline",
32622
32653
  "flex-1",
32623
32654
  "min-w-0",
@@ -32754,7 +32785,7 @@ function DocSearch({
32754
32785
  Box,
32755
32786
  {
32756
32787
  position: "absolute",
32757
- 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",
32788
+ 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",
32758
32789
  children: /* @__PURE__ */ jsxRuntime.jsx(VStack, { gap: "none", children: results.map((result, index) => /* @__PURE__ */ jsxRuntime.jsx(
32759
32790
  Box,
32760
32791
  {
@@ -35694,10 +35725,11 @@ var init_Form = __esm({
35694
35725
  type: f3.type,
35695
35726
  required: f3.required,
35696
35727
  defaultValue: f3.default,
35697
- values: f3.values,
35728
+ // EntityField is a discriminated union — `values` lives on Scalar/Enum, `relation` lives on Relation.
35729
+ values: "values" in f3 ? f3.values : void 0,
35698
35730
  min: f3.min,
35699
35731
  max: f3.max,
35700
- relation: f3.relation ? { entity: f3.relation.entity } : void 0
35732
+ relation: "relation" in f3 ? { entity: f3.relation.entity } : void 0
35701
35733
  })
35702
35734
  );
35703
35735
  }, [entity, fields]);
@@ -35925,10 +35957,11 @@ var init_Form = __esm({
35925
35957
  type: entityField.type,
35926
35958
  required: entityField.required,
35927
35959
  defaultValue: entityField.default,
35928
- values: entityField.values,
35960
+ // EntityField is a discriminated union — `values` lives on Scalar/Enum, `relation` lives on Relation.
35961
+ values: "values" in entityField ? entityField.values : void 0,
35929
35962
  min: entityField.min,
35930
35963
  max: entityField.max,
35931
- relation: entityField.relation ? { entity: entityField.relation.entity } : void 0
35964
+ relation: "relation" in entityField ? { entity: entityField.relation.entity } : void 0
35932
35965
  };
35933
35966
  }
35934
35967
  return { name: field, type: "string" };
@@ -47394,8 +47427,176 @@ function themeTokensToCssVars(tokens, mode = "light", darkVariant) {
47394
47427
  vars[`--shadow-${key}`] = value;
47395
47428
  }
47396
47429
  }
47430
+ const pickDensity = isDark && darkVariant?.density ? darkVariant.density : tokens.density;
47431
+ emitDensity(pickDensity, vars);
47432
+ const pickTypeScale = isDark && darkVariant?.typeScale ? darkVariant.typeScale : tokens.typeScale;
47433
+ emitTypeScale(pickTypeScale, vars);
47434
+ const pickMotion = isDark && darkVariant?.motion ? darkVariant.motion : tokens.motion;
47435
+ emitMotion(pickMotion, vars);
47436
+ const pickIconography = isDark && darkVariant?.iconography ? darkVariant.iconography : tokens.iconography;
47437
+ emitIconography(pickIconography, vars);
47438
+ const pickElevation = isDark && darkVariant?.elevation ? darkVariant.elevation : tokens.elevation;
47439
+ emitElevation(pickElevation, vars);
47440
+ const pickGeometry = isDark && darkVariant?.geometry ? darkVariant.geometry : tokens.geometry;
47441
+ emitGeometry(pickGeometry, vars);
47397
47442
  return vars;
47398
47443
  }
47444
+ function emitDensity(density, vars) {
47445
+ if (!density) return;
47446
+ if (density.spacing) {
47447
+ const s = density.spacing;
47448
+ const pairs2 = [
47449
+ ["0", s.space0],
47450
+ ["1", s.space1],
47451
+ ["2", s.space2],
47452
+ ["3", s.space3],
47453
+ ["4", s.space4],
47454
+ ["5", s.space5],
47455
+ ["6", s.space6],
47456
+ ["7", s.space7],
47457
+ ["8", s.space8],
47458
+ ["9", s.space9],
47459
+ ["10", s.space10],
47460
+ ["11", s.space11],
47461
+ ["12", s.space12]
47462
+ ];
47463
+ for (const [k, v] of pairs2) {
47464
+ if (v !== void 0) vars[`--space-${k}`] = v;
47465
+ }
47466
+ }
47467
+ const pairs = [
47468
+ ["button-height-sm", density.buttonHeightSm],
47469
+ ["button-height-md", density.buttonHeightMd],
47470
+ ["button-height-lg", density.buttonHeightLg],
47471
+ ["input-height-sm", density.inputHeightSm],
47472
+ ["input-height-md", density.inputHeightMd],
47473
+ ["input-height-lg", density.inputHeightLg],
47474
+ ["row-height-compact", density.rowHeightCompact],
47475
+ ["row-height-normal", density.rowHeightNormal],
47476
+ ["row-height-spacious", density.rowHeightSpacious],
47477
+ ["card-padding-sm", density.cardPaddingSm],
47478
+ ["card-padding-md", density.cardPaddingMd],
47479
+ ["card-padding-lg", density.cardPaddingLg],
47480
+ ["dialog-padding", density.dialogPadding],
47481
+ ["section-gap", density.sectionGap]
47482
+ ];
47483
+ for (const [k, v] of pairs) {
47484
+ if (v !== void 0) vars[`--${k}`] = v;
47485
+ }
47486
+ }
47487
+ function typeSizeKeyStr(k) {
47488
+ return k;
47489
+ }
47490
+ function typeWeightStr(w) {
47491
+ return w;
47492
+ }
47493
+ function emitTypeIntent(name, intent, vars) {
47494
+ const sizeKey = typeSizeKeyStr(intent.size);
47495
+ const weight = typeWeightStr(intent.weight);
47496
+ vars[`--intent-${name}-size`] = `var(--text-${sizeKey})`;
47497
+ vars[`--intent-${name}-weight`] = `var(--font-weight-${weight})`;
47498
+ vars[`--intent-${name}-leading`] = `var(--leading-${sizeKey})`;
47499
+ }
47500
+ function emitTypeScale(ts, vars) {
47501
+ if (!ts) return;
47502
+ if (ts.displayFamily !== void 0) vars["--font-family-display"] = ts.displayFamily;
47503
+ if (ts.bodyFamily !== void 0) vars["--font-family-body"] = ts.bodyFamily;
47504
+ if (ts.monoFamily !== void 0) vars["--font-family-mono"] = ts.monoFamily;
47505
+ if (ts.scale) {
47506
+ const s = ts.scale;
47507
+ const pairs = [
47508
+ ["xs", s.xs],
47509
+ ["sm", s.sm],
47510
+ ["base", s.base],
47511
+ ["lg", s.lg],
47512
+ ["xl", s.xl],
47513
+ ["2xl", s["2xl"]],
47514
+ ["3xl", s["3xl"]],
47515
+ ["4xl", s["4xl"]],
47516
+ ["display-1", s["display-1"]],
47517
+ ["display-2", s["display-2"]]
47518
+ ];
47519
+ for (const [k, entry] of pairs) {
47520
+ if (entry !== void 0) {
47521
+ vars[`--text-${k}`] = entry.size;
47522
+ vars[`--leading-${k}`] = entry.lineHeight;
47523
+ }
47524
+ }
47525
+ }
47526
+ if (ts.intents) {
47527
+ const i = ts.intents;
47528
+ if (i.headingMajor) emitTypeIntent("heading-major", i.headingMajor, vars);
47529
+ if (i.headingMinor) emitTypeIntent("heading-minor", i.headingMinor, vars);
47530
+ if (i.bodyEmphasis) emitTypeIntent("body-emphasis", i.bodyEmphasis, vars);
47531
+ if (i.bodyDefault) emitTypeIntent("body-default", i.bodyDefault, vars);
47532
+ if (i.bodyQuiet) emitTypeIntent("body-quiet", i.bodyQuiet, vars);
47533
+ if (i.caption) emitTypeIntent("caption", i.caption, vars);
47534
+ if (i.numeric) emitTypeIntent("numeric", i.numeric, vars);
47535
+ }
47536
+ }
47537
+ function emitMotionIntent(name, intent, vars) {
47538
+ vars[`--intent-${name}-duration`] = `var(--duration-${intent.duration})`;
47539
+ vars[`--intent-${name}-easing`] = `var(--easing-${intent.easing})`;
47540
+ }
47541
+ function emitMotion(m, vars) {
47542
+ if (!m) return;
47543
+ if (m.durations) {
47544
+ const d = m.durations;
47545
+ const pairs = [
47546
+ ["instant", d.instant],
47547
+ ["fast", d.fast],
47548
+ ["normal", d.normal],
47549
+ ["slow", d.slow],
47550
+ ["dramatic", d.dramatic]
47551
+ ];
47552
+ for (const [k, v] of pairs) {
47553
+ if (v !== void 0) vars[`--duration-${k}`] = v;
47554
+ }
47555
+ }
47556
+ if (m.easings) {
47557
+ const e = m.easings;
47558
+ const pairs = [
47559
+ ["linear", e.linear],
47560
+ ["standard", e.standard],
47561
+ ["emphasized", e.emphasized],
47562
+ ["spring", e.spring]
47563
+ ];
47564
+ for (const [k, v] of pairs) {
47565
+ if (v !== void 0) vars[`--easing-${k}`] = v;
47566
+ }
47567
+ }
47568
+ if (m.intents) {
47569
+ const i = m.intents;
47570
+ if (i.enter) emitMotionIntent("enter", i.enter, vars);
47571
+ if (i.exit) emitMotionIntent("exit", i.exit, vars);
47572
+ if (i.hover) emitMotionIntent("hover", i.hover, vars);
47573
+ if (i.press) emitMotionIntent("press", i.press, vars);
47574
+ if (i.expand) emitMotionIntent("expand", i.expand, vars);
47575
+ if (i.transition) emitMotionIntent("transition", i.transition, vars);
47576
+ }
47577
+ }
47578
+ function emitIconography(i, vars) {
47579
+ if (!i) return;
47580
+ if (i.family !== void 0) vars["--icon-family"] = i.family;
47581
+ if (i.strokeWidth !== void 0) vars["--icon-stroke-width"] = i.strokeWidth;
47582
+ if (i.defaultSize !== void 0) vars["--icon-default-size"] = i.defaultSize;
47583
+ }
47584
+ function emitElevation(e, vars) {
47585
+ if (!e) return;
47586
+ if (e.cardElevation !== void 0) vars["--elevation-card"] = e.cardElevation;
47587
+ if (e.popoverElevation !== void 0) vars["--elevation-popover"] = e.popoverElevation;
47588
+ if (e.dialogElevation !== void 0) vars["--elevation-dialog"] = e.dialogElevation;
47589
+ if (e.toastElevation !== void 0) vars["--elevation-toast"] = e.toastElevation;
47590
+ }
47591
+ function emitGeometry(g, vars) {
47592
+ if (!g) return;
47593
+ if (g.radiusContainer !== void 0) vars["--radius-container"] = g.radiusContainer;
47594
+ if (g.radiusInteractive !== void 0) vars["--radius-interactive"] = g.radiusInteractive;
47595
+ if (g.radiusPill !== void 0) vars["--radius-pill"] = g.radiusPill;
47596
+ if (g.borderHairline !== void 0) vars["--border-hairline"] = g.borderHairline;
47597
+ if (g.borderStandard !== void 0) vars["--border-standard"] = g.borderStandard;
47598
+ if (g.borderHeavy !== void 0) vars["--border-heavy"] = g.borderHeavy;
47599
+ }
47399
47600
  function resolveThemeForRuntime(theme) {
47400
47601
  if (theme === void 0) return void 0;
47401
47602
  if (typeof theme === "string") return void 0;
@@ -47534,7 +47735,7 @@ function generateEntityRow(entity, idx) {
47534
47735
  return row;
47535
47736
  }
47536
47737
  function generateFieldValue(entityName, field, idx) {
47537
- if (field.values && field.values.length > 0) {
47738
+ if ("values" in field && field.values && field.values.length > 0) {
47538
47739
  return field.values[(idx - 1) % field.values.length];
47539
47740
  }
47540
47741
  const fieldName = field.name ?? "";