@epilot/spark-ui 0.10.1 → 0.11.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.
- package/README.md +9 -1
- package/dist/components/accordion.cjs +1 -1
- package/dist/components/accordion.d.ts +1 -1
- package/dist/components/accordion.js +1 -1
- package/dist/components/attachment.d.cts +1 -1
- package/dist/components/attachment.d.ts +1 -1
- package/dist/components/avatar.d.cts +1 -1
- package/dist/components/avatar.d.ts +1 -1
- package/dist/components/badge.cjs +1 -1
- package/dist/components/badge.cjs.map +1 -1
- package/dist/components/badge.d.cts +1 -1
- package/dist/components/badge.d.ts +1 -1
- package/dist/components/badge.js +1 -1
- package/dist/components/badge.js.map +1 -1
- package/dist/components/bar-chart.cjs +6 -8
- package/dist/components/bar-chart.cjs.map +1 -1
- package/dist/components/bar-chart.js +7 -9
- package/dist/components/bar-chart.js.map +1 -1
- package/dist/components/battery-progress-row.cjs +6 -7
- package/dist/components/battery-progress-row.cjs.map +1 -1
- package/dist/components/battery-progress-row.js +6 -7
- package/dist/components/battery-progress-row.js.map +1 -1
- package/dist/components/box.cjs +42 -0
- package/dist/components/box.cjs.map +1 -0
- package/dist/components/box.d.cts +35 -0
- package/dist/components/box.d.ts +35 -0
- package/dist/components/box.js +41 -0
- package/dist/components/box.js.map +1 -0
- package/dist/components/bubble.d.cts +1 -1
- package/dist/components/bubble.d.ts +1 -1
- package/dist/components/button-group.d.cts +1 -1
- package/dist/components/button-group.d.ts +1 -1
- package/dist/components/button.cjs +1 -1
- package/dist/components/button.cjs.map +1 -1
- package/dist/components/button.d.cts +3 -3
- package/dist/components/button.d.ts +3 -3
- package/dist/components/button.js +1 -1
- 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 +10 -14
- package/dist/components/card.cjs.map +1 -1
- package/dist/components/card.d.cts +6 -3
- package/dist/components/card.d.ts +6 -3
- package/dist/components/card.js +10 -14
- package/dist/components/card.js.map +1 -1
- package/dist/components/checkbox.d.cts +1 -1
- package/dist/components/checkbox.d.ts +1 -1
- package/dist/components/empty-state.cjs +4 -7
- package/dist/components/empty-state.cjs.map +1 -1
- package/dist/components/empty-state.js +4 -7
- package/dist/components/empty-state.js.map +1 -1
- package/dist/components/field.cjs +43 -10
- package/dist/components/field.cjs.map +1 -1
- package/dist/components/field.d.cts +19 -2
- package/dist/components/field.d.ts +19 -2
- package/dist/components/field.js +43 -11
- package/dist/components/field.js.map +1 -1
- package/dist/components/icon.cjs +12 -9
- package/dist/components/icon.cjs.map +1 -1
- package/dist/components/icon.d.cts +6 -2
- package/dist/components/icon.d.ts +6 -2
- package/dist/components/icon.js +12 -9
- package/dist/components/icon.js.map +1 -1
- package/dist/components/info-block.d.cts +1 -1
- package/dist/components/info-block.d.ts +1 -1
- package/dist/components/input-otp.cjs +1 -1
- package/dist/components/input-otp.js +1 -1
- package/dist/components/input.cjs +1 -1
- package/dist/components/input.d.cts +1 -1
- package/dist/components/input.d.ts +1 -1
- package/dist/components/input.js +1 -1
- package/dist/components/layout.cjs +6 -2
- package/dist/components/layout.cjs.map +1 -1
- package/dist/components/layout.d.cts +9 -2
- package/dist/components/layout.d.ts +8 -2
- package/dist/components/layout.js +6 -2
- package/dist/components/layout.js.map +1 -1
- package/dist/components/line-chart.cjs +2 -2
- package/dist/components/line-chart.js +3 -3
- package/dist/components/list.cjs +46 -14
- package/dist/components/list.cjs.map +1 -1
- package/dist/components/list.d.cts +27 -3
- package/dist/components/list.d.ts +27 -3
- package/dist/components/list.js +46 -14
- package/dist/components/list.js.map +1 -1
- package/dist/components/marker.d.cts +1 -1
- package/dist/components/marker.d.ts +1 -1
- package/dist/components/metering-row.cjs +28 -11
- package/dist/components/metering-row.cjs.map +1 -1
- package/dist/components/metering-row.js +28 -11
- package/dist/components/metering-row.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/pill.cjs +2 -2
- package/dist/components/pill.cjs.map +1 -1
- package/dist/components/pill.d.cts +1 -1
- package/dist/components/pill.d.ts +1 -1
- package/dist/components/pill.js +2 -2
- package/dist/components/pill.js.map +1 -1
- package/dist/components/popover.cjs +16 -13
- package/dist/components/popover.cjs.map +1 -1
- package/dist/components/popover.d.cts +2 -1
- package/dist/components/popover.d.ts +2 -1
- package/dist/components/popover.js +16 -13
- package/dist/components/popover.js.map +1 -1
- package/dist/components/power-history-chart.cjs +2 -2
- package/dist/components/power-history-chart.js +3 -3
- package/dist/components/power-history.cjs +1 -1
- package/dist/components/power-history.js +1 -1
- package/dist/components/power-network.cjs +1 -1
- package/dist/components/power-network.js +1 -1
- package/dist/components/radio-card-group.cjs +6 -2
- package/dist/components/radio-card-group.cjs.map +1 -1
- package/dist/components/radio-card-group.d.cts +2 -0
- package/dist/components/radio-card-group.d.ts +2 -0
- package/dist/components/radio-card-group.js +6 -2
- package/dist/components/radio-card-group.js.map +1 -1
- package/dist/components/radio.cjs +6 -2
- package/dist/components/radio.cjs.map +1 -1
- package/dist/components/radio.d.cts +7 -3
- package/dist/components/radio.d.ts +7 -3
- package/dist/components/radio.js +6 -2
- package/dist/components/radio.js.map +1 -1
- package/dist/components/segmented-control.d.cts +1 -1
- package/dist/components/segmented-control.d.ts +1 -1
- package/dist/components/select.cjs +22 -19
- package/dist/components/select.cjs.map +1 -1
- package/dist/components/select.d.cts +3 -2
- package/dist/components/select.d.ts +3 -2
- package/dist/components/select.js +22 -19
- package/dist/components/select.js.map +1 -1
- package/dist/components/solar-forecast-chart.cjs +1 -1
- package/dist/components/solar-forecast-chart.js +2 -2
- package/dist/components/switch.d.cts +1 -1
- package/dist/components/switch.d.ts +1 -1
- package/dist/components/tabs.cjs +4 -3
- package/dist/components/tabs.cjs.map +1 -1
- package/dist/components/tabs.d.cts +9 -0
- package/dist/components/tabs.d.ts +9 -0
- package/dist/components/tabs.js +4 -3
- package/dist/components/tabs.js.map +1 -1
- package/dist/components/textarea.cjs +1 -1
- package/dist/components/textarea.d.cts +1 -1
- package/dist/components/textarea.d.ts +1 -1
- package/dist/components/textarea.js +1 -1
- package/dist/components/theme.cjs +35 -9
- package/dist/components/theme.cjs.map +1 -1
- package/dist/components/theme.d.cts +12 -1
- package/dist/components/theme.d.ts +12 -1
- package/dist/components/theme.js +36 -10
- package/dist/components/theme.js.map +1 -1
- package/dist/icons/material-symbol.cjs +1 -0
- package/dist/icons/material-symbol.cjs.map +1 -1
- package/dist/icons/material-symbol.js +1 -0
- package/dist/icons/material-symbol.js.map +1 -1
- package/dist/lib/accent-theme.cjs +102 -14
- package/dist/lib/accent-theme.cjs.map +1 -1
- package/dist/lib/accent-theme.d.cts +29 -4
- package/dist/lib/accent-theme.d.ts +29 -4
- package/dist/lib/accent-theme.js +100 -15
- package/dist/lib/accent-theme.js.map +1 -1
- package/dist/lib/container-chrome.cjs +53 -0
- package/dist/lib/container-chrome.cjs.map +1 -0
- package/dist/lib/container-chrome.d.cts +15 -0
- package/dist/lib/container-chrome.d.ts +15 -0
- package/dist/lib/container-chrome.js +48 -0
- package/dist/lib/container-chrome.js.map +1 -0
- package/dist/lib/input-box-variants.d.cts +1 -1
- package/dist/lib/input-box-variants.d.ts +1 -1
- package/dist/lib/theme-types.d.cts +1 -1
- package/dist/lib/theme-types.d.ts +1 -1
- package/dist/styles/spark-default.css +34 -8
- package/dist/{theme-types-8wjgiNA_.d.ts → theme-types-1yB0d8mp.d.cts} +6 -6
- package/dist/{theme-types-8wjgiNA_.d.cts → theme-types-1yB0d8mp.d.ts} +6 -6
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"button.cjs","names":["React","ButtonPrimitive","accentByColor"],"sources":["../../src/components/button.tsx"],"sourcesContent":["'use client'\n\nimport { Button as ButtonPrimitive } from '@base-ui/react/button'\nimport { cva, type VariantProps } from 'class-variance-authority'\nimport * as React from 'react'\nimport { accentByColor } from '../lib/accent-colors'\nimport type { SparkStyle } from '../lib/theme-types'\nimport { cn } from '../utils/cn'\n\nconst buttonVariants = cva(\n 'group/button touch-target inline-flex cursor-pointer items-center justify-center gap-2 rounded-[max(var(--spark-rounded-md),var(--spark-rounded-full))] text-base font-medium whitespace-nowrap transition-colors focus-visible:ring-2 focus-visible:ring-offset-2 focus-visible:outline-hidden disabled:pointer-events-none disabled:opacity-50 aria-disabled:pointer-events-none aria-disabled:opacity-50 motion-reduce:transition-none [&_svg]:pointer-events-none [&_svg]:shrink-0',\n {\n variants: {\n variant: {\n primary:\n 'bg-(--spark-style-bg,var(--spark-9)) text-(--spark-style-fg,var(--spark-contrast)) hover:bg-(--spark-style-bg-hover,var(--spark-10))',\n secondary:\n 'bg-gray-2 text-gray-a11 shadow-[inset_0_0_0_1px_var(--
|
|
1
|
+
{"version":3,"file":"button.cjs","names":["React","ButtonPrimitive","accentByColor"],"sources":["../../src/components/button.tsx"],"sourcesContent":["'use client'\n\nimport { Button as ButtonPrimitive } from '@base-ui/react/button'\nimport { cva, type VariantProps } from 'class-variance-authority'\nimport * as React from 'react'\nimport { accentByColor } from '../lib/accent-colors'\nimport type { SparkStyle } from '../lib/theme-types'\nimport { cn } from '../utils/cn'\n\nconst buttonVariants = cva(\n 'group/button touch-target inline-flex cursor-pointer items-center justify-center gap-2 rounded-[max(var(--spark-rounded-md),var(--spark-rounded-full))] text-base font-medium whitespace-nowrap transition-colors focus-visible:ring-2 focus-visible:ring-offset-2 focus-visible:outline-hidden disabled:pointer-events-none disabled:opacity-50 aria-disabled:pointer-events-none aria-disabled:opacity-50 motion-reduce:transition-none [&_svg]:pointer-events-none [&_svg]:shrink-0',\n {\n variants: {\n variant: {\n primary:\n 'bg-(--spark-style-bg,var(--spark-9)) text-(--spark-style-fg,var(--spark-contrast)) hover:bg-(--spark-style-bg-hover,var(--spark-10))',\n secondary:\n 'bg-gray-2 text-gray-a11 shadow-[inset_0_0_0_1px_var(--neutral-a7)] hover:bg-gray-a3',\n tertiary: 'bg-transparent text-gray-a11 hover:bg-gray-a3',\n bare: 'rounded-none! text-gray-12 outline-hidden!',\n destructive:\n 'bg-red-a3 text-red-a11 hover:bg-red-a4 focus-visible:ring-base-error-solid',\n },\n color: {\n accent: '',\n neutral: '',\n danger: 'focus-visible:ring-base-error-solid',\n },\n size: {\n small: '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,0dACA;CACE,UAAU;EACR,SAAS;GACP,SACE;GACF,WACE;GACF,UAAU;GACV,MAAM;GACN,aACE;EACJ;EACA,OAAO;GACL,QAAQ;GACR,SAAS;GACT,QAAQ;EACV;EACA,MAAM;GACJ,OAAO;GACP,SAAS;GACT,QAAQ;GACR,cAAc;GACd,MAAM;GACN,eAAe;EACjB;CACF;CACA,iBAAiB,EACf,MAAM,UACR;AACF,CACF;AAEA,MAAM,eACJ;AAoBF,MAAM,SAASA,MAAM,WAA2C,SAAS,OACvE,EACE,WACA,cACA,OACA,MACA,QACA,cACA,SAAS,UACT,GAAG,SAEL,KACA;CAKA,OACE,iBAAA,GAAA,kBAAA,KAACC,sBAAAA,QAAD;EACE,cANY,iBAAiB,KAAA,KAAa,UAAU,KAAA,IAC3B,gBAAgB,UAAW,KAAA;EAMpD,qBALoB,QAAQC,0BAAAA,cAAc,SAAS,KAAA;EAMnD,cAAc,gBAAgB,WAAW,KAAA;EACjC;EACR,YAAA,GAAA,OAAA,IAAc,eAAe;GAAE;GAAM;EAAM,CAAC,GAAG,cAAc,SAAS;EACjE;EACL,GAAI;CACL,CAAA;AAEL,CAAC;AAED,OAAO,cAAc"}
|
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
|
|
3
|
-
import { u as SparkStyle } from "../theme-types-
|
|
3
|
+
import { u as SparkStyle } from "../theme-types-1yB0d8mp.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";
|
|
7
7
|
|
|
8
8
|
//#region src/components/button.d.ts
|
|
9
9
|
declare const buttonVariants: (props?: ({
|
|
10
|
-
variant?: "
|
|
10
|
+
variant?: "secondary" | "destructive" | "primary" | "tertiary" | "bare" | null | undefined;
|
|
11
11
|
color?: "accent" | "neutral" | "danger" | null | undefined;
|
|
12
|
-
size?: "small" | "
|
|
12
|
+
size?: "small" | "icon" | "default" | "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,15 +1,15 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
|
|
3
|
-
import { u as SparkStyle } from "../theme-types-
|
|
3
|
+
import { u as SparkStyle } from "../theme-types-1yB0d8mp.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";
|
|
7
7
|
|
|
8
8
|
//#region src/components/button.d.ts
|
|
9
9
|
declare const buttonVariants: (props?: ({
|
|
10
|
-
variant?: "
|
|
10
|
+
variant?: "secondary" | "destructive" | "primary" | "tertiary" | "bare" | null | undefined;
|
|
11
11
|
color?: "accent" | "neutral" | "danger" | null | undefined;
|
|
12
|
-
size?: "small" | "
|
|
12
|
+
size?: "small" | "icon" | "default" | "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'> {
|
|
@@ -11,7 +11,7 @@ const buttonVariants = cva("group/button touch-target inline-flex cursor-pointer
|
|
|
11
11
|
variants: {
|
|
12
12
|
variant: {
|
|
13
13
|
primary: "bg-(--spark-style-bg,var(--spark-9)) text-(--spark-style-fg,var(--spark-contrast)) hover:bg-(--spark-style-bg-hover,var(--spark-10))",
|
|
14
|
-
secondary: "bg-gray-2 text-gray-a11 shadow-[inset_0_0_0_1px_var(--
|
|
14
|
+
secondary: "bg-gray-2 text-gray-a11 shadow-[inset_0_0_0_1px_var(--neutral-a7)] hover:bg-gray-a3",
|
|
15
15
|
tertiary: "bg-transparent text-gray-a11 hover:bg-gray-a3",
|
|
16
16
|
bare: "rounded-none! text-gray-12 outline-hidden!",
|
|
17
17
|
destructive: "bg-red-a3 text-red-a11 hover:bg-red-a4 focus-visible:ring-base-error-solid"
|
|
@@ -1 +1 @@
|
|
|
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 touch-target inline-flex cursor-pointer items-center justify-center gap-2 rounded-[max(var(--spark-rounded-md),var(--spark-rounded-full))] text-base font-medium whitespace-nowrap transition-colors focus-visible:ring-2 focus-visible:ring-offset-2 focus-visible:outline-hidden disabled:pointer-events-none disabled:opacity-50 aria-disabled:pointer-events-none aria-disabled:opacity-50 motion-reduce:transition-none [&_svg]:pointer-events-none [&_svg]:shrink-0',\n {\n variants: {\n variant: {\n primary:\n 'bg-(--spark-style-bg,var(--spark-9)) text-(--spark-style-fg,var(--spark-contrast)) hover:bg-(--spark-style-bg-hover,var(--spark-10))',\n secondary:\n 'bg-gray-2 text-gray-a11 shadow-[inset_0_0_0_1px_var(--
|
|
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 touch-target inline-flex cursor-pointer items-center justify-center gap-2 rounded-[max(var(--spark-rounded-md),var(--spark-rounded-full))] text-base font-medium whitespace-nowrap transition-colors focus-visible:ring-2 focus-visible:ring-offset-2 focus-visible:outline-hidden disabled:pointer-events-none disabled:opacity-50 aria-disabled:pointer-events-none aria-disabled:opacity-50 motion-reduce:transition-none [&_svg]:pointer-events-none [&_svg]:shrink-0',\n {\n variants: {\n variant: {\n primary:\n 'bg-(--spark-style-bg,var(--spark-9)) text-(--spark-style-fg,var(--spark-contrast)) hover:bg-(--spark-style-bg-hover,var(--spark-10))',\n secondary:\n 'bg-gray-2 text-gray-a11 shadow-[inset_0_0_0_1px_var(--neutral-a7)] hover:bg-gray-a3',\n tertiary: 'bg-transparent text-gray-a11 hover:bg-gray-a3',\n bare: 'rounded-none! text-gray-12 outline-hidden!',\n destructive:\n 'bg-red-a3 text-red-a11 hover:bg-red-a4 focus-visible:ring-base-error-solid',\n },\n color: {\n accent: '',\n neutral: '',\n danger: 'focus-visible:ring-base-error-solid',\n },\n size: {\n small: '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,0dACA;CACE,UAAU;EACR,SAAS;GACP,SACE;GACF,WACE;GACF,UAAU;GACV,MAAM;GACN,aACE;EACJ;EACA,OAAO;GACL,QAAQ;GACR,SAAS;GACT,QAAQ;EACV;EACA,MAAM;GACJ,OAAO;GACP,SAAS;GACT,QAAQ;GACR,cAAc;GACd,MAAM;GACN,eAAe;EACjB;CACF;CACA,iBAAiB,EACf,MAAM,UACR;AACF,CACF;AAEA,MAAM,eACJ;AAoBF,MAAM,SAASA,QAAM,WAA2C,SAAS,OACvE,EACE,WACA,cACA,OACA,MACA,QACA,cACA,SAAS,UACT,GAAG,SAEL,KACA;CAKA,OACE,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;EAAM,CAAC,GAAG,cAAc,SAAS;EACjE;EACL,GAAI;CACL,CAAA;AAEL,CAAC;AAED,OAAO,cAAc"}
|
|
@@ -8,7 +8,7 @@ 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" | "
|
|
11
|
+
variant?: "success" | "warning" | "info" | "error" | 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
14
|
/** Overrides the variant's default icon; the variant's color is kept. */
|
|
@@ -8,7 +8,7 @@ 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" | "
|
|
11
|
+
variant?: "success" | "warning" | "info" | "error" | 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
14
|
/** Overrides the variant's default icon; the variant's color is kept. */
|
package/dist/components/card.cjs
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
3
3
|
const require_chunk = require("../chunk-DY84GLCh.cjs");
|
|
4
|
+
const require_lib_container_chrome = require("../lib/container-chrome.cjs");
|
|
4
5
|
let react = require("react");
|
|
5
6
|
react = require_chunk.__toESM(react);
|
|
6
7
|
let react_jsx_runtime = require("react/jsx-runtime");
|
|
@@ -8,18 +9,18 @@ let class_variance_authority = require("class-variance-authority");
|
|
|
8
9
|
let _base_ui_react_use_render = require("@base-ui/react/use-render");
|
|
9
10
|
let cnfast = require("cnfast");
|
|
10
11
|
//#region src/components/card.tsx
|
|
11
|
-
const cardVariants = (0, class_variance_authority.cva)("relative flex w-full flex-col gap-1
|
|
12
|
+
const cardVariants = (0, class_variance_authority.cva)("relative flex w-full flex-col gap-1 py-3", {
|
|
12
13
|
variants: { variant: {
|
|
13
|
-
ambient:
|
|
14
|
-
soft:
|
|
15
|
-
surface:
|
|
16
|
-
outline:
|
|
17
|
-
ghost:
|
|
18
|
-
solid:
|
|
14
|
+
ambient: (0, cnfast.cn)(require_lib_container_chrome.containerChrome.ambient, require_lib_container_chrome.containerPaddingX.ambient),
|
|
15
|
+
soft: (0, cnfast.cn)(require_lib_container_chrome.containerChrome.soft, require_lib_container_chrome.containerPaddingX.soft),
|
|
16
|
+
surface: (0, cnfast.cn)(require_lib_container_chrome.containerChrome.surface, require_lib_container_chrome.containerPaddingX.surface),
|
|
17
|
+
outline: (0, cnfast.cn)(require_lib_container_chrome.containerChrome.outline, require_lib_container_chrome.containerPaddingX.outline),
|
|
18
|
+
ghost: (0, cnfast.cn)(require_lib_container_chrome.containerChrome.ghost, require_lib_container_chrome.containerPaddingX.ghost),
|
|
19
|
+
solid: (0, cnfast.cn)(require_lib_container_chrome.containerChrome.solid, require_lib_container_chrome.containerPaddingX.solid)
|
|
19
20
|
} },
|
|
20
21
|
defaultVariants: { variant: "ambient" }
|
|
21
22
|
});
|
|
22
|
-
const Card = react.forwardRef(({ className, variant, color, render, ...props }, ref) => {
|
|
23
|
+
const Card = react.forwardRef(({ className, variant, color, radius = "2xl", render, ...props }, ref) => {
|
|
23
24
|
const interactive = render != null;
|
|
24
25
|
const resolved = variant ?? "ambient";
|
|
25
26
|
return (0, _base_ui_react_use_render.useRender)({
|
|
@@ -29,12 +30,7 @@ const Card = react.forwardRef(({ className, variant, color, render, ...props },
|
|
|
29
30
|
"data-slot": "card",
|
|
30
31
|
"data-variant": variant,
|
|
31
32
|
"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),
|
|
33
|
+
className: (0, cnfast.cn)(cardVariants({ variant }), require_lib_container_chrome.radiusClasses[radius], interactive && require_lib_container_chrome.containerInteractiveClasses(resolved), className),
|
|
38
34
|
ref,
|
|
39
35
|
...props
|
|
40
36
|
}
|
|
@@ -1 +1 @@
|
|
|
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(
|
|
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":";;;;;;;;;;;AAeA,MAAM,gBAAA,GAAA,yBAAA,KAAmB,4CAA4C;CACnE,UAAU,EACR,SAAS;EACP,UAAA,GAAA,OAAA,IAAYA,6BAAAA,gBAAgB,SAASC,6BAAAA,kBAAkB,OAAO;EAC9D,OAAA,GAAA,OAAA,IAASD,6BAAAA,gBAAgB,MAAMC,6BAAAA,kBAAkB,IAAI;EACrD,UAAA,GAAA,OAAA,IAAYD,6BAAAA,gBAAgB,SAASC,6BAAAA,kBAAkB,OAAO;EAC9D,UAAA,GAAA,OAAA,IAAYD,6BAAAA,gBAAgB,SAASC,6BAAAA,kBAAkB,OAAO;EAC9D,QAAA,GAAA,OAAA,IAAUD,6BAAAA,gBAAgB,OAAOC,6BAAAA,kBAAkB,KAAK;EACxD,QAAA,GAAA,OAAA,IAAUD,6BAAAA,gBAAgB,OAAOC,6BAAAA,kBAAkB,KAAK;CAC1D,EACF;CACA,iBAAiB,EACf,SAAS,UACX;AACF,CAAC;AAoBD,MAAM,OAAOC,MAAM,YAChB,EAAE,WAAW,SAAS,OAAO,SAAS,OAAO,QAAQ,GAAG,SAAS,QAAQ;CACxE,MAAM,cAAc,UAAU;CAC9B,MAAM,WAAW,WAAW;CAC5B,QAAA,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,QAAQ,CAAC,GACxBC,6BAAAA,cAAc,SACd,eAAeC,6BAAAA,4BAA4B,QAAQ,GACnD,SACF;GACA;GACA,GAAG;EACL;CACF,CAAC;AACH,CACF;AAEA,KAAK,cAAc;AAEnB,MAAM,aAAaF,MAAM,YAGtB,EAAE,WAAW,GAAG,SAAS,QAC1B,iBAAA,GAAA,kBAAA,KAAC,OAAD;CACE,YAAA,GAAA,OAAA,IAAc,2BAA2B,SAAS;CAC7C;CACL,GAAI;AACL,CAAA,CACF;AAED,WAAW,cAAc;AAEzB,MAAM,WAAWA,MAAM,YAGpB,EAAE,WAAW,GAAG,SAAS,QAC1B,iBAAA,GAAA,kBAAA,KAAC,OAAD;CACE,YAAA,GAAA,OAAA,IACE,uFACA,SACF;CACK;CACL,GAAI;AACL,CAAA,CACF;AAED,SAAS,cAAc;AAEvB,MAAM,YAAYA,MAAM,YAGrB,EAAE,WAAW,GAAG,SAAS,QAC1B,iBAAA,GAAA,kBAAA,KAAC,MAAD;CACE,YAAA,GAAA,OAAA,IACE,6EACA,SACF;CACK;CACL,GAAI;AACL,CAAA,CACF;AAED,UAAU,cAAc;AAExB,MAAM,kBAAkBA,MAAM,YAG3B,EAAE,WAAW,GAAG,SAAS,QAC1B,iBAAA,GAAA,kBAAA,KAAC,KAAD;CACE,YAAA,GAAA,OAAA,IACE,qEACA,SACF;CACK;CACL,GAAI;AACL,CAAA,CACF;AAED,gBAAgB,cAAc;AAE9B,MAAM,cAAcA,MAAM,YAGvB,EAAE,WAAW,GAAG,SAAS,QAC1B,iBAAA,GAAA,kBAAA,KAAC,OAAD;CAAK,YAAA,GAAA,OAAA,IAAc,IAAI,SAAS;CAAQ;CAAK,GAAI;AAAQ,CAAA,CAC1D;AAED,YAAY,cAAc;AAE1B,MAAM,aAAaA,MAAM,YAGtB,EAAE,WAAW,GAAG,SAAS,QAC1B,iBAAA,GAAA,kBAAA,KAAC,OAAD;CACE,YAAA,GAAA,OAAA,IACE,sFACA,SACF;CACK;CACL,GAAI;AACL,CAAA,CACF;AAED,WAAW,cAAc;AAEzB,MAAM,eAAeA,MAAM,YAGxB,EAAE,WAAW,GAAG,SAAS,QAC1B,iBAAA,GAAA,kBAAA,MAAC,OAAD;CACE,YAAA,GAAA,OAAA,IACE,kFACA,SACF;CACK;CACL,GAAI;WANN,CAQE,iBAAA,GAAA,kBAAA,KAAC,OAAD,EAAK,WAAU,2FAA4F,CAAA,GAC3G,iBAAA,GAAA,kBAAA,MAAC,OAAD;EAAK,WAAU;YAAf,CACE,iBAAA,GAAA,kBAAA,KAAC,OAAD,EAAK,WAAU,2FAA4F,CAAA,GAC3G,iBAAA,GAAA,kBAAA,KAAC,OAAD,EAAK,WAAU,2FAA4F,CAAA,CACxG;GACF;EACN;AAED,aAAa,cAAc"}
|
|
@@ -1,20 +1,23 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
|
|
3
|
-
import { n as SparkCardVariant, t as SparkCardColor } from "../theme-types-
|
|
3
|
+
import { n as SparkCardVariant, t as SparkCardColor } from "../theme-types-1yB0d8mp.cjs";
|
|
4
|
+
import { ContainerRadius } from "../lib/container-chrome.cjs";
|
|
4
5
|
import * as React$1 from "react";
|
|
5
6
|
import { useRender } from "@base-ui/react/use-render";
|
|
6
7
|
|
|
7
8
|
//#region src/components/card.d.ts
|
|
9
|
+
type CardRadius = ContainerRadius;
|
|
8
10
|
interface CardProps extends React$1.HTMLAttributes<HTMLDivElement> {
|
|
9
11
|
/**
|
|
10
12
|
* Container chrome scoped to this card — NOT the ambient `data-style` knob
|
|
11
13
|
* (that drives controls and would cascade into the card's content). Unset →
|
|
12
14
|
* follows the app-level `[data-card-variant]` knob (default soft-neutral).
|
|
13
|
-
* (`solid` is hidden for now — see `SparkCardVariant`.)
|
|
14
15
|
*/
|
|
15
16
|
variant?: SparkCardVariant;
|
|
16
17
|
/** Chrome palette. `neutral` (default) tracks the app neutral; `accent` tints with the brand accent. */
|
|
17
18
|
color?: SparkCardColor;
|
|
19
|
+
/** Corner radius, as a named step. Unset → `2xl`, today's fixed behaviour. */
|
|
20
|
+
radius?: CardRadius;
|
|
18
21
|
/**
|
|
19
22
|
* Base UI polymorphism. Pass `<a href/>` or `<button/>` to make the whole
|
|
20
23
|
* card interactive (hover tint, focus ring, disabled styles). Omit → static.
|
|
@@ -30,5 +33,5 @@ declare const CardContent: React$1.ForwardRefExoticComponent<React$1.HTMLAttribu
|
|
|
30
33
|
declare const CardFooter: React$1.ForwardRefExoticComponent<React$1.HTMLAttributes<HTMLDivElement> & React$1.RefAttributes<HTMLDivElement>>;
|
|
31
34
|
declare const CardSkeleton: React$1.ForwardRefExoticComponent<React$1.HTMLAttributes<HTMLDivElement> & React$1.RefAttributes<HTMLDivElement>>;
|
|
32
35
|
//#endregion
|
|
33
|
-
export { Card, CardContent, CardDescription, CardFooter, CardHeader, CardIcon, type CardProps, CardSkeleton, CardTitle };
|
|
36
|
+
export { Card, CardContent, CardDescription, CardFooter, CardHeader, CardIcon, type CardProps, type CardRadius, CardSkeleton, CardTitle };
|
|
34
37
|
//# sourceMappingURL=card.d.cts.map
|
|
@@ -1,20 +1,23 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
|
|
3
|
-
import { n as SparkCardVariant, t as SparkCardColor } from "../theme-types-
|
|
3
|
+
import { n as SparkCardVariant, t as SparkCardColor } from "../theme-types-1yB0d8mp.js";
|
|
4
|
+
import { ContainerRadius } from "../lib/container-chrome.js";
|
|
4
5
|
import * as React$1 from "react";
|
|
5
6
|
import { useRender } from "@base-ui/react/use-render";
|
|
6
7
|
|
|
7
8
|
//#region src/components/card.d.ts
|
|
9
|
+
type CardRadius = ContainerRadius;
|
|
8
10
|
interface CardProps extends React$1.HTMLAttributes<HTMLDivElement> {
|
|
9
11
|
/**
|
|
10
12
|
* Container chrome scoped to this card — NOT the ambient `data-style` knob
|
|
11
13
|
* (that drives controls and would cascade into the card's content). Unset →
|
|
12
14
|
* follows the app-level `[data-card-variant]` knob (default soft-neutral).
|
|
13
|
-
* (`solid` is hidden for now — see `SparkCardVariant`.)
|
|
14
15
|
*/
|
|
15
16
|
variant?: SparkCardVariant;
|
|
16
17
|
/** Chrome palette. `neutral` (default) tracks the app neutral; `accent` tints with the brand accent. */
|
|
17
18
|
color?: SparkCardColor;
|
|
19
|
+
/** Corner radius, as a named step. Unset → `2xl`, today's fixed behaviour. */
|
|
20
|
+
radius?: CardRadius;
|
|
18
21
|
/**
|
|
19
22
|
* Base UI polymorphism. Pass `<a href/>` or `<button/>` to make the whole
|
|
20
23
|
* card interactive (hover tint, focus ring, disabled styles). Omit → static.
|
|
@@ -30,5 +33,5 @@ declare const CardContent: React$1.ForwardRefExoticComponent<React$1.HTMLAttribu
|
|
|
30
33
|
declare const CardFooter: React$1.ForwardRefExoticComponent<React$1.HTMLAttributes<HTMLDivElement> & React$1.RefAttributes<HTMLDivElement>>;
|
|
31
34
|
declare const CardSkeleton: React$1.ForwardRefExoticComponent<React$1.HTMLAttributes<HTMLDivElement> & React$1.RefAttributes<HTMLDivElement>>;
|
|
32
35
|
//#endregion
|
|
33
|
-
export { Card, CardContent, CardDescription, CardFooter, CardHeader, CardIcon, type CardProps, CardSkeleton, CardTitle };
|
|
36
|
+
export { Card, CardContent, CardDescription, CardFooter, CardHeader, CardIcon, type CardProps, type CardRadius, CardSkeleton, CardTitle };
|
|
34
37
|
//# sourceMappingURL=card.d.ts.map
|
package/dist/components/card.js
CHANGED
|
@@ -1,22 +1,23 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
import { cn } from "../utils/cn.js";
|
|
3
|
+
import { containerChrome, containerInteractiveClasses, containerPaddingX, radiusClasses } from "../lib/container-chrome.js";
|
|
3
4
|
import * as React$1 from "react";
|
|
4
5
|
import { jsx, jsxs } from "react/jsx-runtime";
|
|
5
6
|
import { cva } from "class-variance-authority";
|
|
6
7
|
import { useRender } from "@base-ui/react/use-render";
|
|
7
8
|
//#region src/components/card.tsx
|
|
8
|
-
const cardVariants = cva("relative flex w-full flex-col gap-1
|
|
9
|
+
const cardVariants = cva("relative flex w-full flex-col gap-1 py-3", {
|
|
9
10
|
variants: { variant: {
|
|
10
|
-
ambient:
|
|
11
|
-
soft:
|
|
12
|
-
surface:
|
|
13
|
-
outline:
|
|
14
|
-
ghost:
|
|
15
|
-
solid:
|
|
11
|
+
ambient: cn(containerChrome.ambient, containerPaddingX.ambient),
|
|
12
|
+
soft: cn(containerChrome.soft, containerPaddingX.soft),
|
|
13
|
+
surface: cn(containerChrome.surface, containerPaddingX.surface),
|
|
14
|
+
outline: cn(containerChrome.outline, containerPaddingX.outline),
|
|
15
|
+
ghost: cn(containerChrome.ghost, containerPaddingX.ghost),
|
|
16
|
+
solid: cn(containerChrome.solid, containerPaddingX.solid)
|
|
16
17
|
} },
|
|
17
18
|
defaultVariants: { variant: "ambient" }
|
|
18
19
|
});
|
|
19
|
-
const Card = React$1.forwardRef(({ className, variant, color, render, ...props }, ref) => {
|
|
20
|
+
const Card = React$1.forwardRef(({ className, variant, color, radius = "2xl", render, ...props }, ref) => {
|
|
20
21
|
const interactive = render != null;
|
|
21
22
|
const resolved = variant ?? "ambient";
|
|
22
23
|
return useRender({
|
|
@@ -26,12 +27,7 @@ const Card = React$1.forwardRef(({ className, variant, color, render, ...props }
|
|
|
26
27
|
"data-slot": "card",
|
|
27
28
|
"data-variant": variant,
|
|
28
29
|
"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),
|
|
30
|
+
className: cn(cardVariants({ variant }), radiusClasses[radius], interactive && containerInteractiveClasses(resolved), className),
|
|
35
31
|
ref,
|
|
36
32
|
...props
|
|
37
33
|
}
|
|
@@ -1 +1 @@
|
|
|
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(
|
|
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 {\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":";;;;;;;;AAeA,MAAM,eAAe,IAAI,4CAA4C;CACnE,UAAU,EACR,SAAS;EACP,SAAS,GAAG,gBAAgB,SAAS,kBAAkB,OAAO;EAC9D,MAAM,GAAG,gBAAgB,MAAM,kBAAkB,IAAI;EACrD,SAAS,GAAG,gBAAgB,SAAS,kBAAkB,OAAO;EAC9D,SAAS,GAAG,gBAAgB,SAAS,kBAAkB,OAAO;EAC9D,OAAO,GAAG,gBAAgB,OAAO,kBAAkB,KAAK;EACxD,OAAO,GAAG,gBAAgB,OAAO,kBAAkB,KAAK;CAC1D,EACF;CACA,iBAAiB,EACf,SAAS,UACX;AACF,CAAC;AAoBD,MAAM,OAAOA,QAAM,YAChB,EAAE,WAAW,SAAS,OAAO,SAAS,OAAO,QAAQ,GAAG,SAAS,QAAQ;CACxE,MAAM,cAAc,UAAU;CAC9B,MAAM,WAAW,WAAW;CAC5B,OAAO,UAAU;EACf,gBAAgB;EAChB;EACA,OAAO;GACL,aAAa;GACb,gBAAgB;GAChB,mBAAmB,UAAU,WAAW,WAAW,KAAA;GACnD,WAAW,GACT,aAAa,EAAE,QAAQ,CAAC,GACxB,cAAc,SACd,eAAe,4BAA4B,QAAQ,GACnD,SACF;GACA;GACA,GAAG;EACL;CACF,CAAC;AACH,CACF;AAEA,KAAK,cAAc;AAEnB,MAAM,aAAaA,QAAM,YAGtB,EAAE,WAAW,GAAG,SAAS,QAC1B,oBAAC,OAAD;CACE,WAAW,GAAG,2BAA2B,SAAS;CAC7C;CACL,GAAI;AACL,CAAA,CACF;AAED,WAAW,cAAc;AAEzB,MAAM,WAAWA,QAAM,YAGpB,EAAE,WAAW,GAAG,SAAS,QAC1B,oBAAC,OAAD;CACE,WAAW,GACT,uFACA,SACF;CACK;CACL,GAAI;AACL,CAAA,CACF;AAED,SAAS,cAAc;AAEvB,MAAM,YAAYA,QAAM,YAGrB,EAAE,WAAW,GAAG,SAAS,QAC1B,oBAAC,MAAD;CACE,WAAW,GACT,6EACA,SACF;CACK;CACL,GAAI;AACL,CAAA,CACF;AAED,UAAU,cAAc;AAExB,MAAM,kBAAkBA,QAAM,YAG3B,EAAE,WAAW,GAAG,SAAS,QAC1B,oBAAC,KAAD;CACE,WAAW,GACT,qEACA,SACF;CACK;CACL,GAAI;AACL,CAAA,CACF;AAED,gBAAgB,cAAc;AAE9B,MAAM,cAAcA,QAAM,YAGvB,EAAE,WAAW,GAAG,SAAS,QAC1B,oBAAC,OAAD;CAAK,WAAW,GAAG,IAAI,SAAS;CAAQ;CAAK,GAAI;AAAQ,CAAA,CAC1D;AAED,YAAY,cAAc;AAE1B,MAAM,aAAaA,QAAM,YAGtB,EAAE,WAAW,GAAG,SAAS,QAC1B,oBAAC,OAAD;CACE,WAAW,GACT,sFACA,SACF;CACK;CACL,GAAI;AACL,CAAA,CACF;AAED,WAAW,cAAc;AAEzB,MAAM,eAAeA,QAAM,YAGxB,EAAE,WAAW,GAAG,SAAS,QAC1B,qBAAC,OAAD;CACE,WAAW,GACT,kFACA,SACF;CACK;CACL,GAAI;WANN,CAQE,oBAAC,OAAD,EAAK,WAAU,2FAA4F,CAAA,GAC3G,qBAAC,OAAD;EAAK,WAAU;YAAf,CACE,oBAAC,OAAD,EAAK,WAAU,2FAA4F,CAAA,GAC3G,oBAAC,OAAD,EAAK,WAAU,2FAA4F,CAAA,CACxG;GACF;EACN;AAED,aAAa,cAAc"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
3
|
-
const
|
|
3
|
+
const require_components_icon = require("./icon.cjs");
|
|
4
4
|
let react_jsx_runtime = require("react/jsx-runtime");
|
|
5
5
|
//#region src/components/empty-state.tsx
|
|
6
6
|
const emptyStateVariants = (0, require("class-variance-authority").cva)("flex flex-col items-center gap-4 px-6 py-12 text-center", {
|
|
@@ -14,12 +14,9 @@ function EmptyState({ action, description, icon, title, variant }) {
|
|
|
14
14
|
return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
15
15
|
className: emptyStateVariants({ variant }),
|
|
16
16
|
children: [
|
|
17
|
-
icon && /* @__PURE__ */ (0, react_jsx_runtime.jsx)(
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
className: "text-[20px] text-gray-light",
|
|
21
|
-
name: icon
|
|
22
|
-
})
|
|
17
|
+
icon && /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_components_icon.Icon, {
|
|
18
|
+
name: icon,
|
|
19
|
+
size: "xl"
|
|
23
20
|
}),
|
|
24
21
|
/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
25
22
|
className: "flex flex-col gap-1",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"empty-state.cjs","names":["
|
|
1
|
+
{"version":3,"file":"empty-state.cjs","names":["Icon"],"sources":["../../src/components/empty-state.tsx"],"sourcesContent":["import { cva, type VariantProps } from 'class-variance-authority'\nimport type { ReactNode } from 'react'\nimport type { MaterialSymbolIconName } from '../icons/material-symbol'\nimport { Icon } from './icon'\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 && <Icon name={icon} size=\"xl\" />}\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":";;;;;AAKA,MAAM,sBAAA,qCAAA,EAAA,KACJ,2DACA;CACE,UAAU,EACR,SAAS;EACP,QAAQ;EACR,OAAO;CACT,EACF;CACA,iBAAiB,EACf,SAAS,SACX;AACF,CACF;AASA,SAAgB,WAAW,EACzB,QACA,aACA,MACA,OACA,WACkB;CAClB,OACE,iBAAA,GAAA,kBAAA,MAAC,OAAD;EAAK,WAAW,mBAAmB,EAAE,QAAQ,CAAC;YAA9C;GACG,QAAQ,iBAAA,GAAA,kBAAA,KAACA,wBAAAA,MAAD;IAAM,MAAM;IAAM,MAAK;GAAM,CAAA;GACtC,iBAAA,GAAA,kBAAA,MAAC,OAAD;IAAK,WAAU;cAAf,CACE,iBAAA,GAAA,kBAAA,KAAC,MAAD;KAAI,WAAU;eAAiC;IAAU,CAAA,GACxD,eACC,iBAAA,GAAA,kBAAA,KAAC,KAAD;KAAG,WAAU;eACV;IACA,CAAA,CAEF;;GACJ;EACE;;AAET"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
import {
|
|
2
|
+
import { Icon } from "./icon.js";
|
|
3
3
|
import { jsx, jsxs } from "react/jsx-runtime";
|
|
4
4
|
import { cva } from "class-variance-authority";
|
|
5
5
|
//#region src/components/empty-state.tsx
|
|
@@ -14,12 +14,9 @@ function EmptyState({ action, description, icon, title, variant }) {
|
|
|
14
14
|
return /* @__PURE__ */ jsxs("div", {
|
|
15
15
|
className: emptyStateVariants({ variant }),
|
|
16
16
|
children: [
|
|
17
|
-
icon && /* @__PURE__ */ jsx(
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
className: "text-[20px] text-gray-light",
|
|
21
|
-
name: icon
|
|
22
|
-
})
|
|
17
|
+
icon && /* @__PURE__ */ jsx(Icon, {
|
|
18
|
+
name: icon,
|
|
19
|
+
size: "xl"
|
|
23
20
|
}),
|
|
24
21
|
/* @__PURE__ */ jsxs("div", {
|
|
25
22
|
className: "flex flex-col gap-1",
|
|
@@ -1 +1 @@
|
|
|
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
|
|
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 type { MaterialSymbolIconName } from '../icons/material-symbol'\nimport { Icon } from './icon'\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 && <Icon name={icon} size=\"xl\" />}\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":";;;;;AAKA,MAAM,qBAAqB,IACzB,2DACA;CACE,UAAU,EACR,SAAS;EACP,QAAQ;EACR,OAAO;CACT,EACF;CACA,iBAAiB,EACf,SAAS,SACX;AACF,CACF;AASA,SAAgB,WAAW,EACzB,QACA,aACA,MACA,OACA,WACkB;CAClB,OACE,qBAAC,OAAD;EAAK,WAAW,mBAAmB,EAAE,QAAQ,CAAC;YAA9C;GACG,QAAQ,oBAAC,MAAD;IAAM,MAAM;IAAM,MAAK;GAAM,CAAA;GACtC,qBAAC,OAAD;IAAK,WAAU;cAAf,CACE,oBAAC,MAAD;KAAI,WAAU;eAAiC;IAAU,CAAA,GACxD,eACC,oBAAC,KAAD;KAAG,WAAU;eACV;IACA,CAAA,CAEF;;GACJ;EACE;;AAET"}
|
|
@@ -3,6 +3,7 @@
|
|
|
3
3
|
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
4
4
|
const require_chunk = require("../chunk-DY84GLCh.cjs");
|
|
5
5
|
const require_components_separator = require("./separator.cjs");
|
|
6
|
+
const require_components_skeleton = require("./skeleton.cjs");
|
|
6
7
|
const require_components_theme = require("./theme.cjs");
|
|
7
8
|
let react = require("react");
|
|
8
9
|
react = require_chunk.__toESM(react);
|
|
@@ -118,24 +119,30 @@ const fieldVariants = (0, class_variance_authority.cva)("group/field relative fl
|
|
|
118
119
|
}
|
|
119
120
|
]
|
|
120
121
|
});
|
|
121
|
-
function Field({ className, labelPosition: labelPositionProp, inputStyle: inputStyleProp, inputColor: inputColorProp, ...props }) {
|
|
122
|
+
function Field({ className, children, labelPosition: labelPositionProp, inputStyle: inputStyleProp, inputColor: inputColorProp, readOnly = false, ...props }) {
|
|
122
123
|
const id = (0, react.useId)();
|
|
123
124
|
const [hasDescription, setHasDescription] = react.useState(false);
|
|
124
125
|
const theme = require_components_theme.useTheme();
|
|
125
126
|
const labelPosition = labelPositionProp ?? theme.labelPosition ?? "inset";
|
|
126
127
|
const inputStyle = inputStyleProp ?? theme.inputStyle ?? "soft";
|
|
127
128
|
const inputColor = inputColorProp ?? theme.inputColor ?? "brand";
|
|
129
|
+
const fieldId = `field-${id}`;
|
|
130
|
+
const labelId = `${fieldId}-label`;
|
|
128
131
|
const value = react.useMemo(() => ({
|
|
129
|
-
id:
|
|
130
|
-
|
|
132
|
+
id: fieldId,
|
|
133
|
+
labelId,
|
|
134
|
+
descriptionId: `${fieldId}-description`,
|
|
131
135
|
hasDescription,
|
|
132
136
|
setHasDescription,
|
|
137
|
+
readOnly,
|
|
133
138
|
labelPosition,
|
|
134
139
|
inputStyle,
|
|
135
140
|
inputColor
|
|
136
141
|
}), [
|
|
137
|
-
|
|
142
|
+
fieldId,
|
|
143
|
+
labelId,
|
|
138
144
|
hasDescription,
|
|
145
|
+
readOnly,
|
|
139
146
|
labelPosition,
|
|
140
147
|
inputStyle,
|
|
141
148
|
inputColor
|
|
@@ -148,12 +155,14 @@ function Field({ className, labelPosition: labelPositionProp, inputStyle: inputS
|
|
|
148
155
|
"data-label-position": labelPosition,
|
|
149
156
|
"data-input-style": inputStyle,
|
|
150
157
|
"data-input-color": inputColor,
|
|
158
|
+
"aria-labelledby": readOnly ? labelId : void 0,
|
|
151
159
|
className: (0, cnfast.cn)(fieldVariants({
|
|
152
160
|
labelPosition,
|
|
153
161
|
inputStyle,
|
|
154
162
|
inputColor
|
|
155
163
|
}), className),
|
|
156
|
-
...props
|
|
164
|
+
...props,
|
|
165
|
+
children
|
|
157
166
|
})
|
|
158
167
|
});
|
|
159
168
|
}
|
|
@@ -164,26 +173,49 @@ function FieldContent({ className, ...props }) {
|
|
|
164
173
|
...props
|
|
165
174
|
});
|
|
166
175
|
}
|
|
167
|
-
|
|
176
|
+
const fieldLabelClassName = "text-sm leading-5 font-normal text-gray-light transition-all group-data-[invalid=true]/field:text-error-active! motion-reduce:transition-none";
|
|
177
|
+
function FieldLabel({ className, htmlFor, srOnly, children, ...props }) {
|
|
168
178
|
const field = useFieldContext();
|
|
179
|
+
const classNames = (0, cnfast.cn)(fieldLabelClassName, srOnly && "sr-only", className);
|
|
180
|
+
if (field?.readOnly) return /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
|
|
181
|
+
"data-slot": "field-label",
|
|
182
|
+
id: field.labelId,
|
|
183
|
+
className: classNames,
|
|
184
|
+
children
|
|
185
|
+
});
|
|
169
186
|
return /* @__PURE__ */ (0, react_jsx_runtime.jsx)("label", {
|
|
170
187
|
"data-slot": "field-label",
|
|
171
|
-
className:
|
|
188
|
+
className: classNames,
|
|
172
189
|
htmlFor: htmlFor ?? field?.id,
|
|
173
|
-
...props
|
|
190
|
+
...props,
|
|
191
|
+
children
|
|
174
192
|
});
|
|
175
193
|
}
|
|
176
194
|
function FieldValue({ className, id, title, truncate, children, ...props }) {
|
|
177
|
-
const field = useFieldContext();
|
|
178
195
|
return /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
|
|
179
196
|
"data-slot": "field-value",
|
|
180
|
-
id
|
|
197
|
+
id,
|
|
181
198
|
title: title ?? (truncate && typeof children === "string" ? children : void 0),
|
|
182
199
|
className: (0, cnfast.cn)("min-h-8 w-full text-base text-gray tabular-nums group-data-[disabled=true]/field:opacity-70", truncate ? "block truncate leading-8" : "inline-flex items-center wrap-anywhere whitespace-pre-wrap", className),
|
|
183
200
|
...props,
|
|
184
201
|
children
|
|
185
202
|
});
|
|
186
203
|
}
|
|
204
|
+
function FieldSkeleton({ className, labelClassName, valueClassName, truncate, ...props }) {
|
|
205
|
+
return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
206
|
+
"data-slot": "field-skeleton",
|
|
207
|
+
"aria-hidden": "true",
|
|
208
|
+
className: (0, cnfast.cn)("flex w-full flex-col gap-y-1", className),
|
|
209
|
+
...props,
|
|
210
|
+
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_components_skeleton.Skeleton, {
|
|
211
|
+
"data-slot": "field-skeleton-label",
|
|
212
|
+
className: (0, cnfast.cn)("h-5 w-24", labelClassName)
|
|
213
|
+
}), /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_components_skeleton.Skeleton, {
|
|
214
|
+
"data-slot": "field-skeleton-value",
|
|
215
|
+
className: (0, cnfast.cn)("h-8 min-h-8 w-full", truncate && "max-w-full truncate", valueClassName)
|
|
216
|
+
})]
|
|
217
|
+
});
|
|
218
|
+
}
|
|
187
219
|
function FieldTitle({ className, ...props }) {
|
|
188
220
|
return /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
|
|
189
221
|
"data-slot": "field-title",
|
|
@@ -249,6 +281,7 @@ exports.FieldLabel = FieldLabel;
|
|
|
249
281
|
exports.FieldLegend = FieldLegend;
|
|
250
282
|
exports.FieldSeparator = FieldSeparator;
|
|
251
283
|
exports.FieldSet = FieldSet;
|
|
284
|
+
exports.FieldSkeleton = FieldSkeleton;
|
|
252
285
|
exports.FieldTitle = FieldTitle;
|
|
253
286
|
exports.FieldValue = FieldValue;
|
|
254
287
|
exports.useFieldContext = useFieldContext;
|