@epilot/spark-ui 1.0.0-alpha.7 → 1.0.0-alpha.9

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 (153) hide show
  1. package/dist/components/badge.cjs +2 -2
  2. package/dist/components/badge.cjs.map +1 -1
  3. package/dist/components/badge.d.ts +1 -1
  4. package/dist/components/badge.js +1 -1
  5. package/dist/components/battery-progress-row.d.cts +1 -1
  6. package/dist/components/battery-progress-row.d.ts +1 -1
  7. package/dist/components/bubble.d.cts +1 -1
  8. package/dist/components/bubble.d.ts +1 -1
  9. package/dist/components/button.cjs +5 -4
  10. package/dist/components/button.cjs.map +1 -1
  11. package/dist/components/button.d.cts +4 -17
  12. package/dist/components/button.d.ts +5 -18
  13. package/dist/components/button.js +5 -4
  14. package/dist/components/button.js.map +1 -1
  15. package/dist/components/callout.cjs +4 -4
  16. package/dist/components/callout.cjs.map +1 -1
  17. package/dist/components/callout.d.cts +6 -1
  18. package/dist/components/callout.d.ts +6 -1
  19. package/dist/components/callout.js +4 -4
  20. package/dist/components/callout.js.map +1 -1
  21. package/dist/components/card.cjs +25 -11
  22. package/dist/components/card.cjs.map +1 -1
  23. package/dist/components/card.d.cts +6 -0
  24. package/dist/components/card.d.ts +7 -1
  25. package/dist/components/card.js +25 -11
  26. package/dist/components/card.js.map +1 -1
  27. package/dist/components/checkbox.cjs +2 -2
  28. package/dist/components/checkbox.cjs.map +1 -1
  29. package/dist/components/checkbox.d.ts +1 -1
  30. package/dist/components/checkbox.js +1 -1
  31. package/dist/components/circular-gauge.d.cts +1 -1
  32. package/dist/components/circular-gauge.d.ts +1 -1
  33. package/dist/components/device-card.d.cts +1 -1
  34. package/dist/components/device-card.d.ts +1 -1
  35. package/dist/components/empty-state.cjs +9 -2
  36. package/dist/components/empty-state.cjs.map +1 -1
  37. package/dist/components/empty-state.d.cts +8 -2
  38. package/dist/components/empty-state.d.ts +8 -2
  39. package/dist/components/empty-state.js +10 -2
  40. package/dist/components/empty-state.js.map +1 -1
  41. package/dist/components/energy-bar-chart.d.cts +1 -1
  42. package/dist/components/energy-bar-chart.d.ts +1 -1
  43. package/dist/components/feed-in-hero.d.cts +1 -1
  44. package/dist/components/feed-in-hero.d.ts +1 -1
  45. package/dist/components/field.cjs +3 -3
  46. package/dist/components/field.cjs.map +1 -1
  47. package/dist/components/field.d.ts +1 -1
  48. package/dist/components/field.js +1 -1
  49. package/dist/components/info-block.d.cts +1 -1
  50. package/dist/components/info-block.d.ts +1 -1
  51. package/dist/components/input-group.cjs +2 -2
  52. package/dist/components/input-group.cjs.map +1 -1
  53. package/dist/components/input-group.d.cts +1 -1
  54. package/dist/components/input-group.d.ts +1 -1
  55. package/dist/components/input-group.js +1 -1
  56. package/dist/components/input-otp.cjs +10 -10
  57. package/dist/components/input-otp.cjs.map +1 -1
  58. package/dist/components/input-otp.js +1 -1
  59. package/dist/components/input.cjs +10 -10
  60. package/dist/components/input.cjs.map +1 -1
  61. package/dist/components/input.d.ts +1 -1
  62. package/dist/components/input.js +1 -1
  63. package/dist/components/marker.d.cts +1 -1
  64. package/dist/components/marker.d.ts +1 -1
  65. package/dist/components/message-scroller.cjs +1 -1
  66. package/dist/components/message-scroller.cjs.map +1 -1
  67. package/dist/components/message-scroller.js +1 -1
  68. package/dist/components/message-scroller.js.map +1 -1
  69. package/dist/components/metering-row.d.cts +1 -1
  70. package/dist/components/metering-row.d.ts +1 -1
  71. package/dist/components/number-flow.d.cts +1 -1
  72. package/dist/components/number-flow.d.ts +1 -1
  73. package/dist/components/page-header.d.cts +1 -1
  74. package/dist/components/page-header.d.ts +1 -1
  75. package/dist/components/radio.cjs +3 -3
  76. package/dist/components/radio.cjs.map +1 -1
  77. package/dist/components/radio.d.ts +1 -1
  78. package/dist/components/radio.js +1 -1
  79. package/dist/components/sankey-chart.d.cts +1 -1
  80. package/dist/components/sankey-chart.d.ts +1 -1
  81. package/dist/components/segmented-control.d.ts +1 -1
  82. package/dist/components/select.cjs +2 -2
  83. package/dist/components/select.cjs.map +1 -1
  84. package/dist/components/select.d.ts +1 -1
  85. package/dist/components/select.js +1 -1
  86. package/dist/components/switch.cjs +2 -2
  87. package/dist/components/switch.cjs.map +1 -1
  88. package/dist/components/switch.d.ts +1 -1
  89. package/dist/components/switch.js +1 -1
  90. package/dist/components/theme.cjs +119 -3
  91. package/dist/components/theme.cjs.map +1 -0
  92. package/dist/components/theme.d.cts +1 -3
  93. package/dist/components/theme.d.ts +2 -4
  94. package/dist/components/theme.js +115 -1
  95. package/dist/components/theme.js.map +1 -0
  96. package/dist/components/toast.cjs +158 -65
  97. package/dist/components/toast.cjs.map +1 -1
  98. package/dist/components/toast.d.cts +51 -9
  99. package/dist/components/toast.d.ts +51 -9
  100. package/dist/components/toast.js +158 -65
  101. package/dist/components/toast.js.map +1 -1
  102. package/dist/components/tooltip.cjs +1 -1
  103. package/dist/components/tooltip.cjs.map +1 -1
  104. package/dist/components/tooltip.js +1 -1
  105. package/dist/components/tooltip.js.map +1 -1
  106. package/dist/generate-radix-colors-BW09KT9m.d.ts +33 -0
  107. package/dist/generate-radix-colors-C5mWRWnQ.d.cts +33 -0
  108. package/dist/{accent-colors-CjHCf8fH.cjs → lib/accent-colors.cjs} +3 -7
  109. package/dist/lib/accent-colors.cjs.map +1 -0
  110. package/dist/lib/accent-colors.d.cts +8 -0
  111. package/dist/lib/accent-colors.d.ts +8 -0
  112. package/dist/{accent-colors-Ch2J0EEY.js → lib/accent-colors.js} +2 -2
  113. package/dist/lib/accent-colors.js.map +1 -0
  114. package/dist/lib/accent-theme.cjs +130 -0
  115. package/dist/lib/accent-theme.cjs.map +1 -0
  116. package/dist/lib/accent-theme.d.cts +35 -0
  117. package/dist/lib/accent-theme.d.ts +35 -0
  118. package/dist/lib/accent-theme.js +122 -0
  119. package/dist/lib/accent-theme.js.map +1 -0
  120. package/dist/{theme-ClRJhexF.cjs → lib/generate-radix-colors.cjs} +12 -240
  121. package/dist/lib/generate-radix-colors.cjs.map +1 -0
  122. package/dist/lib/generate-radix-colors.d.cts +4 -0
  123. package/dist/lib/generate-radix-colors.d.ts +4 -0
  124. package/dist/{theme-8PDO9E0S.js → lib/generate-radix-colors.js} +8 -225
  125. package/dist/lib/generate-radix-colors.js.map +1 -0
  126. package/dist/{input-box-variants-ZCtgs-1S.cjs → lib/input-box-variants.cjs} +5 -14
  127. package/dist/lib/input-box-variants.cjs.map +1 -0
  128. package/dist/lib/input-box-variants.d.cts +10 -0
  129. package/dist/lib/input-box-variants.d.ts +10 -0
  130. package/dist/{input-box-variants-DcajYXvo.js → lib/input-box-variants.js} +3 -3
  131. package/dist/lib/input-box-variants.js.map +1 -0
  132. package/dist/lib/theme-types.cjs +1 -0
  133. package/dist/lib/theme-types.d.cts +4 -0
  134. package/dist/lib/theme-types.d.ts +4 -0
  135. package/dist/lib/theme-types.js +2 -0
  136. package/dist/lib/tones.cjs +14 -0
  137. package/dist/lib/tones.cjs.map +1 -0
  138. package/dist/{tones-PXJGlSpe.d.ts → lib/tones.d.cts} +2 -2
  139. package/dist/{tones-DjgKOX3s.d.cts → lib/tones.d.ts} +2 -2
  140. package/dist/lib/tones.js +13 -0
  141. package/dist/lib/tones.js.map +1 -0
  142. package/dist/{number-flow-DMJouddg.d.cts → number-flow-CVIvQhZn.d.cts} +1 -1
  143. package/dist/{number-flow-D9zsxH0-.d.ts → number-flow-DVUHTv9D.d.ts} +1 -1
  144. package/dist/styles/index.css +158 -0
  145. package/dist/styles/spark-default.css +1 -0
  146. package/dist/{theme-types-BDdoRxXa.d.ts → theme-types-BKlzRiyw.d.ts} +1 -1
  147. package/package.json +18 -3
  148. package/dist/accent-colors-Ch2J0EEY.js.map +0 -1
  149. package/dist/accent-colors-CjHCf8fH.cjs.map +0 -1
  150. package/dist/input-box-variants-DcajYXvo.js.map +0 -1
  151. package/dist/input-box-variants-ZCtgs-1S.cjs.map +0 -1
  152. package/dist/theme-8PDO9E0S.js.map +0 -1
  153. package/dist/theme-ClRJhexF.cjs.map +0 -1
@@ -1,7 +1,7 @@
1
1
  "use client";
2
2
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
3
  const require_chunk = require("../chunk-aJGBMT86.cjs");
4
- const require_accent_colors = require("../accent-colors-CjHCf8fH.cjs");
4
+ const require_lib_accent_colors = require("../lib/accent-colors.cjs");
5
5
  let react = require("react");
6
6
  react = require_chunk.__toESM(react);
7
7
  let react_jsx_runtime = require("react/jsx-runtime");
@@ -11,7 +11,7 @@ const Badge = react.forwardRef(({ className, children, styleVariant, color, ...p
11
11
  return /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
12
12
  "data-slot": "badge",
13
13
  "data-style": styleVariant !== void 0 || color !== void 0 ? styleVariant ?? "soft" : void 0,
14
- "data-accent-color": color ? require_accent_colors.accentByColor[color] : void 0,
14
+ "data-accent-color": color ? require_lib_accent_colors.accentByColor[color] : void 0,
15
15
  className: (0, cnfast.cn)("inline-flex h-5 min-w-5 items-center justify-center rounded-sm px-1.5 text-center text-xs font-normal tabular-nums", "border-(length:--spark-style-border-width,1px) border-(--spark-style-border,transparent)", "bg-(--spark-style-bg,var(--color-gray-a3)) text-(--spark-style-fg,var(--spark-badge-fg,var(--color-gray-a11)))", className),
16
16
  ref,
17
17
  ...props,
@@ -1 +1 @@
1
- {"version":3,"file":"badge.cjs","names":["React","accentByColor"],"sources":["../../src/components/badge.tsx"],"sourcesContent":["import * as React from 'react'\nimport { accentByColor } from '../lib/accent-colors'\nimport type { SparkStyle } from '../lib/theme-types'\nimport { cn } from '../utils/cn'\n\nexport type SparkBadgeColor =\n | 'accent'\n | 'neutral'\n | 'success'\n | 'warning'\n | 'danger'\n\ninterface BadgeProps extends React.HTMLAttributes<HTMLSpanElement> {\n styleVariant?: SparkStyle\n color?: SparkBadgeColor\n children?: React.ReactNode\n}\n\nconst Badge = React.forwardRef<HTMLSpanElement, BadgeProps>(\n ({ className, children, styleVariant, color, ...props }, ref) => {\n const hasLook = styleVariant !== undefined || color !== undefined\n return (\n <span\n data-slot=\"badge\"\n data-style={hasLook ? (styleVariant ?? 'soft') : undefined}\n data-accent-color={color ? accentByColor[color] : undefined}\n className={cn(\n 'inline-flex h-5 min-w-5 items-center justify-center rounded-sm px-1.5 text-center text-xs font-normal tabular-nums',\n 'border-(length:--spark-style-border-width,1px) border-(--spark-style-border,transparent)',\n 'bg-(--spark-style-bg,var(--color-gray-a3)) text-(--spark-style-fg,var(--spark-badge-fg,var(--color-gray-a11)))',\n className,\n )}\n ref={ref}\n {...props}\n >\n {children}\n </span>\n )\n },\n)\n\nBadge.displayName = 'Badge'\n\nexport { Badge }\nexport type { BadgeProps }\n"],"mappings":";;;;;;;;;AAkBA,MAAM,QAAQA,MAAM,YACjB,EAAE,WAAW,UAAU,cAAc,OAAO,GAAG,SAAS,QAAQ;AAE/D,QACE,iBAAA,GAAA,kBAAA,KAAC,QAAD;EACE,aAAU;EACV,cAJY,iBAAiB,KAAA,KAAa,UAAU,KAAA,IAI7B,gBAAgB,SAAU,KAAA;EACjD,qBAAmB,QAAQC,sBAAAA,cAAc,SAAS,KAAA;EAClD,YAAA,GAAA,OAAA,IACE,sHACA,4FACA,kHACA,UACD;EACI;EACL,GAAI;EAEH;EACI,CAAA;EAGZ;AAED,MAAM,cAAc"}
1
+ {"version":3,"file":"badge.cjs","names":["React","accentByColor"],"sources":["../../src/components/badge.tsx"],"sourcesContent":["import * as React from 'react'\nimport { accentByColor } from '../lib/accent-colors'\nimport type { SparkStyle } from '../lib/theme-types'\nimport { cn } from '../utils/cn'\n\nexport type SparkBadgeColor =\n | 'accent'\n | 'neutral'\n | 'success'\n | 'warning'\n | 'danger'\n\ninterface BadgeProps extends React.HTMLAttributes<HTMLSpanElement> {\n styleVariant?: SparkStyle\n color?: SparkBadgeColor\n children?: React.ReactNode\n}\n\nconst Badge = React.forwardRef<HTMLSpanElement, BadgeProps>(\n ({ className, children, styleVariant, color, ...props }, ref) => {\n const hasLook = styleVariant !== undefined || color !== undefined\n return (\n <span\n data-slot=\"badge\"\n data-style={hasLook ? (styleVariant ?? 'soft') : undefined}\n data-accent-color={color ? accentByColor[color] : undefined}\n className={cn(\n 'inline-flex h-5 min-w-5 items-center justify-center rounded-sm px-1.5 text-center text-xs font-normal tabular-nums',\n 'border-(length:--spark-style-border-width,1px) border-(--spark-style-border,transparent)',\n 'bg-(--spark-style-bg,var(--color-gray-a3)) text-(--spark-style-fg,var(--spark-badge-fg,var(--color-gray-a11)))',\n className,\n )}\n ref={ref}\n {...props}\n >\n {children}\n </span>\n )\n },\n)\n\nBadge.displayName = 'Badge'\n\nexport { Badge }\nexport type { BadgeProps }\n"],"mappings":";;;;;;;;;AAkBA,MAAM,QAAQA,MAAM,YACjB,EAAE,WAAW,UAAU,cAAc,OAAO,GAAG,SAAS,QAAQ;AAE/D,QACE,iBAAA,GAAA,kBAAA,KAAC,QAAD;EACE,aAAU;EACV,cAJY,iBAAiB,KAAA,KAAa,UAAU,KAAA,IAI7B,gBAAgB,SAAU,KAAA;EACjD,qBAAmB,QAAQC,0BAAAA,cAAc,SAAS,KAAA;EAClD,YAAA,GAAA,OAAA,IACE,sHACA,4FACA,kHACA,UACD;EACI;EACL,GAAI;EAEH;EACI,CAAA;EAGZ;AAED,MAAM,cAAc"}
@@ -1,6 +1,6 @@
1
1
  "use client";
2
2
 
3
- import { u as SparkStyle } from "../theme-types-BDdoRxXa.js";
3
+ import { u as SparkStyle } from "../theme-types-BKlzRiyw.js";
4
4
  import * as React$1 from "react";
5
5
 
6
6
  //#region src/components/badge.d.ts
@@ -1,6 +1,6 @@
1
1
  "use client";
2
2
  import { cn } from "../utils/cn.js";
3
- import { t as accentByColor } from "../accent-colors-Ch2J0EEY.js";
3
+ import { accentByColor } from "../lib/accent-colors.js";
4
4
  import * as React$1 from "react";
5
5
  import { jsx } from "react/jsx-runtime";
6
6
  //#region src/components/badge.tsx
@@ -1,7 +1,7 @@
1
1
  "use client";
2
2
 
3
3
  import { MaterialSymbolIconName } from "../icons/material-symbol.cjs";
4
- import { t as Tone } from "../tones-DjgKOX3s.cjs";
4
+ import { Tone } from "../lib/tones.cjs";
5
5
  import { Progress } from "./progress.cjs";
6
6
  import * as _$react_jsx_runtime0 from "react/jsx-runtime";
7
7
 
@@ -1,7 +1,7 @@
1
1
  "use client";
2
2
 
3
3
  import { MaterialSymbolIconName } from "../icons/material-symbol.js";
4
- import { t as Tone } from "../tones-PXJGlSpe.js";
4
+ import { Tone } from "../lib/tones.js";
5
5
  import { Progress } from "./progress.js";
6
6
  import * as _$react_jsx_runtime0 from "react/jsx-runtime";
7
7
 
@@ -12,7 +12,7 @@ declare function BubbleGroup({
12
12
  ...props
13
13
  }: React$1.ComponentProps<'div'>): _$react_jsx_runtime0.JSX.Element;
14
14
  declare const bubbleVariants: (props?: ({
15
- variant?: "secondary" | "destructive" | "default" | "ghost" | "outline" | "muted" | "tinted" | null | undefined;
15
+ variant?: "ghost" | "outline" | "default" | "secondary" | "muted" | "tinted" | "destructive" | null | undefined;
16
16
  } & _$class_variance_authority_types0.ClassProp) | undefined) => string;
17
17
  declare function Bubble({
18
18
  variant,
@@ -12,7 +12,7 @@ declare function BubbleGroup({
12
12
  ...props
13
13
  }: React$1.ComponentProps<'div'>): _$react_jsx_runtime0.JSX.Element;
14
14
  declare const bubbleVariants: (props?: ({
15
- variant?: "secondary" | "destructive" | "default" | "ghost" | "outline" | "muted" | "tinted" | null | undefined;
15
+ variant?: "ghost" | "outline" | "default" | "secondary" | "muted" | "tinted" | "destructive" | null | undefined;
16
16
  } & _$class_variance_authority_types0.ClassProp) | undefined) => string;
17
17
  declare function Bubble({
18
18
  variant,
@@ -2,7 +2,7 @@
2
2
  "use client";
3
3
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
4
4
  const require_chunk = require("../chunk-aJGBMT86.cjs");
5
- const require_accent_colors = require("../accent-colors-CjHCf8fH.cjs");
5
+ const require_lib_accent_colors = require("../lib/accent-colors.cjs");
6
6
  let react = require("react");
7
7
  react = require_chunk.__toESM(react);
8
8
  let react_jsx_runtime = require("react/jsx-runtime");
@@ -36,19 +36,20 @@ const buttonVariants = (0, class_variance_authority.cva)("group/button inline-fl
36
36
  defaultVariants: { size: "default" }
37
37
  });
38
38
  const buttonRecipe = "bg-(--spark-style-bg,var(--spark-9)) text-(--spark-style-fg,var(--spark-contrast)) hover:bg-(--spark-style-bg-hover,var(--spark-10)) shadow-[inset_0_0_0_var(--spark-style-border-width,1px)_var(--spark-style-border,transparent)]";
39
- function Button({ className, styleVariant, color, size, render, nativeButton, variant: _variant, ...props }) {
39
+ const Button = react.forwardRef(function Button({ className, styleVariant, color, size, render, nativeButton, variant: _variant, ...props }, ref) {
40
40
  return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_base_ui_react_button.Button, {
41
41
  "data-style": styleVariant !== void 0 || color !== void 0 ? styleVariant ?? "solid" : void 0,
42
- "data-accent-color": color ? require_accent_colors.accentByColor[color] : void 0,
42
+ "data-accent-color": color ? require_lib_accent_colors.accentByColor[color] : void 0,
43
43
  nativeButton: nativeButton ?? render === void 0,
44
44
  render,
45
45
  className: (0, cnfast.cn)(buttonVariants({
46
46
  size,
47
47
  color
48
48
  }), buttonRecipe, className),
49
+ ref,
49
50
  ...props
50
51
  });
51
- }
52
+ });
52
53
  Button.displayName = "Button";
53
54
  //#endregion
54
55
  exports.Button = Button;
@@ -1 +1 @@
1
- {"version":3,"file":"button.cjs","names":["ButtonPrimitive","accentByColor"],"sources":["../../src/components/button.tsx"],"sourcesContent":["'use client'\n\nimport { Button as ButtonPrimitive } from '@base-ui/react/button'\nimport { cva, type VariantProps } from 'class-variance-authority'\nimport * as React from 'react'\nimport { accentByColor } from '../lib/accent-colors'\nimport type { SparkStyle } from '../lib/theme-types'\nimport { cn } from '../utils/cn'\n\nconst buttonVariants = cva(\n 'group/button inline-flex cursor-pointer items-center justify-center gap-2 rounded-[max(var(--spark-rounded-md),var(--spark-rounded-full))] text-base font-medium whitespace-nowrap transition-colors focus-visible:ring-2 focus-visible:ring-offset-2 focus-visible:outline-hidden disabled:pointer-events-none disabled:opacity-50 aria-disabled:pointer-events-none aria-disabled:opacity-50 motion-reduce:transition-none [&_svg]:pointer-events-none [&_svg]:shrink-0',\n {\n variants: {\n variant: {\n primary:\n 'bg-(--spark-style-bg,var(--spark-9)) text-(--spark-style-fg,var(--spark-contrast)) hover:bg-(--spark-style-bg-hover,var(--spark-10))',\n secondary:\n 'bg-gray-2 text-gray-a11 shadow-[inset_0_0_0_1px_var(--color-gray-a7)] hover:bg-gray-a3',\n tertiary: 'bg-transparent text-gray-a11 hover:bg-gray-a3',\n bare: 'rounded-none! text-gray-12 outline-hidden!',\n destructive:\n 'bg-red-a3 text-red-a11 hover:bg-red-a4 focus-visible:ring-base-error-solid',\n },\n color: {\n accent: '',\n neutral: '',\n danger: 'focus-visible:ring-base-error-solid',\n },\n size: {\n small: 'h-9 px-3 text-sm [&_svg:not([class*=size-])]:size-4',\n default: 'h-10 px-3 [&_svg:not([class*=size-])]:size-5',\n medium: 'h-11 px-4 [&_svg:not([class*=size-])]:size-6',\n 'icon-small': 'size-9 [&_svg:not([class*=size-])]:size-4',\n icon: 'size-10 [&_svg:not([class*=size-])]:size-5',\n 'icon-medium': 'size-11 [&_svg:not([class*=size-])]:size-6',\n },\n },\n defaultVariants: {\n size: 'default',\n },\n },\n)\n\nconst buttonRecipe =\n 'bg-(--spark-style-bg,var(--spark-9)) text-(--spark-style-fg,var(--spark-contrast)) hover:bg-(--spark-style-bg-hover,var(--spark-10)) shadow-[inset_0_0_0_var(--spark-style-border-width,1px)_var(--spark-style-border,transparent)]'\n\nexport type SparkButtonColor = 'accent' | 'neutral' | 'danger'\n\nexport interface ButtonProps\n extends\n React.ComponentProps<typeof ButtonPrimitive>,\n Omit<VariantProps<typeof buttonVariants>, 'variant' | 'color'> {\n styleVariant?: SparkStyle\n color?: SparkButtonColor\n /**\n * @deprecated Not a `<Button>` prop and silently ignored -- use `styleVariant`\n * (`solid | soft | surface | ghost | outline`) and `color`\n * (`accent | neutral | danger`) instead. The `variant` axis on\n * `buttonVariants` exists only for class-string callers.\n */\n variant?: never\n}\n\nfunction Button({\n className,\n styleVariant,\n color,\n size,\n render,\n nativeButton,\n variant: _variant,\n ...props\n}: ButtonProps) {\n const hasLook = styleVariant !== undefined || color !== undefined\n const dataStyle = hasLook ? (styleVariant ?? 'solid') : undefined\n const dataAccentColor = color ? accentByColor[color] : undefined\n\n return (\n <ButtonPrimitive\n data-style={dataStyle}\n data-accent-color={dataAccentColor}\n nativeButton={nativeButton ?? render === undefined}\n render={render}\n className={cn(buttonVariants({ size, color }), buttonRecipe, className)}\n {...props}\n />\n )\n}\n\nButton.displayName = 'Button'\n\nexport { Button, buttonVariants }\n"],"mappings":";;;;;;;;;;;;AASA,MAAM,kBAAA,GAAA,yBAAA,KACJ,6cACA;CACE,UAAU;EACR,SAAS;GACP,SACE;GACF,WACE;GACF,UAAU;GACV,MAAM;GACN,aACE;GACH;EACD,OAAO;GACL,QAAQ;GACR,SAAS;GACT,QAAQ;GACT;EACD,MAAM;GACJ,OAAO;GACP,SAAS;GACT,QAAQ;GACR,cAAc;GACd,MAAM;GACN,eAAe;GAChB;EACF;CACD,iBAAiB,EACf,MAAM,WACP;CACF,CACF;AAED,MAAM,eACJ;AAmBF,SAAS,OAAO,EACd,WACA,cACA,OACA,MACA,QACA,cACA,SAAS,UACT,GAAG,SACW;AAKd,QACE,iBAAA,GAAA,kBAAA,KAACA,sBAAAA,QAAD;EACE,cANY,iBAAiB,KAAA,KAAa,UAAU,KAAA,IAC3B,gBAAgB,UAAW,KAAA;EAMpD,qBALoB,QAAQC,sBAAAA,cAAc,SAAS,KAAA;EAMnD,cAAc,gBAAgB,WAAW,KAAA;EACjC;EACR,YAAA,GAAA,OAAA,IAAc,eAAe;GAAE;GAAM;GAAO,CAAC,EAAE,cAAc,UAAU;EACvE,GAAI;EACJ,CAAA;;AAIN,OAAO,cAAc"}
1
+ {"version":3,"file":"button.cjs","names":["React","ButtonPrimitive","accentByColor"],"sources":["../../src/components/button.tsx"],"sourcesContent":["'use client'\n\nimport { Button as ButtonPrimitive } from '@base-ui/react/button'\nimport { cva, type VariantProps } from 'class-variance-authority'\nimport * as React from 'react'\nimport { accentByColor } from '../lib/accent-colors'\nimport type { SparkStyle } from '../lib/theme-types'\nimport { cn } from '../utils/cn'\n\nconst buttonVariants = cva(\n 'group/button inline-flex cursor-pointer items-center justify-center gap-2 rounded-[max(var(--spark-rounded-md),var(--spark-rounded-full))] text-base font-medium whitespace-nowrap transition-colors focus-visible:ring-2 focus-visible:ring-offset-2 focus-visible:outline-hidden disabled:pointer-events-none disabled:opacity-50 aria-disabled:pointer-events-none aria-disabled:opacity-50 motion-reduce:transition-none [&_svg]:pointer-events-none [&_svg]:shrink-0',\n {\n variants: {\n variant: {\n primary:\n 'bg-(--spark-style-bg,var(--spark-9)) text-(--spark-style-fg,var(--spark-contrast)) hover:bg-(--spark-style-bg-hover,var(--spark-10))',\n secondary:\n 'bg-gray-2 text-gray-a11 shadow-[inset_0_0_0_1px_var(--color-gray-a7)] hover:bg-gray-a3',\n tertiary: 'bg-transparent text-gray-a11 hover:bg-gray-a3',\n bare: 'rounded-none! text-gray-12 outline-hidden!',\n destructive:\n 'bg-red-a3 text-red-a11 hover:bg-red-a4 focus-visible:ring-base-error-solid',\n },\n color: {\n accent: '',\n neutral: '',\n danger: 'focus-visible:ring-base-error-solid',\n },\n size: {\n small: 'h-9 px-3 text-sm [&_svg:not([class*=size-])]:size-4',\n default: 'h-10 px-3 [&_svg:not([class*=size-])]:size-5',\n medium: 'h-11 px-4 [&_svg:not([class*=size-])]:size-6',\n 'icon-small': 'size-9 [&_svg:not([class*=size-])]:size-4',\n icon: 'size-10 [&_svg:not([class*=size-])]:size-5',\n 'icon-medium': 'size-11 [&_svg:not([class*=size-])]:size-6',\n },\n },\n defaultVariants: {\n size: 'default',\n },\n },\n)\n\nconst buttonRecipe =\n 'bg-(--spark-style-bg,var(--spark-9)) text-(--spark-style-fg,var(--spark-contrast)) hover:bg-(--spark-style-bg-hover,var(--spark-10)) shadow-[inset_0_0_0_var(--spark-style-border-width,1px)_var(--spark-style-border,transparent)]'\n\nexport type SparkButtonColor = 'accent' | 'neutral' | 'danger'\n\nexport interface ButtonProps\n extends\n Omit<React.ComponentProps<typeof ButtonPrimitive>, 'ref'>,\n Omit<VariantProps<typeof buttonVariants>, 'variant' | 'color'> {\n styleVariant?: SparkStyle\n color?: SparkButtonColor\n /**\n * @deprecated Not a `<Button>` prop and silently ignored -- use `styleVariant`\n * (`solid | soft | surface | ghost | outline`) and `color`\n * (`accent | neutral | danger`) instead. The `variant` axis on\n * `buttonVariants` exists only for class-string callers.\n */\n variant?: never\n}\n\n// forwardRef keeps refs working for React 18 consumers (ref-as-prop is 19-only)\nconst Button = React.forwardRef<HTMLButtonElement, ButtonProps>(function Button(\n {\n className,\n styleVariant,\n color,\n size,\n render,\n nativeButton,\n variant: _variant,\n ...props\n },\n ref,\n) {\n const hasLook = styleVariant !== undefined || color !== undefined\n const dataStyle = hasLook ? (styleVariant ?? 'solid') : undefined\n const dataAccentColor = color ? accentByColor[color] : undefined\n\n return (\n <ButtonPrimitive\n data-style={dataStyle}\n data-accent-color={dataAccentColor}\n nativeButton={nativeButton ?? render === undefined}\n render={render}\n className={cn(buttonVariants({ size, color }), buttonRecipe, className)}\n ref={ref}\n {...props}\n />\n )\n})\n\nButton.displayName = 'Button'\n\nexport { Button, buttonVariants }\n"],"mappings":";;;;;;;;;;;;AASA,MAAM,kBAAA,GAAA,yBAAA,KACJ,6cACA;CACE,UAAU;EACR,SAAS;GACP,SACE;GACF,WACE;GACF,UAAU;GACV,MAAM;GACN,aACE;GACH;EACD,OAAO;GACL,QAAQ;GACR,SAAS;GACT,QAAQ;GACT;EACD,MAAM;GACJ,OAAO;GACP,SAAS;GACT,QAAQ;GACR,cAAc;GACd,MAAM;GACN,eAAe;GAChB;EACF;CACD,iBAAiB,EACf,MAAM,WACP;CACF,CACF;AAED,MAAM,eACJ;AAoBF,MAAM,SAASA,MAAM,WAA2C,SAAS,OACvE,EACE,WACA,cACA,OACA,MACA,QACA,cACA,SAAS,UACT,GAAG,SAEL,KACA;AAKA,QACE,iBAAA,GAAA,kBAAA,KAACC,sBAAAA,QAAD;EACE,cANY,iBAAiB,KAAA,KAAa,UAAU,KAAA,IAC3B,gBAAgB,UAAW,KAAA;EAMpD,qBALoB,QAAQC,0BAAAA,cAAc,SAAS,KAAA;EAMnD,cAAc,gBAAgB,WAAW,KAAA;EACjC;EACR,YAAA,GAAA,OAAA,IAAc,eAAe;GAAE;GAAM;GAAO,CAAC,EAAE,cAAc,UAAU;EAClE;EACL,GAAI;EACJ,CAAA;EAEJ;AAEF,OAAO,cAAc"}
@@ -1,7 +1,6 @@
1
1
  "use client";
2
2
 
3
3
  import { u as SparkStyle } from "../theme-types-BwSJKdsB.cjs";
4
- import * as _$react_jsx_runtime0 from "react/jsx-runtime";
5
4
  import * as React$1 from "react";
6
5
  import * as _$class_variance_authority_types0 from "class-variance-authority/types";
7
6
  import { Button as Button$1 } from "@base-ui/react/button";
@@ -9,12 +8,12 @@ import { VariantProps } from "class-variance-authority";
9
8
 
10
9
  //#region src/components/button.d.ts
11
10
  declare const buttonVariants: (props?: ({
12
- variant?: "primary" | "secondary" | "tertiary" | "bare" | "destructive" | null | undefined;
13
- color?: "accent" | "neutral" | "danger" | null | undefined;
11
+ variant?: "secondary" | "destructive" | "primary" | "tertiary" | "bare" | null | undefined;
12
+ color?: "neutral" | "accent" | "danger" | null | undefined;
14
13
  size?: "small" | "default" | "medium" | "icon-small" | "icon" | "icon-medium" | null | undefined;
15
14
  } & _$class_variance_authority_types0.ClassProp) | undefined) => string;
16
15
  type SparkButtonColor = 'accent' | 'neutral' | 'danger';
17
- interface ButtonProps extends React$1.ComponentProps<typeof Button$1>, Omit<VariantProps<typeof buttonVariants>, 'variant' | 'color'> {
16
+ interface ButtonProps extends Omit<React$1.ComponentProps<typeof Button$1>, 'ref'>, Omit<VariantProps<typeof buttonVariants>, 'variant' | 'color'> {
18
17
  styleVariant?: SparkStyle;
19
18
  color?: SparkButtonColor;
20
19
  /**
@@ -25,19 +24,7 @@ interface ButtonProps extends React$1.ComponentProps<typeof Button$1>, Omit<Vari
25
24
  */
26
25
  variant?: never;
27
26
  }
28
- declare function Button({
29
- className,
30
- styleVariant,
31
- color,
32
- size,
33
- render,
34
- nativeButton,
35
- variant: _variant,
36
- ...props
37
- }: ButtonProps): _$react_jsx_runtime0.JSX.Element;
38
- declare namespace Button {
39
- var displayName: string;
40
- }
27
+ declare const Button: React$1.ForwardRefExoticComponent<ButtonProps & React$1.RefAttributes<HTMLButtonElement>>;
41
28
  //#endregion
42
29
  export { Button, ButtonProps, SparkButtonColor, buttonVariants };
43
30
  //# sourceMappingURL=button.d.cts.map
@@ -1,20 +1,19 @@
1
1
  "use client";
2
2
 
3
- import { u as SparkStyle } from "../theme-types-BDdoRxXa.js";
3
+ import { u as SparkStyle } from "../theme-types-BKlzRiyw.js";
4
4
  import * as React$1 from "react";
5
- import * as _$react_jsx_runtime0 from "react/jsx-runtime";
6
5
  import { Button as Button$1 } from "@base-ui/react/button";
7
6
  import { VariantProps } from "class-variance-authority";
8
7
  import * as _$class_variance_authority_types0 from "class-variance-authority/types";
9
8
 
10
9
  //#region src/components/button.d.ts
11
10
  declare const buttonVariants: (props?: ({
12
- variant?: "primary" | "secondary" | "tertiary" | "bare" | "destructive" | null | undefined;
13
- color?: "accent" | "neutral" | "danger" | null | undefined;
11
+ variant?: "secondary" | "destructive" | "primary" | "tertiary" | "bare" | null | undefined;
12
+ color?: "neutral" | "accent" | "danger" | null | undefined;
14
13
  size?: "small" | "default" | "medium" | "icon-small" | "icon" | "icon-medium" | null | undefined;
15
14
  } & _$class_variance_authority_types0.ClassProp) | undefined) => string;
16
15
  type SparkButtonColor = 'accent' | 'neutral' | 'danger';
17
- interface ButtonProps extends React$1.ComponentProps<typeof Button$1>, Omit<VariantProps<typeof buttonVariants>, 'variant' | 'color'> {
16
+ interface ButtonProps extends Omit<React$1.ComponentProps<typeof Button$1>, 'ref'>, Omit<VariantProps<typeof buttonVariants>, 'variant' | 'color'> {
18
17
  styleVariant?: SparkStyle;
19
18
  color?: SparkButtonColor;
20
19
  /**
@@ -25,19 +24,7 @@ interface ButtonProps extends React$1.ComponentProps<typeof Button$1>, Omit<Vari
25
24
  */
26
25
  variant?: never;
27
26
  }
28
- declare function Button({
29
- className,
30
- styleVariant,
31
- color,
32
- size,
33
- render,
34
- nativeButton,
35
- variant: _variant,
36
- ...props
37
- }: ButtonProps): _$react_jsx_runtime0.JSX.Element;
38
- declare namespace Button {
39
- var displayName: string;
40
- }
27
+ declare const Button: React$1.ForwardRefExoticComponent<ButtonProps & React$1.RefAttributes<HTMLButtonElement>>;
41
28
  //#endregion
42
29
  export { Button, ButtonProps, SparkButtonColor, buttonVariants };
43
30
  //# sourceMappingURL=button.d.ts.map
@@ -1,8 +1,8 @@
1
1
  "use client";
2
2
  "use client";
3
3
  import { cn } from "../utils/cn.js";
4
- import { t as accentByColor } from "../accent-colors-Ch2J0EEY.js";
5
- import "react";
4
+ import { accentByColor } from "../lib/accent-colors.js";
5
+ import * as React$1 from "react";
6
6
  import { jsx } from "react/jsx-runtime";
7
7
  import { Button as Button$1 } from "@base-ui/react/button";
8
8
  import { cva } from "class-variance-authority";
@@ -33,7 +33,7 @@ const buttonVariants = cva("group/button inline-flex cursor-pointer items-center
33
33
  defaultVariants: { size: "default" }
34
34
  });
35
35
  const buttonRecipe = "bg-(--spark-style-bg,var(--spark-9)) text-(--spark-style-fg,var(--spark-contrast)) hover:bg-(--spark-style-bg-hover,var(--spark-10)) shadow-[inset_0_0_0_var(--spark-style-border-width,1px)_var(--spark-style-border,transparent)]";
36
- function Button({ className, styleVariant, color, size, render, nativeButton, variant: _variant, ...props }) {
36
+ const Button = React$1.forwardRef(function Button({ className, styleVariant, color, size, render, nativeButton, variant: _variant, ...props }, ref) {
37
37
  return /* @__PURE__ */ jsx(Button$1, {
38
38
  "data-style": styleVariant !== void 0 || color !== void 0 ? styleVariant ?? "solid" : void 0,
39
39
  "data-accent-color": color ? accentByColor[color] : void 0,
@@ -43,9 +43,10 @@ function Button({ className, styleVariant, color, size, render, nativeButton, va
43
43
  size,
44
44
  color
45
45
  }), buttonRecipe, className),
46
+ ref,
46
47
  ...props
47
48
  });
48
- }
49
+ });
49
50
  Button.displayName = "Button";
50
51
  //#endregion
51
52
  export { Button, buttonVariants };
@@ -1 +1 @@
1
- {"version":3,"file":"button.js","names":["ButtonPrimitive"],"sources":["../../src/components/button.tsx"],"sourcesContent":["'use client'\n\nimport { Button as ButtonPrimitive } from '@base-ui/react/button'\nimport { cva, type VariantProps } from 'class-variance-authority'\nimport * as React from 'react'\nimport { accentByColor } from '../lib/accent-colors'\nimport type { SparkStyle } from '../lib/theme-types'\nimport { cn } from '../utils/cn'\n\nconst buttonVariants = cva(\n 'group/button inline-flex cursor-pointer items-center justify-center gap-2 rounded-[max(var(--spark-rounded-md),var(--spark-rounded-full))] text-base font-medium whitespace-nowrap transition-colors focus-visible:ring-2 focus-visible:ring-offset-2 focus-visible:outline-hidden disabled:pointer-events-none disabled:opacity-50 aria-disabled:pointer-events-none aria-disabled:opacity-50 motion-reduce:transition-none [&_svg]:pointer-events-none [&_svg]:shrink-0',\n {\n variants: {\n variant: {\n primary:\n 'bg-(--spark-style-bg,var(--spark-9)) text-(--spark-style-fg,var(--spark-contrast)) hover:bg-(--spark-style-bg-hover,var(--spark-10))',\n secondary:\n 'bg-gray-2 text-gray-a11 shadow-[inset_0_0_0_1px_var(--color-gray-a7)] hover:bg-gray-a3',\n tertiary: 'bg-transparent text-gray-a11 hover:bg-gray-a3',\n bare: 'rounded-none! text-gray-12 outline-hidden!',\n destructive:\n 'bg-red-a3 text-red-a11 hover:bg-red-a4 focus-visible:ring-base-error-solid',\n },\n color: {\n accent: '',\n neutral: '',\n danger: 'focus-visible:ring-base-error-solid',\n },\n size: {\n small: 'h-9 px-3 text-sm [&_svg:not([class*=size-])]:size-4',\n default: 'h-10 px-3 [&_svg:not([class*=size-])]:size-5',\n medium: 'h-11 px-4 [&_svg:not([class*=size-])]:size-6',\n 'icon-small': 'size-9 [&_svg:not([class*=size-])]:size-4',\n icon: 'size-10 [&_svg:not([class*=size-])]:size-5',\n 'icon-medium': 'size-11 [&_svg:not([class*=size-])]:size-6',\n },\n },\n defaultVariants: {\n size: 'default',\n },\n },\n)\n\nconst buttonRecipe =\n 'bg-(--spark-style-bg,var(--spark-9)) text-(--spark-style-fg,var(--spark-contrast)) hover:bg-(--spark-style-bg-hover,var(--spark-10)) shadow-[inset_0_0_0_var(--spark-style-border-width,1px)_var(--spark-style-border,transparent)]'\n\nexport type SparkButtonColor = 'accent' | 'neutral' | 'danger'\n\nexport interface ButtonProps\n extends\n React.ComponentProps<typeof ButtonPrimitive>,\n Omit<VariantProps<typeof buttonVariants>, 'variant' | 'color'> {\n styleVariant?: SparkStyle\n color?: SparkButtonColor\n /**\n * @deprecated Not a `<Button>` prop and silently ignored -- use `styleVariant`\n * (`solid | soft | surface | ghost | outline`) and `color`\n * (`accent | neutral | danger`) instead. The `variant` axis on\n * `buttonVariants` exists only for class-string callers.\n */\n variant?: never\n}\n\nfunction Button({\n className,\n styleVariant,\n color,\n size,\n render,\n nativeButton,\n variant: _variant,\n ...props\n}: ButtonProps) {\n const hasLook = styleVariant !== undefined || color !== undefined\n const dataStyle = hasLook ? (styleVariant ?? 'solid') : undefined\n const dataAccentColor = color ? accentByColor[color] : undefined\n\n return (\n <ButtonPrimitive\n data-style={dataStyle}\n data-accent-color={dataAccentColor}\n nativeButton={nativeButton ?? render === undefined}\n render={render}\n className={cn(buttonVariants({ size, color }), buttonRecipe, className)}\n {...props}\n />\n )\n}\n\nButton.displayName = 'Button'\n\nexport { Button, buttonVariants }\n"],"mappings":";;;;;;;;;AASA,MAAM,iBAAiB,IACrB,6cACA;CACE,UAAU;EACR,SAAS;GACP,SACE;GACF,WACE;GACF,UAAU;GACV,MAAM;GACN,aACE;GACH;EACD,OAAO;GACL,QAAQ;GACR,SAAS;GACT,QAAQ;GACT;EACD,MAAM;GACJ,OAAO;GACP,SAAS;GACT,QAAQ;GACR,cAAc;GACd,MAAM;GACN,eAAe;GAChB;EACF;CACD,iBAAiB,EACf,MAAM,WACP;CACF,CACF;AAED,MAAM,eACJ;AAmBF,SAAS,OAAO,EACd,WACA,cACA,OACA,MACA,QACA,cACA,SAAS,UACT,GAAG,SACW;AAKd,QACE,oBAACA,UAAD;EACE,cANY,iBAAiB,KAAA,KAAa,UAAU,KAAA,IAC3B,gBAAgB,UAAW,KAAA;EAMpD,qBALoB,QAAQ,cAAc,SAAS,KAAA;EAMnD,cAAc,gBAAgB,WAAW,KAAA;EACjC;EACR,WAAW,GAAG,eAAe;GAAE;GAAM;GAAO,CAAC,EAAE,cAAc,UAAU;EACvE,GAAI;EACJ,CAAA;;AAIN,OAAO,cAAc"}
1
+ {"version":3,"file":"button.js","names":["React","ButtonPrimitive"],"sources":["../../src/components/button.tsx"],"sourcesContent":["'use client'\n\nimport { Button as ButtonPrimitive } from '@base-ui/react/button'\nimport { cva, type VariantProps } from 'class-variance-authority'\nimport * as React from 'react'\nimport { accentByColor } from '../lib/accent-colors'\nimport type { SparkStyle } from '../lib/theme-types'\nimport { cn } from '../utils/cn'\n\nconst buttonVariants = cva(\n 'group/button inline-flex cursor-pointer items-center justify-center gap-2 rounded-[max(var(--spark-rounded-md),var(--spark-rounded-full))] text-base font-medium whitespace-nowrap transition-colors focus-visible:ring-2 focus-visible:ring-offset-2 focus-visible:outline-hidden disabled:pointer-events-none disabled:opacity-50 aria-disabled:pointer-events-none aria-disabled:opacity-50 motion-reduce:transition-none [&_svg]:pointer-events-none [&_svg]:shrink-0',\n {\n variants: {\n variant: {\n primary:\n 'bg-(--spark-style-bg,var(--spark-9)) text-(--spark-style-fg,var(--spark-contrast)) hover:bg-(--spark-style-bg-hover,var(--spark-10))',\n secondary:\n 'bg-gray-2 text-gray-a11 shadow-[inset_0_0_0_1px_var(--color-gray-a7)] hover:bg-gray-a3',\n tertiary: 'bg-transparent text-gray-a11 hover:bg-gray-a3',\n bare: 'rounded-none! text-gray-12 outline-hidden!',\n destructive:\n 'bg-red-a3 text-red-a11 hover:bg-red-a4 focus-visible:ring-base-error-solid',\n },\n color: {\n accent: '',\n neutral: '',\n danger: 'focus-visible:ring-base-error-solid',\n },\n size: {\n small: 'h-9 px-3 text-sm [&_svg:not([class*=size-])]:size-4',\n default: 'h-10 px-3 [&_svg:not([class*=size-])]:size-5',\n medium: 'h-11 px-4 [&_svg:not([class*=size-])]:size-6',\n 'icon-small': 'size-9 [&_svg:not([class*=size-])]:size-4',\n icon: 'size-10 [&_svg:not([class*=size-])]:size-5',\n 'icon-medium': 'size-11 [&_svg:not([class*=size-])]:size-6',\n },\n },\n defaultVariants: {\n size: 'default',\n },\n },\n)\n\nconst buttonRecipe =\n 'bg-(--spark-style-bg,var(--spark-9)) text-(--spark-style-fg,var(--spark-contrast)) hover:bg-(--spark-style-bg-hover,var(--spark-10)) shadow-[inset_0_0_0_var(--spark-style-border-width,1px)_var(--spark-style-border,transparent)]'\n\nexport type SparkButtonColor = 'accent' | 'neutral' | 'danger'\n\nexport interface ButtonProps\n extends\n Omit<React.ComponentProps<typeof ButtonPrimitive>, 'ref'>,\n Omit<VariantProps<typeof buttonVariants>, 'variant' | 'color'> {\n styleVariant?: SparkStyle\n color?: SparkButtonColor\n /**\n * @deprecated Not a `<Button>` prop and silently ignored -- use `styleVariant`\n * (`solid | soft | surface | ghost | outline`) and `color`\n * (`accent | neutral | danger`) instead. The `variant` axis on\n * `buttonVariants` exists only for class-string callers.\n */\n variant?: never\n}\n\n// forwardRef keeps refs working for React 18 consumers (ref-as-prop is 19-only)\nconst Button = React.forwardRef<HTMLButtonElement, ButtonProps>(function Button(\n {\n className,\n styleVariant,\n color,\n size,\n render,\n nativeButton,\n variant: _variant,\n ...props\n },\n ref,\n) {\n const hasLook = styleVariant !== undefined || color !== undefined\n const dataStyle = hasLook ? (styleVariant ?? 'solid') : undefined\n const dataAccentColor = color ? accentByColor[color] : undefined\n\n return (\n <ButtonPrimitive\n data-style={dataStyle}\n data-accent-color={dataAccentColor}\n nativeButton={nativeButton ?? render === undefined}\n render={render}\n className={cn(buttonVariants({ size, color }), buttonRecipe, className)}\n ref={ref}\n {...props}\n />\n )\n})\n\nButton.displayName = 'Button'\n\nexport { Button, buttonVariants }\n"],"mappings":";;;;;;;;;AASA,MAAM,iBAAiB,IACrB,6cACA;CACE,UAAU;EACR,SAAS;GACP,SACE;GACF,WACE;GACF,UAAU;GACV,MAAM;GACN,aACE;GACH;EACD,OAAO;GACL,QAAQ;GACR,SAAS;GACT,QAAQ;GACT;EACD,MAAM;GACJ,OAAO;GACP,SAAS;GACT,QAAQ;GACR,cAAc;GACd,MAAM;GACN,eAAe;GAChB;EACF;CACD,iBAAiB,EACf,MAAM,WACP;CACF,CACF;AAED,MAAM,eACJ;AAoBF,MAAM,SAASA,QAAM,WAA2C,SAAS,OACvE,EACE,WACA,cACA,OACA,MACA,QACA,cACA,SAAS,UACT,GAAG,SAEL,KACA;AAKA,QACE,oBAACC,UAAD;EACE,cANY,iBAAiB,KAAA,KAAa,UAAU,KAAA,IAC3B,gBAAgB,UAAW,KAAA;EAMpD,qBALoB,QAAQ,cAAc,SAAS,KAAA;EAMnD,cAAc,gBAAgB,WAAW,KAAA;EACjC;EACR,WAAW,GAAG,eAAe;GAAE;GAAM;GAAO,CAAC,EAAE,cAAc,UAAU;EAClE;EACL,GAAI;EACJ,CAAA;EAEJ;AAEF,OAAO,cAAc"}
@@ -67,8 +67,8 @@ const CalloutAction = ({ className, align = "start", ...props }) => {
67
67
  ...props
68
68
  });
69
69
  };
70
- const Callout = ({ variant = "info", className, children, ...props }) => {
71
- const icon = CALLOUT_ICONS[variant ?? "info"];
70
+ const Callout = ({ variant = "info", icon, className, children, ...props }) => {
71
+ const variantIcon = CALLOUT_ICONS[variant ?? "info"];
72
72
  return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(CalloutVariantContext.Provider, {
73
73
  value: variant ?? "info",
74
74
  children: /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
@@ -76,8 +76,8 @@ const Callout = ({ variant = "info", className, children, ...props }) => {
76
76
  className: (0, cnfast.cn)(calloutVariants({ variant }), className),
77
77
  ...props,
78
78
  children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_icons_material_symbol.MaterialSymbol, {
79
- className: (0, cnfast.cn)("inline-flex shrink-0 items-center [--spark-icon-size:calc(20px*var(--spark-scaling,1))]", icon?.className),
80
- name: icon.name
79
+ className: (0, cnfast.cn)("inline-flex shrink-0 items-center [--spark-icon-size:calc(20px*var(--spark-scaling,1))]", variantIcon?.className),
80
+ name: icon ?? variantIcon.name
81
81
  }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
82
82
  className: "flex w-full min-w-0 flex-col gap-1",
83
83
  children
@@ -1 +1 @@
1
- {"version":3,"file":"callout.cjs","names":["React","Button","MaterialSymbol"],"sources":["../../src/components/callout.tsx"],"sourcesContent":["import { cva, type VariantProps } from 'class-variance-authority'\nimport * as React from 'react'\nimport {\n MaterialSymbol,\n type MaterialSymbolIconName,\n} from '../icons/material-symbol'\nimport { cn } from '../utils/cn'\nimport { Button, type ButtonProps } from './button'\n\ntype CalloutVariant = 'error' | 'info' | 'success' | 'warning'\n\nconst calloutVariants = cva(\n 'group/callout flex w-full items-start gap-2 rounded-lg px-4 py-3 text-sm transition-[color,background-color,opacity,scale] duration-150 ease-out motion-reduce:transition-none starting:scale-95 starting:opacity-0',\n {\n variants: {\n variant: {\n error: 'bg-base-error-soft text-error',\n success: 'bg-base-success-soft text-success',\n warning: 'bg-base-warning-soft text-warning',\n info: 'bg-base-info-soft text-info',\n },\n },\n defaultVariants: {\n variant: 'info',\n },\n },\n)\n\nconst CALLOUT_ICONS: Record<\n CalloutVariant,\n { name: MaterialSymbolIconName; className: string }\n> = {\n error: { name: 'cancel', className: 'text-error-light' },\n success: { name: 'check_circle', className: 'text-success-light' },\n warning: { name: 'warning', className: 'text-warning-light' },\n info: { name: 'info', className: 'text-info-light' },\n}\n\ninterface CalloutProps\n extends\n React.HTMLAttributes<HTMLDivElement>,\n VariantProps<typeof calloutVariants> {}\n\nconst CalloutTitle = ({\n className,\n ...props\n}: React.HTMLAttributes<HTMLSpanElement>) => (\n <span\n data-slot=\"callout-title\"\n className={cn('text-base leading-5 font-semibold', className)}\n {...props}\n />\n)\n\nconst CalloutDescription = ({\n className,\n ...props\n}: React.HTMLAttributes<HTMLParagraphElement>) => (\n <p\n data-slot=\"callout-description\"\n className={cn('text-sm', className)}\n {...props}\n />\n)\n\nconst CalloutVariantContext = React.createContext<CalloutVariant>('info')\n\nconst CALLOUT_ACTION_COLORS: Record<CalloutVariant, string> = {\n error:\n 'bg-base-error-soft text-error hover:bg-red-a4 focus-visible:bg-red-a4',\n success:\n 'bg-base-success-soft text-success hover:bg-green-a4 focus-visible:bg-green-a4',\n warning:\n 'bg-base-warning-soft text-warning hover:bg-orange-a4 focus-visible:bg-orange-a4',\n info: 'bg-base-info-soft text-info hover:bg-blue-a4 focus-visible:bg-blue-a4',\n}\n\ntype CalloutActionType = Omit<ButtonProps, 'styleVariant' | 'color'> & {\n align?: 'start' | 'end'\n}\n\nconst CalloutAction = ({\n className,\n align = 'start',\n ...props\n}: CalloutActionType) => {\n const calloutVariant = React.useContext(CalloutVariantContext)\n\n return (\n <Button\n data-slot=\"callout-action\"\n size=\"small\"\n styleVariant=\"surface\"\n color=\"neutral\"\n className={cn(\n 'mt-2 w-fit',\n { 'self-start': align === 'start', 'self-end': align === 'end' },\n CALLOUT_ACTION_COLORS[calloutVariant],\n className,\n )}\n {...props}\n />\n )\n}\n\nconst Callout = ({\n variant = 'info',\n className,\n children,\n ...props\n}: CalloutProps) => {\n const icon = CALLOUT_ICONS[variant ?? 'info']\n\n return (\n <CalloutVariantContext.Provider value={variant ?? 'info'}>\n <div\n data-slot=\"callout\"\n className={cn(calloutVariants({ variant }), className)}\n {...props}\n >\n <MaterialSymbol\n className={cn(\n 'inline-flex shrink-0 items-center [--spark-icon-size:calc(20px*var(--spark-scaling,1))]',\n icon?.className,\n )}\n name={icon.name}\n />\n <div className=\"flex w-full min-w-0 flex-col gap-1\">{children}</div>\n </div>\n </CalloutVariantContext.Provider>\n )\n}\n\nexport {\n Callout,\n CalloutAction,\n CalloutDescription,\n CalloutTitle,\n calloutVariants,\n}\nexport type { CalloutProps, CalloutVariant }\n"],"mappings":";;;;;;;;;;;AAWA,MAAM,mBAAA,GAAA,yBAAA,KACJ,uNACA;CACE,UAAU,EACR,SAAS;EACP,OAAO;EACP,SAAS;EACT,SAAS;EACT,MAAM;EACP,EACF;CACD,iBAAiB,EACf,SAAS,QACV;CACF,CACF;AAED,MAAM,gBAGF;CACF,OAAO;EAAE,MAAM;EAAU,WAAW;EAAoB;CACxD,SAAS;EAAE,MAAM;EAAgB,WAAW;EAAsB;CAClE,SAAS;EAAE,MAAM;EAAW,WAAW;EAAsB;CAC7D,MAAM;EAAE,MAAM;EAAQ,WAAW;EAAmB;CACrD;AAOD,MAAM,gBAAgB,EACpB,WACA,GAAG,YAEH,iBAAA,GAAA,kBAAA,KAAC,QAAD;CACE,aAAU;CACV,YAAA,GAAA,OAAA,IAAc,qCAAqC,UAAU;CAC7D,GAAI;CACJ,CAAA;AAGJ,MAAM,sBAAsB,EAC1B,WACA,GAAG,YAEH,iBAAA,GAAA,kBAAA,KAAC,KAAD;CACE,aAAU;CACV,YAAA,GAAA,OAAA,IAAc,WAAW,UAAU;CACnC,GAAI;CACJ,CAAA;AAGJ,MAAM,wBAAwBA,MAAM,cAA8B,OAAO;AAEzE,MAAM,wBAAwD;CAC5D,OACE;CACF,SACE;CACF,SACE;CACF,MAAM;CACP;AAMD,MAAM,iBAAiB,EACrB,WACA,QAAQ,SACR,GAAG,YACoB;CACvB,MAAM,iBAAiBA,MAAM,WAAW,sBAAsB;AAE9D,QACE,iBAAA,GAAA,kBAAA,KAACC,0BAAAA,QAAD;EACE,aAAU;EACV,MAAK;EACL,cAAa;EACb,OAAM;EACN,YAAA,GAAA,OAAA,IACE,cACA;GAAE,cAAc,UAAU;GAAS,YAAY,UAAU;GAAO,EAChE,sBAAsB,iBACtB,UACD;EACD,GAAI;EACJ,CAAA;;AAIN,MAAM,WAAW,EACf,UAAU,QACV,WACA,UACA,GAAG,YACe;CAClB,MAAM,OAAO,cAAc,WAAW;AAEtC,QACE,iBAAA,GAAA,kBAAA,KAAC,sBAAsB,UAAvB;EAAgC,OAAO,WAAW;YAChD,iBAAA,GAAA,kBAAA,MAAC,OAAD;GACE,aAAU;GACV,YAAA,GAAA,OAAA,IAAc,gBAAgB,EAAE,SAAS,CAAC,EAAE,UAAU;GACtD,GAAI;aAHN,CAKE,iBAAA,GAAA,kBAAA,KAACC,8BAAAA,gBAAD;IACE,YAAA,GAAA,OAAA,IACE,2FACA,MAAM,UACP;IACD,MAAM,KAAK;IACX,CAAA,EACF,iBAAA,GAAA,kBAAA,KAAC,OAAD;IAAK,WAAU;IAAsC;IAAe,CAAA,CAChE;;EACyB,CAAA"}
1
+ {"version":3,"file":"callout.cjs","names":["React","Button","MaterialSymbol"],"sources":["../../src/components/callout.tsx"],"sourcesContent":["import { cva, type VariantProps } from 'class-variance-authority'\nimport * as React from 'react'\nimport {\n MaterialSymbol,\n type MaterialSymbolIconName,\n} from '../icons/material-symbol'\nimport { cn } from '../utils/cn'\nimport { Button, type ButtonProps } from './button'\n\ntype CalloutVariant = 'error' | 'info' | 'success' | 'warning'\n\nconst calloutVariants = cva(\n 'group/callout flex w-full items-start gap-2 rounded-lg px-4 py-3 text-sm transition-[color,background-color,opacity,scale] duration-150 ease-out motion-reduce:transition-none starting:scale-95 starting:opacity-0',\n {\n variants: {\n variant: {\n error: 'bg-base-error-soft text-error',\n success: 'bg-base-success-soft text-success',\n warning: 'bg-base-warning-soft text-warning',\n info: 'bg-base-info-soft text-info',\n },\n },\n defaultVariants: {\n variant: 'info',\n },\n },\n)\n\nconst CALLOUT_ICONS: Record<\n CalloutVariant,\n { name: MaterialSymbolIconName; className: string }\n> = {\n error: { name: 'cancel', className: 'text-error-light' },\n success: { name: 'check_circle', className: 'text-success-light' },\n warning: { name: 'warning', className: 'text-warning-light' },\n info: { name: 'info', className: 'text-info-light' },\n}\n\ninterface CalloutProps\n extends\n React.HTMLAttributes<HTMLDivElement>,\n VariantProps<typeof calloutVariants> {\n /** Overrides the variant's default icon; the variant's color is kept. */\n icon?: MaterialSymbolIconName\n}\n\nconst CalloutTitle = ({\n className,\n ...props\n}: React.HTMLAttributes<HTMLSpanElement>) => (\n <span\n data-slot=\"callout-title\"\n className={cn('text-base leading-5 font-semibold', className)}\n {...props}\n />\n)\n\nconst CalloutDescription = ({\n className,\n ...props\n}: React.HTMLAttributes<HTMLParagraphElement>) => (\n <p\n data-slot=\"callout-description\"\n className={cn('text-sm', className)}\n {...props}\n />\n)\n\nconst CalloutVariantContext = React.createContext<CalloutVariant>('info')\n\nconst CALLOUT_ACTION_COLORS: Record<CalloutVariant, string> = {\n error:\n 'bg-base-error-soft text-error hover:bg-red-a4 focus-visible:bg-red-a4',\n success:\n 'bg-base-success-soft text-success hover:bg-green-a4 focus-visible:bg-green-a4',\n warning:\n 'bg-base-warning-soft text-warning hover:bg-orange-a4 focus-visible:bg-orange-a4',\n info: 'bg-base-info-soft text-info hover:bg-blue-a4 focus-visible:bg-blue-a4',\n}\n\ntype CalloutActionType = Omit<ButtonProps, 'styleVariant' | 'color'> & {\n align?: 'start' | 'end'\n}\n\nconst CalloutAction = ({\n className,\n align = 'start',\n ...props\n}: CalloutActionType) => {\n const calloutVariant = React.useContext(CalloutVariantContext)\n\n return (\n <Button\n data-slot=\"callout-action\"\n size=\"small\"\n styleVariant=\"surface\"\n color=\"neutral\"\n className={cn(\n 'mt-2 w-fit',\n { 'self-start': align === 'start', 'self-end': align === 'end' },\n CALLOUT_ACTION_COLORS[calloutVariant],\n className,\n )}\n {...props}\n />\n )\n}\n\nconst Callout = ({\n variant = 'info',\n icon,\n className,\n children,\n ...props\n}: CalloutProps) => {\n const variantIcon = CALLOUT_ICONS[variant ?? 'info']\n\n return (\n <CalloutVariantContext.Provider value={variant ?? 'info'}>\n <div\n data-slot=\"callout\"\n className={cn(calloutVariants({ variant }), className)}\n {...props}\n >\n <MaterialSymbol\n className={cn(\n 'inline-flex shrink-0 items-center [--spark-icon-size:calc(20px*var(--spark-scaling,1))]',\n variantIcon?.className,\n )}\n name={icon ?? variantIcon.name}\n />\n <div className=\"flex w-full min-w-0 flex-col gap-1\">{children}</div>\n </div>\n </CalloutVariantContext.Provider>\n )\n}\n\nexport {\n Callout,\n CalloutAction,\n CalloutDescription,\n CalloutTitle,\n calloutVariants,\n}\nexport type { CalloutProps, CalloutVariant }\n"],"mappings":";;;;;;;;;;;AAWA,MAAM,mBAAA,GAAA,yBAAA,KACJ,uNACA;CACE,UAAU,EACR,SAAS;EACP,OAAO;EACP,SAAS;EACT,SAAS;EACT,MAAM;EACP,EACF;CACD,iBAAiB,EACf,SAAS,QACV;CACF,CACF;AAED,MAAM,gBAGF;CACF,OAAO;EAAE,MAAM;EAAU,WAAW;EAAoB;CACxD,SAAS;EAAE,MAAM;EAAgB,WAAW;EAAsB;CAClE,SAAS;EAAE,MAAM;EAAW,WAAW;EAAsB;CAC7D,MAAM;EAAE,MAAM;EAAQ,WAAW;EAAmB;CACrD;AAUD,MAAM,gBAAgB,EACpB,WACA,GAAG,YAEH,iBAAA,GAAA,kBAAA,KAAC,QAAD;CACE,aAAU;CACV,YAAA,GAAA,OAAA,IAAc,qCAAqC,UAAU;CAC7D,GAAI;CACJ,CAAA;AAGJ,MAAM,sBAAsB,EAC1B,WACA,GAAG,YAEH,iBAAA,GAAA,kBAAA,KAAC,KAAD;CACE,aAAU;CACV,YAAA,GAAA,OAAA,IAAc,WAAW,UAAU;CACnC,GAAI;CACJ,CAAA;AAGJ,MAAM,wBAAwBA,MAAM,cAA8B,OAAO;AAEzE,MAAM,wBAAwD;CAC5D,OACE;CACF,SACE;CACF,SACE;CACF,MAAM;CACP;AAMD,MAAM,iBAAiB,EACrB,WACA,QAAQ,SACR,GAAG,YACoB;CACvB,MAAM,iBAAiBA,MAAM,WAAW,sBAAsB;AAE9D,QACE,iBAAA,GAAA,kBAAA,KAACC,0BAAAA,QAAD;EACE,aAAU;EACV,MAAK;EACL,cAAa;EACb,OAAM;EACN,YAAA,GAAA,OAAA,IACE,cACA;GAAE,cAAc,UAAU;GAAS,YAAY,UAAU;GAAO,EAChE,sBAAsB,iBACtB,UACD;EACD,GAAI;EACJ,CAAA;;AAIN,MAAM,WAAW,EACf,UAAU,QACV,MACA,WACA,UACA,GAAG,YACe;CAClB,MAAM,cAAc,cAAc,WAAW;AAE7C,QACE,iBAAA,GAAA,kBAAA,KAAC,sBAAsB,UAAvB;EAAgC,OAAO,WAAW;YAChD,iBAAA,GAAA,kBAAA,MAAC,OAAD;GACE,aAAU;GACV,YAAA,GAAA,OAAA,IAAc,gBAAgB,EAAE,SAAS,CAAC,EAAE,UAAU;GACtD,GAAI;aAHN,CAKE,iBAAA,GAAA,kBAAA,KAACC,8BAAAA,gBAAD;IACE,YAAA,GAAA,OAAA,IACE,2FACA,aAAa,UACd;IACD,MAAM,QAAQ,YAAY;IAC1B,CAAA,EACF,iBAAA,GAAA,kBAAA,KAAC,OAAD;IAAK,WAAU;IAAsC;IAAe,CAAA,CAChE;;EACyB,CAAA"}
@@ -1,6 +1,7 @@
1
1
  "use client";
2
2
 
3
3
  import { ButtonProps } from "./button.cjs";
4
+ import { MaterialSymbolIconName } from "../icons/material-symbol.cjs";
4
5
  import * as _$react_jsx_runtime0 from "react/jsx-runtime";
5
6
  import * as React$1 from "react";
6
7
  import * as _$class_variance_authority_types0 from "class-variance-authority/types";
@@ -11,7 +12,10 @@ type CalloutVariant = 'error' | 'info' | 'success' | 'warning';
11
12
  declare const calloutVariants: (props?: ({
12
13
  variant?: "info" | "warning" | "success" | "error" | null | undefined;
13
14
  } & _$class_variance_authority_types0.ClassProp) | undefined) => string;
14
- interface CalloutProps extends React$1.HTMLAttributes<HTMLDivElement>, VariantProps<typeof calloutVariants> {}
15
+ interface CalloutProps extends React$1.HTMLAttributes<HTMLDivElement>, VariantProps<typeof calloutVariants> {
16
+ /** Overrides the variant's default icon; the variant's color is kept. */
17
+ icon?: MaterialSymbolIconName;
18
+ }
15
19
  declare const CalloutTitle: ({
16
20
  className,
17
21
  ...props
@@ -30,6 +34,7 @@ declare const CalloutAction: ({
30
34
  }: CalloutActionType) => _$react_jsx_runtime0.JSX.Element;
31
35
  declare const Callout: ({
32
36
  variant,
37
+ icon,
33
38
  className,
34
39
  children,
35
40
  ...props
@@ -1,6 +1,7 @@
1
1
  "use client";
2
2
 
3
3
  import { ButtonProps } from "./button.js";
4
+ import { MaterialSymbolIconName } from "../icons/material-symbol.js";
4
5
  import * as React$1 from "react";
5
6
  import * as _$react_jsx_runtime0 from "react/jsx-runtime";
6
7
  import { VariantProps } from "class-variance-authority";
@@ -11,7 +12,10 @@ type CalloutVariant = 'error' | 'info' | 'success' | 'warning';
11
12
  declare const calloutVariants: (props?: ({
12
13
  variant?: "info" | "warning" | "success" | "error" | null | undefined;
13
14
  } & _$class_variance_authority_types0.ClassProp) | undefined) => string;
14
- interface CalloutProps extends React$1.HTMLAttributes<HTMLDivElement>, VariantProps<typeof calloutVariants> {}
15
+ interface CalloutProps extends React$1.HTMLAttributes<HTMLDivElement>, VariantProps<typeof calloutVariants> {
16
+ /** Overrides the variant's default icon; the variant's color is kept. */
17
+ icon?: MaterialSymbolIconName;
18
+ }
15
19
  declare const CalloutTitle: ({
16
20
  className,
17
21
  ...props
@@ -30,6 +34,7 @@ declare const CalloutAction: ({
30
34
  }: CalloutActionType) => _$react_jsx_runtime0.JSX.Element;
31
35
  declare const Callout: ({
32
36
  variant,
37
+ icon,
33
38
  className,
34
39
  children,
35
40
  ...props
@@ -64,8 +64,8 @@ const CalloutAction = ({ className, align = "start", ...props }) => {
64
64
  ...props
65
65
  });
66
66
  };
67
- const Callout = ({ variant = "info", className, children, ...props }) => {
68
- const icon = CALLOUT_ICONS[variant ?? "info"];
67
+ const Callout = ({ variant = "info", icon, className, children, ...props }) => {
68
+ const variantIcon = CALLOUT_ICONS[variant ?? "info"];
69
69
  return /* @__PURE__ */ jsx(CalloutVariantContext.Provider, {
70
70
  value: variant ?? "info",
71
71
  children: /* @__PURE__ */ jsxs("div", {
@@ -73,8 +73,8 @@ const Callout = ({ variant = "info", className, children, ...props }) => {
73
73
  className: cn(calloutVariants({ variant }), className),
74
74
  ...props,
75
75
  children: [/* @__PURE__ */ jsx(MaterialSymbol, {
76
- className: cn("inline-flex shrink-0 items-center [--spark-icon-size:calc(20px*var(--spark-scaling,1))]", icon?.className),
77
- name: icon.name
76
+ className: cn("inline-flex shrink-0 items-center [--spark-icon-size:calc(20px*var(--spark-scaling,1))]", variantIcon?.className),
77
+ name: icon ?? variantIcon.name
78
78
  }), /* @__PURE__ */ jsx("div", {
79
79
  className: "flex w-full min-w-0 flex-col gap-1",
80
80
  children
@@ -1 +1 @@
1
- {"version":3,"file":"callout.js","names":["React"],"sources":["../../src/components/callout.tsx"],"sourcesContent":["import { cva, type VariantProps } from 'class-variance-authority'\nimport * as React from 'react'\nimport {\n MaterialSymbol,\n type MaterialSymbolIconName,\n} from '../icons/material-symbol'\nimport { cn } from '../utils/cn'\nimport { Button, type ButtonProps } from './button'\n\ntype CalloutVariant = 'error' | 'info' | 'success' | 'warning'\n\nconst calloutVariants = cva(\n 'group/callout flex w-full items-start gap-2 rounded-lg px-4 py-3 text-sm transition-[color,background-color,opacity,scale] duration-150 ease-out motion-reduce:transition-none starting:scale-95 starting:opacity-0',\n {\n variants: {\n variant: {\n error: 'bg-base-error-soft text-error',\n success: 'bg-base-success-soft text-success',\n warning: 'bg-base-warning-soft text-warning',\n info: 'bg-base-info-soft text-info',\n },\n },\n defaultVariants: {\n variant: 'info',\n },\n },\n)\n\nconst CALLOUT_ICONS: Record<\n CalloutVariant,\n { name: MaterialSymbolIconName; className: string }\n> = {\n error: { name: 'cancel', className: 'text-error-light' },\n success: { name: 'check_circle', className: 'text-success-light' },\n warning: { name: 'warning', className: 'text-warning-light' },\n info: { name: 'info', className: 'text-info-light' },\n}\n\ninterface CalloutProps\n extends\n React.HTMLAttributes<HTMLDivElement>,\n VariantProps<typeof calloutVariants> {}\n\nconst CalloutTitle = ({\n className,\n ...props\n}: React.HTMLAttributes<HTMLSpanElement>) => (\n <span\n data-slot=\"callout-title\"\n className={cn('text-base leading-5 font-semibold', className)}\n {...props}\n />\n)\n\nconst CalloutDescription = ({\n className,\n ...props\n}: React.HTMLAttributes<HTMLParagraphElement>) => (\n <p\n data-slot=\"callout-description\"\n className={cn('text-sm', className)}\n {...props}\n />\n)\n\nconst CalloutVariantContext = React.createContext<CalloutVariant>('info')\n\nconst CALLOUT_ACTION_COLORS: Record<CalloutVariant, string> = {\n error:\n 'bg-base-error-soft text-error hover:bg-red-a4 focus-visible:bg-red-a4',\n success:\n 'bg-base-success-soft text-success hover:bg-green-a4 focus-visible:bg-green-a4',\n warning:\n 'bg-base-warning-soft text-warning hover:bg-orange-a4 focus-visible:bg-orange-a4',\n info: 'bg-base-info-soft text-info hover:bg-blue-a4 focus-visible:bg-blue-a4',\n}\n\ntype CalloutActionType = Omit<ButtonProps, 'styleVariant' | 'color'> & {\n align?: 'start' | 'end'\n}\n\nconst CalloutAction = ({\n className,\n align = 'start',\n ...props\n}: CalloutActionType) => {\n const calloutVariant = React.useContext(CalloutVariantContext)\n\n return (\n <Button\n data-slot=\"callout-action\"\n size=\"small\"\n styleVariant=\"surface\"\n color=\"neutral\"\n className={cn(\n 'mt-2 w-fit',\n { 'self-start': align === 'start', 'self-end': align === 'end' },\n CALLOUT_ACTION_COLORS[calloutVariant],\n className,\n )}\n {...props}\n />\n )\n}\n\nconst Callout = ({\n variant = 'info',\n className,\n children,\n ...props\n}: CalloutProps) => {\n const icon = CALLOUT_ICONS[variant ?? 'info']\n\n return (\n <CalloutVariantContext.Provider value={variant ?? 'info'}>\n <div\n data-slot=\"callout\"\n className={cn(calloutVariants({ variant }), className)}\n {...props}\n >\n <MaterialSymbol\n className={cn(\n 'inline-flex shrink-0 items-center [--spark-icon-size:calc(20px*var(--spark-scaling,1))]',\n icon?.className,\n )}\n name={icon.name}\n />\n <div className=\"flex w-full min-w-0 flex-col gap-1\">{children}</div>\n </div>\n </CalloutVariantContext.Provider>\n )\n}\n\nexport {\n Callout,\n CalloutAction,\n CalloutDescription,\n CalloutTitle,\n calloutVariants,\n}\nexport type { CalloutProps, CalloutVariant }\n"],"mappings":";;;;;;;;AAWA,MAAM,kBAAkB,IACtB,uNACA;CACE,UAAU,EACR,SAAS;EACP,OAAO;EACP,SAAS;EACT,SAAS;EACT,MAAM;EACP,EACF;CACD,iBAAiB,EACf,SAAS,QACV;CACF,CACF;AAED,MAAM,gBAGF;CACF,OAAO;EAAE,MAAM;EAAU,WAAW;EAAoB;CACxD,SAAS;EAAE,MAAM;EAAgB,WAAW;EAAsB;CAClE,SAAS;EAAE,MAAM;EAAW,WAAW;EAAsB;CAC7D,MAAM;EAAE,MAAM;EAAQ,WAAW;EAAmB;CACrD;AAOD,MAAM,gBAAgB,EACpB,WACA,GAAG,YAEH,oBAAC,QAAD;CACE,aAAU;CACV,WAAW,GAAG,qCAAqC,UAAU;CAC7D,GAAI;CACJ,CAAA;AAGJ,MAAM,sBAAsB,EAC1B,WACA,GAAG,YAEH,oBAAC,KAAD;CACE,aAAU;CACV,WAAW,GAAG,WAAW,UAAU;CACnC,GAAI;CACJ,CAAA;AAGJ,MAAM,wBAAwBA,QAAM,cAA8B,OAAO;AAEzE,MAAM,wBAAwD;CAC5D,OACE;CACF,SACE;CACF,SACE;CACF,MAAM;CACP;AAMD,MAAM,iBAAiB,EACrB,WACA,QAAQ,SACR,GAAG,YACoB;CACvB,MAAM,iBAAiBA,QAAM,WAAW,sBAAsB;AAE9D,QACE,oBAAC,QAAD;EACE,aAAU;EACV,MAAK;EACL,cAAa;EACb,OAAM;EACN,WAAW,GACT,cACA;GAAE,cAAc,UAAU;GAAS,YAAY,UAAU;GAAO,EAChE,sBAAsB,iBACtB,UACD;EACD,GAAI;EACJ,CAAA;;AAIN,MAAM,WAAW,EACf,UAAU,QACV,WACA,UACA,GAAG,YACe;CAClB,MAAM,OAAO,cAAc,WAAW;AAEtC,QACE,oBAAC,sBAAsB,UAAvB;EAAgC,OAAO,WAAW;YAChD,qBAAC,OAAD;GACE,aAAU;GACV,WAAW,GAAG,gBAAgB,EAAE,SAAS,CAAC,EAAE,UAAU;GACtD,GAAI;aAHN,CAKE,oBAAC,gBAAD;IACE,WAAW,GACT,2FACA,MAAM,UACP;IACD,MAAM,KAAK;IACX,CAAA,EACF,oBAAC,OAAD;IAAK,WAAU;IAAsC;IAAe,CAAA,CAChE;;EACyB,CAAA"}
1
+ {"version":3,"file":"callout.js","names":["React"],"sources":["../../src/components/callout.tsx"],"sourcesContent":["import { cva, type VariantProps } from 'class-variance-authority'\nimport * as React from 'react'\nimport {\n MaterialSymbol,\n type MaterialSymbolIconName,\n} from '../icons/material-symbol'\nimport { cn } from '../utils/cn'\nimport { Button, type ButtonProps } from './button'\n\ntype CalloutVariant = 'error' | 'info' | 'success' | 'warning'\n\nconst calloutVariants = cva(\n 'group/callout flex w-full items-start gap-2 rounded-lg px-4 py-3 text-sm transition-[color,background-color,opacity,scale] duration-150 ease-out motion-reduce:transition-none starting:scale-95 starting:opacity-0',\n {\n variants: {\n variant: {\n error: 'bg-base-error-soft text-error',\n success: 'bg-base-success-soft text-success',\n warning: 'bg-base-warning-soft text-warning',\n info: 'bg-base-info-soft text-info',\n },\n },\n defaultVariants: {\n variant: 'info',\n },\n },\n)\n\nconst CALLOUT_ICONS: Record<\n CalloutVariant,\n { name: MaterialSymbolIconName; className: string }\n> = {\n error: { name: 'cancel', className: 'text-error-light' },\n success: { name: 'check_circle', className: 'text-success-light' },\n warning: { name: 'warning', className: 'text-warning-light' },\n info: { name: 'info', className: 'text-info-light' },\n}\n\ninterface CalloutProps\n extends\n React.HTMLAttributes<HTMLDivElement>,\n VariantProps<typeof calloutVariants> {\n /** Overrides the variant's default icon; the variant's color is kept. */\n icon?: MaterialSymbolIconName\n}\n\nconst CalloutTitle = ({\n className,\n ...props\n}: React.HTMLAttributes<HTMLSpanElement>) => (\n <span\n data-slot=\"callout-title\"\n className={cn('text-base leading-5 font-semibold', className)}\n {...props}\n />\n)\n\nconst CalloutDescription = ({\n className,\n ...props\n}: React.HTMLAttributes<HTMLParagraphElement>) => (\n <p\n data-slot=\"callout-description\"\n className={cn('text-sm', className)}\n {...props}\n />\n)\n\nconst CalloutVariantContext = React.createContext<CalloutVariant>('info')\n\nconst CALLOUT_ACTION_COLORS: Record<CalloutVariant, string> = {\n error:\n 'bg-base-error-soft text-error hover:bg-red-a4 focus-visible:bg-red-a4',\n success:\n 'bg-base-success-soft text-success hover:bg-green-a4 focus-visible:bg-green-a4',\n warning:\n 'bg-base-warning-soft text-warning hover:bg-orange-a4 focus-visible:bg-orange-a4',\n info: 'bg-base-info-soft text-info hover:bg-blue-a4 focus-visible:bg-blue-a4',\n}\n\ntype CalloutActionType = Omit<ButtonProps, 'styleVariant' | 'color'> & {\n align?: 'start' | 'end'\n}\n\nconst CalloutAction = ({\n className,\n align = 'start',\n ...props\n}: CalloutActionType) => {\n const calloutVariant = React.useContext(CalloutVariantContext)\n\n return (\n <Button\n data-slot=\"callout-action\"\n size=\"small\"\n styleVariant=\"surface\"\n color=\"neutral\"\n className={cn(\n 'mt-2 w-fit',\n { 'self-start': align === 'start', 'self-end': align === 'end' },\n CALLOUT_ACTION_COLORS[calloutVariant],\n className,\n )}\n {...props}\n />\n )\n}\n\nconst Callout = ({\n variant = 'info',\n icon,\n className,\n children,\n ...props\n}: CalloutProps) => {\n const variantIcon = CALLOUT_ICONS[variant ?? 'info']\n\n return (\n <CalloutVariantContext.Provider value={variant ?? 'info'}>\n <div\n data-slot=\"callout\"\n className={cn(calloutVariants({ variant }), className)}\n {...props}\n >\n <MaterialSymbol\n className={cn(\n 'inline-flex shrink-0 items-center [--spark-icon-size:calc(20px*var(--spark-scaling,1))]',\n variantIcon?.className,\n )}\n name={icon ?? variantIcon.name}\n />\n <div className=\"flex w-full min-w-0 flex-col gap-1\">{children}</div>\n </div>\n </CalloutVariantContext.Provider>\n )\n}\n\nexport {\n Callout,\n CalloutAction,\n CalloutDescription,\n CalloutTitle,\n calloutVariants,\n}\nexport type { CalloutProps, CalloutVariant }\n"],"mappings":";;;;;;;;AAWA,MAAM,kBAAkB,IACtB,uNACA;CACE,UAAU,EACR,SAAS;EACP,OAAO;EACP,SAAS;EACT,SAAS;EACT,MAAM;EACP,EACF;CACD,iBAAiB,EACf,SAAS,QACV;CACF,CACF;AAED,MAAM,gBAGF;CACF,OAAO;EAAE,MAAM;EAAU,WAAW;EAAoB;CACxD,SAAS;EAAE,MAAM;EAAgB,WAAW;EAAsB;CAClE,SAAS;EAAE,MAAM;EAAW,WAAW;EAAsB;CAC7D,MAAM;EAAE,MAAM;EAAQ,WAAW;EAAmB;CACrD;AAUD,MAAM,gBAAgB,EACpB,WACA,GAAG,YAEH,oBAAC,QAAD;CACE,aAAU;CACV,WAAW,GAAG,qCAAqC,UAAU;CAC7D,GAAI;CACJ,CAAA;AAGJ,MAAM,sBAAsB,EAC1B,WACA,GAAG,YAEH,oBAAC,KAAD;CACE,aAAU;CACV,WAAW,GAAG,WAAW,UAAU;CACnC,GAAI;CACJ,CAAA;AAGJ,MAAM,wBAAwBA,QAAM,cAA8B,OAAO;AAEzE,MAAM,wBAAwD;CAC5D,OACE;CACF,SACE;CACF,SACE;CACF,MAAM;CACP;AAMD,MAAM,iBAAiB,EACrB,WACA,QAAQ,SACR,GAAG,YACoB;CACvB,MAAM,iBAAiBA,QAAM,WAAW,sBAAsB;AAE9D,QACE,oBAAC,QAAD;EACE,aAAU;EACV,MAAK;EACL,cAAa;EACb,OAAM;EACN,WAAW,GACT,cACA;GAAE,cAAc,UAAU;GAAS,YAAY,UAAU;GAAO,EAChE,sBAAsB,iBACtB,UACD;EACD,GAAI;EACJ,CAAA;;AAIN,MAAM,WAAW,EACf,UAAU,QACV,MACA,WACA,UACA,GAAG,YACe;CAClB,MAAM,cAAc,cAAc,WAAW;AAE7C,QACE,oBAAC,sBAAsB,UAAvB;EAAgC,OAAO,WAAW;YAChD,qBAAC,OAAD;GACE,aAAU;GACV,WAAW,GAAG,gBAAgB,EAAE,SAAS,CAAC,EAAE,UAAU;GACtD,GAAI;aAHN,CAKE,oBAAC,gBAAD;IACE,WAAW,GACT,2FACA,aAAa,UACd;IACD,MAAM,QAAQ,YAAY;IAC1B,CAAA,EACF,oBAAC,OAAD;IAAK,WAAU;IAAsC;IAAe,CAAA,CAChE;;EACyB,CAAA"}
@@ -5,27 +5,41 @@ let react = require("react");
5
5
  react = require_chunk.__toESM(react);
6
6
  let react_jsx_runtime = require("react/jsx-runtime");
7
7
  let class_variance_authority = require("class-variance-authority");
8
+ let _base_ui_react_use_render = require("@base-ui/react/use-render");
8
9
  let cnfast = require("cnfast");
9
10
  //#region src/components/card.tsx
10
11
  const cardVariants = (0, class_variance_authority.cva)("relative flex w-full flex-col gap-1 rounded-2xl py-3", {
11
12
  variants: { variant: {
12
- ambient: "border-[length:var(--spark-card-border-width,0px)] border-[color:var(--spark-card-border,transparent)] bg-(--spark-card-bg,var(--neutral-a3)) px-[var(--spark-card-px,1rem)]",
13
+ ambient: "border-(length:--spark-card-border-width,0px) border-(--spark-card-border,transparent) bg-(--spark-card-bg,var(--neutral-a3)) px-(--spark-card-px,1rem)",
13
14
  soft: "bg-(--spark-card-c-soft,var(--neutral-a3)) px-4",
14
- surface: "border border-[color:var(--spark-card-c-border,var(--neutral-a6))] bg-(--spark-card-c-surface,var(--neutral-2)) px-4",
15
- outline: "border border-[color:var(--spark-card-c-border,var(--neutral-a6))] px-4",
15
+ surface: "border border-(--spark-card-c-border,var(--neutral-a6)) bg-(--spark-card-c-surface,var(--neutral-2)) px-4",
16
+ outline: "border border-(--spark-card-c-border,var(--neutral-a6)) px-4",
16
17
  ghost: "",
17
18
  solid: "bg-(--spark-card-c-solid,var(--neutral-9)) px-4 [--spark-card-fg-muted:var(--spark-card-c-contrast,var(--neutral-contrast))] [--spark-card-fg:var(--spark-card-c-contrast,var(--neutral-contrast))] [--spark-card-icon:var(--spark-card-c-contrast,var(--neutral-contrast))]"
18
19
  } },
19
20
  defaultVariants: { variant: "ambient" }
20
21
  });
21
- const Card = react.forwardRef(({ className, variant, color, ...props }, ref) => /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
22
- className: (0, cnfast.cn)(cardVariants({ variant }), className),
23
- "data-slot": "card",
24
- "data-variant": variant,
25
- "data-card-color": color === "accent" ? "accent" : void 0,
26
- ref,
27
- ...props
28
- }));
22
+ const Card = react.forwardRef(({ className, variant, color, render, ...props }, ref) => {
23
+ const interactive = render != null;
24
+ const resolved = variant ?? "ambient";
25
+ return (0, _base_ui_react_use_render.useRender)({
26
+ defaultTagName: "div",
27
+ render,
28
+ props: {
29
+ "data-slot": "card",
30
+ "data-variant": variant,
31
+ "data-card-color": color === "accent" ? "accent" : void 0,
32
+ className: (0, cnfast.cn)(cardVariants({ variant }), interactive && [
33
+ "cursor-pointer text-left no-underline transition-colors motion-reduce:transition-none",
34
+ "focus-visible:ring-2 focus-visible:ring-offset-2 focus-visible:outline-hidden",
35
+ "disabled:pointer-events-none disabled:opacity-50 aria-disabled:pointer-events-none aria-disabled:opacity-50",
36
+ (resolved === "ambient" || resolved === "soft") && "hover:bg-(--spark-card-c-soft-hover,var(--neutral-a4))"
37
+ ], className),
38
+ ref,
39
+ ...props
40
+ }
41
+ });
42
+ });
29
43
  Card.displayName = "Card";
30
44
  const CardHeader = react.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
31
45
  className: (0, cnfast.cn)("flex items-center gap-4", className),
@@ -1 +1 @@
1
- {"version":3,"file":"card.cjs","names":["React"],"sources":["../../src/components/card.tsx"],"sourcesContent":["import { cva } from 'class-variance-authority'\nimport * as React from 'react'\nimport type { SparkCardColor, SparkCardVariant } from '../lib/theme-types'\nimport { cn } from '../utils/cn'\n\nconst cardVariants = cva(\n // Layout + constant VERTICAL padding + radius (rounded-2xl tracks the [data-radius]\n // knob). Chrome (bg/border) and HORIZONTAL padding live per-variant so `ghost` sits\n // flush. Container chrome ONLY (contract §11): reads/sets --spark-card-* — never\n // data-style or the --spark-* scale — so styling/colouring a card never repaints the\n // controls inside it.\n 'relative flex w-full flex-col gap-1 rounded-2xl py-3',\n {\n variants: {\n variant: {\n // Prop unset → follow the app-level [data-card-variant] knob; fallbacks == today's look.\n ambient:\n 'border-[length:var(--spark-card-border-width,0px)] border-[color:var(--spark-card-border,transparent)] bg-(--spark-card-bg,var(--neutral-a3)) px-[var(--spark-card-px,1rem)]',\n soft: 'bg-(--spark-card-c-soft,var(--neutral-a3)) px-4',\n surface:\n 'border border-[color:var(--spark-card-c-border,var(--neutral-a6))] bg-(--spark-card-c-surface,var(--neutral-2)) px-4',\n outline:\n 'border border-[color:var(--spark-card-c-border,var(--neutral-a6))] px-4',\n // no horizontal inset (no chrome to pad against); py-3 keeps the vertical rhythm.\n ghost: '',\n // HIDDEN: `SparkCardVariant` excludes `solid` for now (content-contrast TBD).\n // Recipe kept so re-enabling is only widening the type back to SparkStyle.\n solid:\n 'bg-(--spark-card-c-solid,var(--neutral-9)) px-4 [--spark-card-fg-muted:var(--spark-card-c-contrast,var(--neutral-contrast))] [--spark-card-fg:var(--spark-card-c-contrast,var(--neutral-contrast))] [--spark-card-icon:var(--spark-card-c-contrast,var(--neutral-contrast))]',\n },\n },\n defaultVariants: {\n variant: 'ambient',\n },\n },\n)\n\ninterface CardProps extends React.HTMLAttributes<HTMLDivElement> {\n /**\n * Container chrome scoped to this card — NOT the ambient `data-style` knob\n * (that drives controls and would cascade into the card's content). Unset →\n * follows the app-level `[data-card-variant]` knob (default soft-neutral).\n * (`solid` is hidden for now — see `SparkCardVariant`.)\n */\n variant?: SparkCardVariant\n /** Chrome palette. `neutral` (default) tracks the app neutral; `accent` tints with the brand accent. */\n color?: SparkCardColor\n}\n\nconst Card = React.forwardRef<HTMLDivElement, CardProps>(\n ({ className, variant, color, ...props }, ref) => (\n <div\n className={cn(cardVariants({ variant }), className)}\n data-slot=\"card\"\n data-variant={variant}\n data-card-color={color === 'accent' ? 'accent' : undefined}\n ref={ref}\n {...props}\n />\n ),\n)\n\nCard.displayName = 'Card'\n\nconst CardHeader = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => (\n <div\n className={cn('flex items-center gap-4', className)}\n ref={ref}\n {...props}\n />\n))\n\nCardHeader.displayName = 'CardHeader'\n\nconst CardIcon = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => (\n <div\n className={cn(\n 'flex shrink-0 items-center justify-center text-(--spark-card-icon,var(--spark-a11))',\n className,\n )}\n ref={ref}\n {...props}\n />\n))\n\nCardIcon.displayName = 'CardIcon'\n\nconst CardTitle = React.forwardRef<\n HTMLHeadingElement,\n React.HTMLAttributes<HTMLHeadingElement>\n>(({ className, ...props }, ref) => (\n <h3\n className={cn(\n 'text-base leading-5 font-medium text-(--spark-card-fg,var(--neutral-a12))',\n className,\n )}\n ref={ref}\n {...props}\n />\n))\n\nCardTitle.displayName = 'CardTitle'\n\nconst CardDescription = React.forwardRef<\n HTMLParagraphElement,\n React.HTMLAttributes<HTMLParagraphElement>\n>(({ className, ...props }, ref) => (\n <p\n className={cn(\n 'text-sm leading-5 text-(--spark-card-fg-muted,var(--neutral-a11))',\n className,\n )}\n ref={ref}\n {...props}\n />\n))\n\nCardDescription.displayName = 'CardDescription'\n\nconst CardContent = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => (\n <div className={cn('', className)} ref={ref} {...props} />\n))\n\nCardContent.displayName = 'CardContent'\n\nconst CardFooter = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => (\n <div\n className={cn(\n 'flex items-center justify-end gap-2 pt-2 text-(--spark-card-fg,var(--neutral-a12))',\n className,\n )}\n ref={ref}\n {...props}\n />\n))\n\nCardFooter.displayName = 'CardFooter'\n\nconst CardSkeleton = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => (\n <div\n className={cn(\n 'relative flex w-full items-center gap-4 rounded-2xl bg-spark-a3 p-4 opacity-80',\n className,\n )}\n ref={ref}\n {...props}\n >\n <div className=\"size-10 shrink-0 animate-pulse rounded-full bg-base-gray-soft motion-reduce:animate-none\" />\n <div className=\"flex flex-1 flex-col gap-y-2\">\n <div className=\"h-5 w-1/3 max-w-32 animate-pulse rounded-md bg-base-gray-soft motion-reduce:animate-none\" />\n <div className=\"h-4 w-1/2 max-w-48 animate-pulse rounded-md bg-base-gray-soft motion-reduce:animate-none\" />\n </div>\n </div>\n))\n\nCardSkeleton.displayName = 'CardSkeleton'\n\nexport {\n Card,\n CardContent,\n CardDescription,\n CardFooter,\n CardHeader,\n CardIcon,\n CardSkeleton,\n CardTitle,\n}\nexport type { CardProps }\n"],"mappings":";;;;;;;;;AAKA,MAAM,gBAAA,GAAA,yBAAA,KAMJ,wDACA;CACE,UAAU,EACR,SAAS;EAEP,SACE;EACF,MAAM;EACN,SACE;EACF,SACE;EAEF,OAAO;EAGP,OACE;EACH,EACF;CACD,iBAAiB,EACf,SAAS,WACV;CACF,CACF;AAcD,MAAM,OAAOA,MAAM,YAChB,EAAE,WAAW,SAAS,OAAO,GAAG,SAAS,QACxC,iBAAA,GAAA,kBAAA,KAAC,OAAD;CACE,YAAA,GAAA,OAAA,IAAc,aAAa,EAAE,SAAS,CAAC,EAAE,UAAU;CACnD,aAAU;CACV,gBAAc;CACd,mBAAiB,UAAU,WAAW,WAAW,KAAA;CAC5C;CACL,GAAI;CACJ,CAAA,CAEL;AAED,KAAK,cAAc;AAEnB,MAAM,aAAaA,MAAM,YAGtB,EAAE,WAAW,GAAG,SAAS,QAC1B,iBAAA,GAAA,kBAAA,KAAC,OAAD;CACE,YAAA,GAAA,OAAA,IAAc,2BAA2B,UAAU;CAC9C;CACL,GAAI;CACJ,CAAA,CACF;AAEF,WAAW,cAAc;AAEzB,MAAM,WAAWA,MAAM,YAGpB,EAAE,WAAW,GAAG,SAAS,QAC1B,iBAAA,GAAA,kBAAA,KAAC,OAAD;CACE,YAAA,GAAA,OAAA,IACE,uFACA,UACD;CACI;CACL,GAAI;CACJ,CAAA,CACF;AAEF,SAAS,cAAc;AAEvB,MAAM,YAAYA,MAAM,YAGrB,EAAE,WAAW,GAAG,SAAS,QAC1B,iBAAA,GAAA,kBAAA,KAAC,MAAD;CACE,YAAA,GAAA,OAAA,IACE,6EACA,UACD;CACI;CACL,GAAI;CACJ,CAAA,CACF;AAEF,UAAU,cAAc;AAExB,MAAM,kBAAkBA,MAAM,YAG3B,EAAE,WAAW,GAAG,SAAS,QAC1B,iBAAA,GAAA,kBAAA,KAAC,KAAD;CACE,YAAA,GAAA,OAAA,IACE,qEACA,UACD;CACI;CACL,GAAI;CACJ,CAAA,CACF;AAEF,gBAAgB,cAAc;AAE9B,MAAM,cAAcA,MAAM,YAGvB,EAAE,WAAW,GAAG,SAAS,QAC1B,iBAAA,GAAA,kBAAA,KAAC,OAAD;CAAK,YAAA,GAAA,OAAA,IAAc,IAAI,UAAU;CAAO;CAAK,GAAI;CAAS,CAAA,CAC1D;AAEF,YAAY,cAAc;AAE1B,MAAM,aAAaA,MAAM,YAGtB,EAAE,WAAW,GAAG,SAAS,QAC1B,iBAAA,GAAA,kBAAA,KAAC,OAAD;CACE,YAAA,GAAA,OAAA,IACE,sFACA,UACD;CACI;CACL,GAAI;CACJ,CAAA,CACF;AAEF,WAAW,cAAc;AAEzB,MAAM,eAAeA,MAAM,YAGxB,EAAE,WAAW,GAAG,SAAS,QAC1B,iBAAA,GAAA,kBAAA,MAAC,OAAD;CACE,YAAA,GAAA,OAAA,IACE,kFACA,UACD;CACI;CACL,GAAI;WANN,CAQE,iBAAA,GAAA,kBAAA,KAAC,OAAD,EAAK,WAAU,4FAA6F,CAAA,EAC5G,iBAAA,GAAA,kBAAA,MAAC,OAAD;EAAK,WAAU;YAAf,CACE,iBAAA,GAAA,kBAAA,KAAC,OAAD,EAAK,WAAU,4FAA6F,CAAA,EAC5G,iBAAA,GAAA,kBAAA,KAAC,OAAD,EAAK,WAAU,4FAA6F,CAAA,CACxG;IACF;GACN;AAEF,aAAa,cAAc"}
1
+ {"version":3,"file":"card.cjs","names":["React"],"sources":["../../src/components/card.tsx"],"sourcesContent":["import { useRender } from '@base-ui/react/use-render'\nimport { cva } from 'class-variance-authority'\nimport * as React from 'react'\nimport type { SparkCardColor, SparkCardVariant } from '../lib/theme-types'\nimport { cn } from '../utils/cn'\n\nconst cardVariants = cva(\n 'relative flex w-full flex-col gap-1 rounded-2xl py-3',\n {\n variants: {\n variant: {\n ambient:\n 'border-(length:--spark-card-border-width,0px) border-(--spark-card-border,transparent) bg-(--spark-card-bg,var(--neutral-a3)) px-(--spark-card-px,1rem)',\n soft: 'bg-(--spark-card-c-soft,var(--neutral-a3)) px-4',\n surface:\n 'border border-(--spark-card-c-border,var(--neutral-a6)) bg-(--spark-card-c-surface,var(--neutral-2)) px-4',\n outline: 'border border-(--spark-card-c-border,var(--neutral-a6)) px-4',\n ghost: '',\n solid:\n 'bg-(--spark-card-c-solid,var(--neutral-9)) px-4 [--spark-card-fg-muted:var(--spark-card-c-contrast,var(--neutral-contrast))] [--spark-card-fg:var(--spark-card-c-contrast,var(--neutral-contrast))] [--spark-card-icon:var(--spark-card-c-contrast,var(--neutral-contrast))]',\n },\n },\n defaultVariants: {\n variant: 'ambient',\n },\n },\n)\n\ninterface CardProps extends React.HTMLAttributes<HTMLDivElement> {\n /**\n * Container chrome scoped to this card — NOT the ambient `data-style` knob\n * (that drives controls and would cascade into the card's content). Unset →\n * follows the app-level `[data-card-variant]` knob (default soft-neutral).\n * (`solid` is hidden for now — see `SparkCardVariant`.)\n */\n variant?: SparkCardVariant\n /** Chrome palette. `neutral` (default) tracks the app neutral; `accent` tints with the brand accent. */\n color?: SparkCardColor\n /**\n * Base UI polymorphism. Pass `<a href/>` or `<button/>` to make the whole\n * card interactive (hover tint, focus ring, disabled styles). Omit → static.\n */\n render?: useRender.RenderProp\n}\n\nconst Card = React.forwardRef<HTMLDivElement, CardProps>(\n ({ className, variant, color, render, ...props }, ref) => {\n const interactive = render != null\n const resolved = variant ?? 'ambient'\n return useRender({\n defaultTagName: 'div',\n render,\n props: {\n 'data-slot': 'card',\n 'data-variant': variant,\n 'data-card-color': color === 'accent' ? 'accent' : undefined,\n className: cn(\n cardVariants({ variant }),\n interactive && [\n 'cursor-pointer text-left no-underline transition-colors motion-reduce:transition-none',\n 'focus-visible:ring-2 focus-visible:ring-offset-2 focus-visible:outline-hidden',\n 'disabled:pointer-events-none disabled:opacity-50 aria-disabled:pointer-events-none aria-disabled:opacity-50',\n // hover deepens the fill one step; bordered/bare variants only ring\n (resolved === 'ambient' || resolved === 'soft') &&\n 'hover:bg-(--spark-card-c-soft-hover,var(--neutral-a4))',\n ],\n className,\n ),\n ref,\n ...props,\n },\n })\n },\n)\n\nCard.displayName = 'Card'\n\nconst CardHeader = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => (\n <div\n className={cn('flex items-center gap-4', className)}\n ref={ref}\n {...props}\n />\n))\n\nCardHeader.displayName = 'CardHeader'\n\nconst CardIcon = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => (\n <div\n className={cn(\n 'flex shrink-0 items-center justify-center text-(--spark-card-icon,var(--spark-a11))',\n className,\n )}\n ref={ref}\n {...props}\n />\n))\n\nCardIcon.displayName = 'CardIcon'\n\nconst CardTitle = React.forwardRef<\n HTMLHeadingElement,\n React.HTMLAttributes<HTMLHeadingElement>\n>(({ className, ...props }, ref) => (\n <h3\n className={cn(\n 'text-base leading-5 font-medium text-(--spark-card-fg,var(--neutral-a12))',\n className,\n )}\n ref={ref}\n {...props}\n />\n))\n\nCardTitle.displayName = 'CardTitle'\n\nconst CardDescription = React.forwardRef<\n HTMLParagraphElement,\n React.HTMLAttributes<HTMLParagraphElement>\n>(({ className, ...props }, ref) => (\n <p\n className={cn(\n 'text-sm leading-5 text-(--spark-card-fg-muted,var(--neutral-a11))',\n className,\n )}\n ref={ref}\n {...props}\n />\n))\n\nCardDescription.displayName = 'CardDescription'\n\nconst CardContent = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => (\n <div className={cn('', className)} ref={ref} {...props} />\n))\n\nCardContent.displayName = 'CardContent'\n\nconst CardFooter = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => (\n <div\n className={cn(\n 'flex items-center justify-end gap-2 pt-2 text-(--spark-card-fg,var(--neutral-a12))',\n className,\n )}\n ref={ref}\n {...props}\n />\n))\n\nCardFooter.displayName = 'CardFooter'\n\nconst CardSkeleton = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => (\n <div\n className={cn(\n 'relative flex w-full items-center gap-4 rounded-2xl bg-spark-a3 p-4 opacity-80',\n className,\n )}\n ref={ref}\n {...props}\n >\n <div className=\"size-10 shrink-0 animate-pulse rounded-full bg-base-gray-soft motion-reduce:animate-none\" />\n <div className=\"flex flex-1 flex-col gap-y-2\">\n <div className=\"h-5 w-1/3 max-w-32 animate-pulse rounded-md bg-base-gray-soft motion-reduce:animate-none\" />\n <div className=\"h-4 w-1/2 max-w-48 animate-pulse rounded-md bg-base-gray-soft motion-reduce:animate-none\" />\n </div>\n </div>\n))\n\nCardSkeleton.displayName = 'CardSkeleton'\n\nexport {\n Card,\n CardContent,\n CardDescription,\n CardFooter,\n CardHeader,\n CardIcon,\n CardSkeleton,\n CardTitle,\n}\nexport type { CardProps }\n"],"mappings":";;;;;;;;;;AAMA,MAAM,gBAAA,GAAA,yBAAA,KACJ,wDACA;CACE,UAAU,EACR,SAAS;EACP,SACE;EACF,MAAM;EACN,SACE;EACF,SAAS;EACT,OAAO;EACP,OACE;EACH,EACF;CACD,iBAAiB,EACf,SAAS,WACV;CACF,CACF;AAmBD,MAAM,OAAOA,MAAM,YAChB,EAAE,WAAW,SAAS,OAAO,QAAQ,GAAG,SAAS,QAAQ;CACxD,MAAM,cAAc,UAAU;CAC9B,MAAM,WAAW,WAAW;AAC5B,SAAA,GAAA,0BAAA,WAAiB;EACf,gBAAgB;EAChB;EACA,OAAO;GACL,aAAa;GACb,gBAAgB;GAChB,mBAAmB,UAAU,WAAW,WAAW,KAAA;GACnD,YAAA,GAAA,OAAA,IACE,aAAa,EAAE,SAAS,CAAC,EACzB,eAAe;IACb;IACA;IACA;KAEC,aAAa,aAAa,aAAa,WACtC;IACH,EACD,UACD;GACD;GACA,GAAG;GACJ;EACF,CAAC;EAEL;AAED,KAAK,cAAc;AAEnB,MAAM,aAAaA,MAAM,YAGtB,EAAE,WAAW,GAAG,SAAS,QAC1B,iBAAA,GAAA,kBAAA,KAAC,OAAD;CACE,YAAA,GAAA,OAAA,IAAc,2BAA2B,UAAU;CAC9C;CACL,GAAI;CACJ,CAAA,CACF;AAEF,WAAW,cAAc;AAEzB,MAAM,WAAWA,MAAM,YAGpB,EAAE,WAAW,GAAG,SAAS,QAC1B,iBAAA,GAAA,kBAAA,KAAC,OAAD;CACE,YAAA,GAAA,OAAA,IACE,uFACA,UACD;CACI;CACL,GAAI;CACJ,CAAA,CACF;AAEF,SAAS,cAAc;AAEvB,MAAM,YAAYA,MAAM,YAGrB,EAAE,WAAW,GAAG,SAAS,QAC1B,iBAAA,GAAA,kBAAA,KAAC,MAAD;CACE,YAAA,GAAA,OAAA,IACE,6EACA,UACD;CACI;CACL,GAAI;CACJ,CAAA,CACF;AAEF,UAAU,cAAc;AAExB,MAAM,kBAAkBA,MAAM,YAG3B,EAAE,WAAW,GAAG,SAAS,QAC1B,iBAAA,GAAA,kBAAA,KAAC,KAAD;CACE,YAAA,GAAA,OAAA,IACE,qEACA,UACD;CACI;CACL,GAAI;CACJ,CAAA,CACF;AAEF,gBAAgB,cAAc;AAE9B,MAAM,cAAcA,MAAM,YAGvB,EAAE,WAAW,GAAG,SAAS,QAC1B,iBAAA,GAAA,kBAAA,KAAC,OAAD;CAAK,YAAA,GAAA,OAAA,IAAc,IAAI,UAAU;CAAO;CAAK,GAAI;CAAS,CAAA,CAC1D;AAEF,YAAY,cAAc;AAE1B,MAAM,aAAaA,MAAM,YAGtB,EAAE,WAAW,GAAG,SAAS,QAC1B,iBAAA,GAAA,kBAAA,KAAC,OAAD;CACE,YAAA,GAAA,OAAA,IACE,sFACA,UACD;CACI;CACL,GAAI;CACJ,CAAA,CACF;AAEF,WAAW,cAAc;AAEzB,MAAM,eAAeA,MAAM,YAGxB,EAAE,WAAW,GAAG,SAAS,QAC1B,iBAAA,GAAA,kBAAA,MAAC,OAAD;CACE,YAAA,GAAA,OAAA,IACE,kFACA,UACD;CACI;CACL,GAAI;WANN,CAQE,iBAAA,GAAA,kBAAA,KAAC,OAAD,EAAK,WAAU,4FAA6F,CAAA,EAC5G,iBAAA,GAAA,kBAAA,MAAC,OAAD;EAAK,WAAU;YAAf,CACE,iBAAA,GAAA,kBAAA,KAAC,OAAD,EAAK,WAAU,4FAA6F,CAAA,EAC5G,iBAAA,GAAA,kBAAA,KAAC,OAAD,EAAK,WAAU,4FAA6F,CAAA,CACxG;IACF;GACN;AAEF,aAAa,cAAc"}
@@ -2,6 +2,7 @@
2
2
 
3
3
  import { n as SparkCardVariant, t as SparkCardColor } from "../theme-types-BwSJKdsB.cjs";
4
4
  import * as React$1 from "react";
5
+ import { useRender } from "@base-ui/react/use-render";
5
6
 
6
7
  //#region src/components/card.d.ts
7
8
  interface CardProps extends React$1.HTMLAttributes<HTMLDivElement> {
@@ -14,6 +15,11 @@ interface CardProps extends React$1.HTMLAttributes<HTMLDivElement> {
14
15
  variant?: SparkCardVariant;
15
16
  /** Chrome palette. `neutral` (default) tracks the app neutral; `accent` tints with the brand accent. */
16
17
  color?: SparkCardColor;
18
+ /**
19
+ * Base UI polymorphism. Pass `<a href/>` or `<button/>` to make the whole
20
+ * card interactive (hover tint, focus ring, disabled styles). Omit → static.
21
+ */
22
+ render?: useRender.RenderProp;
17
23
  }
18
24
  declare const Card: React$1.ForwardRefExoticComponent<CardProps & React$1.RefAttributes<HTMLDivElement>>;
19
25
  declare const CardHeader: React$1.ForwardRefExoticComponent<React$1.HTMLAttributes<HTMLDivElement> & React$1.RefAttributes<HTMLDivElement>>;
@@ -1,7 +1,8 @@
1
1
  "use client";
2
2
 
3
- import { n as SparkCardVariant, t as SparkCardColor } from "../theme-types-BDdoRxXa.js";
3
+ import { n as SparkCardVariant, t as SparkCardColor } from "../theme-types-BKlzRiyw.js";
4
4
  import * as React$1 from "react";
5
+ import { useRender } from "@base-ui/react/use-render";
5
6
 
6
7
  //#region src/components/card.d.ts
7
8
  interface CardProps extends React$1.HTMLAttributes<HTMLDivElement> {
@@ -14,6 +15,11 @@ interface CardProps extends React$1.HTMLAttributes<HTMLDivElement> {
14
15
  variant?: SparkCardVariant;
15
16
  /** Chrome palette. `neutral` (default) tracks the app neutral; `accent` tints with the brand accent. */
16
17
  color?: SparkCardColor;
18
+ /**
19
+ * Base UI polymorphism. Pass `<a href/>` or `<button/>` to make the whole
20
+ * card interactive (hover tint, focus ring, disabled styles). Omit → static.
21
+ */
22
+ render?: useRender.RenderProp;
17
23
  }
18
24
  declare const Card: React$1.ForwardRefExoticComponent<CardProps & React$1.RefAttributes<HTMLDivElement>>;
19
25
  declare const CardHeader: React$1.ForwardRefExoticComponent<React$1.HTMLAttributes<HTMLDivElement> & React$1.RefAttributes<HTMLDivElement>>;