@neynar/ui 0.1.1 → 0.1.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.
- package/dist/components/ui/accordion.d.ts +1 -25
- package/dist/components/ui/accordion.d.ts.map +1 -1
- package/dist/components/ui/alert-dialog.d.ts +240 -46
- package/dist/components/ui/alert-dialog.d.ts.map +1 -1
- package/dist/components/ui/alert.d.ts +73 -11
- package/dist/components/ui/alert.d.ts.map +1 -1
- package/dist/components/ui/aspect-ratio.d.ts +44 -10
- package/dist/components/ui/aspect-ratio.d.ts.map +1 -1
- package/dist/components/ui/avatar.d.ts +117 -33
- package/dist/components/ui/avatar.d.ts.map +1 -1
- package/dist/components/ui/badge.d.ts +50 -71
- package/dist/components/ui/badge.d.ts.map +1 -1
- package/dist/components/ui/breadcrumb.d.ts +231 -49
- package/dist/components/ui/breadcrumb.d.ts.map +1 -1
- package/dist/components/ui/button.d.ts +189 -71
- package/dist/components/ui/button.d.ts.map +1 -1
- package/dist/components/ui/calendar.d.ts +197 -40
- package/dist/components/ui/calendar.d.ts.map +1 -1
- package/dist/components/ui/card.d.ts +7 -22
- package/dist/components/ui/card.d.ts.map +1 -1
- package/dist/components/ui/carousel.d.ts +369 -99
- package/dist/components/ui/carousel.d.ts.map +1 -1
- package/dist/components/ui/chart.d.ts.map +1 -1
- package/dist/components/ui/checkbox.d.ts +110 -38
- package/dist/components/ui/checkbox.d.ts.map +1 -1
- package/dist/components/ui/collapsible.d.ts +246 -61
- package/dist/components/ui/collapsible.d.ts.map +1 -1
- package/dist/components/ui/combobox.d.ts +207 -159
- package/dist/components/ui/combobox.d.ts.map +1 -1
- package/dist/components/ui/command.d.ts +336 -67
- package/dist/components/ui/command.d.ts.map +1 -1
- package/dist/components/ui/container.d.ts +159 -64
- package/dist/components/ui/container.d.ts.map +1 -1
- package/dist/components/ui/context-menu.d.ts +321 -39
- package/dist/components/ui/context-menu.d.ts.map +1 -1
- package/dist/components/ui/date-picker.d.ts +113 -86
- package/dist/components/ui/date-picker.d.ts.map +1 -1
- package/dist/components/ui/dialog.d.ts +106 -25
- package/dist/components/ui/dialog.d.ts.map +1 -1
- package/dist/components/ui/drawer.d.ts +388 -59
- package/dist/components/ui/drawer.d.ts.map +1 -1
- package/dist/components/ui/dropdown-menu.d.ts +521 -74
- package/dist/components/ui/dropdown-menu.d.ts.map +1 -1
- package/dist/components/ui/empty-state.d.ts +148 -76
- package/dist/components/ui/empty-state.d.ts.map +1 -1
- package/dist/components/ui/hover-card.d.ts +253 -34
- package/dist/components/ui/hover-card.d.ts.map +1 -1
- package/dist/components/ui/input.d.ts +143 -44
- package/dist/components/ui/input.d.ts.map +1 -1
- package/dist/components/ui/label.d.ts +0 -8
- package/dist/components/ui/label.d.ts.map +1 -1
- package/dist/components/ui/menubar.d.ts +288 -46
- package/dist/components/ui/menubar.d.ts.map +1 -1
- package/dist/components/ui/navigation-menu.d.ts +444 -127
- package/dist/components/ui/navigation-menu.d.ts.map +1 -1
- package/dist/components/ui/pagination.d.ts +342 -66
- package/dist/components/ui/pagination.d.ts.map +1 -1
- package/dist/components/ui/popover.d.ts +0 -8
- package/dist/components/ui/popover.d.ts.map +1 -1
- package/dist/components/ui/progress.d.ts +88 -30
- package/dist/components/ui/progress.d.ts.map +1 -1
- package/dist/components/ui/radio-group.d.ts +189 -45
- package/dist/components/ui/radio-group.d.ts.map +1 -1
- package/dist/components/ui/resizable.d.ts +178 -62
- package/dist/components/ui/resizable.d.ts.map +1 -1
- package/dist/components/ui/scroll-area.d.ts +180 -21
- package/dist/components/ui/scroll-area.d.ts.map +1 -1
- package/dist/components/ui/select.d.ts +382 -60
- package/dist/components/ui/select.d.ts.map +1 -1
- package/dist/components/ui/separator.d.ts +52 -39
- package/dist/components/ui/separator.d.ts.map +1 -1
- package/dist/components/ui/sheet.d.ts +144 -27
- package/dist/components/ui/sheet.d.ts.map +1 -1
- package/dist/components/ui/sidebar.d.ts +81 -31
- package/dist/components/ui/sidebar.d.ts.map +1 -1
- package/dist/components/ui/skeleton.d.ts +94 -32
- package/dist/components/ui/skeleton.d.ts.map +1 -1
- package/dist/components/ui/slider.d.ts +37 -31
- package/dist/components/ui/slider.d.ts.map +1 -1
- package/dist/components/ui/sonner.d.ts +280 -46
- package/dist/components/ui/sonner.d.ts.map +1 -1
- package/dist/components/ui/stack.d.ts +289 -148
- package/dist/components/ui/stack.d.ts.map +1 -1
- package/dist/components/ui/stories/aspect-ratio.stories.d.ts +1 -2
- package/dist/components/ui/stories/aspect-ratio.stories.d.ts.map +1 -1
- package/dist/components/ui/stories/container.stories.d.ts +2 -3
- package/dist/components/ui/stories/container.stories.d.ts.map +1 -1
- package/dist/components/ui/stories/empty-state.stories.d.ts +2 -2
- package/dist/components/ui/stories/scroll-area.stories.d.ts +1 -2
- package/dist/components/ui/stories/scroll-area.stories.d.ts.map +1 -1
- package/dist/components/ui/stories/stack.stories.d.ts +1 -1
- package/dist/components/ui/stories/text-field.stories.d.ts +7 -1
- package/dist/components/ui/stories/text-field.stories.d.ts.map +1 -1
- package/dist/components/ui/switch.d.ts +44 -38
- package/dist/components/ui/switch.d.ts.map +1 -1
- package/dist/components/ui/table.d.ts +33 -0
- package/dist/components/ui/table.d.ts.map +1 -1
- package/dist/components/ui/tabs.d.ts +4 -22
- package/dist/components/ui/tabs.d.ts.map +1 -1
- package/dist/components/ui/text-field.d.ts +170 -84
- package/dist/components/ui/text-field.d.ts.map +1 -1
- package/dist/components/ui/textarea.d.ts +106 -29
- package/dist/components/ui/textarea.d.ts.map +1 -1
- package/dist/components/ui/theme-toggle.d.ts +190 -65
- package/dist/components/ui/theme-toggle.d.ts.map +1 -1
- package/dist/components/ui/theme.d.ts +107 -23
- package/dist/components/ui/theme.d.ts.map +1 -1
- package/dist/components/ui/toggle-group.d.ts +143 -67
- package/dist/components/ui/toggle-group.d.ts.map +1 -1
- package/dist/components/ui/toggle.d.ts +118 -30
- package/dist/components/ui/toggle.d.ts.map +1 -1
- package/dist/components/ui/tooltip.d.ts +152 -28
- package/dist/components/ui/tooltip.d.ts.map +1 -1
- package/dist/components/ui/typography.d.ts +452 -134
- package/dist/components/ui/typography.d.ts.map +1 -1
- package/dist/index.js +9388 -8281
- package/dist/index.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/llms.txt +173 -3
- package/package.json +5 -2
- package/src/components/ui/accordion.tsx +112 -27
- package/src/components/ui/alert-dialog.tsx +401 -46
- package/src/components/ui/alert.tsx +114 -11
- package/src/components/ui/aspect-ratio.tsx +69 -14
- package/src/components/ui/avatar.tsx +179 -33
- package/src/components/ui/badge.tsx +74 -75
- package/src/components/ui/breadcrumb.tsx +335 -50
- package/src/components/ui/button.tsx +198 -90
- package/src/components/ui/calendar.tsx +867 -43
- package/src/components/ui/card.tsx +140 -33
- package/src/components/ui/carousel.tsx +529 -98
- package/src/components/ui/chart.tsx +222 -1
- package/src/components/ui/checkbox.tsx +176 -38
- package/src/components/ui/collapsible.tsx +321 -67
- package/src/components/ui/combobox.tsx +284 -83
- package/src/components/ui/command.tsx +527 -67
- package/src/components/ui/container.tsx +217 -65
- package/src/components/ui/context-menu.tsx +716 -51
- package/src/components/ui/date-picker.tsx +228 -38
- package/src/components/ui/dialog.tsx +270 -33
- package/src/components/ui/drawer.tsx +546 -67
- package/src/components/ui/dropdown-menu.tsx +657 -74
- package/src/components/ui/empty-state.tsx +241 -82
- package/src/components/ui/hover-card.tsx +328 -39
- package/src/components/ui/input.tsx +207 -44
- package/src/components/ui/label.tsx +98 -8
- package/src/components/ui/menubar.tsx +587 -54
- package/src/components/ui/navigation-menu.tsx +557 -128
- package/src/components/ui/pagination.tsx +561 -79
- package/src/components/ui/popover.tsx +119 -8
- package/src/components/ui/progress.tsx +131 -29
- package/src/components/ui/radio-group.tsx +260 -51
- package/src/components/ui/resizable.tsx +289 -63
- package/src/components/ui/scroll-area.tsx +377 -66
- package/src/components/ui/select.tsx +545 -60
- package/src/components/ui/separator.tsx +146 -40
- package/src/components/ui/sheet.tsx +348 -31
- package/src/components/ui/sidebar.tsx +471 -29
- package/src/components/ui/skeleton.tsx +114 -32
- package/src/components/ui/slider.tsx +77 -31
- package/src/components/ui/sonner.tsx +574 -46
- package/src/components/ui/stack.tsx +423 -101
- package/src/components/ui/switch.tsx +78 -39
- package/src/components/ui/table.tsx +170 -4
- package/src/components/ui/tabs.tsx +108 -22
- package/src/components/ui/text-field.tsx +226 -81
- package/src/components/ui/textarea.tsx +180 -29
- package/src/components/ui/theme-toggle.tsx +313 -65
- package/src/components/ui/theme.tsx +117 -23
- package/src/components/ui/toggle-group.tsx +280 -69
- package/src/components/ui/toggle.tsx +124 -35
- package/src/components/ui/tooltip.tsx +239 -29
- package/src/components/ui/typography.tsx +1115 -165
|
@@ -1,12 +1,25 @@
|
|
|
1
1
|
import * as React from "react";
|
|
2
|
-
import { type VariantProps } from "class-variance-authority";
|
|
3
2
|
/**
|
|
4
3
|
* Button variant configuration using class-variance-authority
|
|
5
4
|
*
|
|
6
5
|
* Defines all possible visual variants and sizes for the Button component.
|
|
7
|
-
* Uses Tailwind CSS
|
|
6
|
+
* Uses Tailwind CSS with custom CSS properties for theming and comprehensive
|
|
7
|
+
* accessibility features including focus management and ARIA support.
|
|
8
|
+
*
|
|
9
|
+
* @variant default - Primary action button with brand colors and elevated appearance
|
|
10
|
+
* @variant destructive - Dangerous/destructive actions (delete, remove, etc.) with red theming
|
|
11
|
+
* @variant outline - Secondary action with subtle border and background hover states
|
|
12
|
+
* @variant secondary - Alternative secondary styling with muted colors
|
|
13
|
+
* @variant ghost - Minimal styling with hover states, often used in toolbars or menus
|
|
14
|
+
* @variant link - Text-only button styled like a hyperlink with underline on hover
|
|
15
|
+
*
|
|
16
|
+
* @size default - Standard button height (36px) with balanced padding
|
|
17
|
+
* @size sm - Small button height (32px) for compact interfaces
|
|
18
|
+
* @size lg - Large button height (40px) for prominent actions
|
|
19
|
+
* @size icon - Square button (36px × 36px) optimized for icon-only usage
|
|
8
20
|
*
|
|
9
21
|
* @see {@link https://cva.style/docs} - CVA documentation
|
|
22
|
+
* @see {@link https://ui.shadcn.com/docs/components/button} - shadcn/ui button documentation
|
|
10
23
|
* @since 1.0.0
|
|
11
24
|
*/
|
|
12
25
|
declare const buttonVariants: (props?: ({
|
|
@@ -14,60 +27,137 @@ declare const buttonVariants: (props?: ({
|
|
|
14
27
|
size?: "default" | "sm" | "lg" | "icon" | null | undefined;
|
|
15
28
|
} & import("class-variance-authority/types").ClassProp) | undefined) => string;
|
|
16
29
|
/**
|
|
17
|
-
*
|
|
18
|
-
*
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
30
|
+
* Props for Button component (Documentation only - NOT used in component implementation)
|
|
31
|
+
* These types are for documentation generation and should not replace CVA/Radix inferred types
|
|
32
|
+
*/
|
|
33
|
+
type ButtonDocsProps = {
|
|
34
|
+
/** Visual style variant that determines the button's appearance and semantic meaning */
|
|
35
|
+
variant?: "default" | "destructive" | "outline" | "secondary" | "ghost" | "link";
|
|
36
|
+
/** Size variant that controls the button's dimensions and padding */
|
|
37
|
+
size?: "default" | "sm" | "lg" | "icon";
|
|
38
|
+
/**
|
|
39
|
+
* Render the button as its child element instead of a button element.
|
|
40
|
+
* Enables composition patterns for creating button-styled links or other elements.
|
|
41
|
+
* When true, all props are forwarded to the child element via Radix UI Slot.
|
|
42
|
+
*
|
|
43
|
+
* @example
|
|
44
|
+
* ```tsx
|
|
45
|
+
* <Button asChild>
|
|
46
|
+
* <Link href="/dashboard">Dashboard</Link>
|
|
47
|
+
* </Button>
|
|
48
|
+
* ```
|
|
49
|
+
*
|
|
50
|
+
* @default false
|
|
51
|
+
*/
|
|
52
|
+
asChild?: boolean;
|
|
53
|
+
/** Content to display inside the button (text, icons, or React components) */
|
|
54
|
+
children?: React.ReactNode;
|
|
55
|
+
/** Additional CSS classes to apply to the button for custom styling */
|
|
56
|
+
className?: string;
|
|
57
|
+
/** Whether the button is disabled and cannot be interacted with @default false */
|
|
58
|
+
disabled?: boolean;
|
|
59
|
+
/** Button type for form submission behavior @default "button" */
|
|
60
|
+
type?: "button" | "submit" | "reset";
|
|
61
|
+
/** Click handler function called when the button is activated */
|
|
62
|
+
onClick?: React.MouseEventHandler<HTMLButtonElement>;
|
|
63
|
+
/** Focus handler called when the button receives focus */
|
|
64
|
+
onFocus?: React.FocusEventHandler<HTMLButtonElement>;
|
|
65
|
+
/** Blur handler called when the button loses focus */
|
|
66
|
+
onBlur?: React.FocusEventHandler<HTMLButtonElement>;
|
|
67
|
+
/** Mouse enter handler for hover interactions */
|
|
68
|
+
onMouseEnter?: React.MouseEventHandler<HTMLButtonElement>;
|
|
69
|
+
/** Mouse leave handler for hover interactions */
|
|
70
|
+
onMouseLeave?: React.MouseEventHandler<HTMLButtonElement>;
|
|
71
|
+
/** Accessible label for screen readers (required for icon-only buttons) */
|
|
72
|
+
"aria-label"?: string;
|
|
73
|
+
/** Describes the button for screen readers */
|
|
74
|
+
"aria-describedby"?: string;
|
|
75
|
+
/** Indicates invalid state for form validation */
|
|
76
|
+
"aria-invalid"?: boolean | "false" | "true" | "grammar" | "spelling";
|
|
77
|
+
/** Indicates expanded state for disclosure buttons */
|
|
78
|
+
"aria-expanded"?: React.AriaAttributes['aria-expanded'];
|
|
79
|
+
/** Associates button with elements it controls */
|
|
80
|
+
"aria-controls"?: string;
|
|
81
|
+
/** Indicates pressed state for toggle buttons */
|
|
82
|
+
"aria-pressed"?: boolean | "false" | "true" | "mixed";
|
|
83
|
+
/** Tab index for focus management @default 0 */
|
|
84
|
+
tabIndex?: number;
|
|
85
|
+
/** Auto focus the button when component mounts @default false */
|
|
86
|
+
autoFocus?: boolean;
|
|
87
|
+
/** Form attribute to associate button with a form element */
|
|
88
|
+
form?: string;
|
|
89
|
+
/** Form action URL or function for submit buttons */
|
|
90
|
+
formAction?: string | ((formData: FormData) => void | Promise<void>);
|
|
91
|
+
/** Form encoding type for submit buttons */
|
|
92
|
+
formEncType?: string;
|
|
93
|
+
/** Form method for submit buttons */
|
|
94
|
+
formMethod?: string;
|
|
95
|
+
/** Form validation bypass for submit buttons @default false */
|
|
96
|
+
formNoValidate?: boolean;
|
|
97
|
+
/** Form target for submit buttons */
|
|
98
|
+
formTarget?: string;
|
|
99
|
+
/** Button name for form submission */
|
|
100
|
+
name?: string;
|
|
101
|
+
/** Button value for form submission */
|
|
102
|
+
value?: string | ReadonlyArray<string> | number;
|
|
103
|
+
} & React.ButtonHTMLAttributes<HTMLButtonElement> & {
|
|
104
|
+
/** Ref to access the button element */
|
|
105
|
+
ref?: React.Ref<HTMLButtonElement>;
|
|
106
|
+
};
|
|
107
|
+
/**
|
|
108
|
+
* Button - A versatile, accessible button component with multiple style variants
|
|
24
109
|
*
|
|
25
|
-
*
|
|
26
|
-
*
|
|
27
|
-
*
|
|
28
|
-
*
|
|
29
|
-
* <Button>Click me</Button>
|
|
30
|
-
* ```
|
|
110
|
+
* A fundamental UI element built on Radix UI's Slot primitive that supports extensive
|
|
111
|
+
* customization through variants, composition patterns, and comprehensive accessibility
|
|
112
|
+
* features. The component automatically handles icon styling, focus management, form
|
|
113
|
+
* integration, and can be rendered as other elements using the asChild pattern.
|
|
31
114
|
*
|
|
32
115
|
* @example
|
|
33
116
|
* ```tsx
|
|
34
|
-
* //
|
|
35
|
-
* <Button
|
|
36
|
-
* <Button variant="destructive"
|
|
37
|
-
* <Button variant="
|
|
117
|
+
* // Basic usage with different variants
|
|
118
|
+
* <Button>Default Button</Button>
|
|
119
|
+
* <Button variant="destructive">Delete Item</Button>
|
|
120
|
+
* <Button variant="outline" size="lg">Large Outline</Button>
|
|
121
|
+
* <Button variant="ghost" size="sm">Small Ghost</Button>
|
|
122
|
+
* <Button variant="link">Link Button</Button>
|
|
38
123
|
* ```
|
|
39
124
|
*
|
|
40
125
|
* @example
|
|
41
126
|
* ```tsx
|
|
42
|
-
* //
|
|
43
|
-
* import { Download, ArrowRight, Plus } from "lucide-react";
|
|
127
|
+
* // Icon usage (automatically styled with proper spacing)
|
|
128
|
+
* import { Download, ArrowRight, Plus, Trash2 } from "lucide-react";
|
|
44
129
|
*
|
|
45
130
|
* <Button>
|
|
46
|
-
* <Download /> Download File
|
|
131
|
+
* <Download className="mr-2" /> Download File
|
|
47
132
|
* </Button>
|
|
48
133
|
*
|
|
49
|
-
* <Button>
|
|
50
|
-
* Continue <ArrowRight />
|
|
134
|
+
* <Button variant="outline">
|
|
135
|
+
* Continue <ArrowRight className="ml-2" />
|
|
51
136
|
* </Button>
|
|
52
137
|
*
|
|
53
|
-
* // Icon-only button
|
|
54
|
-
* <Button size="icon" aria-label="Add item">
|
|
138
|
+
* // Icon-only button (always include aria-label)
|
|
139
|
+
* <Button size="icon" aria-label="Add new item">
|
|
55
140
|
* <Plus />
|
|
56
141
|
* </Button>
|
|
142
|
+
*
|
|
143
|
+
* <Button size="icon" variant="destructive" aria-label="Delete item">
|
|
144
|
+
* <Trash2 />
|
|
145
|
+
* </Button>
|
|
57
146
|
* ```
|
|
58
147
|
*
|
|
59
148
|
* @example
|
|
60
149
|
* ```tsx
|
|
61
|
-
* //
|
|
150
|
+
* // Composition with asChild (render as different elements)
|
|
62
151
|
* import Link from "next/link";
|
|
152
|
+
* import { ExternalLink } from "lucide-react";
|
|
63
153
|
*
|
|
64
154
|
* <Button asChild>
|
|
65
155
|
* <Link href="/dashboard">Go to Dashboard</Link>
|
|
66
156
|
* </Button>
|
|
67
157
|
*
|
|
68
158
|
* <Button asChild variant="outline">
|
|
69
|
-
* <a href="https://example.com" target="_blank" rel="noopener">
|
|
70
|
-
* External Link
|
|
159
|
+
* <a href="https://example.com" target="_blank" rel="noopener noreferrer">
|
|
160
|
+
* External Link <ExternalLink className="ml-2 h-4 w-4" />
|
|
71
161
|
* </a>
|
|
72
162
|
* </Button>
|
|
73
163
|
* ```
|
|
@@ -75,55 +165,83 @@ declare const buttonVariants: (props?: ({
|
|
|
75
165
|
* @example
|
|
76
166
|
* ```tsx
|
|
77
167
|
* // Form integration and states
|
|
78
|
-
* <Button disabled>
|
|
79
|
-
*
|
|
80
|
-
*
|
|
81
|
-
*
|
|
82
|
-
*
|
|
83
|
-
*
|
|
84
|
-
*
|
|
85
|
-
*
|
|
168
|
+
* <Button type="submit" disabled={isSubmitting}>
|
|
169
|
+
* {isSubmitting ? "Submitting..." : "Submit Form"}
|
|
170
|
+
* </Button>
|
|
171
|
+
*
|
|
172
|
+
* <Button
|
|
173
|
+
* variant="destructive"
|
|
174
|
+
* onClick={() => handleDelete()}
|
|
175
|
+
* aria-describedby="delete-warning"
|
|
176
|
+
* >
|
|
177
|
+
* Delete Account
|
|
178
|
+
* </Button>
|
|
179
|
+
* <p id="delete-warning" className="sr-only">
|
|
180
|
+
* This action cannot be undone
|
|
181
|
+
* </p>
|
|
182
|
+
*
|
|
183
|
+
* // Toggle button with pressed state
|
|
184
|
+
* <Button
|
|
185
|
+
* variant="outline"
|
|
186
|
+
* aria-pressed={isToggled}
|
|
187
|
+
* onClick={() => setIsToggled(!isToggled)}
|
|
188
|
+
* >
|
|
189
|
+
* {isToggled ? "Enabled" : "Disabled"}
|
|
190
|
+
* </Button>
|
|
191
|
+
* ```
|
|
192
|
+
*
|
|
193
|
+
* @example
|
|
194
|
+
* ```tsx
|
|
195
|
+
* // Loading states and advanced usage
|
|
196
|
+
* import { Loader2, Save } from "lucide-react";
|
|
197
|
+
*
|
|
198
|
+
* <Button disabled={isLoading}>
|
|
199
|
+
* {isLoading && <Loader2 className="mr-2 h-4 w-4 animate-spin" />}
|
|
200
|
+
* {isLoading ? "Saving..." : "Save Changes"}
|
|
201
|
+
* </Button>
|
|
202
|
+
*
|
|
203
|
+
* // With custom styling
|
|
204
|
+
* <Button
|
|
205
|
+
* className="bg-gradient-to-r from-purple-500 to-pink-500 hover:from-purple-600 hover:to-pink-600"
|
|
206
|
+
* size="lg"
|
|
207
|
+
* >
|
|
208
|
+
* Gradient Button
|
|
86
209
|
* </Button>
|
|
87
210
|
* ```
|
|
88
211
|
*
|
|
89
212
|
* @accessibility
|
|
90
|
-
* -
|
|
91
|
-
* -
|
|
92
|
-
* - Focus visible
|
|
93
|
-
* -
|
|
94
|
-
* -
|
|
95
|
-
* -
|
|
96
|
-
* -
|
|
97
|
-
* -
|
|
98
|
-
*
|
|
99
|
-
*
|
|
100
|
-
*
|
|
213
|
+
* - Full keyboard support (Enter/Space activation, Tab navigation)
|
|
214
|
+
* - ARIA attributes for screen readers (role="button" implicit)
|
|
215
|
+
* - Focus management with visible focus indicators (3px ring)
|
|
216
|
+
* - Disabled state properly communicated to assistive technologies
|
|
217
|
+
* - Support for ARIA states (pressed, expanded, invalid, controls)
|
|
218
|
+
* - Icon-only buttons require aria-label for screen reader users
|
|
219
|
+
* - Form integration with proper submit/reset behavior
|
|
220
|
+
* - High contrast focus indicators that meet WCAG 2.1 AA standards
|
|
221
|
+
* - Respects user's reduced motion preferences in transitions
|
|
222
|
+
* - When using asChild, accessibility is inherited from the child element
|
|
223
|
+
*
|
|
224
|
+
* @variant default - Primary action button with brand colors and subtle shadow
|
|
225
|
+
* @variant destructive - For dangerous actions (delete, remove) with red theming
|
|
226
|
+
* @variant outline - Secondary actions with border and subtle background on hover
|
|
227
|
+
* @variant secondary - Alternative styling with muted background colors
|
|
228
|
+
* @variant ghost - Minimal appearance with hover states, ideal for toolbars
|
|
229
|
+
* @variant link - Appears as a text link with underline on hover
|
|
230
|
+
*
|
|
231
|
+
* @size default - Standard height (36px) suitable for most interfaces
|
|
232
|
+
* @size sm - Compact height (32px) for dense layouts or secondary actions
|
|
233
|
+
* @size lg - Large height (40px) for prominent primary actions
|
|
234
|
+
* @size icon - Square (36px × 36px) optimized for single icons
|
|
235
|
+
*
|
|
236
|
+
* @see {@link buttonVariants} CVA configuration with all styling variants
|
|
237
|
+
* @see {@link https://ui.shadcn.com/docs/components/button} shadcn/ui Button documentation
|
|
238
|
+
* @see {@link https://www.radix-ui.com/primitives/docs/utilities/slot} Radix UI Slot for composition patterns
|
|
239
|
+
* @see {@link https://www.w3.org/WAI/ARIA/apg/patterns/button/} WAI-ARIA Button Pattern
|
|
101
240
|
* @since 1.0.0
|
|
102
241
|
*/
|
|
103
|
-
|
|
104
|
-
* Button component props type
|
|
105
|
-
*
|
|
106
|
-
* Extends all standard HTML button attributes with additional variant and composition props.
|
|
107
|
-
*/
|
|
108
|
-
type ButtonProps = React.ComponentProps<"button"> & VariantProps<typeof buttonVariants> & {
|
|
109
|
-
/**
|
|
110
|
-
* If true, the button will render its child element instead of a button element.
|
|
111
|
-
* This enables composition patterns like turning links into buttons.
|
|
112
|
-
*
|
|
113
|
-
* @example
|
|
114
|
-
* ```tsx
|
|
115
|
-
* <Button asChild>
|
|
116
|
-
* <Link href="/dashboard">Dashboard</Link>
|
|
117
|
-
* </Button>
|
|
118
|
-
* ```
|
|
119
|
-
*
|
|
120
|
-
* @default false
|
|
121
|
-
*/
|
|
122
|
-
asChild?: boolean;
|
|
123
|
-
};
|
|
124
|
-
declare function Button({ className, variant, size, asChild, ...props }: ButtonProps): import("react/jsx-runtime").JSX.Element;
|
|
242
|
+
declare function Button({ className, variant, size, asChild, ...props }: ButtonDocsProps): import("react/jsx-runtime").JSX.Element;
|
|
125
243
|
declare namespace Button {
|
|
126
244
|
var displayName: string;
|
|
127
245
|
}
|
|
128
|
-
export { Button, buttonVariants
|
|
246
|
+
export { Button, buttonVariants };
|
|
129
247
|
//# sourceMappingURL=button.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"button.d.ts","sourceRoot":"","sources":["../../../src/components/ui/button.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"button.d.ts","sourceRoot":"","sources":["../../../src/components/ui/button.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,16 @@
|
|
|
1
1
|
import * as React from "react";
|
|
2
2
|
import { DayButton, DayPicker } from "react-day-picker";
|
|
3
|
-
|
|
3
|
+
/**
|
|
4
|
+
* Actual props type used by the Calendar component implementation
|
|
5
|
+
* Uses react-day-picker's inferred types for perfect compatibility
|
|
6
|
+
*/
|
|
7
|
+
type CalendarProps = React.ComponentProps<typeof DayPicker> & {
|
|
8
|
+
/**
|
|
9
|
+
* Button variant for navigation arrows and interactive elements
|
|
10
|
+
* @default "ghost"
|
|
11
|
+
*/
|
|
12
|
+
buttonVariant?: "default" | "destructive" | "outline" | "secondary" | "ghost" | "link";
|
|
13
|
+
};
|
|
4
14
|
/**
|
|
5
15
|
* Calendar - A comprehensive date selection calendar component
|
|
6
16
|
*
|
|
@@ -8,6 +18,10 @@ import { Button } from "@/components/ui/button";
|
|
|
8
18
|
* date selection with extensive customization options. Supports single dates, date ranges,
|
|
9
19
|
* multiple dates, and custom validation rules with built-in accessibility features.
|
|
10
20
|
*
|
|
21
|
+
* Built on the powerful react-day-picker library, this component provides a complete
|
|
22
|
+
* calendar interface with advanced features like custom formatters, modifiers, disabled
|
|
23
|
+
* dates, localization, and extensive styling options.
|
|
24
|
+
*
|
|
11
25
|
* @component
|
|
12
26
|
*
|
|
13
27
|
* @example Basic single date selection
|
|
@@ -35,7 +49,7 @@ import { Button } from "@/components/ui/button";
|
|
|
35
49
|
* />
|
|
36
50
|
* ```
|
|
37
51
|
*
|
|
38
|
-
* @example Multiple date selection
|
|
52
|
+
* @example Multiple date selection with limits
|
|
39
53
|
* ```tsx
|
|
40
54
|
* const [dates, setDates] = useState<Date[] | undefined>()
|
|
41
55
|
*
|
|
@@ -43,6 +57,8 @@ import { Button } from "@/components/ui/button";
|
|
|
43
57
|
* mode="multiple"
|
|
44
58
|
* selected={dates}
|
|
45
59
|
* onSelect={setDates}
|
|
60
|
+
* min={2} // Minimum 2 dates required
|
|
61
|
+
* max={5} // Maximum 5 dates allowed
|
|
46
62
|
* className="rounded-md border"
|
|
47
63
|
* />
|
|
48
64
|
* ```
|
|
@@ -62,7 +78,7 @@ import { Button } from "@/components/ui/button";
|
|
|
62
78
|
* />
|
|
63
79
|
* ```
|
|
64
80
|
*
|
|
65
|
-
* @example Calendar with month/year dropdowns
|
|
81
|
+
* @example Calendar with month/year dropdowns and navigation limits
|
|
66
82
|
* ```tsx
|
|
67
83
|
* <Calendar
|
|
68
84
|
* mode="single"
|
|
@@ -71,57 +87,197 @@ import { Button } from "@/components/ui/button";
|
|
|
71
87
|
* onSelect={setDate}
|
|
72
88
|
* fromYear={2020}
|
|
73
89
|
* toYear={2030}
|
|
90
|
+
* startMonth={new Date(2023, 0)} // Don't go before Jan 2023
|
|
91
|
+
* endMonth={new Date(2025, 11)} // Don't go past Dec 2025
|
|
92
|
+
* className="rounded-md border"
|
|
93
|
+
* />
|
|
94
|
+
* ```
|
|
95
|
+
*
|
|
96
|
+
* @example International calendar with custom locale
|
|
97
|
+
* ```tsx
|
|
98
|
+
* import { es } from 'date-fns/locale'
|
|
99
|
+
*
|
|
100
|
+
* <Calendar
|
|
101
|
+
* mode="single"
|
|
102
|
+
* selected={date}
|
|
103
|
+
* onSelect={setDate}
|
|
104
|
+
* locale={es} // Spanish locale
|
|
105
|
+
* weekStartsOn={1} // Start weeks on Monday
|
|
106
|
+
* dir="ltr"
|
|
74
107
|
* className="rounded-md border"
|
|
75
108
|
* />
|
|
76
109
|
* ```
|
|
77
110
|
*
|
|
111
|
+
* @example Calendar with custom formatters and styling
|
|
112
|
+
* ```tsx
|
|
113
|
+
* <Calendar
|
|
114
|
+
* mode="single"
|
|
115
|
+
* showWeekNumber
|
|
116
|
+
* formatters={{
|
|
117
|
+
* formatDay: (date) => date.getDate().toString(),
|
|
118
|
+
* formatWeekNumber: (weekNumber) => `W${weekNumber}`,
|
|
119
|
+
* formatMonthCaption: (date) =>
|
|
120
|
+
* date.toLocaleDateString('en', { month: 'long', year: 'numeric' })
|
|
121
|
+
* }}
|
|
122
|
+
* classNames={{
|
|
123
|
+
* day: "hover:bg-blue-100 transition-colors",
|
|
124
|
+
* selected: "bg-blue-500 text-white font-semibold",
|
|
125
|
+
* today: "bg-blue-100 font-bold"
|
|
126
|
+
* }}
|
|
127
|
+
* className="rounded-lg border-2 shadow-lg"
|
|
128
|
+
* />
|
|
129
|
+
* ```
|
|
130
|
+
*
|
|
131
|
+
* @example Calendar with custom modifiers and event handling
|
|
132
|
+
* ```tsx
|
|
133
|
+
* const holidays = [new Date(2024, 11, 25), new Date(2024, 0, 1)]
|
|
134
|
+
* const weekends = { dayOfWeek: [0, 6] }
|
|
135
|
+
*
|
|
136
|
+
* <Calendar
|
|
137
|
+
* mode="single"
|
|
138
|
+
* modifiers={{
|
|
139
|
+
* holiday: holidays,
|
|
140
|
+
* weekend: weekends,
|
|
141
|
+
* available: (date) => availableDates.includes(date.toDateString())
|
|
142
|
+
* }}
|
|
143
|
+
* onDayClick={(day, modifiers) => {
|
|
144
|
+
* if (modifiers.holiday) {
|
|
145
|
+
* alert('Holiday selected!')
|
|
146
|
+
* }
|
|
147
|
+
* }}
|
|
148
|
+
* onWeekNumberClick={(weekNumber, dates) => {
|
|
149
|
+
* console.log(`Week ${weekNumber} contains:`, dates)
|
|
150
|
+
* }}
|
|
151
|
+
* classNames={{
|
|
152
|
+
* holiday: "bg-red-100 text-red-800",
|
|
153
|
+
* weekend: "bg-gray-100 text-gray-600",
|
|
154
|
+
* available: "bg-green-100 text-green-800"
|
|
155
|
+
* }}
|
|
156
|
+
* />
|
|
157
|
+
* ```
|
|
158
|
+
*
|
|
159
|
+
* @example Calendar with custom components
|
|
160
|
+
* ```tsx
|
|
161
|
+
* <Calendar
|
|
162
|
+
* mode="single"
|
|
163
|
+
* components={{
|
|
164
|
+
* DayContent: ({ date }) => (
|
|
165
|
+
* <div className="relative">
|
|
166
|
+
* {date.getDate()}
|
|
167
|
+
* {date.getDate() === 1 && (
|
|
168
|
+
* <span className="absolute -top-1 -right-1 text-xs">🎉</span>
|
|
169
|
+
* )}
|
|
170
|
+
* </div>
|
|
171
|
+
* ),
|
|
172
|
+
* MonthCaption: ({ displayMonth }) => (
|
|
173
|
+
* <div className="flex items-center justify-center py-2">
|
|
174
|
+
* <h2 className="text-lg font-bold text-blue-600">
|
|
175
|
+
* {displayMonth.toLocaleDateString('en', {
|
|
176
|
+
* month: 'long',
|
|
177
|
+
* year: 'numeric'
|
|
178
|
+
* })}
|
|
179
|
+
* </h2>
|
|
180
|
+
* </div>
|
|
181
|
+
* )
|
|
182
|
+
* }}
|
|
183
|
+
* />
|
|
184
|
+
* ```
|
|
185
|
+
*
|
|
186
|
+
* @example Advanced range selection with custom styling
|
|
187
|
+
* ```tsx
|
|
188
|
+
* const [dateRange, setDateRange] = useState<DateRange>()
|
|
189
|
+
*
|
|
190
|
+
* <Calendar
|
|
191
|
+
* mode="range"
|
|
192
|
+
* selected={dateRange}
|
|
193
|
+
* onSelect={setDateRange}
|
|
194
|
+
* numberOfMonths={2}
|
|
195
|
+
* showOutsideDays={false}
|
|
196
|
+
* fixedWeeks
|
|
197
|
+
* classNames={{
|
|
198
|
+
* range_start: "bg-blue-500 text-white rounded-l-md",
|
|
199
|
+
* range_end: "bg-blue-500 text-white rounded-r-md",
|
|
200
|
+
* range_middle: "bg-blue-100 text-blue-900",
|
|
201
|
+
* selected: "bg-blue-500 text-white"
|
|
202
|
+
* }}
|
|
203
|
+
* footer={dateRange && (
|
|
204
|
+
* <div className="p-3 border-t">
|
|
205
|
+
* <p className="text-sm text-gray-600">
|
|
206
|
+
* {dateRange.from && `From: ${dateRange.from.toLocaleDateString()}`}
|
|
207
|
+
* {dateRange.to && ` • To: ${dateRange.to.toLocaleDateString()}`}
|
|
208
|
+
* {dateRange.from && dateRange.to && (
|
|
209
|
+
* ` • ${Math.ceil((dateRange.to.getTime() - dateRange.from.getTime()) / (1000 * 60 * 60 * 24) + 1)} days`
|
|
210
|
+
* )}
|
|
211
|
+
* </p>
|
|
212
|
+
* </div>
|
|
213
|
+
* )}
|
|
214
|
+
* />
|
|
215
|
+
* ```
|
|
216
|
+
*
|
|
78
217
|
* @features
|
|
79
|
-
* - **Selection
|
|
80
|
-
* - **Navigation**: Month/year navigation with keyboard support
|
|
81
|
-
* - **Validation**: Flexible date disabling
|
|
82
|
-
* - **Customization**:
|
|
83
|
-
* - **Internationalization**:
|
|
84
|
-
* - **Accessibility**:
|
|
218
|
+
* - **Selection Modes**: Single date, date ranges, multiple dates, or no selection
|
|
219
|
+
* - **Navigation**: Month/year navigation with buttons or dropdowns, keyboard support
|
|
220
|
+
* - **Validation**: Flexible date disabling, custom matchers, min/max constraints
|
|
221
|
+
* - **Customization**: Custom formatters, modifiers, components, styling
|
|
222
|
+
* - **Internationalization**: Full locale support, RTL languages, custom week start
|
|
223
|
+
* - **Accessibility**: WCAG 2.1 AA compliant, screen reader support, keyboard navigation
|
|
224
|
+
* - **Performance**: Optimized rendering, minimal re-renders, efficient DOM updates
|
|
85
225
|
*
|
|
86
226
|
* @accessibility
|
|
87
|
-
* - **Keyboard Navigation**:
|
|
88
|
-
*
|
|
89
|
-
*
|
|
90
|
-
*
|
|
91
|
-
*
|
|
227
|
+
* - **Keyboard Navigation**:
|
|
228
|
+
* - Arrow keys navigate between dates
|
|
229
|
+
* - Page Up/Down navigate months
|
|
230
|
+
* - Home/End navigate to start/end of week
|
|
231
|
+
* - Ctrl+Page Up/Down navigate years
|
|
232
|
+
* - Enter/Space select dates
|
|
233
|
+
* - Escape closes popover/dropdown states
|
|
234
|
+
* - **Screen Reader Support**:
|
|
235
|
+
* - Comprehensive ARIA labels and descriptions
|
|
236
|
+
* - Live region announcements for month changes
|
|
237
|
+
* - Proper role and state management
|
|
238
|
+
* - Selected dates and ranges announced clearly
|
|
239
|
+
* - **Focus Management**:
|
|
240
|
+
* - Visible focus indicators with 3px ring
|
|
241
|
+
* - Focus restoration after month navigation
|
|
242
|
+
* - Logical tab order through interactive elements
|
|
243
|
+
* - Trapped focus in dropdown modes
|
|
244
|
+
* - **Standards Compliance**:
|
|
245
|
+
* - WCAG 2.1 AA color contrast requirements
|
|
246
|
+
* - Proper heading structure and landmarks
|
|
247
|
+
* - Compatible with screen readers and assistive technology
|
|
248
|
+
* - **RTL Support**:
|
|
249
|
+
* - Right-to-left text direction support
|
|
250
|
+
* - Mirrored navigation button orientation
|
|
251
|
+
* - Locale-aware date formatting
|
|
92
252
|
*
|
|
93
253
|
* @performance
|
|
94
|
-
*
|
|
95
|
-
*
|
|
254
|
+
* - **Optimized Rendering**: Minimal re-renders through memoization and efficient state management
|
|
255
|
+
* - **Large Date Ranges**: Efficiently handles calendars spanning multiple months and years
|
|
256
|
+
* - **Event Handling**: Debounced and optimized event handlers for smooth interactions
|
|
257
|
+
* - **Memory Management**: Proper cleanup and garbage collection for long-running applications
|
|
258
|
+
* - **Bundle Size**: Tree-shakeable with minimal runtime overhead
|
|
96
259
|
*
|
|
97
260
|
* @styling
|
|
98
|
-
*
|
|
99
|
-
*
|
|
261
|
+
* - **Design System Integration**: Built with shadcn/ui design tokens and Tailwind CSS
|
|
262
|
+
* - **CSS Custom Properties**: Supports `--cell-size` and other CSS variables for sizing
|
|
263
|
+
* - **Theming**: Dark mode support and custom theme integration
|
|
264
|
+
* - **Responsive**: Mobile-friendly with touch interactions and responsive layouts
|
|
265
|
+
* - **Customizable**: Override any visual aspect through classNames, components, or CSS
|
|
100
266
|
*
|
|
101
|
-
* @
|
|
102
|
-
*
|
|
103
|
-
*
|
|
267
|
+
* @browser-support
|
|
268
|
+
* - **Modern Browsers**: Chrome 91+, Firefox 90+, Safari 15+, Edge 91+
|
|
269
|
+
* - **Mobile**: iOS Safari 15+, Android Chrome 91+
|
|
270
|
+
* - **Accessibility**: Compatible with NVDA, JAWS, VoiceOver screen readers
|
|
271
|
+
*
|
|
272
|
+
* @see {@link CalendarDayButton} Individual day button component with custom styling
|
|
273
|
+
* @see {@link CalendarProps} Complete props interface with TypeScript definitions
|
|
274
|
+
* @see {@link https://react-day-picker.js.org/} react-day-picker documentation for advanced configuration
|
|
275
|
+
* @see {@link https://ui.shadcn.com/docs/components/calendar} shadcn/ui Calendar documentation
|
|
276
|
+
* @see {@link https://date-fns.org/docs/I18n} date-fns internationalization guide
|
|
277
|
+
* @see {@link https://www.w3.org/WAI/ARIA/apg/patterns/} WAI-ARIA Authoring Practices Guide
|
|
104
278
|
* @since 1.0.0
|
|
105
279
|
*/
|
|
106
|
-
declare function Calendar({ className, classNames, showOutsideDays, captionLayout, buttonVariant, formatters, components, ...props }:
|
|
107
|
-
/**
|
|
108
|
-
* Button variant for navigation arrows and interactive elements
|
|
109
|
-
*
|
|
110
|
-
* Controls the visual style of the previous/next month navigation buttons.
|
|
111
|
-
* Choose from shadcn/ui button variants to match your design system.
|
|
112
|
-
*
|
|
113
|
-
* @default "ghost"
|
|
114
|
-
* @example
|
|
115
|
-
* ```tsx
|
|
116
|
-
* // Outline style navigation buttons
|
|
117
|
-
* <Calendar buttonVariant="outline" />
|
|
118
|
-
*
|
|
119
|
-
* // Secondary style for subtle navigation
|
|
120
|
-
* <Calendar buttonVariant="secondary" />
|
|
121
|
-
* ```
|
|
122
|
-
*/
|
|
123
|
-
buttonVariant?: React.ComponentProps<typeof Button>["variant"];
|
|
124
|
-
}): import("react/jsx-runtime").JSX.Element;
|
|
280
|
+
declare function Calendar({ className, classNames, showOutsideDays, captionLayout, buttonVariant, formatters, components, ...props }: CalendarProps): import("react/jsx-runtime").JSX.Element;
|
|
125
281
|
/**
|
|
126
282
|
* CalendarDayButton - Individual day button component for calendar dates
|
|
127
283
|
*
|
|
@@ -166,4 +322,5 @@ declare function Calendar({ className, classNames, showOutsideDays, captionLayou
|
|
|
166
322
|
*/
|
|
167
323
|
declare function CalendarDayButton({ className, day, modifiers, ...props }: React.ComponentProps<typeof DayButton>): import("react/jsx-runtime").JSX.Element;
|
|
168
324
|
export { Calendar, CalendarDayButton };
|
|
325
|
+
export type { CalendarProps };
|
|
169
326
|
//# sourceMappingURL=calendar.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"calendar.d.ts","sourceRoot":"","sources":["../../../src/components/ui/calendar.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAM/B,OAAO,
|
|
1
|
+
{"version":3,"file":"calendar.d.ts","sourceRoot":"","sources":["../../../src/components/ui/calendar.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAM/B,OAAO,EACL,SAAS,EACT,SAAS,EAIV,MAAM,kBAAkB,CAAC;AAioB1B;;;GAGG;AACH,KAAK,aAAa,GAAG,KAAK,CAAC,cAAc,CAAC,OAAO,SAAS,CAAC,GAAG;IAC5D;;;OAGG;IACH,aAAa,CAAC,EACV,SAAS,GACT,aAAa,GACb,SAAS,GACT,WAAW,GACX,OAAO,GACP,MAAM,CAAC;CACZ,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAyQG;AACH,iBAAS,QAAQ,CAAC,EAChB,SAAS,EACT,UAAU,EACV,eAAsB,EACtB,aAAuB,EACvB,aAAuB,EACvB,UAAU,EACV,UAAU,EACV,GAAG,KAAK,EACT,EAAE,aAAa,2CAqKf;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAyCG;AACH,iBAAS,iBAAiB,CAAC,EACzB,SAAS,EACT,GAAG,EACH,SAAS,EACT,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,SAAS,CAAC,2CA+BxC;AAED,OAAO,EAAE,QAAQ,EAAE,iBAAiB,EAAE,CAAC;AACvC,YAAY,EAAE,aAAa,EAAE,CAAC"}
|