sparkdesign 0.4.7 → 0.4.9

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (96) hide show
  1. package/cli/registry/AGENTS.md +1 -1
  2. package/cli/registry/agent-manifest.json +3996 -67
  3. package/cli/registry/basic/accordion.tsx +79 -0
  4. package/cli/registry/basic/alert-dialog.tsx +3 -6
  5. package/cli/registry/basic/badge.tsx +49 -0
  6. package/cli/registry/basic/button.tsx +32 -14
  7. package/cli/registry/basic/card.tsx +20 -8
  8. package/cli/registry/basic/collapsible-card.tsx +12 -5
  9. package/cli/registry/basic/combobox.tsx +104 -46
  10. package/cli/registry/basic/context-menu.tsx +2 -3
  11. package/cli/registry/basic/date-picker.tsx +78 -7
  12. package/cli/registry/basic/dialog.tsx +3 -8
  13. package/cli/registry/basic/drawer.tsx +3 -5
  14. package/cli/registry/basic/dropdown-menu.tsx +2 -3
  15. package/cli/registry/basic/ellipsis-text.tsx +151 -0
  16. package/cli/registry/basic/form.tsx +186 -0
  17. package/cli/registry/basic/hover-card.tsx +2 -3
  18. package/cli/registry/basic/icon-button.tsx +29 -14
  19. package/cli/registry/basic/input-group.tsx +4 -4
  20. package/cli/registry/basic/input.tsx +29 -13
  21. package/cli/registry/basic/popover.tsx +2 -3
  22. package/cli/registry/basic/select.tsx +24 -4
  23. package/cli/registry/basic/sidebar.tsx +665 -0
  24. package/cli/registry/basic/sonner.tsx +10 -10
  25. package/cli/registry/basic/spinner.tsx +20 -5
  26. package/cli/registry/basic/textarea.tsx +30 -12
  27. package/cli/registry/basic/tooltip.tsx +2 -1
  28. package/cli/registry/chat/chat-input/compound.tsx +1 -0
  29. package/cli/registry/chat/user-question/compound.tsx +2 -0
  30. package/cli/registry/meta.json +250 -30
  31. package/dist/registry/basic/accordion.d.ts +15 -0
  32. package/dist/registry/basic/alert-dialog.d.ts +1 -1
  33. package/dist/registry/basic/avatar.d.ts +1 -1
  34. package/dist/registry/basic/badge.d.ts +23 -0
  35. package/dist/registry/basic/button.d.ts +3 -1
  36. package/dist/registry/basic/card.d.ts +9 -4
  37. package/dist/registry/basic/combobox.d.ts +20 -9
  38. package/dist/registry/basic/date-picker.d.ts +18 -9
  39. package/dist/registry/basic/dialog.d.ts +1 -1
  40. package/dist/registry/basic/ellipsis-text.d.ts +45 -0
  41. package/dist/registry/basic/form.d.ts +23 -0
  42. package/dist/registry/basic/icon-button.d.ts +17 -3
  43. package/dist/registry/basic/input-group.d.ts +5 -3
  44. package/dist/registry/basic/input.d.ts +8 -3
  45. package/dist/registry/basic/item.d.ts +3 -3
  46. package/dist/registry/basic/resizable.d.ts +48 -48
  47. package/dist/registry/basic/select.d.ts +7 -2
  48. package/dist/registry/basic/sidebar.d.ts +72 -0
  49. package/dist/registry/basic/spinner.d.ts +6 -2
  50. package/dist/registry/basic/tag.d.ts +1 -1
  51. package/dist/registry/basic/textarea.d.ts +9 -3
  52. package/dist/registry/basic/toggle.d.ts +1 -1
  53. package/dist/scale/computed.css +11 -0
  54. package/dist/scale/config.css +11 -0
  55. package/dist/scale/presets/compact.css +7 -0
  56. package/dist/scale/presets/dense.css +7 -0
  57. package/dist/scale/presets/sharp.css +7 -0
  58. package/dist/scale/presets/soft.css +7 -0
  59. package/dist/spark-design.cjs.js +34 -37
  60. package/dist/spark-design.es.js +7200 -4933
  61. package/dist/sparkdesign.css +1 -1
  62. package/dist/src/components/basic/Accordion/index.d.ts +13 -0
  63. package/dist/src/components/basic/Badge/index.d.ts +13 -0
  64. package/dist/src/components/basic/EllipsisText/index.d.ts +4 -36
  65. package/dist/src/components/basic/Form/index.d.ts +12 -0
  66. package/dist/src/components/basic/Sidebar/index.d.ts +13 -0
  67. package/dist/src/components/index.d.ts +7 -3
  68. package/dist/src/lib/index.d.ts +1 -1
  69. package/dist/src/lib/motion.d.ts +79 -0
  70. package/dist/theme-base.css +22 -0
  71. package/dist/themes/dark-mint.css +6 -0
  72. package/dist/themes/dark-parchment.css +6 -0
  73. package/dist/themes/light-parchment.css +6 -0
  74. package/dist/tokens/scale/computed.css +11 -0
  75. package/dist/tokens/scale/config.css +11 -0
  76. package/dist/tokens/scale/presets/compact.css +7 -0
  77. package/dist/tokens/scale/presets/dense.css +7 -0
  78. package/dist/tokens/scale/presets/sharp.css +7 -0
  79. package/dist/tokens/scale/presets/soft.css +7 -0
  80. package/dist/tokens/theme-base.css +22 -0
  81. package/dist/tokens/themes/dark-mint.css +6 -0
  82. package/dist/tokens/themes/dark-parchment.css +6 -0
  83. package/dist/tokens/themes/light-parchment.css +6 -0
  84. package/docs/agent/component-selection.md +106 -4
  85. package/package.json +8 -3
  86. package/registry/agent-manifest.json +3996 -67
  87. package/cli/registry/chat/user-question/UserQuestionCard.tsx +0 -198
  88. package/cli/registry/chat/user-question/UserQuestionFooter.tsx +0 -66
  89. package/cli/registry/chat/user-question/UserQuestionHeader.tsx +0 -64
  90. package/cli/registry/chat/user-question/useUserQuestionState.ts +0 -165
  91. package/dist/registry/chat/user-question/UserQuestionCard.d.ts +0 -36
  92. package/dist/registry/chat/user-question/UserQuestionFooter.d.ts +0 -24
  93. package/dist/registry/chat/user-question/UserQuestionHeader.d.ts +0 -26
  94. package/dist/registry/chat/user-question/useUserQuestionState.d.ts +0 -26
  95. package/dist/src/components/basic/CollapsibleSection/index.d.ts +0 -43
  96. package/dist/src/components/chat/Response/StreamingMarkdownBlock.d.ts +0 -12
@@ -13,7 +13,7 @@ import * as React from 'react';
13
13
  import * as AvatarPrimitive from '@radix-ui/react-avatar';
14
14
  import { type VariantProps } from 'class-variance-authority';
15
15
  declare const avatarVariants: (props?: ({
16
- size?: "sm" | "lg" | "default" | null | undefined;
16
+ size?: "default" | "sm" | "lg" | null | undefined;
17
17
  } & import("class-variance-authority/types").ClassProp) | undefined) => string;
18
18
  export interface AvatarProps extends React.ComponentPropsWithoutRef<typeof AvatarPrimitive.Root>, VariantProps<typeof avatarVariants> {
19
19
  }
@@ -0,0 +1,23 @@
1
+ /**
2
+ * [WHO]: Badge component for compact labels and statuses.
3
+ * [FROM]: React, @radix-ui/react-slot, class-variance-authority, registry/lib/utils.
4
+ * [TO]: sparkdesign package consumers; Showcase; CLI registry copies.
5
+ * [HERE]: registry/basic/badge.tsx — tokenized status/category badge primitive.
6
+ *
7
+ * [PROTOCOL]:
8
+ * 1. Keep this P3 header in sync when the public contract changes.
9
+ * 2. Update module AGENTS.md (P2) and root AGENTS.md (P1) when boundaries change.
10
+ * 3. Follow design tokens and explicit type exports.
11
+ */
12
+ import * as React from "react";
13
+ import { type VariantProps } from "class-variance-authority";
14
+ declare const badgeVariants: (props?: ({
15
+ variant?: "default" | "secondary" | "outline" | "destructive" | null | undefined;
16
+ } & import("class-variance-authority/types").ClassProp) | undefined) => string;
17
+ declare function Badge({ className, variant, asChild, ...props }: React.ComponentProps<"span"> & VariantProps<typeof badgeVariants> & {
18
+ asChild?: boolean;
19
+ }): import("react/jsx-runtime").JSX.Element;
20
+ export type BadgeProps = React.ComponentProps<"span"> & VariantProps<typeof badgeVariants> & {
21
+ asChild?: boolean;
22
+ };
23
+ export { Badge, badgeVariants };
@@ -1,7 +1,7 @@
1
1
  import type { ButtonHTMLAttributes, ReactNode } from 'react';
2
2
  import { type VariantProps } from 'class-variance-authority';
3
3
  declare const buttonVariants: (props?: ({
4
- variant?: "primary" | "secondary" | "tertiary" | "outline" | "ghost" | "text" | null | undefined;
4
+ variant?: "text" | "primary" | "secondary" | "tertiary" | "outline" | "ghost" | "destructive" | null | undefined;
5
5
  size?: "sm" | "md" | "lg" | null | undefined;
6
6
  rounded?: "square" | "pill" | null | undefined;
7
7
  textOnly?: boolean | null | undefined;
@@ -11,6 +11,8 @@ export interface ButtonProps extends ButtonHTMLAttributes<HTMLButtonElement>, Va
11
11
  textButton?: boolean;
12
12
  prefixIcon?: ReactNode;
13
13
  suffixIcon?: ReactNode;
14
+ loading?: boolean;
15
+ asChild?: boolean;
14
16
  }
15
17
  declare const Button: import("react").ForwardRefExoticComponent<ButtonProps & import("react").RefAttributes<HTMLButtonElement>>;
16
18
  export { Button, buttonVariants };
@@ -1,6 +1,6 @@
1
1
  /**
2
2
  * [WHO]: Card — surface container with Header / Title / Description / Content / Footer parts.
3
- * [FROM]: React + `@/lib/utils` cn.
3
+ * [FROM]: React + `@/lib/utils` cn + CVA.
4
4
  * [TO]: sparkdesign package consumers; output of CLI `add card` when registered.
5
5
  * [HERE]: registry/basic/card.tsx — Spark Design source; keep aligned with the main library.
6
6
  *
@@ -10,18 +10,23 @@
10
10
  * 3. Follow design tokens and explicit type exports.
11
11
  */
12
12
  import * as React from 'react';
13
- declare const Card: React.ForwardRefExoticComponent<React.HTMLAttributes<HTMLDivElement> & React.RefAttributes<HTMLDivElement>>;
13
+ import { type VariantProps } from 'class-variance-authority';
14
+ declare const cardVariants: (props?: ({
15
+ variant?: "outline" | "ghost" | "filled" | null | undefined;
16
+ } & import("class-variance-authority/types").ClassProp) | undefined) => string;
17
+ export interface CardProps extends React.HTMLAttributes<HTMLDivElement>, VariantProps<typeof cardVariants> {
18
+ }
19
+ declare const Card: React.ForwardRefExoticComponent<CardProps & React.RefAttributes<HTMLDivElement>>;
14
20
  declare const CardHeader: React.ForwardRefExoticComponent<React.HTMLAttributes<HTMLDivElement> & React.RefAttributes<HTMLDivElement>>;
15
21
  declare const CardTitle: React.ForwardRefExoticComponent<React.HTMLAttributes<HTMLDivElement> & React.RefAttributes<HTMLDivElement>>;
16
22
  declare const CardDescription: React.ForwardRefExoticComponent<React.HTMLAttributes<HTMLDivElement> & React.RefAttributes<HTMLDivElement>>;
17
23
  declare const CardAction: React.ForwardRefExoticComponent<React.HTMLAttributes<HTMLDivElement> & React.RefAttributes<HTMLDivElement>>;
18
24
  declare const CardContent: React.ForwardRefExoticComponent<React.HTMLAttributes<HTMLDivElement> & React.RefAttributes<HTMLDivElement>>;
19
25
  declare const CardFooter: React.ForwardRefExoticComponent<React.HTMLAttributes<HTMLDivElement> & React.RefAttributes<HTMLDivElement>>;
20
- export type CardProps = React.HTMLAttributes<HTMLDivElement>;
21
26
  export type CardHeaderProps = React.HTMLAttributes<HTMLDivElement>;
22
27
  export type CardTitleProps = React.HTMLAttributes<HTMLDivElement>;
23
28
  export type CardDescriptionProps = React.HTMLAttributes<HTMLDivElement>;
24
29
  export type CardActionProps = React.HTMLAttributes<HTMLDivElement>;
25
30
  export type CardContentProps = React.HTMLAttributes<HTMLDivElement>;
26
31
  export type CardFooterProps = React.HTMLAttributes<HTMLDivElement>;
27
- export { Card, CardHeader, CardTitle, CardDescription, CardAction, CardContent, CardFooter, };
32
+ export { Card, CardHeader, CardTitle, CardDescription, CardAction, CardContent, CardFooter, cardVariants, };
@@ -1,12 +1,12 @@
1
1
  /**
2
- * [WHO]: Combobox — accessible input + listbox composition for small option sets.
3
- * [FROM]: React + registry/basic/input.
2
+ * [WHO]: Combobox — Popover + Command composition for searchable single-select inputs.
3
+ * [FROM]: React, registry/basic/button, registry/basic/command, registry/basic/popover, registry/lib/utils.
4
4
  * [TO]: sparkdesign package consumers; output of CLI `add combobox` when registered.
5
- * [HERE]: registry/basic/combobox.tsx — Spark Design source; lightweight shadcn-compatible combobox.
5
+ * [HERE]: registry/basic/combobox.tsx — Spark Design source; tokenized shadcn-compatible combobox.
6
6
  *
7
7
  * [PROTOCOL]:
8
- * 1. Use Command for command-palette scale interactions.
9
- * 2. Keep option labels textual for screen reader compatibility.
8
+ * 1. Keep the trigger a Button (tokenized) so product surfaces inherit Spark typography/spacing.
9
+ * 2. Use Command for filtering so keyboard navigation and empty states remain consistent with the palette primitive.
10
10
  * 3. Follow design tokens and explicit type exports.
11
11
  */
12
12
  import * as React from 'react';
@@ -14,13 +14,24 @@ export interface ComboboxOption {
14
14
  value: string;
15
15
  label: string;
16
16
  disabled?: boolean;
17
+ keywords?: string[];
17
18
  }
18
- export interface ComboboxProps extends Omit<React.HTMLAttributes<HTMLDivElement>, 'onChange'> {
19
+ export interface ComboboxProps {
19
20
  options: ComboboxOption[];
20
21
  value?: string;
22
+ defaultValue?: string;
21
23
  onValueChange?: (value: string) => void;
22
- placeholder?: string;
23
- emptyText?: string;
24
+ placeholder?: React.ReactNode;
25
+ searchPlaceholder?: string;
26
+ emptyText?: React.ReactNode;
27
+ disabled?: boolean;
28
+ className?: string;
29
+ contentClassName?: string;
30
+ align?: 'start' | 'center' | 'end';
31
+ triggerClassName?: string;
32
+ id?: string;
33
+ name?: string;
34
+ 'aria-label'?: string;
24
35
  }
25
- declare function Combobox({ options, value, onValueChange, placeholder, emptyText, className, ...props }: ComboboxProps): import("react/jsx-runtime").JSX.Element;
36
+ declare function Combobox({ options, value, defaultValue, onValueChange, placeholder, searchPlaceholder, emptyText, disabled, className, contentClassName, triggerClassName, align, id, name, 'aria-label': ariaLabel, }: ComboboxProps): import("react/jsx-runtime").JSX.Element;
26
37
  export { Combobox };
@@ -1,18 +1,27 @@
1
1
  /**
2
- * [WHO]: DatePicker — tokenized date input composed from native input semantics.
3
- * [FROM]: React + registry/basic/input.
2
+ * [WHO]: DatePicker — Popover + Calendar composition matching shadcn parity.
3
+ * [FROM]: React, date-fns, registry/basic/button, registry/basic/calendar, registry/basic/popover, registry/lib/utils.
4
4
  * [TO]: sparkdesign package consumers; output of CLI `add date-picker` when registered.
5
- * [HERE]: registry/basic/date-picker.tsx — Spark Design source; lightweight shadcn-compatible date picker.
5
+ * [HERE]: registry/basic/date-picker.tsx — Spark Design source; tokenized shadcn-compatible date picker.
6
6
  *
7
7
  * [PROTOCOL]:
8
- * 1. Keep this dependency-light; use Calendar separately when custom day grids are needed.
9
- * 2. Preserve native input accessibility and mobile picker behavior.
8
+ * 1. Render a Button trigger that surfaces the selected date using project typography/tokens.
9
+ * 2. Use the shared Calendar primitive inside a PopoverContent for the day grid; never fall back to native pickers.
10
10
  * 3. Follow design tokens and explicit type exports.
11
11
  */
12
12
  import * as React from 'react';
13
- import { type InputProps } from './input';
14
- export interface DatePickerProps extends Omit<InputProps, 'type'> {
15
- type?: 'date' | 'datetime-local' | 'month' | 'time' | 'week';
13
+ export interface DatePickerProps {
14
+ value?: Date;
15
+ defaultValue?: Date;
16
+ onChange?: (date: Date | undefined) => void;
17
+ placeholder?: React.ReactNode;
18
+ disabled?: boolean;
19
+ className?: string;
20
+ align?: 'start' | 'center' | 'end';
21
+ formatString?: string;
22
+ id?: string;
23
+ name?: string;
24
+ 'aria-label'?: string;
16
25
  }
17
- declare const DatePicker: React.ForwardRefExoticComponent<DatePickerProps & React.RefAttributes<HTMLInputElement>>;
26
+ declare function DatePicker({ value, defaultValue, onChange, placeholder, disabled, className, align, formatString, id, name, 'aria-label': ariaLabel, }: DatePickerProps): import("react/jsx-runtime").JSX.Element;
18
27
  export { DatePicker };
@@ -19,7 +19,7 @@ declare const DialogPortal: React.FC<DialogPrimitive.DialogPortalProps>;
19
19
  declare const DialogClose: React.ForwardRefExoticComponent<DialogPrimitive.DialogCloseProps & React.RefAttributes<HTMLButtonElement>>;
20
20
  declare const DialogOverlay: React.ForwardRefExoticComponent<Omit<DialogPrimitive.DialogOverlayProps & React.RefAttributes<HTMLDivElement>, "ref"> & React.RefAttributes<HTMLDivElement>>;
21
21
  declare const contentVariants: (props?: ({
22
- size?: "sm" | "lg" | "default" | "xl" | null | undefined;
22
+ size?: "default" | "sm" | "lg" | "xl" | null | undefined;
23
23
  } & import("class-variance-authority/types").ClassProp) | undefined) => string;
24
24
  export interface DialogContentProps extends React.ComponentPropsWithoutRef<typeof DialogPrimitive.Content>, VariantProps<typeof contentVariants> {
25
25
  size?: 'sm' | 'default' | 'lg' | 'xl';
@@ -0,0 +1,45 @@
1
+ /**
2
+ * [WHO]: EllipsisText — overflow-aware text with optional tooltip disclosure.
3
+ * [FROM]: react, clsx, registry/basic/tooltip.
4
+ * [TO]: sparkdesign package consumers; CLI `add ellipsis-text`; Showcase demos.
5
+ * [HERE]: registry/basic/ellipsis-text.tsx — canonical source for copied and packaged EllipsisText.
6
+ *
7
+ * [PROTOCOL]:
8
+ * 1. Keep this P3 header in sync when the public contract changes.
9
+ * 2. Update module AGENTS.md (P2) and root AGENTS.md (P1) when boundaries change.
10
+ * 3. Follow design tokens and explicit type exports.
11
+ */
12
+ import { type ReactNode, type CSSProperties } from 'react';
13
+ export interface EllipsisTextProps {
14
+ /** Text or inline content to display. */
15
+ children: ReactNode;
16
+ /**
17
+ * Maximum visible lines before truncation.
18
+ * @default 1
19
+ */
20
+ lines?: number;
21
+ /** Extra className for the text node. */
22
+ className?: string;
23
+ /**
24
+ * Tooltip placement when overflow is detected.
25
+ * @default 'top'
26
+ */
27
+ placement?: 'top' | 'bottom' | 'left' | 'right';
28
+ /** Extra className for Tooltip content. */
29
+ tooltipClassName?: string;
30
+ /** Custom tooltip content. Defaults to children. */
31
+ tooltipContent?: ReactNode;
32
+ /**
33
+ * Disable tooltip even when content overflows.
34
+ * @default false
35
+ */
36
+ disabled?: boolean;
37
+ /** Inline style for the text node. */
38
+ style?: CSSProperties;
39
+ /**
40
+ * Rendered text element.
41
+ * @default 'span'
42
+ */
43
+ as?: 'span' | 'div' | 'p';
44
+ }
45
+ export declare const EllipsisText: import("react").ForwardRefExoticComponent<EllipsisTextProps & import("react").RefAttributes<HTMLElement>>;
@@ -0,0 +1,23 @@
1
+ import * as React from "react";
2
+ import * as LabelPrimitive from "@radix-ui/react-label";
3
+ import { type ControllerProps, type FieldPath, type FieldValues } from "react-hook-form";
4
+ declare const Form: <TFieldValues extends FieldValues, TContext = any, TTransformedValues = TFieldValues>(props: import("react-hook-form").FormProviderProps<TFieldValues, TContext, TTransformedValues>) => React.JSX.Element;
5
+ declare function FormField<TFieldValues extends FieldValues = FieldValues, TName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>>({ ...props }: ControllerProps<TFieldValues, TName>): import("react/jsx-runtime").JSX.Element;
6
+ declare function useFormField(): {
7
+ invalid: boolean;
8
+ isDirty: boolean;
9
+ isTouched: boolean;
10
+ isValidating: boolean;
11
+ error?: import("react-hook-form").FieldError;
12
+ id: string;
13
+ name: string;
14
+ formItemId: string;
15
+ formDescriptionId: string;
16
+ formMessageId: string;
17
+ };
18
+ declare const FormItem: React.ForwardRefExoticComponent<React.HTMLAttributes<HTMLDivElement> & React.RefAttributes<HTMLDivElement>>;
19
+ declare const FormLabel: React.ForwardRefExoticComponent<Omit<LabelPrimitive.LabelProps & React.RefAttributes<HTMLLabelElement>, "ref"> & React.RefAttributes<HTMLLabelElement>>;
20
+ declare const FormControl: React.ForwardRefExoticComponent<Omit<import("@radix-ui/react-slot").SlotProps & React.RefAttributes<HTMLElement>, "ref"> & React.RefAttributes<HTMLElement>>;
21
+ declare const FormDescription: React.ForwardRefExoticComponent<React.HTMLAttributes<HTMLParagraphElement> & React.RefAttributes<HTMLParagraphElement>>;
22
+ declare const FormMessage: React.ForwardRefExoticComponent<React.HTMLAttributes<HTMLParagraphElement> & React.RefAttributes<HTMLParagraphElement>>;
23
+ export { useFormField, Form, FormItem, FormLabel, FormControl, FormDescription, FormMessage, FormField, };
@@ -1,12 +1,26 @@
1
1
  import type { ButtonHTMLAttributes, ReactNode } from 'react';
2
2
  import { type VariantProps } from 'class-variance-authority';
3
3
  declare const iconButtonVariants: (props?: ({
4
- variant?: "primary" | "secondary" | "tertiary" | "ghost" | "iconOnly" | null | undefined;
4
+ variant?: "primary" | "secondary" | "tertiary" | "ghost" | "destructive" | "iconOnly" | null | undefined;
5
5
  rounded?: "square" | "pill" | null | undefined;
6
6
  size?: "sm" | "md" | "lg" | null | undefined;
7
7
  } & import("class-variance-authority/types").ClassProp) | undefined) => string;
8
- export interface IconButtonProps extends ButtonHTMLAttributes<HTMLButtonElement>, VariantProps<typeof iconButtonVariants> {
8
+ type IconButtonAccessibleName = {
9
+ 'aria-label': string;
10
+ 'aria-labelledby'?: string;
11
+ title?: string;
12
+ } | {
13
+ 'aria-label'?: string;
14
+ 'aria-labelledby': string;
15
+ title?: string;
16
+ } | {
17
+ 'aria-label'?: string;
18
+ 'aria-labelledby'?: string;
19
+ title: string;
20
+ };
21
+ export type IconButtonProps = Omit<ButtonHTMLAttributes<HTMLButtonElement>, 'aria-label' | 'aria-labelledby' | 'title'> & VariantProps<typeof iconButtonVariants> & IconButtonAccessibleName & {
9
22
  icon: ReactNode;
10
- }
23
+ asChild?: boolean;
24
+ };
11
25
  export declare const IconButton: import("react").ForwardRefExoticComponent<IconButtonProps & import("react").RefAttributes<HTMLButtonElement>>;
12
26
  export { iconButtonVariants };
@@ -12,16 +12,18 @@
12
12
  import * as React from "react";
13
13
  import { type VariantProps } from "class-variance-authority";
14
14
  import { Button } from "./button";
15
+ import { type InputProps } from "./input";
16
+ import { type TextareaProps } from "./textarea";
15
17
  declare function InputGroup({ className, ...props }: React.ComponentProps<"div">): import("react/jsx-runtime").JSX.Element;
16
18
  declare const inputGroupAddonVariants: (props?: ({
17
19
  align?: "inline-end" | "inline-start" | "block-end" | "block-start" | null | undefined;
18
20
  } & import("class-variance-authority/types").ClassProp) | undefined) => string;
19
21
  declare function InputGroupAddon({ className, align, ...props }: React.ComponentProps<"div"> & VariantProps<typeof inputGroupAddonVariants>): import("react/jsx-runtime").JSX.Element;
20
22
  declare const inputGroupButtonVariants: (props?: ({
21
- size?: "sm" | "xs" | "icon-xs" | "icon-sm" | null | undefined;
23
+ size?: "xs" | "sm" | "icon-xs" | "icon-sm" | null | undefined;
22
24
  } & import("class-variance-authority/types").ClassProp) | undefined) => string;
23
25
  declare function InputGroupButton({ className, type, variant, size, ...props }: Omit<React.ComponentProps<typeof Button>, "size"> & VariantProps<typeof inputGroupButtonVariants>): import("react/jsx-runtime").JSX.Element;
24
26
  declare function InputGroupText({ className, ...props }: React.ComponentProps<"span">): import("react/jsx-runtime").JSX.Element;
25
- declare function InputGroupInput({ className, ...props }: React.ComponentProps<"input">): import("react/jsx-runtime").JSX.Element;
26
- declare function InputGroupTextarea({ className, ...props }: React.ComponentProps<"textarea">): import("react/jsx-runtime").JSX.Element;
27
+ declare function InputGroupInput({ className, ...props }: InputProps): import("react/jsx-runtime").JSX.Element;
28
+ declare function InputGroupTextarea({ className, ...props }: TextareaProps): import("react/jsx-runtime").JSX.Element;
27
29
  export { InputGroup, InputGroupAddon, InputGroupButton, InputGroupText, InputGroupInput, InputGroupTextarea, };
@@ -1,6 +1,6 @@
1
1
  /**
2
2
  * [WHO]: Input — accessible text input with token-driven styling.
3
- * [FROM]: React + `@/lib/utils` cn.
3
+ * [FROM]: React + `@/lib/utils` cn + CVA.
4
4
  * [TO]: sparkdesign package consumers; output of CLI `add input` when registered.
5
5
  * [HERE]: registry/basic/input.tsx — Spark Design source; keep aligned with the main library.
6
6
  *
@@ -10,6 +10,11 @@
10
10
  * 3. Follow design tokens and explicit type exports.
11
11
  */
12
12
  import * as React from 'react';
13
- export type InputProps = React.InputHTMLAttributes<HTMLInputElement>;
13
+ import { type VariantProps } from 'class-variance-authority';
14
+ declare const inputVariants: (props?: ({
15
+ size?: "sm" | "md" | "lg" | null | undefined;
16
+ } & import("class-variance-authority/types").ClassProp) | undefined) => string;
17
+ export interface InputProps extends Omit<React.InputHTMLAttributes<HTMLInputElement>, 'size'>, VariantProps<typeof inputVariants> {
18
+ }
14
19
  declare const Input: React.ForwardRefExoticComponent<InputProps & React.RefAttributes<HTMLInputElement>>;
15
- export { Input };
20
+ export { Input, inputVariants };
@@ -4,14 +4,14 @@ import { Separator } from "./separator";
4
4
  declare function ItemGroup({ className, ...props }: React.ComponentProps<"div">): import("react/jsx-runtime").JSX.Element;
5
5
  declare function ItemSeparator({ className, ...props }: React.ComponentProps<typeof Separator>): import("react/jsx-runtime").JSX.Element;
6
6
  declare const itemVariants: (props?: ({
7
- variant?: "outline" | "default" | "muted" | null | undefined;
8
- size?: "sm" | "default" | null | undefined;
7
+ variant?: "default" | "outline" | "muted" | null | undefined;
8
+ size?: "default" | "sm" | null | undefined;
9
9
  } & import("class-variance-authority/types").ClassProp) | undefined) => string;
10
10
  declare function Item({ className, variant, size, asChild, ...props }: React.ComponentProps<"div"> & VariantProps<typeof itemVariants> & {
11
11
  asChild?: boolean;
12
12
  }): import("react/jsx-runtime").JSX.Element;
13
13
  declare const itemMediaVariants: (props?: ({
14
- variant?: "default" | "icon" | "image" | null | undefined;
14
+ variant?: "default" | "image" | "icon" | null | undefined;
15
15
  } & import("class-variance-authority/types").ClassProp) | undefined) => string;
16
16
  declare function ItemMedia({ className, variant, ...props }: React.ComponentProps<"div"> & VariantProps<typeof itemMediaVariants>): import("react/jsx-runtime").JSX.Element;
17
17
  declare function ItemContent({ className, ...props }: React.ComponentProps<"div">): import("react/jsx-runtime").JSX.Element;
@@ -19,61 +19,16 @@ declare const ResizablePanelGroup: React.ForwardRefExoticComponent<ResizablePane
19
19
  export type ResizablePanelProps = PanelProps;
20
20
  declare const ResizablePanel: React.ForwardRefExoticComponent<{
21
21
  className?: string | undefined | undefined;
22
- children?: React.ReactNode | Iterable<React.ReactNode>;
23
- defaultChecked?: boolean | undefined | undefined;
24
- defaultValue?: string | number | readonly string[] | undefined;
25
- suppressContentEditableWarning?: boolean | undefined | undefined;
26
22
  suppressHydrationWarning?: boolean | undefined | undefined;
27
- accessKey?: string | undefined | undefined;
28
- autoCapitalize?: "off" | "none" | "on" | "sentences" | "words" | "characters" | undefined | (string & {}) | undefined;
29
- autoFocus?: boolean | undefined | undefined;
30
- contentEditable?: (boolean | "true" | "false") | "inherit" | "plaintext-only" | undefined;
31
- contextMenu?: string | undefined | undefined;
32
- dir?: string | undefined | undefined;
33
- draggable?: (boolean | "true" | "false") | undefined;
34
- enterKeyHint?: "enter" | "done" | "go" | "next" | "previous" | "search" | "send" | undefined | undefined;
35
- hidden?: boolean | undefined | undefined;
23
+ color?: string | undefined | undefined;
36
24
  id?: string | undefined | undefined;
37
25
  lang?: string | undefined | undefined;
38
26
  nonce?: string | undefined | undefined;
27
+ part?: string | undefined | undefined;
39
28
  slot?: string | undefined | undefined;
40
- spellCheck?: (boolean | "true" | "false") | undefined;
41
29
  style?: React.CSSProperties | undefined;
42
- tabIndex?: number | undefined | undefined;
43
- title?: string | undefined | undefined;
44
- translate?: "yes" | "no" | undefined | undefined;
45
- radioGroup?: string | undefined | undefined;
46
30
  role?: React.AriaRole | undefined;
47
- about?: string | undefined | undefined;
48
- content?: string | undefined | undefined;
49
- datatype?: string | undefined | undefined;
50
- inlist?: any;
51
- prefix?: string | undefined | undefined;
52
- property?: string | undefined | undefined;
53
- rel?: string | undefined | undefined;
54
- resource?: string | undefined | undefined;
55
- rev?: string | undefined | undefined;
56
- typeof?: string | undefined | undefined;
57
- vocab?: string | undefined | undefined;
58
- autoCorrect?: string | undefined | undefined;
59
- autoSave?: string | undefined | undefined;
60
- color?: string | undefined | undefined;
61
- itemProp?: string | undefined | undefined;
62
- itemScope?: boolean | undefined | undefined;
63
- itemType?: string | undefined | undefined;
64
- itemID?: string | undefined | undefined;
65
- itemRef?: string | undefined | undefined;
66
- results?: number | undefined | undefined;
67
- security?: string | undefined | undefined;
68
- unselectable?: "on" | "off" | undefined | undefined;
69
- popover?: "" | "auto" | "manual" | "hint" | undefined | undefined;
70
- popoverTargetAction?: "toggle" | "show" | "hide" | undefined | undefined;
71
- popoverTarget?: string | undefined | undefined;
72
- inert?: boolean | undefined | undefined;
73
- inputMode?: "none" | "text" | "tel" | "url" | "email" | "numeric" | "decimal" | "search" | undefined | undefined;
74
- is?: string | undefined | undefined;
75
- exportparts?: string | undefined | undefined;
76
- part?: string | undefined | undefined;
31
+ tabIndex?: number | undefined | undefined;
77
32
  "aria-activedescendant"?: string | undefined | undefined;
78
33
  "aria-atomic"?: (boolean | "true" | "false") | undefined;
79
34
  "aria-autocomplete"?: "none" | "inline" | "list" | "both" | undefined | undefined;
@@ -127,6 +82,7 @@ declare const ResizablePanel: React.ForwardRefExoticComponent<{
127
82
  "aria-valuemin"?: number | undefined | undefined;
128
83
  "aria-valuenow"?: number | undefined | undefined;
129
84
  "aria-valuetext"?: string | undefined | undefined;
85
+ children?: React.ReactNode | Iterable<React.ReactNode>;
130
86
  dangerouslySetInnerHTML?: {
131
87
  __html: string | TrustedHTML;
132
88
  } | undefined | undefined;
@@ -298,6 +254,50 @@ declare const ResizablePanel: React.ForwardRefExoticComponent<{
298
254
  onTransitionRunCapture?: React.TransitionEventHandler<HTMLDivElement> | undefined;
299
255
  onTransitionStart?: React.TransitionEventHandler<HTMLDivElement> | undefined;
300
256
  onTransitionStartCapture?: React.TransitionEventHandler<HTMLDivElement> | undefined;
257
+ defaultChecked?: boolean | undefined | undefined;
258
+ defaultValue?: string | number | readonly string[] | undefined;
259
+ suppressContentEditableWarning?: boolean | undefined | undefined;
260
+ accessKey?: string | undefined | undefined;
261
+ autoCapitalize?: "off" | "none" | "on" | "sentences" | "words" | "characters" | undefined | (string & {}) | undefined;
262
+ autoFocus?: boolean | undefined | undefined;
263
+ contentEditable?: (boolean | "true" | "false") | "inherit" | "plaintext-only" | undefined;
264
+ contextMenu?: string | undefined | undefined;
265
+ dir?: string | undefined | undefined;
266
+ draggable?: (boolean | "true" | "false") | undefined;
267
+ enterKeyHint?: "enter" | "done" | "go" | "next" | "previous" | "search" | "send" | undefined | undefined;
268
+ hidden?: boolean | undefined | undefined;
269
+ spellCheck?: (boolean | "true" | "false") | undefined;
270
+ title?: string | undefined | undefined;
271
+ translate?: "yes" | "no" | undefined | undefined;
272
+ radioGroup?: string | undefined | undefined;
273
+ about?: string | undefined | undefined;
274
+ content?: string | undefined | undefined;
275
+ datatype?: string | undefined | undefined;
276
+ inlist?: any;
277
+ prefix?: string | undefined | undefined;
278
+ property?: string | undefined | undefined;
279
+ rel?: string | undefined | undefined;
280
+ resource?: string | undefined | undefined;
281
+ rev?: string | undefined | undefined;
282
+ typeof?: string | undefined | undefined;
283
+ vocab?: string | undefined | undefined;
284
+ autoCorrect?: string | undefined | undefined;
285
+ autoSave?: string | undefined | undefined;
286
+ itemProp?: string | undefined | undefined;
287
+ itemScope?: boolean | undefined | undefined;
288
+ itemType?: string | undefined | undefined;
289
+ itemID?: string | undefined | undefined;
290
+ itemRef?: string | undefined | undefined;
291
+ results?: number | undefined | undefined;
292
+ security?: string | undefined | undefined;
293
+ unselectable?: "on" | "off" | undefined | undefined;
294
+ popover?: "" | "auto" | "manual" | "hint" | undefined | undefined;
295
+ popoverTargetAction?: "toggle" | "show" | "hide" | undefined | undefined;
296
+ popoverTarget?: string | undefined | undefined;
297
+ inert?: boolean | undefined | undefined;
298
+ inputMode?: "none" | "text" | "tel" | "url" | "email" | "numeric" | "decimal" | "search" | undefined | undefined;
299
+ is?: string | undefined | undefined;
300
+ exportparts?: string | undefined | undefined;
301
301
  } & {
302
302
  className?: string | undefined;
303
303
  collapsedSize?: number | string | undefined;
@@ -11,11 +11,16 @@
11
11
  */
12
12
  import * as React from 'react';
13
13
  import * as SelectPrimitive from '@radix-ui/react-select';
14
+ import { type VariantProps } from 'class-variance-authority';
14
15
  declare const Select: React.FC<SelectPrimitive.SelectProps>;
15
16
  declare const SelectGroup: React.ForwardRefExoticComponent<SelectPrimitive.SelectGroupProps & React.RefAttributes<HTMLDivElement>>;
16
17
  declare const SelectValue: React.ForwardRefExoticComponent<SelectPrimitive.SelectValueProps & React.RefAttributes<HTMLSpanElement>>;
17
- export interface SelectTriggerProps extends React.ComponentPropsWithoutRef<typeof SelectPrimitive.Trigger> {
18
+ declare const selectTriggerVariants: (props?: ({
19
+ size?: "sm" | "md" | "lg" | null | undefined;
20
+ } & import("class-variance-authority/types").ClassProp) | undefined) => string;
21
+ export interface SelectTriggerProps extends Omit<React.ComponentPropsWithoutRef<typeof SelectPrimitive.Trigger>, 'size'>, VariantProps<typeof selectTriggerVariants> {
18
22
  triggerIcon?: React.ReactNode;
23
+ size?: 'sm' | 'md' | 'lg';
19
24
  }
20
25
  declare const SelectTrigger: React.ForwardRefExoticComponent<SelectTriggerProps & React.RefAttributes<HTMLButtonElement>>;
21
26
  declare const SelectScrollUpButton: React.ForwardRefExoticComponent<Omit<SelectPrimitive.SelectScrollUpButtonProps & React.RefAttributes<HTMLDivElement>, "ref"> & {
@@ -34,4 +39,4 @@ declare const SelectItem: React.ForwardRefExoticComponent<Omit<SelectPrimitive.S
34
39
  itemIndicatorIcon?: React.ReactNode;
35
40
  } & React.RefAttributes<HTMLDivElement>>;
36
41
  declare const SelectSeparator: React.ForwardRefExoticComponent<Omit<SelectPrimitive.SelectSeparatorProps & React.RefAttributes<HTMLDivElement>, "ref"> & React.RefAttributes<HTMLDivElement>>;
37
- export { Select, SelectGroup, SelectValue, SelectTrigger, SelectContent, SelectLabel, SelectItem, SelectSeparator, SelectScrollUpButton, SelectScrollDownButton, };
42
+ export { Select, SelectGroup, SelectValue, SelectTrigger, SelectContent, SelectLabel, SelectItem, SelectSeparator, SelectScrollUpButton, SelectScrollDownButton, selectTriggerVariants, };
@@ -0,0 +1,72 @@
1
+ import * as React from "react";
2
+ import { type VariantProps } from "class-variance-authority";
3
+ import { Button } from "./button";
4
+ import { Input } from "./input";
5
+ import { Separator } from "./separator";
6
+ import { Tooltip } from "./tooltip";
7
+ type SidebarContextValue = {
8
+ state: "expanded" | "collapsed";
9
+ open: boolean;
10
+ setOpen: (open: boolean) => void;
11
+ openMobile: boolean;
12
+ setOpenMobile: (open: boolean) => void;
13
+ isMobile: boolean;
14
+ toggleSidebar: () => void;
15
+ };
16
+ declare function useSidebar(): SidebarContextValue;
17
+ declare function SidebarProvider({ defaultOpen, open: openProp, onOpenChange: setOpenProp, className, style, children, ...props }: React.ComponentProps<"div"> & {
18
+ defaultOpen?: boolean;
19
+ open?: boolean;
20
+ onOpenChange?: (open: boolean) => void;
21
+ }): import("react/jsx-runtime").JSX.Element;
22
+ declare function Sidebar({ side, variant, collapsible, className, children, ...props }: React.ComponentProps<"div"> & {
23
+ side?: "left" | "right";
24
+ variant?: "sidebar" | "floating" | "inset";
25
+ collapsible?: "offcanvas" | "icon" | "none";
26
+ }): import("react/jsx-runtime").JSX.Element;
27
+ declare function SidebarTrigger({ className, onClick, children, ...props }: Omit<React.ComponentProps<typeof Button>, "children" | "variant" | "size"> & {
28
+ children?: React.ReactNode;
29
+ }): import("react/jsx-runtime").JSX.Element;
30
+ declare function SidebarRail({ className, ...props }: React.ComponentProps<"button">): import("react/jsx-runtime").JSX.Element;
31
+ declare function SidebarInset({ className, ...props }: React.ComponentProps<"main">): import("react/jsx-runtime").JSX.Element;
32
+ declare function SidebarInput({ className, ...props }: React.ComponentProps<typeof Input>): import("react/jsx-runtime").JSX.Element;
33
+ declare function SidebarHeader({ className, ...props }: React.ComponentProps<"div">): import("react/jsx-runtime").JSX.Element;
34
+ declare function SidebarFooter({ className, ...props }: React.ComponentProps<"div">): import("react/jsx-runtime").JSX.Element;
35
+ declare function SidebarSeparator({ className, ...props }: React.ComponentProps<typeof Separator>): import("react/jsx-runtime").JSX.Element;
36
+ declare function SidebarContent({ className, ...props }: React.ComponentProps<"div">): import("react/jsx-runtime").JSX.Element;
37
+ declare function SidebarGroup({ className, ...props }: React.ComponentProps<"div">): import("react/jsx-runtime").JSX.Element;
38
+ declare function SidebarGroupLabel({ className, asChild, ...props }: React.ComponentProps<"div"> & {
39
+ asChild?: boolean;
40
+ }): import("react/jsx-runtime").JSX.Element;
41
+ declare function SidebarGroupAction({ className, asChild, ...props }: React.ComponentProps<"button"> & {
42
+ asChild?: boolean;
43
+ }): import("react/jsx-runtime").JSX.Element;
44
+ declare function SidebarGroupContent({ className, ...props }: React.ComponentProps<"div">): import("react/jsx-runtime").JSX.Element;
45
+ declare function SidebarMenu({ className, ...props }: React.ComponentProps<"ul">): import("react/jsx-runtime").JSX.Element;
46
+ declare function SidebarMenuItem({ className, ...props }: React.ComponentProps<"li">): import("react/jsx-runtime").JSX.Element;
47
+ declare const sidebarMenuButtonVariants: (props?: ({
48
+ variant?: "default" | "outline" | null | undefined;
49
+ size?: "default" | "sm" | "lg" | null | undefined;
50
+ } & import("class-variance-authority/types").ClassProp) | undefined) => string;
51
+ declare function SidebarMenuButton({ asChild, isActive, variant, size, tooltip, className, ...props }: React.ComponentProps<"button"> & {
52
+ asChild?: boolean;
53
+ isActive?: boolean;
54
+ tooltip?: string | Omit<React.ComponentProps<typeof Tooltip>, "children">;
55
+ } & VariantProps<typeof sidebarMenuButtonVariants>): import("react/jsx-runtime").JSX.Element;
56
+ declare function SidebarMenuAction({ className, asChild, showOnHover, ...props }: React.ComponentProps<"button"> & {
57
+ asChild?: boolean;
58
+ showOnHover?: boolean;
59
+ }): import("react/jsx-runtime").JSX.Element;
60
+ declare function SidebarMenuBadge({ className, ...props }: React.ComponentProps<"div">): import("react/jsx-runtime").JSX.Element;
61
+ declare function SidebarMenuSkeleton({ className, showIcon, width, ...props }: React.ComponentProps<"div"> & {
62
+ showIcon?: boolean;
63
+ width?: string;
64
+ }): import("react/jsx-runtime").JSX.Element;
65
+ declare function SidebarMenuSub({ className, ...props }: React.ComponentProps<"ul">): import("react/jsx-runtime").JSX.Element;
66
+ declare function SidebarMenuSubItem({ className, ...props }: React.ComponentProps<"li">): import("react/jsx-runtime").JSX.Element;
67
+ declare function SidebarMenuSubButton({ asChild, size, isActive, className, ...props }: React.ComponentProps<"a"> & {
68
+ asChild?: boolean;
69
+ size?: "sm" | "md";
70
+ isActive?: boolean;
71
+ }): import("react/jsx-runtime").JSX.Element;
72
+ export { Sidebar, SidebarContent, SidebarFooter, SidebarGroup, SidebarGroupAction, SidebarGroupContent, SidebarGroupLabel, SidebarHeader, SidebarInput, SidebarInset, SidebarMenu, SidebarMenuAction, SidebarMenuBadge, SidebarMenuButton, SidebarMenuItem, SidebarMenuSkeleton, SidebarMenuSub, SidebarMenuSubButton, SidebarMenuSubItem, SidebarProvider, SidebarRail, SidebarSeparator, SidebarTrigger, sidebarMenuButtonVariants, useSidebar, };
@@ -1,5 +1,9 @@
1
1
  import type { HTMLAttributes } from 'react';
2
- export interface SpinnerProps extends HTMLAttributes<HTMLSpanElement> {
3
- className?: string;
2
+ import { type VariantProps } from 'class-variance-authority';
3
+ declare const spinnerVariants: (props?: ({
4
+ size?: "xs" | "sm" | "md" | "lg" | null | undefined;
5
+ } & import("class-variance-authority/types").ClassProp) | undefined) => string;
6
+ export interface SpinnerProps extends HTMLAttributes<HTMLSpanElement>, VariantProps<typeof spinnerVariants> {
4
7
  }
5
8
  export declare const Spinner: import("react").ForwardRefExoticComponent<SpinnerProps & import("react").RefAttributes<HTMLSpanElement>>;
9
+ export { spinnerVariants };
@@ -13,7 +13,7 @@ import * as React from 'react';
13
13
  import { type VariantProps } from 'class-variance-authority';
14
14
  declare const tagVariants: (props?: ({
15
15
  appearance?: "outline" | "filled" | null | undefined;
16
- color?: "primary" | "link" | "blue" | "lavender" | "orange" | "pink" | "purple" | "teal" | "yellow" | "error" | "warning" | "success" | "info" | "mauve" | "slate" | "sage" | null | undefined;
16
+ color?: "link" | "primary" | "error" | "blue" | "lavender" | "orange" | "pink" | "purple" | "teal" | "yellow" | "warning" | "success" | "info" | "mauve" | "slate" | "sage" | null | undefined;
17
17
  } & import("class-variance-authority/types").ClassProp) | undefined) => string;
18
18
  export interface TagProps extends Omit<React.HTMLAttributes<HTMLSpanElement>, 'color'>, VariantProps<typeof tagVariants> {
19
19
  closable?: boolean;
@@ -1,6 +1,6 @@
1
1
  /**
2
2
  * [WHO]: Textarea — multi-line text input with token-driven styling.
3
- * [FROM]: React + `@/lib/utils` cn.
3
+ * [FROM]: React + `@/lib/utils` cn + CVA.
4
4
  * [TO]: sparkdesign package consumers; output of CLI `add textarea` when registered.
5
5
  * [HERE]: registry/basic/textarea.tsx — Spark Design source; keep aligned with the main library.
6
6
  *
@@ -10,6 +10,12 @@
10
10
  * 3. Follow design tokens and explicit type exports.
11
11
  */
12
12
  import * as React from 'react';
13
- export type TextareaProps = React.TextareaHTMLAttributes<HTMLTextAreaElement>;
13
+ import { type VariantProps } from 'class-variance-authority';
14
+ declare const textareaVariants: (props?: ({
15
+ size?: "sm" | "md" | "lg" | null | undefined;
16
+ } & import("class-variance-authority/types").ClassProp) | undefined) => string;
17
+ export interface TextareaProps extends Omit<React.TextareaHTMLAttributes<HTMLTextAreaElement>, 'size'>, VariantProps<typeof textareaVariants> {
18
+ size?: 'sm' | 'md' | 'lg';
19
+ }
14
20
  declare const Textarea: React.ForwardRefExoticComponent<TextareaProps & React.RefAttributes<HTMLTextAreaElement>>;
15
- export { Textarea };
21
+ export { Textarea, textareaVariants };