@epilot/spark-ui 1.0.0-alpha.6 → 1.0.0-alpha.8
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.
- package/dist/components/bubble.d.cts +1 -1
- package/dist/components/bubble.d.ts +1 -1
- package/dist/components/button.cjs +3 -2
- package/dist/components/button.cjs.map +1 -1
- package/dist/components/button.d.cts +4 -17
- package/dist/components/button.d.ts +4 -17
- package/dist/components/button.js +4 -3
- package/dist/components/button.js.map +1 -1
- package/dist/components/callout.d.cts +1 -1
- package/dist/components/callout.d.ts +1 -1
- package/dist/components/card.cjs +25 -11
- package/dist/components/card.cjs.map +1 -1
- package/dist/components/card.d.cts +6 -0
- package/dist/components/card.d.ts +6 -0
- package/dist/components/card.js +25 -11
- package/dist/components/card.js.map +1 -1
- package/dist/components/empty-state.cjs +9 -2
- package/dist/components/empty-state.cjs.map +1 -1
- package/dist/components/empty-state.d.cts +8 -2
- package/dist/components/empty-state.d.ts +8 -2
- package/dist/components/empty-state.js +10 -2
- package/dist/components/empty-state.js.map +1 -1
- package/dist/components/input-group.cjs +3 -2
- package/dist/components/input-group.cjs.map +1 -1
- package/dist/components/input-group.d.cts +1 -4
- package/dist/components/input-group.d.ts +1 -4
- package/dist/components/input-group.js +4 -3
- package/dist/components/input-group.js.map +1 -1
- package/dist/components/input-otp.cjs +2 -2
- package/dist/components/input-otp.cjs.map +1 -1
- package/dist/components/input-otp.d.cts +3 -0
- package/dist/components/input-otp.d.ts +3 -0
- package/dist/components/input-otp.js +2 -2
- package/dist/components/input-otp.js.map +1 -1
- package/dist/components/input.cjs +3 -2
- package/dist/components/input.cjs.map +1 -1
- package/dist/components/input.d.cts +1 -8
- package/dist/components/input.d.ts +1 -8
- package/dist/components/input.js +4 -3
- package/dist/components/input.js.map +1 -1
- package/dist/components/marker.d.cts +1 -1
- package/dist/components/marker.d.ts +1 -1
- package/dist/components/message-scroller.cjs +1 -1
- package/dist/components/message-scroller.cjs.map +1 -1
- package/dist/components/message-scroller.js +1 -1
- package/dist/components/message-scroller.js.map +1 -1
- package/dist/components/page-header.d.cts +1 -1
- package/dist/components/page-header.d.ts +1 -1
- package/dist/components/slider.cjs +3 -3
- package/dist/components/slider.cjs.map +1 -1
- package/dist/components/slider.js +3 -3
- package/dist/components/slider.js.map +1 -1
- package/dist/components/tabs.cjs +4 -1
- package/dist/components/tabs.cjs.map +1 -1
- package/dist/components/tabs.js +4 -1
- package/dist/components/tabs.js.map +1 -1
- package/dist/components/tooltip.cjs +15 -5
- package/dist/components/tooltip.cjs.map +1 -1
- package/dist/components/tooltip.d.cts +3 -1
- package/dist/components/tooltip.d.ts +3 -1
- package/dist/components/tooltip.js +15 -5
- package/dist/components/tooltip.js.map +1 -1
- package/dist/styles/spark-default.css +1 -0
- package/package.json +1 -1
|
@@ -12,7 +12,7 @@ declare function BubbleGroup({
|
|
|
12
12
|
...props
|
|
13
13
|
}: React$1.ComponentProps<'div'>): _$react_jsx_runtime0.JSX.Element;
|
|
14
14
|
declare const bubbleVariants: (props?: ({
|
|
15
|
-
variant?: "default" | "ghost" | "outline" | "secondary" | "
|
|
15
|
+
variant?: "default" | "ghost" | "outline" | "secondary" | "muted" | "tinted" | "destructive" | null | undefined;
|
|
16
16
|
} & _$class_variance_authority_types0.ClassProp) | undefined) => string;
|
|
17
17
|
declare function Bubble({
|
|
18
18
|
variant,
|
|
@@ -12,7 +12,7 @@ declare function BubbleGroup({
|
|
|
12
12
|
...props
|
|
13
13
|
}: React$1.ComponentProps<'div'>): _$react_jsx_runtime0.JSX.Element;
|
|
14
14
|
declare const bubbleVariants: (props?: ({
|
|
15
|
-
variant?: "default" | "ghost" | "outline" | "secondary" | "
|
|
15
|
+
variant?: "default" | "ghost" | "outline" | "secondary" | "muted" | "tinted" | "destructive" | null | undefined;
|
|
16
16
|
} & _$class_variance_authority_types0.ClassProp) | undefined) => string;
|
|
17
17
|
declare function Bubble({
|
|
18
18
|
variant,
|
|
@@ -36,7 +36,7 @@ const buttonVariants = (0, class_variance_authority.cva)("group/button inline-fl
|
|
|
36
36
|
defaultVariants: { size: "default" }
|
|
37
37
|
});
|
|
38
38
|
const buttonRecipe = "bg-(--spark-style-bg,var(--spark-9)) text-(--spark-style-fg,var(--spark-contrast)) hover:bg-(--spark-style-bg-hover,var(--spark-10)) shadow-[inset_0_0_0_var(--spark-style-border-width,1px)_var(--spark-style-border,transparent)]";
|
|
39
|
-
function Button({ className, styleVariant, color, size, render, nativeButton, variant: _variant, ...props }) {
|
|
39
|
+
const Button = react.forwardRef(function Button({ className, styleVariant, color, size, render, nativeButton, variant: _variant, ...props }, ref) {
|
|
40
40
|
return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_base_ui_react_button.Button, {
|
|
41
41
|
"data-style": styleVariant !== void 0 || color !== void 0 ? styleVariant ?? "solid" : void 0,
|
|
42
42
|
"data-accent-color": color ? require_accent_colors.accentByColor[color] : void 0,
|
|
@@ -46,9 +46,10 @@ function Button({ className, styleVariant, color, size, render, nativeButton, va
|
|
|
46
46
|
size,
|
|
47
47
|
color
|
|
48
48
|
}), buttonRecipe, className),
|
|
49
|
+
ref,
|
|
49
50
|
...props
|
|
50
51
|
});
|
|
51
|
-
}
|
|
52
|
+
});
|
|
52
53
|
Button.displayName = "Button";
|
|
53
54
|
//#endregion
|
|
54
55
|
exports.Button = Button;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"button.cjs","names":["ButtonPrimitive","accentByColor"],"sources":["../../src/components/button.tsx"],"sourcesContent":["'use client'\n\nimport { Button as ButtonPrimitive } from '@base-ui/react/button'\nimport { cva, type VariantProps } from 'class-variance-authority'\nimport * as React from 'react'\nimport { accentByColor } from '../lib/accent-colors'\nimport type { SparkStyle } from '../lib/theme-types'\nimport { cn } from '../utils/cn'\n\nconst buttonVariants = cva(\n 'group/button inline-flex cursor-pointer items-center justify-center gap-2 rounded-[max(var(--spark-rounded-md),var(--spark-rounded-full))] text-base font-medium whitespace-nowrap transition-colors focus-visible:ring-2 focus-visible:ring-offset-2 focus-visible:outline-hidden disabled:pointer-events-none disabled:opacity-50 aria-disabled:pointer-events-none aria-disabled:opacity-50 motion-reduce:transition-none [&_svg]:pointer-events-none [&_svg]:shrink-0',\n {\n variants: {\n variant: {\n primary:\n 'bg-(--spark-style-bg,var(--spark-9)) text-(--spark-style-fg,var(--spark-contrast)) hover:bg-(--spark-style-bg-hover,var(--spark-10))',\n secondary:\n 'bg-gray-2 text-gray-a11 shadow-[inset_0_0_0_1px_var(--color-gray-a7)] hover:bg-gray-a3',\n tertiary: 'bg-transparent text-gray-a11 hover:bg-gray-a3',\n bare: 'rounded-none! text-gray-12 outline-hidden!',\n destructive:\n 'bg-red-a3 text-red-a11 hover:bg-red-a4 focus-visible:ring-base-error-solid',\n },\n color: {\n accent: '',\n neutral: '',\n danger: 'focus-visible:ring-base-error-solid',\n },\n size: {\n small: 'h-9 px-3 text-sm [&_svg:not([class*=size-])]:size-4',\n default: 'h-10 px-3 [&_svg:not([class*=size-])]:size-5',\n medium: 'h-11 px-4 [&_svg:not([class*=size-])]:size-6',\n 'icon-small': 'size-9 [&_svg:not([class*=size-])]:size-4',\n icon: 'size-10 [&_svg:not([class*=size-])]:size-5',\n 'icon-medium': 'size-11 [&_svg:not([class*=size-])]:size-6',\n },\n },\n defaultVariants: {\n size: 'default',\n },\n },\n)\n\nconst buttonRecipe =\n 'bg-(--spark-style-bg,var(--spark-9)) text-(--spark-style-fg,var(--spark-contrast)) hover:bg-(--spark-style-bg-hover,var(--spark-10)) shadow-[inset_0_0_0_var(--spark-style-border-width,1px)_var(--spark-style-border,transparent)]'\n\nexport type SparkButtonColor = 'accent' | 'neutral' | 'danger'\n\nexport interface ButtonProps\n extends\n React.ComponentProps<typeof ButtonPrimitive>,\n Omit<VariantProps<typeof buttonVariants>, 'variant' | 'color'> {\n styleVariant?: SparkStyle\n color?: SparkButtonColor\n /**\n * @deprecated Not a `<Button>` prop and silently ignored -- use `styleVariant`\n * (`solid | soft | surface | ghost | outline`) and `color`\n * (`accent | neutral | danger`) instead. The `variant` axis on\n * `buttonVariants` exists only for class-string callers.\n */\n variant?: never\n}\n\
|
|
1
|
+
{"version":3,"file":"button.cjs","names":["React","ButtonPrimitive","accentByColor"],"sources":["../../src/components/button.tsx"],"sourcesContent":["'use client'\n\nimport { Button as ButtonPrimitive } from '@base-ui/react/button'\nimport { cva, type VariantProps } from 'class-variance-authority'\nimport * as React from 'react'\nimport { accentByColor } from '../lib/accent-colors'\nimport type { SparkStyle } from '../lib/theme-types'\nimport { cn } from '../utils/cn'\n\nconst buttonVariants = cva(\n 'group/button inline-flex cursor-pointer items-center justify-center gap-2 rounded-[max(var(--spark-rounded-md),var(--spark-rounded-full))] text-base font-medium whitespace-nowrap transition-colors focus-visible:ring-2 focus-visible:ring-offset-2 focus-visible:outline-hidden disabled:pointer-events-none disabled:opacity-50 aria-disabled:pointer-events-none aria-disabled:opacity-50 motion-reduce:transition-none [&_svg]:pointer-events-none [&_svg]:shrink-0',\n {\n variants: {\n variant: {\n primary:\n 'bg-(--spark-style-bg,var(--spark-9)) text-(--spark-style-fg,var(--spark-contrast)) hover:bg-(--spark-style-bg-hover,var(--spark-10))',\n secondary:\n 'bg-gray-2 text-gray-a11 shadow-[inset_0_0_0_1px_var(--color-gray-a7)] hover:bg-gray-a3',\n tertiary: 'bg-transparent text-gray-a11 hover:bg-gray-a3',\n bare: 'rounded-none! text-gray-12 outline-hidden!',\n destructive:\n 'bg-red-a3 text-red-a11 hover:bg-red-a4 focus-visible:ring-base-error-solid',\n },\n color: {\n accent: '',\n neutral: '',\n danger: 'focus-visible:ring-base-error-solid',\n },\n size: {\n small: 'h-9 px-3 text-sm [&_svg:not([class*=size-])]:size-4',\n default: 'h-10 px-3 [&_svg:not([class*=size-])]:size-5',\n medium: 'h-11 px-4 [&_svg:not([class*=size-])]:size-6',\n 'icon-small': 'size-9 [&_svg:not([class*=size-])]:size-4',\n icon: 'size-10 [&_svg:not([class*=size-])]:size-5',\n 'icon-medium': 'size-11 [&_svg:not([class*=size-])]:size-6',\n },\n },\n defaultVariants: {\n size: 'default',\n },\n },\n)\n\nconst buttonRecipe =\n 'bg-(--spark-style-bg,var(--spark-9)) text-(--spark-style-fg,var(--spark-contrast)) hover:bg-(--spark-style-bg-hover,var(--spark-10)) shadow-[inset_0_0_0_var(--spark-style-border-width,1px)_var(--spark-style-border,transparent)]'\n\nexport type SparkButtonColor = 'accent' | 'neutral' | 'danger'\n\nexport interface ButtonProps\n extends\n Omit<React.ComponentProps<typeof ButtonPrimitive>, 'ref'>,\n Omit<VariantProps<typeof buttonVariants>, 'variant' | 'color'> {\n styleVariant?: SparkStyle\n color?: SparkButtonColor\n /**\n * @deprecated Not a `<Button>` prop and silently ignored -- use `styleVariant`\n * (`solid | soft | surface | ghost | outline`) and `color`\n * (`accent | neutral | danger`) instead. The `variant` axis on\n * `buttonVariants` exists only for class-string callers.\n */\n variant?: never\n}\n\n// forwardRef keeps refs working for React 18 consumers (ref-as-prop is 19-only)\nconst Button = React.forwardRef<HTMLButtonElement, ButtonProps>(function Button(\n {\n className,\n styleVariant,\n color,\n size,\n render,\n nativeButton,\n variant: _variant,\n ...props\n },\n ref,\n) {\n const hasLook = styleVariant !== undefined || color !== undefined\n const dataStyle = hasLook ? (styleVariant ?? 'solid') : undefined\n const dataAccentColor = color ? accentByColor[color] : undefined\n\n return (\n <ButtonPrimitive\n data-style={dataStyle}\n data-accent-color={dataAccentColor}\n nativeButton={nativeButton ?? render === undefined}\n render={render}\n className={cn(buttonVariants({ size, color }), buttonRecipe, className)}\n ref={ref}\n {...props}\n />\n )\n})\n\nButton.displayName = 'Button'\n\nexport { Button, buttonVariants }\n"],"mappings":";;;;;;;;;;;;AASA,MAAM,kBAAA,GAAA,yBAAA,KACJ,6cACA;CACE,UAAU;EACR,SAAS;GACP,SACE;GACF,WACE;GACF,UAAU;GACV,MAAM;GACN,aACE;GACH;EACD,OAAO;GACL,QAAQ;GACR,SAAS;GACT,QAAQ;GACT;EACD,MAAM;GACJ,OAAO;GACP,SAAS;GACT,QAAQ;GACR,cAAc;GACd,MAAM;GACN,eAAe;GAChB;EACF;CACD,iBAAiB,EACf,MAAM,WACP;CACF,CACF;AAED,MAAM,eACJ;AAoBF,MAAM,SAASA,MAAM,WAA2C,SAAS,OACvE,EACE,WACA,cACA,OACA,MACA,QACA,cACA,SAAS,UACT,GAAG,SAEL,KACA;AAKA,QACE,iBAAA,GAAA,kBAAA,KAACC,sBAAAA,QAAD;EACE,cANY,iBAAiB,KAAA,KAAa,UAAU,KAAA,IAC3B,gBAAgB,UAAW,KAAA;EAMpD,qBALoB,QAAQC,sBAAAA,cAAc,SAAS,KAAA;EAMnD,cAAc,gBAAgB,WAAW,KAAA;EACjC;EACR,YAAA,GAAA,OAAA,IAAc,eAAe;GAAE;GAAM;GAAO,CAAC,EAAE,cAAc,UAAU;EAClE;EACL,GAAI;EACJ,CAAA;EAEJ;AAEF,OAAO,cAAc"}
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
|
|
3
3
|
import { u as SparkStyle } from "../theme-types-BwSJKdsB.cjs";
|
|
4
|
-
import * as _$react_jsx_runtime0 from "react/jsx-runtime";
|
|
5
4
|
import * as React$1 from "react";
|
|
6
5
|
import * as _$class_variance_authority_types0 from "class-variance-authority/types";
|
|
7
6
|
import { Button as Button$1 } from "@base-ui/react/button";
|
|
@@ -9,12 +8,12 @@ import { VariantProps } from "class-variance-authority";
|
|
|
9
8
|
|
|
10
9
|
//#region src/components/button.d.ts
|
|
11
10
|
declare const buttonVariants: (props?: ({
|
|
12
|
-
variant?: "
|
|
13
|
-
color?: "
|
|
11
|
+
variant?: "secondary" | "destructive" | "primary" | "tertiary" | "bare" | null | undefined;
|
|
12
|
+
color?: "accent" | "neutral" | "danger" | null | undefined;
|
|
14
13
|
size?: "small" | "default" | "icon" | "medium" | "icon-small" | "icon-medium" | null | undefined;
|
|
15
14
|
} & _$class_variance_authority_types0.ClassProp) | undefined) => string;
|
|
16
15
|
type SparkButtonColor = 'accent' | 'neutral' | 'danger';
|
|
17
|
-
interface ButtonProps extends React$1.ComponentProps<typeof Button$1>, Omit<VariantProps<typeof buttonVariants>, 'variant' | 'color'> {
|
|
16
|
+
interface ButtonProps extends Omit<React$1.ComponentProps<typeof Button$1>, 'ref'>, Omit<VariantProps<typeof buttonVariants>, 'variant' | 'color'> {
|
|
18
17
|
styleVariant?: SparkStyle;
|
|
19
18
|
color?: SparkButtonColor;
|
|
20
19
|
/**
|
|
@@ -25,19 +24,7 @@ interface ButtonProps extends React$1.ComponentProps<typeof Button$1>, Omit<Vari
|
|
|
25
24
|
*/
|
|
26
25
|
variant?: never;
|
|
27
26
|
}
|
|
28
|
-
declare
|
|
29
|
-
className,
|
|
30
|
-
styleVariant,
|
|
31
|
-
color,
|
|
32
|
-
size,
|
|
33
|
-
render,
|
|
34
|
-
nativeButton,
|
|
35
|
-
variant: _variant,
|
|
36
|
-
...props
|
|
37
|
-
}: ButtonProps): _$react_jsx_runtime0.JSX.Element;
|
|
38
|
-
declare namespace Button {
|
|
39
|
-
var displayName: string;
|
|
40
|
-
}
|
|
27
|
+
declare const Button: React$1.ForwardRefExoticComponent<ButtonProps & React$1.RefAttributes<HTMLButtonElement>>;
|
|
41
28
|
//#endregion
|
|
42
29
|
export { Button, ButtonProps, SparkButtonColor, buttonVariants };
|
|
43
30
|
//# sourceMappingURL=button.d.cts.map
|
|
@@ -2,19 +2,18 @@
|
|
|
2
2
|
|
|
3
3
|
import { u as SparkStyle } from "../theme-types-BDdoRxXa.js";
|
|
4
4
|
import * as React$1 from "react";
|
|
5
|
-
import * as _$react_jsx_runtime0 from "react/jsx-runtime";
|
|
6
5
|
import { Button as Button$1 } from "@base-ui/react/button";
|
|
7
6
|
import { VariantProps } from "class-variance-authority";
|
|
8
7
|
import * as _$class_variance_authority_types0 from "class-variance-authority/types";
|
|
9
8
|
|
|
10
9
|
//#region src/components/button.d.ts
|
|
11
10
|
declare const buttonVariants: (props?: ({
|
|
12
|
-
variant?: "
|
|
13
|
-
color?: "
|
|
11
|
+
variant?: "secondary" | "destructive" | "primary" | "tertiary" | "bare" | null | undefined;
|
|
12
|
+
color?: "accent" | "neutral" | "danger" | null | undefined;
|
|
14
13
|
size?: "small" | "default" | "icon" | "medium" | "icon-small" | "icon-medium" | null | undefined;
|
|
15
14
|
} & _$class_variance_authority_types0.ClassProp) | undefined) => string;
|
|
16
15
|
type SparkButtonColor = 'accent' | 'neutral' | 'danger';
|
|
17
|
-
interface ButtonProps extends React$1.ComponentProps<typeof Button$1>, Omit<VariantProps<typeof buttonVariants>, 'variant' | 'color'> {
|
|
16
|
+
interface ButtonProps extends Omit<React$1.ComponentProps<typeof Button$1>, 'ref'>, Omit<VariantProps<typeof buttonVariants>, 'variant' | 'color'> {
|
|
18
17
|
styleVariant?: SparkStyle;
|
|
19
18
|
color?: SparkButtonColor;
|
|
20
19
|
/**
|
|
@@ -25,19 +24,7 @@ interface ButtonProps extends React$1.ComponentProps<typeof Button$1>, Omit<Vari
|
|
|
25
24
|
*/
|
|
26
25
|
variant?: never;
|
|
27
26
|
}
|
|
28
|
-
declare
|
|
29
|
-
className,
|
|
30
|
-
styleVariant,
|
|
31
|
-
color,
|
|
32
|
-
size,
|
|
33
|
-
render,
|
|
34
|
-
nativeButton,
|
|
35
|
-
variant: _variant,
|
|
36
|
-
...props
|
|
37
|
-
}: ButtonProps): _$react_jsx_runtime0.JSX.Element;
|
|
38
|
-
declare namespace Button {
|
|
39
|
-
var displayName: string;
|
|
40
|
-
}
|
|
27
|
+
declare const Button: React$1.ForwardRefExoticComponent<ButtonProps & React$1.RefAttributes<HTMLButtonElement>>;
|
|
41
28
|
//#endregion
|
|
42
29
|
export { Button, ButtonProps, SparkButtonColor, buttonVariants };
|
|
43
30
|
//# sourceMappingURL=button.d.ts.map
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
"use client";
|
|
3
3
|
import { cn } from "../utils/cn.js";
|
|
4
4
|
import { t as accentByColor } from "../accent-colors-Ch2J0EEY.js";
|
|
5
|
-
import "react";
|
|
5
|
+
import * as React$1 from "react";
|
|
6
6
|
import { jsx } from "react/jsx-runtime";
|
|
7
7
|
import { Button as Button$1 } from "@base-ui/react/button";
|
|
8
8
|
import { cva } from "class-variance-authority";
|
|
@@ -33,7 +33,7 @@ const buttonVariants = cva("group/button inline-flex cursor-pointer items-center
|
|
|
33
33
|
defaultVariants: { size: "default" }
|
|
34
34
|
});
|
|
35
35
|
const buttonRecipe = "bg-(--spark-style-bg,var(--spark-9)) text-(--spark-style-fg,var(--spark-contrast)) hover:bg-(--spark-style-bg-hover,var(--spark-10)) shadow-[inset_0_0_0_var(--spark-style-border-width,1px)_var(--spark-style-border,transparent)]";
|
|
36
|
-
function Button({ className, styleVariant, color, size, render, nativeButton, variant: _variant, ...props }) {
|
|
36
|
+
const Button = React$1.forwardRef(function Button({ className, styleVariant, color, size, render, nativeButton, variant: _variant, ...props }, ref) {
|
|
37
37
|
return /* @__PURE__ */ jsx(Button$1, {
|
|
38
38
|
"data-style": styleVariant !== void 0 || color !== void 0 ? styleVariant ?? "solid" : void 0,
|
|
39
39
|
"data-accent-color": color ? accentByColor[color] : void 0,
|
|
@@ -43,9 +43,10 @@ function Button({ className, styleVariant, color, size, render, nativeButton, va
|
|
|
43
43
|
size,
|
|
44
44
|
color
|
|
45
45
|
}), buttonRecipe, className),
|
|
46
|
+
ref,
|
|
46
47
|
...props
|
|
47
48
|
});
|
|
48
|
-
}
|
|
49
|
+
});
|
|
49
50
|
Button.displayName = "Button";
|
|
50
51
|
//#endregion
|
|
51
52
|
export { Button, buttonVariants };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"button.js","names":["ButtonPrimitive"],"sources":["../../src/components/button.tsx"],"sourcesContent":["'use client'\n\nimport { Button as ButtonPrimitive } from '@base-ui/react/button'\nimport { cva, type VariantProps } from 'class-variance-authority'\nimport * as React from 'react'\nimport { accentByColor } from '../lib/accent-colors'\nimport type { SparkStyle } from '../lib/theme-types'\nimport { cn } from '../utils/cn'\n\nconst buttonVariants = cva(\n 'group/button inline-flex cursor-pointer items-center justify-center gap-2 rounded-[max(var(--spark-rounded-md),var(--spark-rounded-full))] text-base font-medium whitespace-nowrap transition-colors focus-visible:ring-2 focus-visible:ring-offset-2 focus-visible:outline-hidden disabled:pointer-events-none disabled:opacity-50 aria-disabled:pointer-events-none aria-disabled:opacity-50 motion-reduce:transition-none [&_svg]:pointer-events-none [&_svg]:shrink-0',\n {\n variants: {\n variant: {\n primary:\n 'bg-(--spark-style-bg,var(--spark-9)) text-(--spark-style-fg,var(--spark-contrast)) hover:bg-(--spark-style-bg-hover,var(--spark-10))',\n secondary:\n 'bg-gray-2 text-gray-a11 shadow-[inset_0_0_0_1px_var(--color-gray-a7)] hover:bg-gray-a3',\n tertiary: 'bg-transparent text-gray-a11 hover:bg-gray-a3',\n bare: 'rounded-none! text-gray-12 outline-hidden!',\n destructive:\n 'bg-red-a3 text-red-a11 hover:bg-red-a4 focus-visible:ring-base-error-solid',\n },\n color: {\n accent: '',\n neutral: '',\n danger: 'focus-visible:ring-base-error-solid',\n },\n size: {\n small: 'h-9 px-3 text-sm [&_svg:not([class*=size-])]:size-4',\n default: 'h-10 px-3 [&_svg:not([class*=size-])]:size-5',\n medium: 'h-11 px-4 [&_svg:not([class*=size-])]:size-6',\n 'icon-small': 'size-9 [&_svg:not([class*=size-])]:size-4',\n icon: 'size-10 [&_svg:not([class*=size-])]:size-5',\n 'icon-medium': 'size-11 [&_svg:not([class*=size-])]:size-6',\n },\n },\n defaultVariants: {\n size: 'default',\n },\n },\n)\n\nconst buttonRecipe =\n 'bg-(--spark-style-bg,var(--spark-9)) text-(--spark-style-fg,var(--spark-contrast)) hover:bg-(--spark-style-bg-hover,var(--spark-10)) shadow-[inset_0_0_0_var(--spark-style-border-width,1px)_var(--spark-style-border,transparent)]'\n\nexport type SparkButtonColor = 'accent' | 'neutral' | 'danger'\n\nexport interface ButtonProps\n extends\n React.ComponentProps<typeof ButtonPrimitive>,\n Omit<VariantProps<typeof buttonVariants>, 'variant' | 'color'> {\n styleVariant?: SparkStyle\n color?: SparkButtonColor\n /**\n * @deprecated Not a `<Button>` prop and silently ignored -- use `styleVariant`\n * (`solid | soft | surface | ghost | outline`) and `color`\n * (`accent | neutral | danger`) instead. The `variant` axis on\n * `buttonVariants` exists only for class-string callers.\n */\n variant?: never\n}\n\
|
|
1
|
+
{"version":3,"file":"button.js","names":["React","ButtonPrimitive"],"sources":["../../src/components/button.tsx"],"sourcesContent":["'use client'\n\nimport { Button as ButtonPrimitive } from '@base-ui/react/button'\nimport { cva, type VariantProps } from 'class-variance-authority'\nimport * as React from 'react'\nimport { accentByColor } from '../lib/accent-colors'\nimport type { SparkStyle } from '../lib/theme-types'\nimport { cn } from '../utils/cn'\n\nconst buttonVariants = cva(\n 'group/button inline-flex cursor-pointer items-center justify-center gap-2 rounded-[max(var(--spark-rounded-md),var(--spark-rounded-full))] text-base font-medium whitespace-nowrap transition-colors focus-visible:ring-2 focus-visible:ring-offset-2 focus-visible:outline-hidden disabled:pointer-events-none disabled:opacity-50 aria-disabled:pointer-events-none aria-disabled:opacity-50 motion-reduce:transition-none [&_svg]:pointer-events-none [&_svg]:shrink-0',\n {\n variants: {\n variant: {\n primary:\n 'bg-(--spark-style-bg,var(--spark-9)) text-(--spark-style-fg,var(--spark-contrast)) hover:bg-(--spark-style-bg-hover,var(--spark-10))',\n secondary:\n 'bg-gray-2 text-gray-a11 shadow-[inset_0_0_0_1px_var(--color-gray-a7)] hover:bg-gray-a3',\n tertiary: 'bg-transparent text-gray-a11 hover:bg-gray-a3',\n bare: 'rounded-none! text-gray-12 outline-hidden!',\n destructive:\n 'bg-red-a3 text-red-a11 hover:bg-red-a4 focus-visible:ring-base-error-solid',\n },\n color: {\n accent: '',\n neutral: '',\n danger: 'focus-visible:ring-base-error-solid',\n },\n size: {\n small: 'h-9 px-3 text-sm [&_svg:not([class*=size-])]:size-4',\n default: 'h-10 px-3 [&_svg:not([class*=size-])]:size-5',\n medium: 'h-11 px-4 [&_svg:not([class*=size-])]:size-6',\n 'icon-small': 'size-9 [&_svg:not([class*=size-])]:size-4',\n icon: 'size-10 [&_svg:not([class*=size-])]:size-5',\n 'icon-medium': 'size-11 [&_svg:not([class*=size-])]:size-6',\n },\n },\n defaultVariants: {\n size: 'default',\n },\n },\n)\n\nconst buttonRecipe =\n 'bg-(--spark-style-bg,var(--spark-9)) text-(--spark-style-fg,var(--spark-contrast)) hover:bg-(--spark-style-bg-hover,var(--spark-10)) shadow-[inset_0_0_0_var(--spark-style-border-width,1px)_var(--spark-style-border,transparent)]'\n\nexport type SparkButtonColor = 'accent' | 'neutral' | 'danger'\n\nexport interface ButtonProps\n extends\n Omit<React.ComponentProps<typeof ButtonPrimitive>, 'ref'>,\n Omit<VariantProps<typeof buttonVariants>, 'variant' | 'color'> {\n styleVariant?: SparkStyle\n color?: SparkButtonColor\n /**\n * @deprecated Not a `<Button>` prop and silently ignored -- use `styleVariant`\n * (`solid | soft | surface | ghost | outline`) and `color`\n * (`accent | neutral | danger`) instead. The `variant` axis on\n * `buttonVariants` exists only for class-string callers.\n */\n variant?: never\n}\n\n// forwardRef keeps refs working for React 18 consumers (ref-as-prop is 19-only)\nconst Button = React.forwardRef<HTMLButtonElement, ButtonProps>(function Button(\n {\n className,\n styleVariant,\n color,\n size,\n render,\n nativeButton,\n variant: _variant,\n ...props\n },\n ref,\n) {\n const hasLook = styleVariant !== undefined || color !== undefined\n const dataStyle = hasLook ? (styleVariant ?? 'solid') : undefined\n const dataAccentColor = color ? accentByColor[color] : undefined\n\n return (\n <ButtonPrimitive\n data-style={dataStyle}\n data-accent-color={dataAccentColor}\n nativeButton={nativeButton ?? render === undefined}\n render={render}\n className={cn(buttonVariants({ size, color }), buttonRecipe, className)}\n ref={ref}\n {...props}\n />\n )\n})\n\nButton.displayName = 'Button'\n\nexport { Button, buttonVariants }\n"],"mappings":";;;;;;;;;AASA,MAAM,iBAAiB,IACrB,6cACA;CACE,UAAU;EACR,SAAS;GACP,SACE;GACF,WACE;GACF,UAAU;GACV,MAAM;GACN,aACE;GACH;EACD,OAAO;GACL,QAAQ;GACR,SAAS;GACT,QAAQ;GACT;EACD,MAAM;GACJ,OAAO;GACP,SAAS;GACT,QAAQ;GACR,cAAc;GACd,MAAM;GACN,eAAe;GAChB;EACF;CACD,iBAAiB,EACf,MAAM,WACP;CACF,CACF;AAED,MAAM,eACJ;AAoBF,MAAM,SAASA,QAAM,WAA2C,SAAS,OACvE,EACE,WACA,cACA,OACA,MACA,QACA,cACA,SAAS,UACT,GAAG,SAEL,KACA;AAKA,QACE,oBAACC,UAAD;EACE,cANY,iBAAiB,KAAA,KAAa,UAAU,KAAA,IAC3B,gBAAgB,UAAW,KAAA;EAMpD,qBALoB,QAAQ,cAAc,SAAS,KAAA;EAMnD,cAAc,gBAAgB,WAAW,KAAA;EACjC;EACR,WAAW,GAAG,eAAe;GAAE;GAAM;GAAO,CAAC,EAAE,cAAc,UAAU;EAClE;EACL,GAAI;EACJ,CAAA;EAEJ;AAEF,OAAO,cAAc"}
|
|
@@ -9,7 +9,7 @@ import { VariantProps } from "class-variance-authority";
|
|
|
9
9
|
//#region src/components/callout.d.ts
|
|
10
10
|
type CalloutVariant = 'error' | 'info' | 'success' | 'warning';
|
|
11
11
|
declare const calloutVariants: (props?: ({
|
|
12
|
-
variant?: "success" | "warning" | "
|
|
12
|
+
variant?: "success" | "warning" | "info" | "error" | null | undefined;
|
|
13
13
|
} & _$class_variance_authority_types0.ClassProp) | undefined) => string;
|
|
14
14
|
interface CalloutProps extends React$1.HTMLAttributes<HTMLDivElement>, VariantProps<typeof calloutVariants> {}
|
|
15
15
|
declare const CalloutTitle: ({
|
|
@@ -9,7 +9,7 @@ import * as _$class_variance_authority_types0 from "class-variance-authority/typ
|
|
|
9
9
|
//#region src/components/callout.d.ts
|
|
10
10
|
type CalloutVariant = 'error' | 'info' | 'success' | 'warning';
|
|
11
11
|
declare const calloutVariants: (props?: ({
|
|
12
|
-
variant?: "success" | "warning" | "
|
|
12
|
+
variant?: "success" | "warning" | "info" | "error" | null | undefined;
|
|
13
13
|
} & _$class_variance_authority_types0.ClassProp) | undefined) => string;
|
|
14
14
|
interface CalloutProps extends React$1.HTMLAttributes<HTMLDivElement>, VariantProps<typeof calloutVariants> {}
|
|
15
15
|
declare const CalloutTitle: ({
|
package/dist/components/card.cjs
CHANGED
|
@@ -5,27 +5,41 @@ let react = require("react");
|
|
|
5
5
|
react = require_chunk.__toESM(react);
|
|
6
6
|
let react_jsx_runtime = require("react/jsx-runtime");
|
|
7
7
|
let class_variance_authority = require("class-variance-authority");
|
|
8
|
+
let _base_ui_react_use_render = require("@base-ui/react/use-render");
|
|
8
9
|
let cnfast = require("cnfast");
|
|
9
10
|
//#region src/components/card.tsx
|
|
10
11
|
const cardVariants = (0, class_variance_authority.cva)("relative flex w-full flex-col gap-1 rounded-2xl py-3", {
|
|
11
12
|
variants: { variant: {
|
|
12
|
-
ambient: "border-
|
|
13
|
+
ambient: "border-(length:--spark-card-border-width,0px) border-(--spark-card-border,transparent) bg-(--spark-card-bg,var(--neutral-a3)) px-(--spark-card-px,1rem)",
|
|
13
14
|
soft: "bg-(--spark-card-c-soft,var(--neutral-a3)) px-4",
|
|
14
|
-
surface: "border border-
|
|
15
|
-
outline: "border border-
|
|
15
|
+
surface: "border border-(--spark-card-c-border,var(--neutral-a6)) bg-(--spark-card-c-surface,var(--neutral-2)) px-4",
|
|
16
|
+
outline: "border border-(--spark-card-c-border,var(--neutral-a6)) px-4",
|
|
16
17
|
ghost: "",
|
|
17
18
|
solid: "bg-(--spark-card-c-solid,var(--neutral-9)) px-4 [--spark-card-fg-muted:var(--spark-card-c-contrast,var(--neutral-contrast))] [--spark-card-fg:var(--spark-card-c-contrast,var(--neutral-contrast))] [--spark-card-icon:var(--spark-card-c-contrast,var(--neutral-contrast))]"
|
|
18
19
|
} },
|
|
19
20
|
defaultVariants: { variant: "ambient" }
|
|
20
21
|
});
|
|
21
|
-
const Card = react.forwardRef(({ className, variant, color, ...props }, ref) =>
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
22
|
+
const Card = react.forwardRef(({ className, variant, color, render, ...props }, ref) => {
|
|
23
|
+
const interactive = render != null;
|
|
24
|
+
const resolved = variant ?? "ambient";
|
|
25
|
+
return (0, _base_ui_react_use_render.useRender)({
|
|
26
|
+
defaultTagName: "div",
|
|
27
|
+
render,
|
|
28
|
+
props: {
|
|
29
|
+
"data-slot": "card",
|
|
30
|
+
"data-variant": variant,
|
|
31
|
+
"data-card-color": color === "accent" ? "accent" : void 0,
|
|
32
|
+
className: (0, cnfast.cn)(cardVariants({ variant }), interactive && [
|
|
33
|
+
"cursor-pointer text-left no-underline transition-colors motion-reduce:transition-none",
|
|
34
|
+
"focus-visible:ring-2 focus-visible:ring-offset-2 focus-visible:outline-hidden",
|
|
35
|
+
"disabled:pointer-events-none disabled:opacity-50 aria-disabled:pointer-events-none aria-disabled:opacity-50",
|
|
36
|
+
(resolved === "ambient" || resolved === "soft") && "hover:bg-(--spark-card-c-soft-hover,var(--neutral-a4))"
|
|
37
|
+
], className),
|
|
38
|
+
ref,
|
|
39
|
+
...props
|
|
40
|
+
}
|
|
41
|
+
});
|
|
42
|
+
});
|
|
29
43
|
Card.displayName = "Card";
|
|
30
44
|
const CardHeader = react.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
|
|
31
45
|
className: (0, cnfast.cn)("flex items-center gap-4", className),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"card.cjs","names":["React"],"sources":["../../src/components/card.tsx"],"sourcesContent":["import { cva } from 'class-variance-authority'\nimport * as React from 'react'\nimport type { SparkCardColor, SparkCardVariant } from '../lib/theme-types'\nimport { cn } from '../utils/cn'\n\nconst cardVariants = cva(\n
|
|
1
|
+
{"version":3,"file":"card.cjs","names":["React"],"sources":["../../src/components/card.tsx"],"sourcesContent":["import { useRender } from '@base-ui/react/use-render'\nimport { cva } from 'class-variance-authority'\nimport * as React from 'react'\nimport type { SparkCardColor, SparkCardVariant } from '../lib/theme-types'\nimport { cn } from '../utils/cn'\n\nconst cardVariants = cva(\n 'relative flex w-full flex-col gap-1 rounded-2xl py-3',\n {\n variants: {\n variant: {\n ambient:\n 'border-(length:--spark-card-border-width,0px) border-(--spark-card-border,transparent) bg-(--spark-card-bg,var(--neutral-a3)) px-(--spark-card-px,1rem)',\n soft: 'bg-(--spark-card-c-soft,var(--neutral-a3)) px-4',\n surface:\n 'border border-(--spark-card-c-border,var(--neutral-a6)) bg-(--spark-card-c-surface,var(--neutral-2)) px-4',\n outline: 'border border-(--spark-card-c-border,var(--neutral-a6)) px-4',\n ghost: '',\n solid:\n 'bg-(--spark-card-c-solid,var(--neutral-9)) px-4 [--spark-card-fg-muted:var(--spark-card-c-contrast,var(--neutral-contrast))] [--spark-card-fg:var(--spark-card-c-contrast,var(--neutral-contrast))] [--spark-card-icon:var(--spark-card-c-contrast,var(--neutral-contrast))]',\n },\n },\n defaultVariants: {\n variant: 'ambient',\n },\n },\n)\n\ninterface CardProps extends React.HTMLAttributes<HTMLDivElement> {\n /**\n * Container chrome scoped to this card — NOT the ambient `data-style` knob\n * (that drives controls and would cascade into the card's content). Unset →\n * follows the app-level `[data-card-variant]` knob (default soft-neutral).\n * (`solid` is hidden for now — see `SparkCardVariant`.)\n */\n variant?: SparkCardVariant\n /** Chrome palette. `neutral` (default) tracks the app neutral; `accent` tints with the brand accent. */\n color?: SparkCardColor\n /**\n * Base UI polymorphism. Pass `<a href/>` or `<button/>` to make the whole\n * card interactive (hover tint, focus ring, disabled styles). Omit → static.\n */\n render?: useRender.RenderProp\n}\n\nconst Card = React.forwardRef<HTMLDivElement, CardProps>(\n ({ className, variant, color, render, ...props }, ref) => {\n const interactive = render != null\n const resolved = variant ?? 'ambient'\n return useRender({\n defaultTagName: 'div',\n render,\n props: {\n 'data-slot': 'card',\n 'data-variant': variant,\n 'data-card-color': color === 'accent' ? 'accent' : undefined,\n className: cn(\n cardVariants({ variant }),\n interactive && [\n 'cursor-pointer text-left no-underline transition-colors motion-reduce:transition-none',\n 'focus-visible:ring-2 focus-visible:ring-offset-2 focus-visible:outline-hidden',\n 'disabled:pointer-events-none disabled:opacity-50 aria-disabled:pointer-events-none aria-disabled:opacity-50',\n // hover deepens the fill one step; bordered/bare variants only ring\n (resolved === 'ambient' || resolved === 'soft') &&\n 'hover:bg-(--spark-card-c-soft-hover,var(--neutral-a4))',\n ],\n className,\n ),\n ref,\n ...props,\n },\n })\n },\n)\n\nCard.displayName = 'Card'\n\nconst CardHeader = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => (\n <div\n className={cn('flex items-center gap-4', className)}\n ref={ref}\n {...props}\n />\n))\n\nCardHeader.displayName = 'CardHeader'\n\nconst CardIcon = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => (\n <div\n className={cn(\n 'flex shrink-0 items-center justify-center text-(--spark-card-icon,var(--spark-a11))',\n className,\n )}\n ref={ref}\n {...props}\n />\n))\n\nCardIcon.displayName = 'CardIcon'\n\nconst CardTitle = React.forwardRef<\n HTMLHeadingElement,\n React.HTMLAttributes<HTMLHeadingElement>\n>(({ className, ...props }, ref) => (\n <h3\n className={cn(\n 'text-base leading-5 font-medium text-(--spark-card-fg,var(--neutral-a12))',\n className,\n )}\n ref={ref}\n {...props}\n />\n))\n\nCardTitle.displayName = 'CardTitle'\n\nconst CardDescription = React.forwardRef<\n HTMLParagraphElement,\n React.HTMLAttributes<HTMLParagraphElement>\n>(({ className, ...props }, ref) => (\n <p\n className={cn(\n 'text-sm leading-5 text-(--spark-card-fg-muted,var(--neutral-a11))',\n className,\n )}\n ref={ref}\n {...props}\n />\n))\n\nCardDescription.displayName = 'CardDescription'\n\nconst CardContent = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => (\n <div className={cn('', className)} ref={ref} {...props} />\n))\n\nCardContent.displayName = 'CardContent'\n\nconst CardFooter = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => (\n <div\n className={cn(\n 'flex items-center justify-end gap-2 pt-2 text-(--spark-card-fg,var(--neutral-a12))',\n className,\n )}\n ref={ref}\n {...props}\n />\n))\n\nCardFooter.displayName = 'CardFooter'\n\nconst CardSkeleton = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => (\n <div\n className={cn(\n 'relative flex w-full items-center gap-4 rounded-2xl bg-spark-a3 p-4 opacity-80',\n className,\n )}\n ref={ref}\n {...props}\n >\n <div className=\"size-10 shrink-0 animate-pulse rounded-full bg-base-gray-soft motion-reduce:animate-none\" />\n <div className=\"flex flex-1 flex-col gap-y-2\">\n <div className=\"h-5 w-1/3 max-w-32 animate-pulse rounded-md bg-base-gray-soft motion-reduce:animate-none\" />\n <div className=\"h-4 w-1/2 max-w-48 animate-pulse rounded-md bg-base-gray-soft motion-reduce:animate-none\" />\n </div>\n </div>\n))\n\nCardSkeleton.displayName = 'CardSkeleton'\n\nexport {\n Card,\n CardContent,\n CardDescription,\n CardFooter,\n CardHeader,\n CardIcon,\n CardSkeleton,\n CardTitle,\n}\nexport type { CardProps }\n"],"mappings":";;;;;;;;;;AAMA,MAAM,gBAAA,GAAA,yBAAA,KACJ,wDACA;CACE,UAAU,EACR,SAAS;EACP,SACE;EACF,MAAM;EACN,SACE;EACF,SAAS;EACT,OAAO;EACP,OACE;EACH,EACF;CACD,iBAAiB,EACf,SAAS,WACV;CACF,CACF;AAmBD,MAAM,OAAOA,MAAM,YAChB,EAAE,WAAW,SAAS,OAAO,QAAQ,GAAG,SAAS,QAAQ;CACxD,MAAM,cAAc,UAAU;CAC9B,MAAM,WAAW,WAAW;AAC5B,SAAA,GAAA,0BAAA,WAAiB;EACf,gBAAgB;EAChB;EACA,OAAO;GACL,aAAa;GACb,gBAAgB;GAChB,mBAAmB,UAAU,WAAW,WAAW,KAAA;GACnD,YAAA,GAAA,OAAA,IACE,aAAa,EAAE,SAAS,CAAC,EACzB,eAAe;IACb;IACA;IACA;KAEC,aAAa,aAAa,aAAa,WACtC;IACH,EACD,UACD;GACD;GACA,GAAG;GACJ;EACF,CAAC;EAEL;AAED,KAAK,cAAc;AAEnB,MAAM,aAAaA,MAAM,YAGtB,EAAE,WAAW,GAAG,SAAS,QAC1B,iBAAA,GAAA,kBAAA,KAAC,OAAD;CACE,YAAA,GAAA,OAAA,IAAc,2BAA2B,UAAU;CAC9C;CACL,GAAI;CACJ,CAAA,CACF;AAEF,WAAW,cAAc;AAEzB,MAAM,WAAWA,MAAM,YAGpB,EAAE,WAAW,GAAG,SAAS,QAC1B,iBAAA,GAAA,kBAAA,KAAC,OAAD;CACE,YAAA,GAAA,OAAA,IACE,uFACA,UACD;CACI;CACL,GAAI;CACJ,CAAA,CACF;AAEF,SAAS,cAAc;AAEvB,MAAM,YAAYA,MAAM,YAGrB,EAAE,WAAW,GAAG,SAAS,QAC1B,iBAAA,GAAA,kBAAA,KAAC,MAAD;CACE,YAAA,GAAA,OAAA,IACE,6EACA,UACD;CACI;CACL,GAAI;CACJ,CAAA,CACF;AAEF,UAAU,cAAc;AAExB,MAAM,kBAAkBA,MAAM,YAG3B,EAAE,WAAW,GAAG,SAAS,QAC1B,iBAAA,GAAA,kBAAA,KAAC,KAAD;CACE,YAAA,GAAA,OAAA,IACE,qEACA,UACD;CACI;CACL,GAAI;CACJ,CAAA,CACF;AAEF,gBAAgB,cAAc;AAE9B,MAAM,cAAcA,MAAM,YAGvB,EAAE,WAAW,GAAG,SAAS,QAC1B,iBAAA,GAAA,kBAAA,KAAC,OAAD;CAAK,YAAA,GAAA,OAAA,IAAc,IAAI,UAAU;CAAO;CAAK,GAAI;CAAS,CAAA,CAC1D;AAEF,YAAY,cAAc;AAE1B,MAAM,aAAaA,MAAM,YAGtB,EAAE,WAAW,GAAG,SAAS,QAC1B,iBAAA,GAAA,kBAAA,KAAC,OAAD;CACE,YAAA,GAAA,OAAA,IACE,sFACA,UACD;CACI;CACL,GAAI;CACJ,CAAA,CACF;AAEF,WAAW,cAAc;AAEzB,MAAM,eAAeA,MAAM,YAGxB,EAAE,WAAW,GAAG,SAAS,QAC1B,iBAAA,GAAA,kBAAA,MAAC,OAAD;CACE,YAAA,GAAA,OAAA,IACE,kFACA,UACD;CACI;CACL,GAAI;WANN,CAQE,iBAAA,GAAA,kBAAA,KAAC,OAAD,EAAK,WAAU,4FAA6F,CAAA,EAC5G,iBAAA,GAAA,kBAAA,MAAC,OAAD;EAAK,WAAU;YAAf,CACE,iBAAA,GAAA,kBAAA,KAAC,OAAD,EAAK,WAAU,4FAA6F,CAAA,EAC5G,iBAAA,GAAA,kBAAA,KAAC,OAAD,EAAK,WAAU,4FAA6F,CAAA,CACxG;IACF;GACN;AAEF,aAAa,cAAc"}
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
import { n as SparkCardVariant, t as SparkCardColor } from "../theme-types-BwSJKdsB.cjs";
|
|
4
4
|
import * as React$1 from "react";
|
|
5
|
+
import { useRender } from "@base-ui/react/use-render";
|
|
5
6
|
|
|
6
7
|
//#region src/components/card.d.ts
|
|
7
8
|
interface CardProps extends React$1.HTMLAttributes<HTMLDivElement> {
|
|
@@ -14,6 +15,11 @@ interface CardProps extends React$1.HTMLAttributes<HTMLDivElement> {
|
|
|
14
15
|
variant?: SparkCardVariant;
|
|
15
16
|
/** Chrome palette. `neutral` (default) tracks the app neutral; `accent` tints with the brand accent. */
|
|
16
17
|
color?: SparkCardColor;
|
|
18
|
+
/**
|
|
19
|
+
* Base UI polymorphism. Pass `<a href/>` or `<button/>` to make the whole
|
|
20
|
+
* card interactive (hover tint, focus ring, disabled styles). Omit → static.
|
|
21
|
+
*/
|
|
22
|
+
render?: useRender.RenderProp;
|
|
17
23
|
}
|
|
18
24
|
declare const Card: React$1.ForwardRefExoticComponent<CardProps & React$1.RefAttributes<HTMLDivElement>>;
|
|
19
25
|
declare const CardHeader: React$1.ForwardRefExoticComponent<React$1.HTMLAttributes<HTMLDivElement> & React$1.RefAttributes<HTMLDivElement>>;
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
import { n as SparkCardVariant, t as SparkCardColor } from "../theme-types-BDdoRxXa.js";
|
|
4
4
|
import * as React$1 from "react";
|
|
5
|
+
import { useRender } from "@base-ui/react/use-render";
|
|
5
6
|
|
|
6
7
|
//#region src/components/card.d.ts
|
|
7
8
|
interface CardProps extends React$1.HTMLAttributes<HTMLDivElement> {
|
|
@@ -14,6 +15,11 @@ interface CardProps extends React$1.HTMLAttributes<HTMLDivElement> {
|
|
|
14
15
|
variant?: SparkCardVariant;
|
|
15
16
|
/** Chrome palette. `neutral` (default) tracks the app neutral; `accent` tints with the brand accent. */
|
|
16
17
|
color?: SparkCardColor;
|
|
18
|
+
/**
|
|
19
|
+
* Base UI polymorphism. Pass `<a href/>` or `<button/>` to make the whole
|
|
20
|
+
* card interactive (hover tint, focus ring, disabled styles). Omit → static.
|
|
21
|
+
*/
|
|
22
|
+
render?: useRender.RenderProp;
|
|
17
23
|
}
|
|
18
24
|
declare const Card: React$1.ForwardRefExoticComponent<CardProps & React$1.RefAttributes<HTMLDivElement>>;
|
|
19
25
|
declare const CardHeader: React$1.ForwardRefExoticComponent<React$1.HTMLAttributes<HTMLDivElement> & React$1.RefAttributes<HTMLDivElement>>;
|
package/dist/components/card.js
CHANGED
|
@@ -3,26 +3,40 @@ import { cn } from "../utils/cn.js";
|
|
|
3
3
|
import * as React$1 from "react";
|
|
4
4
|
import { jsx, jsxs } from "react/jsx-runtime";
|
|
5
5
|
import { cva } from "class-variance-authority";
|
|
6
|
+
import { useRender } from "@base-ui/react/use-render";
|
|
6
7
|
//#region src/components/card.tsx
|
|
7
8
|
const cardVariants = cva("relative flex w-full flex-col gap-1 rounded-2xl py-3", {
|
|
8
9
|
variants: { variant: {
|
|
9
|
-
ambient: "border-
|
|
10
|
+
ambient: "border-(length:--spark-card-border-width,0px) border-(--spark-card-border,transparent) bg-(--spark-card-bg,var(--neutral-a3)) px-(--spark-card-px,1rem)",
|
|
10
11
|
soft: "bg-(--spark-card-c-soft,var(--neutral-a3)) px-4",
|
|
11
|
-
surface: "border border-
|
|
12
|
-
outline: "border border-
|
|
12
|
+
surface: "border border-(--spark-card-c-border,var(--neutral-a6)) bg-(--spark-card-c-surface,var(--neutral-2)) px-4",
|
|
13
|
+
outline: "border border-(--spark-card-c-border,var(--neutral-a6)) px-4",
|
|
13
14
|
ghost: "",
|
|
14
15
|
solid: "bg-(--spark-card-c-solid,var(--neutral-9)) px-4 [--spark-card-fg-muted:var(--spark-card-c-contrast,var(--neutral-contrast))] [--spark-card-fg:var(--spark-card-c-contrast,var(--neutral-contrast))] [--spark-card-icon:var(--spark-card-c-contrast,var(--neutral-contrast))]"
|
|
15
16
|
} },
|
|
16
17
|
defaultVariants: { variant: "ambient" }
|
|
17
18
|
});
|
|
18
|
-
const Card = React$1.forwardRef(({ className, variant, color, ...props }, ref) =>
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
19
|
+
const Card = React$1.forwardRef(({ className, variant, color, render, ...props }, ref) => {
|
|
20
|
+
const interactive = render != null;
|
|
21
|
+
const resolved = variant ?? "ambient";
|
|
22
|
+
return useRender({
|
|
23
|
+
defaultTagName: "div",
|
|
24
|
+
render,
|
|
25
|
+
props: {
|
|
26
|
+
"data-slot": "card",
|
|
27
|
+
"data-variant": variant,
|
|
28
|
+
"data-card-color": color === "accent" ? "accent" : void 0,
|
|
29
|
+
className: cn(cardVariants({ variant }), interactive && [
|
|
30
|
+
"cursor-pointer text-left no-underline transition-colors motion-reduce:transition-none",
|
|
31
|
+
"focus-visible:ring-2 focus-visible:ring-offset-2 focus-visible:outline-hidden",
|
|
32
|
+
"disabled:pointer-events-none disabled:opacity-50 aria-disabled:pointer-events-none aria-disabled:opacity-50",
|
|
33
|
+
(resolved === "ambient" || resolved === "soft") && "hover:bg-(--spark-card-c-soft-hover,var(--neutral-a4))"
|
|
34
|
+
], className),
|
|
35
|
+
ref,
|
|
36
|
+
...props
|
|
37
|
+
}
|
|
38
|
+
});
|
|
39
|
+
});
|
|
26
40
|
Card.displayName = "Card";
|
|
27
41
|
const CardHeader = React$1.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx("div", {
|
|
28
42
|
className: cn("flex items-center gap-4", className),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"card.js","names":["React"],"sources":["../../src/components/card.tsx"],"sourcesContent":["import { cva } from 'class-variance-authority'\nimport * as React from 'react'\nimport type { SparkCardColor, SparkCardVariant } from '../lib/theme-types'\nimport { cn } from '../utils/cn'\n\nconst cardVariants = cva(\n
|
|
1
|
+
{"version":3,"file":"card.js","names":["React"],"sources":["../../src/components/card.tsx"],"sourcesContent":["import { useRender } from '@base-ui/react/use-render'\nimport { cva } from 'class-variance-authority'\nimport * as React from 'react'\nimport type { SparkCardColor, SparkCardVariant } from '../lib/theme-types'\nimport { cn } from '../utils/cn'\n\nconst cardVariants = cva(\n 'relative flex w-full flex-col gap-1 rounded-2xl py-3',\n {\n variants: {\n variant: {\n ambient:\n 'border-(length:--spark-card-border-width,0px) border-(--spark-card-border,transparent) bg-(--spark-card-bg,var(--neutral-a3)) px-(--spark-card-px,1rem)',\n soft: 'bg-(--spark-card-c-soft,var(--neutral-a3)) px-4',\n surface:\n 'border border-(--spark-card-c-border,var(--neutral-a6)) bg-(--spark-card-c-surface,var(--neutral-2)) px-4',\n outline: 'border border-(--spark-card-c-border,var(--neutral-a6)) px-4',\n ghost: '',\n solid:\n 'bg-(--spark-card-c-solid,var(--neutral-9)) px-4 [--spark-card-fg-muted:var(--spark-card-c-contrast,var(--neutral-contrast))] [--spark-card-fg:var(--spark-card-c-contrast,var(--neutral-contrast))] [--spark-card-icon:var(--spark-card-c-contrast,var(--neutral-contrast))]',\n },\n },\n defaultVariants: {\n variant: 'ambient',\n },\n },\n)\n\ninterface CardProps extends React.HTMLAttributes<HTMLDivElement> {\n /**\n * Container chrome scoped to this card — NOT the ambient `data-style` knob\n * (that drives controls and would cascade into the card's content). Unset →\n * follows the app-level `[data-card-variant]` knob (default soft-neutral).\n * (`solid` is hidden for now — see `SparkCardVariant`.)\n */\n variant?: SparkCardVariant\n /** Chrome palette. `neutral` (default) tracks the app neutral; `accent` tints with the brand accent. */\n color?: SparkCardColor\n /**\n * Base UI polymorphism. Pass `<a href/>` or `<button/>` to make the whole\n * card interactive (hover tint, focus ring, disabled styles). Omit → static.\n */\n render?: useRender.RenderProp\n}\n\nconst Card = React.forwardRef<HTMLDivElement, CardProps>(\n ({ className, variant, color, render, ...props }, ref) => {\n const interactive = render != null\n const resolved = variant ?? 'ambient'\n return useRender({\n defaultTagName: 'div',\n render,\n props: {\n 'data-slot': 'card',\n 'data-variant': variant,\n 'data-card-color': color === 'accent' ? 'accent' : undefined,\n className: cn(\n cardVariants({ variant }),\n interactive && [\n 'cursor-pointer text-left no-underline transition-colors motion-reduce:transition-none',\n 'focus-visible:ring-2 focus-visible:ring-offset-2 focus-visible:outline-hidden',\n 'disabled:pointer-events-none disabled:opacity-50 aria-disabled:pointer-events-none aria-disabled:opacity-50',\n // hover deepens the fill one step; bordered/bare variants only ring\n (resolved === 'ambient' || resolved === 'soft') &&\n 'hover:bg-(--spark-card-c-soft-hover,var(--neutral-a4))',\n ],\n className,\n ),\n ref,\n ...props,\n },\n })\n },\n)\n\nCard.displayName = 'Card'\n\nconst CardHeader = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => (\n <div\n className={cn('flex items-center gap-4', className)}\n ref={ref}\n {...props}\n />\n))\n\nCardHeader.displayName = 'CardHeader'\n\nconst CardIcon = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => (\n <div\n className={cn(\n 'flex shrink-0 items-center justify-center text-(--spark-card-icon,var(--spark-a11))',\n className,\n )}\n ref={ref}\n {...props}\n />\n))\n\nCardIcon.displayName = 'CardIcon'\n\nconst CardTitle = React.forwardRef<\n HTMLHeadingElement,\n React.HTMLAttributes<HTMLHeadingElement>\n>(({ className, ...props }, ref) => (\n <h3\n className={cn(\n 'text-base leading-5 font-medium text-(--spark-card-fg,var(--neutral-a12))',\n className,\n )}\n ref={ref}\n {...props}\n />\n))\n\nCardTitle.displayName = 'CardTitle'\n\nconst CardDescription = React.forwardRef<\n HTMLParagraphElement,\n React.HTMLAttributes<HTMLParagraphElement>\n>(({ className, ...props }, ref) => (\n <p\n className={cn(\n 'text-sm leading-5 text-(--spark-card-fg-muted,var(--neutral-a11))',\n className,\n )}\n ref={ref}\n {...props}\n />\n))\n\nCardDescription.displayName = 'CardDescription'\n\nconst CardContent = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => (\n <div className={cn('', className)} ref={ref} {...props} />\n))\n\nCardContent.displayName = 'CardContent'\n\nconst CardFooter = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => (\n <div\n className={cn(\n 'flex items-center justify-end gap-2 pt-2 text-(--spark-card-fg,var(--neutral-a12))',\n className,\n )}\n ref={ref}\n {...props}\n />\n))\n\nCardFooter.displayName = 'CardFooter'\n\nconst CardSkeleton = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => (\n <div\n className={cn(\n 'relative flex w-full items-center gap-4 rounded-2xl bg-spark-a3 p-4 opacity-80',\n className,\n )}\n ref={ref}\n {...props}\n >\n <div className=\"size-10 shrink-0 animate-pulse rounded-full bg-base-gray-soft motion-reduce:animate-none\" />\n <div className=\"flex flex-1 flex-col gap-y-2\">\n <div className=\"h-5 w-1/3 max-w-32 animate-pulse rounded-md bg-base-gray-soft motion-reduce:animate-none\" />\n <div className=\"h-4 w-1/2 max-w-48 animate-pulse rounded-md bg-base-gray-soft motion-reduce:animate-none\" />\n </div>\n </div>\n))\n\nCardSkeleton.displayName = 'CardSkeleton'\n\nexport {\n Card,\n CardContent,\n CardDescription,\n CardFooter,\n CardHeader,\n CardIcon,\n CardSkeleton,\n CardTitle,\n}\nexport type { CardProps }\n"],"mappings":";;;;;;;AAMA,MAAM,eAAe,IACnB,wDACA;CACE,UAAU,EACR,SAAS;EACP,SACE;EACF,MAAM;EACN,SACE;EACF,SAAS;EACT,OAAO;EACP,OACE;EACH,EACF;CACD,iBAAiB,EACf,SAAS,WACV;CACF,CACF;AAmBD,MAAM,OAAOA,QAAM,YAChB,EAAE,WAAW,SAAS,OAAO,QAAQ,GAAG,SAAS,QAAQ;CACxD,MAAM,cAAc,UAAU;CAC9B,MAAM,WAAW,WAAW;AAC5B,QAAO,UAAU;EACf,gBAAgB;EAChB;EACA,OAAO;GACL,aAAa;GACb,gBAAgB;GAChB,mBAAmB,UAAU,WAAW,WAAW,KAAA;GACnD,WAAW,GACT,aAAa,EAAE,SAAS,CAAC,EACzB,eAAe;IACb;IACA;IACA;KAEC,aAAa,aAAa,aAAa,WACtC;IACH,EACD,UACD;GACD;GACA,GAAG;GACJ;EACF,CAAC;EAEL;AAED,KAAK,cAAc;AAEnB,MAAM,aAAaA,QAAM,YAGtB,EAAE,WAAW,GAAG,SAAS,QAC1B,oBAAC,OAAD;CACE,WAAW,GAAG,2BAA2B,UAAU;CAC9C;CACL,GAAI;CACJ,CAAA,CACF;AAEF,WAAW,cAAc;AAEzB,MAAM,WAAWA,QAAM,YAGpB,EAAE,WAAW,GAAG,SAAS,QAC1B,oBAAC,OAAD;CACE,WAAW,GACT,uFACA,UACD;CACI;CACL,GAAI;CACJ,CAAA,CACF;AAEF,SAAS,cAAc;AAEvB,MAAM,YAAYA,QAAM,YAGrB,EAAE,WAAW,GAAG,SAAS,QAC1B,oBAAC,MAAD;CACE,WAAW,GACT,6EACA,UACD;CACI;CACL,GAAI;CACJ,CAAA,CACF;AAEF,UAAU,cAAc;AAExB,MAAM,kBAAkBA,QAAM,YAG3B,EAAE,WAAW,GAAG,SAAS,QAC1B,oBAAC,KAAD;CACE,WAAW,GACT,qEACA,UACD;CACI;CACL,GAAI;CACJ,CAAA,CACF;AAEF,gBAAgB,cAAc;AAE9B,MAAM,cAAcA,QAAM,YAGvB,EAAE,WAAW,GAAG,SAAS,QAC1B,oBAAC,OAAD;CAAK,WAAW,GAAG,IAAI,UAAU;CAAO;CAAK,GAAI;CAAS,CAAA,CAC1D;AAEF,YAAY,cAAc;AAE1B,MAAM,aAAaA,QAAM,YAGtB,EAAE,WAAW,GAAG,SAAS,QAC1B,oBAAC,OAAD;CACE,WAAW,GACT,sFACA,UACD;CACI;CACL,GAAI;CACJ,CAAA,CACF;AAEF,WAAW,cAAc;AAEzB,MAAM,eAAeA,QAAM,YAGxB,EAAE,WAAW,GAAG,SAAS,QAC1B,qBAAC,OAAD;CACE,WAAW,GACT,kFACA,UACD;CACI;CACL,GAAI;WANN,CAQE,oBAAC,OAAD,EAAK,WAAU,4FAA6F,CAAA,EAC5G,qBAAC,OAAD;EAAK,WAAU;YAAf,CACE,oBAAC,OAAD,EAAK,WAAU,4FAA6F,CAAA,EAC5G,oBAAC,OAAD,EAAK,WAAU,4FAA6F,CAAA,CACxG;IACF;GACN;AAEF,aAAa,cAAc"}
|
|
@@ -4,9 +4,16 @@ require("../chunk-aJGBMT86.cjs");
|
|
|
4
4
|
const require_icons_material_symbol = require("../icons/material-symbol.cjs");
|
|
5
5
|
let react_jsx_runtime = require("react/jsx-runtime");
|
|
6
6
|
//#region src/components/empty-state.tsx
|
|
7
|
-
|
|
7
|
+
const emptyStateVariants = (0, require("class-variance-authority").cva)("flex flex-col items-center gap-4 px-6 py-12 text-center", {
|
|
8
|
+
variants: { variant: {
|
|
9
|
+
dashed: "rounded-2xl border border-dashed border-gray",
|
|
10
|
+
ghost: ""
|
|
11
|
+
} },
|
|
12
|
+
defaultVariants: { variant: "dashed" }
|
|
13
|
+
});
|
|
14
|
+
function EmptyState({ action, description, icon, title, variant }) {
|
|
8
15
|
return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
9
|
-
className:
|
|
16
|
+
className: emptyStateVariants({ variant }),
|
|
10
17
|
children: [
|
|
11
18
|
icon && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
|
|
12
19
|
className: "flex size-12 items-center justify-center rounded-xl bg-base-gray-soft",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"empty-state.cjs","names":["MaterialSymbol"],"sources":["../../src/components/empty-state.tsx"],"sourcesContent":["import type { ReactNode } from 'react'\nimport {\n MaterialSymbol,\n type MaterialSymbolIconName,\n} from '../icons/material-symbol'\n\ninterface EmptyStateProps {\n title: string\n description?: string\n icon?: MaterialSymbolIconName\n action?: ReactNode\n}\n\nexport function EmptyState({\n action,\n description,\n icon,\n title,\n}: EmptyStateProps) {\n return (\n <div className
|
|
1
|
+
{"version":3,"file":"empty-state.cjs","names":["MaterialSymbol"],"sources":["../../src/components/empty-state.tsx"],"sourcesContent":["import { cva, type VariantProps } from 'class-variance-authority'\nimport type { ReactNode } from 'react'\nimport {\n MaterialSymbol,\n type MaterialSymbolIconName,\n} from '../icons/material-symbol'\n\nconst emptyStateVariants = cva(\n 'flex flex-col items-center gap-4 px-6 py-12 text-center',\n {\n variants: {\n variant: {\n dashed: 'rounded-2xl border border-dashed border-gray',\n ghost: '',\n },\n },\n defaultVariants: {\n variant: 'dashed',\n },\n },\n)\n\ninterface EmptyStateProps extends VariantProps<typeof emptyStateVariants> {\n title: string\n description?: string\n icon?: MaterialSymbolIconName\n action?: ReactNode\n}\n\nexport function EmptyState({\n action,\n description,\n icon,\n title,\n variant,\n}: EmptyStateProps) {\n return (\n <div className={emptyStateVariants({ variant })}>\n {icon && (\n <div className=\"flex size-12 items-center justify-center rounded-xl bg-base-gray-soft\">\n <MaterialSymbol className=\"text-[20px] text-gray-light\" name={icon} />\n </div>\n )}\n <div className=\"flex flex-col gap-1\">\n <h3 className=\"text-base font-bold text-gray\">{title}</h3>\n {description && (\n <p className=\"mx-auto max-w-md text-sm text-gray-light\">\n {description}\n </p>\n )}\n </div>\n {action}\n </div>\n )\n}\n\nexport type { EmptyStateProps }\n"],"mappings":";;;;;;AAOA,MAAM,sBAAA,sCAAA,CAAA,KACJ,2DACA;CACE,UAAU,EACR,SAAS;EACP,QAAQ;EACR,OAAO;EACR,EACF;CACD,iBAAiB,EACf,SAAS,UACV;CACF,CACF;AASD,SAAgB,WAAW,EACzB,QACA,aACA,MACA,OACA,WACkB;AAClB,QACE,iBAAA,GAAA,kBAAA,MAAC,OAAD;EAAK,WAAW,mBAAmB,EAAE,SAAS,CAAC;YAA/C;GACG,QACC,iBAAA,GAAA,kBAAA,KAAC,OAAD;IAAK,WAAU;cACb,iBAAA,GAAA,kBAAA,KAACA,8BAAAA,gBAAD;KAAgB,WAAU;KAA8B,MAAM;KAAQ,CAAA;IAClE,CAAA;GAER,iBAAA,GAAA,kBAAA,MAAC,OAAD;IAAK,WAAU;cAAf,CACE,iBAAA,GAAA,kBAAA,KAAC,MAAD;KAAI,WAAU;eAAiC;KAAW,CAAA,EACzD,eACC,iBAAA,GAAA,kBAAA,KAAC,KAAD;KAAG,WAAU;eACV;KACC,CAAA,CAEF;;GACL;GACG"}
|
|
@@ -3,9 +3,14 @@
|
|
|
3
3
|
import { MaterialSymbolIconName } from "../icons/material-symbol.cjs";
|
|
4
4
|
import * as _$react_jsx_runtime0 from "react/jsx-runtime";
|
|
5
5
|
import { ReactNode } from "react";
|
|
6
|
+
import * as _$class_variance_authority_types0 from "class-variance-authority/types";
|
|
7
|
+
import { VariantProps } from "class-variance-authority";
|
|
6
8
|
|
|
7
9
|
//#region src/components/empty-state.d.ts
|
|
8
|
-
|
|
10
|
+
declare const emptyStateVariants: (props?: ({
|
|
11
|
+
variant?: "ghost" | "dashed" | null | undefined;
|
|
12
|
+
} & _$class_variance_authority_types0.ClassProp) | undefined) => string;
|
|
13
|
+
interface EmptyStateProps extends VariantProps<typeof emptyStateVariants> {
|
|
9
14
|
title: string;
|
|
10
15
|
description?: string;
|
|
11
16
|
icon?: MaterialSymbolIconName;
|
|
@@ -15,7 +20,8 @@ declare function EmptyState({
|
|
|
15
20
|
action,
|
|
16
21
|
description,
|
|
17
22
|
icon,
|
|
18
|
-
title
|
|
23
|
+
title,
|
|
24
|
+
variant
|
|
19
25
|
}: EmptyStateProps): _$react_jsx_runtime0.JSX.Element;
|
|
20
26
|
//#endregion
|
|
21
27
|
export { EmptyState, type EmptyStateProps };
|
|
@@ -3,9 +3,14 @@
|
|
|
3
3
|
import { MaterialSymbolIconName } from "../icons/material-symbol.js";
|
|
4
4
|
import { ReactNode } from "react";
|
|
5
5
|
import * as _$react_jsx_runtime0 from "react/jsx-runtime";
|
|
6
|
+
import { VariantProps } from "class-variance-authority";
|
|
7
|
+
import * as _$class_variance_authority_types0 from "class-variance-authority/types";
|
|
6
8
|
|
|
7
9
|
//#region src/components/empty-state.d.ts
|
|
8
|
-
|
|
10
|
+
declare const emptyStateVariants: (props?: ({
|
|
11
|
+
variant?: "ghost" | "dashed" | null | undefined;
|
|
12
|
+
} & _$class_variance_authority_types0.ClassProp) | undefined) => string;
|
|
13
|
+
interface EmptyStateProps extends VariantProps<typeof emptyStateVariants> {
|
|
9
14
|
title: string;
|
|
10
15
|
description?: string;
|
|
11
16
|
icon?: MaterialSymbolIconName;
|
|
@@ -15,7 +20,8 @@ declare function EmptyState({
|
|
|
15
20
|
action,
|
|
16
21
|
description,
|
|
17
22
|
icon,
|
|
18
|
-
title
|
|
23
|
+
title,
|
|
24
|
+
variant
|
|
19
25
|
}: EmptyStateProps): _$react_jsx_runtime0.JSX.Element;
|
|
20
26
|
//#endregion
|
|
21
27
|
export { EmptyState, type EmptyStateProps };
|
|
@@ -1,10 +1,18 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
import { MaterialSymbol } from "../icons/material-symbol.js";
|
|
3
3
|
import { jsx, jsxs } from "react/jsx-runtime";
|
|
4
|
+
import { cva } from "class-variance-authority";
|
|
4
5
|
//#region src/components/empty-state.tsx
|
|
5
|
-
|
|
6
|
+
const emptyStateVariants = cva("flex flex-col items-center gap-4 px-6 py-12 text-center", {
|
|
7
|
+
variants: { variant: {
|
|
8
|
+
dashed: "rounded-2xl border border-dashed border-gray",
|
|
9
|
+
ghost: ""
|
|
10
|
+
} },
|
|
11
|
+
defaultVariants: { variant: "dashed" }
|
|
12
|
+
});
|
|
13
|
+
function EmptyState({ action, description, icon, title, variant }) {
|
|
6
14
|
return /* @__PURE__ */ jsxs("div", {
|
|
7
|
-
className:
|
|
15
|
+
className: emptyStateVariants({ variant }),
|
|
8
16
|
children: [
|
|
9
17
|
icon && /* @__PURE__ */ jsx("div", {
|
|
10
18
|
className: "flex size-12 items-center justify-center rounded-xl bg-base-gray-soft",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"empty-state.js","names":[],"sources":["../../src/components/empty-state.tsx"],"sourcesContent":["import type { ReactNode } from 'react'\nimport {\n MaterialSymbol,\n type MaterialSymbolIconName,\n} from '../icons/material-symbol'\n\ninterface EmptyStateProps {\n title: string\n description?: string\n icon?: MaterialSymbolIconName\n action?: ReactNode\n}\n\nexport function EmptyState({\n action,\n description,\n icon,\n title,\n}: EmptyStateProps) {\n return (\n <div className
|
|
1
|
+
{"version":3,"file":"empty-state.js","names":[],"sources":["../../src/components/empty-state.tsx"],"sourcesContent":["import { cva, type VariantProps } from 'class-variance-authority'\nimport type { ReactNode } from 'react'\nimport {\n MaterialSymbol,\n type MaterialSymbolIconName,\n} from '../icons/material-symbol'\n\nconst emptyStateVariants = cva(\n 'flex flex-col items-center gap-4 px-6 py-12 text-center',\n {\n variants: {\n variant: {\n dashed: 'rounded-2xl border border-dashed border-gray',\n ghost: '',\n },\n },\n defaultVariants: {\n variant: 'dashed',\n },\n },\n)\n\ninterface EmptyStateProps extends VariantProps<typeof emptyStateVariants> {\n title: string\n description?: string\n icon?: MaterialSymbolIconName\n action?: ReactNode\n}\n\nexport function EmptyState({\n action,\n description,\n icon,\n title,\n variant,\n}: EmptyStateProps) {\n return (\n <div className={emptyStateVariants({ variant })}>\n {icon && (\n <div className=\"flex size-12 items-center justify-center rounded-xl bg-base-gray-soft\">\n <MaterialSymbol className=\"text-[20px] text-gray-light\" name={icon} />\n </div>\n )}\n <div className=\"flex flex-col gap-1\">\n <h3 className=\"text-base font-bold text-gray\">{title}</h3>\n {description && (\n <p className=\"mx-auto max-w-md text-sm text-gray-light\">\n {description}\n </p>\n )}\n </div>\n {action}\n </div>\n )\n}\n\nexport type { EmptyStateProps }\n"],"mappings":";;;;;AAOA,MAAM,qBAAqB,IACzB,2DACA;CACE,UAAU,EACR,SAAS;EACP,QAAQ;EACR,OAAO;EACR,EACF;CACD,iBAAiB,EACf,SAAS,UACV;CACF,CACF;AASD,SAAgB,WAAW,EACzB,QACA,aACA,MACA,OACA,WACkB;AAClB,QACE,qBAAC,OAAD;EAAK,WAAW,mBAAmB,EAAE,SAAS,CAAC;YAA/C;GACG,QACC,oBAAC,OAAD;IAAK,WAAU;cACb,oBAAC,gBAAD;KAAgB,WAAU;KAA8B,MAAM;KAAQ,CAAA;IAClE,CAAA;GAER,qBAAC,OAAD;IAAK,WAAU;cAAf,CACE,oBAAC,MAAD;KAAI,WAAU;eAAiC;KAAW,CAAA,EACzD,eACC,oBAAC,KAAD;KAAG,WAAU;eACV;KACC,CAAA,CAEF;;GACL;GACG"}
|