@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.
- package/components/app-sidebar.js +1 -41
- package/components/audio.js +1 -21
- package/components/dashboard.js +1 -67
- package/components/drawer-generic.js +1 -47
- package/components/enhanced-checkbox.js +1 -86
- package/components/enhanced-combobox.js +1 -315
- package/components/enhanced-drawer-footer.js +1 -39
- package/components/enhanced-drawer-header.js +1 -15
- package/components/enhanced-dropzone-impl.d.ts +32 -0
- package/components/enhanced-dropzone-impl.js +1 -0
- package/components/enhanced-dropzone.d.ts +2 -63
- package/components/enhanced-dropzone.js +1 -296
- package/components/enhanced-input.js +1 -87
- package/components/enhanced-label.js +1 -68
- package/components/enhanced-radio.js +1 -23
- package/components/enhanced-select.js +1 -81
- package/components/enhanced-slider.js +1 -80
- package/components/enhanced-switch.js +1 -89
- package/components/enhanced-table-footer-action.js +1 -110
- package/components/enhanced-table-footer-page.js +1 -132
- package/components/enhanced-table-footer-pagination.js +1 -118
- package/components/enhanced-table-header-action.js +1 -40
- package/components/enhanced-table-header-search.js +1 -18
- package/components/enhanced-table.js +1 -329
- package/components/enhanced-textarea.js +1 -87
- package/components/field.d.ts +1 -1
- package/components/field.js +1 -153
- package/components/image-resize-dialog.js +1 -180
- package/components/nav-main.js +1 -86
- package/components/nav-projects.js +1 -50
- package/components/nav-user.js +1 -62
- package/components/show-toast.js +1 -11
- package/components/sidebar.d.ts +1 -1
- package/components/sidebar.js +1 -326
- package/components/team-switcher.js +1 -53
- package/components/theme-provider.js +1 -160
- package/components/timeline.js +1 -21
- package/components/tooltip.js +1 -85
- package/components/ui/accordion.js +1 -87
- package/components/ui/alert-dialog.js +1 -120
- package/components/ui/alert.d.ts +1 -1
- package/components/ui/alert.js +1 -90
- package/components/ui/area-chart-v1-impl.d.ts +19 -0
- package/components/ui/area-chart-v1-impl.js +1 -0
- package/components/ui/area-chart-v1.d.ts +2 -19
- package/components/ui/area-chart-v1.js +1 -114
- package/components/ui/aspect-ratio.js +1 -40
- package/components/ui/avatar.js +1 -80
- package/components/ui/badge.d.ts +2 -2
- package/components/ui/badge.js +1 -80
- package/components/ui/breadcrumb.js +1 -107
- package/components/ui/button.d.ts +2 -2
- package/components/ui/button.js +1 -92
- package/components/ui/calendar-impl.d.ts +8 -0
- package/components/ui/calendar-impl.js +1 -0
- package/components/ui/calendar.d.ts +2 -8
- package/components/ui/calendar.js +1 -109
- package/components/ui/card.js +1 -96
- package/components/ui/carousel-impl.d.ts +18 -0
- package/components/ui/carousel-impl.js +1 -0
- package/components/ui/carousel.d.ts +6 -18
- package/components/ui/carousel.js +1 -171
- package/components/ui/chart-impl.d.ts +62 -0
- package/components/ui/chart-impl.js +7 -0
- package/components/ui/chart.d.ts +7 -62
- package/components/ui/chart.js +1 -220
- package/components/ui/checkbox.js +1 -71
- package/components/ui/collapsible.js +1 -44
- package/components/ui/combobox.js +1 -88
- package/components/ui/command-impl.d.ts +80 -0
- package/components/ui/command-impl.js +1 -0
- package/components/ui/command.d.ts +9 -80
- package/components/ui/command.js +1 -118
- package/components/ui/context-menu.js +1 -141
- package/components/ui/dialog.js +1 -113
- package/components/ui/drawer-impl.d.ts +22 -0
- package/components/ui/drawer-impl.js +1 -0
- package/components/ui/drawer.d.ts +10 -22
- package/components/ui/drawer.js +1 -112
- package/components/ui/dropdown-menu.js +1 -143
- package/components/ui/form.d.ts +4 -2
- package/components/ui/form.js +1 -132
- package/components/ui/hover-card.js +1 -72
- package/components/ui/input-otp-impl.d.ts +34 -0
- package/components/ui/input-otp-impl.js +1 -0
- package/components/ui/input-otp.d.ts +4 -34
- package/components/ui/input-otp.js +1 -93
- package/components/ui/input.js +1 -66
- package/components/ui/label.d.ts +1 -1
- package/components/ui/label.js +1 -70
- package/components/ui/language-selector.js +1 -63
- package/components/ui/menubar.js +1 -165
- package/components/ui/navigation-menu.d.ts +1 -1
- package/components/ui/navigation-menu.js +1 -114
- package/components/ui/pagination.js +1 -113
- package/components/ui/popover.js +1 -75
- package/components/ui/progress.js +1 -69
- package/components/ui/radio-group.js +1 -77
- package/components/ui/resizable-impl.d.ts +24 -0
- package/components/ui/resizable-impl.js +1 -0
- package/components/ui/resizable.d.ts +3 -24
- package/components/ui/resizable.js +1 -79
- package/components/ui/scroll-area.js +1 -80
- package/components/ui/select.js +1 -127
- package/components/ui/separator.js +1 -68
- package/components/ui/sheet.d.ts +1 -1
- package/components/ui/sheet.js +1 -127
- package/components/ui/skeleton.js +1 -34
- package/components/ui/slider.js +1 -79
- package/components/ui/sonner.js +1 -45
- package/components/ui/switch.js +1 -69
- package/components/ui/table.js +1 -109
- package/components/ui/tabs.js +1 -82
- package/components/ui/textarea.js +1 -66
- package/components/ui/theme-switcher.js +1 -152
- package/components/ui/toggle.d.ts +2 -2
- package/components/ui/toggle.js +1 -87
- package/data/admin-dashboard.js +1 -304
- package/hooks/use-enhanced-combobox.js +1 -150
- package/hooks/use-mobile.js +1 -51
- package/hooks/use-outside-click.js +1 -23
- package/lib/themes.js +1 -150
- package/lib/toast-utils.js +1 -212
- package/lib/utils.js +1 -12
- package/package.json +9 -90
- package/utils/transform-breadcrumbs.js +1 -11
- package/utils/transform-navitems.js +1 -33
- package/components/aceternity-ui/apple-cards-carousel.d.ts +0 -35
- package/components/aceternity-ui/apple-cards-carousel.js +0 -263
- package/components/shadcn-example/ai-chat/chat-interface.d.ts +0 -11
- package/components/shadcn-example/ai-chat/chat-interface.js +0 -70
- package/components/shadcn-example/ai-chat/index.d.ts +0 -38
- package/components/shadcn-example/ai-chat/index.js +0 -66
- package/components/shadcn-example/ai-chat/sidebar.d.ts +0 -15
- package/components/shadcn-example/ai-chat/sidebar.js +0 -68
- package/components/shadcn-example/ai-chat/welcome-section.d.ts +0 -12
- package/components/shadcn-example/ai-chat/welcome-section.js +0 -26
- package/components/shadcn-example/authentication/index.d.ts +0 -24
- package/components/shadcn-example/authentication/index.js +0 -59
- package/components/shadcn-example/authentication/user-auth-form.d.ts +0 -11
- package/components/shadcn-example/authentication/user-auth-form.js +0 -54
- package/components/shadcn-example/blog-detail-page/comment-section.d.ts +0 -15
- package/components/shadcn-example/blog-detail-page/comment-section.js +0 -83
- package/components/shadcn-example/blog-detail-page/content.d.ts +0 -7
- package/components/shadcn-example/blog-detail-page/content.js +0 -15
- package/components/shadcn-example/blog-detail-page/header.d.ts +0 -11
- package/components/shadcn-example/blog-detail-page/header.js +0 -36
- package/components/shadcn-example/blog-detail-page/index.d.ts +0 -25
- package/components/shadcn-example/blog-detail-page/index.js +0 -74
- package/components/shadcn-example/blog-page/blog-post-card.d.ts +0 -13
- package/components/shadcn-example/blog-page/blog-post-card.js +0 -30
- package/components/shadcn-example/blog-page/featured-post-sidebar-item.d.ts +0 -10
- package/components/shadcn-example/blog-page/featured-post-sidebar-item.js +0 -19
- package/components/shadcn-example/blog-page/index.d.ts +0 -20
- package/components/shadcn-example/blog-page/index.js +0 -36
- package/components/shadcn-example/coming-soon/countdown.d.ts +0 -2
- package/components/shadcn-example/coming-soon/countdown.js +0 -82
- package/components/shadcn-example/coming-soon/index.d.ts +0 -10
- package/components/shadcn-example/coming-soon/index.js +0 -41
- package/components/shadcn-io/color-picker/index.d.ts +0 -43
- package/components/shadcn-io/color-picker/index.js +0 -304
- package/components/shadcn-io/copy-button/index.d.ts +0 -16
- package/components/shadcn-io/copy-button/index.js +0 -121
- package/components/shadcn-io/dropzone/index.d.ts +0 -19
- package/components/shadcn-io/dropzone/index.js +0 -131
- package/components/shadcn-io/gantt/index.d.ts +0 -145
- package/components/shadcn-io/gantt/index.js +0 -766
- package/components/shadcn-io/table/index.d.ts +0 -60
- package/components/shadcn-io/table/index.js +0 -138
- package/templates/appcorp-v1/footer/bottom-bar.d.ts +0 -6
- package/templates/appcorp-v1/footer/bottom-bar.js +0 -25
- package/templates/appcorp-v1/footer/cta.d.ts +0 -6
- package/templates/appcorp-v1/footer/cta.js +0 -21
- package/templates/appcorp-v1/footer/footer-grid.d.ts +0 -14
- package/templates/appcorp-v1/footer/footer-grid.js +0 -52
- package/templates/appcorp-v1/footer/index.d.ts +0 -3
- package/templates/appcorp-v1/footer/index.js +0 -28
- package/templates/appcorp-v1/footer/newsletter.d.ts +0 -11
- package/templates/appcorp-v1/footer/newsletter.js +0 -28
- package/templates/appcorp-v1/footer/stats.d.ts +0 -6
- package/templates/appcorp-v1/footer/stats.js +0 -15
- package/templates/appcorp-v1/header/announcement-bar.d.ts +0 -3
- package/templates/appcorp-v1/header/announcement-bar.js +0 -15
- package/templates/appcorp-v1/header/dropdown-panel.d.ts +0 -8
- package/templates/appcorp-v1/header/dropdown-panel.js +0 -72
- package/templates/appcorp-v1/header/index.d.ts +0 -12
- package/templates/appcorp-v1/header/index.js +0 -16
- package/templates/appcorp-v1/header/mobile-menu.d.ts +0 -14
- package/templates/appcorp-v1/header/mobile-menu.js +0 -101
- package/templates/appcorp-v1/header/navigation-bar.d.ts +0 -3
- package/templates/appcorp-v1/header/navigation-bar.js +0 -117
- package/templates/appcorp-v1/header/social-button.d.ts +0 -7
- package/templates/appcorp-v1/header/social-button.js +0 -48
- package/templates/appcorp-v1/home.d.ts +0 -3
- package/templates/appcorp-v1/home.js +0 -27
- package/templates/data/appcorp-v1.d.ts +0 -93
- package/templates/data/appcorp-v1.js +0 -348
- package/templates/data/edupilotpro-v1.d.ts +0 -33
- package/templates/data/edupilotpro-v1.js +0 -116
- package/templates/data/school-v1.d.ts +0 -328
- package/templates/data/school-v1.js +0 -1563
- package/templates/edupilotpro-v1/feature-card.d.ts +0 -13
- package/templates/edupilotpro-v1/feature-card.js +0 -28
- package/templates/edupilotpro-v1/mockups/dashboard-mockup.d.ts +0 -3
- package/templates/edupilotpro-v1/mockups/dashboard-mockup.js +0 -55
- package/templates/school-v1/footer.d.ts +0 -3
- package/templates/school-v1/footer.js +0 -75
- package/templates/school-v1/index.d.ts +0 -18
- package/templates/school-v1/index.js +0 -60
- package/templates/school-v1/navigation.d.ts +0 -3
- package/templates/school-v1/navigation.js +0 -123
- package/templates/school-v1/sections/about.d.ts +0 -3
- package/templates/school-v1/sections/about.js +0 -49
- package/templates/school-v1/sections/admissions.d.ts +0 -3
- package/templates/school-v1/sections/admissions.js +0 -77
- package/templates/school-v1/sections/contact.d.ts +0 -3
- package/templates/school-v1/sections/contact.js +0 -67
- package/templates/school-v1/sections/faqs.d.ts +0 -3
- package/templates/school-v1/sections/faqs.js +0 -50
- package/templates/school-v1/sections/hero.d.ts +0 -3
- package/templates/school-v1/sections/hero.js +0 -132
- package/templates/school-v1/sections/management.d.ts +0 -3
- package/templates/school-v1/sections/management.js +0 -34
- package/templates/school-v1/sections/policies.d.ts +0 -3
- package/templates/school-v1/sections/policies.js +0 -127
- package/templates/school-v1/sections/programs.d.ts +0 -3
- package/templates/school-v1/sections/programs.js +0 -107
- package/templates/school-v1/sections/testimonials.d.ts +0 -3
- package/templates/school-v1/sections/testimonials.js +0 -46
- package/templates/school-v1/sections/why-choose-us.d.ts +0 -3
- 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,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,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;
|