@epilot/spark-ui 0.18.2 → 0.20.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 (280) hide show
  1. package/dist/components/attachment.d.cts +1 -1
  2. package/dist/components/attachment.d.ts +1 -1
  3. package/dist/components/avatar.cjs +1 -1
  4. package/dist/components/avatar.cjs.map +1 -1
  5. package/dist/components/avatar.js +1 -1
  6. package/dist/components/avatar.js.map +1 -1
  7. package/dist/components/badge.cjs +1 -1
  8. package/dist/components/badge.cjs.map +1 -1
  9. package/dist/components/badge.d.cts +2 -1
  10. package/dist/components/badge.d.ts +2 -1
  11. package/dist/components/badge.js +1 -1
  12. package/dist/components/badge.js.map +1 -1
  13. package/dist/components/{energy-bar-chart.cjs → bar-chart-with-total.cjs} +4 -4
  14. package/dist/components/bar-chart-with-total.cjs.map +1 -0
  15. package/dist/components/bar-chart-with-total.d.cts +19 -0
  16. package/dist/components/bar-chart-with-total.d.ts +19 -0
  17. package/dist/components/{energy-bar-chart.js → bar-chart-with-total.js} +4 -4
  18. package/dist/components/bar-chart-with-total.js.map +1 -0
  19. package/dist/components/bar-chart.cjs +1 -1
  20. package/dist/components/bar-chart.js +2 -2
  21. package/dist/components/bubble.d.cts +1 -1
  22. package/dist/components/bubble.d.ts +1 -1
  23. package/dist/components/button-group.cjs +2 -2
  24. package/dist/components/button-group.cjs.map +1 -1
  25. package/dist/components/button-group.d.cts +1 -1
  26. package/dist/components/button-group.d.ts +1 -1
  27. package/dist/components/button-group.js +2 -2
  28. package/dist/components/button-group.js.map +1 -1
  29. package/dist/components/button.cjs +6 -4
  30. package/dist/components/button.cjs.map +1 -1
  31. package/dist/components/button.d.cts +6 -5
  32. package/dist/components/button.d.ts +6 -5
  33. package/dist/components/button.js +6 -4
  34. package/dist/components/button.js.map +1 -1
  35. package/dist/components/calendar.cjs +3 -3
  36. package/dist/components/calendar.cjs.map +1 -1
  37. package/dist/components/calendar.js +3 -3
  38. package/dist/components/calendar.js.map +1 -1
  39. package/dist/components/callout.cjs +10 -10
  40. package/dist/components/callout.cjs.map +1 -1
  41. package/dist/components/callout.d.cts +1 -1
  42. package/dist/components/callout.d.ts +1 -1
  43. package/dist/components/callout.js +10 -10
  44. package/dist/components/callout.js.map +1 -1
  45. package/dist/components/checkbox.cjs +1 -1
  46. package/dist/components/checkbox.cjs.map +1 -1
  47. package/dist/components/checkbox.js +1 -1
  48. package/dist/components/checkbox.js.map +1 -1
  49. package/dist/components/circular-gauge.cjs +7 -7
  50. package/dist/components/circular-gauge.cjs.map +1 -1
  51. package/dist/components/circular-gauge.js +7 -7
  52. package/dist/components/circular-gauge.js.map +1 -1
  53. package/dist/components/day-of-week-picker.cjs +21 -41
  54. package/dist/components/day-of-week-picker.cjs.map +1 -1
  55. package/dist/components/day-of-week-picker.d.cts +19 -23
  56. package/dist/components/day-of-week-picker.d.ts +19 -23
  57. package/dist/components/day-of-week-picker.js +21 -41
  58. package/dist/components/day-of-week-picker.js.map +1 -1
  59. package/dist/components/{device-card.cjs → entity-card.cjs} +31 -31
  60. package/dist/components/entity-card.cjs.map +1 -0
  61. package/dist/components/{device-card.d.cts → entity-card.d.cts} +15 -15
  62. package/dist/components/{device-card.d.ts → entity-card.d.ts} +15 -15
  63. package/dist/components/{device-card.js → entity-card.js} +20 -20
  64. package/dist/components/entity-card.js.map +1 -0
  65. package/dist/components/field.cjs +1 -1
  66. package/dist/components/field.cjs.map +1 -1
  67. package/dist/components/field.js +1 -1
  68. package/dist/components/field.js.map +1 -1
  69. package/dist/components/{feed-in-hero.cjs → hero-metric.cjs} +10 -15
  70. package/dist/components/hero-metric.cjs.map +1 -0
  71. package/dist/components/hero-metric.d.cts +27 -0
  72. package/dist/components/hero-metric.d.ts +27 -0
  73. package/dist/components/{feed-in-hero.js → hero-metric.js} +7 -12
  74. package/dist/components/hero-metric.js.map +1 -0
  75. package/dist/components/info-block.d.cts +1 -1
  76. package/dist/components/info-block.d.ts +1 -1
  77. package/dist/components/input-date.cjs +6 -6
  78. package/dist/components/input-date.cjs.map +1 -1
  79. package/dist/components/input-date.d.cts +2 -1
  80. package/dist/components/input-date.d.ts +2 -1
  81. package/dist/components/input-date.js +6 -6
  82. package/dist/components/input-date.js.map +1 -1
  83. package/dist/components/input-group.d.cts +1 -1
  84. package/dist/components/input-group.d.ts +1 -1
  85. package/dist/components/input-otp.cjs +1 -1
  86. package/dist/components/input-otp.cjs.map +1 -1
  87. package/dist/components/input-otp.js +1 -1
  88. package/dist/components/input-otp.js.map +1 -1
  89. package/dist/components/input.cjs +1 -1
  90. package/dist/components/input.cjs.map +1 -1
  91. package/dist/components/input.js +1 -1
  92. package/dist/components/input.js.map +1 -1
  93. package/dist/components/label.cjs +1 -1
  94. package/dist/components/label.cjs.map +1 -1
  95. package/dist/components/label.js +1 -1
  96. package/dist/components/label.js.map +1 -1
  97. package/dist/components/line-chart.cjs +2 -2
  98. package/dist/components/line-chart.js +3 -3
  99. package/dist/components/number-flow.d.cts +12 -2
  100. package/dist/components/number-flow.d.ts +12 -2
  101. package/dist/components/page-header.d.cts +1 -1
  102. package/dist/components/page-header.d.ts +1 -1
  103. package/dist/components/period-tabs.cjs +2 -22
  104. package/dist/components/period-tabs.cjs.map +1 -1
  105. package/dist/components/period-tabs.d.cts +5 -22
  106. package/dist/components/period-tabs.d.ts +5 -22
  107. package/dist/components/period-tabs.js +2 -22
  108. package/dist/components/period-tabs.js.map +1 -1
  109. package/dist/components/pill.cjs +2 -2
  110. package/dist/components/pill.cjs.map +1 -1
  111. package/dist/components/pill.js +2 -2
  112. package/dist/components/pill.js.map +1 -1
  113. package/dist/components/progress.cjs +1 -1
  114. package/dist/components/progress.cjs.map +1 -1
  115. package/dist/components/progress.js +1 -1
  116. package/dist/components/progress.js.map +1 -1
  117. package/dist/components/radio.cjs +1 -1
  118. package/dist/components/radio.cjs.map +1 -1
  119. package/dist/components/radio.js +1 -1
  120. package/dist/components/radio.js.map +1 -1
  121. package/dist/components/sankey-chart.cjs +1 -11
  122. package/dist/components/sankey-chart.cjs.map +1 -1
  123. package/dist/components/sankey-chart.d.cts +2 -3
  124. package/dist/components/sankey-chart.d.ts +2 -3
  125. package/dist/components/sankey-chart.js +2 -11
  126. package/dist/components/sankey-chart.js.map +1 -1
  127. package/dist/components/segmented-control.cjs +2 -2
  128. package/dist/components/segmented-control.cjs.map +1 -1
  129. package/dist/components/segmented-control.js +2 -2
  130. package/dist/components/segmented-control.js.map +1 -1
  131. package/dist/components/select.cjs +32 -2
  132. package/dist/components/select.cjs.map +1 -1
  133. package/dist/components/select.d.cts +11 -1
  134. package/dist/components/select.d.ts +11 -1
  135. package/dist/components/select.js +32 -4
  136. package/dist/components/select.js.map +1 -1
  137. package/dist/components/stepper.cjs +1 -1
  138. package/dist/components/stepper.cjs.map +1 -1
  139. package/dist/components/stepper.d.cts +4 -4
  140. package/dist/components/stepper.d.ts +4 -4
  141. package/dist/components/stepper.js +1 -1
  142. package/dist/components/stepper.js.map +1 -1
  143. package/dist/components/table.cjs +147 -0
  144. package/dist/components/table.cjs.map +1 -0
  145. package/dist/components/table.d.cts +75 -0
  146. package/dist/components/table.d.ts +75 -0
  147. package/dist/components/table.js +138 -0
  148. package/dist/components/table.js.map +1 -0
  149. package/dist/components/textarea.cjs +1 -1
  150. package/dist/components/textarea.cjs.map +1 -1
  151. package/dist/components/textarea.js +1 -1
  152. package/dist/components/textarea.js.map +1 -1
  153. package/dist/components/tooltip.cjs +1 -1
  154. package/dist/components/tooltip.cjs.map +1 -1
  155. package/dist/components/tooltip.js +1 -1
  156. package/dist/components/tooltip.js.map +1 -1
  157. package/dist/components/typography.cjs +1 -1
  158. package/dist/components/typography.cjs.map +1 -1
  159. package/dist/components/typography.d.cts +4 -1
  160. package/dist/components/typography.d.ts +4 -1
  161. package/dist/components/typography.js +1 -1
  162. package/dist/components/typography.js.map +1 -1
  163. package/dist/components/wizard-layout.cjs +57 -0
  164. package/dist/components/wizard-layout.cjs.map +1 -0
  165. package/dist/components/wizard-layout.d.cts +34 -0
  166. package/dist/components/wizard-layout.d.ts +34 -0
  167. package/dist/components/wizard-layout.js +50 -0
  168. package/dist/components/wizard-layout.js.map +1 -0
  169. package/dist/lib/accent-colors.cjs +4 -1
  170. package/dist/lib/accent-colors.cjs.map +1 -1
  171. package/dist/lib/accent-colors.d.cts +1 -1
  172. package/dist/lib/accent-colors.d.ts +1 -1
  173. package/dist/lib/accent-colors.js +4 -1
  174. package/dist/lib/accent-colors.js.map +1 -1
  175. package/dist/lib/accent-theme.cjs +144 -9
  176. package/dist/lib/accent-theme.cjs.map +1 -1
  177. package/dist/lib/accent-theme.d.cts +37 -1
  178. package/dist/lib/accent-theme.d.ts +37 -1
  179. package/dist/lib/accent-theme.js +140 -10
  180. package/dist/lib/accent-theme.js.map +1 -1
  181. package/dist/styles/index.css +10 -1
  182. package/dist/styles/spark-default.css +75 -321
  183. package/dist/styles/theme.css +54 -8
  184. package/dist/utils/format.cjs +0 -13
  185. package/dist/utils/format.cjs.map +1 -1
  186. package/dist/utils/format.d.cts +1 -7
  187. package/dist/utils/format.d.ts +1 -7
  188. package/dist/utils/format.js +1 -12
  189. package/dist/utils/format.js.map +1 -1
  190. package/package.json +1 -1
  191. package/dist/components/battery-progress-row.cjs +0 -135
  192. package/dist/components/battery-progress-row.cjs.map +0 -1
  193. package/dist/components/battery-progress-row.d.cts +0 -69
  194. package/dist/components/battery-progress-row.d.ts +0 -69
  195. package/dist/components/battery-progress-row.js +0 -125
  196. package/dist/components/battery-progress-row.js.map +0 -1
  197. package/dist/components/device-card.cjs.map +0 -1
  198. package/dist/components/device-card.js.map +0 -1
  199. package/dist/components/energy-bar-chart.cjs.map +0 -1
  200. package/dist/components/energy-bar-chart.d.cts +0 -43
  201. package/dist/components/energy-bar-chart.d.ts +0 -43
  202. package/dist/components/energy-bar-chart.js.map +0 -1
  203. package/dist/components/energy-breakdown.cjs +0 -80
  204. package/dist/components/energy-breakdown.cjs.map +0 -1
  205. package/dist/components/energy-breakdown.d.cts +0 -24
  206. package/dist/components/energy-breakdown.d.ts +0 -24
  207. package/dist/components/energy-breakdown.js +0 -79
  208. package/dist/components/energy-breakdown.js.map +0 -1
  209. package/dist/components/energy-history-chart.cjs +0 -63
  210. package/dist/components/energy-history-chart.cjs.map +0 -1
  211. package/dist/components/energy-history-chart.d.cts +0 -64
  212. package/dist/components/energy-history-chart.d.ts +0 -64
  213. package/dist/components/energy-history-chart.js +0 -62
  214. package/dist/components/energy-history-chart.js.map +0 -1
  215. package/dist/components/feed-in-hero.cjs.map +0 -1
  216. package/dist/components/feed-in-hero.d.cts +0 -32
  217. package/dist/components/feed-in-hero.d.ts +0 -32
  218. package/dist/components/feed-in-hero.js.map +0 -1
  219. package/dist/components/metering-row.cjs +0 -59
  220. package/dist/components/metering-row.cjs.map +0 -1
  221. package/dist/components/metering-row.d.cts +0 -31
  222. package/dist/components/metering-row.d.ts +0 -31
  223. package/dist/components/metering-row.js +0 -55
  224. package/dist/components/metering-row.js.map +0 -1
  225. package/dist/components/money-saved-block.cjs +0 -83
  226. package/dist/components/money-saved-block.cjs.map +0 -1
  227. package/dist/components/money-saved-block.d.cts +0 -55
  228. package/dist/components/money-saved-block.d.ts +0 -55
  229. package/dist/components/money-saved-block.js +0 -76
  230. package/dist/components/money-saved-block.js.map +0 -1
  231. package/dist/components/on-off-button.cjs +0 -32
  232. package/dist/components/on-off-button.cjs.map +0 -1
  233. package/dist/components/on-off-button.d.cts +0 -18
  234. package/dist/components/on-off-button.d.ts +0 -18
  235. package/dist/components/on-off-button.js +0 -31
  236. package/dist/components/on-off-button.js.map +0 -1
  237. package/dist/components/onboarding-layout.cjs +0 -67
  238. package/dist/components/onboarding-layout.cjs.map +0 -1
  239. package/dist/components/onboarding-layout.d.cts +0 -44
  240. package/dist/components/onboarding-layout.d.ts +0 -44
  241. package/dist/components/onboarding-layout.js +0 -60
  242. package/dist/components/onboarding-layout.js.map +0 -1
  243. package/dist/components/power-history-chart.cjs +0 -498
  244. package/dist/components/power-history-chart.cjs.map +0 -1
  245. package/dist/components/power-history-chart.d.cts +0 -71
  246. package/dist/components/power-history-chart.d.ts +0 -71
  247. package/dist/components/power-history-chart.js +0 -496
  248. package/dist/components/power-history-chart.js.map +0 -1
  249. package/dist/components/power-history.cjs +0 -114
  250. package/dist/components/power-history.cjs.map +0 -1
  251. package/dist/components/power-history.d.cts +0 -40
  252. package/dist/components/power-history.d.ts +0 -41
  253. package/dist/components/power-history.js +0 -114
  254. package/dist/components/power-history.js.map +0 -1
  255. package/dist/components/power-network.cjs +0 -559
  256. package/dist/components/power-network.cjs.map +0 -1
  257. package/dist/components/power-network.d.cts +0 -80
  258. package/dist/components/power-network.d.ts +0 -80
  259. package/dist/components/power-network.js +0 -553
  260. package/dist/components/power-network.js.map +0 -1
  261. package/dist/components/smart-toggle-button.cjs +0 -24
  262. package/dist/components/smart-toggle-button.cjs.map +0 -1
  263. package/dist/components/smart-toggle-button.d.cts +0 -16
  264. package/dist/components/smart-toggle-button.d.ts +0 -16
  265. package/dist/components/smart-toggle-button.js +0 -23
  266. package/dist/components/smart-toggle-button.js.map +0 -1
  267. package/dist/components/solar-forecast-chart.cjs +0 -108
  268. package/dist/components/solar-forecast-chart.cjs.map +0 -1
  269. package/dist/components/solar-forecast-chart.d.cts +0 -77
  270. package/dist/components/solar-forecast-chart.d.ts +0 -77
  271. package/dist/components/solar-forecast-chart.js +0 -103
  272. package/dist/components/solar-forecast-chart.js.map +0 -1
  273. package/dist/number-flow-Bch81ixZ.d.cts +0 -14
  274. package/dist/number-flow-Bch81ixZ.d.ts +0 -14
  275. package/dist/utils/build-sankey-nodes.cjs +0 -72
  276. package/dist/utils/build-sankey-nodes.cjs.map +0 -1
  277. package/dist/utils/build-sankey-nodes.d.cts +0 -27
  278. package/dist/utils/build-sankey-nodes.d.ts +0 -27
  279. package/dist/utils/build-sankey-nodes.js +0 -71
  280. package/dist/utils/build-sankey-nodes.js.map +0 -1
@@ -20,7 +20,7 @@ declare function Attachment({
20
20
  state?: 'idle' | 'uploading' | 'processing' | 'error' | 'done';
21
21
  }): import("react/jsx-runtime").JSX.Element;
22
22
  declare const attachmentMediaVariants: (props?: ({
23
- variant?: "image" | "icon" | null | undefined;
23
+ variant?: "icon" | "image" | null | undefined;
24
24
  } & import("class-variance-authority/types").ClassProp) | undefined) => string;
25
25
  declare function AttachmentMedia({
26
26
  className,
@@ -20,7 +20,7 @@ declare function Attachment({
20
20
  state?: 'idle' | 'uploading' | 'processing' | 'error' | 'done';
21
21
  }): import("react/jsx-runtime").JSX.Element;
22
22
  declare const attachmentMediaVariants: (props?: ({
23
- variant?: "image" | "icon" | null | undefined;
23
+ variant?: "icon" | "image" | null | undefined;
24
24
  } & import("class-variance-authority/types").ClassProp) | undefined) => string;
25
25
  declare function AttachmentMedia({
26
26
  className,
@@ -31,7 +31,7 @@ const Avatar = react.forwardRef(({ name, src, initials, icon, size = "md", shape
31
31
  "aria-label": name,
32
32
  "data-style": styleVariant,
33
33
  "data-accent-color": require_lib_accent_colors.accentByColor[color],
34
- className: (0, cnfast.cn)("inline-flex shrink-0 items-center justify-center overflow-hidden align-middle font-semibold select-none", sizeClasses[size], shape === "circle" ? "rounded-full" : squareRadiusClasses[size], "bg-(--spark-style-bg,var(--color-base-accent-soft)) text-(--spark-style-fg,var(--spark-a12))", className),
34
+ className: (0, cnfast.cn)("inline-flex shrink-0 items-center justify-center overflow-hidden align-middle font-semibold select-none", sizeClasses[size], shape === "circle" ? "rounded-full" : squareRadiusClasses[size], "bg-(--spark-style-bg,var(--color-base-accent-soft)) text-(--spark-style-fg,var(--color-primary-foreground))", className),
35
35
  ref,
36
36
  ...props,
37
37
  children: [src ? /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_base_ui_react_avatar.Avatar.Image, {
@@ -1 +1 @@
1
- {"version":3,"file":"avatar.cjs","names":["React","AvatarPrimitive","accentByColor"],"sources":["../../src/components/avatar.tsx"],"sourcesContent":["import { Avatar as AvatarPrimitive } from '@base-ui/react/avatar'\nimport * as React from 'react'\nimport { accentByColor } from '../lib/accent-colors'\nimport type { SparkAccentColor } from '../lib/accent-colors'\nimport type { SparkStyle } from '../lib/theme-types'\nimport { cn } from '../utils/cn'\n\ntype AvatarSize = 'sm' | 'md' | 'lg' | 'xl'\ntype AvatarShape = 'circle' | 'square'\n\ninterface AvatarProps extends React.HTMLAttributes<HTMLSpanElement> {\n name: string\n src?: string\n initials?: string\n icon?: React.ReactNode\n size?: AvatarSize\n shape?: AvatarShape\n styleVariant?: SparkStyle\n color?: SparkAccentColor\n imgProps?: Omit<AvatarPrimitive.Image.Props, 'src'>\n}\n\nconst sizeClasses: Record<AvatarSize, string> = {\n sm: 'size-8 text-xs',\n md: 'size-10 text-sm',\n lg: 'size-14 text-lg',\n xl: 'size-20 text-2xl',\n}\n\n// One token lower than the spec's literal sm→lg/md→xl/lg→2xl/xl→2xl mapping:\n// at the default (medium) theme radius factor, rounded-2xl on a 56px `lg` box\n// is a 24px radius (0.86 of the half-width) — reads as a circle, not a square.\nconst squareRadiusClasses: Record<AvatarSize, string> = {\n sm: 'rounded-md',\n md: 'rounded-lg',\n lg: 'rounded-xl',\n xl: 'rounded-2xl',\n}\n\nfunction avatarInitials(name: string): string {\n return name\n .split(' ')\n .map((part) => part.at(0))\n .filter(Boolean)\n .slice(0, 2)\n .join('')\n .toUpperCase()\n}\n\nconst Avatar = React.forwardRef<HTMLSpanElement, AvatarProps>(\n (\n {\n name,\n src,\n initials,\n icon,\n size = 'md',\n shape = 'circle',\n styleVariant = 'soft',\n color = 'accent',\n imgProps,\n className,\n ...props\n },\n ref,\n ) => {\n const resolvedInitials = initials ?? avatarInitials(name)\n\n return (\n <AvatarPrimitive.Root\n data-slot=\"avatar\"\n role=\"img\"\n aria-label={name}\n data-style={styleVariant}\n data-accent-color={accentByColor[color]}\n className={cn(\n 'inline-flex shrink-0 items-center justify-center overflow-hidden align-middle font-semibold select-none',\n sizeClasses[size],\n shape === 'circle' ? 'rounded-full' : squareRadiusClasses[size],\n 'bg-(--spark-style-bg,var(--color-base-accent-soft)) text-(--spark-style-fg,var(--spark-a12))',\n className,\n )}\n ref={ref}\n {...props}\n >\n {src ? (\n <AvatarPrimitive.Image\n {...imgProps}\n data-slot=\"avatar-image\"\n src={src}\n alt=\"\"\n className=\"size-full object-cover\"\n />\n ) : null}\n <AvatarPrimitive.Fallback\n data-slot=\"avatar-fallback\"\n aria-hidden\n className=\"flex size-full items-center justify-center\"\n >\n {resolvedInitials || icon}\n </AvatarPrimitive.Fallback>\n </AvatarPrimitive.Root>\n )\n },\n)\n\nAvatar.displayName = 'Avatar'\n\nexport { Avatar, avatarInitials }\nexport type { AvatarProps, AvatarSize, AvatarShape }\n"],"mappings":";;;;;;;;;;AAsBA,MAAM,cAA0C;CAC9C,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;AACN;AAKA,MAAM,sBAAkD;CACtD,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;AACN;AAEA,SAAS,eAAe,MAAsB;CAC5C,OAAO,KACJ,MAAM,GAAG,EACT,KAAK,SAAS,KAAK,GAAG,CAAC,CAAC,EACxB,OAAO,OAAO,EACd,MAAM,GAAG,CAAC,EACV,KAAK,EAAE,EACP,YAAY;AACjB;AAEA,MAAM,SAASA,MAAM,YAEjB,EACE,MACA,KACA,UACA,MACA,OAAO,MACP,QAAQ,UACR,eAAe,QACf,QAAQ,UACR,UACA,WACA,GAAG,SAEL,QACG;CACH,MAAM,mBAAmB,YAAY,eAAe,IAAI;CAExD,OACE,iBAAA,GAAA,kBAAA,MAACC,sBAAAA,OAAgB,MAAjB;EACE,aAAU;EACV,MAAK;EACL,cAAY;EACZ,cAAY;EACZ,qBAAmBC,0BAAAA,cAAc;EACjC,YAAA,GAAA,OAAA,IACE,2GACA,YAAY,OACZ,UAAU,WAAW,iBAAiB,oBAAoB,OAC1D,gGACA,SACF;EACK;EACL,GAAI;YAdN,CAgBG,MACC,iBAAA,GAAA,kBAAA,KAACD,sBAAAA,OAAgB,OAAjB;GACE,GAAI;GACJ,aAAU;GACL;GACL,KAAI;GACJ,WAAU;EACX,CAAA,IACC,MACJ,iBAAA,GAAA,kBAAA,KAACA,sBAAAA,OAAgB,UAAjB;GACE,aAAU;GACV,eAAA;GACA,WAAU;aAET,oBAAoB;EACG,CAAA,CACN;;AAE1B,CACF;AAEA,OAAO,cAAc"}
1
+ {"version":3,"file":"avatar.cjs","names":["React","AvatarPrimitive","accentByColor"],"sources":["../../src/components/avatar.tsx"],"sourcesContent":["import { Avatar as AvatarPrimitive } from '@base-ui/react/avatar'\nimport * as React from 'react'\nimport { accentByColor } from '../lib/accent-colors'\nimport type { SparkAccentColor } from '../lib/accent-colors'\nimport type { SparkStyle } from '../lib/theme-types'\nimport { cn } from '../utils/cn'\n\ntype AvatarSize = 'sm' | 'md' | 'lg' | 'xl'\ntype AvatarShape = 'circle' | 'square'\n\ninterface AvatarProps extends React.HTMLAttributes<HTMLSpanElement> {\n name: string\n src?: string\n initials?: string\n icon?: React.ReactNode\n size?: AvatarSize\n shape?: AvatarShape\n styleVariant?: SparkStyle\n color?: SparkAccentColor\n imgProps?: Omit<AvatarPrimitive.Image.Props, 'src'>\n}\n\nconst sizeClasses: Record<AvatarSize, string> = {\n sm: 'size-8 text-xs',\n md: 'size-10 text-sm',\n lg: 'size-14 text-lg',\n xl: 'size-20 text-2xl',\n}\n\n// One token lower than the spec's literal sm→lg/md→xl/lg→2xl/xl→2xl mapping:\n// at the default (medium) theme radius factor, rounded-2xl on a 56px `lg` box\n// is a 24px radius (0.86 of the half-width) — reads as a circle, not a square.\nconst squareRadiusClasses: Record<AvatarSize, string> = {\n sm: 'rounded-md',\n md: 'rounded-lg',\n lg: 'rounded-xl',\n xl: 'rounded-2xl',\n}\n\nfunction avatarInitials(name: string): string {\n return name\n .split(' ')\n .map((part) => part.at(0))\n .filter(Boolean)\n .slice(0, 2)\n .join('')\n .toUpperCase()\n}\n\nconst Avatar = React.forwardRef<HTMLSpanElement, AvatarProps>(\n (\n {\n name,\n src,\n initials,\n icon,\n size = 'md',\n shape = 'circle',\n styleVariant = 'soft',\n color = 'accent',\n imgProps,\n className,\n ...props\n },\n ref,\n ) => {\n const resolvedInitials = initials ?? avatarInitials(name)\n\n return (\n <AvatarPrimitive.Root\n data-slot=\"avatar\"\n role=\"img\"\n aria-label={name}\n data-style={styleVariant}\n data-accent-color={accentByColor[color]}\n className={cn(\n 'inline-flex shrink-0 items-center justify-center overflow-hidden align-middle font-semibold select-none',\n sizeClasses[size],\n shape === 'circle' ? 'rounded-full' : squareRadiusClasses[size],\n 'bg-(--spark-style-bg,var(--color-base-accent-soft)) text-(--spark-style-fg,var(--color-primary-foreground))',\n className,\n )}\n ref={ref}\n {...props}\n >\n {src ? (\n <AvatarPrimitive.Image\n {...imgProps}\n data-slot=\"avatar-image\"\n src={src}\n alt=\"\"\n className=\"size-full object-cover\"\n />\n ) : null}\n <AvatarPrimitive.Fallback\n data-slot=\"avatar-fallback\"\n aria-hidden\n className=\"flex size-full items-center justify-center\"\n >\n {resolvedInitials || icon}\n </AvatarPrimitive.Fallback>\n </AvatarPrimitive.Root>\n )\n },\n)\n\nAvatar.displayName = 'Avatar'\n\nexport { Avatar, avatarInitials }\nexport type { AvatarProps, AvatarSize, AvatarShape }\n"],"mappings":";;;;;;;;;;AAsBA,MAAM,cAA0C;CAC9C,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;AACN;AAKA,MAAM,sBAAkD;CACtD,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;AACN;AAEA,SAAS,eAAe,MAAsB;CAC5C,OAAO,KACJ,MAAM,GAAG,EACT,KAAK,SAAS,KAAK,GAAG,CAAC,CAAC,EACxB,OAAO,OAAO,EACd,MAAM,GAAG,CAAC,EACV,KAAK,EAAE,EACP,YAAY;AACjB;AAEA,MAAM,SAASA,MAAM,YAEjB,EACE,MACA,KACA,UACA,MACA,OAAO,MACP,QAAQ,UACR,eAAe,QACf,QAAQ,UACR,UACA,WACA,GAAG,SAEL,QACG;CACH,MAAM,mBAAmB,YAAY,eAAe,IAAI;CAExD,OACE,iBAAA,GAAA,kBAAA,MAACC,sBAAAA,OAAgB,MAAjB;EACE,aAAU;EACV,MAAK;EACL,cAAY;EACZ,cAAY;EACZ,qBAAmBC,0BAAAA,cAAc;EACjC,YAAA,GAAA,OAAA,IACE,2GACA,YAAY,OACZ,UAAU,WAAW,iBAAiB,oBAAoB,OAC1D,+GACA,SACF;EACK;EACL,GAAI;YAdN,CAgBG,MACC,iBAAA,GAAA,kBAAA,KAACD,sBAAAA,OAAgB,OAAjB;GACE,GAAI;GACJ,aAAU;GACL;GACL,KAAI;GACJ,WAAU;EACX,CAAA,IACC,MACJ,iBAAA,GAAA,kBAAA,KAACA,sBAAAA,OAAgB,UAAjB;GACE,aAAU;GACV,eAAA;GACA,WAAU;aAET,oBAAoB;EACG,CAAA,CACN;;AAE1B,CACF;AAEA,OAAO,cAAc"}
@@ -28,7 +28,7 @@ const Avatar = React$1.forwardRef(({ name, src, initials, icon, size = "md", sha
28
28
  "aria-label": name,
29
29
  "data-style": styleVariant,
30
30
  "data-accent-color": accentByColor[color],
31
- className: cn("inline-flex shrink-0 items-center justify-center overflow-hidden align-middle font-semibold select-none", sizeClasses[size], shape === "circle" ? "rounded-full" : squareRadiusClasses[size], "bg-(--spark-style-bg,var(--color-base-accent-soft)) text-(--spark-style-fg,var(--spark-a12))", className),
31
+ className: cn("inline-flex shrink-0 items-center justify-center overflow-hidden align-middle font-semibold select-none", sizeClasses[size], shape === "circle" ? "rounded-full" : squareRadiusClasses[size], "bg-(--spark-style-bg,var(--color-base-accent-soft)) text-(--spark-style-fg,var(--color-primary-foreground))", className),
32
32
  ref,
33
33
  ...props,
34
34
  children: [src ? /* @__PURE__ */ jsx(Avatar$1.Image, {
@@ -1 +1 @@
1
- {"version":3,"file":"avatar.js","names":["React","AvatarPrimitive"],"sources":["../../src/components/avatar.tsx"],"sourcesContent":["import { Avatar as AvatarPrimitive } from '@base-ui/react/avatar'\nimport * as React from 'react'\nimport { accentByColor } from '../lib/accent-colors'\nimport type { SparkAccentColor } from '../lib/accent-colors'\nimport type { SparkStyle } from '../lib/theme-types'\nimport { cn } from '../utils/cn'\n\ntype AvatarSize = 'sm' | 'md' | 'lg' | 'xl'\ntype AvatarShape = 'circle' | 'square'\n\ninterface AvatarProps extends React.HTMLAttributes<HTMLSpanElement> {\n name: string\n src?: string\n initials?: string\n icon?: React.ReactNode\n size?: AvatarSize\n shape?: AvatarShape\n styleVariant?: SparkStyle\n color?: SparkAccentColor\n imgProps?: Omit<AvatarPrimitive.Image.Props, 'src'>\n}\n\nconst sizeClasses: Record<AvatarSize, string> = {\n sm: 'size-8 text-xs',\n md: 'size-10 text-sm',\n lg: 'size-14 text-lg',\n xl: 'size-20 text-2xl',\n}\n\n// One token lower than the spec's literal sm→lg/md→xl/lg→2xl/xl→2xl mapping:\n// at the default (medium) theme radius factor, rounded-2xl on a 56px `lg` box\n// is a 24px radius (0.86 of the half-width) — reads as a circle, not a square.\nconst squareRadiusClasses: Record<AvatarSize, string> = {\n sm: 'rounded-md',\n md: 'rounded-lg',\n lg: 'rounded-xl',\n xl: 'rounded-2xl',\n}\n\nfunction avatarInitials(name: string): string {\n return name\n .split(' ')\n .map((part) => part.at(0))\n .filter(Boolean)\n .slice(0, 2)\n .join('')\n .toUpperCase()\n}\n\nconst Avatar = React.forwardRef<HTMLSpanElement, AvatarProps>(\n (\n {\n name,\n src,\n initials,\n icon,\n size = 'md',\n shape = 'circle',\n styleVariant = 'soft',\n color = 'accent',\n imgProps,\n className,\n ...props\n },\n ref,\n ) => {\n const resolvedInitials = initials ?? avatarInitials(name)\n\n return (\n <AvatarPrimitive.Root\n data-slot=\"avatar\"\n role=\"img\"\n aria-label={name}\n data-style={styleVariant}\n data-accent-color={accentByColor[color]}\n className={cn(\n 'inline-flex shrink-0 items-center justify-center overflow-hidden align-middle font-semibold select-none',\n sizeClasses[size],\n shape === 'circle' ? 'rounded-full' : squareRadiusClasses[size],\n 'bg-(--spark-style-bg,var(--color-base-accent-soft)) text-(--spark-style-fg,var(--spark-a12))',\n className,\n )}\n ref={ref}\n {...props}\n >\n {src ? (\n <AvatarPrimitive.Image\n {...imgProps}\n data-slot=\"avatar-image\"\n src={src}\n alt=\"\"\n className=\"size-full object-cover\"\n />\n ) : null}\n <AvatarPrimitive.Fallback\n data-slot=\"avatar-fallback\"\n aria-hidden\n className=\"flex size-full items-center justify-center\"\n >\n {resolvedInitials || icon}\n </AvatarPrimitive.Fallback>\n </AvatarPrimitive.Root>\n )\n },\n)\n\nAvatar.displayName = 'Avatar'\n\nexport { Avatar, avatarInitials }\nexport type { AvatarProps, AvatarSize, AvatarShape }\n"],"mappings":";;;;;;;AAsBA,MAAM,cAA0C;CAC9C,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;AACN;AAKA,MAAM,sBAAkD;CACtD,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;AACN;AAEA,SAAS,eAAe,MAAsB;CAC5C,OAAO,KACJ,MAAM,GAAG,EACT,KAAK,SAAS,KAAK,GAAG,CAAC,CAAC,EACxB,OAAO,OAAO,EACd,MAAM,GAAG,CAAC,EACV,KAAK,EAAE,EACP,YAAY;AACjB;AAEA,MAAM,SAASA,QAAM,YAEjB,EACE,MACA,KACA,UACA,MACA,OAAO,MACP,QAAQ,UACR,eAAe,QACf,QAAQ,UACR,UACA,WACA,GAAG,SAEL,QACG;CACH,MAAM,mBAAmB,YAAY,eAAe,IAAI;CAExD,OACE,qBAACC,SAAgB,MAAjB;EACE,aAAU;EACV,MAAK;EACL,cAAY;EACZ,cAAY;EACZ,qBAAmB,cAAc;EACjC,WAAW,GACT,2GACA,YAAY,OACZ,UAAU,WAAW,iBAAiB,oBAAoB,OAC1D,gGACA,SACF;EACK;EACL,GAAI;YAdN,CAgBG,MACC,oBAACA,SAAgB,OAAjB;GACE,GAAI;GACJ,aAAU;GACL;GACL,KAAI;GACJ,WAAU;EACX,CAAA,IACC,MACJ,oBAACA,SAAgB,UAAjB;GACE,aAAU;GACV,eAAA;GACA,WAAU;aAET,oBAAoB;EACG,CAAA,CACN;;AAE1B,CACF;AAEA,OAAO,cAAc"}
1
+ {"version":3,"file":"avatar.js","names":["React","AvatarPrimitive"],"sources":["../../src/components/avatar.tsx"],"sourcesContent":["import { Avatar as AvatarPrimitive } from '@base-ui/react/avatar'\nimport * as React from 'react'\nimport { accentByColor } from '../lib/accent-colors'\nimport type { SparkAccentColor } from '../lib/accent-colors'\nimport type { SparkStyle } from '../lib/theme-types'\nimport { cn } from '../utils/cn'\n\ntype AvatarSize = 'sm' | 'md' | 'lg' | 'xl'\ntype AvatarShape = 'circle' | 'square'\n\ninterface AvatarProps extends React.HTMLAttributes<HTMLSpanElement> {\n name: string\n src?: string\n initials?: string\n icon?: React.ReactNode\n size?: AvatarSize\n shape?: AvatarShape\n styleVariant?: SparkStyle\n color?: SparkAccentColor\n imgProps?: Omit<AvatarPrimitive.Image.Props, 'src'>\n}\n\nconst sizeClasses: Record<AvatarSize, string> = {\n sm: 'size-8 text-xs',\n md: 'size-10 text-sm',\n lg: 'size-14 text-lg',\n xl: 'size-20 text-2xl',\n}\n\n// One token lower than the spec's literal sm→lg/md→xl/lg→2xl/xl→2xl mapping:\n// at the default (medium) theme radius factor, rounded-2xl on a 56px `lg` box\n// is a 24px radius (0.86 of the half-width) — reads as a circle, not a square.\nconst squareRadiusClasses: Record<AvatarSize, string> = {\n sm: 'rounded-md',\n md: 'rounded-lg',\n lg: 'rounded-xl',\n xl: 'rounded-2xl',\n}\n\nfunction avatarInitials(name: string): string {\n return name\n .split(' ')\n .map((part) => part.at(0))\n .filter(Boolean)\n .slice(0, 2)\n .join('')\n .toUpperCase()\n}\n\nconst Avatar = React.forwardRef<HTMLSpanElement, AvatarProps>(\n (\n {\n name,\n src,\n initials,\n icon,\n size = 'md',\n shape = 'circle',\n styleVariant = 'soft',\n color = 'accent',\n imgProps,\n className,\n ...props\n },\n ref,\n ) => {\n const resolvedInitials = initials ?? avatarInitials(name)\n\n return (\n <AvatarPrimitive.Root\n data-slot=\"avatar\"\n role=\"img\"\n aria-label={name}\n data-style={styleVariant}\n data-accent-color={accentByColor[color]}\n className={cn(\n 'inline-flex shrink-0 items-center justify-center overflow-hidden align-middle font-semibold select-none',\n sizeClasses[size],\n shape === 'circle' ? 'rounded-full' : squareRadiusClasses[size],\n 'bg-(--spark-style-bg,var(--color-base-accent-soft)) text-(--spark-style-fg,var(--color-primary-foreground))',\n className,\n )}\n ref={ref}\n {...props}\n >\n {src ? (\n <AvatarPrimitive.Image\n {...imgProps}\n data-slot=\"avatar-image\"\n src={src}\n alt=\"\"\n className=\"size-full object-cover\"\n />\n ) : null}\n <AvatarPrimitive.Fallback\n data-slot=\"avatar-fallback\"\n aria-hidden\n className=\"flex size-full items-center justify-center\"\n >\n {resolvedInitials || icon}\n </AvatarPrimitive.Fallback>\n </AvatarPrimitive.Root>\n )\n },\n)\n\nAvatar.displayName = 'Avatar'\n\nexport { Avatar, avatarInitials }\nexport type { AvatarProps, AvatarSize, AvatarShape }\n"],"mappings":";;;;;;;AAsBA,MAAM,cAA0C;CAC9C,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;AACN;AAKA,MAAM,sBAAkD;CACtD,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;AACN;AAEA,SAAS,eAAe,MAAsB;CAC5C,OAAO,KACJ,MAAM,GAAG,EACT,KAAK,SAAS,KAAK,GAAG,CAAC,CAAC,EACxB,OAAO,OAAO,EACd,MAAM,GAAG,CAAC,EACV,KAAK,EAAE,EACP,YAAY;AACjB;AAEA,MAAM,SAASA,QAAM,YAEjB,EACE,MACA,KACA,UACA,MACA,OAAO,MACP,QAAQ,UACR,eAAe,QACf,QAAQ,UACR,UACA,WACA,GAAG,SAEL,QACG;CACH,MAAM,mBAAmB,YAAY,eAAe,IAAI;CAExD,OACE,qBAACC,SAAgB,MAAjB;EACE,aAAU;EACV,MAAK;EACL,cAAY;EACZ,cAAY;EACZ,qBAAmB,cAAc;EACjC,WAAW,GACT,2GACA,YAAY,OACZ,UAAU,WAAW,iBAAiB,oBAAoB,OAC1D,+GACA,SACF;EACK;EACL,GAAI;YAdN,CAgBG,MACC,oBAACA,SAAgB,OAAjB;GACE,GAAI;GACJ,aAAU;GACL;GACL,KAAI;GACJ,WAAU;EACX,CAAA,IACC,MACJ,oBAACA,SAAgB,UAAjB;GACE,aAAU;GACV,eAAA;GACA,WAAU;aAET,oBAAoB;EACG,CAAA,CACN;;AAE1B,CACF;AAEA,OAAO,cAAc"}
@@ -12,7 +12,7 @@ const Badge = react.forwardRef(({ className, children, styleVariant, color, ...p
12
12
  "data-slot": "badge",
13
13
  "data-style": styleVariant !== void 0 || color !== void 0 ? styleVariant ?? "soft" : void 0,
14
14
  "data-accent-color": color ? require_lib_accent_colors.accentByColor[color] : void 0,
15
- className: (0, cnfast.cn)("inline-flex h-5 min-w-5 items-center justify-center rounded-md px-1.5 text-center text-xs font-normal tabular-nums [--spark-icon-size:0.75rem]", "border-(length:--spark-style-border-width,1px) border-(--spark-style-border,transparent)", "bg-(--spark-style-bg,var(--neutral-a3)) text-(--spark-style-fg,var(--spark-badge-fg,var(--neutral-a11)))", className),
15
+ className: (0, cnfast.cn)("inline-flex h-5 min-w-5 items-center justify-center rounded-md px-1.5 text-center text-xs font-normal tabular-nums [--spark-icon-size:0.75rem]", "border-(length:--spark-style-border-width,1px) border-(--spark-style-border,transparent)", "bg-(--spark-style-bg,var(--color-base-gray-soft)) text-(--spark-style-fg,var(--spark-badge-fg,var(--color-gray-high-contrast)))", className),
16
16
  ref,
17
17
  ...props,
18
18
  children
@@ -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-md px-1.5 text-center text-xs font-normal tabular-nums [--spark-icon-size:0.75rem]',\n 'border-(length:--spark-style-border-width,1px) border-(--spark-style-border,transparent)',\n 'bg-(--spark-style-bg,var(--neutral-a3)) text-(--spark-style-fg,var(--spark-badge-fg,var(--neutral-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;CAE/D,OACE,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,kJACA,4FACA,4GACA,SACF;EACK;EACL,GAAI;EAEH;CACG,CAAA;AAEV,CACF;AAEA,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\n/** Preferred: `primary` | `neutral` | `success` | `warning` | `error`. `accent` / `danger` stay as aliases. */\nexport type SparkBadgeColor =\n | 'primary'\n | 'accent'\n | 'neutral'\n | 'success'\n | 'warning'\n | 'error'\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-md px-1.5 text-center text-xs font-normal tabular-nums [--spark-icon-size:0.75rem]',\n 'border-(length:--spark-style-border-width,1px) border-(--spark-style-border,transparent)',\n 'bg-(--spark-style-bg,var(--color-base-gray-soft)) text-(--spark-style-fg,var(--spark-badge-fg,var(--color-gray-high-contrast)))',\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":";;;;;;;;;AAqBA,MAAM,QAAQA,MAAM,YACjB,EAAE,WAAW,UAAU,cAAc,OAAO,GAAG,SAAS,QAAQ;CAE/D,OACE,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,kJACA,4FACA,mIACA,SACF;EACK;EACL,GAAI;EAEH;CACG,CAAA;AAEV,CACF;AAEA,MAAM,cAAc"}
@@ -4,7 +4,8 @@ import { f as SparkStyle } from "../theme-types-Bn5E15-P.cjs";
4
4
  import * as React$1 from "react";
5
5
 
6
6
  //#region src/components/badge.d.ts
7
- type SparkBadgeColor = 'accent' | 'neutral' | 'success' | 'warning' | 'danger';
7
+ /** Preferred: `primary` | `neutral` | `success` | `warning` | `error`. `accent` / `danger` stay as aliases. */
8
+ type SparkBadgeColor = 'primary' | 'accent' | 'neutral' | 'success' | 'warning' | 'error' | 'danger';
8
9
  interface BadgeProps extends React$1.HTMLAttributes<HTMLSpanElement> {
9
10
  styleVariant?: SparkStyle;
10
11
  color?: SparkBadgeColor;
@@ -4,7 +4,8 @@ import { f as SparkStyle } from "../theme-types-Bn5E15-P.js";
4
4
  import * as React$1 from "react";
5
5
 
6
6
  //#region src/components/badge.d.ts
7
- type SparkBadgeColor = 'accent' | 'neutral' | 'success' | 'warning' | 'danger';
7
+ /** Preferred: `primary` | `neutral` | `success` | `warning` | `error`. `accent` / `danger` stay as aliases. */
8
+ type SparkBadgeColor = 'primary' | 'accent' | 'neutral' | 'success' | 'warning' | 'error' | 'danger';
8
9
  interface BadgeProps extends React$1.HTMLAttributes<HTMLSpanElement> {
9
10
  styleVariant?: SparkStyle;
10
11
  color?: SparkBadgeColor;
@@ -9,7 +9,7 @@ const Badge = React$1.forwardRef(({ className, children, styleVariant, color, ..
9
9
  "data-slot": "badge",
10
10
  "data-style": styleVariant !== void 0 || color !== void 0 ? styleVariant ?? "soft" : void 0,
11
11
  "data-accent-color": color ? accentByColor[color] : void 0,
12
- className: cn("inline-flex h-5 min-w-5 items-center justify-center rounded-md px-1.5 text-center text-xs font-normal tabular-nums [--spark-icon-size:0.75rem]", "border-(length:--spark-style-border-width,1px) border-(--spark-style-border,transparent)", "bg-(--spark-style-bg,var(--neutral-a3)) text-(--spark-style-fg,var(--spark-badge-fg,var(--neutral-a11)))", className),
12
+ className: cn("inline-flex h-5 min-w-5 items-center justify-center rounded-md px-1.5 text-center text-xs font-normal tabular-nums [--spark-icon-size:0.75rem]", "border-(length:--spark-style-border-width,1px) border-(--spark-style-border,transparent)", "bg-(--spark-style-bg,var(--color-base-gray-soft)) text-(--spark-style-fg,var(--spark-badge-fg,var(--color-gray-high-contrast)))", className),
13
13
  ref,
14
14
  ...props,
15
15
  children
@@ -1 +1 @@
1
- {"version":3,"file":"badge.js","names":["React"],"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-md px-1.5 text-center text-xs font-normal tabular-nums [--spark-icon-size:0.75rem]',\n 'border-(length:--spark-style-border-width,1px) border-(--spark-style-border,transparent)',\n 'bg-(--spark-style-bg,var(--neutral-a3)) text-(--spark-style-fg,var(--spark-badge-fg,var(--neutral-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,QAAM,YACjB,EAAE,WAAW,UAAU,cAAc,OAAO,GAAG,SAAS,QAAQ;CAE/D,OACE,oBAAC,QAAD;EACE,aAAU;EACV,cAJY,iBAAiB,KAAA,KAAa,UAAU,KAAA,IAI7B,gBAAgB,SAAU,KAAA;EACjD,qBAAmB,QAAQ,cAAc,SAAS,KAAA;EAClD,WAAW,GACT,kJACA,4FACA,4GACA,SACF;EACK;EACL,GAAI;EAEH;CACG,CAAA;AAEV,CACF;AAEA,MAAM,cAAc"}
1
+ {"version":3,"file":"badge.js","names":["React"],"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\n/** Preferred: `primary` | `neutral` | `success` | `warning` | `error`. `accent` / `danger` stay as aliases. */\nexport type SparkBadgeColor =\n | 'primary'\n | 'accent'\n | 'neutral'\n | 'success'\n | 'warning'\n | 'error'\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-md px-1.5 text-center text-xs font-normal tabular-nums [--spark-icon-size:0.75rem]',\n 'border-(length:--spark-style-border-width,1px) border-(--spark-style-border,transparent)',\n 'bg-(--spark-style-bg,var(--color-base-gray-soft)) text-(--spark-style-fg,var(--spark-badge-fg,var(--color-gray-high-contrast)))',\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":";;;;;;AAqBA,MAAM,QAAQA,QAAM,YACjB,EAAE,WAAW,UAAU,cAAc,OAAO,GAAG,SAAS,QAAQ;CAE/D,OACE,oBAAC,QAAD;EACE,aAAU;EACV,cAJY,iBAAiB,KAAA,KAAa,UAAU,KAAA,IAI7B,gBAAgB,SAAU,KAAA;EACjD,qBAAmB,QAAQ,cAAc,SAAS,KAAA;EAClD,WAAW,GACT,kJACA,4FACA,mIACA,SACF;EACK;EACL,GAAI;EAEH;CACG,CAAA;AAEV,CACF;AAEA,MAAM,cAAc"}
@@ -3,8 +3,8 @@ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
3
  const require_components_bar_chart = require("./bar-chart.cjs");
4
4
  const require_components_number_flow = require("./number-flow.cjs");
5
5
  let react_jsx_runtime = require("react/jsx-runtime");
6
- //#region src/components/energy-bar-chart.tsx
7
- function EnergyBarChart({ totalSuffix, totalFormat, className, ...rest }) {
6
+ //#region src/components/bar-chart-with-total.tsx
7
+ function BarChartWithTotal({ totalSuffix, totalFormat, className, ...rest }) {
8
8
  return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_components_bar_chart.BarChart, {
9
9
  ...rest,
10
10
  className,
@@ -18,6 +18,6 @@ function EnergyBarChart({ totalSuffix, totalFormat, className, ...rest }) {
18
18
  });
19
19
  }
20
20
  //#endregion
21
- exports.EnergyBarChart = EnergyBarChart;
21
+ exports.BarChartWithTotal = BarChartWithTotal;
22
22
 
23
- //# sourceMappingURL=energy-bar-chart.cjs.map
23
+ //# sourceMappingURL=bar-chart-with-total.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bar-chart-with-total.cjs","names":["BarChart","NumberFlow"],"sources":["../../src/components/bar-chart-with-total.tsx"],"sourcesContent":["import {\n BarChart,\n type BarChartCategory,\n type BarChartLineSeries,\n type BarChartProps,\n type BarChartSeries,\n} from './bar-chart'\nimport NumberFlow, { type Format } from './number-flow'\n\nexport type { BarChartCategory, BarChartLineSeries, BarChartSeries }\n\ntype BarChartWithTotalProps<TDatum> = Omit<\n BarChartProps<TDatum>,\n 'renderTotal' | 'formatTotal'\n> & {\n totalSuffix?: string\n totalFormat?: Format\n}\n\nexport function BarChartWithTotal<TDatum>({\n totalSuffix,\n totalFormat,\n className,\n ...rest\n}: BarChartWithTotalProps<TDatum>): React.ReactElement {\n return (\n <BarChart<TDatum>\n {...rest}\n className={className}\n renderTotal={(value, animated) => (\n <NumberFlow\n value={value}\n animated={animated}\n {...(totalSuffix !== undefined && { suffix: totalSuffix })}\n {...(totalFormat !== undefined && { format: totalFormat })}\n className=\"text-base font-bold text-gray tabular-nums\"\n />\n )}\n />\n )\n}\n"],"mappings":";;;;;;AAmBA,SAAgB,kBAA0B,EACxC,aACA,aACA,WACA,GAAG,QACkD;CACrD,OACE,iBAAA,GAAA,kBAAA,KAACA,6BAAAA,UAAD;EACE,GAAI;EACO;EACX,cAAc,OAAO,aACnB,iBAAA,GAAA,kBAAA,KAACC,gCAAD;GACS;GACG;GACV,GAAK,gBAAgB,KAAA,KAAa,EAAE,QAAQ,YAAY;GACxD,GAAK,gBAAgB,KAAA,KAAa,EAAE,QAAQ,YAAY;GACxD,WAAU;EACX,CAAA;CAEJ,CAAA;AAEL"}
@@ -0,0 +1,19 @@
1
+ "use client";
2
+
3
+ import { BarChartCategory, BarChartLineSeries, BarChartProps, BarChartSeries } from "./bar-chart.cjs";
4
+ import { Format } from "./number-flow.cjs";
5
+
6
+ //#region src/components/bar-chart-with-total.d.ts
7
+ type BarChartWithTotalProps<TDatum> = Omit<BarChartProps<TDatum>, 'renderTotal' | 'formatTotal'> & {
8
+ totalSuffix?: string;
9
+ totalFormat?: Format;
10
+ };
11
+ declare function BarChartWithTotal<TDatum>({
12
+ totalSuffix,
13
+ totalFormat,
14
+ className,
15
+ ...rest
16
+ }: BarChartWithTotalProps<TDatum>): React.ReactElement;
17
+ //#endregion
18
+ export { type BarChartCategory, type BarChartLineSeries, type BarChartSeries, BarChartWithTotal };
19
+ //# sourceMappingURL=bar-chart-with-total.d.cts.map
@@ -0,0 +1,19 @@
1
+ "use client";
2
+
3
+ import { BarChartCategory, BarChartLineSeries, BarChartProps, BarChartSeries } from "./bar-chart.js";
4
+ import { Format } from "./number-flow.js";
5
+
6
+ //#region src/components/bar-chart-with-total.d.ts
7
+ type BarChartWithTotalProps<TDatum> = Omit<BarChartProps<TDatum>, 'renderTotal' | 'formatTotal'> & {
8
+ totalSuffix?: string;
9
+ totalFormat?: Format;
10
+ };
11
+ declare function BarChartWithTotal<TDatum>({
12
+ totalSuffix,
13
+ totalFormat,
14
+ className,
15
+ ...rest
16
+ }: BarChartWithTotalProps<TDatum>): React.ReactElement;
17
+ //#endregion
18
+ export { type BarChartCategory, type BarChartLineSeries, type BarChartSeries, BarChartWithTotal };
19
+ //# sourceMappingURL=bar-chart-with-total.d.ts.map
@@ -2,8 +2,8 @@
2
2
  import { BarChart } from "./bar-chart.js";
3
3
  import NumberFlow from "./number-flow.js";
4
4
  import { jsx } from "react/jsx-runtime";
5
- //#region src/components/energy-bar-chart.tsx
6
- function EnergyBarChart({ totalSuffix, totalFormat, className, ...rest }) {
5
+ //#region src/components/bar-chart-with-total.tsx
6
+ function BarChartWithTotal({ totalSuffix, totalFormat, className, ...rest }) {
7
7
  return /* @__PURE__ */ jsx(BarChart, {
8
8
  ...rest,
9
9
  className,
@@ -17,6 +17,6 @@ function EnergyBarChart({ totalSuffix, totalFormat, className, ...rest }) {
17
17
  });
18
18
  }
19
19
  //#endregion
20
- export { EnergyBarChart };
20
+ export { BarChartWithTotal };
21
21
 
22
- //# sourceMappingURL=energy-bar-chart.js.map
22
+ //# sourceMappingURL=bar-chart-with-total.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bar-chart-with-total.js","names":[],"sources":["../../src/components/bar-chart-with-total.tsx"],"sourcesContent":["import {\n BarChart,\n type BarChartCategory,\n type BarChartLineSeries,\n type BarChartProps,\n type BarChartSeries,\n} from './bar-chart'\nimport NumberFlow, { type Format } from './number-flow'\n\nexport type { BarChartCategory, BarChartLineSeries, BarChartSeries }\n\ntype BarChartWithTotalProps<TDatum> = Omit<\n BarChartProps<TDatum>,\n 'renderTotal' | 'formatTotal'\n> & {\n totalSuffix?: string\n totalFormat?: Format\n}\n\nexport function BarChartWithTotal<TDatum>({\n totalSuffix,\n totalFormat,\n className,\n ...rest\n}: BarChartWithTotalProps<TDatum>): React.ReactElement {\n return (\n <BarChart<TDatum>\n {...rest}\n className={className}\n renderTotal={(value, animated) => (\n <NumberFlow\n value={value}\n animated={animated}\n {...(totalSuffix !== undefined && { suffix: totalSuffix })}\n {...(totalFormat !== undefined && { format: totalFormat })}\n className=\"text-base font-bold text-gray tabular-nums\"\n />\n )}\n />\n )\n}\n"],"mappings":";;;;;AAmBA,SAAgB,kBAA0B,EACxC,aACA,aACA,WACA,GAAG,QACkD;CACrD,OACE,oBAAC,UAAD;EACE,GAAI;EACO;EACX,cAAc,OAAO,aACnB,oBAAC,YAAD;GACS;GACG;GACV,GAAK,gBAAgB,KAAA,KAAa,EAAE,QAAQ,YAAY;GACxD,GAAK,gBAAgB,KAAA,KAAa,EAAE,QAAQ,YAAY;GACxD,WAAU;EACX,CAAA;CAEJ,CAAA;AAEL"}
@@ -1,8 +1,8 @@
1
1
  "use client";
2
2
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
- const require_hooks_use_reduced_motion = require("../hooks/use-reduced-motion.cjs");
4
3
  const require_utils_format = require("../utils/format.cjs");
5
4
  const require_utils_chart_scale = require("../utils/chart-scale.cjs");
5
+ const require_hooks_use_reduced_motion = require("../hooks/use-reduced-motion.cjs");
6
6
  const require_components_chart = require("./chart.cjs");
7
7
  const require_components_series_legend = require("./series-legend.cjs");
8
8
  const require_components_typography = require("./typography.cjs");
@@ -1,8 +1,8 @@
1
1
  "use client";
2
- import { cn } from "../utils/cn.js";
3
- import { useReducedMotion } from "../hooks/use-reduced-motion.js";
4
2
  import { localeNumberFormat } from "../utils/format.js";
5
3
  import { buildYAxisScale, formatYAxisTick, measureYAxisGutter } from "../utils/chart-scale.js";
4
+ import { cn } from "../utils/cn.js";
5
+ import { useReducedMotion } from "../hooks/use-reduced-motion.js";
6
6
  import { ChartTooltipCard, clampTooltipPosition, useMeasuredSize } from "./chart.js";
7
7
  import { SeriesLegend } from "./series-legend.js";
8
8
  import { SectionTitle } from "./typography.js";
@@ -10,7 +10,7 @@ declare function BubbleGroup({
10
10
  ...props
11
11
  }: React$1.ComponentProps<'div'>): import("react/jsx-runtime").JSX.Element;
12
12
  declare const bubbleVariants: (props?: ({
13
- variant?: "ghost" | "default" | "outline" | "destructive" | "secondary" | "muted" | "tinted" | null | undefined;
13
+ variant?: "secondary" | "destructive" | "default" | "ghost" | "outline" | "muted" | "tinted" | null | undefined;
14
14
  } & import("class-variance-authority/types").ClassProp) | undefined) => string;
15
15
  declare function Bubble({
16
16
  variant,
@@ -10,7 +10,7 @@ declare function BubbleGroup({
10
10
  ...props
11
11
  }: React$1.ComponentProps<'div'>): import("react/jsx-runtime").JSX.Element;
12
12
  declare const bubbleVariants: (props?: ({
13
- variant?: "ghost" | "default" | "outline" | "destructive" | "secondary" | "muted" | "tinted" | null | undefined;
13
+ variant?: "secondary" | "destructive" | "default" | "ghost" | "outline" | "muted" | "tinted" | null | undefined;
14
14
  } & import("class-variance-authority/types").ClassProp) | undefined) => string;
15
15
  declare function Bubble({
16
16
  variant,
@@ -9,7 +9,7 @@ let react_jsx_runtime = require("react/jsx-runtime");
9
9
  let _base_ui_react_button = require("@base-ui/react/button");
10
10
  let cnfast = require("cnfast");
11
11
  //#region src/components/button-group.tsx
12
- const buttonGroupRecipe = "bg-(--spark-style-bg,var(--spark-9)) text-(--spark-style-fg,var(--spark-contrast)) shadow-[inset_0_0_0_var(--spark-style-border-width,1px)_var(--spark-style-border,transparent)]";
12
+ const buttonGroupRecipe = "bg-(--spark-style-bg,var(--color-primary)) text-(--spark-style-fg,var(--color-primary-foreground)) shadow-[inset_0_0_0_var(--spark-style-border-width,1px)_var(--spark-style-border,transparent)]";
13
13
  function buttonGroupSizeClasses(size) {
14
14
  return size === "small" ? "h-9 text-sm [&_svg:not([class*=size-])]:size-4" : "h-10 text-base [&_svg:not([class*=size-])]:size-5";
15
15
  }
@@ -36,7 +36,7 @@ const ButtonGroupButton = react.forwardRef(function ButtonGroupButton({ classNam
36
36
  "data-slot": "button-group-button",
37
37
  nativeButton: nativeButton ?? render === void 0,
38
38
  render,
39
- className: (0, cnfast.cn)("inline-flex cursor-pointer items-center gap-2 px-3 font-medium whitespace-nowrap", "transition-colors hover:bg-(--spark-style-bg-hover,var(--spark-10)) motion-reduce:transition-none", "focus-visible:inset-ring-2 focus-visible:outline-hidden", "disabled:pointer-events-none disabled:opacity-50 aria-disabled:pointer-events-none aria-disabled:opacity-50", "[&_svg]:pointer-events-none [&_svg]:shrink-0", className),
39
+ className: (0, cnfast.cn)("inline-flex cursor-pointer items-center gap-2 px-3 font-medium whitespace-nowrap", "transition-colors hover:bg-(--spark-style-bg-hover,var(--color-primary-hover)) motion-reduce:transition-none", "focus-visible:inset-ring-2 focus-visible:outline-hidden", "disabled:pointer-events-none disabled:opacity-50 aria-disabled:pointer-events-none aria-disabled:opacity-50", "[&_svg]:pointer-events-none [&_svg]:shrink-0", className),
40
40
  ref,
41
41
  ...props
42
42
  });
@@ -1 +1 @@
1
- {"version":3,"file":"button-group.cjs","names":["React","accentByColor","ButtonPrimitive"],"sources":["../../src/components/button-group.tsx"],"sourcesContent":["'use client'\n\nimport { Button as ButtonPrimitive } from '@base-ui/react/button'\nimport * as React from 'react'\nimport { accentByColor } from '../lib/accent-colors'\nimport type { SparkAccentColor } from '../lib/accent-colors'\nimport type { SparkStyle } from '../lib/theme-types'\nimport { cn } from '../utils/cn'\n\n// Button's chrome recipe (`buttonRecipe` in button.tsx), minus its `hover:`\n// half -- hover belongs on segments, not the shared group chrome. Shared with\n// button-group-pill.tsx.\nexport const buttonGroupRecipe =\n 'bg-(--spark-style-bg,var(--spark-9)) text-(--spark-style-fg,var(--spark-contrast)) shadow-[inset_0_0_0_var(--spark-style-border-width,1px)_var(--spark-style-border,transparent)]'\n\nexport function buttonGroupSizeClasses(size: 'small' | 'default') {\n return size === 'small'\n ? 'h-9 text-sm [&_svg:not([class*=size-])]:size-4'\n : 'h-10 text-base [&_svg:not([class*=size-])]:size-5'\n}\n\ninterface ButtonGroupProps extends React.HTMLAttributes<HTMLDivElement> {\n styleVariant?: SparkStyle\n color?: SparkAccentColor\n size?: 'small' | 'default'\n}\n\n/**\n * A layout group, not a toolbar: segments are independent tab stops in DOM\n * order (no roving tabindex). Pass `aria-label` when segments don't\n * self-describe (e.g. icon-only segments). For a fully-rounded status pill,\n * use `ButtonGroupPill` instead.\n */\nconst ButtonGroup = React.forwardRef<HTMLDivElement, ButtonGroupProps>(\n function ButtonGroup(\n {\n className,\n styleVariant = 'soft',\n color = 'neutral',\n size = 'default',\n ...props\n },\n ref,\n ) {\n return (\n <div\n data-slot=\"button-group\"\n role=\"group\"\n data-style={styleVariant}\n data-accent-color={accentByColor[color]}\n className={cn(\n 'isolate inline-flex items-stretch overflow-hidden rounded-[max(var(--spark-rounded-md),var(--spark-rounded-full))]',\n buttonGroupSizeClasses(size),\n buttonGroupRecipe,\n className,\n )}\n ref={ref}\n {...props}\n />\n )\n },\n)\n\nButtonGroup.displayName = 'ButtonGroup'\n\ninterface ButtonGroupButtonProps extends Omit<\n React.ComponentProps<typeof ButtonPrimitive>,\n 'ref'\n> {}\n\nconst ButtonGroupButton = React.forwardRef<\n HTMLButtonElement,\n ButtonGroupButtonProps\n>(function ButtonGroupButton(\n { className, render, nativeButton, ...props },\n ref,\n) {\n return (\n <ButtonPrimitive\n data-slot=\"button-group-button\"\n nativeButton={nativeButton ?? render === undefined}\n render={render}\n className={cn(\n 'inline-flex cursor-pointer items-center gap-2 px-3 font-medium whitespace-nowrap',\n // fallback mirrors Button's own hover over the same --spark-9 resting\n // fallback in buttonGroupRecipe, for a segment used outside a ButtonGroup\n 'transition-colors hover:bg-(--spark-style-bg-hover,var(--spark-10)) motion-reduce:transition-none',\n 'focus-visible:inset-ring-2 focus-visible:outline-hidden',\n 'disabled:pointer-events-none disabled:opacity-50 aria-disabled:pointer-events-none aria-disabled:opacity-50',\n '[&_svg]:pointer-events-none [&_svg]:shrink-0',\n className,\n )}\n ref={ref}\n {...props}\n />\n )\n})\n\nButtonGroupButton.displayName = 'ButtonGroupButton'\n\nconst ButtonGroupText = React.forwardRef<\n HTMLSpanElement,\n React.HTMLAttributes<HTMLSpanElement>\n>(function ButtonGroupText({ className, ...props }, ref) {\n return (\n <span\n data-slot=\"button-group-text\"\n className={cn(\n 'inline-flex items-center gap-2 px-3 font-medium whitespace-nowrap select-none',\n '[&_svg]:pointer-events-none [&_svg]:shrink-0',\n className,\n )}\n ref={ref}\n {...props}\n />\n )\n})\n\nButtonGroupText.displayName = 'ButtonGroupText'\n\nconst ButtonGroupSeparator = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement>\n>(function ButtonGroupSeparator({ className, ...props }, ref) {\n return (\n <div\n data-slot=\"button-group-separator\"\n aria-hidden=\"true\"\n className={cn(\n 'h-4 w-px shrink-0 self-center bg-current opacity-25',\n className,\n )}\n ref={ref}\n {...props}\n />\n )\n})\n\nButtonGroupSeparator.displayName = 'ButtonGroupSeparator'\n\nexport { ButtonGroup, ButtonGroupButton, ButtonGroupSeparator, ButtonGroupText }\nexport type { ButtonGroupProps, ButtonGroupButtonProps }\n"],"mappings":";;;;;;;;;;;AAYA,MAAa,oBACX;AAEF,SAAgB,uBAAuB,MAA2B;CAChE,OAAO,SAAS,UACZ,mDACA;AACN;;;;;;;AAcA,MAAM,cAAcA,MAAM,WACxB,SAAS,YACP,EACE,WACA,eAAe,QACf,QAAQ,WACR,OAAO,WACP,GAAG,SAEL,KACA;CACA,OACE,iBAAA,GAAA,kBAAA,KAAC,OAAD;EACE,aAAU;EACV,MAAK;EACL,cAAY;EACZ,qBAAmBC,0BAAAA,cAAc;EACjC,YAAA,GAAA,OAAA,IACE,sHACA,uBAAuB,IAAI,GAC3B,mBACA,SACF;EACK;EACL,GAAI;CACL,CAAA;AAEL,CACF;AAEA,YAAY,cAAc;AAO1B,MAAM,oBAAoBD,MAAM,WAG9B,SAAS,kBACT,EAAE,WAAW,QAAQ,cAAc,GAAG,SACtC,KACA;CACA,OACE,iBAAA,GAAA,kBAAA,KAACE,sBAAAA,QAAD;EACE,aAAU;EACV,cAAc,gBAAgB,WAAW,KAAA;EACjC;EACR,YAAA,GAAA,OAAA,IACE,oFAGA,qGACA,2DACA,+GACA,gDACA,SACF;EACK;EACL,GAAI;CACL,CAAA;AAEL,CAAC;AAED,kBAAkB,cAAc;AAEhC,MAAM,kBAAkBF,MAAM,WAG5B,SAAS,gBAAgB,EAAE,WAAW,GAAG,SAAS,KAAK;CACvD,OACE,iBAAA,GAAA,kBAAA,KAAC,QAAD;EACE,aAAU;EACV,YAAA,GAAA,OAAA,IACE,iFACA,gDACA,SACF;EACK;EACL,GAAI;CACL,CAAA;AAEL,CAAC;AAED,gBAAgB,cAAc;AAE9B,MAAM,uBAAuBA,MAAM,WAGjC,SAAS,qBAAqB,EAAE,WAAW,GAAG,SAAS,KAAK;CAC5D,OACE,iBAAA,GAAA,kBAAA,KAAC,OAAD;EACE,aAAU;EACV,eAAY;EACZ,YAAA,GAAA,OAAA,IACE,uDACA,SACF;EACK;EACL,GAAI;CACL,CAAA;AAEL,CAAC;AAED,qBAAqB,cAAc"}
1
+ {"version":3,"file":"button-group.cjs","names":["React","accentByColor","ButtonPrimitive"],"sources":["../../src/components/button-group.tsx"],"sourcesContent":["'use client'\n\nimport { Button as ButtonPrimitive } from '@base-ui/react/button'\nimport * as React from 'react'\nimport { accentByColor } from '../lib/accent-colors'\nimport type { SparkAccentColor } from '../lib/accent-colors'\nimport type { SparkStyle } from '../lib/theme-types'\nimport { cn } from '../utils/cn'\n\n// Button's chrome recipe (`buttonRecipe` in button.tsx), minus its `hover:`\n// half -- hover belongs on segments, not the shared group chrome. Shared with\n// button-group-pill.tsx.\nexport const buttonGroupRecipe =\n 'bg-(--spark-style-bg,var(--color-primary)) text-(--spark-style-fg,var(--color-primary-foreground)) shadow-[inset_0_0_0_var(--spark-style-border-width,1px)_var(--spark-style-border,transparent)]'\n\nexport function buttonGroupSizeClasses(size: 'small' | 'default') {\n return size === 'small'\n ? 'h-9 text-sm [&_svg:not([class*=size-])]:size-4'\n : 'h-10 text-base [&_svg:not([class*=size-])]:size-5'\n}\n\ninterface ButtonGroupProps extends React.HTMLAttributes<HTMLDivElement> {\n styleVariant?: SparkStyle\n color?: SparkAccentColor\n size?: 'small' | 'default'\n}\n\n/**\n * A layout group, not a toolbar: segments are independent tab stops in DOM\n * order (no roving tabindex). Pass `aria-label` when segments don't\n * self-describe (e.g. icon-only segments). For a fully-rounded status pill,\n * use `ButtonGroupPill` instead.\n */\nconst ButtonGroup = React.forwardRef<HTMLDivElement, ButtonGroupProps>(\n function ButtonGroup(\n {\n className,\n styleVariant = 'soft',\n color = 'neutral',\n size = 'default',\n ...props\n },\n ref,\n ) {\n return (\n <div\n data-slot=\"button-group\"\n role=\"group\"\n data-style={styleVariant}\n data-accent-color={accentByColor[color]}\n className={cn(\n 'isolate inline-flex items-stretch overflow-hidden rounded-[max(var(--spark-rounded-md),var(--spark-rounded-full))]',\n buttonGroupSizeClasses(size),\n buttonGroupRecipe,\n className,\n )}\n ref={ref}\n {...props}\n />\n )\n },\n)\n\nButtonGroup.displayName = 'ButtonGroup'\n\ninterface ButtonGroupButtonProps extends Omit<\n React.ComponentProps<typeof ButtonPrimitive>,\n 'ref'\n> {}\n\nconst ButtonGroupButton = React.forwardRef<\n HTMLButtonElement,\n ButtonGroupButtonProps\n>(function ButtonGroupButton(\n { className, render, nativeButton, ...props },\n ref,\n) {\n return (\n <ButtonPrimitive\n data-slot=\"button-group-button\"\n nativeButton={nativeButton ?? render === undefined}\n render={render}\n className={cn(\n 'inline-flex cursor-pointer items-center gap-2 px-3 font-medium whitespace-nowrap',\n 'transition-colors hover:bg-(--spark-style-bg-hover,var(--color-primary-hover)) motion-reduce:transition-none',\n 'focus-visible:inset-ring-2 focus-visible:outline-hidden',\n 'disabled:pointer-events-none disabled:opacity-50 aria-disabled:pointer-events-none aria-disabled:opacity-50',\n '[&_svg]:pointer-events-none [&_svg]:shrink-0',\n className,\n )}\n ref={ref}\n {...props}\n />\n )\n})\n\nButtonGroupButton.displayName = 'ButtonGroupButton'\n\nconst ButtonGroupText = React.forwardRef<\n HTMLSpanElement,\n React.HTMLAttributes<HTMLSpanElement>\n>(function ButtonGroupText({ className, ...props }, ref) {\n return (\n <span\n data-slot=\"button-group-text\"\n className={cn(\n 'inline-flex items-center gap-2 px-3 font-medium whitespace-nowrap select-none',\n '[&_svg]:pointer-events-none [&_svg]:shrink-0',\n className,\n )}\n ref={ref}\n {...props}\n />\n )\n})\n\nButtonGroupText.displayName = 'ButtonGroupText'\n\nconst ButtonGroupSeparator = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement>\n>(function ButtonGroupSeparator({ className, ...props }, ref) {\n return (\n <div\n data-slot=\"button-group-separator\"\n aria-hidden=\"true\"\n className={cn(\n 'h-4 w-px shrink-0 self-center bg-current opacity-25',\n className,\n )}\n ref={ref}\n {...props}\n />\n )\n})\n\nButtonGroupSeparator.displayName = 'ButtonGroupSeparator'\n\nexport { ButtonGroup, ButtonGroupButton, ButtonGroupSeparator, ButtonGroupText }\nexport type { ButtonGroupProps, ButtonGroupButtonProps }\n"],"mappings":";;;;;;;;;;;AAYA,MAAa,oBACX;AAEF,SAAgB,uBAAuB,MAA2B;CAChE,OAAO,SAAS,UACZ,mDACA;AACN;;;;;;;AAcA,MAAM,cAAcA,MAAM,WACxB,SAAS,YACP,EACE,WACA,eAAe,QACf,QAAQ,WACR,OAAO,WACP,GAAG,SAEL,KACA;CACA,OACE,iBAAA,GAAA,kBAAA,KAAC,OAAD;EACE,aAAU;EACV,MAAK;EACL,cAAY;EACZ,qBAAmBC,0BAAAA,cAAc;EACjC,YAAA,GAAA,OAAA,IACE,sHACA,uBAAuB,IAAI,GAC3B,mBACA,SACF;EACK;EACL,GAAI;CACL,CAAA;AAEL,CACF;AAEA,YAAY,cAAc;AAO1B,MAAM,oBAAoBD,MAAM,WAG9B,SAAS,kBACT,EAAE,WAAW,QAAQ,cAAc,GAAG,SACtC,KACA;CACA,OACE,iBAAA,GAAA,kBAAA,KAACE,sBAAAA,QAAD;EACE,aAAU;EACV,cAAc,gBAAgB,WAAW,KAAA;EACjC;EACR,YAAA,GAAA,OAAA,IACE,oFACA,gHACA,2DACA,+GACA,gDACA,SACF;EACK;EACL,GAAI;CACL,CAAA;AAEL,CAAC;AAED,kBAAkB,cAAc;AAEhC,MAAM,kBAAkBF,MAAM,WAG5B,SAAS,gBAAgB,EAAE,WAAW,GAAG,SAAS,KAAK;CACvD,OACE,iBAAA,GAAA,kBAAA,KAAC,QAAD;EACE,aAAU;EACV,YAAA,GAAA,OAAA,IACE,iFACA,gDACA,SACF;EACK;EACL,GAAI;CACL,CAAA;AAEL,CAAC;AAED,gBAAgB,cAAc;AAE9B,MAAM,uBAAuBA,MAAM,WAGjC,SAAS,qBAAqB,EAAE,WAAW,GAAG,SAAS,KAAK;CAC5D,OACE,iBAAA,GAAA,kBAAA,KAAC,OAAD;EACE,aAAU;EACV,eAAY;EACZ,YAAA,GAAA,OAAA,IACE,uDACA,SACF;EACK;EACL,GAAI;CACL,CAAA;AAEL,CAAC;AAED,qBAAqB,cAAc"}
@@ -6,7 +6,7 @@ import * as React$1 from "react";
6
6
  import { Button } from "@base-ui/react/button";
7
7
 
8
8
  //#region src/components/button-group.d.ts
9
- declare const buttonGroupRecipe = "bg-(--spark-style-bg,var(--spark-9)) text-(--spark-style-fg,var(--spark-contrast)) shadow-[inset_0_0_0_var(--spark-style-border-width,1px)_var(--spark-style-border,transparent)]";
9
+ declare const buttonGroupRecipe = "bg-(--spark-style-bg,var(--color-primary)) text-(--spark-style-fg,var(--color-primary-foreground)) shadow-[inset_0_0_0_var(--spark-style-border-width,1px)_var(--spark-style-border,transparent)]";
10
10
  declare function buttonGroupSizeClasses(size: 'small' | 'default'): "h-9 text-sm [&_svg:not([class*=size-])]:size-4" | "h-10 text-base [&_svg:not([class*=size-])]:size-5";
11
11
  interface ButtonGroupProps extends React$1.HTMLAttributes<HTMLDivElement> {
12
12
  styleVariant?: SparkStyle;
@@ -6,7 +6,7 @@ import * as React$1 from "react";
6
6
  import { Button } from "@base-ui/react/button";
7
7
 
8
8
  //#region src/components/button-group.d.ts
9
- declare const buttonGroupRecipe = "bg-(--spark-style-bg,var(--spark-9)) text-(--spark-style-fg,var(--spark-contrast)) shadow-[inset_0_0_0_var(--spark-style-border-width,1px)_var(--spark-style-border,transparent)]";
9
+ declare const buttonGroupRecipe = "bg-(--spark-style-bg,var(--color-primary)) text-(--spark-style-fg,var(--color-primary-foreground)) shadow-[inset_0_0_0_var(--spark-style-border-width,1px)_var(--spark-style-border,transparent)]";
10
10
  declare function buttonGroupSizeClasses(size: 'small' | 'default'): "h-9 text-sm [&_svg:not([class*=size-])]:size-4" | "h-10 text-base [&_svg:not([class*=size-])]:size-5";
11
11
  interface ButtonGroupProps extends React$1.HTMLAttributes<HTMLDivElement> {
12
12
  styleVariant?: SparkStyle;
@@ -6,7 +6,7 @@ import * as React$1 from "react";
6
6
  import { jsx } from "react/jsx-runtime";
7
7
  import { Button } from "@base-ui/react/button";
8
8
  //#region src/components/button-group.tsx
9
- const buttonGroupRecipe = "bg-(--spark-style-bg,var(--spark-9)) text-(--spark-style-fg,var(--spark-contrast)) shadow-[inset_0_0_0_var(--spark-style-border-width,1px)_var(--spark-style-border,transparent)]";
9
+ const buttonGroupRecipe = "bg-(--spark-style-bg,var(--color-primary)) text-(--spark-style-fg,var(--color-primary-foreground)) shadow-[inset_0_0_0_var(--spark-style-border-width,1px)_var(--spark-style-border,transparent)]";
10
10
  function buttonGroupSizeClasses(size) {
11
11
  return size === "small" ? "h-9 text-sm [&_svg:not([class*=size-])]:size-4" : "h-10 text-base [&_svg:not([class*=size-])]:size-5";
12
12
  }
@@ -33,7 +33,7 @@ const ButtonGroupButton = React$1.forwardRef(function ButtonGroupButton({ classN
33
33
  "data-slot": "button-group-button",
34
34
  nativeButton: nativeButton ?? render === void 0,
35
35
  render,
36
- className: cn("inline-flex cursor-pointer items-center gap-2 px-3 font-medium whitespace-nowrap", "transition-colors hover:bg-(--spark-style-bg-hover,var(--spark-10)) motion-reduce:transition-none", "focus-visible:inset-ring-2 focus-visible:outline-hidden", "disabled:pointer-events-none disabled:opacity-50 aria-disabled:pointer-events-none aria-disabled:opacity-50", "[&_svg]:pointer-events-none [&_svg]:shrink-0", className),
36
+ className: cn("inline-flex cursor-pointer items-center gap-2 px-3 font-medium whitespace-nowrap", "transition-colors hover:bg-(--spark-style-bg-hover,var(--color-primary-hover)) motion-reduce:transition-none", "focus-visible:inset-ring-2 focus-visible:outline-hidden", "disabled:pointer-events-none disabled:opacity-50 aria-disabled:pointer-events-none aria-disabled:opacity-50", "[&_svg]:pointer-events-none [&_svg]:shrink-0", className),
37
37
  ref,
38
38
  ...props
39
39
  });
@@ -1 +1 @@
1
- {"version":3,"file":"button-group.js","names":["React","ButtonPrimitive"],"sources":["../../src/components/button-group.tsx"],"sourcesContent":["'use client'\n\nimport { Button as ButtonPrimitive } from '@base-ui/react/button'\nimport * as React from 'react'\nimport { accentByColor } from '../lib/accent-colors'\nimport type { SparkAccentColor } from '../lib/accent-colors'\nimport type { SparkStyle } from '../lib/theme-types'\nimport { cn } from '../utils/cn'\n\n// Button's chrome recipe (`buttonRecipe` in button.tsx), minus its `hover:`\n// half -- hover belongs on segments, not the shared group chrome. Shared with\n// button-group-pill.tsx.\nexport const buttonGroupRecipe =\n 'bg-(--spark-style-bg,var(--spark-9)) text-(--spark-style-fg,var(--spark-contrast)) shadow-[inset_0_0_0_var(--spark-style-border-width,1px)_var(--spark-style-border,transparent)]'\n\nexport function buttonGroupSizeClasses(size: 'small' | 'default') {\n return size === 'small'\n ? 'h-9 text-sm [&_svg:not([class*=size-])]:size-4'\n : 'h-10 text-base [&_svg:not([class*=size-])]:size-5'\n}\n\ninterface ButtonGroupProps extends React.HTMLAttributes<HTMLDivElement> {\n styleVariant?: SparkStyle\n color?: SparkAccentColor\n size?: 'small' | 'default'\n}\n\n/**\n * A layout group, not a toolbar: segments are independent tab stops in DOM\n * order (no roving tabindex). Pass `aria-label` when segments don't\n * self-describe (e.g. icon-only segments). For a fully-rounded status pill,\n * use `ButtonGroupPill` instead.\n */\nconst ButtonGroup = React.forwardRef<HTMLDivElement, ButtonGroupProps>(\n function ButtonGroup(\n {\n className,\n styleVariant = 'soft',\n color = 'neutral',\n size = 'default',\n ...props\n },\n ref,\n ) {\n return (\n <div\n data-slot=\"button-group\"\n role=\"group\"\n data-style={styleVariant}\n data-accent-color={accentByColor[color]}\n className={cn(\n 'isolate inline-flex items-stretch overflow-hidden rounded-[max(var(--spark-rounded-md),var(--spark-rounded-full))]',\n buttonGroupSizeClasses(size),\n buttonGroupRecipe,\n className,\n )}\n ref={ref}\n {...props}\n />\n )\n },\n)\n\nButtonGroup.displayName = 'ButtonGroup'\n\ninterface ButtonGroupButtonProps extends Omit<\n React.ComponentProps<typeof ButtonPrimitive>,\n 'ref'\n> {}\n\nconst ButtonGroupButton = React.forwardRef<\n HTMLButtonElement,\n ButtonGroupButtonProps\n>(function ButtonGroupButton(\n { className, render, nativeButton, ...props },\n ref,\n) {\n return (\n <ButtonPrimitive\n data-slot=\"button-group-button\"\n nativeButton={nativeButton ?? render === undefined}\n render={render}\n className={cn(\n 'inline-flex cursor-pointer items-center gap-2 px-3 font-medium whitespace-nowrap',\n // fallback mirrors Button's own hover over the same --spark-9 resting\n // fallback in buttonGroupRecipe, for a segment used outside a ButtonGroup\n 'transition-colors hover:bg-(--spark-style-bg-hover,var(--spark-10)) motion-reduce:transition-none',\n 'focus-visible:inset-ring-2 focus-visible:outline-hidden',\n 'disabled:pointer-events-none disabled:opacity-50 aria-disabled:pointer-events-none aria-disabled:opacity-50',\n '[&_svg]:pointer-events-none [&_svg]:shrink-0',\n className,\n )}\n ref={ref}\n {...props}\n />\n )\n})\n\nButtonGroupButton.displayName = 'ButtonGroupButton'\n\nconst ButtonGroupText = React.forwardRef<\n HTMLSpanElement,\n React.HTMLAttributes<HTMLSpanElement>\n>(function ButtonGroupText({ className, ...props }, ref) {\n return (\n <span\n data-slot=\"button-group-text\"\n className={cn(\n 'inline-flex items-center gap-2 px-3 font-medium whitespace-nowrap select-none',\n '[&_svg]:pointer-events-none [&_svg]:shrink-0',\n className,\n )}\n ref={ref}\n {...props}\n />\n )\n})\n\nButtonGroupText.displayName = 'ButtonGroupText'\n\nconst ButtonGroupSeparator = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement>\n>(function ButtonGroupSeparator({ className, ...props }, ref) {\n return (\n <div\n data-slot=\"button-group-separator\"\n aria-hidden=\"true\"\n className={cn(\n 'h-4 w-px shrink-0 self-center bg-current opacity-25',\n className,\n )}\n ref={ref}\n {...props}\n />\n )\n})\n\nButtonGroupSeparator.displayName = 'ButtonGroupSeparator'\n\nexport { ButtonGroup, ButtonGroupButton, ButtonGroupSeparator, ButtonGroupText }\nexport type { ButtonGroupProps, ButtonGroupButtonProps }\n"],"mappings":";;;;;;;;AAYA,MAAa,oBACX;AAEF,SAAgB,uBAAuB,MAA2B;CAChE,OAAO,SAAS,UACZ,mDACA;AACN;;;;;;;AAcA,MAAM,cAAcA,QAAM,WACxB,SAAS,YACP,EACE,WACA,eAAe,QACf,QAAQ,WACR,OAAO,WACP,GAAG,SAEL,KACA;CACA,OACE,oBAAC,OAAD;EACE,aAAU;EACV,MAAK;EACL,cAAY;EACZ,qBAAmB,cAAc;EACjC,WAAW,GACT,sHACA,uBAAuB,IAAI,GAC3B,mBACA,SACF;EACK;EACL,GAAI;CACL,CAAA;AAEL,CACF;AAEA,YAAY,cAAc;AAO1B,MAAM,oBAAoBA,QAAM,WAG9B,SAAS,kBACT,EAAE,WAAW,QAAQ,cAAc,GAAG,SACtC,KACA;CACA,OACE,oBAACC,QAAD;EACE,aAAU;EACV,cAAc,gBAAgB,WAAW,KAAA;EACjC;EACR,WAAW,GACT,oFAGA,qGACA,2DACA,+GACA,gDACA,SACF;EACK;EACL,GAAI;CACL,CAAA;AAEL,CAAC;AAED,kBAAkB,cAAc;AAEhC,MAAM,kBAAkBD,QAAM,WAG5B,SAAS,gBAAgB,EAAE,WAAW,GAAG,SAAS,KAAK;CACvD,OACE,oBAAC,QAAD;EACE,aAAU;EACV,WAAW,GACT,iFACA,gDACA,SACF;EACK;EACL,GAAI;CACL,CAAA;AAEL,CAAC;AAED,gBAAgB,cAAc;AAE9B,MAAM,uBAAuBA,QAAM,WAGjC,SAAS,qBAAqB,EAAE,WAAW,GAAG,SAAS,KAAK;CAC5D,OACE,oBAAC,OAAD;EACE,aAAU;EACV,eAAY;EACZ,WAAW,GACT,uDACA,SACF;EACK;EACL,GAAI;CACL,CAAA;AAEL,CAAC;AAED,qBAAqB,cAAc"}
1
+ {"version":3,"file":"button-group.js","names":["React","ButtonPrimitive"],"sources":["../../src/components/button-group.tsx"],"sourcesContent":["'use client'\n\nimport { Button as ButtonPrimitive } from '@base-ui/react/button'\nimport * as React from 'react'\nimport { accentByColor } from '../lib/accent-colors'\nimport type { SparkAccentColor } from '../lib/accent-colors'\nimport type { SparkStyle } from '../lib/theme-types'\nimport { cn } from '../utils/cn'\n\n// Button's chrome recipe (`buttonRecipe` in button.tsx), minus its `hover:`\n// half -- hover belongs on segments, not the shared group chrome. Shared with\n// button-group-pill.tsx.\nexport const buttonGroupRecipe =\n 'bg-(--spark-style-bg,var(--color-primary)) text-(--spark-style-fg,var(--color-primary-foreground)) shadow-[inset_0_0_0_var(--spark-style-border-width,1px)_var(--spark-style-border,transparent)]'\n\nexport function buttonGroupSizeClasses(size: 'small' | 'default') {\n return size === 'small'\n ? 'h-9 text-sm [&_svg:not([class*=size-])]:size-4'\n : 'h-10 text-base [&_svg:not([class*=size-])]:size-5'\n}\n\ninterface ButtonGroupProps extends React.HTMLAttributes<HTMLDivElement> {\n styleVariant?: SparkStyle\n color?: SparkAccentColor\n size?: 'small' | 'default'\n}\n\n/**\n * A layout group, not a toolbar: segments are independent tab stops in DOM\n * order (no roving tabindex). Pass `aria-label` when segments don't\n * self-describe (e.g. icon-only segments). For a fully-rounded status pill,\n * use `ButtonGroupPill` instead.\n */\nconst ButtonGroup = React.forwardRef<HTMLDivElement, ButtonGroupProps>(\n function ButtonGroup(\n {\n className,\n styleVariant = 'soft',\n color = 'neutral',\n size = 'default',\n ...props\n },\n ref,\n ) {\n return (\n <div\n data-slot=\"button-group\"\n role=\"group\"\n data-style={styleVariant}\n data-accent-color={accentByColor[color]}\n className={cn(\n 'isolate inline-flex items-stretch overflow-hidden rounded-[max(var(--spark-rounded-md),var(--spark-rounded-full))]',\n buttonGroupSizeClasses(size),\n buttonGroupRecipe,\n className,\n )}\n ref={ref}\n {...props}\n />\n )\n },\n)\n\nButtonGroup.displayName = 'ButtonGroup'\n\ninterface ButtonGroupButtonProps extends Omit<\n React.ComponentProps<typeof ButtonPrimitive>,\n 'ref'\n> {}\n\nconst ButtonGroupButton = React.forwardRef<\n HTMLButtonElement,\n ButtonGroupButtonProps\n>(function ButtonGroupButton(\n { className, render, nativeButton, ...props },\n ref,\n) {\n return (\n <ButtonPrimitive\n data-slot=\"button-group-button\"\n nativeButton={nativeButton ?? render === undefined}\n render={render}\n className={cn(\n 'inline-flex cursor-pointer items-center gap-2 px-3 font-medium whitespace-nowrap',\n 'transition-colors hover:bg-(--spark-style-bg-hover,var(--color-primary-hover)) motion-reduce:transition-none',\n 'focus-visible:inset-ring-2 focus-visible:outline-hidden',\n 'disabled:pointer-events-none disabled:opacity-50 aria-disabled:pointer-events-none aria-disabled:opacity-50',\n '[&_svg]:pointer-events-none [&_svg]:shrink-0',\n className,\n )}\n ref={ref}\n {...props}\n />\n )\n})\n\nButtonGroupButton.displayName = 'ButtonGroupButton'\n\nconst ButtonGroupText = React.forwardRef<\n HTMLSpanElement,\n React.HTMLAttributes<HTMLSpanElement>\n>(function ButtonGroupText({ className, ...props }, ref) {\n return (\n <span\n data-slot=\"button-group-text\"\n className={cn(\n 'inline-flex items-center gap-2 px-3 font-medium whitespace-nowrap select-none',\n '[&_svg]:pointer-events-none [&_svg]:shrink-0',\n className,\n )}\n ref={ref}\n {...props}\n />\n )\n})\n\nButtonGroupText.displayName = 'ButtonGroupText'\n\nconst ButtonGroupSeparator = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement>\n>(function ButtonGroupSeparator({ className, ...props }, ref) {\n return (\n <div\n data-slot=\"button-group-separator\"\n aria-hidden=\"true\"\n className={cn(\n 'h-4 w-px shrink-0 self-center bg-current opacity-25',\n className,\n )}\n ref={ref}\n {...props}\n />\n )\n})\n\nButtonGroupSeparator.displayName = 'ButtonGroupSeparator'\n\nexport { ButtonGroup, ButtonGroupButton, ButtonGroupSeparator, ButtonGroupText }\nexport type { ButtonGroupProps, ButtonGroupButtonProps }\n"],"mappings":";;;;;;;;AAYA,MAAa,oBACX;AAEF,SAAgB,uBAAuB,MAA2B;CAChE,OAAO,SAAS,UACZ,mDACA;AACN;;;;;;;AAcA,MAAM,cAAcA,QAAM,WACxB,SAAS,YACP,EACE,WACA,eAAe,QACf,QAAQ,WACR,OAAO,WACP,GAAG,SAEL,KACA;CACA,OACE,oBAAC,OAAD;EACE,aAAU;EACV,MAAK;EACL,cAAY;EACZ,qBAAmB,cAAc;EACjC,WAAW,GACT,sHACA,uBAAuB,IAAI,GAC3B,mBACA,SACF;EACK;EACL,GAAI;CACL,CAAA;AAEL,CACF;AAEA,YAAY,cAAc;AAO1B,MAAM,oBAAoBA,QAAM,WAG9B,SAAS,kBACT,EAAE,WAAW,QAAQ,cAAc,GAAG,SACtC,KACA;CACA,OACE,oBAACC,QAAD;EACE,aAAU;EACV,cAAc,gBAAgB,WAAW,KAAA;EACjC;EACR,WAAW,GACT,oFACA,gHACA,2DACA,+GACA,gDACA,SACF;EACK;EACL,GAAI;CACL,CAAA;AAEL,CAAC;AAED,kBAAkB,cAAc;AAEhC,MAAM,kBAAkBD,QAAM,WAG5B,SAAS,gBAAgB,EAAE,WAAW,GAAG,SAAS,KAAK;CACvD,OACE,oBAAC,QAAD;EACE,aAAU;EACV,WAAW,GACT,iFACA,gDACA,SACF;EACK;EACL,GAAI;CACL,CAAA;AAEL,CAAC;AAED,gBAAgB,cAAc;AAE9B,MAAM,uBAAuBA,QAAM,WAGjC,SAAS,qBAAqB,EAAE,WAAW,GAAG,SAAS,KAAK;CAC5D,OACE,oBAAC,OAAD;EACE,aAAU;EACV,eAAY;EACZ,WAAW,GACT,uDACA,SACF;EACK;EACL,GAAI;CACL,CAAA;AAEL,CAAC;AAED,qBAAqB,cAAc"}
@@ -13,16 +13,18 @@ let cnfast = require("cnfast");
13
13
  const buttonVariants = (0, class_variance_authority.cva)("group/button touch-target 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", {
14
14
  variants: {
15
15
  variant: {
16
- primary: "bg-(--spark-style-bg,var(--spark-9)) text-(--spark-style-fg,var(--spark-contrast)) hover:bg-(--spark-style-bg-hover,var(--spark-10))",
16
+ primary: "bg-(--spark-style-bg,var(--color-primary)) text-(--spark-style-fg,var(--color-primary-foreground)) hover:bg-(--spark-style-bg-hover,var(--color-primary-hover))",
17
17
  secondary: "bg-gray-2 text-gray-a11 shadow-[inset_0_0_0_1px_var(--neutral-a7)] hover:bg-gray-a3",
18
18
  tertiary: "bg-transparent text-gray-a11 hover:bg-gray-a3",
19
19
  bare: "rounded-none! text-gray-12 outline-hidden!",
20
- destructive: "bg-red-a3 text-red-a11 hover:bg-red-a4 focus-visible:ring-base-error-solid"
20
+ destructive: "bg-destructive-soft text-destructive-soft-foreground hover:bg-destructive-soft-hover focus-visible:ring-destructive"
21
21
  },
22
22
  color: {
23
23
  accent: "",
24
+ primary: "",
24
25
  neutral: "",
25
- danger: "focus-visible:ring-base-error-solid"
26
+ danger: "focus-visible:ring-destructive",
27
+ destructive: "focus-visible:ring-destructive"
26
28
  },
27
29
  size: {
28
30
  small: "h-9 px-3 text-sm [--spark-icon-size:16px] [&_svg:not([class*=size-])]:size-4",
@@ -35,7 +37,7 @@ const buttonVariants = (0, class_variance_authority.cva)("group/button touch-tar
35
37
  },
36
38
  defaultVariants: { size: "default" }
37
39
  });
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)]";
40
+ const buttonRecipe = "bg-(--spark-style-bg,var(--color-primary)) text-(--spark-style-fg,var(--color-primary-foreground)) hover:bg-(--spark-style-bg-hover,var(--color-primary-hover)) shadow-[inset_0_0_0_var(--spark-style-border-width,1px)_var(--spark-style-border,transparent)]";
39
41
  const Button = react.forwardRef(function Button({ className, styleVariant, color, size, render, nativeButton, variant: _variant, ...props }, ref) {
40
42
  return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_base_ui_react_button.Button, {
41
43
  "data-style": styleVariant !== void 0 || color !== void 0 ? styleVariant ?? "solid" : void 0,
@@ -1 +1 @@
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 touch-target 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(--neutral-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:\n 'h-9 px-3 text-sm [--spark-icon-size:16px] [&_svg:not([class*=size-])]:size-4',\n default:\n 'h-10 px-3 [--spark-icon-size:20px] [&_svg:not([class*=size-])]:size-5',\n medium:\n 'h-11 px-4 [--spark-icon-size:24px] [&_svg:not([class*=size-])]:size-6',\n 'icon-small':\n 'size-9 [--spark-icon-size:16px] [&_svg:not([class*=size-])]:size-4',\n icon: 'size-10 [--spark-icon-size:20px] [&_svg:not([class*=size-])]:size-5',\n 'icon-medium':\n 'size-11 [--spark-icon-size:24px] [&_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,0dACA;CACE,UAAU;EACR,SAAS;GACP,SACE;GACF,WACE;GACF,UAAU;GACV,MAAM;GACN,aACE;EACJ;EACA,OAAO;GACL,QAAQ;GACR,SAAS;GACT,QAAQ;EACV;EACA,MAAM;GACJ,OACE;GACF,SACE;GACF,QACE;GACF,cACE;GACF,MAAM;GACN,eACE;EACJ;CACF;CACA,iBAAiB,EACf,MAAM,UACR;AACF,CACF;AAEA,MAAM,eACJ;AAoBF,MAAM,SAASA,MAAM,WAA2C,SAAS,OACvE,EACE,WACA,cACA,OACA,MACA,QACA,cACA,SAAS,UACT,GAAG,SAEL,KACA;CAKA,OACE,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;EAAM,CAAC,GAAG,cAAc,SAAS;EACjE;EACL,GAAI;CACL,CAAA;AAEL,CAAC;AAED,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 touch-target 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(--color-primary)) text-(--spark-style-fg,var(--color-primary-foreground)) hover:bg-(--spark-style-bg-hover,var(--color-primary-hover))',\n secondary:\n 'bg-gray-2 text-gray-a11 shadow-[inset_0_0_0_1px_var(--neutral-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-destructive-soft text-destructive-soft-foreground hover:bg-destructive-soft-hover focus-visible:ring-destructive',\n },\n color: {\n accent: '',\n primary: '',\n neutral: '',\n danger: 'focus-visible:ring-destructive',\n destructive: 'focus-visible:ring-destructive',\n },\n size: {\n small:\n 'h-9 px-3 text-sm [--spark-icon-size:16px] [&_svg:not([class*=size-])]:size-4',\n default:\n 'h-10 px-3 [--spark-icon-size:20px] [&_svg:not([class*=size-])]:size-5',\n medium:\n 'h-11 px-4 [--spark-icon-size:24px] [&_svg:not([class*=size-])]:size-6',\n 'icon-small':\n 'size-9 [--spark-icon-size:16px] [&_svg:not([class*=size-])]:size-4',\n icon: 'size-10 [--spark-icon-size:20px] [&_svg:not([class*=size-])]:size-5',\n 'icon-medium':\n 'size-11 [--spark-icon-size:24px] [&_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(--color-primary)) text-(--spark-style-fg,var(--color-primary-foreground)) hover:bg-(--spark-style-bg-hover,var(--color-primary-hover)) shadow-[inset_0_0_0_var(--spark-style-border-width,1px)_var(--spark-style-border,transparent)]'\n\n/** Preferred: `primary` | `neutral` | `destructive`. `accent` / `danger` stay as aliases. */\nexport type SparkButtonColor =\n | 'primary'\n | 'accent'\n | 'neutral'\n | 'destructive'\n | '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 * (`primary | neutral | destructive`) 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,0dACA;CACE,UAAU;EACR,SAAS;GACP,SACE;GACF,WACE;GACF,UAAU;GACV,MAAM;GACN,aACE;EACJ;EACA,OAAO;GACL,QAAQ;GACR,SAAS;GACT,SAAS;GACT,QAAQ;GACR,aAAa;EACf;EACA,MAAM;GACJ,OACE;GACF,SACE;GACF,QACE;GACF,cACE;GACF,MAAM;GACN,eACE;EACJ;CACF;CACA,iBAAiB,EACf,MAAM,UACR;AACF,CACF;AAEA,MAAM,eACJ;AA0BF,MAAM,SAASA,MAAM,WAA2C,SAAS,OACvE,EACE,WACA,cACA,OACA,MACA,QACA,cACA,SAAS,UACT,GAAG,SAEL,KACA;CAKA,OACE,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;EAAM,CAAC,GAAG,cAAc,SAAS;EACjE;EACL,GAAI;CACL,CAAA;AAEL,CAAC;AAED,OAAO,cAAc"}
@@ -7,18 +7,19 @@ import { VariantProps } from "class-variance-authority";
7
7
 
8
8
  //#region src/components/button.d.ts
9
9
  declare const buttonVariants: (props?: ({
10
- variant?: "destructive" | "secondary" | "primary" | "tertiary" | "bare" | null | undefined;
11
- color?: "neutral" | "accent" | "danger" | null | undefined;
12
- size?: "small" | "medium" | "default" | "icon" | "icon-small" | "icon-medium" | null | undefined;
10
+ variant?: "primary" | "secondary" | "tertiary" | "bare" | "destructive" | null | undefined;
11
+ color?: "primary" | "destructive" | "accent" | "neutral" | "danger" | null | undefined;
12
+ size?: "small" | "default" | "medium" | "icon-small" | "icon" | "icon-medium" | null | undefined;
13
13
  } & import("class-variance-authority/types").ClassProp) | undefined) => string;
14
- type SparkButtonColor = 'accent' | 'neutral' | 'danger';
14
+ /** Preferred: `primary` | `neutral` | `destructive`. `accent` / `danger` stay as aliases. */
15
+ type SparkButtonColor = 'primary' | 'accent' | 'neutral' | 'destructive' | 'danger';
15
16
  interface ButtonProps extends Omit<React$1.ComponentProps<typeof Button$1>, 'ref'>, Omit<VariantProps<typeof buttonVariants>, 'variant' | 'color'> {
16
17
  styleVariant?: SparkStyle;
17
18
  color?: SparkButtonColor;
18
19
  /**
19
20
  * @deprecated Not a `<Button>` prop and silently ignored -- use `styleVariant`
20
21
  * (`solid | soft | surface | ghost | outline`) and `color`
21
- * (`accent | neutral | danger`) instead. The `variant` axis on
22
+ * (`primary | neutral | destructive`) instead. The `variant` axis on
22
23
  * `buttonVariants` exists only for class-string callers.
23
24
  */
24
25
  variant?: never;
@@ -7,18 +7,19 @@ import { VariantProps } from "class-variance-authority";
7
7
 
8
8
  //#region src/components/button.d.ts
9
9
  declare const buttonVariants: (props?: ({
10
- variant?: "destructive" | "secondary" | "primary" | "tertiary" | "bare" | null | undefined;
11
- color?: "neutral" | "accent" | "danger" | null | undefined;
12
- size?: "small" | "medium" | "default" | "icon" | "icon-small" | "icon-medium" | null | undefined;
10
+ variant?: "primary" | "secondary" | "tertiary" | "bare" | "destructive" | null | undefined;
11
+ color?: "primary" | "destructive" | "accent" | "neutral" | "danger" | null | undefined;
12
+ size?: "small" | "default" | "medium" | "icon-small" | "icon" | "icon-medium" | null | undefined;
13
13
  } & import("class-variance-authority/types").ClassProp) | undefined) => string;
14
- type SparkButtonColor = 'accent' | 'neutral' | 'danger';
14
+ /** Preferred: `primary` | `neutral` | `destructive`. `accent` / `danger` stay as aliases. */
15
+ type SparkButtonColor = 'primary' | 'accent' | 'neutral' | 'destructive' | 'danger';
15
16
  interface ButtonProps extends Omit<React$1.ComponentProps<typeof Button$1>, 'ref'>, Omit<VariantProps<typeof buttonVariants>, 'variant' | 'color'> {
16
17
  styleVariant?: SparkStyle;
17
18
  color?: SparkButtonColor;
18
19
  /**
19
20
  * @deprecated Not a `<Button>` prop and silently ignored -- use `styleVariant`
20
21
  * (`solid | soft | surface | ghost | outline`) and `color`
21
- * (`accent | neutral | danger`) instead. The `variant` axis on
22
+ * (`primary | neutral | destructive`) instead. The `variant` axis on
22
23
  * `buttonVariants` exists only for class-string callers.
23
24
  */
24
25
  variant?: never;
@@ -10,16 +10,18 @@ import { cva } from "class-variance-authority";
10
10
  const buttonVariants = cva("group/button touch-target 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", {
11
11
  variants: {
12
12
  variant: {
13
- primary: "bg-(--spark-style-bg,var(--spark-9)) text-(--spark-style-fg,var(--spark-contrast)) hover:bg-(--spark-style-bg-hover,var(--spark-10))",
13
+ primary: "bg-(--spark-style-bg,var(--color-primary)) text-(--spark-style-fg,var(--color-primary-foreground)) hover:bg-(--spark-style-bg-hover,var(--color-primary-hover))",
14
14
  secondary: "bg-gray-2 text-gray-a11 shadow-[inset_0_0_0_1px_var(--neutral-a7)] hover:bg-gray-a3",
15
15
  tertiary: "bg-transparent text-gray-a11 hover:bg-gray-a3",
16
16
  bare: "rounded-none! text-gray-12 outline-hidden!",
17
- destructive: "bg-red-a3 text-red-a11 hover:bg-red-a4 focus-visible:ring-base-error-solid"
17
+ destructive: "bg-destructive-soft text-destructive-soft-foreground hover:bg-destructive-soft-hover focus-visible:ring-destructive"
18
18
  },
19
19
  color: {
20
20
  accent: "",
21
+ primary: "",
21
22
  neutral: "",
22
- danger: "focus-visible:ring-base-error-solid"
23
+ danger: "focus-visible:ring-destructive",
24
+ destructive: "focus-visible:ring-destructive"
23
25
  },
24
26
  size: {
25
27
  small: "h-9 px-3 text-sm [--spark-icon-size:16px] [&_svg:not([class*=size-])]:size-4",
@@ -32,7 +34,7 @@ const buttonVariants = cva("group/button touch-target inline-flex cursor-pointer
32
34
  },
33
35
  defaultVariants: { size: "default" }
34
36
  });
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)]";
37
+ const buttonRecipe = "bg-(--spark-style-bg,var(--color-primary)) text-(--spark-style-fg,var(--color-primary-foreground)) hover:bg-(--spark-style-bg-hover,var(--color-primary-hover)) shadow-[inset_0_0_0_var(--spark-style-border-width,1px)_var(--spark-style-border,transparent)]";
36
38
  const Button = React$1.forwardRef(function Button({ className, styleVariant, color, size, render, nativeButton, variant: _variant, ...props }, ref) {
37
39
  return /* @__PURE__ */ jsx(Button$1, {
38
40
  "data-style": styleVariant !== void 0 || color !== void 0 ? styleVariant ?? "solid" : void 0,