@appcorp/shadcn 1.2.0 → 2.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (231) hide show
  1. package/components/app-sidebar.js +1 -41
  2. package/components/audio.js +1 -21
  3. package/components/dashboard.js +1 -67
  4. package/components/drawer-generic.js +1 -47
  5. package/components/enhanced-checkbox.js +1 -86
  6. package/components/enhanced-combobox.js +1 -315
  7. package/components/enhanced-drawer-footer.js +1 -39
  8. package/components/enhanced-drawer-header.js +1 -15
  9. package/components/enhanced-dropzone-impl.d.ts +32 -0
  10. package/components/enhanced-dropzone-impl.js +1 -0
  11. package/components/enhanced-dropzone.d.ts +2 -63
  12. package/components/enhanced-dropzone.js +1 -296
  13. package/components/enhanced-input.js +1 -87
  14. package/components/enhanced-label.js +1 -68
  15. package/components/enhanced-radio.js +1 -23
  16. package/components/enhanced-select.js +1 -81
  17. package/components/enhanced-slider.js +1 -80
  18. package/components/enhanced-switch.js +1 -89
  19. package/components/enhanced-table-footer-action.js +1 -110
  20. package/components/enhanced-table-footer-page.js +1 -132
  21. package/components/enhanced-table-footer-pagination.js +1 -118
  22. package/components/enhanced-table-header-action.js +1 -40
  23. package/components/enhanced-table-header-search.js +1 -18
  24. package/components/enhanced-table.js +1 -329
  25. package/components/enhanced-textarea.js +1 -87
  26. package/components/field.d.ts +1 -1
  27. package/components/field.js +1 -153
  28. package/components/image-resize-dialog.js +1 -180
  29. package/components/nav-main.js +1 -86
  30. package/components/nav-projects.js +1 -50
  31. package/components/nav-user.js +1 -62
  32. package/components/show-toast.js +1 -11
  33. package/components/sidebar.d.ts +1 -1
  34. package/components/sidebar.js +1 -326
  35. package/components/team-switcher.js +1 -53
  36. package/components/theme-provider.js +1 -160
  37. package/components/timeline.js +1 -21
  38. package/components/tooltip.js +1 -85
  39. package/components/ui/accordion.js +1 -87
  40. package/components/ui/alert-dialog.js +1 -120
  41. package/components/ui/alert.d.ts +1 -1
  42. package/components/ui/alert.js +1 -90
  43. package/components/ui/area-chart-v1-impl.d.ts +19 -0
  44. package/components/ui/area-chart-v1-impl.js +1 -0
  45. package/components/ui/area-chart-v1.d.ts +2 -19
  46. package/components/ui/area-chart-v1.js +1 -114
  47. package/components/ui/aspect-ratio.js +1 -40
  48. package/components/ui/avatar.js +1 -80
  49. package/components/ui/badge.d.ts +2 -2
  50. package/components/ui/badge.js +1 -80
  51. package/components/ui/breadcrumb.js +1 -107
  52. package/components/ui/button.d.ts +2 -2
  53. package/components/ui/button.js +1 -92
  54. package/components/ui/calendar-impl.d.ts +8 -0
  55. package/components/ui/calendar-impl.js +1 -0
  56. package/components/ui/calendar.d.ts +2 -8
  57. package/components/ui/calendar.js +1 -109
  58. package/components/ui/card.js +1 -96
  59. package/components/ui/carousel-impl.d.ts +18 -0
  60. package/components/ui/carousel-impl.js +1 -0
  61. package/components/ui/carousel.d.ts +6 -18
  62. package/components/ui/carousel.js +1 -171
  63. package/components/ui/chart-impl.d.ts +62 -0
  64. package/components/ui/chart-impl.js +7 -0
  65. package/components/ui/chart.d.ts +7 -62
  66. package/components/ui/chart.js +1 -220
  67. package/components/ui/checkbox.js +1 -71
  68. package/components/ui/collapsible.js +1 -44
  69. package/components/ui/combobox.js +1 -88
  70. package/components/ui/command-impl.d.ts +80 -0
  71. package/components/ui/command-impl.js +1 -0
  72. package/components/ui/command.d.ts +9 -80
  73. package/components/ui/command.js +1 -118
  74. package/components/ui/context-menu.js +1 -141
  75. package/components/ui/dialog.js +1 -113
  76. package/components/ui/drawer-impl.d.ts +22 -0
  77. package/components/ui/drawer-impl.js +1 -0
  78. package/components/ui/drawer.d.ts +10 -22
  79. package/components/ui/drawer.js +1 -112
  80. package/components/ui/dropdown-menu.js +1 -143
  81. package/components/ui/form.d.ts +4 -2
  82. package/components/ui/form.js +1 -132
  83. package/components/ui/hover-card.js +1 -72
  84. package/components/ui/input-otp-impl.d.ts +34 -0
  85. package/components/ui/input-otp-impl.js +1 -0
  86. package/components/ui/input-otp.d.ts +4 -34
  87. package/components/ui/input-otp.js +1 -93
  88. package/components/ui/input.js +1 -66
  89. package/components/ui/label.d.ts +1 -1
  90. package/components/ui/label.js +1 -70
  91. package/components/ui/language-selector.js +1 -63
  92. package/components/ui/menubar.js +1 -165
  93. package/components/ui/navigation-menu.d.ts +1 -1
  94. package/components/ui/navigation-menu.js +1 -114
  95. package/components/ui/pagination.js +1 -113
  96. package/components/ui/popover.js +1 -75
  97. package/components/ui/progress.js +1 -69
  98. package/components/ui/radio-group.js +1 -77
  99. package/components/ui/resizable-impl.d.ts +24 -0
  100. package/components/ui/resizable-impl.js +1 -0
  101. package/components/ui/resizable.d.ts +3 -24
  102. package/components/ui/resizable.js +1 -79
  103. package/components/ui/scroll-area.js +1 -80
  104. package/components/ui/select.js +1 -127
  105. package/components/ui/separator.js +1 -68
  106. package/components/ui/sheet.d.ts +1 -1
  107. package/components/ui/sheet.js +1 -127
  108. package/components/ui/skeleton.js +1 -34
  109. package/components/ui/slider.js +1 -79
  110. package/components/ui/sonner.js +1 -45
  111. package/components/ui/switch.js +1 -69
  112. package/components/ui/table.js +1 -109
  113. package/components/ui/tabs.js +1 -82
  114. package/components/ui/textarea.js +1 -66
  115. package/components/ui/theme-switcher.js +1 -152
  116. package/components/ui/toggle.d.ts +2 -2
  117. package/components/ui/toggle.js +1 -87
  118. package/data/admin-dashboard.js +1 -304
  119. package/hooks/use-enhanced-combobox.js +1 -150
  120. package/hooks/use-mobile.js +1 -51
  121. package/hooks/use-outside-click.js +1 -23
  122. package/lib/themes.js +1 -150
  123. package/lib/toast-utils.js +1 -212
  124. package/lib/utils.js +1 -12
  125. package/package.json +9 -90
  126. package/utils/transform-breadcrumbs.js +1 -11
  127. package/utils/transform-navitems.js +1 -33
  128. package/components/aceternity-ui/apple-cards-carousel.d.ts +0 -35
  129. package/components/aceternity-ui/apple-cards-carousel.js +0 -263
  130. package/components/shadcn-example/ai-chat/chat-interface.d.ts +0 -11
  131. package/components/shadcn-example/ai-chat/chat-interface.js +0 -70
  132. package/components/shadcn-example/ai-chat/index.d.ts +0 -38
  133. package/components/shadcn-example/ai-chat/index.js +0 -66
  134. package/components/shadcn-example/ai-chat/sidebar.d.ts +0 -15
  135. package/components/shadcn-example/ai-chat/sidebar.js +0 -68
  136. package/components/shadcn-example/ai-chat/welcome-section.d.ts +0 -12
  137. package/components/shadcn-example/ai-chat/welcome-section.js +0 -26
  138. package/components/shadcn-example/authentication/index.d.ts +0 -24
  139. package/components/shadcn-example/authentication/index.js +0 -59
  140. package/components/shadcn-example/authentication/user-auth-form.d.ts +0 -11
  141. package/components/shadcn-example/authentication/user-auth-form.js +0 -54
  142. package/components/shadcn-example/blog-detail-page/comment-section.d.ts +0 -15
  143. package/components/shadcn-example/blog-detail-page/comment-section.js +0 -83
  144. package/components/shadcn-example/blog-detail-page/content.d.ts +0 -7
  145. package/components/shadcn-example/blog-detail-page/content.js +0 -15
  146. package/components/shadcn-example/blog-detail-page/header.d.ts +0 -11
  147. package/components/shadcn-example/blog-detail-page/header.js +0 -36
  148. package/components/shadcn-example/blog-detail-page/index.d.ts +0 -25
  149. package/components/shadcn-example/blog-detail-page/index.js +0 -74
  150. package/components/shadcn-example/blog-page/blog-post-card.d.ts +0 -13
  151. package/components/shadcn-example/blog-page/blog-post-card.js +0 -30
  152. package/components/shadcn-example/blog-page/featured-post-sidebar-item.d.ts +0 -10
  153. package/components/shadcn-example/blog-page/featured-post-sidebar-item.js +0 -19
  154. package/components/shadcn-example/blog-page/index.d.ts +0 -20
  155. package/components/shadcn-example/blog-page/index.js +0 -36
  156. package/components/shadcn-example/coming-soon/countdown.d.ts +0 -2
  157. package/components/shadcn-example/coming-soon/countdown.js +0 -82
  158. package/components/shadcn-example/coming-soon/index.d.ts +0 -10
  159. package/components/shadcn-example/coming-soon/index.js +0 -41
  160. package/components/shadcn-io/color-picker/index.d.ts +0 -43
  161. package/components/shadcn-io/color-picker/index.js +0 -304
  162. package/components/shadcn-io/copy-button/index.d.ts +0 -16
  163. package/components/shadcn-io/copy-button/index.js +0 -121
  164. package/components/shadcn-io/dropzone/index.d.ts +0 -19
  165. package/components/shadcn-io/dropzone/index.js +0 -131
  166. package/components/shadcn-io/gantt/index.d.ts +0 -145
  167. package/components/shadcn-io/gantt/index.js +0 -766
  168. package/components/shadcn-io/table/index.d.ts +0 -60
  169. package/components/shadcn-io/table/index.js +0 -138
  170. package/templates/appcorp-v1/footer/bottom-bar.d.ts +0 -6
  171. package/templates/appcorp-v1/footer/bottom-bar.js +0 -25
  172. package/templates/appcorp-v1/footer/cta.d.ts +0 -6
  173. package/templates/appcorp-v1/footer/cta.js +0 -21
  174. package/templates/appcorp-v1/footer/footer-grid.d.ts +0 -14
  175. package/templates/appcorp-v1/footer/footer-grid.js +0 -52
  176. package/templates/appcorp-v1/footer/index.d.ts +0 -3
  177. package/templates/appcorp-v1/footer/index.js +0 -28
  178. package/templates/appcorp-v1/footer/newsletter.d.ts +0 -11
  179. package/templates/appcorp-v1/footer/newsletter.js +0 -28
  180. package/templates/appcorp-v1/footer/stats.d.ts +0 -6
  181. package/templates/appcorp-v1/footer/stats.js +0 -15
  182. package/templates/appcorp-v1/header/announcement-bar.d.ts +0 -3
  183. package/templates/appcorp-v1/header/announcement-bar.js +0 -15
  184. package/templates/appcorp-v1/header/dropdown-panel.d.ts +0 -8
  185. package/templates/appcorp-v1/header/dropdown-panel.js +0 -72
  186. package/templates/appcorp-v1/header/index.d.ts +0 -12
  187. package/templates/appcorp-v1/header/index.js +0 -16
  188. package/templates/appcorp-v1/header/mobile-menu.d.ts +0 -14
  189. package/templates/appcorp-v1/header/mobile-menu.js +0 -101
  190. package/templates/appcorp-v1/header/navigation-bar.d.ts +0 -3
  191. package/templates/appcorp-v1/header/navigation-bar.js +0 -117
  192. package/templates/appcorp-v1/header/social-button.d.ts +0 -7
  193. package/templates/appcorp-v1/header/social-button.js +0 -48
  194. package/templates/appcorp-v1/home.d.ts +0 -3
  195. package/templates/appcorp-v1/home.js +0 -27
  196. package/templates/data/appcorp-v1.d.ts +0 -93
  197. package/templates/data/appcorp-v1.js +0 -348
  198. package/templates/data/edupilotpro-v1.d.ts +0 -33
  199. package/templates/data/edupilotpro-v1.js +0 -116
  200. package/templates/data/school-v1.d.ts +0 -328
  201. package/templates/data/school-v1.js +0 -1563
  202. package/templates/edupilotpro-v1/feature-card.d.ts +0 -13
  203. package/templates/edupilotpro-v1/feature-card.js +0 -28
  204. package/templates/edupilotpro-v1/mockups/dashboard-mockup.d.ts +0 -3
  205. package/templates/edupilotpro-v1/mockups/dashboard-mockup.js +0 -55
  206. package/templates/school-v1/footer.d.ts +0 -3
  207. package/templates/school-v1/footer.js +0 -75
  208. package/templates/school-v1/index.d.ts +0 -18
  209. package/templates/school-v1/index.js +0 -60
  210. package/templates/school-v1/navigation.d.ts +0 -3
  211. package/templates/school-v1/navigation.js +0 -123
  212. package/templates/school-v1/sections/about.d.ts +0 -3
  213. package/templates/school-v1/sections/about.js +0 -49
  214. package/templates/school-v1/sections/admissions.d.ts +0 -3
  215. package/templates/school-v1/sections/admissions.js +0 -77
  216. package/templates/school-v1/sections/contact.d.ts +0 -3
  217. package/templates/school-v1/sections/contact.js +0 -67
  218. package/templates/school-v1/sections/faqs.d.ts +0 -3
  219. package/templates/school-v1/sections/faqs.js +0 -50
  220. package/templates/school-v1/sections/hero.d.ts +0 -3
  221. package/templates/school-v1/sections/hero.js +0 -132
  222. package/templates/school-v1/sections/management.d.ts +0 -3
  223. package/templates/school-v1/sections/management.js +0 -34
  224. package/templates/school-v1/sections/policies.d.ts +0 -3
  225. package/templates/school-v1/sections/policies.js +0 -127
  226. package/templates/school-v1/sections/programs.d.ts +0 -3
  227. package/templates/school-v1/sections/programs.js +0 -107
  228. package/templates/school-v1/sections/testimonials.d.ts +0 -3
  229. package/templates/school-v1/sections/testimonials.js +0 -46
  230. package/templates/school-v1/sections/why-choose-us.d.ts +0 -3
  231. package/templates/school-v1/sections/why-choose-us.js +0 -57
@@ -1,59 +0,0 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.Authentication = void 0;
7
- var link_1 = __importDefault(require("next/link"));
8
- var utils_1 = require("../../../lib/utils");
9
- var button_1 = require("../../../components/ui/button");
10
- var user_auth_form_1 = require("./user-auth-form");
11
- var react_1 = __importDefault(require("react"));
12
- var image_1 = __importDefault(require("next/image"));
13
- var card_1 = require("../../../components/ui/card");
14
- var avatar_1 = require("../../../components/ui/avatar");
15
- var lucide_react_1 = require("lucide-react");
16
- var Authentication = function (_a) {
17
- var avatars = _a.avatars, backgroundImage = _a.backgroundImage, description = _a.description, email = _a.email, handleEmailOnChange = _a.handleEmailOnChange, handleOnClickTopCta = _a.handleOnClickTopCta, handleOnSubmit = _a.handleOnSubmit, handlePasswordOnChange = _a.handlePasswordOnChange, heading = _a.heading, isLoading = _a.isLoading, logo = _a.logo, logoAlt = _a.logoAlt, numberOfCustomers = _a.numberOfCustomers, password = _a.password, privacyLink = _a.privacyLink, termsLink = _a.termsLink, topCtaLabel = _a.topCtaLabel;
18
- return (react_1.default.createElement("div", { className: "relative container flex-1 shrink-0 items-center justify-center md:grid lg:max-w-none lg:grid-cols-2 lg:px-0" },
19
- topCtaLabel && handleOnClickTopCta && (react_1.default.createElement(button_1.Button, { onClick: handleOnClickTopCta, className: (0, utils_1.cn)((0, button_1.buttonVariants)({ variant: "ghost" }), "absolute top-4 right-4 md:top-8 md:right-8") }, topCtaLabel)),
20
- react_1.default.createElement("div", { className: "text-primary relative hidden h-full flex-col p-10 lg:flex dark:border-r" },
21
- react_1.default.createElement("div", { className: "bg-primary/5 absolute inset-0", style: {
22
- backgroundImage: "url(".concat(backgroundImage, ")"),
23
- backgroundSize: "cover",
24
- backgroundPosition: "center",
25
- } }),
26
- react_1.default.createElement("div", { className: "relative z-20 flex items-center" },
27
- react_1.default.createElement(image_1.default, { alt: logoAlt, className: "mr-2 h-6 w-auto", height: 24, priority: true, src: logo, width: 40 })),
28
- react_1.default.createElement("div", { className: "relative z-20 mt-auto" },
29
- react_1.default.createElement(card_1.Card, { className: "bg-gradient-to-br from-accent-brand-dark to-accent-brand-light border-none shadow-lg" },
30
- react_1.default.createElement(card_1.CardContent, { className: "p-8" },
31
- react_1.default.createElement("div", { className: "flex justify-center mb-6" }),
32
- react_1.default.createElement("h2", { className: "text-2xl font-bold text-center text-gray-900 mb-3" }, "Next Generation ERP"),
33
- react_1.default.createElement("p", { className: "text-center text-[#4a4a5e] mb-6 text-sm" }),
34
- react_1.default.createElement("div", { className: "flex items-center justify-center gap-3" },
35
- react_1.default.createElement("div", { className: "flex -space-x-2" }, avatars.map(function (avatar, index) { return (react_1.default.createElement(avatar_1.Avatar, { key: index, className: "w-8 h-8 border-2 border-white" },
36
- react_1.default.createElement(avatar_1.AvatarImage, { src: avatar.image, alt: avatar.alt }),
37
- react_1.default.createElement(avatar_1.AvatarFallback, { className: "bg-gradient-to-br from-gray-600 to-gray-800" }))); })),
38
- react_1.default.createElement("div", { className: "flex items-center gap-1.5" },
39
- new Array(5).fill(0).map(function (_, i) { return (react_1.default.createElement(lucide_react_1.Star, { key: i, className: "w-4 h-4 fill-amber-500 text-amber-500" })); }),
40
- react_1.default.createElement("span", { className: "text-sm font-medium text-gray-700" },
41
- numberOfCustomers,
42
- " happy customers"))))))),
43
- react_1.default.createElement("div", { className: "flex items-center justify-center lg:h-screen lg:p-8" },
44
- react_1.default.createElement("div", { className: "mx-auto flex w-full flex-col justify-center gap-6 sm:w-[350px]" },
45
- react_1.default.createElement("div", { className: "flex flex-col gap-2 text-center" },
46
- react_1.default.createElement("h1", { className: "text-2xl font-semibold tracking-tight" }, heading),
47
- react_1.default.createElement("p", { className: "text-muted-foreground text-sm" }, description)),
48
- react_1.default.createElement(user_auth_form_1.UserAuthForm, { email: email, handleEmailOnChange: handleEmailOnChange, handleOnSubmit: handleOnSubmit, handlePasswordOnChange: handlePasswordOnChange, isLoading: isLoading, password: password }),
49
- react_1.default.createElement("p", { className: "text-muted-foreground px-8 text-center text-sm" },
50
- "By clicking continue, you agree to our",
51
- " ",
52
- react_1.default.createElement(link_1.default, { href: termsLink, className: "hover:text-primary underline underline-offset-4" }, "Terms of Service"),
53
- " ",
54
- "and",
55
- " ",
56
- react_1.default.createElement(link_1.default, { href: privacyLink, className: "hover:text-primary underline underline-offset-4" }, "Privacy Policy"),
57
- ".")))));
58
- };
59
- exports.Authentication = Authentication;
@@ -1,11 +0,0 @@
1
- import * as React from "react";
2
- export interface UserAuthFormProps {
3
- className?: string;
4
- email: string;
5
- handleEmailOnChange: (event: React.ChangeEvent<HTMLInputElement>) => void;
6
- handleOnSubmit?: (event: React.SyntheticEvent) => void;
7
- handlePasswordOnChange: (event: React.ChangeEvent<HTMLInputElement>) => void;
8
- isLoading?: boolean;
9
- password: string;
10
- }
11
- export declare const UserAuthForm: React.FC<UserAuthFormProps>;
@@ -1,54 +0,0 @@
1
- "use client";
2
- "use strict";
3
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
4
- if (k2 === undefined) k2 = k;
5
- var desc = Object.getOwnPropertyDescriptor(m, k);
6
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
7
- desc = { enumerable: true, get: function() { return m[k]; } };
8
- }
9
- Object.defineProperty(o, k2, desc);
10
- }) : (function(o, m, k, k2) {
11
- if (k2 === undefined) k2 = k;
12
- o[k2] = m[k];
13
- }));
14
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
15
- Object.defineProperty(o, "default", { enumerable: true, value: v });
16
- }) : function(o, v) {
17
- o["default"] = v;
18
- });
19
- var __importStar = (this && this.__importStar) || (function () {
20
- var ownKeys = function(o) {
21
- ownKeys = Object.getOwnPropertyNames || function (o) {
22
- var ar = [];
23
- for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
24
- return ar;
25
- };
26
- return ownKeys(o);
27
- };
28
- return function (mod) {
29
- if (mod && mod.__esModule) return mod;
30
- var result = {};
31
- if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
32
- __setModuleDefault(result, mod);
33
- return result;
34
- };
35
- })();
36
- Object.defineProperty(exports, "__esModule", { value: true });
37
- exports.UserAuthForm = void 0;
38
- var React = __importStar(require("react"));
39
- var utils_1 = require("../../../lib/utils");
40
- var button_1 = require("../../../components/ui/button");
41
- var lucide_react_1 = require("lucide-react");
42
- var enhanced_input_1 = require("../../../components/enhanced-input");
43
- var UserAuthForm = function (_a) {
44
- var className = _a.className, email = _a.email, handleEmailOnChange = _a.handleEmailOnChange, handleOnSubmit = _a.handleOnSubmit, handlePasswordOnChange = _a.handlePasswordOnChange, isLoading = _a.isLoading, password = _a.password;
45
- return (React.createElement("div", { className: (0, utils_1.cn)("grid gap-6", className) },
46
- React.createElement("div", { className: "grid gap-2" },
47
- React.createElement("div", { className: "grid gap-4" },
48
- React.createElement(enhanced_input_1.EnhancedInput, { autoCapitalize: "none", autoComplete: "email", autoCorrect: "off", disabled: isLoading, id: "email", label: "Email", placeholder: "name@example.com", type: "email", onChange: handleEmailOnChange, required: true, value: email }),
49
- React.createElement(enhanced_input_1.EnhancedInput, { autoCapitalize: "none", autoCorrect: "off", disabled: isLoading, id: "password", label: "Password", placeholder: "********", type: "password", required: true, onChange: handlePasswordOnChange, value: password })),
50
- React.createElement(button_1.Button, { disabled: isLoading, onClick: handleOnSubmit },
51
- isLoading && React.createElement(lucide_react_1.LoaderIcon, { className: "animate-spin" }),
52
- "Sign In with Email"))));
53
- };
54
- exports.UserAuthForm = UserAuthForm;
@@ -1,15 +0,0 @@
1
- import React from "react";
2
- interface Comment {
3
- authorAvatar?: string;
4
- authorName: string;
5
- claps: number;
6
- content: string;
7
- id: string;
8
- publishedAt: string;
9
- }
10
- interface CommentSectionProps {
11
- comments: Comment[];
12
- onAddComment: (content: string) => void;
13
- }
14
- export declare const CommentSection: ({ comments, onAddComment, }: CommentSectionProps) => React.JSX.Element;
15
- export {};
@@ -1,83 +0,0 @@
1
- "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
- Object.defineProperty(o, "default", { enumerable: true, value: v });
15
- }) : function(o, v) {
16
- o["default"] = v;
17
- });
18
- var __importStar = (this && this.__importStar) || (function () {
19
- var ownKeys = function(o) {
20
- ownKeys = Object.getOwnPropertyNames || function (o) {
21
- var ar = [];
22
- for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
- return ar;
24
- };
25
- return ownKeys(o);
26
- };
27
- return function (mod) {
28
- if (mod && mod.__esModule) return mod;
29
- var result = {};
30
- if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
- __setModuleDefault(result, mod);
32
- return result;
33
- };
34
- })();
35
- Object.defineProperty(exports, "__esModule", { value: true });
36
- exports.CommentSection = void 0;
37
- var react_1 = __importStar(require("react"));
38
- var button_1 = require("@/components/ui/button");
39
- var textarea_1 = require("@/components/ui/textarea");
40
- var avatar_1 = require("@/components/ui/avatar");
41
- var lucide_react_1 = require("lucide-react");
42
- var CommentSection = function (_a) {
43
- var comments = _a.comments, onAddComment = _a.onAddComment;
44
- var _b = (0, react_1.useState)(""), newComment = _b[0], setNewComment = _b[1];
45
- var handleSubmit = function (e) {
46
- e.preventDefault();
47
- if (newComment.trim()) {
48
- onAddComment(newComment);
49
- setNewComment("");
50
- }
51
- };
52
- return (react_1.default.createElement("section", { className: "space-y-6" },
53
- react_1.default.createElement("div", { className: "border-blog-border border-t pt-12" },
54
- react_1.default.createElement("h2", { className: "text-foreground mb-8 flex items-center gap-2 text-2xl font-bold" },
55
- react_1.default.createElement(lucide_react_1.MessageCircle, { className: "h-6 w-6" }),
56
- "Comments (",
57
- comments.length,
58
- ")"),
59
- react_1.default.createElement("form", { onSubmit: handleSubmit, className: "bg-card border-blog-border mb-12 rounded-xl border p-6" },
60
- react_1.default.createElement("div", { className: "space-y-4" },
61
- react_1.default.createElement(textarea_1.Textarea, { placeholder: "Share your thoughts...", value: newComment, onChange: function (e) { return setNewComment(e.target.value); }, className: "border-blog-border focus:border-primary min-h-[100px] resize-none" }),
62
- react_1.default.createElement("div", { className: "flex justify-end" },
63
- react_1.default.createElement(button_1.Button, { type: "submit", className: "gap-2" },
64
- react_1.default.createElement(lucide_react_1.Send, { className: "h-4 w-4" }),
65
- "Post Comment")))),
66
- react_1.default.createElement("div", { className: "space-y-6" }, comments.map(function (comment) { return (react_1.default.createElement("div", { key: comment.id, className: "bg-card border-blog-border hover:bg-blog-hover rounded-xl border p-6 transition-colors" },
67
- react_1.default.createElement("div", { className: "flex items-start space-x-4" },
68
- react_1.default.createElement(avatar_1.Avatar, { className: "h-10 w-10" },
69
- react_1.default.createElement(avatar_1.AvatarImage, { src: comment.authorAvatar, alt: comment.authorName }),
70
- react_1.default.createElement(avatar_1.AvatarFallback, null, comment.authorName.charAt(0))),
71
- react_1.default.createElement("div", { className: "flex-1 space-y-3" },
72
- react_1.default.createElement("div", { className: "flex items-center justify-between" },
73
- react_1.default.createElement("div", null,
74
- react_1.default.createElement("p", { className: "text-foreground font-medium" }, comment.authorName),
75
- react_1.default.createElement("p", { className: "text-blog-meta text-sm" }, comment.publishedAt))),
76
- react_1.default.createElement("p", { className: "text-blog-content leading-relaxed" }, comment.content),
77
- react_1.default.createElement("div", { className: "flex items-center gap-4" },
78
- react_1.default.createElement(button_1.Button, { variant: "ghost", size: "sm", className: "text-blog-meta hover:text-primary gap-2" },
79
- react_1.default.createElement(lucide_react_1.Heart, { className: "h-4 w-4" }),
80
- comment.claps),
81
- react_1.default.createElement(button_1.Button, { variant: "ghost", size: "sm", className: "text-blog-meta hover:text-primary" }, "Reply")))))); })))));
82
- };
83
- exports.CommentSection = CommentSection;
@@ -1,7 +0,0 @@
1
- import React from "react";
2
- interface BlogContentProps {
3
- content: string[];
4
- coverImage?: string;
5
- }
6
- export declare const Content: ({ content, coverImage }: BlogContentProps) => React.JSX.Element;
7
- export {};
@@ -1,15 +0,0 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.Content = void 0;
7
- var react_1 = __importDefault(require("react"));
8
- var Content = function (_a) {
9
- var content = _a.content, coverImage = _a.coverImage;
10
- return (react_1.default.createElement("article", { className: "space-y-8" },
11
- coverImage && (react_1.default.createElement("div", { className: "bg-muted aspect-video w-full overflow-hidden rounded-xl" },
12
- react_1.default.createElement("img", { src: coverImage, alt: "Blog cover", className: "h-full w-full object-cover" }))),
13
- react_1.default.createElement("div", { className: "prose prose-lg max-w-none" }, content.map(function (paragraph, index) { return (react_1.default.createElement("p", { key: index, className: "text-blog-content mb-6 leading-relaxed" }, paragraph)); }))));
14
- };
15
- exports.Content = Content;
@@ -1,11 +0,0 @@
1
- import React from "react";
2
- interface BlogHeaderProps {
3
- category: string;
4
- title: string;
5
- authorName: string;
6
- authorAvatar?: string;
7
- publishedAt: string;
8
- onBack: () => void;
9
- }
10
- export declare const Header: ({ category, title, authorName, authorAvatar, publishedAt, }: BlogHeaderProps) => React.JSX.Element;
11
- export {};
@@ -1,36 +0,0 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.Header = void 0;
7
- var react_1 = __importDefault(require("react"));
8
- var lucide_react_1 = require("lucide-react");
9
- var button_1 = require("@/components/ui/button");
10
- var avatar_1 = require("@/components/ui/avatar");
11
- var badge_1 = require("@/components/ui/badge");
12
- var Header = function (_a) {
13
- var category = _a.category, title = _a.title, authorName = _a.authorName, authorAvatar = _a.authorAvatar, publishedAt = _a.publishedAt;
14
- return (react_1.default.createElement("header", { className: "space-y-6" },
15
- react_1.default.createElement(badge_1.Badge, { variant: "outline" }, category),
16
- react_1.default.createElement("h1", { className: "text-foreground text-4xl leading-15 font-bold tracking-tight md:text-4xl lg:text-5xl" }, title),
17
- react_1.default.createElement("div", { className: "flex flex-wrap items-center justify-between gap-4" },
18
- react_1.default.createElement("div", { className: "flex items-center space-x-4" },
19
- react_1.default.createElement(avatar_1.Avatar, { className: "h-12 w-12" },
20
- react_1.default.createElement(avatar_1.AvatarImage, { src: authorAvatar, alt: authorName, className: "object-cover" }),
21
- react_1.default.createElement(avatar_1.AvatarFallback, null, authorName.charAt(0))),
22
- react_1.default.createElement("div", null,
23
- react_1.default.createElement("p", { className: "font-medium" },
24
- "by ",
25
- authorName),
26
- react_1.default.createElement("p", { className: "text-muted-foreground text-sm" }, publishedAt))),
27
- react_1.default.createElement("div", { className: "flex items-center space-x-3" },
28
- react_1.default.createElement("span", { className: "text-muted-foreground text-[11px] font-medium tracking-widest uppercase" }, "Share this"),
29
- react_1.default.createElement(button_1.Button, { variant: "outline", size: "icon", className: "hover:bg-blog-hover h-9 w-9 rounded-full" },
30
- react_1.default.createElement(lucide_react_1.Twitter, null)),
31
- react_1.default.createElement(button_1.Button, { variant: "outline", size: "icon", className: "hover:bg-blog-hover h-9 w-9 rounded-full" },
32
- react_1.default.createElement(lucide_react_1.Facebook, null)),
33
- react_1.default.createElement(button_1.Button, { variant: "outline", size: "icon", className: "hover:bg-blog-hover h-9 w-9 rounded-full" },
34
- react_1.default.createElement(lucide_react_1.Linkedin, null))))));
35
- };
36
- exports.Header = Header;
@@ -1,25 +0,0 @@
1
- import { type FC } from "react";
2
- export type Comment = {
3
- authorAvatar?: string;
4
- authorName: string;
5
- claps: number;
6
- content: string;
7
- id: string;
8
- publishedAt: string;
9
- };
10
- export type BlogItem = {
11
- authorAvatar?: string;
12
- authorName: string;
13
- category: string;
14
- claps?: number;
15
- content: string[];
16
- publishedAt: string;
17
- title: string;
18
- };
19
- type BlogDetailPageProps = {
20
- blog: BlogItem;
21
- recommendedPosts?: BlogItem[];
22
- initialComments?: Comment[];
23
- };
24
- export declare const BlogDetailPage: FC<BlogDetailPageProps>;
25
- export {};
@@ -1,74 +0,0 @@
1
- "use client";
2
- "use strict";
3
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
4
- if (k2 === undefined) k2 = k;
5
- var desc = Object.getOwnPropertyDescriptor(m, k);
6
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
7
- desc = { enumerable: true, get: function() { return m[k]; } };
8
- }
9
- Object.defineProperty(o, k2, desc);
10
- }) : (function(o, m, k, k2) {
11
- if (k2 === undefined) k2 = k;
12
- o[k2] = m[k];
13
- }));
14
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
15
- Object.defineProperty(o, "default", { enumerable: true, value: v });
16
- }) : function(o, v) {
17
- o["default"] = v;
18
- });
19
- var __importStar = (this && this.__importStar) || (function () {
20
- var ownKeys = function(o) {
21
- ownKeys = Object.getOwnPropertyNames || function (o) {
22
- var ar = [];
23
- for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
24
- return ar;
25
- };
26
- return ownKeys(o);
27
- };
28
- return function (mod) {
29
- if (mod && mod.__esModule) return mod;
30
- var result = {};
31
- if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
32
- __setModuleDefault(result, mod);
33
- return result;
34
- };
35
- })();
36
- var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
37
- if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
38
- if (ar || !(i in from)) {
39
- if (!ar) ar = Array.prototype.slice.call(from, 0, i);
40
- ar[i] = from[i];
41
- }
42
- }
43
- return to.concat(ar || Array.prototype.slice.call(from));
44
- };
45
- Object.defineProperty(exports, "__esModule", { value: true });
46
- exports.BlogDetailPage = void 0;
47
- var react_1 = __importStar(require("react"));
48
- var header_1 = require("./header");
49
- var content_1 = require("./content");
50
- var comment_section_1 = require("./comment-section");
51
- var BlogDetailPage = function (_a) {
52
- // const navigate = useRouter();
53
- var blog = _a.blog, _b = _a.initialComments, initialComments = _b === void 0 ? [] : _b;
54
- var _c = (0, react_1.useState)(initialComments), comments = _c[0], setComments = _c[1];
55
- var handleAddComment = function (content) {
56
- var newComment = {
57
- id: Date.now().toString(),
58
- authorName: "You",
59
- authorAvatar: "/placeholder.svg",
60
- content: content,
61
- publishedAt: "Just now",
62
- claps: 0,
63
- };
64
- setComments(__spreadArray([newComment], comments, true));
65
- };
66
- return (react_1.default.createElement("div", { className: "bg-background min-h-screen" },
67
- react_1.default.createElement("div", { className: "mx-auto max-w-4xl px-6 py-12" },
68
- react_1.default.createElement(header_1.Header, { authorAvatar: blog.authorAvatar, authorName: blog.authorName, category: blog.category, onBack: function () { return void 0; }, publishedAt: blog.publishedAt, title: blog.title }),
69
- react_1.default.createElement("div", { className: "mt-16" },
70
- react_1.default.createElement(content_1.Content, { content: blog.content, coverImage: "https://plus.unsplash.com/premium_photo-1683211783920-8c66ab120c09" })),
71
- react_1.default.createElement("div", { className: "mt-16" },
72
- react_1.default.createElement(comment_section_1.CommentSection, { comments: comments, onAddComment: handleAddComment })))));
73
- };
74
- exports.BlogDetailPage = BlogDetailPage;
@@ -1,13 +0,0 @@
1
- import React from "react";
2
- interface BlogPostCardProps {
3
- authorAvatarSrc: string;
4
- authorName: string;
5
- description: string;
6
- handleOnClick: () => void;
7
- imageAlt: string;
8
- imageSrc: string;
9
- readTime: string;
10
- title: string;
11
- }
12
- export declare const BlogPostCard: ({ authorAvatarSrc, authorName, description, handleOnClick, imageAlt, imageSrc, readTime, title, }: BlogPostCardProps) => React.JSX.Element;
13
- export {};
@@ -1,30 +0,0 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.BlogPostCard = void 0;
7
- var react_1 = __importDefault(require("react"));
8
- var image_1 = __importDefault(require("next/image"));
9
- var avatar_1 = require("../../../components/ui/avatar");
10
- var BlogPostCard = function (_a) {
11
- var authorAvatarSrc = _a.authorAvatarSrc, authorName = _a.authorName, description = _a.description, handleOnClick = _a.handleOnClick, imageAlt = _a.imageAlt, imageSrc = _a.imageSrc, readTime = _a.readTime, title = _a.title;
12
- return (react_1.default.createElement("div", { className: "bg-card text-card-foreground overflow-hidden rounded-lg border cursor-pointer", onClick: handleOnClick },
13
- react_1.default.createElement(image_1.default, { alt: imageAlt, className: "h-48 w-full object-cover", height: 225, src: imageSrc, width: 400 }),
14
- react_1.default.createElement("div", { className: "grid gap-2 p-4" },
15
- react_1.default.createElement("h3", { className: "text-lg leading-tight font-semibold" }, title),
16
- react_1.default.createElement("p", { className: "text-muted-foreground line-clamp-3 text-sm" }, description),
17
- react_1.default.createElement("div", { className: "text-muted-foreground flex items-center gap-2 text-sm" },
18
- react_1.default.createElement(avatar_1.Avatar, { className: "h-6 w-6" },
19
- react_1.default.createElement(avatar_1.AvatarImage, { src: authorAvatarSrc || "/placeholder.svg" }),
20
- react_1.default.createElement(avatar_1.AvatarFallback, null, authorName
21
- .split(" ")
22
- .map(function (n) { return n[0]; })
23
- .join(""))),
24
- react_1.default.createElement("span", null, authorName),
25
- react_1.default.createElement("span", null, "\u2022"),
26
- react_1.default.createElement("span", null,
27
- readTime,
28
- " read")))));
29
- };
30
- exports.BlogPostCard = BlogPostCard;
@@ -1,10 +0,0 @@
1
- import React from "react";
2
- interface FeaturedPostSidebarItemProps {
3
- handleOnClick: () => void;
4
- imageAlt: string;
5
- imageSrc: string;
6
- tags: string[];
7
- title: string;
8
- }
9
- export declare const FeaturedPostSidebarItem: ({ handleOnClick, imageAlt, imageSrc, tags, title, }: FeaturedPostSidebarItemProps) => React.JSX.Element;
10
- export {};
@@ -1,19 +0,0 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.FeaturedPostSidebarItem = void 0;
7
- var react_1 = __importDefault(require("react"));
8
- var image_1 = __importDefault(require("next/image"));
9
- var badge_1 = require("../../ui/badge");
10
- var FeaturedPostSidebarItem = function (_a) {
11
- var handleOnClick = _a.handleOnClick, imageAlt = _a.imageAlt, imageSrc = _a.imageSrc, tags = _a.tags, title = _a.title;
12
- return (react_1.default.createElement("div", { className: "flex flex-col gap-2 cursor-pointer", onClick: handleOnClick },
13
- react_1.default.createElement("div", { className: "flex items-center gap-4" },
14
- react_1.default.createElement(image_1.default, { alt: imageAlt, className: "aspect-square rounded-md object-cover", height: 64, src: imageSrc || "/placeholder.svg", width: 64 }),
15
- react_1.default.createElement("div", null,
16
- react_1.default.createElement("h4", { className: "text-sm leading-snug font-medium" }, title),
17
- react_1.default.createElement("div", { className: "flex flex-row gap-4" }, tags === null || tags === void 0 ? void 0 : tags.map(function (tag) { return (react_1.default.createElement(badge_1.Badge, { key: tag, className: "mb-2 w-fit bg-black text-white backdrop-blur-sm" }, tag)); }))))));
18
- };
19
- exports.FeaturedPostSidebarItem = FeaturedPostSidebarItem;
@@ -1,20 +0,0 @@
1
- import { FC } from "react";
2
- export type BlogItem = {
3
- authorAvatarSrc: string;
4
- authorName: string;
5
- description: string;
6
- handleOnClick: () => void;
7
- imageAlt?: string;
8
- imageSrc: string;
9
- isFeatured: boolean;
10
- link: string;
11
- readTime: string;
12
- tags: string[];
13
- title: string;
14
- };
15
- type BlogPageProps = {
16
- items: BlogItem[];
17
- recommendedPosts: BlogItem[];
18
- };
19
- export declare const BlogPage: FC<BlogPageProps>;
20
- export {};
@@ -1,36 +0,0 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.BlogPage = void 0;
7
- var react_1 = __importDefault(require("react"));
8
- var link_1 = __importDefault(require("next/link"));
9
- var image_1 = __importDefault(require("next/image"));
10
- var badge_1 = require("../../../components/ui/badge");
11
- var button_1 = require("../../../components/ui/button");
12
- var blog_post_card_1 = require("./blog-post-card");
13
- var featured_post_sidebar_item_1 = require("./featured-post-sidebar-item");
14
- var BlogPage = function (_a) {
15
- var _b;
16
- var items = _a.items, recommendedPosts = _a.recommendedPosts;
17
- var featuredPost = items.find(function (item) { return item.isFeatured; });
18
- var otherPosts = items.filter(function (item) { return !item.isFeatured; });
19
- return (react_1.default.createElement("div", { className: "container mx-auto px-4 py-8 md:px-6 lg:px-8" },
20
- react_1.default.createElement("div", { className: "grid grid-cols-1 gap-8 lg:grid-cols-3" },
21
- react_1.default.createElement("div", { className: "relative h-[400px] overflow-hidden rounded-lg shadow-lg md:h-[500px] lg:col-span-2 cursor-pointer", onClick: featuredPost === null || featuredPost === void 0 ? void 0 : featuredPost.handleOnClick },
22
- (featuredPost === null || featuredPost === void 0 ? void 0 : featuredPost.imageSrc) && (react_1.default.createElement(image_1.default, { alt: featuredPost.imageAlt, className: "w-full object-cover", fill: true, height: 0, sizes: "70vw", src: featuredPost.imageSrc, width: 0 })),
23
- react_1.default.createElement("div", { className: "absolute inset-0 flex flex-col justify-end bg-gradient-to-t from-black/70 to-transparent p-6 text-white" },
24
- react_1.default.createElement("div", { className: "flex flex-row gap-4" }, (_b = featuredPost === null || featuredPost === void 0 ? void 0 : featuredPost.tags) === null || _b === void 0 ? void 0 : _b.map(function (tag) { return (react_1.default.createElement(badge_1.Badge, { key: tag, className: "mb-2 w-fit bg-white/20 text-white backdrop-blur-sm" }, tag)); })),
25
- react_1.default.createElement("h2", { className: "text-2xl leading-tight font-bold md:text-3xl" }, featuredPost === null || featuredPost === void 0 ? void 0 : featuredPost.title))),
26
- react_1.default.createElement("div", { className: "bg-card text-card-foreground space-y-6 rounded-lg border p-6 lg:col-span-1" },
27
- react_1.default.createElement("h3", { className: "text-xl font-semibold" }, "Other posts"),
28
- react_1.default.createElement("div", { className: "space-y-4" }, otherPosts.map(function (item) { return (react_1.default.createElement(featured_post_sidebar_item_1.FeaturedPostSidebarItem, { handleOnClick: item.handleOnClick, imageAlt: item.imageAlt, imageSrc: item.imageSrc, key: item.title, tags: item.tags, title: item.title })); })))),
29
- react_1.default.createElement("div", { className: "mt-12" },
30
- react_1.default.createElement("div", { className: "mb-6 flex items-center justify-between" },
31
- react_1.default.createElement("h2", { className: "text-2xl font-bold" }, "Recommended Posts"),
32
- react_1.default.createElement(button_1.Button, { variant: "outline", asChild: true },
33
- react_1.default.createElement(link_1.default, { href: "#" }, "All Posts"))),
34
- react_1.default.createElement("div", { className: "grid grid-cols-1 gap-6 md:grid-cols-2 lg:grid-cols-3" }, recommendedPosts.map(function (p) { return (react_1.default.createElement(blog_post_card_1.BlogPostCard, { authorAvatarSrc: p.authorAvatarSrc, authorName: p.authorName, description: p.description, handleOnClick: p.handleOnClick, imageAlt: p.imageAlt, imageSrc: p.imageSrc, key: p.title, readTime: p.readTime, title: p.title })); })))));
35
- };
36
- exports.BlogPage = BlogPage;
@@ -1,2 +0,0 @@
1
- import React from "react";
2
- export declare const Countdown: () => React.JSX.Element;
@@ -1,82 +0,0 @@
1
- "use client";
2
- "use strict";
3
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
4
- if (k2 === undefined) k2 = k;
5
- var desc = Object.getOwnPropertyDescriptor(m, k);
6
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
7
- desc = { enumerable: true, get: function() { return m[k]; } };
8
- }
9
- Object.defineProperty(o, k2, desc);
10
- }) : (function(o, m, k, k2) {
11
- if (k2 === undefined) k2 = k;
12
- o[k2] = m[k];
13
- }));
14
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
15
- Object.defineProperty(o, "default", { enumerable: true, value: v });
16
- }) : function(o, v) {
17
- o["default"] = v;
18
- });
19
- var __importStar = (this && this.__importStar) || (function () {
20
- var ownKeys = function(o) {
21
- ownKeys = Object.getOwnPropertyNames || function (o) {
22
- var ar = [];
23
- for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
24
- return ar;
25
- };
26
- return ownKeys(o);
27
- };
28
- return function (mod) {
29
- if (mod && mod.__esModule) return mod;
30
- var result = {};
31
- if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
32
- __setModuleDefault(result, mod);
33
- return result;
34
- };
35
- })();
36
- Object.defineProperty(exports, "__esModule", { value: true });
37
- exports.Countdown = void 0;
38
- var react_1 = __importStar(require("react"));
39
- var calculateTimeLeft = function (targetDate) {
40
- var difference = +targetDate - +new Date();
41
- var timeLeft = {
42
- days: 0,
43
- hours: 0,
44
- minutes: 0,
45
- seconds: 0,
46
- };
47
- if (difference > 0) {
48
- timeLeft = {
49
- days: Math.floor(difference / (1000 * 60 * 60 * 24)),
50
- hours: Math.floor((difference / (1000 * 60 * 60)) % 24),
51
- minutes: Math.floor((difference / 1000 / 60) % 60),
52
- seconds: Math.floor((difference / 1000) % 60),
53
- };
54
- }
55
- return timeLeft;
56
- };
57
- var Countdown = function () {
58
- // Initialize targetDate only once using useState's functional update
59
- var targetDate = (0, react_1.useState)(function () {
60
- var date = new Date();
61
- date.setDate(date.getDate() + 30); // Set to 30 days from the initial render time
62
- return date;
63
- })[0];
64
- var _a = (0, react_1.useState)(calculateTimeLeft(targetDate)), timeLeft = _a[0], setTimeLeft = _a[1];
65
- (0, react_1.useEffect)(function () {
66
- // Use setInterval for continuous updates
67
- var timer = setInterval(function () {
68
- setTimeLeft(calculateTimeLeft(targetDate));
69
- }, 1000); // Update every second
70
- // Clean up the interval when the component unmounts or targetDate changes (though targetDate is stable here)
71
- return function () { return clearInterval(timer); };
72
- }, [targetDate]); // Dependency array ensures effect runs only if targetDate changes (which it won't after initial render)
73
- var timerComponents = [];
74
- Object.keys(timeLeft).forEach(function (interval) {
75
- var value = timeLeft[interval];
76
- timerComponents.push(react_1.default.createElement("div", { key: interval, className: "flex flex-col items-center" },
77
- react_1.default.createElement("span", { className: "text-5xl font-bold" }, value < 10 ? "0".concat(value) : value),
78
- react_1.default.createElement("span", { className: "text-sm uppercase opacity-80" }, interval)));
79
- });
80
- return (react_1.default.createElement("div", { className: "flex justify-center gap-6 md:gap-8" }, timerComponents.length ? timerComponents : react_1.default.createElement("span", null, "Time up!")));
81
- };
82
- exports.Countdown = Countdown;