@thetinycode/hash-ui 1.0.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.
- package/LICENSE +21 -0
- package/README.md +189 -0
- package/dist/index.cjs +1111 -0
- package/dist/index.d.cts +182 -0
- package/dist/index.d.ts +182 -0
- package/dist/index.js +1000 -0
- package/dist/styles.css +1 -0
- package/package.json +43 -0
package/dist/index.cjs
ADDED
|
@@ -0,0 +1,1111 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __create = Object.create;
|
|
3
|
+
var __defProp = Object.defineProperty;
|
|
4
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
5
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
6
|
+
var __getProtoOf = Object.getPrototypeOf;
|
|
7
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
8
|
+
var __export = (target, all) => {
|
|
9
|
+
for (var name in all)
|
|
10
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
11
|
+
};
|
|
12
|
+
var __copyProps = (to, from, except, desc) => {
|
|
13
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
14
|
+
for (let key of __getOwnPropNames(from))
|
|
15
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
16
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
17
|
+
}
|
|
18
|
+
return to;
|
|
19
|
+
};
|
|
20
|
+
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
|
|
21
|
+
// If the importer is in node compatibility mode or this is not an ESM
|
|
22
|
+
// file that has been converted to a CommonJS file using a Babel-
|
|
23
|
+
// compatible transform (i.e. "__esModule" has not been set), then set
|
|
24
|
+
// "default" to the CommonJS "module.exports" for node compatibility.
|
|
25
|
+
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
|
|
26
|
+
mod
|
|
27
|
+
));
|
|
28
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
29
|
+
|
|
30
|
+
// src/index.ts
|
|
31
|
+
var index_exports = {};
|
|
32
|
+
__export(index_exports, {
|
|
33
|
+
Alert: () => Alert,
|
|
34
|
+
AlertDescription: () => AlertDescription,
|
|
35
|
+
AlertTitle: () => AlertTitle,
|
|
36
|
+
Avatar: () => Avatar,
|
|
37
|
+
AvatarGroup: () => AvatarGroup,
|
|
38
|
+
Badge: () => Badge,
|
|
39
|
+
Box: () => Box,
|
|
40
|
+
Breadcrumb: () => Breadcrumb,
|
|
41
|
+
BreadcrumbItem: () => BreadcrumbItem,
|
|
42
|
+
BreadcrumbList: () => BreadcrumbList,
|
|
43
|
+
BreadcrumbPage: () => BreadcrumbPage,
|
|
44
|
+
BreadcrumbSeparator: () => BreadcrumbSeparator,
|
|
45
|
+
Button: () => Button,
|
|
46
|
+
Card: () => Card,
|
|
47
|
+
CardContent: () => CardContent,
|
|
48
|
+
CardDescription: () => CardDescription,
|
|
49
|
+
CardFooter: () => CardFooter,
|
|
50
|
+
CardHeader: () => CardHeader,
|
|
51
|
+
CardTitle: () => CardTitle,
|
|
52
|
+
Container: () => Container,
|
|
53
|
+
Divider: () => Divider,
|
|
54
|
+
Drawer: () => Drawer,
|
|
55
|
+
Dropdown: () => Dropdown,
|
|
56
|
+
DropdownItem: () => DropdownItem,
|
|
57
|
+
DropdownMenu: () => DropdownMenu,
|
|
58
|
+
EmptyState: () => EmptyState,
|
|
59
|
+
EmptyStateActions: () => EmptyStateActions,
|
|
60
|
+
EmptyStateDescription: () => EmptyStateDescription,
|
|
61
|
+
EmptyStateTitle: () => EmptyStateTitle,
|
|
62
|
+
Grid: () => Grid,
|
|
63
|
+
Header: () => Header,
|
|
64
|
+
HeaderActions: () => HeaderActions,
|
|
65
|
+
HeaderBrand: () => HeaderBrand,
|
|
66
|
+
HeaderInner: () => HeaderInner,
|
|
67
|
+
HeaderNav: () => HeaderNav,
|
|
68
|
+
Hero: () => Hero,
|
|
69
|
+
HeroActions: () => HeroActions,
|
|
70
|
+
HeroBadge: () => HeroBadge,
|
|
71
|
+
HeroContent: () => HeroContent,
|
|
72
|
+
HeroDescription: () => HeroDescription,
|
|
73
|
+
HeroTitle: () => HeroTitle,
|
|
74
|
+
Input: () => Input,
|
|
75
|
+
Label: () => Label,
|
|
76
|
+
Modal: () => Modal,
|
|
77
|
+
ModalContent: () => ModalContent,
|
|
78
|
+
ModalDescription: () => ModalDescription,
|
|
79
|
+
ModalFooter: () => ModalFooter,
|
|
80
|
+
ModalHeader: () => ModalHeader,
|
|
81
|
+
ModalTitle: () => ModalTitle,
|
|
82
|
+
Pagination: () => Pagination,
|
|
83
|
+
PaginationItem: () => PaginationItem,
|
|
84
|
+
PaginationLink: () => PaginationLink,
|
|
85
|
+
PaginationList: () => PaginationList,
|
|
86
|
+
Section: () => Section,
|
|
87
|
+
SectionDescription: () => SectionDescription,
|
|
88
|
+
SectionHeader: () => SectionHeader,
|
|
89
|
+
SectionTitle: () => SectionTitle,
|
|
90
|
+
Select: () => Select,
|
|
91
|
+
Stack: () => Stack,
|
|
92
|
+
Stat: () => Stat,
|
|
93
|
+
StatChange: () => StatChange,
|
|
94
|
+
StatLabel: () => StatLabel,
|
|
95
|
+
StatValue: () => StatValue,
|
|
96
|
+
Switch: () => Switch,
|
|
97
|
+
Tabs: () => Tabs,
|
|
98
|
+
TabsContent: () => TabsContent,
|
|
99
|
+
TabsList: () => TabsList,
|
|
100
|
+
TabsTrigger: () => TabsTrigger,
|
|
101
|
+
Textarea: () => Textarea,
|
|
102
|
+
Toast: () => Toast,
|
|
103
|
+
ToastDescription: () => ToastDescription,
|
|
104
|
+
ToastTitle: () => ToastTitle,
|
|
105
|
+
ToastViewport: () => ToastViewport,
|
|
106
|
+
Tooltip: () => Tooltip,
|
|
107
|
+
cn: () => cn
|
|
108
|
+
});
|
|
109
|
+
module.exports = __toCommonJS(index_exports);
|
|
110
|
+
|
|
111
|
+
// src/components/forms/button.tsx
|
|
112
|
+
var React = require("react");
|
|
113
|
+
var import_class_variance_authority = require("class-variance-authority");
|
|
114
|
+
|
|
115
|
+
// src/lib/cn.ts
|
|
116
|
+
var import_clsx = require("clsx");
|
|
117
|
+
var import_tailwind_merge = require("tailwind-merge");
|
|
118
|
+
function cn(...inputs) {
|
|
119
|
+
return (0, import_tailwind_merge.twMerge)((0, import_clsx.clsx)(inputs));
|
|
120
|
+
}
|
|
121
|
+
|
|
122
|
+
// src/components/forms/button.tsx
|
|
123
|
+
var import_jsx_runtime = require("react/jsx-runtime");
|
|
124
|
+
var buttonVariants = (0, import_class_variance_authority.cva)(
|
|
125
|
+
"inline-flex items-center justify-center rounded-xl font-medium transition-colors focus:outline-none disabled:pointer-events-none disabled:opacity-50",
|
|
126
|
+
{
|
|
127
|
+
variants: {
|
|
128
|
+
variant: {
|
|
129
|
+
primary: "bg-blue-600 text-white hover:bg-blue-700",
|
|
130
|
+
secondary: "bg-gray-100 text-gray-900 hover:bg-gray-200",
|
|
131
|
+
outline: "border border-gray-300 bg-white text-gray-900 hover:bg-gray-50",
|
|
132
|
+
ghost: "hover:bg-gray-100 text-gray-900"
|
|
133
|
+
},
|
|
134
|
+
size: {
|
|
135
|
+
sm: "h-9 px-3 text-sm",
|
|
136
|
+
md: "h-10 px-4 text-sm",
|
|
137
|
+
lg: "h-12 px-6 text-base"
|
|
138
|
+
}
|
|
139
|
+
},
|
|
140
|
+
defaultVariants: {
|
|
141
|
+
variant: "primary",
|
|
142
|
+
size: "md"
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
);
|
|
146
|
+
function Button({
|
|
147
|
+
className,
|
|
148
|
+
variant,
|
|
149
|
+
size,
|
|
150
|
+
...props
|
|
151
|
+
}) {
|
|
152
|
+
return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
153
|
+
"button",
|
|
154
|
+
{
|
|
155
|
+
className: cn(buttonVariants({ variant, size }), className),
|
|
156
|
+
...props
|
|
157
|
+
}
|
|
158
|
+
);
|
|
159
|
+
}
|
|
160
|
+
|
|
161
|
+
// src/components/forms/input.tsx
|
|
162
|
+
var React2 = __toESM(require("react"), 1);
|
|
163
|
+
var import_jsx_runtime2 = require("react/jsx-runtime");
|
|
164
|
+
var Input = React2.forwardRef(
|
|
165
|
+
({ className, type = "text", ...props }, ref) => {
|
|
166
|
+
return /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(
|
|
167
|
+
"input",
|
|
168
|
+
{
|
|
169
|
+
ref,
|
|
170
|
+
type,
|
|
171
|
+
className: cn(
|
|
172
|
+
"flex h-10 w-full rounded-xl border border-gray-300 bg-white px-3 py-2 text-sm text-gray-900 outline-none transition-colors placeholder:text-gray-400 focus:border-gray-400 disabled:cursor-not-allowed disabled:opacity-50",
|
|
173
|
+
className
|
|
174
|
+
),
|
|
175
|
+
...props
|
|
176
|
+
}
|
|
177
|
+
);
|
|
178
|
+
}
|
|
179
|
+
);
|
|
180
|
+
Input.displayName = "Input";
|
|
181
|
+
|
|
182
|
+
// src/components/forms/label.tsx
|
|
183
|
+
var React3 = require("react");
|
|
184
|
+
var import_jsx_runtime3 = require("react/jsx-runtime");
|
|
185
|
+
function Label({ className, ...props }) {
|
|
186
|
+
return /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(
|
|
187
|
+
"label",
|
|
188
|
+
{
|
|
189
|
+
className: cn(
|
|
190
|
+
"text-sm font-medium leading-none text-gray-900",
|
|
191
|
+
className
|
|
192
|
+
),
|
|
193
|
+
...props
|
|
194
|
+
}
|
|
195
|
+
);
|
|
196
|
+
}
|
|
197
|
+
|
|
198
|
+
// src/components/forms/select.tsx
|
|
199
|
+
var React4 = __toESM(require("react"), 1);
|
|
200
|
+
var import_jsx_runtime4 = require("react/jsx-runtime");
|
|
201
|
+
var Select = React4.forwardRef(
|
|
202
|
+
({ className, children, ...props }, ref) => {
|
|
203
|
+
return /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(
|
|
204
|
+
"select",
|
|
205
|
+
{
|
|
206
|
+
ref,
|
|
207
|
+
className: cn(
|
|
208
|
+
"flex h-10 w-full rounded-xl border border-gray-300 bg-white px-3 py-2 text-sm text-gray-900 outline-none transition-colors focus:border-gray-400 disabled:cursor-not-allowed disabled:opacity-50",
|
|
209
|
+
className
|
|
210
|
+
),
|
|
211
|
+
...props,
|
|
212
|
+
children
|
|
213
|
+
}
|
|
214
|
+
);
|
|
215
|
+
}
|
|
216
|
+
);
|
|
217
|
+
Select.displayName = "Select";
|
|
218
|
+
|
|
219
|
+
// src/components/forms/switch.tsx
|
|
220
|
+
var React5 = __toESM(require("react"), 1);
|
|
221
|
+
var import_jsx_runtime5 = require("react/jsx-runtime");
|
|
222
|
+
var Switch = React5.forwardRef(
|
|
223
|
+
({ className, ...props }, ref) => {
|
|
224
|
+
return /* @__PURE__ */ (0, import_jsx_runtime5.jsxs)("label", { className: "inline-flex cursor-pointer items-center", children: [
|
|
225
|
+
/* @__PURE__ */ (0, import_jsx_runtime5.jsx)("input", { ref, type: "checkbox", className: "peer sr-only", ...props }),
|
|
226
|
+
/* @__PURE__ */ (0, import_jsx_runtime5.jsx)(
|
|
227
|
+
"span",
|
|
228
|
+
{
|
|
229
|
+
className: cn(
|
|
230
|
+
"relative h-6 w-11 rounded-full bg-gray-300 transition-colors after:absolute after:left-0.5 after:top-0.5 after:h-5 after:w-5 after:rounded-full after:bg-white after:transition-transform peer-checked:bg-gray-900 peer-checked:after:translate-x-5 peer-disabled:cursor-not-allowed peer-disabled:opacity-50",
|
|
231
|
+
className
|
|
232
|
+
)
|
|
233
|
+
}
|
|
234
|
+
)
|
|
235
|
+
] });
|
|
236
|
+
}
|
|
237
|
+
);
|
|
238
|
+
Switch.displayName = "Switch";
|
|
239
|
+
|
|
240
|
+
// src/components/forms/textarea.tsx
|
|
241
|
+
var React6 = __toESM(require("react"), 1);
|
|
242
|
+
var import_jsx_runtime6 = require("react/jsx-runtime");
|
|
243
|
+
var Textarea = React6.forwardRef(
|
|
244
|
+
({ className, ...props }, ref) => {
|
|
245
|
+
return /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(
|
|
246
|
+
"textarea",
|
|
247
|
+
{
|
|
248
|
+
ref,
|
|
249
|
+
className: cn(
|
|
250
|
+
"flex min-h-[120px] w-full rounded-xl border border-gray-300 bg-white px-3 py-2 text-sm text-gray-900 outline-none transition-colors placeholder:text-gray-400 focus:border-gray-400 disabled:cursor-not-allowed disabled:opacity-50",
|
|
251
|
+
className
|
|
252
|
+
),
|
|
253
|
+
...props
|
|
254
|
+
}
|
|
255
|
+
);
|
|
256
|
+
}
|
|
257
|
+
);
|
|
258
|
+
Textarea.displayName = "Textarea";
|
|
259
|
+
|
|
260
|
+
// src/components/display/alert.tsx
|
|
261
|
+
var React7 = require("react");
|
|
262
|
+
var import_class_variance_authority2 = require("class-variance-authority");
|
|
263
|
+
var import_jsx_runtime7 = require("react/jsx-runtime");
|
|
264
|
+
var alertVariants = (0, import_class_variance_authority2.cva)("rounded-2xl border p-4", {
|
|
265
|
+
variants: {
|
|
266
|
+
variant: {
|
|
267
|
+
default: "border-gray-200 bg-white text-gray-900",
|
|
268
|
+
success: "border-green-200 bg-green-50 text-green-800",
|
|
269
|
+
warning: "border-yellow-200 bg-yellow-50 text-yellow-800",
|
|
270
|
+
danger: "border-red-200 bg-red-50 text-red-800",
|
|
271
|
+
info: "border-blue-200 bg-blue-50 text-blue-800"
|
|
272
|
+
}
|
|
273
|
+
},
|
|
274
|
+
defaultVariants: {
|
|
275
|
+
variant: "default"
|
|
276
|
+
}
|
|
277
|
+
});
|
|
278
|
+
function Alert({ className, variant, ...props }) {
|
|
279
|
+
return /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("div", { role: "alert", className: cn(alertVariants({ variant }), className), ...props });
|
|
280
|
+
}
|
|
281
|
+
function AlertTitle({
|
|
282
|
+
className,
|
|
283
|
+
...props
|
|
284
|
+
}) {
|
|
285
|
+
return /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("h5", { className: cn("mb-1 font-semibold", className), ...props });
|
|
286
|
+
}
|
|
287
|
+
function AlertDescription({
|
|
288
|
+
className,
|
|
289
|
+
...props
|
|
290
|
+
}) {
|
|
291
|
+
return /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("p", { className: cn("text-sm opacity-90", className), ...props });
|
|
292
|
+
}
|
|
293
|
+
|
|
294
|
+
// src/components/display/avatar.tsx
|
|
295
|
+
var React8 = require("react");
|
|
296
|
+
var import_jsx_runtime8 = require("react/jsx-runtime");
|
|
297
|
+
function Avatar({
|
|
298
|
+
className,
|
|
299
|
+
src,
|
|
300
|
+
alt,
|
|
301
|
+
fallback,
|
|
302
|
+
...props
|
|
303
|
+
}) {
|
|
304
|
+
return /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(
|
|
305
|
+
"div",
|
|
306
|
+
{
|
|
307
|
+
className: cn(
|
|
308
|
+
"relative flex h-10 w-10 shrink-0 items-center justify-center overflow-hidden rounded-full bg-gray-100 text-sm font-medium text-gray-700",
|
|
309
|
+
className
|
|
310
|
+
),
|
|
311
|
+
...props,
|
|
312
|
+
children: src ? /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("img", { src, alt: alt ?? "Avatar", className: "h-full w-full object-cover" }) : /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("span", { children: fallback ?? "UI" })
|
|
313
|
+
}
|
|
314
|
+
);
|
|
315
|
+
}
|
|
316
|
+
function AvatarGroup({
|
|
317
|
+
className,
|
|
318
|
+
...props
|
|
319
|
+
}) {
|
|
320
|
+
return /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("div", { className: cn("flex -space-x-3", className), ...props });
|
|
321
|
+
}
|
|
322
|
+
|
|
323
|
+
// src/components/display/badge.tsx
|
|
324
|
+
var React9 = require("react");
|
|
325
|
+
var import_class_variance_authority3 = require("class-variance-authority");
|
|
326
|
+
var import_jsx_runtime9 = require("react/jsx-runtime");
|
|
327
|
+
var badgeVariants = (0, import_class_variance_authority3.cva)(
|
|
328
|
+
"inline-flex items-center rounded-full px-2.5 py-1 text-xs font-medium",
|
|
329
|
+
{
|
|
330
|
+
variants: {
|
|
331
|
+
variant: {
|
|
332
|
+
default: "bg-gray-900 text-white",
|
|
333
|
+
secondary: "bg-gray-100 text-gray-900",
|
|
334
|
+
success: "bg-green-100 text-green-700",
|
|
335
|
+
warning: "bg-yellow-100 text-yellow-700",
|
|
336
|
+
danger: "bg-red-100 text-red-700",
|
|
337
|
+
info: "bg-blue-100 text-blue-700"
|
|
338
|
+
}
|
|
339
|
+
},
|
|
340
|
+
defaultVariants: {
|
|
341
|
+
variant: "default"
|
|
342
|
+
}
|
|
343
|
+
}
|
|
344
|
+
);
|
|
345
|
+
function Badge({ className, variant, ...props }) {
|
|
346
|
+
return /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("div", { className: cn(badgeVariants({ variant }), className), ...props });
|
|
347
|
+
}
|
|
348
|
+
|
|
349
|
+
// src/components/display/card.tsx
|
|
350
|
+
var React10 = require("react");
|
|
351
|
+
var import_jsx_runtime10 = require("react/jsx-runtime");
|
|
352
|
+
function Card({
|
|
353
|
+
className,
|
|
354
|
+
...props
|
|
355
|
+
}) {
|
|
356
|
+
return /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(
|
|
357
|
+
"div",
|
|
358
|
+
{
|
|
359
|
+
className: cn("rounded-2xl border border-gray-200 bg-white shadow-sm", className),
|
|
360
|
+
...props
|
|
361
|
+
}
|
|
362
|
+
);
|
|
363
|
+
}
|
|
364
|
+
function CardHeader({
|
|
365
|
+
className,
|
|
366
|
+
...props
|
|
367
|
+
}) {
|
|
368
|
+
return /* @__PURE__ */ (0, import_jsx_runtime10.jsx)("div", { className: cn("p-6 pb-4", className), ...props });
|
|
369
|
+
}
|
|
370
|
+
function CardTitle({
|
|
371
|
+
className,
|
|
372
|
+
...props
|
|
373
|
+
}) {
|
|
374
|
+
return /* @__PURE__ */ (0, import_jsx_runtime10.jsx)("h3", { className: cn("text-lg font-semibold text-gray-900", className), ...props });
|
|
375
|
+
}
|
|
376
|
+
function CardDescription({
|
|
377
|
+
className,
|
|
378
|
+
...props
|
|
379
|
+
}) {
|
|
380
|
+
return /* @__PURE__ */ (0, import_jsx_runtime10.jsx)("p", { className: cn("text-sm text-gray-500", className), ...props });
|
|
381
|
+
}
|
|
382
|
+
function CardContent({
|
|
383
|
+
className,
|
|
384
|
+
...props
|
|
385
|
+
}) {
|
|
386
|
+
return /* @__PURE__ */ (0, import_jsx_runtime10.jsx)("div", { className: cn("p-6 pt-0", className), ...props });
|
|
387
|
+
}
|
|
388
|
+
function CardFooter({
|
|
389
|
+
className,
|
|
390
|
+
...props
|
|
391
|
+
}) {
|
|
392
|
+
return /* @__PURE__ */ (0, import_jsx_runtime10.jsx)("div", { className: cn("flex items-center p-6 pt-4", className), ...props });
|
|
393
|
+
}
|
|
394
|
+
|
|
395
|
+
// src/components/display/empty-state.tsx
|
|
396
|
+
var React11 = require("react");
|
|
397
|
+
var import_jsx_runtime11 = require("react/jsx-runtime");
|
|
398
|
+
function EmptyState({
|
|
399
|
+
className,
|
|
400
|
+
...props
|
|
401
|
+
}) {
|
|
402
|
+
return /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(
|
|
403
|
+
"div",
|
|
404
|
+
{
|
|
405
|
+
className: cn(
|
|
406
|
+
"flex flex-col items-center justify-center rounded-2xl border border-dashed border-gray-300 bg-gray-50 p-10 text-center",
|
|
407
|
+
className
|
|
408
|
+
),
|
|
409
|
+
...props
|
|
410
|
+
}
|
|
411
|
+
);
|
|
412
|
+
}
|
|
413
|
+
function EmptyStateTitle({
|
|
414
|
+
className,
|
|
415
|
+
...props
|
|
416
|
+
}) {
|
|
417
|
+
return /* @__PURE__ */ (0, import_jsx_runtime11.jsx)("h3", { className: cn("mt-4 text-lg font-semibold text-gray-900", className), ...props });
|
|
418
|
+
}
|
|
419
|
+
function EmptyStateDescription({
|
|
420
|
+
className,
|
|
421
|
+
...props
|
|
422
|
+
}) {
|
|
423
|
+
return /* @__PURE__ */ (0, import_jsx_runtime11.jsx)("p", { className: cn("mt-2 max-w-md text-sm text-gray-500", className), ...props });
|
|
424
|
+
}
|
|
425
|
+
function EmptyStateActions({
|
|
426
|
+
className,
|
|
427
|
+
...props
|
|
428
|
+
}) {
|
|
429
|
+
return /* @__PURE__ */ (0, import_jsx_runtime11.jsx)("div", { className: cn("mt-6 flex items-center gap-3", className), ...props });
|
|
430
|
+
}
|
|
431
|
+
|
|
432
|
+
// src/components/display/stat.tsx
|
|
433
|
+
var React12 = require("react");
|
|
434
|
+
var import_jsx_runtime12 = require("react/jsx-runtime");
|
|
435
|
+
function Stat({
|
|
436
|
+
className,
|
|
437
|
+
...props
|
|
438
|
+
}) {
|
|
439
|
+
return /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(
|
|
440
|
+
"div",
|
|
441
|
+
{
|
|
442
|
+
className: cn("rounded-2xl border border-gray-200 bg-white p-6 shadow-sm", className),
|
|
443
|
+
...props
|
|
444
|
+
}
|
|
445
|
+
);
|
|
446
|
+
}
|
|
447
|
+
function StatLabel({
|
|
448
|
+
className,
|
|
449
|
+
...props
|
|
450
|
+
}) {
|
|
451
|
+
return /* @__PURE__ */ (0, import_jsx_runtime12.jsx)("p", { className: cn("text-sm text-gray-500", className), ...props });
|
|
452
|
+
}
|
|
453
|
+
function StatValue({
|
|
454
|
+
className,
|
|
455
|
+
...props
|
|
456
|
+
}) {
|
|
457
|
+
return /* @__PURE__ */ (0, import_jsx_runtime12.jsx)("p", { className: cn("mt-2 text-3xl font-semibold text-gray-900", className), ...props });
|
|
458
|
+
}
|
|
459
|
+
function StatChange({
|
|
460
|
+
className,
|
|
461
|
+
...props
|
|
462
|
+
}) {
|
|
463
|
+
return /* @__PURE__ */ (0, import_jsx_runtime12.jsx)("p", { className: cn("mt-2 text-sm font-medium text-gray-600", className), ...props });
|
|
464
|
+
}
|
|
465
|
+
|
|
466
|
+
// src/components/primitives/box.tsx
|
|
467
|
+
var React13 = require("react");
|
|
468
|
+
var import_jsx_runtime13 = require("react/jsx-runtime");
|
|
469
|
+
function Box({
|
|
470
|
+
className,
|
|
471
|
+
...props
|
|
472
|
+
}) {
|
|
473
|
+
return /* @__PURE__ */ (0, import_jsx_runtime13.jsx)("div", { className: cn(className), ...props });
|
|
474
|
+
}
|
|
475
|
+
|
|
476
|
+
// src/components/primitives/container.tsx
|
|
477
|
+
var React14 = require("react");
|
|
478
|
+
var import_jsx_runtime14 = require("react/jsx-runtime");
|
|
479
|
+
function Container({
|
|
480
|
+
className,
|
|
481
|
+
size = "lg",
|
|
482
|
+
...props
|
|
483
|
+
}) {
|
|
484
|
+
const sizes = {
|
|
485
|
+
sm: "max-w-3xl",
|
|
486
|
+
md: "max-w-5xl",
|
|
487
|
+
lg: "max-w-7xl",
|
|
488
|
+
full: "max-w-none"
|
|
489
|
+
};
|
|
490
|
+
return /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(
|
|
491
|
+
"div",
|
|
492
|
+
{
|
|
493
|
+
className: cn("mx-auto w-full px-4 sm:px-6 lg:px-8", sizes[size], className),
|
|
494
|
+
...props
|
|
495
|
+
}
|
|
496
|
+
);
|
|
497
|
+
}
|
|
498
|
+
|
|
499
|
+
// src/components/primitives/divider.tsx
|
|
500
|
+
var React15 = require("react");
|
|
501
|
+
var import_jsx_runtime15 = require("react/jsx-runtime");
|
|
502
|
+
function Divider({
|
|
503
|
+
className,
|
|
504
|
+
orientation = "horizontal",
|
|
505
|
+
...props
|
|
506
|
+
}) {
|
|
507
|
+
if (orientation === "vertical") {
|
|
508
|
+
return /* @__PURE__ */ (0, import_jsx_runtime15.jsx)("div", { className: cn("h-full w-px bg-gray-200", className), ...props });
|
|
509
|
+
}
|
|
510
|
+
return /* @__PURE__ */ (0, import_jsx_runtime15.jsx)("hr", { className: cn("w-full border-0 border-t border-gray-200", className), ...props });
|
|
511
|
+
}
|
|
512
|
+
|
|
513
|
+
// src/components/primitives/grid.tsx
|
|
514
|
+
var React16 = require("react");
|
|
515
|
+
var import_jsx_runtime16 = require("react/jsx-runtime");
|
|
516
|
+
function Grid({
|
|
517
|
+
className,
|
|
518
|
+
cols = 3,
|
|
519
|
+
gap = "md",
|
|
520
|
+
...props
|
|
521
|
+
}) {
|
|
522
|
+
const colsClasses = {
|
|
523
|
+
1: "grid-cols-1",
|
|
524
|
+
2: "grid-cols-2",
|
|
525
|
+
3: "grid-cols-1 md:grid-cols-2 lg:grid-cols-3",
|
|
526
|
+
4: "grid-cols-1 md:grid-cols-2 lg:grid-cols-4",
|
|
527
|
+
5: "grid-cols-1 md:grid-cols-2 lg:grid-cols-5",
|
|
528
|
+
6: "grid-cols-1 md:grid-cols-2 lg:grid-cols-6",
|
|
529
|
+
12: "grid-cols-12"
|
|
530
|
+
};
|
|
531
|
+
const gapClasses = {
|
|
532
|
+
xs: "gap-1",
|
|
533
|
+
sm: "gap-2",
|
|
534
|
+
md: "gap-4",
|
|
535
|
+
lg: "gap-6",
|
|
536
|
+
xl: "gap-8"
|
|
537
|
+
};
|
|
538
|
+
return /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(
|
|
539
|
+
"div",
|
|
540
|
+
{
|
|
541
|
+
className: cn("grid", colsClasses[cols], gapClasses[gap], className),
|
|
542
|
+
...props
|
|
543
|
+
}
|
|
544
|
+
);
|
|
545
|
+
}
|
|
546
|
+
|
|
547
|
+
// src/components/primitives/section.tsx
|
|
548
|
+
var React17 = require("react");
|
|
549
|
+
var import_jsx_runtime17 = require("react/jsx-runtime");
|
|
550
|
+
function Section({
|
|
551
|
+
className,
|
|
552
|
+
spacing = "lg",
|
|
553
|
+
as: Comp = "section",
|
|
554
|
+
...props
|
|
555
|
+
}) {
|
|
556
|
+
const spacingClasses = {
|
|
557
|
+
sm: "py-8",
|
|
558
|
+
md: "py-12",
|
|
559
|
+
lg: "py-16",
|
|
560
|
+
xl: "py-24"
|
|
561
|
+
};
|
|
562
|
+
return /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(Comp, { className: cn(spacingClasses[spacing], className), ...props });
|
|
563
|
+
}
|
|
564
|
+
function SectionHeader({
|
|
565
|
+
className,
|
|
566
|
+
...props
|
|
567
|
+
}) {
|
|
568
|
+
return /* @__PURE__ */ (0, import_jsx_runtime17.jsx)("div", { className: cn("mb-10 space-y-3", className), ...props });
|
|
569
|
+
}
|
|
570
|
+
function SectionTitle({
|
|
571
|
+
className,
|
|
572
|
+
...props
|
|
573
|
+
}) {
|
|
574
|
+
return /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(
|
|
575
|
+
"h2",
|
|
576
|
+
{
|
|
577
|
+
className: cn("text-3xl font-semibold tracking-tight text-gray-900", className),
|
|
578
|
+
...props
|
|
579
|
+
}
|
|
580
|
+
);
|
|
581
|
+
}
|
|
582
|
+
function SectionDescription({
|
|
583
|
+
className,
|
|
584
|
+
...props
|
|
585
|
+
}) {
|
|
586
|
+
return /* @__PURE__ */ (0, import_jsx_runtime17.jsx)("p", { className: cn("max-w-2xl text-sm text-gray-500", className), ...props });
|
|
587
|
+
}
|
|
588
|
+
|
|
589
|
+
// src/components/primitives/stack.tsx
|
|
590
|
+
var React18 = require("react");
|
|
591
|
+
var import_jsx_runtime18 = require("react/jsx-runtime");
|
|
592
|
+
function Stack({
|
|
593
|
+
className,
|
|
594
|
+
direction = "col",
|
|
595
|
+
gap = "md",
|
|
596
|
+
...props
|
|
597
|
+
}) {
|
|
598
|
+
const directionClasses = {
|
|
599
|
+
row: "flex flex-row",
|
|
600
|
+
col: "flex flex-col"
|
|
601
|
+
};
|
|
602
|
+
const gapClasses = {
|
|
603
|
+
xs: "gap-1",
|
|
604
|
+
sm: "gap-2",
|
|
605
|
+
md: "gap-4",
|
|
606
|
+
lg: "gap-6",
|
|
607
|
+
xl: "gap-8"
|
|
608
|
+
};
|
|
609
|
+
return /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(
|
|
610
|
+
"div",
|
|
611
|
+
{
|
|
612
|
+
className: cn(directionClasses[direction], gapClasses[gap], className),
|
|
613
|
+
...props
|
|
614
|
+
}
|
|
615
|
+
);
|
|
616
|
+
}
|
|
617
|
+
|
|
618
|
+
// src/components/navigation/breadcrumb.tsx
|
|
619
|
+
var React19 = require("react");
|
|
620
|
+
var import_jsx_runtime19 = require("react/jsx-runtime");
|
|
621
|
+
function Breadcrumb({
|
|
622
|
+
className,
|
|
623
|
+
...props
|
|
624
|
+
}) {
|
|
625
|
+
return /* @__PURE__ */ (0, import_jsx_runtime19.jsx)("nav", { "aria-label": "Breadcrumb", className: cn("text-sm text-gray-500", className), ...props });
|
|
626
|
+
}
|
|
627
|
+
function BreadcrumbList({
|
|
628
|
+
className,
|
|
629
|
+
...props
|
|
630
|
+
}) {
|
|
631
|
+
return /* @__PURE__ */ (0, import_jsx_runtime19.jsx)("ol", { className: cn("flex flex-wrap items-center gap-2", className), ...props });
|
|
632
|
+
}
|
|
633
|
+
function BreadcrumbItem({
|
|
634
|
+
className,
|
|
635
|
+
...props
|
|
636
|
+
}) {
|
|
637
|
+
return /* @__PURE__ */ (0, import_jsx_runtime19.jsx)("li", { className: cn("inline-flex items-center gap-2", className), ...props });
|
|
638
|
+
}
|
|
639
|
+
function BreadcrumbSeparator({
|
|
640
|
+
className,
|
|
641
|
+
children = "/",
|
|
642
|
+
...props
|
|
643
|
+
}) {
|
|
644
|
+
return /* @__PURE__ */ (0, import_jsx_runtime19.jsx)("span", { className: cn("text-gray-400", className), ...props, children });
|
|
645
|
+
}
|
|
646
|
+
function BreadcrumbPage({
|
|
647
|
+
className,
|
|
648
|
+
...props
|
|
649
|
+
}) {
|
|
650
|
+
return /* @__PURE__ */ (0, import_jsx_runtime19.jsx)("span", { className: cn("font-medium text-gray-900", className), ...props });
|
|
651
|
+
}
|
|
652
|
+
|
|
653
|
+
// src/components/navigation/header.tsx
|
|
654
|
+
var React20 = require("react");
|
|
655
|
+
var import_jsx_runtime20 = require("react/jsx-runtime");
|
|
656
|
+
function Header({
|
|
657
|
+
className,
|
|
658
|
+
...props
|
|
659
|
+
}) {
|
|
660
|
+
return /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
|
|
661
|
+
"header",
|
|
662
|
+
{
|
|
663
|
+
className: cn("w-full border-b border-gray-200 bg-white", className),
|
|
664
|
+
...props
|
|
665
|
+
}
|
|
666
|
+
);
|
|
667
|
+
}
|
|
668
|
+
function HeaderInner({
|
|
669
|
+
className,
|
|
670
|
+
...props
|
|
671
|
+
}) {
|
|
672
|
+
return /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
|
|
673
|
+
"div",
|
|
674
|
+
{
|
|
675
|
+
className: cn(
|
|
676
|
+
"mx-auto flex h-16 max-w-7xl items-center justify-between px-4 sm:px-6 lg:px-8",
|
|
677
|
+
className
|
|
678
|
+
),
|
|
679
|
+
...props
|
|
680
|
+
}
|
|
681
|
+
);
|
|
682
|
+
}
|
|
683
|
+
function HeaderBrand({
|
|
684
|
+
className,
|
|
685
|
+
...props
|
|
686
|
+
}) {
|
|
687
|
+
return /* @__PURE__ */ (0, import_jsx_runtime20.jsx)("div", { className: cn("flex items-center gap-3 font-semibold text-gray-900", className), ...props });
|
|
688
|
+
}
|
|
689
|
+
function HeaderNav({
|
|
690
|
+
className,
|
|
691
|
+
...props
|
|
692
|
+
}) {
|
|
693
|
+
return /* @__PURE__ */ (0, import_jsx_runtime20.jsx)("nav", { className: cn("hidden items-center gap-6 md:flex", className), ...props });
|
|
694
|
+
}
|
|
695
|
+
function HeaderActions({
|
|
696
|
+
className,
|
|
697
|
+
...props
|
|
698
|
+
}) {
|
|
699
|
+
return /* @__PURE__ */ (0, import_jsx_runtime20.jsx)("div", { className: cn("flex items-center gap-3", className), ...props });
|
|
700
|
+
}
|
|
701
|
+
|
|
702
|
+
// src/components/navigation/pagination.tsx
|
|
703
|
+
var React21 = require("react");
|
|
704
|
+
var import_jsx_runtime21 = require("react/jsx-runtime");
|
|
705
|
+
function Pagination({
|
|
706
|
+
className,
|
|
707
|
+
...props
|
|
708
|
+
}) {
|
|
709
|
+
return /* @__PURE__ */ (0, import_jsx_runtime21.jsx)("nav", { "aria-label": "Pagination", className: cn("flex items-center justify-center", className), ...props });
|
|
710
|
+
}
|
|
711
|
+
function PaginationList({
|
|
712
|
+
className,
|
|
713
|
+
...props
|
|
714
|
+
}) {
|
|
715
|
+
return /* @__PURE__ */ (0, import_jsx_runtime21.jsx)("ul", { className: cn("flex items-center gap-2", className), ...props });
|
|
716
|
+
}
|
|
717
|
+
function PaginationItem({
|
|
718
|
+
className,
|
|
719
|
+
...props
|
|
720
|
+
}) {
|
|
721
|
+
return /* @__PURE__ */ (0, import_jsx_runtime21.jsx)("li", { className: cn(className), ...props });
|
|
722
|
+
}
|
|
723
|
+
function PaginationLink({
|
|
724
|
+
className,
|
|
725
|
+
isActive,
|
|
726
|
+
...props
|
|
727
|
+
}) {
|
|
728
|
+
return /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
|
|
729
|
+
"a",
|
|
730
|
+
{
|
|
731
|
+
className: cn(
|
|
732
|
+
"inline-flex h-9 min-w-9 items-center justify-center rounded-lg px-3 text-sm transition-colors",
|
|
733
|
+
isActive ? "bg-gray-900 text-white" : "border border-gray-300 bg-white text-gray-900 hover:bg-gray-50",
|
|
734
|
+
className
|
|
735
|
+
),
|
|
736
|
+
...props
|
|
737
|
+
}
|
|
738
|
+
);
|
|
739
|
+
}
|
|
740
|
+
|
|
741
|
+
// src/components/navigation/tabs.tsx
|
|
742
|
+
var React22 = require("react");
|
|
743
|
+
var import_jsx_runtime22 = require("react/jsx-runtime");
|
|
744
|
+
function Tabs({
|
|
745
|
+
className,
|
|
746
|
+
...props
|
|
747
|
+
}) {
|
|
748
|
+
return /* @__PURE__ */ (0, import_jsx_runtime22.jsx)("div", { className: cn("w-full", className), ...props });
|
|
749
|
+
}
|
|
750
|
+
function TabsList({
|
|
751
|
+
className,
|
|
752
|
+
...props
|
|
753
|
+
}) {
|
|
754
|
+
return /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(
|
|
755
|
+
"div",
|
|
756
|
+
{
|
|
757
|
+
className: cn(
|
|
758
|
+
"inline-flex items-center rounded-xl bg-gray-100 p-1",
|
|
759
|
+
className
|
|
760
|
+
),
|
|
761
|
+
...props
|
|
762
|
+
}
|
|
763
|
+
);
|
|
764
|
+
}
|
|
765
|
+
function TabsTrigger({
|
|
766
|
+
className,
|
|
767
|
+
active,
|
|
768
|
+
...props
|
|
769
|
+
}) {
|
|
770
|
+
return /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(
|
|
771
|
+
"button",
|
|
772
|
+
{
|
|
773
|
+
className: cn(
|
|
774
|
+
"inline-flex items-center rounded-lg px-3 py-2 text-sm font-medium transition-colors",
|
|
775
|
+
active ? "bg-white text-gray-900 shadow-sm" : "text-gray-600 hover:text-gray-900",
|
|
776
|
+
className
|
|
777
|
+
),
|
|
778
|
+
...props
|
|
779
|
+
}
|
|
780
|
+
);
|
|
781
|
+
}
|
|
782
|
+
function TabsContent({
|
|
783
|
+
className,
|
|
784
|
+
...props
|
|
785
|
+
}) {
|
|
786
|
+
return /* @__PURE__ */ (0, import_jsx_runtime22.jsx)("div", { className: cn("mt-4", className), ...props });
|
|
787
|
+
}
|
|
788
|
+
|
|
789
|
+
// src/components/overlays/drawer.tsx
|
|
790
|
+
var React23 = require("react");
|
|
791
|
+
var import_jsx_runtime23 = require("react/jsx-runtime");
|
|
792
|
+
function Drawer({
|
|
793
|
+
className,
|
|
794
|
+
open = true,
|
|
795
|
+
side = "right",
|
|
796
|
+
...props
|
|
797
|
+
}) {
|
|
798
|
+
if (!open) return null;
|
|
799
|
+
return /* @__PURE__ */ (0, import_jsx_runtime23.jsx)("div", { className: "fixed inset-0 z-50 bg-black/40", children: /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(
|
|
800
|
+
"div",
|
|
801
|
+
{
|
|
802
|
+
className: cn(
|
|
803
|
+
"absolute top-0 h-full w-full max-w-md bg-white shadow-xl",
|
|
804
|
+
side === "right" ? "right-0" : "left-0",
|
|
805
|
+
className
|
|
806
|
+
),
|
|
807
|
+
...props
|
|
808
|
+
}
|
|
809
|
+
) });
|
|
810
|
+
}
|
|
811
|
+
|
|
812
|
+
// src/components/overlays/dropdown.tsx
|
|
813
|
+
var React24 = require("react");
|
|
814
|
+
var import_jsx_runtime24 = require("react/jsx-runtime");
|
|
815
|
+
function Dropdown({
|
|
816
|
+
className,
|
|
817
|
+
...props
|
|
818
|
+
}) {
|
|
819
|
+
return /* @__PURE__ */ (0, import_jsx_runtime24.jsx)("div", { className: cn("relative inline-block text-left", className), ...props });
|
|
820
|
+
}
|
|
821
|
+
function DropdownMenu({
|
|
822
|
+
className,
|
|
823
|
+
...props
|
|
824
|
+
}) {
|
|
825
|
+
return /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(
|
|
826
|
+
"div",
|
|
827
|
+
{
|
|
828
|
+
className: cn(
|
|
829
|
+
"absolute right-0 z-50 mt-2 min-w-48 rounded-xl border border-gray-200 bg-white p-2 shadow-lg",
|
|
830
|
+
className
|
|
831
|
+
),
|
|
832
|
+
...props
|
|
833
|
+
}
|
|
834
|
+
);
|
|
835
|
+
}
|
|
836
|
+
function DropdownItem({
|
|
837
|
+
className,
|
|
838
|
+
...props
|
|
839
|
+
}) {
|
|
840
|
+
return /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(
|
|
841
|
+
"button",
|
|
842
|
+
{
|
|
843
|
+
className: cn(
|
|
844
|
+
"flex w-full items-center rounded-lg px-3 py-2 text-sm text-gray-700 transition-colors hover:bg-gray-100",
|
|
845
|
+
className
|
|
846
|
+
),
|
|
847
|
+
...props
|
|
848
|
+
}
|
|
849
|
+
);
|
|
850
|
+
}
|
|
851
|
+
|
|
852
|
+
// src/components/overlays/modal.tsx
|
|
853
|
+
var React25 = require("react");
|
|
854
|
+
var import_jsx_runtime25 = require("react/jsx-runtime");
|
|
855
|
+
function Modal({
|
|
856
|
+
className,
|
|
857
|
+
open = true,
|
|
858
|
+
...props
|
|
859
|
+
}) {
|
|
860
|
+
if (!open) return null;
|
|
861
|
+
return /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(
|
|
862
|
+
"div",
|
|
863
|
+
{
|
|
864
|
+
className: "fixed inset-0 z-50 flex items-center justify-center bg-black/40 p-4",
|
|
865
|
+
"aria-modal": "true",
|
|
866
|
+
role: "dialog",
|
|
867
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(
|
|
868
|
+
"div",
|
|
869
|
+
{
|
|
870
|
+
className: cn(
|
|
871
|
+
"w-full max-w-lg rounded-2xl bg-white shadow-xl",
|
|
872
|
+
className
|
|
873
|
+
),
|
|
874
|
+
...props
|
|
875
|
+
}
|
|
876
|
+
)
|
|
877
|
+
}
|
|
878
|
+
);
|
|
879
|
+
}
|
|
880
|
+
function ModalHeader({
|
|
881
|
+
className,
|
|
882
|
+
...props
|
|
883
|
+
}) {
|
|
884
|
+
return /* @__PURE__ */ (0, import_jsx_runtime25.jsx)("div", { className: cn("border-b border-gray-200 p-6", className), ...props });
|
|
885
|
+
}
|
|
886
|
+
function ModalTitle({
|
|
887
|
+
className,
|
|
888
|
+
...props
|
|
889
|
+
}) {
|
|
890
|
+
return /* @__PURE__ */ (0, import_jsx_runtime25.jsx)("h2", { className: cn("text-lg font-semibold text-gray-900", className), ...props });
|
|
891
|
+
}
|
|
892
|
+
function ModalDescription({
|
|
893
|
+
className,
|
|
894
|
+
...props
|
|
895
|
+
}) {
|
|
896
|
+
return /* @__PURE__ */ (0, import_jsx_runtime25.jsx)("p", { className: cn("mt-1 text-sm text-gray-500", className), ...props });
|
|
897
|
+
}
|
|
898
|
+
function ModalContent({
|
|
899
|
+
className,
|
|
900
|
+
...props
|
|
901
|
+
}) {
|
|
902
|
+
return /* @__PURE__ */ (0, import_jsx_runtime25.jsx)("div", { className: cn("p-6", className), ...props });
|
|
903
|
+
}
|
|
904
|
+
function ModalFooter({
|
|
905
|
+
className,
|
|
906
|
+
...props
|
|
907
|
+
}) {
|
|
908
|
+
return /* @__PURE__ */ (0, import_jsx_runtime25.jsx)("div", { className: cn("flex items-center justify-end gap-3 border-t border-gray-200 p-6", className), ...props });
|
|
909
|
+
}
|
|
910
|
+
|
|
911
|
+
// src/components/overlays/toast.tsx
|
|
912
|
+
var React26 = require("react");
|
|
913
|
+
var import_class_variance_authority4 = require("class-variance-authority");
|
|
914
|
+
var import_jsx_runtime26 = require("react/jsx-runtime");
|
|
915
|
+
var toastVariants = (0, import_class_variance_authority4.cva)(
|
|
916
|
+
"w-full max-w-sm rounded-2xl border p-4 shadow-lg",
|
|
917
|
+
{
|
|
918
|
+
variants: {
|
|
919
|
+
variant: {
|
|
920
|
+
default: "border-gray-200 bg-white text-gray-900",
|
|
921
|
+
success: "border-green-200 bg-green-50 text-green-800",
|
|
922
|
+
warning: "border-yellow-200 bg-yellow-50 text-yellow-800",
|
|
923
|
+
danger: "border-red-200 bg-red-50 text-red-800",
|
|
924
|
+
info: "border-blue-200 bg-blue-50 text-blue-800"
|
|
925
|
+
}
|
|
926
|
+
},
|
|
927
|
+
defaultVariants: {
|
|
928
|
+
variant: "default"
|
|
929
|
+
}
|
|
930
|
+
}
|
|
931
|
+
);
|
|
932
|
+
function Toast({ className, variant, ...props }) {
|
|
933
|
+
return /* @__PURE__ */ (0, import_jsx_runtime26.jsx)("div", { className: cn(toastVariants({ variant }), className), ...props });
|
|
934
|
+
}
|
|
935
|
+
function ToastTitle({
|
|
936
|
+
className,
|
|
937
|
+
...props
|
|
938
|
+
}) {
|
|
939
|
+
return /* @__PURE__ */ (0, import_jsx_runtime26.jsx)("h4", { className: cn("font-semibold", className), ...props });
|
|
940
|
+
}
|
|
941
|
+
function ToastDescription({
|
|
942
|
+
className,
|
|
943
|
+
...props
|
|
944
|
+
}) {
|
|
945
|
+
return /* @__PURE__ */ (0, import_jsx_runtime26.jsx)("p", { className: cn("mt-1 text-sm opacity-90", className), ...props });
|
|
946
|
+
}
|
|
947
|
+
function ToastViewport({
|
|
948
|
+
className,
|
|
949
|
+
...props
|
|
950
|
+
}) {
|
|
951
|
+
return /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(
|
|
952
|
+
"div",
|
|
953
|
+
{
|
|
954
|
+
className: cn("fixed right-4 top-4 z-50 flex flex-col gap-3", className),
|
|
955
|
+
...props
|
|
956
|
+
}
|
|
957
|
+
);
|
|
958
|
+
}
|
|
959
|
+
|
|
960
|
+
// src/components/overlays/tooltip.tsx
|
|
961
|
+
var React27 = require("react");
|
|
962
|
+
var import_jsx_runtime27 = require("react/jsx-runtime");
|
|
963
|
+
function Tooltip({
|
|
964
|
+
className,
|
|
965
|
+
...props
|
|
966
|
+
}) {
|
|
967
|
+
return /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(
|
|
968
|
+
"div",
|
|
969
|
+
{
|
|
970
|
+
role: "tooltip",
|
|
971
|
+
className: cn(
|
|
972
|
+
"inline-flex rounded-lg bg-gray-900 px-2 py-1 text-xs text-white shadow-md",
|
|
973
|
+
className
|
|
974
|
+
),
|
|
975
|
+
...props
|
|
976
|
+
}
|
|
977
|
+
);
|
|
978
|
+
}
|
|
979
|
+
|
|
980
|
+
// src/components/marketing/hero.tsx
|
|
981
|
+
var React28 = require("react");
|
|
982
|
+
var import_jsx_runtime28 = require("react/jsx-runtime");
|
|
983
|
+
function Hero({
|
|
984
|
+
className,
|
|
985
|
+
...props
|
|
986
|
+
}) {
|
|
987
|
+
return /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(
|
|
988
|
+
"section",
|
|
989
|
+
{
|
|
990
|
+
className: cn("relative overflow-hidden py-20 sm:py-28", className),
|
|
991
|
+
...props
|
|
992
|
+
}
|
|
993
|
+
);
|
|
994
|
+
}
|
|
995
|
+
function HeroContent({
|
|
996
|
+
className,
|
|
997
|
+
...props
|
|
998
|
+
}) {
|
|
999
|
+
return /* @__PURE__ */ (0, import_jsx_runtime28.jsx)("div", { className: cn("mx-auto max-w-3xl text-center", className), ...props });
|
|
1000
|
+
}
|
|
1001
|
+
function HeroBadge({
|
|
1002
|
+
className,
|
|
1003
|
+
...props
|
|
1004
|
+
}) {
|
|
1005
|
+
return /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(
|
|
1006
|
+
"div",
|
|
1007
|
+
{
|
|
1008
|
+
className: cn(
|
|
1009
|
+
"mb-6 inline-flex items-center rounded-full border border-gray-200 bg-white px-3 py-1 text-sm text-gray-600 shadow-sm",
|
|
1010
|
+
className
|
|
1011
|
+
),
|
|
1012
|
+
...props
|
|
1013
|
+
}
|
|
1014
|
+
);
|
|
1015
|
+
}
|
|
1016
|
+
function HeroTitle({
|
|
1017
|
+
className,
|
|
1018
|
+
...props
|
|
1019
|
+
}) {
|
|
1020
|
+
return /* @__PURE__ */ (0, import_jsx_runtime28.jsx)("h1", { className: cn("text-4xl font-semibold tracking-tight text-gray-900 sm:text-6xl", className), ...props });
|
|
1021
|
+
}
|
|
1022
|
+
function HeroDescription({
|
|
1023
|
+
className,
|
|
1024
|
+
...props
|
|
1025
|
+
}) {
|
|
1026
|
+
return /* @__PURE__ */ (0, import_jsx_runtime28.jsx)("p", { className: cn("mx-auto mt-6 max-w-2xl text-base text-gray-500 sm:text-lg", className), ...props });
|
|
1027
|
+
}
|
|
1028
|
+
function HeroActions({
|
|
1029
|
+
className,
|
|
1030
|
+
...props
|
|
1031
|
+
}) {
|
|
1032
|
+
return /* @__PURE__ */ (0, import_jsx_runtime28.jsx)("div", { className: cn("mt-8 flex flex-wrap items-center justify-center gap-3", className), ...props });
|
|
1033
|
+
}
|
|
1034
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
1035
|
+
0 && (module.exports = {
|
|
1036
|
+
Alert,
|
|
1037
|
+
AlertDescription,
|
|
1038
|
+
AlertTitle,
|
|
1039
|
+
Avatar,
|
|
1040
|
+
AvatarGroup,
|
|
1041
|
+
Badge,
|
|
1042
|
+
Box,
|
|
1043
|
+
Breadcrumb,
|
|
1044
|
+
BreadcrumbItem,
|
|
1045
|
+
BreadcrumbList,
|
|
1046
|
+
BreadcrumbPage,
|
|
1047
|
+
BreadcrumbSeparator,
|
|
1048
|
+
Button,
|
|
1049
|
+
Card,
|
|
1050
|
+
CardContent,
|
|
1051
|
+
CardDescription,
|
|
1052
|
+
CardFooter,
|
|
1053
|
+
CardHeader,
|
|
1054
|
+
CardTitle,
|
|
1055
|
+
Container,
|
|
1056
|
+
Divider,
|
|
1057
|
+
Drawer,
|
|
1058
|
+
Dropdown,
|
|
1059
|
+
DropdownItem,
|
|
1060
|
+
DropdownMenu,
|
|
1061
|
+
EmptyState,
|
|
1062
|
+
EmptyStateActions,
|
|
1063
|
+
EmptyStateDescription,
|
|
1064
|
+
EmptyStateTitle,
|
|
1065
|
+
Grid,
|
|
1066
|
+
Header,
|
|
1067
|
+
HeaderActions,
|
|
1068
|
+
HeaderBrand,
|
|
1069
|
+
HeaderInner,
|
|
1070
|
+
HeaderNav,
|
|
1071
|
+
Hero,
|
|
1072
|
+
HeroActions,
|
|
1073
|
+
HeroBadge,
|
|
1074
|
+
HeroContent,
|
|
1075
|
+
HeroDescription,
|
|
1076
|
+
HeroTitle,
|
|
1077
|
+
Input,
|
|
1078
|
+
Label,
|
|
1079
|
+
Modal,
|
|
1080
|
+
ModalContent,
|
|
1081
|
+
ModalDescription,
|
|
1082
|
+
ModalFooter,
|
|
1083
|
+
ModalHeader,
|
|
1084
|
+
ModalTitle,
|
|
1085
|
+
Pagination,
|
|
1086
|
+
PaginationItem,
|
|
1087
|
+
PaginationLink,
|
|
1088
|
+
PaginationList,
|
|
1089
|
+
Section,
|
|
1090
|
+
SectionDescription,
|
|
1091
|
+
SectionHeader,
|
|
1092
|
+
SectionTitle,
|
|
1093
|
+
Select,
|
|
1094
|
+
Stack,
|
|
1095
|
+
Stat,
|
|
1096
|
+
StatChange,
|
|
1097
|
+
StatLabel,
|
|
1098
|
+
StatValue,
|
|
1099
|
+
Switch,
|
|
1100
|
+
Tabs,
|
|
1101
|
+
TabsContent,
|
|
1102
|
+
TabsList,
|
|
1103
|
+
TabsTrigger,
|
|
1104
|
+
Textarea,
|
|
1105
|
+
Toast,
|
|
1106
|
+
ToastDescription,
|
|
1107
|
+
ToastTitle,
|
|
1108
|
+
ToastViewport,
|
|
1109
|
+
Tooltip,
|
|
1110
|
+
cn
|
|
1111
|
+
});
|