ui-lab-registry 0.1.0

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 (153) hide show
  1. package/README.md +145 -0
  2. package/dist/categories.d.ts +5 -0
  3. package/dist/categories.d.ts.map +1 -0
  4. package/dist/categories.js +81 -0
  5. package/dist/categories.js.map +1 -0
  6. package/dist/components/badge.d.ts +15 -0
  7. package/dist/components/badge.d.ts.map +1 -0
  8. package/dist/components/badge.js +31 -0
  9. package/dist/components/badge.js.map +1 -0
  10. package/dist/components/button-group.d.ts +27 -0
  11. package/dist/components/button-group.d.ts.map +1 -0
  12. package/dist/components/button-group.js +99 -0
  13. package/dist/components/button-group.js.map +1 -0
  14. package/dist/components/button.d.ts +13 -0
  15. package/dist/components/button.d.ts.map +1 -0
  16. package/dist/components/button.js +26 -0
  17. package/dist/components/button.js.map +1 -0
  18. package/dist/components/card.d.ts +19 -0
  19. package/dist/components/card.d.ts.map +1 -0
  20. package/dist/components/card.js +20 -0
  21. package/dist/components/card.js.map +1 -0
  22. package/dist/components/checkbox.d.ts +21 -0
  23. package/dist/components/checkbox.d.ts.map +1 -0
  24. package/dist/components/checkbox.js +69 -0
  25. package/dist/components/checkbox.js.map +1 -0
  26. package/dist/components/command-palette.d.ts +32 -0
  27. package/dist/components/command-palette.d.ts.map +1 -0
  28. package/dist/components/command-palette.js +256 -0
  29. package/dist/components/command-palette.js.map +1 -0
  30. package/dist/components/confirmation.d.ts +25 -0
  31. package/dist/components/confirmation.d.ts.map +1 -0
  32. package/dist/components/confirmation.js +120 -0
  33. package/dist/components/confirmation.js.map +1 -0
  34. package/dist/components/context-menu.d.ts +28 -0
  35. package/dist/components/context-menu.d.ts.map +1 -0
  36. package/dist/components/context-menu.js +36 -0
  37. package/dist/components/context-menu.js.map +1 -0
  38. package/dist/components/divider.d.ts +19 -0
  39. package/dist/components/divider.d.ts.map +1 -0
  40. package/dist/components/divider.js +240 -0
  41. package/dist/components/divider.js.map +1 -0
  42. package/dist/components/form-wrapper.d.ts +48 -0
  43. package/dist/components/form-wrapper.d.ts.map +1 -0
  44. package/dist/components/form-wrapper.js +122 -0
  45. package/dist/components/form-wrapper.js.map +1 -0
  46. package/dist/components/index.d.ts +24 -0
  47. package/dist/components/index.d.ts.map +1 -0
  48. package/dist/components/index.js +24 -0
  49. package/dist/components/index.js.map +1 -0
  50. package/dist/components/input.d.ts +17 -0
  51. package/dist/components/input.d.ts.map +1 -0
  52. package/dist/components/input.js +38 -0
  53. package/dist/components/input.js.map +1 -0
  54. package/dist/components/label.d.ts +17 -0
  55. package/dist/components/label.d.ts.map +1 -0
  56. package/dist/components/label.js +31 -0
  57. package/dist/components/label.js.map +1 -0
  58. package/dist/components/logo.d.ts +2 -0
  59. package/dist/components/logo.d.ts.map +1 -0
  60. package/dist/components/logo.js +6 -0
  61. package/dist/components/logo.js.map +1 -0
  62. package/dist/components/modal.d.ts +21 -0
  63. package/dist/components/modal.d.ts.map +1 -0
  64. package/dist/components/modal.js +67 -0
  65. package/dist/components/modal.js.map +1 -0
  66. package/dist/components/popover.d.ts +18 -0
  67. package/dist/components/popover.d.ts.map +1 -0
  68. package/dist/components/popover.js +243 -0
  69. package/dist/components/popover.js.map +1 -0
  70. package/dist/components/progress.d.ts +19 -0
  71. package/dist/components/progress.d.ts.map +1 -0
  72. package/dist/components/progress.js +38 -0
  73. package/dist/components/progress.js.map +1 -0
  74. package/dist/components/radio.d.ts +17 -0
  75. package/dist/components/radio.d.ts.map +1 -0
  76. package/dist/components/radio.js +62 -0
  77. package/dist/components/radio.js.map +1 -0
  78. package/dist/components/select.d.ts +13 -0
  79. package/dist/components/select.d.ts.map +1 -0
  80. package/dist/components/select.js +26 -0
  81. package/dist/components/select.js.map +1 -0
  82. package/dist/components/slider.d.ts +9 -0
  83. package/dist/components/slider.d.ts.map +1 -0
  84. package/dist/components/slider.js +32 -0
  85. package/dist/components/slider.js.map +1 -0
  86. package/dist/components/switch.d.ts +24 -0
  87. package/dist/components/switch.d.ts.map +1 -0
  88. package/dist/components/switch.js +92 -0
  89. package/dist/components/switch.js.map +1 -0
  90. package/dist/components/tabs.d.ts +20 -0
  91. package/dist/components/tabs.d.ts.map +1 -0
  92. package/dist/components/tabs.js +85 -0
  93. package/dist/components/tabs.js.map +1 -0
  94. package/dist/components/textarea.d.ts +17 -0
  95. package/dist/components/textarea.d.ts.map +1 -0
  96. package/dist/components/textarea.js +62 -0
  97. package/dist/components/textarea.js.map +1 -0
  98. package/dist/components/toast/index.d.ts +5 -0
  99. package/dist/components/toast/index.d.ts.map +1 -0
  100. package/dist/components/toast/index.js +4 -0
  101. package/dist/components/toast/index.js.map +1 -0
  102. package/dist/components/toast/store.d.ts +55 -0
  103. package/dist/components/toast/store.d.ts.map +1 -0
  104. package/dist/components/toast/store.js +76 -0
  105. package/dist/components/toast/store.js.map +1 -0
  106. package/dist/components/toast/toast.d.ts +10 -0
  107. package/dist/components/toast/toast.d.ts.map +1 -0
  108. package/dist/components/toast/toast.js +148 -0
  109. package/dist/components/toast/toast.js.map +1 -0
  110. package/dist/components/toast/toaster.d.ts +2 -0
  111. package/dist/components/toast/toaster.d.ts.map +1 -0
  112. package/dist/components/toast/toaster.js +391 -0
  113. package/dist/components/toast/toaster.js.map +1 -0
  114. package/dist/components/toast/use-toast.d.ts +9 -0
  115. package/dist/components/toast/use-toast.d.ts.map +1 -0
  116. package/dist/components/toast/use-toast.js +17 -0
  117. package/dist/components/toast/use-toast.js.map +1 -0
  118. package/dist/components/tooltip.d.ts +17 -0
  119. package/dist/components/tooltip.d.ts.map +1 -0
  120. package/dist/components/tooltip.js +227 -0
  121. package/dist/components/tooltip.js.map +1 -0
  122. package/dist/helpers.d.ts +9 -0
  123. package/dist/helpers.d.ts.map +1 -0
  124. package/dist/helpers.js +36 -0
  125. package/dist/helpers.js.map +1 -0
  126. package/dist/index.d.ts +6 -0
  127. package/dist/index.d.ts.map +1 -0
  128. package/dist/index.js +9 -0
  129. package/dist/index.js.map +1 -0
  130. package/dist/lib/utils.d.ts +3 -0
  131. package/dist/lib/utils.d.ts.map +1 -0
  132. package/dist/lib/utils.js +5 -0
  133. package/dist/lib/utils.js.map +1 -0
  134. package/dist/registry.d.ts +10 -0
  135. package/dist/registry.d.ts.map +1 -0
  136. package/dist/registry.js +418 -0
  137. package/dist/registry.js.map +1 -0
  138. package/dist/starters/presets.d.ts +4 -0
  139. package/dist/starters/presets.d.ts.map +1 -0
  140. package/dist/starters/presets.js +49 -0
  141. package/dist/starters/presets.js.map +1 -0
  142. package/dist/types.d.ts +35 -0
  143. package/dist/types.d.ts.map +1 -0
  144. package/dist/types.js +2 -0
  145. package/dist/types.js.map +1 -0
  146. package/package.json +66 -0
  147. package/src/categories.ts +84 -0
  148. package/src/helpers.ts +44 -0
  149. package/src/index.ts +29 -0
  150. package/src/lib/utils.ts +5 -0
  151. package/src/registry.ts +443 -0
  152. package/src/starters/presets.ts +51 -0
  153. package/src/types.ts +48 -0
@@ -0,0 +1,240 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { cva } from "class-variance-authority";
3
+ import { cn } from "../lib/utils";
4
+ import React from "react";
5
+ const dividerVariants = cva("shrink-0", {
6
+ variants: {
7
+ variant: {
8
+ solid: "",
9
+ dashed: "",
10
+ dotted: "",
11
+ },
12
+ orientation: {
13
+ horizontal: "w-full",
14
+ vertical: "",
15
+ },
16
+ size: {
17
+ sm: "",
18
+ md: "",
19
+ lg: "",
20
+ },
21
+ color: {
22
+ default: "",
23
+ muted: "",
24
+ subtle: "",
25
+ },
26
+ spacing: {
27
+ none: "",
28
+ sm: "",
29
+ md: "",
30
+ lg: "",
31
+ },
32
+ },
33
+ compoundVariants: [
34
+ {
35
+ orientation: "horizontal",
36
+ size: "sm",
37
+ class: "h-px",
38
+ },
39
+ {
40
+ orientation: "vertical",
41
+ size: "sm",
42
+ class: "w-px self-stretch",
43
+ },
44
+ {
45
+ orientation: "horizontal",
46
+ size: "md",
47
+ class: "h-0.5",
48
+ },
49
+ {
50
+ orientation: "vertical",
51
+ size: "md",
52
+ class: "w-0.5 self-stretch",
53
+ },
54
+ {
55
+ orientation: "horizontal",
56
+ size: "lg",
57
+ class: "h-1",
58
+ },
59
+ {
60
+ orientation: "vertical",
61
+ size: "lg",
62
+ class: "w-1 self-stretch",
63
+ },
64
+ {
65
+ orientation: "horizontal",
66
+ spacing: "none",
67
+ class: "my-0",
68
+ },
69
+ {
70
+ orientation: "vertical",
71
+ spacing: "none",
72
+ class: "mx-0",
73
+ },
74
+ {
75
+ orientation: "horizontal",
76
+ spacing: "sm",
77
+ class: "my-1",
78
+ },
79
+ {
80
+ orientation: "vertical",
81
+ spacing: "sm",
82
+ },
83
+ {
84
+ orientation: "horizontal",
85
+ spacing: "md",
86
+ class: "my-1",
87
+ },
88
+ {
89
+ orientation: "vertical",
90
+ spacing: "md",
91
+ class: "mx-1",
92
+ },
93
+ {
94
+ orientation: "horizontal",
95
+ spacing: "lg",
96
+ class: "my-1",
97
+ },
98
+ {
99
+ orientation: "vertical",
100
+ spacing: "lg",
101
+ class: "mx-1",
102
+ },
103
+ // --- Solid Variant & Color Compounds ---
104
+ {
105
+ variant: "solid",
106
+ orientation: "horizontal",
107
+ color: "default",
108
+ class: "border-t-background-700 border-t",
109
+ },
110
+ {
111
+ variant: "solid",
112
+ orientation: "horizontal",
113
+ color: "muted",
114
+ class: "border-t-background-500 border-t",
115
+ },
116
+ {
117
+ variant: "solid",
118
+ orientation: "horizontal",
119
+ color: "subtle",
120
+ class: "border-t-background-400 border-t",
121
+ },
122
+ {
123
+ variant: "solid",
124
+ orientation: "vertical",
125
+ color: "default",
126
+ class: "border-l-background-700 border-l",
127
+ },
128
+ {
129
+ variant: "solid",
130
+ orientation: "vertical",
131
+ color: "muted",
132
+ class: "border-l-background-500 border-l",
133
+ },
134
+ {
135
+ variant: "solid",
136
+ orientation: "vertical",
137
+ color: "subtle",
138
+ class: "border-l-background-400 border-l",
139
+ },
140
+ {
141
+ variant: "dashed",
142
+ orientation: "horizontal",
143
+ color: "default",
144
+ class: "border-t-dashed border-t-background-600 border-t",
145
+ },
146
+ {
147
+ variant: "dashed",
148
+ orientation: "horizontal",
149
+ color: "muted",
150
+ class: "border-t-dashed border-t-background-500 border-t",
151
+ },
152
+ {
153
+ variant: "dashed",
154
+ orientation: "horizontal",
155
+ color: "subtle",
156
+ class: "border-t-dashed border-t-background-400 border-t",
157
+ },
158
+ {
159
+ variant: "dashed",
160
+ orientation: "vertical",
161
+ color: "default",
162
+ class: "border-l-dashed border-l-background-600 border-l",
163
+ },
164
+ {
165
+ variant: "dashed",
166
+ orientation: "vertical",
167
+ color: "muted",
168
+ class: "border-l-dashed border-l-background-500 border-l",
169
+ },
170
+ {
171
+ variant: "dashed",
172
+ orientation: "vertical",
173
+ color: "subtle",
174
+ class: "border-l-dashed border-l-background-400 border-l",
175
+ },
176
+ // --- Dotted Variant ---
177
+ {
178
+ variant: "dotted",
179
+ orientation: "horizontal",
180
+ color: "default",
181
+ class: "border-t-dotted border-t-background-600 border-t",
182
+ },
183
+ {
184
+ variant: "dotted",
185
+ orientation: "horizontal",
186
+ color: "muted",
187
+ class: "border-t-dotted border-t-background-500 border-t",
188
+ },
189
+ {
190
+ variant: "dotted",
191
+ orientation: "horizontal",
192
+ color: "subtle",
193
+ class: "border-t-dotted border-t-background-400 border-t",
194
+ },
195
+ {
196
+ variant: "dotted",
197
+ orientation: "vertical",
198
+ color: "default",
199
+ class: "border-l-dotted border-l-background-600 border-l",
200
+ },
201
+ {
202
+ variant: "dotted",
203
+ orientation: "vertical",
204
+ color: "muted",
205
+ class: "border-l-dotted border-l-background-500 border-l",
206
+ },
207
+ {
208
+ variant: "dotted",
209
+ orientation: "vertical",
210
+ color: "subtle",
211
+ class: "border-l-dotted border-l-background-400 border-l",
212
+ },
213
+ ],
214
+ defaultVariants: {
215
+ variant: "solid",
216
+ orientation: "horizontal",
217
+ size: "md",
218
+ color: "default",
219
+ spacing: "md",
220
+ },
221
+ });
222
+ const Divider = React.forwardRef(({ className, variant, orientation, size,
223
+ // Destructure 'color'
224
+ color, spacing, style, ...props }, ref) => {
225
+ // 3. The logic is greatly simplified as cva handles all conditional styling.
226
+ const baseClasses = cn(dividerVariants({
227
+ variant,
228
+ orientation,
229
+ size,
230
+ color, // Pass the 'color' prop
231
+ spacing,
232
+ className,
233
+ }));
234
+ // Ensure style is an object for maintainability (though TS should catch string styles)
235
+ const styleObject = typeof style === "string" ? {} : style;
236
+ return (_jsx("div", { ref: ref, className: baseClasses, style: styleObject, role: "separator", "aria-orientation": orientation, ...props }));
237
+ });
238
+ Divider.displayName = "Divider";
239
+ export { Divider, dividerVariants };
240
+ //# sourceMappingURL=divider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"divider.js","sourceRoot":"","sources":["../../src/components/divider.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,48 @@
1
+ import { ReactNode } from "react";
2
+ export interface FormErrors {
3
+ [fieldName: string]: string;
4
+ }
5
+ export interface FormValues {
6
+ [fieldName: string]: any;
7
+ }
8
+ export interface ValidationRule {
9
+ validate: (value: any) => boolean | Promise<boolean>;
10
+ message: string;
11
+ }
12
+ export interface ValidationRules {
13
+ [fieldName: string]: ValidationRule | ValidationRule[];
14
+ }
15
+ interface FormContextType {
16
+ values: FormValues;
17
+ errors: FormErrors;
18
+ touched: Set<string>;
19
+ isSubmitting: boolean;
20
+ setFieldValue: (name: string, value: any) => void;
21
+ setFieldError: (name: string, error: string) => void;
22
+ setFieldTouched: (name: string, touched?: boolean) => void;
23
+ validateField: (name: string) => Promise<boolean>;
24
+ validateForm: () => Promise<boolean>;
25
+ resetForm: (values?: FormValues) => void;
26
+ submitForm: () => Promise<void>;
27
+ }
28
+ export declare function useFormContext(): FormContextType;
29
+ export interface FormWrapperProps {
30
+ initialValues: FormValues;
31
+ validationRules?: ValidationRules;
32
+ onSubmit: (values: FormValues) => Promise<void> | void;
33
+ onError?: (errors: FormErrors) => void;
34
+ children: ReactNode;
35
+ errorBoundaryFallback?: (error: Error) => ReactNode;
36
+ className?: string;
37
+ }
38
+ export declare function FormWrapper({ initialValues, validationRules, onSubmit, onError, children, errorBoundaryFallback, className, }: FormWrapperProps): import("react/jsx-runtime").JSX.Element;
39
+ export interface FormFieldProps {
40
+ name: string;
41
+ label?: string;
42
+ required?: boolean;
43
+ className?: string;
44
+ children: (context: FormContextType) => ReactNode;
45
+ }
46
+ export declare function FormField({ name, label, required, className, children, }: FormFieldProps): import("react/jsx-runtime").JSX.Element;
47
+ export {};
48
+ //# sourceMappingURL=form-wrapper.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"form-wrapper.d.ts","sourceRoot":"","sources":["../../src/components/form-wrapper.tsx"],"names":[],"mappings":"AAEA,OAAc,EAAoD,SAAS,EAAE,MAAM,OAAO,CAAC;AAI3F,MAAM,WAAW,UAAU;IACzB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAAC;CAC7B;AAED,MAAM,WAAW,UAAU;IACzB,CAAC,SAAS,EAAE,MAAM,GAAG,GAAG,CAAC;CAC1B;AAED,MAAM,WAAW,cAAc;IAC7B,QAAQ,EAAE,CAAC,KAAK,EAAE,GAAG,KAAK,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IACrD,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,eAAe;IAC9B,CAAC,SAAS,EAAE,MAAM,GAAG,cAAc,GAAG,cAAc,EAAE,CAAC;CACxD;AAGD,UAAU,eAAe;IACvB,MAAM,EAAE,UAAU,CAAC;IACnB,MAAM,EAAE,UAAU,CAAC;IACnB,OAAO,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IACrB,YAAY,EAAE,OAAO,CAAC;IACtB,aAAa,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,KAAK,IAAI,CAAC;IAClD,aAAa,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACrD,eAAe,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,OAAO,KAAK,IAAI,CAAC;IAC3D,aAAa,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;IAClD,YAAY,EAAE,MAAM,OAAO,CAAC,OAAO,CAAC,CAAC;IACrC,SAAS,EAAE,CAAC,MAAM,CAAC,EAAE,UAAU,KAAK,IAAI,CAAC;IACzC,UAAU,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;CACjC;AAID,wBAAgB,cAAc,oBAM7B;AA4CD,MAAM,WAAW,gBAAgB;IAC/B,aAAa,EAAE,UAAU,CAAC;IAC1B,eAAe,CAAC,EAAE,eAAe,CAAC;IAClC,QAAQ,EAAE,CAAC,MAAM,EAAE,UAAU,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;IACvD,OAAO,CAAC,EAAE,CAAC,MAAM,EAAE,UAAU,KAAK,IAAI,CAAC;IACvC,QAAQ,EAAE,SAAS,CAAC;IACpB,qBAAqB,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,SAAS,CAAC;IACpD,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,wBAAgB,WAAW,CAAC,EAC1B,aAAa,EACb,eAAoB,EACpB,QAAQ,EACR,OAAO,EACP,QAAQ,EACR,qBAAqB,EACrB,SAAS,GACV,EAAE,gBAAgB,2CAwGlB;AAGD,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,CAAC,OAAO,EAAE,eAAe,KAAK,SAAS,CAAC;CACnD;AAED,wBAAgB,SAAS,CAAC,EACxB,IAAI,EACJ,KAAK,EACL,QAAQ,EACR,SAAS,EACT,QAAQ,GACT,EAAE,cAAc,2CAoBhB"}
@@ -0,0 +1,122 @@
1
+ "use client";
2
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
+ import React, { createContext, useContext, useState, useCallback } from "react";
4
+ import { cn } from "../lib/utils";
5
+ const FormContext = createContext(undefined);
6
+ export function useFormContext() {
7
+ const context = useContext(FormContext);
8
+ if (!context) {
9
+ throw new Error("useFormContext must be used within a FormWrapper");
10
+ }
11
+ return context;
12
+ }
13
+ class FormErrorBoundary extends React.Component {
14
+ constructor(props) {
15
+ super(props);
16
+ this.state = { hasError: false, error: null };
17
+ }
18
+ static getDerivedStateFromError(error) {
19
+ return { hasError: true, error };
20
+ }
21
+ componentDidCatch(error) {
22
+ console.error("Form wrapper error:", error);
23
+ }
24
+ render() {
25
+ if (this.state.hasError && this.state.error) {
26
+ return this.props.fallback ? (this.props.fallback(this.state.error)) : (_jsxs("div", { className: "p-4 bg-red-50 border border-red-200 rounded-lg", children: [_jsx("h3", { className: "text-red-800 font-semibold", children: "Form Error" }), _jsx("p", { className: "text-red-700 text-sm mt-1", children: this.state.error.message })] }));
27
+ }
28
+ return this.props.children;
29
+ }
30
+ }
31
+ export function FormWrapper({ initialValues, validationRules = {}, onSubmit, onError, children, errorBoundaryFallback, className, }) {
32
+ const [values, setValues] = useState(initialValues);
33
+ const [errors, setErrors] = useState({});
34
+ const [touched, setTouched] = useState(new Set());
35
+ const [isSubmitting, setIsSubmitting] = useState(false);
36
+ const setFieldValue = useCallback((name, value) => {
37
+ setValues((prev) => ({ ...prev, [name]: value }));
38
+ }, []);
39
+ const setFieldError = useCallback((name, error) => {
40
+ setErrors((prev) => ({ ...prev, [name]: error }));
41
+ }, []);
42
+ const setFieldTouched = useCallback((name, touched = true) => {
43
+ setTouched((prev) => {
44
+ const newTouched = new Set(prev);
45
+ if (touched) {
46
+ newTouched.add(name);
47
+ }
48
+ else {
49
+ newTouched.delete(name);
50
+ }
51
+ return newTouched;
52
+ });
53
+ }, []);
54
+ const validateField = useCallback(async (name) => {
55
+ const rules = validationRules[name];
56
+ if (!rules)
57
+ return true;
58
+ const rulesList = Array.isArray(rules) ? rules : [rules];
59
+ const value = values[name];
60
+ for (const rule of rulesList) {
61
+ const isValid = await rule.validate(value);
62
+ if (!isValid) {
63
+ setFieldError(name, rule.message);
64
+ return false;
65
+ }
66
+ }
67
+ setFieldError(name, "");
68
+ return true;
69
+ }, [validationRules, values, setFieldError]);
70
+ const validateForm = useCallback(async () => {
71
+ const fieldNames = Object.keys(validationRules);
72
+ const results = await Promise.all(fieldNames.map(validateField));
73
+ return results.every((result) => result);
74
+ }, [validationRules, validateField]);
75
+ const resetForm = useCallback((newValues) => {
76
+ setValues(newValues || initialValues);
77
+ setErrors({});
78
+ setTouched(new Set());
79
+ }, [initialValues]);
80
+ const submitForm = useCallback(async () => {
81
+ setIsSubmitting(true);
82
+ try {
83
+ const isValid = await validateForm();
84
+ if (!isValid) {
85
+ onError?.(errors);
86
+ return;
87
+ }
88
+ await onSubmit(values);
89
+ }
90
+ catch (error) {
91
+ console.error("Form submission error:", error);
92
+ onError?.(errors);
93
+ }
94
+ finally {
95
+ setIsSubmitting(false);
96
+ }
97
+ }, [validateForm, onSubmit, values, errors, onError]);
98
+ const contextValue = {
99
+ values,
100
+ errors,
101
+ touched,
102
+ isSubmitting,
103
+ setFieldValue,
104
+ setFieldError,
105
+ setFieldTouched,
106
+ validateField,
107
+ validateForm,
108
+ resetForm,
109
+ submitForm,
110
+ };
111
+ const handleSubmit = (e) => {
112
+ e.preventDefault();
113
+ };
114
+ return (_jsx(FormErrorBoundary, { fallback: errorBoundaryFallback, children: _jsx(FormContext.Provider, { value: contextValue, children: _jsx("form", { className: cn("space-y-4 min-w-80", className), onSubmit: handleSubmit, children: children }) }) }));
115
+ }
116
+ export function FormField({ name, label, required, className, children, }) {
117
+ const context = useFormContext();
118
+ const error = context.errors[name];
119
+ const isTouched = context.touched.has(name);
120
+ return (_jsxs("div", { className: cn("space-y-1.5", className), children: [label && (_jsxs("label", { className: "text-sm font-medium text-foreground-50", children: [label, " ", required && _jsx("span", { className: "text-red-600", children: "*" })] })), _jsx("div", { children: children(context) }), error && isTouched && (_jsx("p", { className: "text-sm text-red-600", children: error }))] }));
121
+ }
122
+ //# sourceMappingURL=form-wrapper.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"form-wrapper.js","sourceRoot":"","sources":["../../src/components/form-wrapper.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,24 @@
1
+ export { Button, buttonVariants } from './button';
2
+ export { ButtonGroup, ButtonGroupItem } from './button-group';
3
+ export { Input } from './input';
4
+ export { Label } from './label';
5
+ export { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from './select';
6
+ export { TextArea } from './textarea';
7
+ export { Checkbox } from './checkbox';
8
+ export { Radio } from './radio';
9
+ export { Badge } from './badge';
10
+ export { Tooltip } from './tooltip';
11
+ export { Popover } from './popover';
12
+ export { FormWrapper } from './form-wrapper';
13
+ export { Toast, Toaster, useToast, toast } from './toast';
14
+ export { Modal } from './modal';
15
+ export { Tabs, TabsList, TabsTrigger, TabsContent } from './tabs';
16
+ export { ContextMenu, ContextMenuTrigger, ContextMenuContent, ContextMenuItem } from './context-menu';
17
+ export { Root as SliderRoot, Thumb as SliderThumb } from './slider';
18
+ export { Progress } from './progress';
19
+ export { Card } from './card';
20
+ export { CommandPalette } from './command-palette';
21
+ export { Confirmation } from './confirmation';
22
+ export { Divider } from './divider';
23
+ export { Switch } from './switch';
24
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/components/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAClD,OAAO,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAC9D,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAChC,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAChC,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,UAAU,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AACzF,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAChC,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAChC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC7C,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAC1D,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAChC,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,QAAQ,CAAC;AAClE,OAAO,EAAE,WAAW,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AACtG,OAAO,EAAE,IAAI,IAAI,UAAU,EAAE,KAAK,IAAI,WAAW,EAAE,MAAM,UAAU,CAAC;AACpE,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAC9B,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC"}
@@ -0,0 +1,24 @@
1
+ export { Button, buttonVariants } from './button';
2
+ export { ButtonGroup, ButtonGroupItem } from './button-group';
3
+ export { Input } from './input';
4
+ export { Label } from './label';
5
+ export { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from './select';
6
+ export { TextArea } from './textarea';
7
+ export { Checkbox } from './checkbox';
8
+ export { Radio } from './radio';
9
+ export { Badge } from './badge';
10
+ export { Tooltip } from './tooltip';
11
+ export { Popover } from './popover';
12
+ export { FormWrapper } from './form-wrapper';
13
+ export { Toast, Toaster, useToast, toast } from './toast';
14
+ export { Modal } from './modal';
15
+ export { Tabs, TabsList, TabsTrigger, TabsContent } from './tabs';
16
+ export { ContextMenu, ContextMenuTrigger, ContextMenuContent, ContextMenuItem } from './context-menu';
17
+ export { Root as SliderRoot, Thumb as SliderThumb } from './slider';
18
+ export { Progress } from './progress';
19
+ export { Card } from './card';
20
+ export { CommandPalette } from './command-palette';
21
+ export { Confirmation } from './confirmation';
22
+ export { Divider } from './divider';
23
+ export { Switch } from './switch';
24
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/components/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAClD,OAAO,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAC9D,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAChC,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAChC,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,UAAU,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AACzF,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAChC,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAChC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC7C,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAC1D,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAChC,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,QAAQ,CAAC;AAClE,OAAO,EAAE,WAAW,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AACtG,OAAO,EAAE,IAAI,IAAI,UAAU,EAAE,KAAK,IAAI,WAAW,EAAE,MAAM,UAAU,CAAC;AACpE,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAC9B,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC"}
@@ -0,0 +1,17 @@
1
+ import { type VariantProps } from "class-variance-authority";
2
+ declare const inputVariants: (props?: ({
3
+ variant?: "default" | "ghost" | null | undefined;
4
+ size?: "sm" | "md" | "lg" | null | undefined;
5
+ error?: boolean | null | undefined;
6
+ disabled?: boolean | null | undefined;
7
+ } & import("class-variance-authority/types").ClassProp) | undefined) => string;
8
+ export interface InputProps extends Omit<React.InputHTMLAttributes<HTMLInputElement>, "size" | "disabled" | "error" | "variant">, VariantProps<typeof inputVariants> {
9
+ prefixIcon?: React.ReactNode;
10
+ suffixIcon?: React.ReactNode;
11
+ }
12
+ declare const Input: {
13
+ ({ className, variant, size, error, disabled, prefixIcon, suffixIcon, type, ...props }: InputProps): import("react/jsx-runtime").JSX.Element;
14
+ displayName: string;
15
+ };
16
+ export { Input, inputVariants };
17
+ //# sourceMappingURL=input.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"input.d.ts","sourceRoot":"","sources":["../../src/components/input.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAO,KAAK,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAGlE,QAAA,MAAM,aAAa;;;;;8EA6BlB,CAAC;AAEF,MAAM,WAAW,UACf,SAAQ,IAAI,CAAC,KAAK,CAAC,mBAAmB,CAAC,gBAAgB,CAAC,EAAE,MAAM,GAAG,UAAU,GAAG,OAAO,GAAG,SAAS,CAAC,EACpG,YAAY,CAAC,OAAO,aAAa,CAAC;IAClC,UAAU,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC7B,UAAU,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;CAC9B;AAED,QAAA,MAAM,KAAK;4FAUR,UAAU;;CA4BZ,CAAC;AAIF,OAAO,EAAE,KAAK,EAAE,aAAa,EAAE,CAAC"}
@@ -0,0 +1,38 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { cva } from "class-variance-authority";
3
+ import { cn } from "../lib/utils";
4
+ const inputVariants = cva("w-full px-3 py-2 rounded-md text-foreground-50 placeholder-foreground-500", {
5
+ variants: {
6
+ variant: {
7
+ default: "bg-background-800 border border-background-700",
8
+ ghost: "focus:ring-transparent",
9
+ },
10
+ size: {
11
+ sm: "h-8 text-sm px-2 py-1",
12
+ md: "h-10 text-sm px-3 py-2",
13
+ lg: "h-12 text-base px-4 py-3",
14
+ },
15
+ error: {
16
+ true: "border-danger-600 focus:ring-2 focus:ring-danger-600/50 focus:border-danger-600",
17
+ false: "hover:border-background-600 focus:outline-none focus:ring-2 focus:ring-accent-500/50 focus:border-accent-500",
18
+ },
19
+ disabled: {
20
+ true: "bg-background-900 text-foreground-500 cursor-not-allowed opacity-60",
21
+ false: "",
22
+ },
23
+ },
24
+ defaultVariants: {
25
+ variant: "default",
26
+ size: "md",
27
+ error: false,
28
+ disabled: false,
29
+ },
30
+ });
31
+ const Input = ({ className, variant, size, error, disabled, prefixIcon, suffixIcon, type = "text", ...props }) => {
32
+ const hasPrefix = !!prefixIcon;
33
+ const hasSuffix = !!suffixIcon;
34
+ return (_jsxs("div", { className: "relative w-full", children: [hasPrefix && (_jsx("div", { className: "absolute left-3 top-1/2 -translate-y-1/2 text-foreground-500 flex items-center pointer-events-none", children: prefixIcon })), _jsx("input", { type: type, disabled: disabled ?? undefined, className: cn(inputVariants({ variant, size, error, disabled: disabled ?? false, className }), hasPrefix && "pl-8", hasSuffix && "pr-8"), ...props }), hasSuffix && (_jsx("div", { className: "absolute right-3 top-1/2 -translate-y-1/2 text-foreground-500 flex items-center pointer-events-none", children: suffixIcon }))] }));
35
+ };
36
+ Input.displayName = "Input";
37
+ export { Input, inputVariants };
38
+ //# sourceMappingURL=input.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"input.js","sourceRoot":"","sources":["../../src/components/input.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,GAAG,EAAqB,MAAM,0BAA0B,CAAC;AAClE,OAAO,EAAE,EAAE,EAAE,MAAM,cAAc,CAAC;AAElC,MAAM,aAAa,GAAG,GAAG,CACvB,2EAA2E,EAC3E;IACE,QAAQ,EAAE;QACR,OAAO,EAAE;YACP,OAAO,EAAE,gDAAgD;YACzD,KAAK,EAAE,wBAAwB;SAChC;QACD,IAAI,EAAE;YACJ,EAAE,EAAE,uBAAuB;YAC3B,EAAE,EAAE,wBAAwB;YAC5B,EAAE,EAAE,0BAA0B;SAC/B;QACD,KAAK,EAAE;YACL,IAAI,EAAE,iFAAiF;YACvF,KAAK,EAAE,8GAA8G;SACtH;QACD,QAAQ,EAAE;YACR,IAAI,EAAE,qEAAqE;YAC3E,KAAK,EAAE,EAAE;SACV;KACF;IACD,eAAe,EAAE;QACf,OAAO,EAAE,SAAS;QAClB,IAAI,EAAE,IAAI;QACV,KAAK,EAAE,KAAK;QACZ,QAAQ,EAAE,KAAK;KAChB;CACF,CACF,CAAC;AASF,MAAM,KAAK,GAAG,CAAC,EACb,SAAS,EACT,OAAO,EACP,IAAI,EACJ,KAAK,EACL,QAAQ,EACR,UAAU,EACV,UAAU,EACV,IAAI,GAAG,MAAM,EACb,GAAG,KAAK,EACG,EAAE,EAAE;IACf,MAAM,SAAS,GAAG,CAAC,CAAC,UAAU,CAAC;IAC/B,MAAM,SAAS,GAAG,CAAC,CAAC,UAAU,CAAC;IAE/B,OAAO,CACL,eAAK,SAAS,EAAC,iBAAiB,aAC7B,SAAS,IAAI,CACZ,cAAK,SAAS,EAAC,oGAAoG,YAChH,UAAU,GACP,CACP,EACD,gBACE,IAAI,EAAE,IAAI,EACV,QAAQ,EAAE,QAAQ,IAAI,SAAS,EAC/B,SAAS,EAAE,EAAE,CACX,aAAa,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE,QAAQ,IAAI,KAAK,EAAE,SAAS,EAAE,CAAC,EAC/E,SAAS,IAAI,MAAM,EACnB,SAAS,IAAI,MAAM,CACpB,KACG,KAAK,GACT,EACD,SAAS,IAAI,CACZ,cAAK,SAAS,EAAC,qGAAqG,YACjH,UAAU,GACP,CACP,IACG,CACP,CAAC;AACJ,CAAC,CAAC;AAEF,KAAK,CAAC,WAAW,GAAG,OAAO,CAAC;AAE5B,OAAO,EAAE,KAAK,EAAE,aAAa,EAAE,CAAC"}
@@ -0,0 +1,17 @@
1
+ import { type VariantProps } from "class-variance-authority";
2
+ declare const labelVariants: (props?: ({
3
+ size?: "sm" | "md" | "lg" | null | undefined;
4
+ disabled?: boolean | null | undefined;
5
+ error?: boolean | null | undefined;
6
+ } & import("class-variance-authority/types").ClassProp) | undefined) => string;
7
+ export interface LabelProps extends React.LabelHTMLAttributes<HTMLLabelElement>, VariantProps<typeof labelVariants> {
8
+ required?: boolean;
9
+ helperText?: React.ReactNode;
10
+ helperTextError?: boolean;
11
+ }
12
+ declare const Label: {
13
+ ({ className, size, disabled, error, required, helperText, helperTextError, children, ...props }: LabelProps): import("react/jsx-runtime").JSX.Element;
14
+ displayName: string;
15
+ };
16
+ export { Label, labelVariants };
17
+ //# sourceMappingURL=label.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"label.d.ts","sourceRoot":"","sources":["../../src/components/label.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAO,KAAK,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAGlE,QAAA,MAAM,aAAa;;;;8EAwBlB,CAAC;AAEF,MAAM,WAAW,UACf,SAAQ,KAAK,CAAC,mBAAmB,CAAC,gBAAgB,CAAC,EACnD,YAAY,CAAC,OAAO,aAAa,CAAC;IAClC,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,UAAU,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC7B,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B;AAED,QAAA,MAAM,KAAK;sGAUR,UAAU;;CA0BZ,CAAC;AAIF,OAAO,EAAE,KAAK,EAAE,aAAa,EAAE,CAAC"}
@@ -0,0 +1,31 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { cva } from "class-variance-authority";
3
+ import { cn } from "../lib/utils";
4
+ const labelVariants = cva("block text-foreground-300 transition-colors", {
5
+ variants: {
6
+ size: {
7
+ sm: "text-xs",
8
+ md: "text-sm",
9
+ lg: "text-base",
10
+ },
11
+ disabled: {
12
+ true: "text-foreground-500 opacity-60 cursor-not-allowed",
13
+ false: "",
14
+ },
15
+ error: {
16
+ true: "text-danger-600",
17
+ false: "",
18
+ },
19
+ },
20
+ defaultVariants: {
21
+ size: "md",
22
+ disabled: false,
23
+ error: false,
24
+ },
25
+ });
26
+ const Label = ({ className, size, disabled, error, required, helperText, helperTextError, children, ...props }) => {
27
+ return (_jsxs("div", { className: "w-full", children: [_jsxs("label", { className: cn(labelVariants({ size, disabled, error, className })), ...props, children: [children, required && (_jsx("span", { className: "text-danger-600 ml-1", "aria-label": "required", children: "*" }))] }), helperText && (_jsx("p", { className: cn("text-xs mt-1 transition-colors", helperTextError ? "text-danger-600" : "text-foreground-500"), children: helperText }))] }));
28
+ };
29
+ Label.displayName = "Label";
30
+ export { Label, labelVariants };
31
+ //# sourceMappingURL=label.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"label.js","sourceRoot":"","sources":["../../src/components/label.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,GAAG,EAAqB,MAAM,0BAA0B,CAAC;AAClE,OAAO,EAAE,EAAE,EAAE,MAAM,cAAc,CAAC;AAElC,MAAM,aAAa,GAAG,GAAG,CACvB,6CAA6C,EAC7C;IACE,QAAQ,EAAE;QACR,IAAI,EAAE;YACJ,EAAE,EAAE,SAAS;YACb,EAAE,EAAE,SAAS;YACb,EAAE,EAAE,WAAW;SAChB;QACD,QAAQ,EAAE;YACR,IAAI,EAAE,mDAAmD;YACzD,KAAK,EAAE,EAAE;SACV;QACD,KAAK,EAAE;YACL,IAAI,EAAE,iBAAiB;YACvB,KAAK,EAAE,EAAE;SACV;KACF;IACD,eAAe,EAAE;QACf,IAAI,EAAE,IAAI;QACV,QAAQ,EAAE,KAAK;QACf,KAAK,EAAE,KAAK;KACb;CACF,CACF,CAAC;AAUF,MAAM,KAAK,GAAG,CAAC,EACb,SAAS,EACT,IAAI,EACJ,QAAQ,EACR,KAAK,EACL,QAAQ,EACR,UAAU,EACV,eAAe,EACf,QAAQ,EACR,GAAG,KAAK,EACG,EAAE,EAAE;IACf,OAAO,CACL,eAAK,SAAS,EAAC,QAAQ,aACrB,iBACE,SAAS,EAAE,EAAE,CACX,aAAa,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CACpD,KACG,KAAK,aAER,QAAQ,EACR,QAAQ,IAAI,CACX,eAAM,SAAS,EAAC,sBAAsB,gBAAY,UAAU,kBAErD,CACR,IACK,EACP,UAAU,IAAI,CACb,YAAG,SAAS,EAAE,EAAE,CACd,gCAAgC,EAChC,eAAe,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,qBAAqB,CAC5D,YACE,UAAU,GACT,CACL,IACG,CACP,CAAC;AACJ,CAAC,CAAC;AAEF,KAAK,CAAC,WAAW,GAAG,OAAO,CAAC;AAE5B,OAAO,EAAE,KAAK,EAAE,aAAa,EAAE,CAAC"}
@@ -0,0 +1,2 @@
1
+ export declare function Logo(): import("react/jsx-runtime").JSX.Element;
2
+ //# sourceMappingURL=logo.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logo.d.ts","sourceRoot":"","sources":["../../src/components/logo.tsx"],"names":[],"mappings":"AAEA,wBAAgB,IAAI,4CAkBnB"}
@@ -0,0 +1,6 @@
1
+ "use client";
2
+ import { jsx as _jsx } from "react/jsx-runtime";
3
+ export function Logo() {
4
+ return (_jsx("svg", { width: "34", height: "34", viewBox: "0 0 23 23", fill: "none", xmlns: "http://www.w3.org/2000/svg", className: "text-foreground-300", children: _jsx("path", { fillRule: "evenodd", clipRule: "evenodd", d: "M11.0982 4.6488C11.2657 4.55211 11.4721 4.55211 11.6396 4.6488L17.0533 7.77443C17.2208 7.87114 17.324 8.04988 17.324 8.24329V14.4945C17.324 14.688 17.2208 14.8667 17.0533 14.9634L15.7977 15.6883C15.5388 15.8378 15.2077 15.7491 15.0582 15.4901L14.5276 14.5712C14.3781 14.3123 14.4669 13.9812 14.7258 13.8317L14.9095 13.7256C15.077 13.6289 15.1802 13.4502 15.1802 13.2568V9.48103C15.1802 9.28763 15.077 9.10889 14.9095 9.0122L11.6396 7.12432C11.4721 7.0276 11.2657 7.0276 11.0982 7.12432L7.82828 9.0122C7.66078 9.10889 7.5576 9.28763 7.5576 9.48103V13.2568C7.5576 13.4502 7.66078 13.6289 7.82828 13.7256L11.0982 15.6135C11.2657 15.7102 11.4721 15.7102 11.6396 15.6135L11.7337 15.5591C11.9927 15.4097 12.3238 15.4984 12.4733 15.7573L13.0038 16.6762C13.1533 16.9352 13.0646 17.2663 12.8057 17.4158L11.6396 18.089C11.4721 18.1857 11.2657 18.1857 11.0982 18.089L5.68444 14.9634C5.51694 14.8667 5.41375 14.688 5.41375 14.4945V8.24329C5.41375 8.04988 5.51694 7.87114 5.68444 7.77443L11.0982 4.6488Z", fill: "currentColor" }) }));
5
+ }
6
+ //# sourceMappingURL=logo.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logo.js","sourceRoot":"","sources":["../../src/components/logo.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AAEb,MAAM,UAAU,IAAI;IAClB,OAAO,CACL,cACE,KAAK,EAAC,IAAI,EACV,MAAM,EAAC,IAAI,EACX,OAAO,EAAC,WAAW,EACnB,IAAI,EAAC,MAAM,EACX,KAAK,EAAC,4BAA4B,EAClC,SAAS,EAAC,qBAAqB,YAE/B,eACE,QAAQ,EAAC,SAAS,EAClB,QAAQ,EAAC,SAAS,EAClB,CAAC,EAAC,g+BAAg+B,EACl+B,IAAI,EAAC,cAAc,GACnB,GACE,CACP,CAAC;AACJ,CAAC"}