@epilot/spark-ui 0.11.1 → 0.12.1

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 (125) hide show
  1. package/dist/components/avatar.d.cts +1 -1
  2. package/dist/components/avatar.d.ts +1 -1
  3. package/dist/components/badge.d.cts +1 -1
  4. package/dist/components/badge.d.ts +1 -1
  5. package/dist/components/bar-chart.js +1 -1
  6. package/dist/components/box.cjs +3 -2
  7. package/dist/components/box.cjs.map +1 -1
  8. package/dist/components/box.d.cts +8 -1
  9. package/dist/components/box.d.ts +8 -1
  10. package/dist/components/box.js +3 -2
  11. package/dist/components/box.js.map +1 -1
  12. package/dist/components/button-group.d.cts +1 -1
  13. package/dist/components/button-group.d.ts +1 -1
  14. package/dist/components/button.d.cts +2 -2
  15. package/dist/components/button.d.ts +2 -2
  16. package/dist/components/calendar.cjs +2 -2
  17. package/dist/components/calendar.cjs.map +1 -1
  18. package/dist/components/calendar.js +2 -2
  19. package/dist/components/calendar.js.map +1 -1
  20. package/dist/components/callout.cjs +1 -1
  21. package/dist/components/callout.cjs.map +1 -1
  22. package/dist/components/callout.d.cts +3 -3
  23. package/dist/components/callout.d.ts +3 -3
  24. package/dist/components/callout.js +1 -1
  25. package/dist/components/callout.js.map +1 -1
  26. package/dist/components/card.cjs +3 -2
  27. package/dist/components/card.cjs.map +1 -1
  28. package/dist/components/card.d.cts +7 -1
  29. package/dist/components/card.d.ts +7 -1
  30. package/dist/components/card.js +3 -2
  31. package/dist/components/card.js.map +1 -1
  32. package/dist/components/checkbox.d.cts +1 -1
  33. package/dist/components/checkbox.d.ts +1 -1
  34. package/dist/components/field.d.cts +1 -1
  35. package/dist/components/field.d.ts +1 -1
  36. package/dist/components/icon.cjs +1 -1
  37. package/dist/components/icon.js +1 -1
  38. package/dist/components/input-group.cjs +1 -1
  39. package/dist/components/input-group.cjs.map +1 -1
  40. package/dist/components/input-group.js +1 -1
  41. package/dist/components/input-group.js.map +1 -1
  42. package/dist/components/input.d.cts +1 -1
  43. package/dist/components/input.d.ts +1 -1
  44. package/dist/components/line-chart.cjs +1 -1
  45. package/dist/components/line-chart.js +2 -2
  46. package/dist/components/list.d.cts +1 -1
  47. package/dist/components/list.d.ts +1 -1
  48. package/dist/components/marker.d.cts +1 -1
  49. package/dist/components/marker.d.ts +1 -1
  50. package/dist/components/pill.cjs +20 -13
  51. package/dist/components/pill.cjs.map +1 -1
  52. package/dist/components/pill.d.cts +1 -1
  53. package/dist/components/pill.d.ts +1 -1
  54. package/dist/components/pill.js +20 -13
  55. package/dist/components/pill.js.map +1 -1
  56. package/dist/components/power-history-chart.cjs +1 -1
  57. package/dist/components/power-history-chart.js +2 -2
  58. package/dist/components/progress.cjs +1 -1
  59. package/dist/components/progress.cjs.map +1 -1
  60. package/dist/components/progress.js +1 -1
  61. package/dist/components/progress.js.map +1 -1
  62. package/dist/components/radio-card-group.cjs.map +1 -1
  63. package/dist/components/radio-card-group.js.map +1 -1
  64. package/dist/components/radio.d.cts +1 -1
  65. package/dist/components/radio.d.ts +1 -1
  66. package/dist/components/schedule-list.cjs +10 -7
  67. package/dist/components/schedule-list.cjs.map +1 -1
  68. package/dist/components/schedule-list.js +10 -7
  69. package/dist/components/schedule-list.js.map +1 -1
  70. package/dist/components/segmented-control.d.cts +1 -1
  71. package/dist/components/segmented-control.d.ts +1 -1
  72. package/dist/components/select.cjs +1 -1
  73. package/dist/components/select.d.cts +1 -1
  74. package/dist/components/select.d.ts +1 -1
  75. package/dist/components/select.js +1 -1
  76. package/dist/components/solar-forecast-chart.cjs +1 -1
  77. package/dist/components/solar-forecast-chart.js +2 -2
  78. package/dist/components/switch.d.cts +1 -1
  79. package/dist/components/switch.d.ts +1 -1
  80. package/dist/components/textarea.d.cts +1 -1
  81. package/dist/components/textarea.d.ts +1 -1
  82. package/dist/components/theme.cjs +18 -6
  83. package/dist/components/theme.cjs.map +1 -1
  84. package/dist/components/theme.d.cts +16 -2
  85. package/dist/components/theme.d.ts +16 -2
  86. package/dist/components/theme.js +19 -7
  87. package/dist/components/theme.js.map +1 -1
  88. package/dist/{generate-radix-colors-Bw-RYaV4.d.ts → generate-radix-colors-BY4Wjsm7.d.cts} +4 -2
  89. package/dist/{generate-radix-colors-Bw-RYaV4.d.cts → generate-radix-colors-BY4Wjsm7.d.ts} +4 -2
  90. package/dist/icons/material-symbol.cjs +1 -1
  91. package/dist/icons/material-symbol.cjs.map +1 -1
  92. package/dist/icons/material-symbol.js +1 -1
  93. package/dist/icons/material-symbol.js.map +1 -1
  94. package/dist/lib/accent-theme.cjs +367 -16
  95. package/dist/lib/accent-theme.cjs.map +1 -1
  96. package/dist/lib/accent-theme.d.cts +75 -6
  97. package/dist/lib/accent-theme.d.ts +75 -6
  98. package/dist/lib/accent-theme.js +365 -18
  99. package/dist/lib/accent-theme.js.map +1 -1
  100. package/dist/lib/container-chrome.cjs +9 -7
  101. package/dist/lib/container-chrome.cjs.map +1 -1
  102. package/dist/lib/container-chrome.d.cts +4 -3
  103. package/dist/lib/container-chrome.d.ts +4 -3
  104. package/dist/lib/container-chrome.js +9 -8
  105. package/dist/lib/container-chrome.js.map +1 -1
  106. package/dist/lib/generate-radix-colors.cjs +7 -0
  107. package/dist/lib/generate-radix-colors.cjs.map +1 -1
  108. package/dist/lib/generate-radix-colors.d.cts +2 -2
  109. package/dist/lib/generate-radix-colors.d.ts +2 -2
  110. package/dist/lib/generate-radix-colors.js +6 -1
  111. package/dist/lib/generate-radix-colors.js.map +1 -1
  112. package/dist/lib/input-box-variants.d.cts +1 -1
  113. package/dist/lib/input-box-variants.d.ts +1 -1
  114. package/dist/lib/theme-types.cjs +19 -0
  115. package/dist/lib/theme-types.cjs.map +1 -0
  116. package/dist/lib/theme-types.d.cts +2 -2
  117. package/dist/lib/theme-types.d.ts +2 -2
  118. package/dist/lib/theme-types.js +17 -1
  119. package/dist/lib/theme-types.js.map +1 -0
  120. package/dist/styles/material-symbol.css +3 -0
  121. package/dist/styles/spark-default.css +148 -0
  122. package/dist/styles/utilities.css +9 -8
  123. package/dist/{theme-types-1yB0d8mp.d.ts → theme-types-Bn5E15-P.d.cts} +12 -3
  124. package/dist/{theme-types-1yB0d8mp.d.cts → theme-types-Bn5E15-P.d.ts} +12 -3
  125. package/package.json +1 -1
@@ -1,6 +1,6 @@
1
1
  "use client";
2
2
 
3
- import { u as SparkStyle } from "../theme-types-1yB0d8mp.cjs";
3
+ import { f as SparkStyle } from "../theme-types-Bn5E15-P.cjs";
4
4
  import { SparkAccentColor } from "../lib/accent-colors.cjs";
5
5
  import * as React$1 from "react";
6
6
  import { Avatar as Avatar$1 } from "@base-ui/react/avatar";
@@ -1,6 +1,6 @@
1
1
  "use client";
2
2
 
3
- import { u as SparkStyle } from "../theme-types-1yB0d8mp.js";
3
+ import { f as SparkStyle } from "../theme-types-Bn5E15-P.js";
4
4
  import { SparkAccentColor } from "../lib/accent-colors.js";
5
5
  import * as React$1 from "react";
6
6
  import { Avatar as Avatar$1 } from "@base-ui/react/avatar";
@@ -1,6 +1,6 @@
1
1
  "use client";
2
2
 
3
- import { u as SparkStyle } from "../theme-types-1yB0d8mp.cjs";
3
+ 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
@@ -1,6 +1,6 @@
1
1
  "use client";
2
2
 
3
- import { u as SparkStyle } from "../theme-types-1yB0d8mp.js";
3
+ 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
@@ -1,8 +1,8 @@
1
1
  "use client";
2
2
  import { useReducedMotion } from "../hooks/use-reduced-motion.js";
3
+ import { cn } from "../utils/cn.js";
3
4
  import { localeNumberFormat } from "../utils/format.js";
4
5
  import { buildYAxisScale, formatYAxisTick, measureYAxisGutter } from "../utils/chart-scale.js";
5
- import { cn } from "../utils/cn.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";
@@ -22,7 +22,7 @@ const fixedPaddingClasses = {
22
22
  sm: "p-3",
23
23
  lg: "p-6"
24
24
  };
25
- function Box({ className, variant, color, radius = "2xl", padding = "md", render, ...props }) {
25
+ function Box({ className, variant, color, radius = "2xl", padding = "md", elevated, render, ...props }) {
26
26
  const interactive = render != null;
27
27
  const resolved = variant ?? "ambient";
28
28
  return (0, _base_ui_react_use_render.useRender)({
@@ -32,7 +32,8 @@ function Box({ className, variant, color, radius = "2xl", padding = "md", render
32
32
  "data-slot": "box",
33
33
  "data-variant": variant,
34
34
  "data-card-color": color === "accent" ? "accent" : void 0,
35
- className: (0, cnfast.cn)(boxVariants({ variant }), padding === "md" ? require_lib_container_chrome.containerPaddingAll[resolved] : fixedPaddingClasses[padding], require_lib_container_chrome.radiusClasses[radius], interactive && require_lib_container_chrome.containerInteractiveClasses(resolved), className)
35
+ "data-elevated": elevated ? "" : void 0,
36
+ className: (0, cnfast.cn)(boxVariants({ variant }), padding === "md" ? require_lib_container_chrome.containerPaddingAll[resolved] : fixedPaddingClasses[padding], require_lib_container_chrome.radiusClasses[radius], elevated && "bg-(--spark-elevated) [background-image:linear-gradient(var(--spark-card-bg,transparent),var(--spark-card-bg,transparent))] shadow-(--spark-card-shadow,var(--spark-shadow-1))", interactive && require_lib_container_chrome.containerInteractiveClasses(resolved, elevated), className)
36
37
  }, props)
37
38
  });
38
39
  }
@@ -1 +1 @@
1
- {"version":3,"file":"box.cjs","names":["containerChrome","containerPaddingAll","radiusClasses","containerInteractiveClasses"],"sources":["../../src/components/box.tsx"],"sourcesContent":["import { mergeProps } from '@base-ui/react/merge-props'\nimport { useRender } from '@base-ui/react/use-render'\nimport { cva } from 'class-variance-authority'\nimport type * as React from 'react'\nimport {\n containerChrome,\n containerInteractiveClasses,\n containerPaddingAll,\n radiusClasses,\n type ContainerRadius,\n} from '../lib/container-chrome'\nimport type { SparkCardColor, SparkCardVariant } from '../lib/theme-types'\nimport { cn } from '../utils/cn'\n\nconst boxVariants = cva('relative flex w-full flex-col', {\n variants: {\n variant: {\n ambient: containerChrome.ambient,\n soft: containerChrome.soft,\n surface: containerChrome.surface,\n outline: containerChrome.outline,\n ghost: containerChrome.ghost,\n solid: containerChrome.solid,\n },\n },\n defaultVariants: {\n variant: 'ambient',\n },\n})\n\ntype BoxPadding = 'none' | 'sm' | 'md' | 'lg'\n\nconst fixedPaddingClasses: Record<Exclude<BoxPadding, 'md'>, string> = {\n none: '',\n sm: 'p-3',\n lg: 'p-6',\n}\n\ninterface BoxProps extends useRender.ComponentProps<'div'> {\n /**\n * Same chrome recipe as `Card`, with none of its header/title/description/\n * footer slots — for wrapping arbitrary content instead. Unset → follows\n * the app-level `[data-card-variant]` knob (default soft-neutral).\n */\n variant?: SparkCardVariant\n /** Chrome palette. `neutral` (default) tracks the app neutral; `accent` tints with the brand accent. */\n color?: SparkCardColor\n /** Corner radius, as a named step. Unset → `2xl`. */\n radius?: ContainerRadius\n /** Padding on all sides. `md` (default) follows the variant's own inset (chromed variants pad, `ghost` sits flush); `none` strips it entirely for a clipped frame. */\n padding?: BoxPadding\n}\n\nfunction Box({\n className,\n variant,\n color,\n radius = '2xl',\n padding = 'md',\n render,\n ...props\n}: BoxProps) {\n const interactive = render != null\n const resolved = variant ?? 'ambient'\n return useRender({\n defaultTagName: 'div',\n render,\n props: mergeProps<'div'>(\n {\n 'data-slot': 'box',\n 'data-variant': variant,\n 'data-card-color': color === 'accent' ? 'accent' : undefined,\n className: cn(\n boxVariants({ variant }),\n padding === 'md'\n ? containerPaddingAll[resolved]\n : fixedPaddingClasses[padding],\n radiusClasses[radius],\n interactive && containerInteractiveClasses(resolved),\n className,\n ),\n } as React.ComponentProps<'div'>,\n props,\n ),\n })\n}\n\nexport { Box }\nexport type { BoxProps, BoxPadding }\n"],"mappings":";;;;;;;;AAcA,MAAM,eAAA,GAAA,yBAAA,KAAkB,iCAAiC;CACvD,UAAU,EACR,SAAS;EACP,SAASA,6BAAAA,gBAAgB;EACzB,MAAMA,6BAAAA,gBAAgB;EACtB,SAASA,6BAAAA,gBAAgB;EACzB,SAASA,6BAAAA,gBAAgB;EACzB,OAAOA,6BAAAA,gBAAgB;EACvB,OAAOA,6BAAAA,gBAAgB;CACzB,EACF;CACA,iBAAiB,EACf,SAAS,UACX;AACF,CAAC;AAID,MAAM,sBAAiE;CACrE,MAAM;CACN,IAAI;CACJ,IAAI;AACN;AAiBA,SAAS,IAAI,EACX,WACA,SACA,OACA,SAAS,OACT,UAAU,MACV,QACA,GAAG,SACQ;CACX,MAAM,cAAc,UAAU;CAC9B,MAAM,WAAW,WAAW;CAC5B,QAAA,GAAA,0BAAA,WAAiB;EACf,gBAAgB;EAChB;EACA,QAAA,GAAA,2BAAA,YACE;GACE,aAAa;GACb,gBAAgB;GAChB,mBAAmB,UAAU,WAAW,WAAW,KAAA;GACnD,YAAA,GAAA,OAAA,IACE,YAAY,EAAE,QAAQ,CAAC,GACvB,YAAY,OACRC,6BAAAA,oBAAoB,YACpB,oBAAoB,UACxBC,6BAAAA,cAAc,SACd,eAAeC,6BAAAA,4BAA4B,QAAQ,GACnD,SACF;EACF,GACA,KACF;CACF,CAAC;AACH"}
1
+ {"version":3,"file":"box.cjs","names":["containerChrome","containerPaddingAll","radiusClasses","containerInteractiveClasses"],"sources":["../../src/components/box.tsx"],"sourcesContent":["import { mergeProps } from '@base-ui/react/merge-props'\nimport { useRender } from '@base-ui/react/use-render'\nimport { cva } from 'class-variance-authority'\nimport type * as React from 'react'\nimport {\n containerChrome,\n containerElevated,\n containerInteractiveClasses,\n containerPaddingAll,\n radiusClasses,\n type ContainerRadius,\n} from '../lib/container-chrome'\nimport type { SparkCardColor, SparkCardVariant } from '../lib/theme-types'\nimport { cn } from '../utils/cn'\n\nconst boxVariants = cva('relative flex w-full flex-col', {\n variants: {\n variant: {\n ambient: containerChrome.ambient,\n soft: containerChrome.soft,\n surface: containerChrome.surface,\n outline: containerChrome.outline,\n ghost: containerChrome.ghost,\n solid: containerChrome.solid,\n },\n },\n defaultVariants: {\n variant: 'ambient',\n },\n})\n\ntype BoxPadding = 'none' | 'sm' | 'md' | 'lg'\n\nconst fixedPaddingClasses: Record<Exclude<BoxPadding, 'md'>, string> = {\n none: '',\n sm: 'p-3',\n lg: 'p-6',\n}\n\ninterface BoxProps extends useRender.ComponentProps<'div'> {\n /**\n * Same chrome recipe as `Card`, with none of its header/title/description/\n * footer slots — for wrapping arbitrary content instead. Unset → follows\n * the app-level `[data-card-variant]` knob (default soft-neutral).\n */\n variant?: SparkCardVariant\n /** Chrome palette. `neutral` (default) tracks the app neutral; `accent` tints with the brand accent. */\n color?: SparkCardColor\n /** Corner radius, as a named step. Unset → `2xl`. */\n radius?: ContainerRadius\n /** Padding on all sides. `md` (default) follows the variant's own inset (chromed variants pad, `ghost` sits flush); `none` strips it entirely for a clipped frame. */\n padding?: BoxPadding\n /**\n * Lift the box off an arbitrary backdrop (a photo, not the flat app canvas):\n * an opaque `--spark-elevated` fill plus a shadow, so no `variant`/`color`\n * combination — including a translucent one like `soft` — can bleed it through.\n */\n elevated?: boolean\n}\n\nfunction Box({\n className,\n variant,\n color,\n radius = '2xl',\n padding = 'md',\n elevated,\n render,\n ...props\n}: BoxProps) {\n const interactive = render != null\n const resolved = variant ?? 'ambient'\n return useRender({\n defaultTagName: 'div',\n render,\n props: mergeProps<'div'>(\n {\n 'data-slot': 'box',\n 'data-variant': variant,\n 'data-card-color': color === 'accent' ? 'accent' : undefined,\n 'data-elevated': elevated ? '' : undefined,\n className: cn(\n boxVariants({ variant }),\n padding === 'md'\n ? containerPaddingAll[resolved]\n : fixedPaddingClasses[padding],\n radiusClasses[radius],\n elevated && containerElevated,\n interactive && containerInteractiveClasses(resolved, elevated),\n className,\n ),\n } as React.ComponentProps<'div'>,\n props,\n ),\n })\n}\n\nexport { Box }\nexport type { BoxProps, BoxPadding }\n"],"mappings":";;;;;;;;AAeA,MAAM,eAAA,GAAA,yBAAA,KAAkB,iCAAiC;CACvD,UAAU,EACR,SAAS;EACP,SAASA,6BAAAA,gBAAgB;EACzB,MAAMA,6BAAAA,gBAAgB;EACtB,SAASA,6BAAAA,gBAAgB;EACzB,SAASA,6BAAAA,gBAAgB;EACzB,OAAOA,6BAAAA,gBAAgB;EACvB,OAAOA,6BAAAA,gBAAgB;CACzB,EACF;CACA,iBAAiB,EACf,SAAS,UACX;AACF,CAAC;AAID,MAAM,sBAAiE;CACrE,MAAM;CACN,IAAI;CACJ,IAAI;AACN;AAuBA,SAAS,IAAI,EACX,WACA,SACA,OACA,SAAS,OACT,UAAU,MACV,UACA,QACA,GAAG,SACQ;CACX,MAAM,cAAc,UAAU;CAC9B,MAAM,WAAW,WAAW;CAC5B,QAAA,GAAA,0BAAA,WAAiB;EACf,gBAAgB;EAChB;EACA,QAAA,GAAA,2BAAA,YACE;GACE,aAAa;GACb,gBAAgB;GAChB,mBAAmB,UAAU,WAAW,WAAW,KAAA;GACnD,iBAAiB,WAAW,KAAK,KAAA;GACjC,YAAA,GAAA,OAAA,IACE,YAAY,EAAE,QAAQ,CAAC,GACvB,YAAY,OACRC,6BAAAA,oBAAoB,YACpB,oBAAoB,UACxBC,6BAAAA,cAAc,SACd,YAAA,kLACA,eAAeC,6BAAAA,4BAA4B,UAAU,QAAQ,GAC7D,SACF;EACF,GACA,KACF;CACF,CAAC;AACH"}
@@ -1,6 +1,6 @@
1
1
  "use client";
2
2
 
3
- import { n as SparkCardVariant, t as SparkCardColor } from "../theme-types-1yB0d8mp.cjs";
3
+ import { n as SparkCardColor, r as SparkCardVariant } from "../theme-types-Bn5E15-P.cjs";
4
4
  import { ContainerRadius } from "../lib/container-chrome.cjs";
5
5
  import * as React$1 from "react";
6
6
  import { useRender } from "@base-ui/react/use-render";
@@ -20,6 +20,12 @@ interface BoxProps extends useRender.ComponentProps<'div'> {
20
20
  radius?: ContainerRadius;
21
21
  /** Padding on all sides. `md` (default) follows the variant's own inset (chromed variants pad, `ghost` sits flush); `none` strips it entirely for a clipped frame. */
22
22
  padding?: BoxPadding;
23
+ /**
24
+ * Lift the box off an arbitrary backdrop (a photo, not the flat app canvas):
25
+ * an opaque `--spark-elevated` fill plus a shadow, so no `variant`/`color`
26
+ * combination — including a translucent one like `soft` — can bleed it through.
27
+ */
28
+ elevated?: boolean;
23
29
  }
24
30
  declare function Box({
25
31
  className,
@@ -27,6 +33,7 @@ declare function Box({
27
33
  color,
28
34
  radius,
29
35
  padding,
36
+ elevated,
30
37
  render,
31
38
  ...props
32
39
  }: BoxProps): React$1.ReactElement<unknown, string | React$1.JSXElementConstructor<any>>;
@@ -1,6 +1,6 @@
1
1
  "use client";
2
2
 
3
- import { n as SparkCardVariant, t as SparkCardColor } from "../theme-types-1yB0d8mp.js";
3
+ import { n as SparkCardColor, r as SparkCardVariant } from "../theme-types-Bn5E15-P.js";
4
4
  import { ContainerRadius } from "../lib/container-chrome.js";
5
5
  import * as React$1 from "react";
6
6
  import { useRender } from "@base-ui/react/use-render";
@@ -20,6 +20,12 @@ interface BoxProps extends useRender.ComponentProps<'div'> {
20
20
  radius?: ContainerRadius;
21
21
  /** Padding on all sides. `md` (default) follows the variant's own inset (chromed variants pad, `ghost` sits flush); `none` strips it entirely for a clipped frame. */
22
22
  padding?: BoxPadding;
23
+ /**
24
+ * Lift the box off an arbitrary backdrop (a photo, not the flat app canvas):
25
+ * an opaque `--spark-elevated` fill plus a shadow, so no `variant`/`color`
26
+ * combination — including a translucent one like `soft` — can bleed it through.
27
+ */
28
+ elevated?: boolean;
23
29
  }
24
30
  declare function Box({
25
31
  className,
@@ -27,6 +33,7 @@ declare function Box({
27
33
  color,
28
34
  radius,
29
35
  padding,
36
+ elevated,
30
37
  render,
31
38
  ...props
32
39
  }: BoxProps): React$1.ReactElement<unknown, string | React$1.JSXElementConstructor<any>>;
@@ -21,7 +21,7 @@ const fixedPaddingClasses = {
21
21
  sm: "p-3",
22
22
  lg: "p-6"
23
23
  };
24
- function Box({ className, variant, color, radius = "2xl", padding = "md", render, ...props }) {
24
+ function Box({ className, variant, color, radius = "2xl", padding = "md", elevated, render, ...props }) {
25
25
  const interactive = render != null;
26
26
  const resolved = variant ?? "ambient";
27
27
  return useRender({
@@ -31,7 +31,8 @@ function Box({ className, variant, color, radius = "2xl", padding = "md", render
31
31
  "data-slot": "box",
32
32
  "data-variant": variant,
33
33
  "data-card-color": color === "accent" ? "accent" : void 0,
34
- className: cn(boxVariants({ variant }), padding === "md" ? containerPaddingAll[resolved] : fixedPaddingClasses[padding], radiusClasses[radius], interactive && containerInteractiveClasses(resolved), className)
34
+ "data-elevated": elevated ? "" : void 0,
35
+ className: cn(boxVariants({ variant }), padding === "md" ? containerPaddingAll[resolved] : fixedPaddingClasses[padding], radiusClasses[radius], elevated && "bg-(--spark-elevated) [background-image:linear-gradient(var(--spark-card-bg,transparent),var(--spark-card-bg,transparent))] shadow-(--spark-card-shadow,var(--spark-shadow-1))", interactive && containerInteractiveClasses(resolved, elevated), className)
35
36
  }, props)
36
37
  });
37
38
  }
@@ -1 +1 @@
1
- {"version":3,"file":"box.js","names":[],"sources":["../../src/components/box.tsx"],"sourcesContent":["import { mergeProps } from '@base-ui/react/merge-props'\nimport { useRender } from '@base-ui/react/use-render'\nimport { cva } from 'class-variance-authority'\nimport type * as React from 'react'\nimport {\n containerChrome,\n containerInteractiveClasses,\n containerPaddingAll,\n radiusClasses,\n type ContainerRadius,\n} from '../lib/container-chrome'\nimport type { SparkCardColor, SparkCardVariant } from '../lib/theme-types'\nimport { cn } from '../utils/cn'\n\nconst boxVariants = cva('relative flex w-full flex-col', {\n variants: {\n variant: {\n ambient: containerChrome.ambient,\n soft: containerChrome.soft,\n surface: containerChrome.surface,\n outline: containerChrome.outline,\n ghost: containerChrome.ghost,\n solid: containerChrome.solid,\n },\n },\n defaultVariants: {\n variant: 'ambient',\n },\n})\n\ntype BoxPadding = 'none' | 'sm' | 'md' | 'lg'\n\nconst fixedPaddingClasses: Record<Exclude<BoxPadding, 'md'>, string> = {\n none: '',\n sm: 'p-3',\n lg: 'p-6',\n}\n\ninterface BoxProps extends useRender.ComponentProps<'div'> {\n /**\n * Same chrome recipe as `Card`, with none of its header/title/description/\n * footer slots — for wrapping arbitrary content instead. Unset → follows\n * the app-level `[data-card-variant]` knob (default soft-neutral).\n */\n variant?: SparkCardVariant\n /** Chrome palette. `neutral` (default) tracks the app neutral; `accent` tints with the brand accent. */\n color?: SparkCardColor\n /** Corner radius, as a named step. Unset → `2xl`. */\n radius?: ContainerRadius\n /** Padding on all sides. `md` (default) follows the variant's own inset (chromed variants pad, `ghost` sits flush); `none` strips it entirely for a clipped frame. */\n padding?: BoxPadding\n}\n\nfunction Box({\n className,\n variant,\n color,\n radius = '2xl',\n padding = 'md',\n render,\n ...props\n}: BoxProps) {\n const interactive = render != null\n const resolved = variant ?? 'ambient'\n return useRender({\n defaultTagName: 'div',\n render,\n props: mergeProps<'div'>(\n {\n 'data-slot': 'box',\n 'data-variant': variant,\n 'data-card-color': color === 'accent' ? 'accent' : undefined,\n className: cn(\n boxVariants({ variant }),\n padding === 'md'\n ? containerPaddingAll[resolved]\n : fixedPaddingClasses[padding],\n radiusClasses[radius],\n interactive && containerInteractiveClasses(resolved),\n className,\n ),\n } as React.ComponentProps<'div'>,\n props,\n ),\n })\n}\n\nexport { Box }\nexport type { BoxProps, BoxPadding }\n"],"mappings":";;;;;;;AAcA,MAAM,cAAc,IAAI,iCAAiC;CACvD,UAAU,EACR,SAAS;EACP,SAAS,gBAAgB;EACzB,MAAM,gBAAgB;EACtB,SAAS,gBAAgB;EACzB,SAAS,gBAAgB;EACzB,OAAO,gBAAgB;EACvB,OAAO,gBAAgB;CACzB,EACF;CACA,iBAAiB,EACf,SAAS,UACX;AACF,CAAC;AAID,MAAM,sBAAiE;CACrE,MAAM;CACN,IAAI;CACJ,IAAI;AACN;AAiBA,SAAS,IAAI,EACX,WACA,SACA,OACA,SAAS,OACT,UAAU,MACV,QACA,GAAG,SACQ;CACX,MAAM,cAAc,UAAU;CAC9B,MAAM,WAAW,WAAW;CAC5B,OAAO,UAAU;EACf,gBAAgB;EAChB;EACA,OAAO,WACL;GACE,aAAa;GACb,gBAAgB;GAChB,mBAAmB,UAAU,WAAW,WAAW,KAAA;GACnD,WAAW,GACT,YAAY,EAAE,QAAQ,CAAC,GACvB,YAAY,OACR,oBAAoB,YACpB,oBAAoB,UACxB,cAAc,SACd,eAAe,4BAA4B,QAAQ,GACnD,SACF;EACF,GACA,KACF;CACF,CAAC;AACH"}
1
+ {"version":3,"file":"box.js","names":[],"sources":["../../src/components/box.tsx"],"sourcesContent":["import { mergeProps } from '@base-ui/react/merge-props'\nimport { useRender } from '@base-ui/react/use-render'\nimport { cva } from 'class-variance-authority'\nimport type * as React from 'react'\nimport {\n containerChrome,\n containerElevated,\n containerInteractiveClasses,\n containerPaddingAll,\n radiusClasses,\n type ContainerRadius,\n} from '../lib/container-chrome'\nimport type { SparkCardColor, SparkCardVariant } from '../lib/theme-types'\nimport { cn } from '../utils/cn'\n\nconst boxVariants = cva('relative flex w-full flex-col', {\n variants: {\n variant: {\n ambient: containerChrome.ambient,\n soft: containerChrome.soft,\n surface: containerChrome.surface,\n outline: containerChrome.outline,\n ghost: containerChrome.ghost,\n solid: containerChrome.solid,\n },\n },\n defaultVariants: {\n variant: 'ambient',\n },\n})\n\ntype BoxPadding = 'none' | 'sm' | 'md' | 'lg'\n\nconst fixedPaddingClasses: Record<Exclude<BoxPadding, 'md'>, string> = {\n none: '',\n sm: 'p-3',\n lg: 'p-6',\n}\n\ninterface BoxProps extends useRender.ComponentProps<'div'> {\n /**\n * Same chrome recipe as `Card`, with none of its header/title/description/\n * footer slots — for wrapping arbitrary content instead. Unset → follows\n * the app-level `[data-card-variant]` knob (default soft-neutral).\n */\n variant?: SparkCardVariant\n /** Chrome palette. `neutral` (default) tracks the app neutral; `accent` tints with the brand accent. */\n color?: SparkCardColor\n /** Corner radius, as a named step. Unset → `2xl`. */\n radius?: ContainerRadius\n /** Padding on all sides. `md` (default) follows the variant's own inset (chromed variants pad, `ghost` sits flush); `none` strips it entirely for a clipped frame. */\n padding?: BoxPadding\n /**\n * Lift the box off an arbitrary backdrop (a photo, not the flat app canvas):\n * an opaque `--spark-elevated` fill plus a shadow, so no `variant`/`color`\n * combination — including a translucent one like `soft` — can bleed it through.\n */\n elevated?: boolean\n}\n\nfunction Box({\n className,\n variant,\n color,\n radius = '2xl',\n padding = 'md',\n elevated,\n render,\n ...props\n}: BoxProps) {\n const interactive = render != null\n const resolved = variant ?? 'ambient'\n return useRender({\n defaultTagName: 'div',\n render,\n props: mergeProps<'div'>(\n {\n 'data-slot': 'box',\n 'data-variant': variant,\n 'data-card-color': color === 'accent' ? 'accent' : undefined,\n 'data-elevated': elevated ? '' : undefined,\n className: cn(\n boxVariants({ variant }),\n padding === 'md'\n ? containerPaddingAll[resolved]\n : fixedPaddingClasses[padding],\n radiusClasses[radius],\n elevated && containerElevated,\n interactive && containerInteractiveClasses(resolved, elevated),\n className,\n ),\n } as React.ComponentProps<'div'>,\n props,\n ),\n })\n}\n\nexport { Box }\nexport type { BoxProps, BoxPadding }\n"],"mappings":";;;;;;;AAeA,MAAM,cAAc,IAAI,iCAAiC;CACvD,UAAU,EACR,SAAS;EACP,SAAS,gBAAgB;EACzB,MAAM,gBAAgB;EACtB,SAAS,gBAAgB;EACzB,SAAS,gBAAgB;EACzB,OAAO,gBAAgB;EACvB,OAAO,gBAAgB;CACzB,EACF;CACA,iBAAiB,EACf,SAAS,UACX;AACF,CAAC;AAID,MAAM,sBAAiE;CACrE,MAAM;CACN,IAAI;CACJ,IAAI;AACN;AAuBA,SAAS,IAAI,EACX,WACA,SACA,OACA,SAAS,OACT,UAAU,MACV,UACA,QACA,GAAG,SACQ;CACX,MAAM,cAAc,UAAU;CAC9B,MAAM,WAAW,WAAW;CAC5B,OAAO,UAAU;EACf,gBAAgB;EAChB;EACA,OAAO,WACL;GACE,aAAa;GACb,gBAAgB;GAChB,mBAAmB,UAAU,WAAW,WAAW,KAAA;GACnD,iBAAiB,WAAW,KAAK,KAAA;GACjC,WAAW,GACT,YAAY,EAAE,QAAQ,CAAC,GACvB,YAAY,OACR,oBAAoB,YACpB,oBAAoB,UACxB,cAAc,SACd,YAAA,kLACA,eAAe,4BAA4B,UAAU,QAAQ,GAC7D,SACF;EACF,GACA,KACF;CACF,CAAC;AACH"}
@@ -1,6 +1,6 @@
1
1
  "use client";
2
2
 
3
- import { u as SparkStyle } from "../theme-types-1yB0d8mp.cjs";
3
+ import { f as SparkStyle } from "../theme-types-Bn5E15-P.cjs";
4
4
  import { SparkAccentColor } from "../lib/accent-colors.cjs";
5
5
  import * as React$1 from "react";
6
6
  import { Button } from "@base-ui/react/button";
@@ -1,6 +1,6 @@
1
1
  "use client";
2
2
 
3
- import { u as SparkStyle } from "../theme-types-1yB0d8mp.js";
3
+ import { f as SparkStyle } from "../theme-types-Bn5E15-P.js";
4
4
  import { SparkAccentColor } from "../lib/accent-colors.js";
5
5
  import * as React$1 from "react";
6
6
  import { Button } from "@base-ui/react/button";
@@ -1,6 +1,6 @@
1
1
  "use client";
2
2
 
3
- import { u as SparkStyle } from "../theme-types-1yB0d8mp.cjs";
3
+ import { f as SparkStyle } from "../theme-types-Bn5E15-P.cjs";
4
4
  import * as React$1 from "react";
5
5
  import { Button as Button$1 } from "@base-ui/react/button";
6
6
  import { VariantProps } from "class-variance-authority";
@@ -9,7 +9,7 @@ import { VariantProps } from "class-variance-authority";
9
9
  declare const buttonVariants: (props?: ({
10
10
  variant?: "secondary" | "destructive" | "primary" | "tertiary" | "bare" | null | undefined;
11
11
  color?: "accent" | "neutral" | "danger" | null | undefined;
12
- size?: "small" | "icon" | "default" | "medium" | "icon-small" | "icon-medium" | null | undefined;
12
+ size?: "small" | "default" | "icon" | "medium" | "icon-small" | "icon-medium" | null | undefined;
13
13
  } & import("class-variance-authority/types").ClassProp) | undefined) => string;
14
14
  type SparkButtonColor = 'accent' | 'neutral' | 'danger';
15
15
  interface ButtonProps extends Omit<React$1.ComponentProps<typeof Button$1>, 'ref'>, Omit<VariantProps<typeof buttonVariants>, 'variant' | 'color'> {
@@ -1,6 +1,6 @@
1
1
  "use client";
2
2
 
3
- import { u as SparkStyle } from "../theme-types-1yB0d8mp.js";
3
+ import { f as SparkStyle } from "../theme-types-Bn5E15-P.js";
4
4
  import * as React$1 from "react";
5
5
  import { Button as Button$1 } from "@base-ui/react/button";
6
6
  import { VariantProps } from "class-variance-authority";
@@ -9,7 +9,7 @@ import { VariantProps } from "class-variance-authority";
9
9
  declare const buttonVariants: (props?: ({
10
10
  variant?: "secondary" | "destructive" | "primary" | "tertiary" | "bare" | null | undefined;
11
11
  color?: "accent" | "neutral" | "danger" | null | undefined;
12
- size?: "small" | "icon" | "default" | "medium" | "icon-small" | "icon-medium" | null | undefined;
12
+ size?: "small" | "default" | "icon" | "medium" | "icon-small" | "icon-medium" | null | undefined;
13
13
  } & import("class-variance-authority/types").ClassProp) | undefined) => string;
14
14
  type SparkButtonColor = 'accent' | 'neutral' | 'danger';
15
15
  interface ButtonProps extends Omit<React$1.ComponentProps<typeof Button$1>, 'ref'>, Omit<VariantProps<typeof buttonVariants>, 'variant' | 'color'> {
@@ -33,11 +33,11 @@ function Calendar({ className, classNames, showOutsideDays = true, fixedWeeks =
33
33
  day_button: (0, cnfast.cn)(require_components_button.buttonVariants({
34
34
  size: "icon",
35
35
  variant: "tertiary"
36
- }), "size-10 shrink-0 rounded-full p-0 font-normal text-gray in-aria-selected:rounded-full in-aria-selected:bg-base-accent-solid in-aria-selected:text-accent-contrast hover:in-aria-selected:bg-spark-10 hover:in-aria-selected:text-accent-contrast"),
36
+ }), "size-10 shrink-0 rounded-full p-0 font-normal text-gray in-aria-selected:rounded-full in-aria-selected:bg-(--spark-style-bg,var(--spark-9)) in-aria-selected:text-(--spark-style-fg,var(--spark-contrast)) hover:in-aria-selected:bg-(--spark-style-bg-hover,var(--spark-10))"),
37
37
  range_start: "range-start",
38
38
  range_end: "range-end",
39
39
  selected: "rounded-full",
40
- today: (0, cnfast.cn)("relative bg-base-gray-soft text-gray", showTodayDot && "after:absolute after:right-0 after:-bottom-1 after:left-0 after:m-auto after:inline-flex after:h-1 after:w-1 after:rounded-full after:bg-base-accent-solid after:content-[\"\"]"),
40
+ today: (0, cnfast.cn)("relative bg-base-gray-soft text-gray", showTodayDot && "after:absolute after:right-0 after:-bottom-1 after:left-0 after:m-auto after:inline-flex after:h-1 after:w-1 after:rounded-full after:bg-(--spark-style-bg,var(--spark-9)) after:content-[\"\"]"),
41
41
  outside: "outside text-gray-light opacity-50 aria-selected:bg-base-gray-soft aria-selected:text-gray-light",
42
42
  disabled: "text-gray-light opacity-50",
43
43
  range_middle: "aria-selected:bg-base-gray-soft aria-selected:text-gray",
@@ -1 +1 @@
1
- {"version":3,"file":"calendar.cjs","names":["DayPicker","buttonVariants","MaterialSymbol"],"sources":["../../src/components/calendar.tsx"],"sourcesContent":["import { DayPicker } from '@daypicker/react'\nimport * as React from 'react'\nimport { MaterialSymbol } from '../icons/material-symbol'\nimport { cn } from '../utils/cn'\nimport { buttonVariants } from './button'\n\ntype CalendarProps = React.ComponentProps<typeof DayPicker> & {\n showTodayDot?: boolean\n}\n\n// Pass `locale` (from '@daypicker/react/locale') for localized month/weekday\n// names — the library ships no language default.\nfunction Calendar({\n className,\n classNames,\n showOutsideDays = true,\n fixedWeeks = true,\n showTodayDot = true,\n ...props\n}: CalendarProps) {\n return (\n <DayPicker\n className={cn('p-3', className)}\n classNames={{\n months: 'relative',\n month: 'flex flex-col gap-2',\n month_caption: 'flex h-10 items-center justify-center',\n caption_label: 'text-sm font-bold text-gray',\n button_previous: cn(\n buttonVariants({ size: 'icon', variant: 'tertiary' }),\n 'absolute top-0 left-0 z-10 text-gray-light hover:text-gray',\n ),\n button_next: cn(\n buttonVariants({ size: 'icon', variant: 'tertiary' }),\n 'absolute top-0 right-0 z-10 text-gray-light hover:text-gray',\n ),\n month_grid: 'w-full border-collapse',\n weekdays: 'flex w-full justify-between',\n weekday:\n 'mt-0.5 flex h-10 w-10 items-center justify-center rounded-full text-sm font-bold text-gray',\n week: 'mt-1 flex w-full justify-between',\n day: cn(\n 'relative mx-0.5 flex h-10 w-10 items-center justify-center rounded-full p-0 text-center text-sm focus-within:relative focus-within:z-20',\n props.mode === 'range'\n ? '[&:has(>.range-end)]:rounded-r-full [&:has(>.range-start)]:rounded-l-full first:[&:has([aria-selected])]:rounded-l-full last:[&:has([aria-selected])]:rounded-r-full'\n : '[&:has([aria-selected])]:rounded-full',\n ),\n day_button: cn(\n buttonVariants({ size: 'icon', variant: 'tertiary' }),\n // hover:…:bg-spark-10 outranks tertiary's hover:bg-gray-a3 — selected days\n // darken like a solid button instead of washing out gray under white text\n 'size-10 shrink-0 rounded-full p-0 font-normal text-gray in-aria-selected:rounded-full in-aria-selected:bg-base-accent-solid in-aria-selected:text-accent-contrast hover:in-aria-selected:bg-spark-10 hover:in-aria-selected:text-accent-contrast',\n ),\n range_start: 'range-start',\n range_end: 'range-end',\n selected: 'rounded-full',\n today: cn(\n 'relative bg-base-gray-soft text-gray',\n showTodayDot &&\n 'after:absolute after:right-0 after:-bottom-1 after:left-0 after:m-auto after:inline-flex after:h-1 after:w-1 after:rounded-full after:bg-base-accent-solid after:content-[\"\"]',\n ),\n outside:\n 'outside text-gray-light opacity-50 aria-selected:bg-base-gray-soft aria-selected:text-gray-light',\n disabled: 'text-gray-light opacity-50',\n range_middle: 'aria-selected:bg-base-gray-soft aria-selected:text-gray',\n hidden: 'invisible',\n ...classNames,\n }}\n components={{\n Chevron: ({ orientation }) => (\n <MaterialSymbol\n className={cn(\n 'text-[20px]',\n orientation === 'up' && 'rotate-90',\n orientation === 'down' && '-rotate-90',\n )}\n name={orientation === 'right' ? 'chevron_right' : 'chevron_left'}\n />\n ),\n }}\n fixedWeeks={fixedWeeks}\n showOutsideDays={showOutsideDays}\n {...props}\n />\n )\n}\n\nexport { Calendar }\nexport type { CalendarProps }\n"],"mappings":";;;;;;;;;;;AAYA,SAAS,SAAS,EAChB,WACA,YACA,kBAAkB,MAClB,aAAa,MACb,eAAe,MACf,GAAG,SACa;CAChB,OACE,iBAAA,GAAA,kBAAA,KAACA,iBAAAA,WAAD;EACE,YAAA,GAAA,OAAA,IAAc,OAAO,SAAS;EAC9B,YAAY;GACV,QAAQ;GACR,OAAO;GACP,eAAe;GACf,eAAe;GACf,kBAAA,GAAA,OAAA,IACEC,0BAAAA,eAAe;IAAE,MAAM;IAAQ,SAAS;GAAW,CAAC,GACpD,4DACF;GACA,cAAA,GAAA,OAAA,IACEA,0BAAAA,eAAe;IAAE,MAAM;IAAQ,SAAS;GAAW,CAAC,GACpD,6DACF;GACA,YAAY;GACZ,UAAU;GACV,SACE;GACF,MAAM;GACN,MAAA,GAAA,OAAA,IACE,2IACA,MAAM,SAAS,UACX,yKACA,uCACN;GACA,aAAA,GAAA,OAAA,IACEA,0BAAAA,eAAe;IAAE,MAAM;IAAQ,SAAS;GAAW,CAAC,GAGpD,kPACF;GACA,aAAa;GACb,WAAW;GACX,UAAU;GACV,QAAA,GAAA,OAAA,IACE,wCACA,gBACE,iLACJ;GACA,SACE;GACF,UAAU;GACV,cAAc;GACd,QAAQ;GACR,GAAG;EACL;EACA,YAAY,EACV,UAAU,EAAE,kBACV,iBAAA,GAAA,kBAAA,KAACC,8BAAAA,gBAAD;GACE,YAAA,GAAA,OAAA,IACE,eACA,gBAAgB,QAAQ,aACxB,gBAAgB,UAAU,YAC5B;GACA,MAAM,gBAAgB,UAAU,kBAAkB;EACnD,CAAA,EAEL;EACY;EACK;EACjB,GAAI;CACL,CAAA;AAEL"}
1
+ {"version":3,"file":"calendar.cjs","names":["DayPicker","buttonVariants","MaterialSymbol"],"sources":["../../src/components/calendar.tsx"],"sourcesContent":["import { DayPicker } from '@daypicker/react'\nimport * as React from 'react'\nimport { MaterialSymbol } from '../icons/material-symbol'\nimport { cn } from '../utils/cn'\nimport { buttonVariants } from './button'\n\ntype CalendarProps = React.ComponentProps<typeof DayPicker> & {\n showTodayDot?: boolean\n}\n\n// Pass `locale` (from '@daypicker/react/locale') for localized month/weekday\n// names — the library ships no language default.\nfunction Calendar({\n className,\n classNames,\n showOutsideDays = true,\n fixedWeeks = true,\n showTodayDot = true,\n ...props\n}: CalendarProps) {\n return (\n <DayPicker\n className={cn('p-3', className)}\n classNames={{\n months: 'relative',\n month: 'flex flex-col gap-2',\n month_caption: 'flex h-10 items-center justify-center',\n caption_label: 'text-sm font-bold text-gray',\n button_previous: cn(\n buttonVariants({ size: 'icon', variant: 'tertiary' }),\n 'absolute top-0 left-0 z-10 text-gray-light hover:text-gray',\n ),\n button_next: cn(\n buttonVariants({ size: 'icon', variant: 'tertiary' }),\n 'absolute top-0 right-0 z-10 text-gray-light hover:text-gray',\n ),\n month_grid: 'w-full border-collapse',\n weekdays: 'flex w-full justify-between',\n weekday:\n 'mt-0.5 flex h-10 w-10 items-center justify-center rounded-full text-sm font-bold text-gray',\n week: 'mt-1 flex w-full justify-between',\n day: cn(\n 'relative mx-0.5 flex h-10 w-10 items-center justify-center rounded-full p-0 text-center text-sm focus-within:relative focus-within:z-20',\n props.mode === 'range'\n ? '[&:has(>.range-end)]:rounded-r-full [&:has(>.range-start)]:rounded-l-full first:[&:has([aria-selected])]:rounded-l-full last:[&:has([aria-selected])]:rounded-r-full'\n : '[&:has([aria-selected])]:rounded-full',\n ),\n day_button: cn(\n buttonVariants({ size: 'icon', variant: 'tertiary' }),\n // hover:…:bg-(--spark-style-bg-hover) outranks tertiary's hover:bg-gray-a3 —\n // selected days darken like a solid button instead of washing out gray\n 'size-10 shrink-0 rounded-full p-0 font-normal text-gray in-aria-selected:rounded-full in-aria-selected:bg-(--spark-style-bg,var(--spark-9)) in-aria-selected:text-(--spark-style-fg,var(--spark-contrast)) hover:in-aria-selected:bg-(--spark-style-bg-hover,var(--spark-10))',\n ),\n range_start: 'range-start',\n range_end: 'range-end',\n selected: 'rounded-full',\n today: cn(\n 'relative bg-base-gray-soft text-gray',\n showTodayDot &&\n 'after:absolute after:right-0 after:-bottom-1 after:left-0 after:m-auto after:inline-flex after:h-1 after:w-1 after:rounded-full after:bg-(--spark-style-bg,var(--spark-9)) after:content-[\"\"]',\n ),\n outside:\n 'outside text-gray-light opacity-50 aria-selected:bg-base-gray-soft aria-selected:text-gray-light',\n disabled: 'text-gray-light opacity-50',\n range_middle: 'aria-selected:bg-base-gray-soft aria-selected:text-gray',\n hidden: 'invisible',\n ...classNames,\n }}\n components={{\n Chevron: ({ orientation }) => (\n <MaterialSymbol\n className={cn(\n 'text-[20px]',\n orientation === 'up' && 'rotate-90',\n orientation === 'down' && '-rotate-90',\n )}\n name={orientation === 'right' ? 'chevron_right' : 'chevron_left'}\n />\n ),\n }}\n fixedWeeks={fixedWeeks}\n showOutsideDays={showOutsideDays}\n {...props}\n />\n )\n}\n\nexport { Calendar }\nexport type { CalendarProps }\n"],"mappings":";;;;;;;;;;;AAYA,SAAS,SAAS,EAChB,WACA,YACA,kBAAkB,MAClB,aAAa,MACb,eAAe,MACf,GAAG,SACa;CAChB,OACE,iBAAA,GAAA,kBAAA,KAACA,iBAAAA,WAAD;EACE,YAAA,GAAA,OAAA,IAAc,OAAO,SAAS;EAC9B,YAAY;GACV,QAAQ;GACR,OAAO;GACP,eAAe;GACf,eAAe;GACf,kBAAA,GAAA,OAAA,IACEC,0BAAAA,eAAe;IAAE,MAAM;IAAQ,SAAS;GAAW,CAAC,GACpD,4DACF;GACA,cAAA,GAAA,OAAA,IACEA,0BAAAA,eAAe;IAAE,MAAM;IAAQ,SAAS;GAAW,CAAC,GACpD,6DACF;GACA,YAAY;GACZ,UAAU;GACV,SACE;GACF,MAAM;GACN,MAAA,GAAA,OAAA,IACE,2IACA,MAAM,SAAS,UACX,yKACA,uCACN;GACA,aAAA,GAAA,OAAA,IACEA,0BAAAA,eAAe;IAAE,MAAM;IAAQ,SAAS;GAAW,CAAC,GAGpD,+QACF;GACA,aAAa;GACb,WAAW;GACX,UAAU;GACV,QAAA,GAAA,OAAA,IACE,wCACA,gBACE,iMACJ;GACA,SACE;GACF,UAAU;GACV,cAAc;GACd,QAAQ;GACR,GAAG;EACL;EACA,YAAY,EACV,UAAU,EAAE,kBACV,iBAAA,GAAA,kBAAA,KAACC,8BAAAA,gBAAD;GACE,YAAA,GAAA,OAAA,IACE,eACA,gBAAgB,QAAQ,aACxB,gBAAgB,UAAU,YAC5B;GACA,MAAM,gBAAgB,UAAU,kBAAkB;EACnD,CAAA,EAEL;EACY;EACK;EACjB,GAAI;CACL,CAAA;AAEL"}
@@ -30,11 +30,11 @@ function Calendar({ className, classNames, showOutsideDays = true, fixedWeeks =
30
30
  day_button: cn(buttonVariants({
31
31
  size: "icon",
32
32
  variant: "tertiary"
33
- }), "size-10 shrink-0 rounded-full p-0 font-normal text-gray in-aria-selected:rounded-full in-aria-selected:bg-base-accent-solid in-aria-selected:text-accent-contrast hover:in-aria-selected:bg-spark-10 hover:in-aria-selected:text-accent-contrast"),
33
+ }), "size-10 shrink-0 rounded-full p-0 font-normal text-gray in-aria-selected:rounded-full in-aria-selected:bg-(--spark-style-bg,var(--spark-9)) in-aria-selected:text-(--spark-style-fg,var(--spark-contrast)) hover:in-aria-selected:bg-(--spark-style-bg-hover,var(--spark-10))"),
34
34
  range_start: "range-start",
35
35
  range_end: "range-end",
36
36
  selected: "rounded-full",
37
- today: cn("relative bg-base-gray-soft text-gray", showTodayDot && "after:absolute after:right-0 after:-bottom-1 after:left-0 after:m-auto after:inline-flex after:h-1 after:w-1 after:rounded-full after:bg-base-accent-solid after:content-[\"\"]"),
37
+ today: cn("relative bg-base-gray-soft text-gray", showTodayDot && "after:absolute after:right-0 after:-bottom-1 after:left-0 after:m-auto after:inline-flex after:h-1 after:w-1 after:rounded-full after:bg-(--spark-style-bg,var(--spark-9)) after:content-[\"\"]"),
38
38
  outside: "outside text-gray-light opacity-50 aria-selected:bg-base-gray-soft aria-selected:text-gray-light",
39
39
  disabled: "text-gray-light opacity-50",
40
40
  range_middle: "aria-selected:bg-base-gray-soft aria-selected:text-gray",
@@ -1 +1 @@
1
- {"version":3,"file":"calendar.js","names":[],"sources":["../../src/components/calendar.tsx"],"sourcesContent":["import { DayPicker } from '@daypicker/react'\nimport * as React from 'react'\nimport { MaterialSymbol } from '../icons/material-symbol'\nimport { cn } from '../utils/cn'\nimport { buttonVariants } from './button'\n\ntype CalendarProps = React.ComponentProps<typeof DayPicker> & {\n showTodayDot?: boolean\n}\n\n// Pass `locale` (from '@daypicker/react/locale') for localized month/weekday\n// names — the library ships no language default.\nfunction Calendar({\n className,\n classNames,\n showOutsideDays = true,\n fixedWeeks = true,\n showTodayDot = true,\n ...props\n}: CalendarProps) {\n return (\n <DayPicker\n className={cn('p-3', className)}\n classNames={{\n months: 'relative',\n month: 'flex flex-col gap-2',\n month_caption: 'flex h-10 items-center justify-center',\n caption_label: 'text-sm font-bold text-gray',\n button_previous: cn(\n buttonVariants({ size: 'icon', variant: 'tertiary' }),\n 'absolute top-0 left-0 z-10 text-gray-light hover:text-gray',\n ),\n button_next: cn(\n buttonVariants({ size: 'icon', variant: 'tertiary' }),\n 'absolute top-0 right-0 z-10 text-gray-light hover:text-gray',\n ),\n month_grid: 'w-full border-collapse',\n weekdays: 'flex w-full justify-between',\n weekday:\n 'mt-0.5 flex h-10 w-10 items-center justify-center rounded-full text-sm font-bold text-gray',\n week: 'mt-1 flex w-full justify-between',\n day: cn(\n 'relative mx-0.5 flex h-10 w-10 items-center justify-center rounded-full p-0 text-center text-sm focus-within:relative focus-within:z-20',\n props.mode === 'range'\n ? '[&:has(>.range-end)]:rounded-r-full [&:has(>.range-start)]:rounded-l-full first:[&:has([aria-selected])]:rounded-l-full last:[&:has([aria-selected])]:rounded-r-full'\n : '[&:has([aria-selected])]:rounded-full',\n ),\n day_button: cn(\n buttonVariants({ size: 'icon', variant: 'tertiary' }),\n // hover:…:bg-spark-10 outranks tertiary's hover:bg-gray-a3 — selected days\n // darken like a solid button instead of washing out gray under white text\n 'size-10 shrink-0 rounded-full p-0 font-normal text-gray in-aria-selected:rounded-full in-aria-selected:bg-base-accent-solid in-aria-selected:text-accent-contrast hover:in-aria-selected:bg-spark-10 hover:in-aria-selected:text-accent-contrast',\n ),\n range_start: 'range-start',\n range_end: 'range-end',\n selected: 'rounded-full',\n today: cn(\n 'relative bg-base-gray-soft text-gray',\n showTodayDot &&\n 'after:absolute after:right-0 after:-bottom-1 after:left-0 after:m-auto after:inline-flex after:h-1 after:w-1 after:rounded-full after:bg-base-accent-solid after:content-[\"\"]',\n ),\n outside:\n 'outside text-gray-light opacity-50 aria-selected:bg-base-gray-soft aria-selected:text-gray-light',\n disabled: 'text-gray-light opacity-50',\n range_middle: 'aria-selected:bg-base-gray-soft aria-selected:text-gray',\n hidden: 'invisible',\n ...classNames,\n }}\n components={{\n Chevron: ({ orientation }) => (\n <MaterialSymbol\n className={cn(\n 'text-[20px]',\n orientation === 'up' && 'rotate-90',\n orientation === 'down' && '-rotate-90',\n )}\n name={orientation === 'right' ? 'chevron_right' : 'chevron_left'}\n />\n ),\n }}\n fixedWeeks={fixedWeeks}\n showOutsideDays={showOutsideDays}\n {...props}\n />\n )\n}\n\nexport { Calendar }\nexport type { CalendarProps }\n"],"mappings":";;;;;;;;AAYA,SAAS,SAAS,EAChB,WACA,YACA,kBAAkB,MAClB,aAAa,MACb,eAAe,MACf,GAAG,SACa;CAChB,OACE,oBAAC,WAAD;EACE,WAAW,GAAG,OAAO,SAAS;EAC9B,YAAY;GACV,QAAQ;GACR,OAAO;GACP,eAAe;GACf,eAAe;GACf,iBAAiB,GACf,eAAe;IAAE,MAAM;IAAQ,SAAS;GAAW,CAAC,GACpD,4DACF;GACA,aAAa,GACX,eAAe;IAAE,MAAM;IAAQ,SAAS;GAAW,CAAC,GACpD,6DACF;GACA,YAAY;GACZ,UAAU;GACV,SACE;GACF,MAAM;GACN,KAAK,GACH,2IACA,MAAM,SAAS,UACX,yKACA,uCACN;GACA,YAAY,GACV,eAAe;IAAE,MAAM;IAAQ,SAAS;GAAW,CAAC,GAGpD,kPACF;GACA,aAAa;GACb,WAAW;GACX,UAAU;GACV,OAAO,GACL,wCACA,gBACE,iLACJ;GACA,SACE;GACF,UAAU;GACV,cAAc;GACd,QAAQ;GACR,GAAG;EACL;EACA,YAAY,EACV,UAAU,EAAE,kBACV,oBAAC,gBAAD;GACE,WAAW,GACT,eACA,gBAAgB,QAAQ,aACxB,gBAAgB,UAAU,YAC5B;GACA,MAAM,gBAAgB,UAAU,kBAAkB;EACnD,CAAA,EAEL;EACY;EACK;EACjB,GAAI;CACL,CAAA;AAEL"}
1
+ {"version":3,"file":"calendar.js","names":[],"sources":["../../src/components/calendar.tsx"],"sourcesContent":["import { DayPicker } from '@daypicker/react'\nimport * as React from 'react'\nimport { MaterialSymbol } from '../icons/material-symbol'\nimport { cn } from '../utils/cn'\nimport { buttonVariants } from './button'\n\ntype CalendarProps = React.ComponentProps<typeof DayPicker> & {\n showTodayDot?: boolean\n}\n\n// Pass `locale` (from '@daypicker/react/locale') for localized month/weekday\n// names — the library ships no language default.\nfunction Calendar({\n className,\n classNames,\n showOutsideDays = true,\n fixedWeeks = true,\n showTodayDot = true,\n ...props\n}: CalendarProps) {\n return (\n <DayPicker\n className={cn('p-3', className)}\n classNames={{\n months: 'relative',\n month: 'flex flex-col gap-2',\n month_caption: 'flex h-10 items-center justify-center',\n caption_label: 'text-sm font-bold text-gray',\n button_previous: cn(\n buttonVariants({ size: 'icon', variant: 'tertiary' }),\n 'absolute top-0 left-0 z-10 text-gray-light hover:text-gray',\n ),\n button_next: cn(\n buttonVariants({ size: 'icon', variant: 'tertiary' }),\n 'absolute top-0 right-0 z-10 text-gray-light hover:text-gray',\n ),\n month_grid: 'w-full border-collapse',\n weekdays: 'flex w-full justify-between',\n weekday:\n 'mt-0.5 flex h-10 w-10 items-center justify-center rounded-full text-sm font-bold text-gray',\n week: 'mt-1 flex w-full justify-between',\n day: cn(\n 'relative mx-0.5 flex h-10 w-10 items-center justify-center rounded-full p-0 text-center text-sm focus-within:relative focus-within:z-20',\n props.mode === 'range'\n ? '[&:has(>.range-end)]:rounded-r-full [&:has(>.range-start)]:rounded-l-full first:[&:has([aria-selected])]:rounded-l-full last:[&:has([aria-selected])]:rounded-r-full'\n : '[&:has([aria-selected])]:rounded-full',\n ),\n day_button: cn(\n buttonVariants({ size: 'icon', variant: 'tertiary' }),\n // hover:…:bg-(--spark-style-bg-hover) outranks tertiary's hover:bg-gray-a3 —\n // selected days darken like a solid button instead of washing out gray\n 'size-10 shrink-0 rounded-full p-0 font-normal text-gray in-aria-selected:rounded-full in-aria-selected:bg-(--spark-style-bg,var(--spark-9)) in-aria-selected:text-(--spark-style-fg,var(--spark-contrast)) hover:in-aria-selected:bg-(--spark-style-bg-hover,var(--spark-10))',\n ),\n range_start: 'range-start',\n range_end: 'range-end',\n selected: 'rounded-full',\n today: cn(\n 'relative bg-base-gray-soft text-gray',\n showTodayDot &&\n 'after:absolute after:right-0 after:-bottom-1 after:left-0 after:m-auto after:inline-flex after:h-1 after:w-1 after:rounded-full after:bg-(--spark-style-bg,var(--spark-9)) after:content-[\"\"]',\n ),\n outside:\n 'outside text-gray-light opacity-50 aria-selected:bg-base-gray-soft aria-selected:text-gray-light',\n disabled: 'text-gray-light opacity-50',\n range_middle: 'aria-selected:bg-base-gray-soft aria-selected:text-gray',\n hidden: 'invisible',\n ...classNames,\n }}\n components={{\n Chevron: ({ orientation }) => (\n <MaterialSymbol\n className={cn(\n 'text-[20px]',\n orientation === 'up' && 'rotate-90',\n orientation === 'down' && '-rotate-90',\n )}\n name={orientation === 'right' ? 'chevron_right' : 'chevron_left'}\n />\n ),\n }}\n fixedWeeks={fixedWeeks}\n showOutsideDays={showOutsideDays}\n {...props}\n />\n )\n}\n\nexport { Calendar }\nexport type { CalendarProps }\n"],"mappings":";;;;;;;;AAYA,SAAS,SAAS,EAChB,WACA,YACA,kBAAkB,MAClB,aAAa,MACb,eAAe,MACf,GAAG,SACa;CAChB,OACE,oBAAC,WAAD;EACE,WAAW,GAAG,OAAO,SAAS;EAC9B,YAAY;GACV,QAAQ;GACR,OAAO;GACP,eAAe;GACf,eAAe;GACf,iBAAiB,GACf,eAAe;IAAE,MAAM;IAAQ,SAAS;GAAW,CAAC,GACpD,4DACF;GACA,aAAa,GACX,eAAe;IAAE,MAAM;IAAQ,SAAS;GAAW,CAAC,GACpD,6DACF;GACA,YAAY;GACZ,UAAU;GACV,SACE;GACF,MAAM;GACN,KAAK,GACH,2IACA,MAAM,SAAS,UACX,yKACA,uCACN;GACA,YAAY,GACV,eAAe;IAAE,MAAM;IAAQ,SAAS;GAAW,CAAC,GAGpD,+QACF;GACA,aAAa;GACb,WAAW;GACX,UAAU;GACV,OAAO,GACL,wCACA,gBACE,iMACJ;GACA,SACE;GACF,UAAU;GACV,cAAc;GACd,QAAQ;GACR,GAAG;EACL;EACA,YAAY,EACV,UAAU,EAAE,kBACV,oBAAC,gBAAD;GACE,WAAW,GACT,eACA,gBAAgB,QAAQ,aACxB,gBAAgB,UAAU,YAC5B;GACA,MAAM,gBAAgB,UAAU,kBAAkB;EACnD,CAAA,EAEL;EACY;EACK;EACjB,GAAI;CACL,CAAA;AAEL"}
@@ -75,7 +75,7 @@ const Callout = ({ variant = "info", icon, className, children, ...props }) => {
75
75
  "data-slot": "callout",
76
76
  className: (0, cnfast.cn)(calloutVariants({ variant }), className),
77
77
  ...props,
78
- children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_icons_material_symbol.MaterialSymbol, {
78
+ children: [icon !== false && /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_icons_material_symbol.MaterialSymbol, {
79
79
  className: (0, cnfast.cn)("inline-flex shrink-0 items-center [--spark-icon-size:calc(20px*var(--spark-scaling,1))]", variantIcon?.className),
80
80
  name: icon ?? variantIcon.name
81
81
  }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
@@ -1 +1 @@
1
- {"version":3,"file":"callout.cjs","names":["React","Button","MaterialSymbol"],"sources":["../../src/components/callout.tsx"],"sourcesContent":["import { cva, type VariantProps } from 'class-variance-authority'\nimport * as React from 'react'\nimport {\n MaterialSymbol,\n type MaterialSymbolIconName,\n} from '../icons/material-symbol'\nimport { cn } from '../utils/cn'\nimport { Button, type ButtonProps } from './button'\n\ntype CalloutVariant = 'error' | 'info' | 'success' | 'warning'\n\nconst calloutVariants = cva(\n 'group/callout flex w-full items-start gap-2 rounded-lg px-4 py-3 text-sm transition-[color,background-color,opacity,scale] duration-150 ease-out motion-reduce:transition-none starting:scale-95 starting:opacity-0',\n {\n variants: {\n variant: {\n error: 'bg-base-error-soft text-error',\n success: 'bg-base-success-soft text-success',\n warning: 'bg-base-warning-soft text-warning',\n info: 'bg-base-info-soft text-info',\n },\n },\n defaultVariants: {\n variant: 'info',\n },\n },\n)\n\nconst CALLOUT_ICONS: Record<\n CalloutVariant,\n { name: MaterialSymbolIconName; className: string }\n> = {\n error: { name: 'cancel', className: 'text-error-light' },\n success: { name: 'check_circle', className: 'text-success-light' },\n warning: { name: 'warning', className: 'text-warning-light' },\n info: { name: 'info', className: 'text-info-light' },\n}\n\ninterface CalloutProps\n extends\n React.HTMLAttributes<HTMLDivElement>,\n VariantProps<typeof calloutVariants> {\n /** Overrides the variant's default icon; the variant's color is kept. */\n icon?: MaterialSymbolIconName\n}\n\nconst CalloutTitle = ({\n className,\n ...props\n}: React.HTMLAttributes<HTMLSpanElement>) => (\n <span\n data-slot=\"callout-title\"\n className={cn('text-base leading-5 font-semibold', className)}\n {...props}\n />\n)\n\nconst CalloutDescription = ({\n className,\n ...props\n}: React.HTMLAttributes<HTMLParagraphElement>) => (\n <p\n data-slot=\"callout-description\"\n className={cn('text-sm', className)}\n {...props}\n />\n)\n\nconst CalloutVariantContext = React.createContext<CalloutVariant>('info')\n\nconst CALLOUT_ACTION_COLORS: Record<CalloutVariant, string> = {\n error:\n 'bg-base-error-soft text-error hover:bg-red-a4 focus-visible:bg-red-a4',\n success:\n 'bg-base-success-soft text-success hover:bg-green-a4 focus-visible:bg-green-a4',\n warning:\n 'bg-base-warning-soft text-warning hover:bg-orange-a4 focus-visible:bg-orange-a4',\n info: 'bg-base-info-soft text-info hover:bg-blue-a4 focus-visible:bg-blue-a4',\n}\n\ntype CalloutActionType = Omit<ButtonProps, 'styleVariant' | 'color'> & {\n align?: 'start' | 'end'\n}\n\nconst CalloutAction = ({\n className,\n align = 'start',\n ...props\n}: CalloutActionType) => {\n const calloutVariant = React.useContext(CalloutVariantContext)\n\n return (\n <Button\n data-slot=\"callout-action\"\n size=\"small\"\n styleVariant=\"surface\"\n color=\"neutral\"\n className={cn(\n 'mt-2 w-fit',\n { 'self-start': align === 'start', 'self-end': align === 'end' },\n CALLOUT_ACTION_COLORS[calloutVariant],\n className,\n )}\n {...props}\n />\n )\n}\n\nconst Callout = ({\n variant = 'info',\n icon,\n className,\n children,\n ...props\n}: CalloutProps) => {\n const variantIcon = CALLOUT_ICONS[variant ?? 'info']\n\n return (\n <CalloutVariantContext.Provider value={variant ?? 'info'}>\n <div\n data-slot=\"callout\"\n className={cn(calloutVariants({ variant }), className)}\n {...props}\n >\n <MaterialSymbol\n className={cn(\n 'inline-flex shrink-0 items-center [--spark-icon-size:calc(20px*var(--spark-scaling,1))]',\n variantIcon?.className,\n )}\n name={icon ?? variantIcon.name}\n />\n <div className=\"flex w-full min-w-0 flex-col gap-1\">{children}</div>\n </div>\n </CalloutVariantContext.Provider>\n )\n}\n\nexport {\n Callout,\n CalloutAction,\n CalloutDescription,\n CalloutTitle,\n calloutVariants,\n}\nexport type { CalloutProps, CalloutVariant }\n"],"mappings":";;;;;;;;;;;AAWA,MAAM,mBAAA,GAAA,yBAAA,KACJ,uNACA;CACE,UAAU,EACR,SAAS;EACP,OAAO;EACP,SAAS;EACT,SAAS;EACT,MAAM;CACR,EACF;CACA,iBAAiB,EACf,SAAS,OACX;AACF,CACF;AAEA,MAAM,gBAGF;CACF,OAAO;EAAE,MAAM;EAAU,WAAW;CAAmB;CACvD,SAAS;EAAE,MAAM;EAAgB,WAAW;CAAqB;CACjE,SAAS;EAAE,MAAM;EAAW,WAAW;CAAqB;CAC5D,MAAM;EAAE,MAAM;EAAQ,WAAW;CAAkB;AACrD;AAUA,MAAM,gBAAgB,EACpB,WACA,GAAG,YAEH,iBAAA,GAAA,kBAAA,KAAC,QAAD;CACE,aAAU;CACV,YAAA,GAAA,OAAA,IAAc,qCAAqC,SAAS;CAC5D,GAAI;AACL,CAAA;AAGH,MAAM,sBAAsB,EAC1B,WACA,GAAG,YAEH,iBAAA,GAAA,kBAAA,KAAC,KAAD;CACE,aAAU;CACV,YAAA,GAAA,OAAA,IAAc,WAAW,SAAS;CAClC,GAAI;AACL,CAAA;AAGH,MAAM,wBAAwBA,MAAM,cAA8B,MAAM;AAExE,MAAM,wBAAwD;CAC5D,OACE;CACF,SACE;CACF,SACE;CACF,MAAM;AACR;AAMA,MAAM,iBAAiB,EACrB,WACA,QAAQ,SACR,GAAG,YACoB;CACvB,MAAM,iBAAiBA,MAAM,WAAW,qBAAqB;CAE7D,OACE,iBAAA,GAAA,kBAAA,KAACC,0BAAAA,QAAD;EACE,aAAU;EACV,MAAK;EACL,cAAa;EACb,OAAM;EACN,YAAA,GAAA,OAAA,IACE,cACA;GAAE,cAAc,UAAU;GAAS,YAAY,UAAU;EAAM,GAC/D,sBAAsB,iBACtB,SACF;EACA,GAAI;CACL,CAAA;AAEL;AAEA,MAAM,WAAW,EACf,UAAU,QACV,MACA,WACA,UACA,GAAG,YACe;CAClB,MAAM,cAAc,cAAc,WAAW;CAE7C,OACE,iBAAA,GAAA,kBAAA,KAAC,sBAAsB,UAAvB;EAAgC,OAAO,WAAW;YAChD,iBAAA,GAAA,kBAAA,MAAC,OAAD;GACE,aAAU;GACV,YAAA,GAAA,OAAA,IAAc,gBAAgB,EAAE,QAAQ,CAAC,GAAG,SAAS;GACrD,GAAI;aAHN,CAKE,iBAAA,GAAA,kBAAA,KAACC,8BAAAA,gBAAD;IACE,YAAA,GAAA,OAAA,IACE,2FACA,aAAa,SACf;IACA,MAAM,QAAQ,YAAY;GAC3B,CAAA,GACD,iBAAA,GAAA,kBAAA,KAAC,OAAD;IAAK,WAAU;IAAsC;GAAc,CAAA,CAChE;;CACyB,CAAA;AAEpC"}
1
+ {"version":3,"file":"callout.cjs","names":["React","Button","MaterialSymbol"],"sources":["../../src/components/callout.tsx"],"sourcesContent":["import { cva, type VariantProps } from 'class-variance-authority'\nimport * as React from 'react'\nimport {\n MaterialSymbol,\n type MaterialSymbolIconName,\n} from '../icons/material-symbol'\nimport { cn } from '../utils/cn'\nimport { Button, type ButtonProps } from './button'\n\ntype CalloutVariant = 'error' | 'info' | 'success' | 'warning'\n\nconst calloutVariants = cva(\n 'group/callout flex w-full items-start gap-2 rounded-lg px-4 py-3 text-sm transition-[color,background-color,opacity,scale] duration-150 ease-out motion-reduce:transition-none starting:scale-95 starting:opacity-0',\n {\n variants: {\n variant: {\n error: 'bg-base-error-soft text-error',\n success: 'bg-base-success-soft text-success',\n warning: 'bg-base-warning-soft text-warning',\n info: 'bg-base-info-soft text-info',\n },\n },\n defaultVariants: {\n variant: 'info',\n },\n },\n)\n\nconst CALLOUT_ICONS: Record<\n CalloutVariant,\n { name: MaterialSymbolIconName; className: string }\n> = {\n error: { name: 'cancel', className: 'text-error-light' },\n success: { name: 'check_circle', className: 'text-success-light' },\n warning: { name: 'warning', className: 'text-warning-light' },\n info: { name: 'info', className: 'text-info-light' },\n}\n\ninterface CalloutProps\n extends\n React.HTMLAttributes<HTMLDivElement>,\n VariantProps<typeof calloutVariants> {\n /** Overrides the variant's default icon; the variant's color is kept. `false` renders no icon. */\n icon?: MaterialSymbolIconName | false\n}\n\nconst CalloutTitle = ({\n className,\n ...props\n}: React.HTMLAttributes<HTMLSpanElement>) => (\n <span\n data-slot=\"callout-title\"\n className={cn('text-base leading-5 font-semibold', className)}\n {...props}\n />\n)\n\nconst CalloutDescription = ({\n className,\n ...props\n}: React.HTMLAttributes<HTMLParagraphElement>) => (\n <p\n data-slot=\"callout-description\"\n className={cn('text-sm', className)}\n {...props}\n />\n)\n\nconst CalloutVariantContext = React.createContext<CalloutVariant>('info')\n\nconst CALLOUT_ACTION_COLORS: Record<CalloutVariant, string> = {\n error:\n 'bg-base-error-soft text-error hover:bg-red-a4 focus-visible:bg-red-a4',\n success:\n 'bg-base-success-soft text-success hover:bg-green-a4 focus-visible:bg-green-a4',\n warning:\n 'bg-base-warning-soft text-warning hover:bg-orange-a4 focus-visible:bg-orange-a4',\n info: 'bg-base-info-soft text-info hover:bg-blue-a4 focus-visible:bg-blue-a4',\n}\n\ntype CalloutActionType = Omit<ButtonProps, 'styleVariant' | 'color'> & {\n align?: 'start' | 'end'\n}\n\nconst CalloutAction = ({\n className,\n align = 'start',\n ...props\n}: CalloutActionType) => {\n const calloutVariant = React.useContext(CalloutVariantContext)\n\n return (\n <Button\n data-slot=\"callout-action\"\n size=\"small\"\n styleVariant=\"surface\"\n color=\"neutral\"\n className={cn(\n 'mt-2 w-fit',\n { 'self-start': align === 'start', 'self-end': align === 'end' },\n CALLOUT_ACTION_COLORS[calloutVariant],\n className,\n )}\n {...props}\n />\n )\n}\n\nconst Callout = ({\n variant = 'info',\n icon,\n className,\n children,\n ...props\n}: CalloutProps) => {\n const variantIcon = CALLOUT_ICONS[variant ?? 'info']\n\n return (\n <CalloutVariantContext.Provider value={variant ?? 'info'}>\n <div\n data-slot=\"callout\"\n className={cn(calloutVariants({ variant }), className)}\n {...props}\n >\n {icon !== false && (\n <MaterialSymbol\n className={cn(\n 'inline-flex shrink-0 items-center [--spark-icon-size:calc(20px*var(--spark-scaling,1))]',\n variantIcon?.className,\n )}\n name={icon ?? variantIcon.name}\n />\n )}\n <div className=\"flex w-full min-w-0 flex-col gap-1\">{children}</div>\n </div>\n </CalloutVariantContext.Provider>\n )\n}\n\nexport {\n Callout,\n CalloutAction,\n CalloutDescription,\n CalloutTitle,\n calloutVariants,\n}\nexport type { CalloutProps, CalloutVariant }\n"],"mappings":";;;;;;;;;;;AAWA,MAAM,mBAAA,GAAA,yBAAA,KACJ,uNACA;CACE,UAAU,EACR,SAAS;EACP,OAAO;EACP,SAAS;EACT,SAAS;EACT,MAAM;CACR,EACF;CACA,iBAAiB,EACf,SAAS,OACX;AACF,CACF;AAEA,MAAM,gBAGF;CACF,OAAO;EAAE,MAAM;EAAU,WAAW;CAAmB;CACvD,SAAS;EAAE,MAAM;EAAgB,WAAW;CAAqB;CACjE,SAAS;EAAE,MAAM;EAAW,WAAW;CAAqB;CAC5D,MAAM;EAAE,MAAM;EAAQ,WAAW;CAAkB;AACrD;AAUA,MAAM,gBAAgB,EACpB,WACA,GAAG,YAEH,iBAAA,GAAA,kBAAA,KAAC,QAAD;CACE,aAAU;CACV,YAAA,GAAA,OAAA,IAAc,qCAAqC,SAAS;CAC5D,GAAI;AACL,CAAA;AAGH,MAAM,sBAAsB,EAC1B,WACA,GAAG,YAEH,iBAAA,GAAA,kBAAA,KAAC,KAAD;CACE,aAAU;CACV,YAAA,GAAA,OAAA,IAAc,WAAW,SAAS;CAClC,GAAI;AACL,CAAA;AAGH,MAAM,wBAAwBA,MAAM,cAA8B,MAAM;AAExE,MAAM,wBAAwD;CAC5D,OACE;CACF,SACE;CACF,SACE;CACF,MAAM;AACR;AAMA,MAAM,iBAAiB,EACrB,WACA,QAAQ,SACR,GAAG,YACoB;CACvB,MAAM,iBAAiBA,MAAM,WAAW,qBAAqB;CAE7D,OACE,iBAAA,GAAA,kBAAA,KAACC,0BAAAA,QAAD;EACE,aAAU;EACV,MAAK;EACL,cAAa;EACb,OAAM;EACN,YAAA,GAAA,OAAA,IACE,cACA;GAAE,cAAc,UAAU;GAAS,YAAY,UAAU;EAAM,GAC/D,sBAAsB,iBACtB,SACF;EACA,GAAI;CACL,CAAA;AAEL;AAEA,MAAM,WAAW,EACf,UAAU,QACV,MACA,WACA,UACA,GAAG,YACe;CAClB,MAAM,cAAc,cAAc,WAAW;CAE7C,OACE,iBAAA,GAAA,kBAAA,KAAC,sBAAsB,UAAvB;EAAgC,OAAO,WAAW;YAChD,iBAAA,GAAA,kBAAA,MAAC,OAAD;GACE,aAAU;GACV,YAAA,GAAA,OAAA,IAAc,gBAAgB,EAAE,QAAQ,CAAC,GAAG,SAAS;GACrD,GAAI;aAHN,CAKG,SAAS,SACR,iBAAA,GAAA,kBAAA,KAACC,8BAAAA,gBAAD;IACE,YAAA,GAAA,OAAA,IACE,2FACA,aAAa,SACf;IACA,MAAM,QAAQ,YAAY;GAC3B,CAAA,GAEH,iBAAA,GAAA,kBAAA,KAAC,OAAD;IAAK,WAAU;IAAsC;GAAc,CAAA,CAChE;;CACyB,CAAA;AAEpC"}
@@ -8,11 +8,11 @@ import { VariantProps } from "class-variance-authority";
8
8
  //#region src/components/callout.d.ts
9
9
  type CalloutVariant = 'error' | 'info' | 'success' | 'warning';
10
10
  declare const calloutVariants: (props?: ({
11
- variant?: "success" | "warning" | "info" | "error" | null | undefined;
11
+ variant?: "success" | "warning" | "error" | "info" | null | undefined;
12
12
  } & import("class-variance-authority/types").ClassProp) | undefined) => string;
13
13
  interface CalloutProps extends React$1.HTMLAttributes<HTMLDivElement>, VariantProps<typeof calloutVariants> {
14
- /** Overrides the variant's default icon; the variant's color is kept. */
15
- icon?: MaterialSymbolIconName;
14
+ /** Overrides the variant's default icon; the variant's color is kept. `false` renders no icon. */
15
+ icon?: MaterialSymbolIconName | false;
16
16
  }
17
17
  declare const CalloutTitle: ({
18
18
  className,
@@ -8,11 +8,11 @@ import { VariantProps } from "class-variance-authority";
8
8
  //#region src/components/callout.d.ts
9
9
  type CalloutVariant = 'error' | 'info' | 'success' | 'warning';
10
10
  declare const calloutVariants: (props?: ({
11
- variant?: "success" | "warning" | "info" | "error" | null | undefined;
11
+ variant?: "success" | "warning" | "error" | "info" | null | undefined;
12
12
  } & import("class-variance-authority/types").ClassProp) | undefined) => string;
13
13
  interface CalloutProps extends React$1.HTMLAttributes<HTMLDivElement>, VariantProps<typeof calloutVariants> {
14
- /** Overrides the variant's default icon; the variant's color is kept. */
15
- icon?: MaterialSymbolIconName;
14
+ /** Overrides the variant's default icon; the variant's color is kept. `false` renders no icon. */
15
+ icon?: MaterialSymbolIconName | false;
16
16
  }
17
17
  declare const CalloutTitle: ({
18
18
  className,
@@ -72,7 +72,7 @@ const Callout = ({ variant = "info", icon, className, children, ...props }) => {
72
72
  "data-slot": "callout",
73
73
  className: cn(calloutVariants({ variant }), className),
74
74
  ...props,
75
- children: [/* @__PURE__ */ jsx(MaterialSymbol, {
75
+ children: [icon !== false && /* @__PURE__ */ jsx(MaterialSymbol, {
76
76
  className: cn("inline-flex shrink-0 items-center [--spark-icon-size:calc(20px*var(--spark-scaling,1))]", variantIcon?.className),
77
77
  name: icon ?? variantIcon.name
78
78
  }), /* @__PURE__ */ jsx("div", {
@@ -1 +1 @@
1
- {"version":3,"file":"callout.js","names":["React"],"sources":["../../src/components/callout.tsx"],"sourcesContent":["import { cva, type VariantProps } from 'class-variance-authority'\nimport * as React from 'react'\nimport {\n MaterialSymbol,\n type MaterialSymbolIconName,\n} from '../icons/material-symbol'\nimport { cn } from '../utils/cn'\nimport { Button, type ButtonProps } from './button'\n\ntype CalloutVariant = 'error' | 'info' | 'success' | 'warning'\n\nconst calloutVariants = cva(\n 'group/callout flex w-full items-start gap-2 rounded-lg px-4 py-3 text-sm transition-[color,background-color,opacity,scale] duration-150 ease-out motion-reduce:transition-none starting:scale-95 starting:opacity-0',\n {\n variants: {\n variant: {\n error: 'bg-base-error-soft text-error',\n success: 'bg-base-success-soft text-success',\n warning: 'bg-base-warning-soft text-warning',\n info: 'bg-base-info-soft text-info',\n },\n },\n defaultVariants: {\n variant: 'info',\n },\n },\n)\n\nconst CALLOUT_ICONS: Record<\n CalloutVariant,\n { name: MaterialSymbolIconName; className: string }\n> = {\n error: { name: 'cancel', className: 'text-error-light' },\n success: { name: 'check_circle', className: 'text-success-light' },\n warning: { name: 'warning', className: 'text-warning-light' },\n info: { name: 'info', className: 'text-info-light' },\n}\n\ninterface CalloutProps\n extends\n React.HTMLAttributes<HTMLDivElement>,\n VariantProps<typeof calloutVariants> {\n /** Overrides the variant's default icon; the variant's color is kept. */\n icon?: MaterialSymbolIconName\n}\n\nconst CalloutTitle = ({\n className,\n ...props\n}: React.HTMLAttributes<HTMLSpanElement>) => (\n <span\n data-slot=\"callout-title\"\n className={cn('text-base leading-5 font-semibold', className)}\n {...props}\n />\n)\n\nconst CalloutDescription = ({\n className,\n ...props\n}: React.HTMLAttributes<HTMLParagraphElement>) => (\n <p\n data-slot=\"callout-description\"\n className={cn('text-sm', className)}\n {...props}\n />\n)\n\nconst CalloutVariantContext = React.createContext<CalloutVariant>('info')\n\nconst CALLOUT_ACTION_COLORS: Record<CalloutVariant, string> = {\n error:\n 'bg-base-error-soft text-error hover:bg-red-a4 focus-visible:bg-red-a4',\n success:\n 'bg-base-success-soft text-success hover:bg-green-a4 focus-visible:bg-green-a4',\n warning:\n 'bg-base-warning-soft text-warning hover:bg-orange-a4 focus-visible:bg-orange-a4',\n info: 'bg-base-info-soft text-info hover:bg-blue-a4 focus-visible:bg-blue-a4',\n}\n\ntype CalloutActionType = Omit<ButtonProps, 'styleVariant' | 'color'> & {\n align?: 'start' | 'end'\n}\n\nconst CalloutAction = ({\n className,\n align = 'start',\n ...props\n}: CalloutActionType) => {\n const calloutVariant = React.useContext(CalloutVariantContext)\n\n return (\n <Button\n data-slot=\"callout-action\"\n size=\"small\"\n styleVariant=\"surface\"\n color=\"neutral\"\n className={cn(\n 'mt-2 w-fit',\n { 'self-start': align === 'start', 'self-end': align === 'end' },\n CALLOUT_ACTION_COLORS[calloutVariant],\n className,\n )}\n {...props}\n />\n )\n}\n\nconst Callout = ({\n variant = 'info',\n icon,\n className,\n children,\n ...props\n}: CalloutProps) => {\n const variantIcon = CALLOUT_ICONS[variant ?? 'info']\n\n return (\n <CalloutVariantContext.Provider value={variant ?? 'info'}>\n <div\n data-slot=\"callout\"\n className={cn(calloutVariants({ variant }), className)}\n {...props}\n >\n <MaterialSymbol\n className={cn(\n 'inline-flex shrink-0 items-center [--spark-icon-size:calc(20px*var(--spark-scaling,1))]',\n variantIcon?.className,\n )}\n name={icon ?? variantIcon.name}\n />\n <div className=\"flex w-full min-w-0 flex-col gap-1\">{children}</div>\n </div>\n </CalloutVariantContext.Provider>\n )\n}\n\nexport {\n Callout,\n CalloutAction,\n CalloutDescription,\n CalloutTitle,\n calloutVariants,\n}\nexport type { CalloutProps, CalloutVariant }\n"],"mappings":";;;;;;;;AAWA,MAAM,kBAAkB,IACtB,uNACA;CACE,UAAU,EACR,SAAS;EACP,OAAO;EACP,SAAS;EACT,SAAS;EACT,MAAM;CACR,EACF;CACA,iBAAiB,EACf,SAAS,OACX;AACF,CACF;AAEA,MAAM,gBAGF;CACF,OAAO;EAAE,MAAM;EAAU,WAAW;CAAmB;CACvD,SAAS;EAAE,MAAM;EAAgB,WAAW;CAAqB;CACjE,SAAS;EAAE,MAAM;EAAW,WAAW;CAAqB;CAC5D,MAAM;EAAE,MAAM;EAAQ,WAAW;CAAkB;AACrD;AAUA,MAAM,gBAAgB,EACpB,WACA,GAAG,YAEH,oBAAC,QAAD;CACE,aAAU;CACV,WAAW,GAAG,qCAAqC,SAAS;CAC5D,GAAI;AACL,CAAA;AAGH,MAAM,sBAAsB,EAC1B,WACA,GAAG,YAEH,oBAAC,KAAD;CACE,aAAU;CACV,WAAW,GAAG,WAAW,SAAS;CAClC,GAAI;AACL,CAAA;AAGH,MAAM,wBAAwBA,QAAM,cAA8B,MAAM;AAExE,MAAM,wBAAwD;CAC5D,OACE;CACF,SACE;CACF,SACE;CACF,MAAM;AACR;AAMA,MAAM,iBAAiB,EACrB,WACA,QAAQ,SACR,GAAG,YACoB;CACvB,MAAM,iBAAiBA,QAAM,WAAW,qBAAqB;CAE7D,OACE,oBAAC,QAAD;EACE,aAAU;EACV,MAAK;EACL,cAAa;EACb,OAAM;EACN,WAAW,GACT,cACA;GAAE,cAAc,UAAU;GAAS,YAAY,UAAU;EAAM,GAC/D,sBAAsB,iBACtB,SACF;EACA,GAAI;CACL,CAAA;AAEL;AAEA,MAAM,WAAW,EACf,UAAU,QACV,MACA,WACA,UACA,GAAG,YACe;CAClB,MAAM,cAAc,cAAc,WAAW;CAE7C,OACE,oBAAC,sBAAsB,UAAvB;EAAgC,OAAO,WAAW;YAChD,qBAAC,OAAD;GACE,aAAU;GACV,WAAW,GAAG,gBAAgB,EAAE,QAAQ,CAAC,GAAG,SAAS;GACrD,GAAI;aAHN,CAKE,oBAAC,gBAAD;IACE,WAAW,GACT,2FACA,aAAa,SACf;IACA,MAAM,QAAQ,YAAY;GAC3B,CAAA,GACD,oBAAC,OAAD;IAAK,WAAU;IAAsC;GAAc,CAAA,CAChE;;CACyB,CAAA;AAEpC"}
1
+ {"version":3,"file":"callout.js","names":["React"],"sources":["../../src/components/callout.tsx"],"sourcesContent":["import { cva, type VariantProps } from 'class-variance-authority'\nimport * as React from 'react'\nimport {\n MaterialSymbol,\n type MaterialSymbolIconName,\n} from '../icons/material-symbol'\nimport { cn } from '../utils/cn'\nimport { Button, type ButtonProps } from './button'\n\ntype CalloutVariant = 'error' | 'info' | 'success' | 'warning'\n\nconst calloutVariants = cva(\n 'group/callout flex w-full items-start gap-2 rounded-lg px-4 py-3 text-sm transition-[color,background-color,opacity,scale] duration-150 ease-out motion-reduce:transition-none starting:scale-95 starting:opacity-0',\n {\n variants: {\n variant: {\n error: 'bg-base-error-soft text-error',\n success: 'bg-base-success-soft text-success',\n warning: 'bg-base-warning-soft text-warning',\n info: 'bg-base-info-soft text-info',\n },\n },\n defaultVariants: {\n variant: 'info',\n },\n },\n)\n\nconst CALLOUT_ICONS: Record<\n CalloutVariant,\n { name: MaterialSymbolIconName; className: string }\n> = {\n error: { name: 'cancel', className: 'text-error-light' },\n success: { name: 'check_circle', className: 'text-success-light' },\n warning: { name: 'warning', className: 'text-warning-light' },\n info: { name: 'info', className: 'text-info-light' },\n}\n\ninterface CalloutProps\n extends\n React.HTMLAttributes<HTMLDivElement>,\n VariantProps<typeof calloutVariants> {\n /** Overrides the variant's default icon; the variant's color is kept. `false` renders no icon. */\n icon?: MaterialSymbolIconName | false\n}\n\nconst CalloutTitle = ({\n className,\n ...props\n}: React.HTMLAttributes<HTMLSpanElement>) => (\n <span\n data-slot=\"callout-title\"\n className={cn('text-base leading-5 font-semibold', className)}\n {...props}\n />\n)\n\nconst CalloutDescription = ({\n className,\n ...props\n}: React.HTMLAttributes<HTMLParagraphElement>) => (\n <p\n data-slot=\"callout-description\"\n className={cn('text-sm', className)}\n {...props}\n />\n)\n\nconst CalloutVariantContext = React.createContext<CalloutVariant>('info')\n\nconst CALLOUT_ACTION_COLORS: Record<CalloutVariant, string> = {\n error:\n 'bg-base-error-soft text-error hover:bg-red-a4 focus-visible:bg-red-a4',\n success:\n 'bg-base-success-soft text-success hover:bg-green-a4 focus-visible:bg-green-a4',\n warning:\n 'bg-base-warning-soft text-warning hover:bg-orange-a4 focus-visible:bg-orange-a4',\n info: 'bg-base-info-soft text-info hover:bg-blue-a4 focus-visible:bg-blue-a4',\n}\n\ntype CalloutActionType = Omit<ButtonProps, 'styleVariant' | 'color'> & {\n align?: 'start' | 'end'\n}\n\nconst CalloutAction = ({\n className,\n align = 'start',\n ...props\n}: CalloutActionType) => {\n const calloutVariant = React.useContext(CalloutVariantContext)\n\n return (\n <Button\n data-slot=\"callout-action\"\n size=\"small\"\n styleVariant=\"surface\"\n color=\"neutral\"\n className={cn(\n 'mt-2 w-fit',\n { 'self-start': align === 'start', 'self-end': align === 'end' },\n CALLOUT_ACTION_COLORS[calloutVariant],\n className,\n )}\n {...props}\n />\n )\n}\n\nconst Callout = ({\n variant = 'info',\n icon,\n className,\n children,\n ...props\n}: CalloutProps) => {\n const variantIcon = CALLOUT_ICONS[variant ?? 'info']\n\n return (\n <CalloutVariantContext.Provider value={variant ?? 'info'}>\n <div\n data-slot=\"callout\"\n className={cn(calloutVariants({ variant }), className)}\n {...props}\n >\n {icon !== false && (\n <MaterialSymbol\n className={cn(\n 'inline-flex shrink-0 items-center [--spark-icon-size:calc(20px*var(--spark-scaling,1))]',\n variantIcon?.className,\n )}\n name={icon ?? variantIcon.name}\n />\n )}\n <div className=\"flex w-full min-w-0 flex-col gap-1\">{children}</div>\n </div>\n </CalloutVariantContext.Provider>\n )\n}\n\nexport {\n Callout,\n CalloutAction,\n CalloutDescription,\n CalloutTitle,\n calloutVariants,\n}\nexport type { CalloutProps, CalloutVariant }\n"],"mappings":";;;;;;;;AAWA,MAAM,kBAAkB,IACtB,uNACA;CACE,UAAU,EACR,SAAS;EACP,OAAO;EACP,SAAS;EACT,SAAS;EACT,MAAM;CACR,EACF;CACA,iBAAiB,EACf,SAAS,OACX;AACF,CACF;AAEA,MAAM,gBAGF;CACF,OAAO;EAAE,MAAM;EAAU,WAAW;CAAmB;CACvD,SAAS;EAAE,MAAM;EAAgB,WAAW;CAAqB;CACjE,SAAS;EAAE,MAAM;EAAW,WAAW;CAAqB;CAC5D,MAAM;EAAE,MAAM;EAAQ,WAAW;CAAkB;AACrD;AAUA,MAAM,gBAAgB,EACpB,WACA,GAAG,YAEH,oBAAC,QAAD;CACE,aAAU;CACV,WAAW,GAAG,qCAAqC,SAAS;CAC5D,GAAI;AACL,CAAA;AAGH,MAAM,sBAAsB,EAC1B,WACA,GAAG,YAEH,oBAAC,KAAD;CACE,aAAU;CACV,WAAW,GAAG,WAAW,SAAS;CAClC,GAAI;AACL,CAAA;AAGH,MAAM,wBAAwBA,QAAM,cAA8B,MAAM;AAExE,MAAM,wBAAwD;CAC5D,OACE;CACF,SACE;CACF,SACE;CACF,MAAM;AACR;AAMA,MAAM,iBAAiB,EACrB,WACA,QAAQ,SACR,GAAG,YACoB;CACvB,MAAM,iBAAiBA,QAAM,WAAW,qBAAqB;CAE7D,OACE,oBAAC,QAAD;EACE,aAAU;EACV,MAAK;EACL,cAAa;EACb,OAAM;EACN,WAAW,GACT,cACA;GAAE,cAAc,UAAU;GAAS,YAAY,UAAU;EAAM,GAC/D,sBAAsB,iBACtB,SACF;EACA,GAAI;CACL,CAAA;AAEL;AAEA,MAAM,WAAW,EACf,UAAU,QACV,MACA,WACA,UACA,GAAG,YACe;CAClB,MAAM,cAAc,cAAc,WAAW;CAE7C,OACE,oBAAC,sBAAsB,UAAvB;EAAgC,OAAO,WAAW;YAChD,qBAAC,OAAD;GACE,aAAU;GACV,WAAW,GAAG,gBAAgB,EAAE,QAAQ,CAAC,GAAG,SAAS;GACrD,GAAI;aAHN,CAKG,SAAS,SACR,oBAAC,gBAAD;IACE,WAAW,GACT,2FACA,aAAa,SACf;IACA,MAAM,QAAQ,YAAY;GAC3B,CAAA,GAEH,oBAAC,OAAD;IAAK,WAAU;IAAsC;GAAc,CAAA,CAChE;;CACyB,CAAA;AAEpC"}
@@ -20,7 +20,7 @@ const cardVariants = (0, class_variance_authority.cva)("relative flex w-full fle
20
20
  } },
21
21
  defaultVariants: { variant: "ambient" }
22
22
  });
23
- const Card = react.forwardRef(({ className, variant, color, radius = "2xl", render, ...props }, ref) => {
23
+ const Card = react.forwardRef(({ className, variant, color, radius = "2xl", elevated, render, ...props }, ref) => {
24
24
  const interactive = render != null;
25
25
  const resolved = variant ?? "ambient";
26
26
  return (0, _base_ui_react_use_render.useRender)({
@@ -30,7 +30,8 @@ const Card = react.forwardRef(({ className, variant, color, radius = "2xl", rend
30
30
  "data-slot": "card",
31
31
  "data-variant": variant,
32
32
  "data-card-color": color === "accent" ? "accent" : void 0,
33
- className: (0, cnfast.cn)(cardVariants({ variant }), require_lib_container_chrome.radiusClasses[radius], interactive && require_lib_container_chrome.containerInteractiveClasses(resolved), className),
33
+ "data-elevated": elevated ? "" : void 0,
34
+ className: (0, cnfast.cn)(cardVariants({ variant }), require_lib_container_chrome.radiusClasses[radius], elevated && "bg-(--spark-elevated) [background-image:linear-gradient(var(--spark-card-bg,transparent),var(--spark-card-bg,transparent))] shadow-(--spark-card-shadow,var(--spark-shadow-1))", interactive && require_lib_container_chrome.containerInteractiveClasses(resolved, elevated), className),
34
35
  ref,
35
36
  ...props
36
37
  }
@@ -1 +1 @@
1
- {"version":3,"file":"card.cjs","names":["containerChrome","containerPaddingX","React","radiusClasses","containerInteractiveClasses"],"sources":["../../src/components/card.tsx"],"sourcesContent":["import { useRender } from '@base-ui/react/use-render'\nimport { cva } from 'class-variance-authority'\nimport * as React from 'react'\nimport {\n containerChrome,\n containerInteractiveClasses,\n containerPaddingX,\n radiusClasses,\n type ContainerRadius,\n} from '../lib/container-chrome'\nimport type { SparkCardColor, SparkCardVariant } from '../lib/theme-types'\nimport { cn } from '../utils/cn'\n\ntype CardRadius = ContainerRadius\n\nconst cardVariants = cva('relative flex w-full flex-col gap-1 py-3', {\n variants: {\n variant: {\n ambient: cn(containerChrome.ambient, containerPaddingX.ambient),\n soft: cn(containerChrome.soft, containerPaddingX.soft),\n surface: cn(containerChrome.surface, containerPaddingX.surface),\n outline: cn(containerChrome.outline, containerPaddingX.outline),\n ghost: cn(containerChrome.ghost, containerPaddingX.ghost),\n solid: cn(containerChrome.solid, containerPaddingX.solid),\n },\n },\n defaultVariants: {\n variant: 'ambient',\n },\n})\n\ninterface CardProps extends React.HTMLAttributes<HTMLDivElement> {\n /**\n * Container chrome scoped to this card — NOT the ambient `data-style` knob\n * (that drives controls and would cascade into the card's content). Unset →\n * follows the app-level `[data-card-variant]` knob (default soft-neutral).\n */\n variant?: SparkCardVariant\n /** Chrome palette. `neutral` (default) tracks the app neutral; `accent` tints with the brand accent. */\n color?: SparkCardColor\n /** Corner radius, as a named step. Unset → `2xl`, today's fixed behaviour. */\n radius?: CardRadius\n /**\n * Base UI polymorphism. Pass `<a href/>` or `<button/>` to make the whole\n * card interactive (hover tint, focus ring, disabled styles). Omit → static.\n */\n render?: useRender.RenderProp\n}\n\nconst Card = React.forwardRef<HTMLDivElement, CardProps>(\n ({ className, variant, color, radius = '2xl', render, ...props }, ref) => {\n const interactive = render != null\n const resolved = variant ?? 'ambient'\n return useRender({\n defaultTagName: 'div',\n render,\n props: {\n 'data-slot': 'card',\n 'data-variant': variant,\n 'data-card-color': color === 'accent' ? 'accent' : undefined,\n className: cn(\n cardVariants({ variant }),\n radiusClasses[radius],\n interactive && containerInteractiveClasses(resolved),\n className,\n ),\n ref,\n ...props,\n },\n })\n },\n)\n\nCard.displayName = 'Card'\n\nconst CardHeader = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => (\n <div\n className={cn('flex items-center gap-4', className)}\n ref={ref}\n {...props}\n />\n))\n\nCardHeader.displayName = 'CardHeader'\n\nconst CardIcon = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => (\n <div\n className={cn(\n 'flex shrink-0 items-center justify-center text-(--spark-card-icon,var(--spark-a11))',\n className,\n )}\n ref={ref}\n {...props}\n />\n))\n\nCardIcon.displayName = 'CardIcon'\n\nconst CardTitle = React.forwardRef<\n HTMLHeadingElement,\n React.HTMLAttributes<HTMLHeadingElement>\n>(({ className, ...props }, ref) => (\n <h3\n className={cn(\n 'text-base leading-5 font-medium text-(--spark-card-fg,var(--neutral-a12))',\n className,\n )}\n ref={ref}\n {...props}\n />\n))\n\nCardTitle.displayName = 'CardTitle'\n\nconst CardDescription = React.forwardRef<\n HTMLParagraphElement,\n React.HTMLAttributes<HTMLParagraphElement>\n>(({ className, ...props }, ref) => (\n <p\n className={cn(\n 'text-sm leading-5 text-(--spark-card-fg-muted,var(--neutral-a11))',\n className,\n )}\n ref={ref}\n {...props}\n />\n))\n\nCardDescription.displayName = 'CardDescription'\n\nconst CardContent = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => (\n <div className={cn('', className)} ref={ref} {...props} />\n))\n\nCardContent.displayName = 'CardContent'\n\nconst CardFooter = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => (\n <div\n className={cn(\n 'flex items-center justify-end gap-2 pt-2 text-(--spark-card-fg,var(--neutral-a12))',\n className,\n )}\n ref={ref}\n {...props}\n />\n))\n\nCardFooter.displayName = 'CardFooter'\n\nconst CardSkeleton = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => (\n <div\n className={cn(\n 'relative flex w-full items-center gap-4 rounded-2xl bg-spark-a3 p-4 opacity-80',\n className,\n )}\n ref={ref}\n {...props}\n >\n <div className=\"size-10 shrink-0 animate-pulse rounded-full bg-base-gray-soft motion-reduce:animate-none\" />\n <div className=\"flex flex-1 flex-col gap-y-2\">\n <div className=\"h-5 w-1/3 max-w-32 animate-pulse rounded-md bg-base-gray-soft motion-reduce:animate-none\" />\n <div className=\"h-4 w-1/2 max-w-48 animate-pulse rounded-md bg-base-gray-soft motion-reduce:animate-none\" />\n </div>\n </div>\n))\n\nCardSkeleton.displayName = 'CardSkeleton'\n\nexport {\n Card,\n CardContent,\n CardDescription,\n CardFooter,\n CardHeader,\n CardIcon,\n CardSkeleton,\n CardTitle,\n}\nexport type { CardProps, CardRadius }\n"],"mappings":"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"}
1
+ {"version":3,"file":"card.cjs","names":["containerChrome","containerPaddingX","React","radiusClasses","containerInteractiveClasses"],"sources":["../../src/components/card.tsx"],"sourcesContent":["import { useRender } from '@base-ui/react/use-render'\nimport { cva } from 'class-variance-authority'\nimport * as React from 'react'\nimport {\n containerChrome,\n containerElevated,\n containerInteractiveClasses,\n containerPaddingX,\n radiusClasses,\n type ContainerRadius,\n} from '../lib/container-chrome'\nimport type { SparkCardColor, SparkCardVariant } from '../lib/theme-types'\nimport { cn } from '../utils/cn'\n\ntype CardRadius = ContainerRadius\n\nconst cardVariants = cva('relative flex w-full flex-col gap-1 py-3', {\n variants: {\n variant: {\n ambient: cn(containerChrome.ambient, containerPaddingX.ambient),\n soft: cn(containerChrome.soft, containerPaddingX.soft),\n surface: cn(containerChrome.surface, containerPaddingX.surface),\n outline: cn(containerChrome.outline, containerPaddingX.outline),\n ghost: cn(containerChrome.ghost, containerPaddingX.ghost),\n solid: cn(containerChrome.solid, containerPaddingX.solid),\n },\n },\n defaultVariants: {\n variant: 'ambient',\n },\n})\n\ninterface CardProps extends React.HTMLAttributes<HTMLDivElement> {\n /**\n * Container chrome scoped to this card — NOT the ambient `data-style` knob\n * (that drives controls and would cascade into the card's content). Unset →\n * follows the app-level `[data-card-variant]` knob (default soft-neutral).\n */\n variant?: SparkCardVariant\n /** Chrome palette. `neutral` (default) tracks the app neutral; `accent` tints with the brand accent. */\n color?: SparkCardColor\n /** Corner radius, as a named step. Unset → `2xl`, today's fixed behaviour. */\n radius?: CardRadius\n /**\n * Lift the card off an arbitrary backdrop (a photo, not the flat app canvas):\n * an opaque `--spark-elevated` fill plus a shadow, so no `variant`/`color`\n * combination — including a translucent one like `soft` — can bleed it through.\n */\n elevated?: boolean\n /**\n * Base UI polymorphism. Pass `<a href/>` or `<button/>` to make the whole\n * card interactive (hover tint, focus ring, disabled styles). Omit → static.\n */\n render?: useRender.RenderProp\n}\n\nconst Card = React.forwardRef<HTMLDivElement, CardProps>(\n (\n { className, variant, color, radius = '2xl', elevated, render, ...props },\n ref,\n ) => {\n const interactive = render != null\n const resolved = variant ?? 'ambient'\n return useRender({\n defaultTagName: 'div',\n render,\n props: {\n 'data-slot': 'card',\n 'data-variant': variant,\n 'data-card-color': color === 'accent' ? 'accent' : undefined,\n 'data-elevated': elevated ? '' : undefined,\n className: cn(\n cardVariants({ variant }),\n radiusClasses[radius],\n elevated && containerElevated,\n interactive && containerInteractiveClasses(resolved, elevated),\n className,\n ),\n ref,\n ...props,\n },\n })\n },\n)\n\nCard.displayName = 'Card'\n\nconst CardHeader = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => (\n <div\n className={cn('flex items-center gap-4', className)}\n ref={ref}\n {...props}\n />\n))\n\nCardHeader.displayName = 'CardHeader'\n\nconst CardIcon = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => (\n <div\n className={cn(\n 'flex shrink-0 items-center justify-center text-(--spark-card-icon,var(--spark-a11))',\n className,\n )}\n ref={ref}\n {...props}\n />\n))\n\nCardIcon.displayName = 'CardIcon'\n\nconst CardTitle = React.forwardRef<\n HTMLHeadingElement,\n React.HTMLAttributes<HTMLHeadingElement>\n>(({ className, ...props }, ref) => (\n <h3\n className={cn(\n 'text-base leading-5 font-medium text-(--spark-card-fg,var(--neutral-a12))',\n className,\n )}\n ref={ref}\n {...props}\n />\n))\n\nCardTitle.displayName = 'CardTitle'\n\nconst CardDescription = React.forwardRef<\n HTMLParagraphElement,\n React.HTMLAttributes<HTMLParagraphElement>\n>(({ className, ...props }, ref) => (\n <p\n className={cn(\n 'text-sm leading-5 text-(--spark-card-fg-muted,var(--neutral-a11))',\n className,\n )}\n ref={ref}\n {...props}\n />\n))\n\nCardDescription.displayName = 'CardDescription'\n\nconst CardContent = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => (\n <div className={cn('', className)} ref={ref} {...props} />\n))\n\nCardContent.displayName = 'CardContent'\n\nconst CardFooter = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => (\n <div\n className={cn(\n 'flex items-center justify-end gap-2 pt-2 text-(--spark-card-fg,var(--neutral-a12))',\n className,\n )}\n ref={ref}\n {...props}\n />\n))\n\nCardFooter.displayName = 'CardFooter'\n\nconst CardSkeleton = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => (\n <div\n className={cn(\n 'relative flex w-full items-center gap-4 rounded-2xl bg-spark-a3 p-4 opacity-80',\n className,\n )}\n ref={ref}\n {...props}\n >\n <div className=\"size-10 shrink-0 animate-pulse rounded-full bg-base-gray-soft motion-reduce:animate-none\" />\n <div className=\"flex flex-1 flex-col gap-y-2\">\n <div className=\"h-5 w-1/3 max-w-32 animate-pulse rounded-md bg-base-gray-soft motion-reduce:animate-none\" />\n <div className=\"h-4 w-1/2 max-w-48 animate-pulse rounded-md bg-base-gray-soft motion-reduce:animate-none\" />\n </div>\n </div>\n))\n\nCardSkeleton.displayName = 'CardSkeleton'\n\nexport {\n Card,\n CardContent,\n CardDescription,\n CardFooter,\n CardHeader,\n CardIcon,\n CardSkeleton,\n CardTitle,\n}\nexport type { CardProps, CardRadius }\n"],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  "use client";
2
2
 
3
- import { n as SparkCardVariant, t as SparkCardColor } from "../theme-types-1yB0d8mp.cjs";
3
+ import { n as SparkCardColor, r as SparkCardVariant } from "../theme-types-Bn5E15-P.cjs";
4
4
  import { ContainerRadius } from "../lib/container-chrome.cjs";
5
5
  import * as React$1 from "react";
6
6
  import { useRender } from "@base-ui/react/use-render";
@@ -18,6 +18,12 @@ interface CardProps extends React$1.HTMLAttributes<HTMLDivElement> {
18
18
  color?: SparkCardColor;
19
19
  /** Corner radius, as a named step. Unset → `2xl`, today's fixed behaviour. */
20
20
  radius?: CardRadius;
21
+ /**
22
+ * Lift the card off an arbitrary backdrop (a photo, not the flat app canvas):
23
+ * an opaque `--spark-elevated` fill plus a shadow, so no `variant`/`color`
24
+ * combination — including a translucent one like `soft` — can bleed it through.
25
+ */
26
+ elevated?: boolean;
21
27
  /**
22
28
  * Base UI polymorphism. Pass `<a href/>` or `<button/>` to make the whole
23
29
  * card interactive (hover tint, focus ring, disabled styles). Omit → static.
@@ -1,6 +1,6 @@
1
1
  "use client";
2
2
 
3
- import { n as SparkCardVariant, t as SparkCardColor } from "../theme-types-1yB0d8mp.js";
3
+ import { n as SparkCardColor, r as SparkCardVariant } from "../theme-types-Bn5E15-P.js";
4
4
  import { ContainerRadius } from "../lib/container-chrome.js";
5
5
  import * as React$1 from "react";
6
6
  import { useRender } from "@base-ui/react/use-render";
@@ -18,6 +18,12 @@ interface CardProps extends React$1.HTMLAttributes<HTMLDivElement> {
18
18
  color?: SparkCardColor;
19
19
  /** Corner radius, as a named step. Unset → `2xl`, today's fixed behaviour. */
20
20
  radius?: CardRadius;
21
+ /**
22
+ * Lift the card off an arbitrary backdrop (a photo, not the flat app canvas):
23
+ * an opaque `--spark-elevated` fill plus a shadow, so no `variant`/`color`
24
+ * combination — including a translucent one like `soft` — can bleed it through.
25
+ */
26
+ elevated?: boolean;
21
27
  /**
22
28
  * Base UI polymorphism. Pass `<a href/>` or `<button/>` to make the whole
23
29
  * card interactive (hover tint, focus ring, disabled styles). Omit → static.
@@ -17,7 +17,7 @@ const cardVariants = cva("relative flex w-full flex-col gap-1 py-3", {
17
17
  } },
18
18
  defaultVariants: { variant: "ambient" }
19
19
  });
20
- const Card = React$1.forwardRef(({ className, variant, color, radius = "2xl", render, ...props }, ref) => {
20
+ const Card = React$1.forwardRef(({ className, variant, color, radius = "2xl", elevated, render, ...props }, ref) => {
21
21
  const interactive = render != null;
22
22
  const resolved = variant ?? "ambient";
23
23
  return useRender({
@@ -27,7 +27,8 @@ const Card = React$1.forwardRef(({ className, variant, color, radius = "2xl", re
27
27
  "data-slot": "card",
28
28
  "data-variant": variant,
29
29
  "data-card-color": color === "accent" ? "accent" : void 0,
30
- className: cn(cardVariants({ variant }), radiusClasses[radius], interactive && containerInteractiveClasses(resolved), className),
30
+ "data-elevated": elevated ? "" : void 0,
31
+ className: cn(cardVariants({ variant }), radiusClasses[radius], elevated && "bg-(--spark-elevated) [background-image:linear-gradient(var(--spark-card-bg,transparent),var(--spark-card-bg,transparent))] shadow-(--spark-card-shadow,var(--spark-shadow-1))", interactive && containerInteractiveClasses(resolved, elevated), className),
31
32
  ref,
32
33
  ...props
33
34
  }