@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.
Files changed (173) hide show
  1. package/dist/components/ui/accordion.d.ts +1 -25
  2. package/dist/components/ui/accordion.d.ts.map +1 -1
  3. package/dist/components/ui/alert-dialog.d.ts +240 -46
  4. package/dist/components/ui/alert-dialog.d.ts.map +1 -1
  5. package/dist/components/ui/alert.d.ts +73 -11
  6. package/dist/components/ui/alert.d.ts.map +1 -1
  7. package/dist/components/ui/aspect-ratio.d.ts +44 -10
  8. package/dist/components/ui/aspect-ratio.d.ts.map +1 -1
  9. package/dist/components/ui/avatar.d.ts +117 -33
  10. package/dist/components/ui/avatar.d.ts.map +1 -1
  11. package/dist/components/ui/badge.d.ts +50 -71
  12. package/dist/components/ui/badge.d.ts.map +1 -1
  13. package/dist/components/ui/breadcrumb.d.ts +231 -49
  14. package/dist/components/ui/breadcrumb.d.ts.map +1 -1
  15. package/dist/components/ui/button.d.ts +189 -71
  16. package/dist/components/ui/button.d.ts.map +1 -1
  17. package/dist/components/ui/calendar.d.ts +197 -40
  18. package/dist/components/ui/calendar.d.ts.map +1 -1
  19. package/dist/components/ui/card.d.ts +7 -22
  20. package/dist/components/ui/card.d.ts.map +1 -1
  21. package/dist/components/ui/carousel.d.ts +369 -99
  22. package/dist/components/ui/carousel.d.ts.map +1 -1
  23. package/dist/components/ui/chart.d.ts.map +1 -1
  24. package/dist/components/ui/checkbox.d.ts +110 -38
  25. package/dist/components/ui/checkbox.d.ts.map +1 -1
  26. package/dist/components/ui/collapsible.d.ts +246 -61
  27. package/dist/components/ui/collapsible.d.ts.map +1 -1
  28. package/dist/components/ui/combobox.d.ts +207 -159
  29. package/dist/components/ui/combobox.d.ts.map +1 -1
  30. package/dist/components/ui/command.d.ts +336 -67
  31. package/dist/components/ui/command.d.ts.map +1 -1
  32. package/dist/components/ui/container.d.ts +159 -64
  33. package/dist/components/ui/container.d.ts.map +1 -1
  34. package/dist/components/ui/context-menu.d.ts +321 -39
  35. package/dist/components/ui/context-menu.d.ts.map +1 -1
  36. package/dist/components/ui/date-picker.d.ts +113 -86
  37. package/dist/components/ui/date-picker.d.ts.map +1 -1
  38. package/dist/components/ui/dialog.d.ts +106 -25
  39. package/dist/components/ui/dialog.d.ts.map +1 -1
  40. package/dist/components/ui/drawer.d.ts +388 -59
  41. package/dist/components/ui/drawer.d.ts.map +1 -1
  42. package/dist/components/ui/dropdown-menu.d.ts +521 -74
  43. package/dist/components/ui/dropdown-menu.d.ts.map +1 -1
  44. package/dist/components/ui/empty-state.d.ts +148 -76
  45. package/dist/components/ui/empty-state.d.ts.map +1 -1
  46. package/dist/components/ui/hover-card.d.ts +253 -34
  47. package/dist/components/ui/hover-card.d.ts.map +1 -1
  48. package/dist/components/ui/input.d.ts +143 -44
  49. package/dist/components/ui/input.d.ts.map +1 -1
  50. package/dist/components/ui/label.d.ts +0 -8
  51. package/dist/components/ui/label.d.ts.map +1 -1
  52. package/dist/components/ui/menubar.d.ts +288 -46
  53. package/dist/components/ui/menubar.d.ts.map +1 -1
  54. package/dist/components/ui/navigation-menu.d.ts +444 -127
  55. package/dist/components/ui/navigation-menu.d.ts.map +1 -1
  56. package/dist/components/ui/pagination.d.ts +342 -66
  57. package/dist/components/ui/pagination.d.ts.map +1 -1
  58. package/dist/components/ui/popover.d.ts +0 -8
  59. package/dist/components/ui/popover.d.ts.map +1 -1
  60. package/dist/components/ui/progress.d.ts +88 -30
  61. package/dist/components/ui/progress.d.ts.map +1 -1
  62. package/dist/components/ui/radio-group.d.ts +189 -45
  63. package/dist/components/ui/radio-group.d.ts.map +1 -1
  64. package/dist/components/ui/resizable.d.ts +178 -62
  65. package/dist/components/ui/resizable.d.ts.map +1 -1
  66. package/dist/components/ui/scroll-area.d.ts +180 -21
  67. package/dist/components/ui/scroll-area.d.ts.map +1 -1
  68. package/dist/components/ui/select.d.ts +382 -60
  69. package/dist/components/ui/select.d.ts.map +1 -1
  70. package/dist/components/ui/separator.d.ts +52 -39
  71. package/dist/components/ui/separator.d.ts.map +1 -1
  72. package/dist/components/ui/sheet.d.ts +144 -27
  73. package/dist/components/ui/sheet.d.ts.map +1 -1
  74. package/dist/components/ui/sidebar.d.ts +81 -31
  75. package/dist/components/ui/sidebar.d.ts.map +1 -1
  76. package/dist/components/ui/skeleton.d.ts +94 -32
  77. package/dist/components/ui/skeleton.d.ts.map +1 -1
  78. package/dist/components/ui/slider.d.ts +37 -31
  79. package/dist/components/ui/slider.d.ts.map +1 -1
  80. package/dist/components/ui/sonner.d.ts +280 -46
  81. package/dist/components/ui/sonner.d.ts.map +1 -1
  82. package/dist/components/ui/stack.d.ts +289 -148
  83. package/dist/components/ui/stack.d.ts.map +1 -1
  84. package/dist/components/ui/stories/aspect-ratio.stories.d.ts +1 -2
  85. package/dist/components/ui/stories/aspect-ratio.stories.d.ts.map +1 -1
  86. package/dist/components/ui/stories/container.stories.d.ts +2 -3
  87. package/dist/components/ui/stories/container.stories.d.ts.map +1 -1
  88. package/dist/components/ui/stories/empty-state.stories.d.ts +2 -2
  89. package/dist/components/ui/stories/scroll-area.stories.d.ts +1 -2
  90. package/dist/components/ui/stories/scroll-area.stories.d.ts.map +1 -1
  91. package/dist/components/ui/stories/stack.stories.d.ts +1 -1
  92. package/dist/components/ui/stories/text-field.stories.d.ts +7 -1
  93. package/dist/components/ui/stories/text-field.stories.d.ts.map +1 -1
  94. package/dist/components/ui/switch.d.ts +44 -38
  95. package/dist/components/ui/switch.d.ts.map +1 -1
  96. package/dist/components/ui/table.d.ts +33 -0
  97. package/dist/components/ui/table.d.ts.map +1 -1
  98. package/dist/components/ui/tabs.d.ts +4 -22
  99. package/dist/components/ui/tabs.d.ts.map +1 -1
  100. package/dist/components/ui/text-field.d.ts +170 -84
  101. package/dist/components/ui/text-field.d.ts.map +1 -1
  102. package/dist/components/ui/textarea.d.ts +106 -29
  103. package/dist/components/ui/textarea.d.ts.map +1 -1
  104. package/dist/components/ui/theme-toggle.d.ts +190 -65
  105. package/dist/components/ui/theme-toggle.d.ts.map +1 -1
  106. package/dist/components/ui/theme.d.ts +107 -23
  107. package/dist/components/ui/theme.d.ts.map +1 -1
  108. package/dist/components/ui/toggle-group.d.ts +143 -67
  109. package/dist/components/ui/toggle-group.d.ts.map +1 -1
  110. package/dist/components/ui/toggle.d.ts +118 -30
  111. package/dist/components/ui/toggle.d.ts.map +1 -1
  112. package/dist/components/ui/tooltip.d.ts +152 -28
  113. package/dist/components/ui/tooltip.d.ts.map +1 -1
  114. package/dist/components/ui/typography.d.ts +452 -134
  115. package/dist/components/ui/typography.d.ts.map +1 -1
  116. package/dist/index.js +9388 -8281
  117. package/dist/index.js.map +1 -1
  118. package/dist/tsconfig.tsbuildinfo +1 -1
  119. package/llms.txt +173 -3
  120. package/package.json +5 -2
  121. package/src/components/ui/accordion.tsx +112 -27
  122. package/src/components/ui/alert-dialog.tsx +401 -46
  123. package/src/components/ui/alert.tsx +114 -11
  124. package/src/components/ui/aspect-ratio.tsx +69 -14
  125. package/src/components/ui/avatar.tsx +179 -33
  126. package/src/components/ui/badge.tsx +74 -75
  127. package/src/components/ui/breadcrumb.tsx +335 -50
  128. package/src/components/ui/button.tsx +198 -90
  129. package/src/components/ui/calendar.tsx +867 -43
  130. package/src/components/ui/card.tsx +140 -33
  131. package/src/components/ui/carousel.tsx +529 -98
  132. package/src/components/ui/chart.tsx +222 -1
  133. package/src/components/ui/checkbox.tsx +176 -38
  134. package/src/components/ui/collapsible.tsx +321 -67
  135. package/src/components/ui/combobox.tsx +284 -83
  136. package/src/components/ui/command.tsx +527 -67
  137. package/src/components/ui/container.tsx +217 -65
  138. package/src/components/ui/context-menu.tsx +716 -51
  139. package/src/components/ui/date-picker.tsx +228 -38
  140. package/src/components/ui/dialog.tsx +270 -33
  141. package/src/components/ui/drawer.tsx +546 -67
  142. package/src/components/ui/dropdown-menu.tsx +657 -74
  143. package/src/components/ui/empty-state.tsx +241 -82
  144. package/src/components/ui/hover-card.tsx +328 -39
  145. package/src/components/ui/input.tsx +207 -44
  146. package/src/components/ui/label.tsx +98 -8
  147. package/src/components/ui/menubar.tsx +587 -54
  148. package/src/components/ui/navigation-menu.tsx +557 -128
  149. package/src/components/ui/pagination.tsx +561 -79
  150. package/src/components/ui/popover.tsx +119 -8
  151. package/src/components/ui/progress.tsx +131 -29
  152. package/src/components/ui/radio-group.tsx +260 -51
  153. package/src/components/ui/resizable.tsx +289 -63
  154. package/src/components/ui/scroll-area.tsx +377 -66
  155. package/src/components/ui/select.tsx +545 -60
  156. package/src/components/ui/separator.tsx +146 -40
  157. package/src/components/ui/sheet.tsx +348 -31
  158. package/src/components/ui/sidebar.tsx +471 -29
  159. package/src/components/ui/skeleton.tsx +114 -32
  160. package/src/components/ui/slider.tsx +77 -31
  161. package/src/components/ui/sonner.tsx +574 -46
  162. package/src/components/ui/stack.tsx +423 -101
  163. package/src/components/ui/switch.tsx +78 -39
  164. package/src/components/ui/table.tsx +170 -4
  165. package/src/components/ui/tabs.tsx +108 -22
  166. package/src/components/ui/text-field.tsx +226 -81
  167. package/src/components/ui/textarea.tsx +180 -29
  168. package/src/components/ui/theme-toggle.tsx +313 -65
  169. package/src/components/ui/theme.tsx +117 -23
  170. package/src/components/ui/toggle-group.tsx +280 -69
  171. package/src/components/ui/toggle.tsx +124 -35
  172. package/src/components/ui/tooltip.tsx +239 -29
  173. 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 4 with custom CSS properties for theming.
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
- * Button - A versatile button component with multiple style variants and sizes
18
- *
19
- * The Button component is a fundamental UI element used to trigger actions or navigate
20
- * through the application. Built on Radix UI's Slot primitive, it supports multiple
21
- * visual variants, sizes, and can be composed with other components using the asChild
22
- * prop for maximum flexibility. Icons placed within the button are automatically
23
- * styled with proper spacing and sizing.
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
- * @component
26
- * @example
27
- * ```tsx
28
- * // Basic usage
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
- * // With variants and sizes
35
- * <Button variant="outline" size="lg">Large Outline Button</Button>
36
- * <Button variant="destructive" size="sm">Delete</Button>
37
- * <Button variant="ghost">Ghost Button</Button>
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
- * // With icons (automatically styled)
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
- * // As other elements using asChild (composition pattern)
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>Loading...</Button>
79
- * <Button type="submit">Submit Form</Button>
80
- * <Button aria-invalid={hasError}>Validate</Button>
81
- *
82
- * // Loading state with spinner
83
- * <Button disabled>
84
- * <LoadingSpinner className="size-4" />
85
- * Processing...
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
- * - Supports keyboard navigation (Enter/Space to activate)
91
- * - Properly handles disabled state with pointer-events-none and opacity
92
- * - Focus visible ring (3px ring-ring/50) for keyboard navigation
93
- * - Supports aria-invalid for form validation states with destructive ring
94
- * - Icons are automatically marked as non-interactive (pointer-events-none)
95
- * - Screen reader friendly with proper semantic button element
96
- * - When used with asChild, preserves accessibility of child element
97
- * - Icon-only buttons should include aria-label for screen readers
98
- *
99
- * @see {@link buttonVariants} - For all available style variants and sizes
100
- * @see {@link https://ui.shadcn.com/docs/components/button} - shadcn/ui button documentation
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, type ButtonProps };
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;AAE/B,OAAO,EAAO,KAAK,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAIlE;;;;;;;;GAQG;AACH,QAAA,MAAM,cAAc;;;8EA+CnB,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAsFG;AACH;;;;GAIG;AACH,KAAK,WAAW,GAAG,KAAK,CAAC,cAAc,CAAC,QAAQ,CAAC,GAC/C,YAAY,CAAC,OAAO,cAAc,CAAC,GAAG;IACpC;;;;;;;;;;;;OAYG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB,CAAC;AAEJ,iBAAS,MAAM,CAAC,EACd,SAAS,EACT,OAAO,EACP,IAAI,EACJ,OAAe,EACf,GAAG,KAAK,EACT,EAAE,WAAW,2CAUb;kBAhBQ,MAAM;;;AAoBf,OAAO,EAAE,MAAM,EAAE,cAAc,EAAE,KAAK,WAAW,EAAE,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
- import { Button } from "@/components/ui/button";
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 modes**: Single date, date ranges, multiple dates
80
- * - **Navigation**: Month/year navigation with keyboard support
81
- * - **Validation**: Flexible date disabling and validation rules
82
- * - **Customization**: Multiple caption layouts, button variants, styling
83
- * - **Internationalization**: Built-in locale support via react-day-picker
84
- * - **Accessibility**: Full WCAG compliance with keyboard navigation
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**: Arrow keys for date navigation, Page Up/Down for months
88
- * - **Screen Reader Support**: Comprehensive ARIA labels and announcements
89
- * - **Focus Management**: Proper focus handling and restoration
90
- * - **Standards Compliance**: WCAG 2.1 AA compliant
91
- * - **RTL Support**: Right-to-left language support
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
- * The component is optimized for performance with minimal re-renders and efficient
95
- * DOM updates. Large date ranges and multiple months are handled efficiently.
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
- * Fully customizable with Tailwind CSS classes. Supports CSS custom properties
99
- * for cell sizing (`--cell-size`) and integrates with the design system theme.
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
- * @see {@link CalendarDayButton} Individual day button component
102
- * @see [react-day-picker docs](https://react-day-picker.js.org/) for advanced configuration
103
- * @see {@link https://ui.shadcn.com/docs/components/calendar} - shadcn/ui Calendar documentation
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 }: React.ComponentProps<typeof DayPicker> & {
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,EAAE,SAAS,EAAE,SAAS,EAAwB,MAAM,kBAAkB,CAAC;AAG9E,OAAO,EAAE,MAAM,EAAkB,MAAM,wBAAwB,CAAC;AAEhE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqGG;AACH,iBAAS,QAAQ,CAAC,EAChB,SAAS,EACT,UAAU,EACV,eAAsB,EACtB,aAAuB,EACvB,aAAuB,EACvB,UAAU,EACV,UAAU,EACV,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,SAAS,CAAC,GAAG;IAC1C;;;;;;;;;;;;;;;OAeG;IACH,aAAa,CAAC,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,MAAM,CAAC,CAAC,SAAS,CAAC,CAAC;CAChE,2CAoJA;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"}
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"}