dash-ui-kit 1.0.2

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 (42) hide show
  1. package/README.md +91 -0
  2. package/dist/react/components/accordion/index.d.ts +21 -0
  3. package/dist/react/components/avatar/index.d.ts +17 -0
  4. package/dist/react/components/bigNumber/index.d.ts +19 -0
  5. package/dist/react/components/button/index.d.ts +15 -0
  6. package/dist/react/components/copyButton/index.d.ts +10 -0
  7. package/dist/react/components/dashLogo/index.d.ts +28 -0
  8. package/dist/react/components/dateBlock/index.d.ts +21 -0
  9. package/dist/react/components/dialog/index.d.ts +21 -0
  10. package/dist/react/components/heading/index.d.ts +11 -0
  11. package/dist/react/components/icons/index.d.ts +37 -0
  12. package/dist/react/components/identifier/index.d.ts +25 -0
  13. package/dist/react/components/index.d.ts +26 -0
  14. package/dist/react/components/input/index.d.ts +38 -0
  15. package/dist/react/components/list/index.d.ts +13 -0
  16. package/dist/react/components/notActive/index.d.ts +6 -0
  17. package/dist/react/components/overlayMenu/index.d.ts +39 -0
  18. package/dist/react/components/overlaySelect/index.d.ts +40 -0
  19. package/dist/react/components/progressStepBar/index.d.ts +8 -0
  20. package/dist/react/components/select/index.d.ts +47 -0
  21. package/dist/react/components/switch/index.d.ts +56 -0
  22. package/dist/react/components/tabs/index.d.ts +37 -0
  23. package/dist/react/components/text/index.d.ts +31 -0
  24. package/dist/react/components/textarea/index.d.ts +41 -0
  25. package/dist/react/components/timeDelta/index.d.ts +21 -0
  26. package/dist/react/components/transactionStatusIcon/index.d.ts +26 -0
  27. package/dist/react/components/valueCard/index.d.ts +33 -0
  28. package/dist/react/contexts/ThemeContext.d.ts +36 -0
  29. package/dist/react/contexts/index.d.ts +1 -0
  30. package/dist/react/hooks/index.d.ts +1 -0
  31. package/dist/react/hooks/useDebounce.d.ts +42 -0
  32. package/dist/react/index.cjs.js +11175 -0
  33. package/dist/react/index.cjs.js.map +1 -0
  34. package/dist/react/index.d.ts +28 -0
  35. package/dist/react/index.esm.js +11100 -0
  36. package/dist/react/index.esm.js.map +1 -0
  37. package/dist/react/utils/copyToClipboard.d.ts +14 -0
  38. package/dist/react/utils/datetime.d.ts +41 -0
  39. package/dist/react/utils/index.d.ts +2 -0
  40. package/dist/styles.css +1 -0
  41. package/dist/theme.css +1 -0
  42. package/package.json +125 -0
package/README.md ADDED
@@ -0,0 +1,91 @@
1
+ # dash-ui-kit
2
+
3
+ Dash ui kit is a UI component library with TypeScript, TailwindCSS v4, and class-variance-authority (CVA) support.
4
+
5
+ At the moment the library is in its initial stage and is actively developed. More components will be added soon and more detailed documentation will be written.
6
+
7
+ You can see all the created components in the storybook - https://alexeytriplea.github.io/dash-ui-kit/
8
+
9
+ ## ⚡ Quick Start
10
+
11
+ ### Installation
12
+
13
+ ```bash
14
+ npm install AlexeyTripleA/dash-ui-kit
15
+ ```
16
+
17
+ ### Setup with Tailwind CSS v4
18
+
19
+ ```css
20
+ /* main.css */
21
+ @import "tailwindcss";
22
+ @import "dash-ui/theme";
23
+ @import "dash-ui/styles";
24
+ ```
25
+
26
+ ```jsx
27
+ import { Button } from 'dash-ui/react';
28
+
29
+ <Button colorScheme="brand">Button</Button>
30
+ ```
31
+
32
+ ## 📦 Components
33
+
34
+ - **ThemeProvider** - Theme context for dark/light mode
35
+ - **Avatar** - Avatar component that creates unique identicons from usernames with customizable appearance. To create avatars for identities, documents, and other entities, you should use their identifiers.
36
+ - **Button** - Flexible buttons with multiple variants and color schemes
37
+ - **Select** - The component of the form for choosing one element from the set.
38
+ - **Text** - Typography component for text.
39
+ - **ValueCard** - A flexibly customized container.
40
+
41
+
42
+ ## 🎨 Features
43
+
44
+ - ✅ **Tailwind v4**: Modern CSS-first architecture with `@theme` and `@layer`
45
+ - ✅ **Auto-generated**: Theme CSS automatically built from source
46
+ - ✅ **TypeScript**: Full type safety and IntelliSense support
47
+ - ✅ **Lightweight**: Minimal bundle size impact
48
+
49
+ ## 🚀 Usage Examples
50
+
51
+ ### Button Component
52
+
53
+ ```jsx
54
+ import { Button } from 'dash-ui/react';
55
+
56
+ // Color schemes
57
+ <Button colorScheme="brand">Brand Button</Button>
58
+ <Button colorScheme="mint">Mint Button</Button>
59
+ <Button colorScheme="gray">Gray Button</Button>
60
+ <Button colorScheme="red">Red Button</Button>
61
+
62
+ // Variants
63
+ <Button variant="solid">Solid Button</Button>
64
+ <Button variant="outline">Outline Button</Button>
65
+
66
+ // Sizes
67
+ <Button size="sm">Small Button</Button>
68
+ <Button size="md">Medium Button</Button>
69
+ ```
70
+
71
+ ### Text Component
72
+
73
+ ```jsx
74
+ import { Text } from 'dash-ui/react';
75
+
76
+ <Text size="xl" weight="bold" color="blue">
77
+ Styled Text
78
+ </Text>
79
+ ```
80
+
81
+ ## 🔧 Development
82
+
83
+ ```bash
84
+ npm run build # Build library
85
+ npm run test # Run tests
86
+ npm run storybook # Start Storybook
87
+ ```
88
+
89
+ ## License
90
+
91
+ MIT
@@ -0,0 +1,21 @@
1
+ import React from 'react';
2
+ export interface AccordionProps {
3
+ /** The title displayed in the accordion trigger */
4
+ title: string;
5
+ /** Content to display in the accordion */
6
+ children?: React.ReactNode;
7
+ /** Whether the accordion is open by default */
8
+ defaultOpen?: boolean;
9
+ /** Controlled open state */
10
+ open?: boolean;
11
+ /** Callback when the open state changes */
12
+ onOpenChange?: (open: boolean) => void;
13
+ /** Additional CSS classes */
14
+ className?: string;
15
+ }
16
+ /**
17
+ * Accordion component based on Radix UI with smooth animations.
18
+ * Displays custom content in an expandable format.
19
+ */
20
+ export declare const Accordion: React.FC<AccordionProps>;
21
+ export default Accordion;
@@ -0,0 +1,17 @@
1
+ import React from 'react';
2
+ export interface AvatarProps extends Omit<React.ImgHTMLAttributes<HTMLImageElement>, 'src' | 'alt'> {
3
+ /** Username to generate identicon for */
4
+ username: string;
5
+ /** Additional CSS class name */
6
+ className?: string;
7
+ /** Saturation level for the identicon (0-100) */
8
+ saturation?: number;
9
+ /** Lightness level for the identicon (0-100) */
10
+ lightness?: number;
11
+ }
12
+ /**
13
+ * Avatar component that creates unique identicons from usernames
14
+ * with customizable appearance.
15
+ */
16
+ export declare const Avatar: React.FC<AvatarProps>;
17
+ export default Avatar;
@@ -0,0 +1,19 @@
1
+ import React from 'react';
2
+ export type BigNumberVariant = 'space' | 'comma';
3
+ export interface BigNumberProps {
4
+ /** The numeric value (or string) to format. */
5
+ children?: number | string | null;
6
+ /** Use non-breaking space groups or comma groups. */
7
+ variant?: BigNumberVariant;
8
+ /** Extra class names to apply to the wrapper. Use gap-* classes for spacing between groups. */
9
+ className?: string;
10
+ }
11
+ /**
12
+ * Splits a numeric string into groups of three characters for display.
13
+ * Supports two variants:
14
+ * - `space`: groups separated by gap
15
+ * - `comma`: groups separated by commas, with decimal part after `.`
16
+ * Supports light/dark theme.
17
+ */
18
+ export declare const BigNumber: React.FC<BigNumberProps>;
19
+ export default BigNumber;
@@ -0,0 +1,15 @@
1
+ import React from 'react';
2
+ export interface ButtonProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {
3
+ /** Solid or outline style */
4
+ variant?: 'solid' | 'outline';
5
+ /** Color scheme for the button */
6
+ colorScheme?: 'brand' | 'mint' | 'gray' | 'red' | 'lightBlue' | 'lightGray';
7
+ /** Size of the button */
8
+ size?: 'sm' | 'md' | 'xl';
9
+ }
10
+ /**
11
+ * Button with solid or outline style, color schemes, disabled state,
12
+ * press animation, and customizable size. Supports light/dark theme.
13
+ */
14
+ export declare const Button: React.FC<ButtonProps>;
15
+ export default Button;
@@ -0,0 +1,10 @@
1
+ import React from 'react';
2
+ import { CopyResult } from '../../utils/copyToClipboard';
3
+ export interface CopyButtonProps extends Omit<React.ButtonHTMLAttributes<HTMLButtonElement>, 'onCopy'> {
4
+ /** Text to copy into clipboard */
5
+ text: string;
6
+ /** Optional callback that will be called with the copy result */
7
+ onCopy?: (result: CopyResult) => void;
8
+ }
9
+ export declare const CopyButton: React.FC<CopyButtonProps>;
10
+ export default CopyButton;
@@ -0,0 +1,28 @@
1
+ import React from 'react';
2
+ export interface DashLogoProps {
3
+ color?: string;
4
+ size?: number;
5
+ width?: number;
6
+ height?: number;
7
+ className?: string;
8
+ onClick?: () => void;
9
+ containerPadding?: string | number;
10
+ containerSize?: string | number;
11
+ containerClassName?: string;
12
+ }
13
+ /**
14
+ * Dash Logo component with customizable size and color
15
+ * Original aspect ratio: 30:25 (1.2:1)
16
+ *
17
+ * Color can be set via:
18
+ * - color prop (takes precedence)
19
+ * - CSS class with text color (e.g., "text-dash-primary-dark-blue")
20
+ *
21
+ * SVG is wrapped in a container that centers the logo and supports:
22
+ * - containerPadding: padding around the logo
23
+ * - containerSize: width/height of the container
24
+ * - containerClassName: CSS class for the container
25
+ * - minWidth/minHeight: min-content (adapts to logo size)
26
+ */
27
+ export declare const DashLogo: React.FC<DashLogoProps>;
28
+ export default DashLogo;
@@ -0,0 +1,21 @@
1
+ import React from 'react';
2
+ export type DateBlockFormat = 'all' | 'deltaOnly' | 'dateOnly';
3
+ export interface DateBlockProps {
4
+ /** Unix timestamp (ms), Date object, or parsable date string */
5
+ timestamp: number | Date | string;
6
+ /** Display format: full date+delta, delta only, or date only */
7
+ format?: DateBlockFormat;
8
+ /** Include hours and minutes in formatted date */
9
+ showTime?: boolean;
10
+ /** Show a tooltip with relative time */
11
+ showRelativeTooltip?: boolean;
12
+ /** Additional CSS classes for wrapper div */
13
+ className?: string;
14
+ }
15
+ /**
16
+ * DateBlock component displays a date, optional calendar icon,
17
+ * and relative time via TimeDelta. It can also show an optional
18
+ * tooltip with the relative time when hovered. Supports light/dark theme.
19
+ */
20
+ export declare const DateBlock: React.FC<DateBlockProps>;
21
+ export default DateBlock;
@@ -0,0 +1,21 @@
1
+ import React from 'react';
2
+ export interface DialogProps {
3
+ /** Whether the dialog is open */
4
+ open?: boolean;
5
+ /** Callback when dialog open state changes */
6
+ onOpenChange?: (open: boolean) => void;
7
+ /** Dialog title */
8
+ title?: string;
9
+ /** Whether to show the close button */
10
+ showCloseButton?: boolean;
11
+ /** Dialog size */
12
+ size?: 'sm' | 'md' | 'xl';
13
+ /** Dialog content */
14
+ children: React.ReactNode;
15
+ /** Additional className for the content container */
16
+ className?: string;
17
+ /** Custom trigger element (if not controlled) */
18
+ trigger?: React.ReactNode;
19
+ }
20
+ export declare const DashDialog: React.FC<DialogProps>;
21
+ export { DashDialog as Dialog };
@@ -0,0 +1,11 @@
1
+ import React from 'react';
2
+ interface HeadingProps {
3
+ as?: 'h1' | 'h2' | 'h3' | 'h4' | 'h5' | 'h6';
4
+ size?: 'xs' | 'sm' | 'md' | 'lg' | 'xl' | '2xl' | '3xl';
5
+ weight?: 'normal' | 'medium' | 'semibold' | 'bold' | 'extrabold';
6
+ color?: 'black' | 'gray' | 'blue' | 'red' | 'green';
7
+ className?: string;
8
+ children: React.ReactNode;
9
+ }
10
+ export declare const Heading: React.FC<HeadingProps>;
11
+ export type { HeadingProps };
@@ -0,0 +1,37 @@
1
+ import React from 'react';
2
+ export interface IconProps {
3
+ color?: string;
4
+ size?: number;
5
+ className?: string;
6
+ onClick?: () => void;
7
+ }
8
+ export declare const ArrowIcon: React.FC<IconProps>;
9
+ export declare const CopyIcon: React.FC<IconProps>;
10
+ export declare const SuccessIcon: React.FC<IconProps>;
11
+ export declare const ErrorIcon: React.FC<IconProps>;
12
+ export declare const QueuedIcon: React.FC<IconProps>;
13
+ export declare const PooledIcon: React.FC<IconProps>;
14
+ export declare const BroadcastedIcon: React.FC<IconProps>;
15
+ export declare const CalendarIcon: React.FC<IconProps>;
16
+ export declare const EyeOpenIcon: React.FC<IconProps>;
17
+ export declare const EyeClosedIcon: React.FC<IconProps>;
18
+ export declare const CheckIcon: React.FC<IconProps>;
19
+ export declare const KeyIcon: React.FC<IconProps>;
20
+ export declare const ProtectedMessageIcon: React.FC<IconProps>;
21
+ export declare const SmartphoneIcon: React.FC<IconProps>;
22
+ export declare const CrossIcon: React.FC<IconProps>;
23
+ export declare const WalletIcon: React.FC<IconProps>;
24
+ export declare const PlusIcon: React.FC<IconProps>;
25
+ export declare const FilterIcon: React.FC<IconProps>;
26
+ export declare const EditIcon: React.FC<IconProps>;
27
+ export declare const DeleteIcon: React.FC<IconProps>;
28
+ export declare const ChevronIcon: React.FC<IconProps>;
29
+ export declare const BurgerMenuIcon: React.FC<IconProps>;
30
+ export declare const KebabMenuIcon: React.FC<IconProps>;
31
+ export declare const CircleProcessIcon: React.FC<IconProps>;
32
+ export declare const CreditsIcon: React.FC<IconProps>;
33
+ export declare const WebIcon: React.FC<IconProps>;
34
+ export declare const ChainSmallIcon: React.FC<IconProps>;
35
+ export declare const SettingsIcon: React.FC<IconProps>;
36
+ export declare const ShieldSmallIcon: React.FC<IconProps>;
37
+ export declare const QuestionMessageIcon: React.FC<IconProps>;
@@ -0,0 +1,25 @@
1
+ import React from 'react';
2
+ import { VariantProps } from 'class-variance-authority';
3
+ /** CVA for the root container, now with light/dark theme */
4
+ declare const identifier: (props?: ({
5
+ theme?: "light" | "dark" | null | undefined;
6
+ ellipsis?: boolean | null | undefined;
7
+ highlight?: "default" | "both" | "first" | "last" | "dim" | "highlight" | null | undefined;
8
+ } & import("class-variance-authority/dist/types").ClassProp) | undefined) => string;
9
+ type IdentifierVariants = VariantProps<typeof identifier>;
10
+ export interface IdentifierProps extends IdentifierVariants {
11
+ children?: string;
12
+ avatar?: boolean;
13
+ copyButton?: boolean;
14
+ linesAdjustment?: boolean;
15
+ maxLines?: number;
16
+ className?: string;
17
+ middleEllipsis?: boolean;
18
+ edgeChars?: number;
19
+ }
20
+ /**
21
+ * Identifier component shows an ID string with optional highlighting, avatar,
22
+ * copy button, dynamic line adjustment, and multi-line clamp.
23
+ */
24
+ declare const Identifier: React.FC<IdentifierProps>;
25
+ export default Identifier;
@@ -0,0 +1,26 @@
1
+ export { Accordion, type AccordionProps } from './accordion';
2
+ export { Button, type ButtonProps } from './button';
3
+ export { Input, type InputProps } from './input';
4
+ export { Textarea, type TextareaProps } from './textarea';
5
+ export { Text, type TextProps } from './text';
6
+ export { ValueCard, type ValueCardProps } from './valueCard';
7
+ export { Select, type SelectProps, type SelectOption } from './select';
8
+ export { OverlaySelect, type OverlaySelectProps, type OverlaySelectOption } from './overlaySelect';
9
+ export { OverlayMenu, type OverlayMenuProps, type OverlayMenuItem } from './overlayMenu';
10
+ export { Switch, type SwitchProps, type SwitchOption } from './switch';
11
+ export { Avatar, type AvatarProps } from './avatar';
12
+ export { List, type ListProps, type ListItem } from './list';
13
+ export { BigNumber, type BigNumberProps, type BigNumberVariant } from './bigNumber';
14
+ export { default as Identifier, type IdentifierProps } from './identifier';
15
+ export { Heading, type HeadingProps } from './heading';
16
+ export { CopyButton, type CopyButtonProps } from './copyButton';
17
+ export { NotActive, type NotActiveProps } from './notActive';
18
+ export { TimeDelta, type TimeDeltaProps } from './timeDelta';
19
+ export { DateBlock, type DateBlockProps, type DateBlockFormat } from './dateBlock';
20
+ export { TransactionStatusIcon, type TransactionStatusIconProps, type StatusKey } from './transactionStatusIcon';
21
+ export { ProgressStepBar, type ProgressStepBarProps } from './progressStepBar';
22
+ export { DashLogo, type DashLogoProps } from './dashLogo';
23
+ export { Dialog, type DialogProps } from './dialog';
24
+ export { Tabs, type TabsProps, type TabItem } from './tabs';
25
+ export type { TimeDeltaFormat } from '../utils/datetime';
26
+ export { ArrowIcon, CopyIcon, SuccessIcon, ErrorIcon, QueuedIcon, PooledIcon, BroadcastedIcon, CalendarIcon, EyeOpenIcon, EyeClosedIcon, CheckIcon, KeyIcon, ProtectedMessageIcon, SmartphoneIcon, CrossIcon, WalletIcon, PlusIcon, FilterIcon, EditIcon, DeleteIcon, ChevronIcon, BurgerMenuIcon, KebabMenuIcon, CircleProcessIcon, CreditsIcon, WebIcon, ChainSmallIcon, SettingsIcon, ShieldSmallIcon, QuestionMessageIcon } from './icons';
@@ -0,0 +1,38 @@
1
+ import React, { InputHTMLAttributes } from 'react';
2
+ import { VariantProps } from 'class-variance-authority';
3
+ declare const input: (props?: ({
4
+ theme?: "light" | "dark" | null | undefined;
5
+ colorScheme?: "default" | "brand" | "error" | "success" | null | undefined;
6
+ size?: "sm" | "md" | "xl" | null | undefined;
7
+ variant?: "outlined" | null | undefined;
8
+ disabled?: boolean | null | undefined;
9
+ } & import("class-variance-authority/dist/types").ClassProp) | undefined) => string;
10
+ type InputVariants = VariantProps<typeof input>;
11
+ export interface InputProps extends Omit<InputHTMLAttributes<HTMLInputElement>, 'size' | 'prefix'>, Omit<InputVariants, 'theme' | 'disabled'> {
12
+ className?: string;
13
+ error?: boolean;
14
+ success?: boolean;
15
+ prefix?: string | React.ReactNode;
16
+ /**
17
+ * Controls visibility toggle for password inputs. When false, the eye icon is hidden and no extra right padding is applied.
18
+ * Defaults to true.
19
+ */
20
+ showPasswordToggle?: boolean;
21
+ }
22
+ /**
23
+ * A versatile input component that adapts to light/dark theme,
24
+ * supports various color schemes, sizes, variants, and states.
25
+ * For password inputs, includes a toggleable eye icon.
26
+ * Supports prefix text or elements before input content.
27
+ *
28
+ * @example
29
+ * <Input
30
+ * type='password'
31
+ * placeholder='Enter password'
32
+ * colorScheme='brand'
33
+ * size='xl'
34
+ * prefix="https://"
35
+ * />
36
+ */
37
+ export declare const Input: React.FC<InputProps>;
38
+ export default Input;
@@ -0,0 +1,13 @@
1
+ import React from 'react';
2
+ interface ListItem {
3
+ text: string;
4
+ description?: string;
5
+ }
6
+ interface ListProps {
7
+ items: ListItem[];
8
+ iconType?: 'check';
9
+ className?: string;
10
+ size?: 'sm' | 'md' | 'lg';
11
+ }
12
+ export declare const List: React.FC<ListProps>;
13
+ export type { ListProps, ListItem };
@@ -0,0 +1,6 @@
1
+ import React from 'react';
2
+ export interface NotActiveProps extends React.HTMLAttributes<HTMLSpanElement> {
3
+ children?: React.ReactNode;
4
+ className?: string;
5
+ }
6
+ export declare function NotActive({ children, className, ...props }: NotActiveProps): React.JSX.Element;
@@ -0,0 +1,39 @@
1
+ import React from 'react';
2
+ import { VariantProps } from 'class-variance-authority';
3
+ declare const overlayMenuTrigger: (props?: ({
4
+ theme?: "light" | "dark" | null | undefined;
5
+ colorScheme?: "default" | "brand" | "gray" | "lightGray" | "error" | "success" | null | undefined;
6
+ size?: "sm" | "md" | "xl" | null | undefined;
7
+ border?: boolean | null | undefined;
8
+ disabled?: boolean | null | undefined;
9
+ filled?: boolean | null | undefined;
10
+ } & import("class-variance-authority/dist/types").ClassProp) | undefined) => string;
11
+ type OverlayMenuVariants = VariantProps<typeof overlayMenuTrigger>;
12
+ export interface OverlayMenuItem {
13
+ id: string;
14
+ content: React.ReactNode;
15
+ onClick?: () => void;
16
+ disabled?: boolean;
17
+ }
18
+ export interface OverlayMenuProps extends Omit<OverlayMenuVariants, 'theme' | 'disabled'> {
19
+ className?: string;
20
+ error?: boolean;
21
+ success?: boolean;
22
+ border?: boolean;
23
+ filled?: boolean;
24
+ items?: OverlayMenuItem[];
25
+ showArrow?: boolean;
26
+ disabled?: boolean;
27
+ name?: string;
28
+ overlayLabel?: string;
29
+ maxHeight?: string;
30
+ triggerContent?: React.ReactNode;
31
+ placeholder?: string;
32
+ showItemBorders?: boolean;
33
+ }
34
+ /**
35
+ * Overlay menu component that opens above the trigger with overlay positioning.
36
+ * Supports custom content items with onClick handlers.
37
+ */
38
+ export declare const OverlayMenu: React.FC<OverlayMenuProps>;
39
+ export default OverlayMenu;
@@ -0,0 +1,40 @@
1
+ import React from 'react';
2
+ import { VariantProps } from 'class-variance-authority';
3
+ declare const overlaySelectTrigger: (props?: ({
4
+ theme?: "light" | "dark" | null | undefined;
5
+ colorScheme?: "default" | "brand" | "gray" | "lightGray" | "error" | "success" | null | undefined;
6
+ size?: "sm" | "md" | "xl" | null | undefined;
7
+ border?: boolean | null | undefined;
8
+ disabled?: boolean | null | undefined;
9
+ filled?: boolean | null | undefined;
10
+ } & import("class-variance-authority/dist/types").ClassProp) | undefined) => string;
11
+ type OverlaySelectVariants = VariantProps<typeof overlaySelectTrigger>;
12
+ export interface OverlaySelectOption {
13
+ value: string;
14
+ label: string;
15
+ disabled?: boolean;
16
+ content?: React.ReactNode;
17
+ }
18
+ export interface OverlaySelectProps extends Omit<OverlaySelectVariants, 'theme' | 'disabled'> {
19
+ className?: string;
20
+ error?: boolean;
21
+ success?: boolean;
22
+ border?: boolean;
23
+ filled?: boolean;
24
+ options?: OverlaySelectOption[];
25
+ showArrow?: boolean;
26
+ value?: string;
27
+ defaultValue?: string;
28
+ onValueChange?: (value: string) => void;
29
+ placeholder?: string;
30
+ disabled?: boolean;
31
+ name?: string;
32
+ overlayLabel?: string;
33
+ maxHeight?: string;
34
+ }
35
+ /**
36
+ * Overlay select component that opens above the trigger with overlay positioning.
37
+ * Simple select component without additional button functionality.
38
+ */
39
+ export declare const OverlaySelect: React.FC<OverlaySelectProps>;
40
+ export default OverlaySelect;
@@ -0,0 +1,8 @@
1
+ import React from 'react';
2
+ interface ProgressStepBarProps {
3
+ currentStep: number;
4
+ totalSteps: number;
5
+ className?: string;
6
+ }
7
+ export declare function ProgressStepBar({ currentStep, totalSteps, className }: ProgressStepBarProps): React.JSX.Element;
8
+ export type { ProgressStepBarProps };
@@ -0,0 +1,47 @@
1
+ import React from 'react';
2
+ import { VariantProps } from 'class-variance-authority';
3
+ declare const selectTrigger: (props?: ({
4
+ theme?: "light" | "dark" | null | undefined;
5
+ colorScheme?: "default" | "brand" | "error" | "success" | null | undefined;
6
+ size?: "sm" | "md" | "xl" | null | undefined;
7
+ border?: boolean | null | undefined;
8
+ disabled?: boolean | null | undefined;
9
+ } & import("class-variance-authority/dist/types").ClassProp) | undefined) => string;
10
+ type SelectVariants = VariantProps<typeof selectTrigger>;
11
+ export interface SelectOption {
12
+ value: string;
13
+ label: string;
14
+ disabled?: boolean;
15
+ content?: React.ReactNode;
16
+ }
17
+ export interface SelectProps extends Omit<SelectVariants, 'theme' | 'disabled'> {
18
+ className?: string;
19
+ error?: boolean;
20
+ success?: boolean;
21
+ border?: boolean;
22
+ options?: SelectOption[];
23
+ showArrow?: boolean;
24
+ value?: string;
25
+ defaultValue?: string;
26
+ onChange?: (value: string) => void;
27
+ placeholder?: string;
28
+ disabled?: boolean;
29
+ name?: string;
30
+ }
31
+ /**
32
+ * A versatile select component built on Radix UI that adapts to light/dark theme,
33
+ * supports various color schemes, sizes, variants, states, and HTML content in options.
34
+ *
35
+ * @example
36
+ * <Select
37
+ * options={[
38
+ * {value: 'id1', label: 'Option 1'},
39
+ * {value: 'id2', label: 'Option 2', content: <div><strong>Option 2</strong><br/>Description</div>}
40
+ * ]}
41
+ * colorScheme="default"
42
+ * size="xl"
43
+ * border={true}
44
+ * />
45
+ */
46
+ export declare const Select: React.FC<SelectProps>;
47
+ export default Select;
@@ -0,0 +1,56 @@
1
+ import React from 'react';
2
+ import { VariantProps } from 'class-variance-authority';
3
+ declare const switchContainer: (props?: ({
4
+ theme?: "light" | "dark" | null | undefined;
5
+ size?: "sm" | "md" | "xl" | null | undefined;
6
+ disabled?: boolean | null | undefined;
7
+ } & import("class-variance-authority/dist/types").ClassProp) | undefined) => string;
8
+ type SwitchVariants = VariantProps<typeof switchContainer>;
9
+ /**
10
+ * Configuration object for a single switch option.
11
+ *
12
+ * @template T - The type of the value (string or number)
13
+ */
14
+ export interface SwitchOption<T = string | number> {
15
+ /** Display text for the option */
16
+ label: string;
17
+ /** Unique value for the option */
18
+ value: T;
19
+ /** Whether this specific option is disabled */
20
+ disabled?: boolean;
21
+ }
22
+ /**
23
+ * Props for the Switch component.
24
+ *
25
+ * @template T - The type of the option values (string or number)
26
+ */
27
+ export interface SwitchProps<T = string | number> extends Omit<SwitchVariants, 'theme' | 'disabled'> {
28
+ /** Array of options to display */
29
+ options: SwitchOption<T>[];
30
+ /** Currently selected value */
31
+ value: T;
32
+ /** Callback when selection changes */
33
+ onChange: (value: T) => void;
34
+ /** Additional CSS classes */
35
+ className?: string;
36
+ /** Whether the entire switch is disabled */
37
+ disabled?: boolean;
38
+ }
39
+ /**
40
+ * A switch component for selecting between multiple options.
41
+ * Supports individual option disabling, hover states, and responsive sizing.
42
+ * Uses dash design system sizing and theming with automatic light/dark mode.
43
+ * @example
44
+ * // With disabled options
45
+ * <Switch
46
+ * options={[
47
+ * { label: 'Basic', value: 'basic' },
48
+ * { label: 'Pro', value: 'pro', disabled: true },
49
+ * { label: 'Free', value: 'free' }
50
+ * ]}
51
+ * value="basic"
52
+ * onChange={(value) => console.log(value)}
53
+ * />
54
+ */
55
+ export declare function Switch<T = string | number>({ options, value, onChange, size, className, disabled }: SwitchProps<T>): React.JSX.Element;
56
+ export default Switch;
@@ -0,0 +1,37 @@
1
+ import React from 'react';
2
+ export interface TabItem {
3
+ /** Unique identifier for the tab */
4
+ value: string;
5
+ /** Label text to display */
6
+ label: string;
7
+ /** Content to render when tab is active */
8
+ content: React.ReactNode;
9
+ /** Whether this tab is disabled */
10
+ disabled?: boolean;
11
+ }
12
+ export interface TabsProps {
13
+ /** Array of tab items */
14
+ items: TabItem[];
15
+ /** Currently active tab value (controlled) */
16
+ value?: string;
17
+ /** Default active tab value (uncontrolled) */
18
+ defaultValue?: string;
19
+ /** Callback when active tab changes */
20
+ onValueChange?: (value: string) => void;
21
+ /** Size variant */
22
+ size?: 'sm' | 'lg' | 'xl';
23
+ /** Additional CSS classes */
24
+ className?: string;
25
+ /** Additional CSS classes for the tabs list */
26
+ listClassName?: string;
27
+ /** Additional CSS classes for tab triggers */
28
+ triggerClassName?: string;
29
+ /** Additional CSS classes for tab content */
30
+ contentClassName?: string;
31
+ }
32
+ /**
33
+ * Tabs component with sleek underline style matching Figma design.
34
+ * Built on radix-ui with light/dark theme support and keyboard navigation.
35
+ */
36
+ export declare const Tabs: React.FC<TabsProps>;
37
+ export default Tabs;