@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,87 +1,186 @@
1
1
  import * as React from "react";
2
2
  /**
3
- * A form input field component that displays text input or input-like elements
3
+ * Input - Versatile form input component for text, email, password, and other input types
4
4
  *
5
- * A flexible input component based on shadcn/ui patterns that supports all native HTML input types
6
- * and integrates seamlessly with form libraries like React Hook Form. Provides consistent styling,
7
- * accessibility features, and error states across different input types.
5
+ * A flexible and accessible input component built on native HTML input elements with enhanced
6
+ * styling and form integration capabilities. Supports all HTML input types including text, email,
7
+ * password, number, file, date, and more. Features consistent design tokens, error states, focus
8
+ * management, and seamless integration with form libraries like React Hook Form.
8
9
  *
9
10
  * @example
10
11
  * ```tsx
11
- * // Basic email input
12
- * <Input type="email" placeholder="Email" />
12
+ * // Basic text input
13
+ * <Input type="text" placeholder="Enter your name" />
13
14
  * ```
14
15
  *
15
16
  * @example
16
17
  * ```tsx
17
- * // Input with label for accessibility
18
- * <div className="space-y-2">
19
- * <Label htmlFor="email">Email</Label>
20
- * <Input id="email" type="email" placeholder="Enter your email" />
18
+ * // Email input with validation
19
+ * <Input
20
+ * type="email"
21
+ * placeholder="your@email.com"
22
+ * required
23
+ * aria-describedby="email-error"
24
+ * />
25
+ * ```
26
+ *
27
+ * @example
28
+ * ```tsx
29
+ * // Password input with toggle visibility
30
+ * <div className="relative">
31
+ * <Input
32
+ * type="password"
33
+ * placeholder="Enter password"
34
+ * autoComplete="current-password"
35
+ * />
36
+ * <Button
37
+ * type="button"
38
+ * variant="ghost"
39
+ * size="sm"
40
+ * className="absolute right-0 top-0 h-full px-3"
41
+ * >
42
+ * <Eye className="h-4 w-4" />
43
+ * </Button>
21
44
  * </div>
22
45
  * ```
23
46
  *
24
47
  * @example
25
48
  * ```tsx
49
+ * // Number input with min/max constraints
50
+ * <Input
51
+ * type="number"
52
+ * placeholder="Age"
53
+ * min={0}
54
+ * max={120}
55
+ * step={1}
56
+ * />
57
+ * ```
58
+ *
59
+ * @example
60
+ * ```tsx
26
61
  * // File input with proper labeling
27
62
  * <div className="grid w-full max-w-sm items-center gap-1.5">
28
- * <Label htmlFor="picture">Picture</Label>
29
- * <Input id="picture" type="file" />
63
+ * <Label htmlFor="picture">Profile Picture</Label>
64
+ * <Input
65
+ * id="picture"
66
+ * type="file"
67
+ * accept="image/*"
68
+ * aria-describedby="file-help"
69
+ * />
70
+ * <p id="file-help" className="text-sm text-muted-foreground">
71
+ * Upload a PNG, JPG or GIF (max 5MB)
72
+ * </p>
30
73
  * </div>
31
74
  * ```
32
75
  *
33
76
  * @example
34
77
  * ```tsx
35
- * // Disabled input state
36
- * <Input disabled type="email" placeholder="Email" />
78
+ * // Search input with icon
79
+ * <div className="relative">
80
+ * <Search className="absolute left-2 top-1/2 h-4 w-4 -translate-y-1/2 transform text-muted-foreground" />
81
+ * <Input
82
+ * type="search"
83
+ * placeholder="Search..."
84
+ * className="pl-8"
85
+ * />
86
+ * </div>
37
87
  * ```
38
88
  *
39
89
  * @example
40
90
  * ```tsx
41
- * // Input with button for subscription forms
42
- * <div className="flex w-full max-w-sm items-center space-x-2">
43
- * <Input type="email" placeholder="Email" />
44
- * <Button type="submit">Subscribe</Button>
91
+ * // Input with error state
92
+ * <div className="space-y-2">
93
+ * <Label htmlFor="email">Email</Label>
94
+ * <Input
95
+ * id="email"
96
+ * type="email"
97
+ * aria-invalid={true}
98
+ * aria-describedby="email-error"
99
+ * />
100
+ * <p id="email-error" className="text-sm text-destructive">
101
+ * Please enter a valid email address
102
+ * </p>
45
103
  * </div>
46
104
  * ```
47
105
  *
48
106
  * @example
49
107
  * ```tsx
50
108
  * // Form integration with React Hook Form
51
- * const form = useForm();
109
+ * const { register, formState: { errors } } = useForm();
52
110
  *
53
- * <Form>
54
- * <FormField
55
- * control={form.control}
56
- * name="email"
57
- * render={({ field }) => (
58
- * <FormItem>
59
- * <FormLabel>Email</FormLabel>
60
- * <FormControl>
61
- * <Input placeholder="shadcn" {...field} />
62
- * </FormControl>
63
- * <FormMessage />
64
- * </FormItem>
65
- * )}
111
+ * <div className="space-y-2">
112
+ * <Label htmlFor="username">Username</Label>
113
+ * <Input
114
+ * id="username"
115
+ * {...register("username", { required: "Username is required" })}
116
+ * aria-invalid={!!errors.username}
117
+ * aria-describedby={errors.username ? "username-error" : undefined}
118
+ * />
119
+ * {errors.username && (
120
+ * <p id="username-error" className="text-sm text-destructive">
121
+ * {errors.username.message}
122
+ * </p>
123
+ * )}
124
+ * </div>
125
+ * ```
126
+ *
127
+ * @example
128
+ * ```tsx
129
+ * // Input with button (subscription form)
130
+ * <div className="flex w-full max-w-sm items-center space-x-2">
131
+ * <Input
132
+ * type="email"
133
+ * placeholder="Enter your email"
134
+ * aria-label="Email for newsletter"
66
135
  * />
67
- * </Form>
136
+ * <Button type="submit">Subscribe</Button>
137
+ * </div>
68
138
  * ```
69
139
  *
70
- * @param className - Additional CSS classes to apply to the input
71
- * @param type - The input type (text, email, password, file, etc.)
72
- * @param props - All other standard HTML input attributes
140
+ * @example
141
+ * ```tsx
142
+ * // Disabled input with explanation
143
+ * <div className="space-y-2">
144
+ * <Label htmlFor="readonly-field">System Generated ID</Label>
145
+ * <Input
146
+ * id="readonly-field"
147
+ * value="SYS-12345"
148
+ * disabled
149
+ * aria-describedby="readonly-help"
150
+ * />
151
+ * <p id="readonly-help" className="text-sm text-muted-foreground">
152
+ * This value is automatically generated and cannot be edited
153
+ * </p>
154
+ * </div>
155
+ * ```
73
156
  *
74
157
  * @accessibility
75
- * - Supports all ARIA attributes including aria-invalid for error states
76
- * - Focus visible ring with proper contrast for keyboard navigation
158
+ * - Provides proper focus management with visible focus ring (focus-visible:ring-ring/50)
159
+ * - Supports all ARIA attributes including aria-invalid for error state indication
77
160
  * - Compatible with screen readers and assistive technologies
78
- * - Proper semantic markup for form fields
79
- * - Disabled state prevents interaction and indicates unavailability
161
+ * - Maintains proper tab order and keyboard navigation patterns
162
+ * - Disabled state prevents interaction and is announced to screen readers
163
+ * - File inputs provide accessible file selection with proper labeling
164
+ * - Error states are properly associated with inputs via aria-describedby
165
+ * - Required fields can be marked with aria-required for screen reader users
166
+ * - Placeholder text provides input guidance but doesn't replace proper labels
167
+ * - Text selection has optimized contrast with custom selection colors
168
+ *
169
+ * @styling
170
+ * - Uses consistent design tokens from the design system
171
+ * - Adaptive height (h-9) with responsive text sizing (md:text-sm)
172
+ * - Smooth transitions for focus states and interactions
173
+ * - Custom file input styling that matches the design system
174
+ * - Error state styling with destructive border and focus ring colors
175
+ * - Dark mode support with semi-transparent background (dark:bg-input/30)
176
+ * - Proper spacing and typography hierarchy for form layouts
80
177
  *
81
- * @see {@link https://ui.shadcn.com/docs/components/input} - shadcn/ui Input documentation
82
- * @see {@link Label} - For accessible input labels
83
- * @see {@link Button} - Often used alongside inputs in forms
84
- * @see {@link Form} - For complete form integration with validation
178
+ * @see {@link https://ui.shadcn.com/docs/components/input} shadcn/ui Input documentation
179
+ * @see {@link https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input} MDN Input element reference
180
+ * @see {@link Label} For accessible input labels and proper association
181
+ * @see {@link Button} Often used alongside inputs in forms and search interfaces
182
+ * @see {@link Form} Complete form integration with validation and error handling
183
+ * @see {@link Textarea} For multi-line text input needs
85
184
  * @since 1.0.0
86
185
  */
87
186
  declare function Input({ className, type, ...props }: React.ComponentProps<"input">): import("react/jsx-runtime").JSX.Element;
@@ -1 +1 @@
1
- {"version":3,"file":"input.d.ts","sourceRoot":"","sources":["../../../src/components/ui/input.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAI/B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoFG;AACH,iBAAS,KAAK,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,CAAC,2CAc1E;AAED,OAAO,EAAE,KAAK,EAAE,CAAC"}
1
+ {"version":3,"file":"input.d.ts","sourceRoot":"","sources":["../../../src/components/ui/input.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAoE/B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuLG;AACH,iBAAS,KAAK,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,CAAC,2CAc1E;AAED,OAAO,EAAE,KAAK,EAAE,CAAC"}
@@ -80,14 +80,6 @@ import * as LabelPrimitive from "@radix-ui/react-label";
80
80
  * @see {@link https://www.w3.org/WAI/tutorials/forms/labels/} - W3C Label best practices
81
81
  * @since 1.0.0
82
82
  */
83
- /**
84
- * Label component props extending Radix UI Label Root props
85
- *
86
- * @param className - Additional CSS classes to apply to the label
87
- * @param htmlFor - The id of the form element this label is associated with
88
- * @param children - The label content (text, elements, or components)
89
- * @param ...props - All other props are forwarded to the underlying Radix Label component
90
- */
91
83
  declare function Label({ className, ...props }: React.ComponentProps<typeof LabelPrimitive.Root>): import("react/jsx-runtime").JSX.Element;
92
84
  export { Label };
93
85
  //# sourceMappingURL=label.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"label.d.ts","sourceRoot":"","sources":["../../../src/components/ui/label.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,KAAK,cAAc,MAAM,uBAAuB,CAAC;AAIxD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+EG;AACH;;;;;;;GAOG;AACH,iBAAS,KAAK,CAAC,EACb,SAAS,EACT,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,cAAc,CAAC,IAAI,CAAC,2CAWlD;AAED,OAAO,EAAE,KAAK,EAAE,CAAC"}
1
+ {"version":3,"file":"label.d.ts","sourceRoot":"","sources":["../../../src/components/ui/label.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,KAAK,cAAc,MAAM,uBAAuB,CAAC;AAsGxD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+EG;AACH,iBAAS,KAAK,CAAC,EACb,SAAS,EACT,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,cAAc,CAAC,IAAI,CAAC,2CAWlD;AAED,OAAO,EAAE,KAAK,EAAE,CAAC"}