katalyst-riya-test 0.1.2 → 0.1.4

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,965 @@
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/app/index.ts
31
+ var app_exports = {};
32
+ __export(app_exports, {
33
+ Accordion: () => Accordion,
34
+ AccordionContent: () => AccordionContent,
35
+ AccordionItem: () => AccordionItem,
36
+ AccordionTrigger: () => AccordionTrigger,
37
+ Button: () => Button_default,
38
+ Caption: () => Caption_default,
39
+ Card: () => Card,
40
+ CardBg: () => CardBg,
41
+ CardContent: () => CardContent,
42
+ CardDescription: () => CardDescription,
43
+ CardFooter: () => CardFooter,
44
+ CardHeader: () => CardHeader,
45
+ CardIcon: () => CardIcon,
46
+ CardTitle: () => CardTitle,
47
+ Checkbox: () => Checkbox_default,
48
+ Chip: () => Chip_default,
49
+ Dropdown: () => Dropdown,
50
+ Footer: () => Footer,
51
+ FooterContent: () => FooterContent,
52
+ FooterHeader: () => FooterHeader,
53
+ FooterIcons: () => FooterIcons,
54
+ FooterList: () => FooterList,
55
+ ImageCard: () => ImageCard_default,
56
+ Input: () => Input_default,
57
+ Label: () => Label_default,
58
+ ListItem: () => ListItem_default,
59
+ MenuItem: () => MenuItem,
60
+ MenuSubItem: () => MenuSubItem,
61
+ Paragraph: () => Paragraph_default,
62
+ Slider: () => Slider_default,
63
+ StatsCard: () => StatsCard_default,
64
+ Textarea: () => Textarea_default,
65
+ Toggle: () => Toggle_default,
66
+ Typography: () => Typography_default
67
+ });
68
+ module.exports = __toCommonJS(app_exports);
69
+
70
+ // src/utils/util.ts
71
+ var import_clsx = __toESM(require("clsx"), 1);
72
+ var import_tailwind_merge = require("tailwind-merge");
73
+ var cn = (...classes) => (0, import_tailwind_merge.twMerge)((0, import_clsx.default)(...classes));
74
+
75
+ // src/components/Accordion.tsx
76
+ var import_react = __toESM(require("react"), 1);
77
+ var import_fi = require("react-icons/fi");
78
+ function Accordion({
79
+ type = "single",
80
+ collapsible = true,
81
+ className,
82
+ children
83
+ }) {
84
+ const [openItems, setOpenItems] = (0, import_react.useState)([]);
85
+ const handleToggle = (value) => {
86
+ if (type === "single") {
87
+ setOpenItems(
88
+ (prev) => prev.includes(value) ? collapsible ? [] : prev : [value]
89
+ );
90
+ } else {
91
+ setOpenItems(
92
+ (prev) => prev.includes(value) ? prev.filter((item) => item !== value) : [...prev, value]
93
+ );
94
+ }
95
+ };
96
+ return /* @__PURE__ */ import_react.default.createElement("div", { className }, import_react.default.Children.map(children, (child) => {
97
+ if (import_react.default.isValidElement(child)) {
98
+ return import_react.default.cloneElement(
99
+ child,
100
+ {
101
+ openItems,
102
+ handleToggle
103
+ }
104
+ );
105
+ }
106
+ return child;
107
+ }));
108
+ }
109
+ function AccordionItem({
110
+ value,
111
+ disabled = false,
112
+ openItems,
113
+ handleToggle,
114
+ children
115
+ }) {
116
+ const isOpen = openItems?.includes(value);
117
+ const toggle = () => {
118
+ if (!disabled && handleToggle) {
119
+ handleToggle(value);
120
+ }
121
+ };
122
+ return /* @__PURE__ */ import_react.default.createElement(
123
+ "div",
124
+ {
125
+ className: cn(
126
+ "rounded-radius-lg mb-3 shadow-cardShadow dark:shadow-none border dark:border-gray-900",
127
+ isOpen && "border border-brand-500 shadow-cardShadowActive dark:bg-gray-900 dark:border-gray-100",
128
+ disabled ? "opacity-50 cursor-not-allowed" : "cursor-pointer"
129
+ )
130
+ },
131
+ /* @__PURE__ */ import_react.default.createElement(
132
+ "div",
133
+ {
134
+ className: "font-semibold transition-colors p-[32px] mobile:p-4 duration-200 ease-in-out",
135
+ onClick: toggle
136
+ },
137
+ children && Array.isArray(children) ? /* @__PURE__ */ import_react.default.createElement(import_react.default.Fragment, null, import_react.default.cloneElement(children[0], { isOpen }), isOpen && !disabled ? children[1] : null) : children
138
+ )
139
+ );
140
+ }
141
+ function AccordionTrigger({ isOpen, children }) {
142
+ return /* @__PURE__ */ import_react.default.createElement("div", { className: "accordion-trigger transition-all delay-150 ease-in font-montserrat text-[20px] mobile:text-[12px] mobile:leading-[18px] text-dark dark:text-white flex justify-between items-center font-semibold" }, children, /* @__PURE__ */ import_react.default.createElement("span", null, isOpen ? /* @__PURE__ */ import_react.default.createElement(import_fi.FiChevronUp, { size: 20 }) : /* @__PURE__ */ import_react.default.createElement(import_fi.FiChevronDown, { size: 20 })));
143
+ }
144
+ function AccordionContent({ isOpen, children }) {
145
+ return /* @__PURE__ */ import_react.default.createElement(
146
+ "div",
147
+ {
148
+ className: cn(
149
+ "opacity-0 w-full accordion-content font-normal font-karla text-[18px] mobile:text-[12px] mobile:leading-[18px] text-dark dark:text-gray-600 pt-[32px] mobile:pt-[10px] overflow-hidden max-h-0 duration-500 transition-all delay-100 ease-in",
150
+ !isOpen && "max-h-fit opacity-[1] transition-all ease-in duration-150"
151
+ )
152
+ },
153
+ children
154
+ );
155
+ }
156
+
157
+ // src/components/Button.tsx
158
+ var import_class_variance_authority = require("class-variance-authority");
159
+ var import_react2 = __toESM(require("react"), 1);
160
+ var buttonVariants = (0, import_class_variance_authority.cva)(
161
+ "font-semibold transition-colors rounded-radius-md py-spacing-sm duration-300 ease-in-out cursor-pointer disabled:pointer-events-none disabled:select-none disabled:bg-gray-400 disabled:text-light border-gray-25/15",
162
+ {
163
+ variants: {
164
+ variant: {
165
+ primary: "bg-brand-500 text-light border hover:bg-brand-600 hover:shadow-[inset_0px_2px_8px_-2px_#FFFFFF8F,inset_0px_8px_8px_-2px_#0000002E] active:bg-brand-400 active:shadow-[0px_0px_0px_3px] active:shadow-brand-300",
166
+ "primary-light": "bg-brand-50 text-brand-600 hover:bg-brand-200 hover:shadow-[inset_0px_2px_8px_-2px_#FFFFFF8F,inset_0px_8px_8px_-2px_#356AC32E] active:shadow-[0px_0px_0px_3px] active:bg-brand-50 active:shadow-brand-300",
167
+ secondary: "bg-brand-50 text-brand-800 hover:bg-brand-200 hover:shadow-[inset_0px_2px_8px_-2px_#FFFFFF8F,inset_0px_8px_8px_-2px_#6984AD2E] active:bg-brand-50 active:shadow-[0px_0px_0px_3px] active:shadow-brand-700",
168
+ tertiary: "bg-gray-100 text-gray-900 hover:bg-gray-300 hover:shadow-[inset_0px_2px_8px_-2px_#FFFFFF8F,inset_0px_8px_8px_-2px_#9595952E] active:bg-gray-25 active:shadow-[0px_0px_0px_3px] active:shadow-gray-700",
169
+ quaternary: "bg-gray-50/[0.02] text-light backdrop-blur-[6px] hover:shadow-[inset_0px_8px_8px_-2px_#23232314] hover:backdrop-blur-md hover:bg-gray-200/10 active:bg-gray-25 active:shadow-[0px_0px_0px_3px] active:text-gray-900 active:shadow-[#46464659]"
170
+ },
171
+ size: {
172
+ sm: "text-xl leading-[30px] px-spacing-md",
173
+ md: "font-bold text-2xl leading-[36px] px-spacing-lg",
174
+ lg: "font-bold text-[32px] leading-[48px] px-spacing-xl"
175
+ }
176
+ },
177
+ defaultVariants: {
178
+ variant: "primary",
179
+ size: "md"
180
+ }
181
+ }
182
+ );
183
+ var Button = ({
184
+ children,
185
+ startIcon,
186
+ endIcon,
187
+ fullWidth,
188
+ rounded,
189
+ disabled,
190
+ className,
191
+ variant,
192
+ size,
193
+ ...props
194
+ }) => {
195
+ return /* @__PURE__ */ import_react2.default.createElement(
196
+ "button",
197
+ {
198
+ ...props,
199
+ disabled,
200
+ className: cn(
201
+ buttonVariants({ variant, size, className }),
202
+ fullWidth && "w-full",
203
+ "flex items-center justify-center text-center gap-spacing-sm",
204
+ rounded && "!rounded-full"
205
+ )
206
+ },
207
+ startIcon,
208
+ children,
209
+ endIcon
210
+ );
211
+ };
212
+ var Button_default = Button;
213
+
214
+ // src/components/Caption.tsx
215
+ var import_class_variance_authority2 = require("class-variance-authority");
216
+ var import_react3 = __toESM(require("react"), 1);
217
+ var captionVariants = (0, import_class_variance_authority2.cva)("font-bold font-karla text-dark dark:text-light", {
218
+ variants: {
219
+ variant: {
220
+ sm: "text-[10px] leading-[15px]",
221
+ md: "text-sm leading-[18px]"
222
+ }
223
+ },
224
+ defaultVariants: {
225
+ variant: "sm"
226
+ }
227
+ });
228
+ var Caption = ({ children, variant, className, ...props }) => {
229
+ return /* @__PURE__ */ import_react3.default.createElement("span", { className: cn(captionVariants({ variant, className })), ...props }, children);
230
+ };
231
+ var Caption_default = Caption;
232
+
233
+ // src/components/Card.tsx
234
+ var import_image = __toESM(require("next/image"), 1);
235
+ var import_react6 = __toESM(require("react"), 1);
236
+
237
+ // src/components/Typography.tsx
238
+ var import_class_variance_authority3 = require("class-variance-authority");
239
+ var import_react4 = __toESM(require("react"), 1);
240
+ var typographyVariant = (0, import_class_variance_authority3.cva)("text-dark dark:text-light font-bold", {
241
+ variants: {
242
+ variant: {
243
+ h1: "text-8xl leading-[144px]",
244
+ h2: "text-7xl leading-[90px]",
245
+ h3: "text-5xl leading-[72px]",
246
+ h4: "text-[32px] leading-[48px]",
247
+ h5: "text-2xl leading-9",
248
+ h6: "text-xl font-semibold leading-[30px]"
249
+ }
250
+ },
251
+ defaultVariants: {
252
+ variant: "h1"
253
+ }
254
+ });
255
+ var Typography = ({
256
+ as,
257
+ variant = "h1",
258
+ children,
259
+ className,
260
+ ...props
261
+ }) => {
262
+ const Component = as || variant;
263
+ return /* @__PURE__ */ import_react4.default.createElement(
264
+ Component,
265
+ {
266
+ className: cn(typographyVariant({ variant, className })),
267
+ ...props
268
+ },
269
+ children
270
+ );
271
+ };
272
+ var Typography_default = Typography;
273
+
274
+ // src/components/Paragraph.tsx
275
+ var import_class_variance_authority4 = require("class-variance-authority");
276
+ var import_react5 = __toESM(require("react"), 1);
277
+ var paragraphVariants = (0, import_class_variance_authority4.cva)(
278
+ "font-karla font-normal text-dark dark:text-light",
279
+ {
280
+ variants: {
281
+ variant: {
282
+ b1: "text-2xl leading-[38px]",
283
+ b2: "text-xl leading-[30px]",
284
+ b3: "text-base",
285
+ b4: "text-sm leading-[21px]"
286
+ }
287
+ },
288
+ defaultVariants: {
289
+ variant: "b1"
290
+ }
291
+ }
292
+ );
293
+ var Paragraph = ({
294
+ children,
295
+ className,
296
+ variant,
297
+ ...props
298
+ }) => {
299
+ return /* @__PURE__ */ import_react5.default.createElement("p", { className: cn(paragraphVariants({ variant, className })), ...props }, children);
300
+ };
301
+ var Paragraph_default = Paragraph;
302
+
303
+ // src/components/Card.tsx
304
+ function Card({ children, className }) {
305
+ return /* @__PURE__ */ import_react6.default.createElement("article", { className }, children);
306
+ }
307
+ var CardIcon = ({ children, className }) => /* @__PURE__ */ import_react6.default.createElement("span", { className }, children);
308
+ var CardHeader = ({ children, className }) => /* @__PURE__ */ import_react6.default.createElement("div", { className }, children);
309
+ var CardBg = ({
310
+ children,
311
+ className,
312
+ src,
313
+ alt = "Card",
314
+ width = 300,
315
+ height = 200
316
+ }) => /* @__PURE__ */ import_react6.default.createElement("div", { className: cn("relative", className) }, src && /* @__PURE__ */ import_react6.default.createElement(
317
+ import_image.default,
318
+ {
319
+ src,
320
+ alt,
321
+ width,
322
+ height,
323
+ layout: "responsive"
324
+ }
325
+ ), /* @__PURE__ */ import_react6.default.createElement("div", { className: "absolute inset-0" }, children));
326
+ var CardTitle = ({ children, className }) => /* @__PURE__ */ import_react6.default.createElement(Typography_default, { variant: "h4", className }, children);
327
+ var CardDescription = ({ children, className }) => /* @__PURE__ */ import_react6.default.createElement(Paragraph_default, { variant: "b1", className: cn("text-light", className) }, children);
328
+ var CardContent = ({ children, className }) => /* @__PURE__ */ import_react6.default.createElement("div", { className: cn("font-karla text-white", className) }, children);
329
+ var CardFooter = ({ children, className }) => /* @__PURE__ */ import_react6.default.createElement("div", { className: cn("font-karla text-white", className) }, children);
330
+
331
+ // src/components/Checkbox.tsx
332
+ var import_react7 = __toESM(require("react"), 1);
333
+ var Checkbox = (0, import_react7.forwardRef)(
334
+ ({ disabled, checked, className, children, readOnly, ...props }, ref) => {
335
+ return /* @__PURE__ */ import_react7.default.createElement(
336
+ "div",
337
+ {
338
+ className: cn(
339
+ "group inline-flex relative items-center rounded-full border-2 border-transparent hover:border-brand-300",
340
+ disabled && "border-none"
341
+ )
342
+ },
343
+ /* @__PURE__ */ import_react7.default.createElement(
344
+ "input",
345
+ {
346
+ type: "checkbox",
347
+ ref,
348
+ ...props,
349
+ disabled,
350
+ readOnly,
351
+ checked,
352
+ className: cn(
353
+ "peer relative h-5 w-5 cursor-pointer appearance-none rounded-full border-2 border-gray-300 transition-all checked:border-brand-500 hover:border-brand-500 hover:bg-brand-25/25 disabled:opacity-30 disabled:pointer-events-none disabled:border-gray-400",
354
+ className
355
+ )
356
+ }
357
+ ),
358
+ /* @__PURE__ */ import_react7.default.createElement(
359
+ "span",
360
+ {
361
+ className: cn(
362
+ "absolute text-brand-600 transition-opacity opacity-0 pointer-events-none top-2/4 left-2/4 -translate-y-2/4 -translate-x-2/4 peer-checked:opacity-100",
363
+ disabled && "text-gray-300"
364
+ )
365
+ },
366
+ /* @__PURE__ */ import_react7.default.createElement(
367
+ "svg",
368
+ {
369
+ xmlns: "http://www.w3.org/2000/svg",
370
+ className: "w-4 h-4",
371
+ viewBox: "0 0 20 20",
372
+ fill: "currentColor",
373
+ stroke: "currentColor",
374
+ strokeWidth: "0.3"
375
+ },
376
+ /* @__PURE__ */ import_react7.default.createElement(
377
+ "path",
378
+ {
379
+ fillRule: "evenodd",
380
+ d: "M16.707 5.293a1 1 0 010 1.414l-8 8a1 1 0 01-1.414 0l-4-4a1 1 0 011.414-1.414L8 12.586l7.293-7.293a1 1 0 011.414 0z",
381
+ clipRule: "evenodd"
382
+ }
383
+ )
384
+ )
385
+ ),
386
+ children
387
+ );
388
+ }
389
+ );
390
+ Checkbox.displayName = "Checkbox";
391
+ var Checkbox_default = Checkbox;
392
+
393
+ // src/components/Chip.tsx
394
+ var import_react8 = __toESM(require("react"), 1);
395
+ var import_class_variance_authority5 = require("class-variance-authority");
396
+ var chipVariants = (0, import_class_variance_authority5.cva)("", {
397
+ variants: {
398
+ variant: {
399
+ primary: "bg-white text-brand-500 hover:text-white hover:bg-gradient-to-r hover:from-brand-500 hover:to-[#264D8E]",
400
+ secondary: "bg-brand-500 text-white hover:text-white hover:bg-gradient-to-r hover:from-brand-500 hover:to-[#285092]",
401
+ glass: "text-brand-500"
402
+ },
403
+ size: {
404
+ sm: "text-sm py-1 px-3",
405
+ md: "text-base px-4 py-2",
406
+ lg: "text-lg px-6 py-3"
407
+ }
408
+ },
409
+ defaultVariants: {
410
+ variant: "primary",
411
+ size: "md"
412
+ }
413
+ });
414
+ var Chip = ({
415
+ children,
416
+ className,
417
+ variant,
418
+ startIcon,
419
+ endIcon,
420
+ size,
421
+ ...props
422
+ }) => {
423
+ return /* @__PURE__ */ import_react8.default.createElement(
424
+ "div",
425
+ {
426
+ className: cn(
427
+ "rounded-radius-xl bg-gradient-to-r",
428
+ {
429
+ solid: "from-brand-200 to-brand-500",
430
+ primary: "from-brand-200 to-brand-500",
431
+ secondary: "from-brand-200 to-brand-500",
432
+ glass: "border border-brand-500"
433
+ }[variant || "primary"],
434
+ "p-[1px]"
435
+ )
436
+ },
437
+ /* @__PURE__ */ import_react8.default.createElement(
438
+ "div",
439
+ {
440
+ ...props,
441
+ className: cn(
442
+ "flex items-center justify-center gap-2 text-center font-semibold",
443
+ "rounded-radius-xl",
444
+ chipVariants({ variant, size }),
445
+ className
446
+ )
447
+ },
448
+ startIcon,
449
+ children,
450
+ endIcon
451
+ )
452
+ );
453
+ };
454
+ var Chip_default = Chip;
455
+
456
+ // src/components/Dropdown.tsx
457
+ var import_react9 = __toESM(require("react"), 1);
458
+ var import_hi2 = require("react-icons/hi2");
459
+ function Dropdown({
460
+ triggerIcon,
461
+ children,
462
+ width = "250px"
463
+ }) {
464
+ const [isOpen, setIsOpen] = (0, import_react9.useState)(false);
465
+ const dropdownRef = (0, import_react9.useRef)(null);
466
+ (0, import_react9.useEffect)(() => {
467
+ const handleClickOutside = (event) => {
468
+ if (dropdownRef.current && !dropdownRef.current.contains(event.target)) {
469
+ setIsOpen(false);
470
+ }
471
+ };
472
+ document.addEventListener("mousedown", handleClickOutside);
473
+ return () => {
474
+ document.removeEventListener("mousedown", handleClickOutside);
475
+ };
476
+ }, []);
477
+ return /* @__PURE__ */ import_react9.default.createElement("div", { className: "relative w-full font-karla", ref: dropdownRef }, /* @__PURE__ */ import_react9.default.createElement(
478
+ "div",
479
+ {
480
+ className: "cursor-pointer",
481
+ onClick: () => setIsOpen(!isOpen),
482
+ "aria-label": "Open menu"
483
+ },
484
+ triggerIcon || /* @__PURE__ */ import_react9.default.createElement("span", null, "\u2630")
485
+ ), isOpen && /* @__PURE__ */ import_react9.default.createElement(
486
+ "div",
487
+ {
488
+ style: { width },
489
+ className: "border border-gray-200 dark:bg-gray-800 dark:border-gray-600 dark:text-white rounded-t-radius-md absolute left-0 mt-1 z-[100000] w-full bg-white shadow-sm"
490
+ },
491
+ children
492
+ ));
493
+ }
494
+ var MenuItem = ({
495
+ label,
496
+ onClick,
497
+ disabled,
498
+ children
499
+ }) => /* @__PURE__ */ import_react9.default.createElement(
500
+ "button",
501
+ {
502
+ className: cn(
503
+ "w-full text-left p-4 border-t border-gray-200 last:border-none hover:bg-gray-200 dark:hover:bg-gray-600",
504
+ disabled ? "opacity-50 cursor-not-allowed" : ""
505
+ ),
506
+ onClick,
507
+ disabled
508
+ },
509
+ label,
510
+ children && /* @__PURE__ */ import_react9.default.createElement(import_react9.default.Fragment, null, children)
511
+ );
512
+ var MenuSubItem = ({
513
+ label,
514
+ children
515
+ }) => {
516
+ const [isSubOpen, setIsSubOpen] = (0, import_react9.useState)(false);
517
+ return /* @__PURE__ */ import_react9.default.createElement("div", { className: "relative" }, /* @__PURE__ */ import_react9.default.createElement(
518
+ "section",
519
+ {
520
+ onClick: () => setIsSubOpen(!isSubOpen),
521
+ className: "cursor-pointer hover:bg-gray-200 dark:hover:bg-gray-600 border-t border-b border-gray-200 p-4 flex justify-between items-center gap-1 w-full text-left"
522
+ },
523
+ /* @__PURE__ */ import_react9.default.createElement("span", null, label),
524
+ isSubOpen ? /* @__PURE__ */ import_react9.default.createElement(import_hi2.HiChevronUp, null) : /* @__PURE__ */ import_react9.default.createElement(import_hi2.HiChevronDown, null)
525
+ ), isSubOpen && /* @__PURE__ */ import_react9.default.createElement("div", { className: "bg-gray-100 border-gray-200 dark:bg-gray-700 dark:border-gray-600 dark:text-white" }, children));
526
+ };
527
+
528
+ // src/components/Footer.tsx
529
+ var import_react10 = __toESM(require("react"), 1);
530
+ var import_link = __toESM(require("next/link"), 1);
531
+ function Footer({
532
+ children,
533
+ className,
534
+ footerBottom
535
+ }) {
536
+ return /* @__PURE__ */ import_react10.default.createElement(
537
+ "footer",
538
+ {
539
+ className: cn(
540
+ "bg-gradient-to-b from-gray-25 to-brand-100 dark:from-brand-900 dark:to-dark",
541
+ className
542
+ )
543
+ },
544
+ children,
545
+ footerBottom && /* @__PURE__ */ import_react10.default.createElement("section", { className: "border-t border-brand-500 dark:border-brand-800 text-center py-spacing-md" }, footerBottom)
546
+ );
547
+ }
548
+ var FooterHeader = ({ children, className }) => {
549
+ return /* @__PURE__ */ import_react10.default.createElement(
550
+ "div",
551
+ {
552
+ className: cn(
553
+ "md:w-[30%] space-y-4 flex flex-col items-center lg:items-start",
554
+ className
555
+ )
556
+ },
557
+ children
558
+ );
559
+ };
560
+ var FooterContent = ({ children, className }) => {
561
+ return /* @__PURE__ */ import_react10.default.createElement(
562
+ "section",
563
+ {
564
+ className: cn(
565
+ "max-w-6xl mx-auto flex md:flex-row flex-col items-center md:items-start justify-between gap-14 px-4 md:px-20 py-20",
566
+ className
567
+ )
568
+ },
569
+ children
570
+ );
571
+ };
572
+ var FooterList = ({ footerItems, target }) => {
573
+ return /* @__PURE__ */ import_react10.default.createElement("div", { className: "grid lg:grid-cols-3 md:grid-cols-2 place-items-start gap-12 text-center md:text-left" }, footerItems?.map((data, i) => /* @__PURE__ */ import_react10.default.createElement("div", { key: i, className: "space-y-5 w-full" }, /* @__PURE__ */ import_react10.default.createElement(Typography_default, { variant: "h5" }, data?.label), /* @__PURE__ */ import_react10.default.createElement("ul", { className: "space-y-2.5 list-none" }, data.content?.map((data2, i2) => /* @__PURE__ */ import_react10.default.createElement("li", { key: i2 }, /* @__PURE__ */ import_react10.default.createElement(import_link.default, { href: data2?.link, target }, /* @__PURE__ */ import_react10.default.createElement(
574
+ Paragraph_default,
575
+ {
576
+ variant: "b3",
577
+ className: "dark:text-gray-300 hover:text-brand-400 dark:hover:text-brand-600 text-gray-900"
578
+ },
579
+ data2?.text
580
+ ))))))));
581
+ };
582
+ var FooterIcons = ({ icons }) => {
583
+ return /* @__PURE__ */ import_react10.default.createElement("div", { className: "flex flex-wrap justify-center items-center gap-5 text-brand-700 dark:text-brand-200" }, icons.map((icon, index) => /* @__PURE__ */ import_react10.default.createElement(
584
+ import_link.default,
585
+ {
586
+ href: icon.link,
587
+ key: index,
588
+ target: "_blank",
589
+ className: "hover:bg-brand-100 dark:hover:bg-brand-800 p-1 rounded-radius-sm"
590
+ },
591
+ icon.icon
592
+ )));
593
+ };
594
+
595
+ // src/components/ImageCard.tsx
596
+ var import_react11 = __toESM(require("react"), 1);
597
+ var ImageCard = ({
598
+ cardTitle,
599
+ cardDesc,
600
+ cardImg,
601
+ children,
602
+ className = ""
603
+ }) => {
604
+ const backgroundImage = `url('${cardImg}')`;
605
+ return /* @__PURE__ */ import_react11.default.createElement(
606
+ "div",
607
+ {
608
+ className: cn(
609
+ "transition-all duration-300 ease-in-out hover:ring-1 hover:ring-[#4285F4] relative rounded-radius-xl overflow-hidden block z-10 bg-cover bg-no-repeat bg-center",
610
+ className
611
+ ),
612
+ style: {
613
+ backgroundImage
614
+ }
615
+ },
616
+ /* @__PURE__ */ import_react11.default.createElement("div", { className: "absolute inset-0 z-[-5] transition-all duration-300 ease-in-out bg-gradient-to-b from-transparent via-black/50 to-black" }),
617
+ /* @__PURE__ */ import_react11.default.createElement("section", { className: "p-[32px] w-full h-full flex flex-col justify-end font-karla hover:bg-gradient-to-b hover:from-black/60 hover:via-black/70 hover:to-[#070707]" }, /* @__PURE__ */ import_react11.default.createElement(CardTitle, { className: "text-[24px] font-bold text-white mt-4 mb-6" }, cardTitle), /* @__PURE__ */ import_react11.default.createElement(CardDescription, { className: "text-[20px] leading-[25px] text-white" }, cardDesc), /* @__PURE__ */ import_react11.default.createElement("div", null, children))
618
+ );
619
+ };
620
+ var ImageCard_default = ImageCard;
621
+
622
+ // src/components/Input.tsx
623
+ var import_class_variance_authority6 = require("class-variance-authority");
624
+ var import_react12 = __toESM(require("react"), 1);
625
+ var inputVariants = (0, import_class_variance_authority6.cva)(
626
+ "flex items-center text-sm gap-2 py-2 px-4 rounded-radius-md border font-karla has-[:disabled]:opacity-30 has-[:disabled]:select-none has-[:disabled]:pointer-events-none",
627
+ {
628
+ variants: {
629
+ variant: {
630
+ default: "dark:text-gray-500 dark:bg-gray-900 dark:border-gray-800 dark:hover:text-light dark:hover:bg-gray-800 dark:hover:border-gray-700 dark:focus-within:bg-gray-100 dark:focus-within:border-gray-800 dark:focus-within:hover:bg-gray-700 dark:focus-within:text-dark dark:has-[:disabled]:bg-gray-700 bg-gray-100 border-gray-200 text-gray-600 hover:border-gray-300 hover:text-gray-500 hover:bg-gray-300 focus-within:bg-gray-50 focus-within:border-gray-400 focus-within:text-dark focus-within:hover:text-dark focus-within:hover:border-brand-100 focus-within:hover:bg-brand-50 has-[:disabled]:bg-gray-25 has-[:disabled]:border-gray-400",
631
+ glass: "backdrop-blur-[3.5px] bg-light/10 dark:bg-dark/20 dark:border-gray-800 border-gray-200/50 text-light"
632
+ }
633
+ },
634
+ defaultVariants: {
635
+ variant: "default"
636
+ }
637
+ }
638
+ );
639
+ var Input = (0, import_react12.forwardRef)(
640
+ ({ startIcon, endIcon, className, variant, type, disabled, ...props }, ref) => {
641
+ return /* @__PURE__ */ import_react12.default.createElement("div", { className: cn(inputVariants({ variant, className })) }, startIcon, /* @__PURE__ */ import_react12.default.createElement(
642
+ "input",
643
+ {
644
+ ...props,
645
+ ref,
646
+ disabled,
647
+ type,
648
+ className: "w-full bg-none bg-transparent outline-none"
649
+ }
650
+ ), endIcon);
651
+ }
652
+ );
653
+ Input.displayName = "Input";
654
+ var Input_default = Input;
655
+
656
+ // src/components/Label.tsx
657
+ var import_class_variance_authority7 = require("class-variance-authority");
658
+ var import_react13 = __toESM(require("react"), 1);
659
+ var labelVariants = (0, import_class_variance_authority7.cva)("font-medium text-dark dark:text-light", {
660
+ variants: {
661
+ size: {
662
+ sm: "text-xs",
663
+ md: "text-sm",
664
+ lg: "text-base"
665
+ }
666
+ },
667
+ defaultVariants: {
668
+ size: "md"
669
+ }
670
+ });
671
+ var Label = ({
672
+ children,
673
+ htmlFor,
674
+ size,
675
+ required,
676
+ disabled,
677
+ className,
678
+ ...props
679
+ }) => {
680
+ return /* @__PURE__ */ import_react13.default.createElement(
681
+ "label",
682
+ {
683
+ htmlFor,
684
+ className: cn(
685
+ "cursor-pointer",
686
+ labelVariants({ className, size }),
687
+ disabled === true ? "opacity-30 select-none" : "opacity-100"
688
+ ),
689
+ ...props
690
+ },
691
+ children,
692
+ required && /* @__PURE__ */ import_react13.default.createElement("span", { className: "text-error" }, "*")
693
+ );
694
+ };
695
+ var Label_default = Label;
696
+
697
+ // src/components/ListItem.tsx
698
+ var import_link2 = __toESM(require("next/link"), 1);
699
+ var import_react14 = __toESM(require("react"), 1);
700
+ var import_navigation = require("next/navigation");
701
+ var ListItem = import_react14.default.forwardRef(
702
+ ({ className, title, href, onClick, as = "link", variant = "solid" }, ref) => {
703
+ const pathname = (0, import_navigation.usePathname)();
704
+ const isActive = as === "link" && href === pathname;
705
+ const variantClasses = variant === "solid" ? "rounded-radius-lg hover:bg-brand-50 group border border-transparent hover:border-brand-200 focus:outline-none focus:ring-1 focus:ring-brand-500 focus:text-white leading-none no-underline outline-none transition-colors" : variant === "glass" ? "rounded-radius-lg group border border-transparent hover:border-brand-200 focus:outline-none focus:ring-1 focus:ring-brand-500 focus:text-white leading-none no-underline outline-none transition-colors" : "";
706
+ if (as === "button") {
707
+ return /* @__PURE__ */ import_react14.default.createElement(
708
+ "button",
709
+ {
710
+ className: cn(
711
+ "px-4 py-[8px] font-karla",
712
+ variantClasses,
713
+ className
714
+ ),
715
+ onClick,
716
+ ref
717
+ },
718
+ /* @__PURE__ */ import_react14.default.createElement(
719
+ Typography_default,
720
+ {
721
+ variant: "h6",
722
+ className: cn("font-karla group-hover:dark:text-dark", className)
723
+ },
724
+ title
725
+ )
726
+ );
727
+ }
728
+ return /* @__PURE__ */ import_react14.default.createElement(
729
+ import_link2.default,
730
+ {
731
+ href: href ?? "",
732
+ passHref: true,
733
+ className: cn(
734
+ "px-4 py-[8px] font-karla",
735
+ isActive ? "bg-brand-400 text-white border border-brand-200" : variantClasses,
736
+ className
737
+ ),
738
+ ref
739
+ },
740
+ /* @__PURE__ */ import_react14.default.createElement(
741
+ Typography_default,
742
+ {
743
+ variant: "h6",
744
+ className: cn("font-karla group-hover:dark:text-dark", className)
745
+ },
746
+ title
747
+ )
748
+ );
749
+ }
750
+ );
751
+ ListItem.displayName = "ListItem";
752
+ var ListItem_default = ListItem;
753
+
754
+ // src/components/Slider.tsx
755
+ var import_react15 = __toESM(require("react"), 1);
756
+ var Slider = (0, import_react15.forwardRef)(
757
+ ({ value, min = 0, max = 100, size = "sm", sliderColor, ...props }, ref) => {
758
+ const progress = (value - min) / (max - min) * 100;
759
+ return /* @__PURE__ */ import_react15.default.createElement(import_react15.default.Fragment, null, /* @__PURE__ */ import_react15.default.createElement(
760
+ "input",
761
+ {
762
+ ref,
763
+ type: "range",
764
+ min,
765
+ max,
766
+ value,
767
+ ...props,
768
+ className: cn(
769
+ "slider w-full rounded-full appearance-none bg-gray-300 h-4 cursor-pointer focus:outline-none",
770
+ size === "sm" ? "h-1.5" : "h-4"
771
+ ),
772
+ style: {
773
+ background: `linear-gradient(to right, ${sliderColor ?? "#8EB6F8"} ${progress}%, #d1d5db ${progress}%)`
774
+ }
775
+ }
776
+ ), /* @__PURE__ */ import_react15.default.createElement("style", { jsx: true }, `
777
+ .slider {
778
+ -webkit-appearance: none;
779
+ appearance: none;
780
+ }
781
+
782
+ .slider::-webkit-slider-thumb {
783
+ -webkit-appearance: none;
784
+ appearance: none;
785
+ width: 36px;
786
+ height: 24px;
787
+ background-color: ${sliderColor ?? "#4285F4"};
788
+ border-radius: 9999px;
789
+ outline: 3px solid #B3CEFB
790
+ cursor: pointer;
791
+ }
792
+
793
+ .slider::-webkit-slider-thumb:hover {
794
+ background-color: #285092;
795
+ outline: 3px solid #B3CEFB
796
+ }
797
+
798
+ .slider::-webkit-slider-thumb:active {
799
+ background-color: #356ac3;
800
+ outline: 3px solid #B3CEFB
801
+ box-shadow: 0px 4px 4.7px 0px #0000002e;
802
+ }
803
+
804
+ .slider::-moz-range-thumb {
805
+ width: 50px;
806
+ outline: 3px solid #B3CEFB
807
+ height: 50px;
808
+ background-color: #000;
809
+ border-radius: 0;
810
+ cursor: pointer;
811
+ }
812
+ `));
813
+ }
814
+ );
815
+ Slider.displayName = "Slider";
816
+ var Slider_default = Slider;
817
+
818
+ // src/components/StatsCard.tsx
819
+ var import_react16 = __toESM(require("react"), 1);
820
+ var StatsCard = ({
821
+ statTitle,
822
+ statDesc,
823
+ className,
824
+ cardIcon
825
+ }) => {
826
+ return /* @__PURE__ */ import_react16.default.createElement(
827
+ Card,
828
+ {
829
+ className: cn(
830
+ "border border-[#eee] hover:border-[#4285F4] rounded-radius-xl bg-[#FFFFFFE5] bg-gradient-to-b bg-[#fff] hover:from-[#8EB6F8D9] hover:to-[#356AC3D9] dark:from-[#252525D9] dark:to-[#070707D9] dark:hover:from-[#1A3562D9] dark:hover:to-[#070707D9] backdrop-blur-sm px-[32px] py-[64px] group",
831
+ className
832
+ )
833
+ },
834
+ /* @__PURE__ */ import_react16.default.createElement("span", { className: "group-hover:text-white text-dark dark:text-white" }, cardIcon),
835
+ /* @__PURE__ */ import_react16.default.createElement(CardTitle, { className: "group-hover:text-white text-[48px] font-bold text-brand-500 dark:text-white my-4" }, statTitle),
836
+ /* @__PURE__ */ import_react16.default.createElement(CardDescription, { className: "group-hover:text-white text-[24px] hover:text-white text-dark leading-[25px]" }, statDesc)
837
+ );
838
+ };
839
+ var StatsCard_default = StatsCard;
840
+
841
+ // src/components/Textarea.tsx
842
+ var import_class_variance_authority8 = require("class-variance-authority");
843
+ var import_react17 = __toESM(require("react"), 1);
844
+ var textareaVariants = (0, import_class_variance_authority8.cva)(
845
+ "flex items-center gap-2 font-karla text-sm outline-none rounded-radius-md border py-2 px-4 disabled:opacity-60 disabled:select-none disabled:pointer-events-none w-full",
846
+ {
847
+ variants: {
848
+ variant: {
849
+ default: "dark:text-gray-500 dark:bg-gray-900 dark:border-gray-800 dark:hover:text-light dark:hover:bg-gray-800 dark:hover:border-gray-700 dark:focus-within:bg-gray-100 dark:focus-within:border-gray-800 dark:focus-within:hover:bg-gray-700 dark:focus-within:text-dark dark:disabled:bg-gray-700 bg-gray-100 border-gray-200 text-gray-600 hover:border-gray-300 hover:text-gray-500 hover:bg-gray-300 focus-within:bg-gray-50 focus-within:border-gray-400 focus-within:text-dark focus-within:hover:text-dark focus-within:hover:border-brand-100 focus-within:hover:bg-brand-50 disabled:bg-gray-25 disabled:border-gray-400",
850
+ glass: "backdrop-blur-[3.5px] bg-light/10 dark:bg-dark/20 dark:border-gray-800 border-gray-200/50 text-light"
851
+ }
852
+ },
853
+ defaultVariants: {
854
+ variant: "default"
855
+ }
856
+ }
857
+ );
858
+ var Textarea = (0, import_react17.forwardRef)(
859
+ ({ className, rows, cols, variant, disabled, children, ...props }, ref) => {
860
+ return /* @__PURE__ */ import_react17.default.createElement(
861
+ "textarea",
862
+ {
863
+ ...props,
864
+ ref,
865
+ disabled,
866
+ rows,
867
+ cols,
868
+ className: cn(textareaVariants({ variant, className }))
869
+ },
870
+ children
871
+ );
872
+ }
873
+ );
874
+ Textarea.displayName = "Textarea";
875
+ var Textarea_default = Textarea;
876
+
877
+ // src/components/Toggle.tsx
878
+ var import_class_variance_authority9 = require("class-variance-authority");
879
+ var import_react18 = __toESM(require("react"), 1);
880
+ var toggleVariants = (0, import_class_variance_authority9.cva)(
881
+ "rounded-radius-xl bg-gray-300 transition-colors peer-checked:bg-brand-500 peer-active:ring-2 peer-active:ring-brand-300",
882
+ {
883
+ variants: {
884
+ size: {
885
+ sm: "w-8 h-[18px]",
886
+ lg: "w-[52px] h-[27px]"
887
+ }
888
+ },
889
+ defaultVariants: {
890
+ size: "lg"
891
+ }
892
+ }
893
+ );
894
+ var Toggle = (0, import_react18.forwardRef)(
895
+ ({ icon, children, disabled, size = "lg", ...props }, ref) => {
896
+ return /* @__PURE__ */ import_react18.default.createElement(
897
+ "label",
898
+ {
899
+ className: cn(
900
+ "flex cursor-pointer select-none items-center",
901
+ disabled && "opacity-50 pointer-events-none"
902
+ )
903
+ },
904
+ /* @__PURE__ */ import_react18.default.createElement("div", { className: "relative" }, /* @__PURE__ */ import_react18.default.createElement(
905
+ "input",
906
+ {
907
+ type: "checkbox",
908
+ disabled,
909
+ ref,
910
+ ...props,
911
+ className: "sr-only peer"
912
+ }
913
+ ), /* @__PURE__ */ import_react18.default.createElement("div", { className: cn(toggleVariants({ size })) }), /* @__PURE__ */ import_react18.default.createElement(
914
+ "div",
915
+ {
916
+ className: cn(
917
+ "absolute flex items-center justify-center bg-white transition-transform",
918
+ size === "sm" ? "peer-checked:translate-x-2 top-[1px] left-[2px] w-5 h-4 rounded-radius-md" : "peer-checked:translate-x-3 top-[2.5px] left-1 h-[22px] w-[34px] rounded-radius-lg"
919
+ )
920
+ },
921
+ /* @__PURE__ */ import_react18.default.createElement("span", { className: "flex items-center justify-center" }, icon),
922
+ children
923
+ ))
924
+ );
925
+ }
926
+ );
927
+ Toggle.displayName = "Toggle";
928
+ var Toggle_default = Toggle;
929
+ // Annotate the CommonJS export names for ESM import in node:
930
+ 0 && (module.exports = {
931
+ Accordion,
932
+ AccordionContent,
933
+ AccordionItem,
934
+ AccordionTrigger,
935
+ Button,
936
+ Caption,
937
+ Card,
938
+ CardBg,
939
+ CardContent,
940
+ CardDescription,
941
+ CardFooter,
942
+ CardHeader,
943
+ CardIcon,
944
+ CardTitle,
945
+ Checkbox,
946
+ Chip,
947
+ Dropdown,
948
+ Footer,
949
+ FooterContent,
950
+ FooterHeader,
951
+ FooterIcons,
952
+ FooterList,
953
+ ImageCard,
954
+ Input,
955
+ Label,
956
+ ListItem,
957
+ MenuItem,
958
+ MenuSubItem,
959
+ Paragraph,
960
+ Slider,
961
+ StatsCard,
962
+ Textarea,
963
+ Toggle,
964
+ Typography
965
+ });