@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/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
+ });