@appcorp/shadcn 1.2.0 → 2.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/components/app-sidebar.js +16 -23
- package/components/audio.js +11 -19
- package/components/dashboard.js +27 -65
- package/components/drawer-generic.js +20 -28
- package/components/enhanced-checkbox.js +10 -57
- package/components/enhanced-combobox.js +99 -143
- package/components/enhanced-drawer-footer.js +22 -31
- package/components/enhanced-drawer-header.js +6 -14
- package/components/enhanced-dropzone-impl.d.ts +32 -0
- package/components/enhanced-dropzone-impl.js +218 -0
- package/components/enhanced-dropzone.d.ts +2 -63
- package/components/enhanced-dropzone.js +6 -294
- package/components/enhanced-input.js +10 -57
- package/components/enhanced-label.js +6 -52
- package/components/enhanced-radio.js +12 -20
- package/components/enhanced-select.js +13 -61
- package/components/enhanced-slider.js +11 -58
- package/components/enhanced-switch.js +11 -58
- package/components/enhanced-table-footer-action.js +11 -19
- package/components/enhanced-table-footer-page.js +16 -24
- package/components/enhanced-table-footer-pagination.js +11 -21
- package/components/enhanced-table-header-action.js +22 -30
- package/components/enhanced-table-header-search.js +9 -17
- package/components/enhanced-table.js +125 -153
- package/components/enhanced-textarea.js +10 -57
- package/components/field.d.ts +1 -1
- package/components/field.js +31 -88
- package/components/image-resize-dialog.js +61 -159
- package/components/nav-main.js +32 -78
- package/components/nav-projects.js +37 -48
- package/components/nav-user.js +41 -51
- package/components/show-toast.js +5 -9
- package/components/sidebar.d.ts +1 -1
- package/components/sidebar.js +115 -184
- package/components/team-switcher.js +36 -47
- package/components/theme-provider.js +36 -84
- package/components/timeline.js +12 -20
- package/components/tooltip.js +10 -59
- package/components/ui/accordion.js +17 -67
- package/components/ui/alert-dialog.js +32 -89
- package/components/ui/alert.d.ts +1 -1
- package/components/ui/alert.js +14 -63
- package/components/ui/area-chart-v1-impl.d.ts +19 -0
- package/components/ui/area-chart-v1-impl.js +75 -0
- package/components/ui/area-chart-v1.d.ts +2 -19
- package/components/ui/area-chart-v1.js +4 -113
- package/components/ui/aspect-ratio.js +3 -39
- package/components/ui/avatar.js +13 -62
- package/components/ui/badge.d.ts +2 -2
- package/components/ui/badge.js +7 -55
- package/components/ui/breadcrumb.js +27 -80
- package/components/ui/button.d.ts +2 -2
- package/components/ui/button.js +10 -58
- package/components/ui/calendar-impl.d.ts +8 -0
- package/components/ui/calendar-impl.js +55 -0
- package/components/ui/calendar.d.ts +2 -8
- package/components/ui/calendar.js +5 -108
- package/components/ui/card.js +21 -73
- package/components/ui/carousel-impl.d.ts +18 -0
- package/components/ui/carousel-impl.js +117 -0
- package/components/ui/carousel.d.ts +6 -18
- package/components/ui/carousel.js +8 -170
- package/components/ui/chart-impl.d.ts +62 -0
- package/components/ui/chart-impl.js +162 -0
- package/components/ui/chart.d.ts +7 -62
- package/components/ui/chart.js +9 -219
- package/components/ui/checkbox.js +10 -57
- package/components/ui/collapsible.js +5 -43
- package/components/ui/combobox.js +22 -58
- package/components/ui/command-impl.d.ts +80 -0
- package/components/ui/command-impl.js +63 -0
- package/components/ui/command.d.ts +9 -80
- package/components/ui/command.js +12 -117
- package/components/ui/context-menu.js +41 -102
- package/components/ui/dialog.js +28 -84
- package/components/ui/drawer-impl.d.ts +22 -0
- package/components/ui/drawer-impl.js +56 -0
- package/components/ui/drawer.d.ts +10 -22
- package/components/ui/drawer.js +13 -111
- package/components/ui/dropdown-menu.js +41 -102
- package/components/ui/form.d.ts +4 -2
- package/components/ui/form.js +41 -95
- package/components/ui/hover-card.js +9 -58
- package/components/ui/input-otp-impl.d.ts +34 -0
- package/components/ui/input-otp-impl.js +43 -0
- package/components/ui/input-otp.d.ts +4 -34
- package/components/ui/input-otp.js +7 -92
- package/components/ui/input.js +6 -53
- package/components/ui/label.d.ts +1 -1
- package/components/ui/label.js +9 -56
- package/components/ui/language-selector.js +17 -55
- package/components/ui/menubar.js +46 -108
- package/components/ui/navigation-menu.d.ts +1 -1
- package/components/ui/navigation-menu.js +29 -84
- package/components/ui/pagination.js +30 -83
- package/components/ui/popover.js +10 -60
- package/components/ui/progress.js +8 -55
- package/components/ui/radio-group.js +12 -60
- package/components/ui/resizable-impl.d.ts +24 -0
- package/components/ui/resizable-impl.js +27 -0
- package/components/ui/resizable.d.ts +3 -24
- package/components/ui/resizable.js +6 -78
- package/components/ui/scroll-area.js +10 -58
- package/components/ui/select.js +34 -90
- package/components/ui/separator.js +7 -54
- package/components/ui/sheet.d.ts +1 -1
- package/components/ui/sheet.js +30 -86
- package/components/ui/skeleton.js +5 -21
- package/components/ui/slider.js +10 -57
- package/components/ui/sonner.js +7 -24
- package/components/ui/switch.js +8 -55
- package/components/ui/table.js +27 -81
- package/components/ui/tabs.js +14 -64
- package/components/ui/textarea.js +6 -53
- package/components/ui/theme-switcher.js +41 -91
- package/components/ui/toggle.d.ts +2 -2
- package/components/ui/toggle.js +9 -57
- package/data/admin-dashboard.js +16 -19
- package/hooks/use-enhanced-combobox.js +47 -124
- package/hooks/use-mobile.js +8 -44
- package/hooks/use-outside-click.js +6 -10
- package/lib/themes.js +1 -4
- package/lib/toast-utils.js +78 -120
- package/lib/utils.js +4 -11
- package/package.json +9 -90
- package/utils/transform-breadcrumbs.js +4 -8
- package/utils/transform-navitems.js +7 -22
- 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,66 +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.AiChat = void 0;
|
|
38
|
-
var react_1 = __importStar(require("react"));
|
|
39
|
-
var sidebar_1 = require("./sidebar");
|
|
40
|
-
var welcome_section_1 = require("./welcome-section");
|
|
41
|
-
var chat_interface_1 = require("./chat-interface");
|
|
42
|
-
var AiChat = function (_a) {
|
|
43
|
-
var chat = _a.chat, chats = _a.chats, completion = _a.completion, onSelectedChatIdChange = _a.onSelectedChatIdChange, selectedChatId = _a.selectedChatId, suggestions = _a.suggestions, _b = _a.username, username = _b === void 0 ? "Guest" : _b;
|
|
44
|
-
var messages = chat.messages, setMessages = chat.setMessages;
|
|
45
|
-
(0, react_1.useEffect)(function () {
|
|
46
|
-
var _a;
|
|
47
|
-
setMessages(((_a = chats.find(function (chat) { return chat.id === selectedChatId; })) === null || _a === void 0 ? void 0 : _a.messages) || []);
|
|
48
|
-
}, [selectedChatId, chats, setMessages]);
|
|
49
|
-
// Completion handlers are provided by the story via props.
|
|
50
|
-
var input = completion.input, handleInputChange = completion.handleInputChange, handleSubmit = completion.handleSubmit, isLoading = completion.isLoading;
|
|
51
|
-
var handleNewChat = function () {
|
|
52
|
-
onSelectedChatIdChange("");
|
|
53
|
-
// Reset chat messages would happen here in a real app
|
|
54
|
-
};
|
|
55
|
-
var handleSelectChat = function (chatId) {
|
|
56
|
-
onSelectedChatIdChange(chatId);
|
|
57
|
-
};
|
|
58
|
-
var handleSuggestionClick = function () {
|
|
59
|
-
// In a real app, this would start a new chat with the suggestion
|
|
60
|
-
onSelectedChatIdChange("new");
|
|
61
|
-
};
|
|
62
|
-
return (react_1.default.createElement("div", { className: "flex h-screen" },
|
|
63
|
-
react_1.default.createElement(sidebar_1.Sidebar, { chats: chats, selectedChatId: selectedChatId, onNewChat: handleNewChat, onSelectChat: handleSelectChat }),
|
|
64
|
-
react_1.default.createElement("div", { className: "flex flex-1 flex-col" }, !selectedChatId ? (react_1.default.createElement(welcome_section_1.WelcomeSection, { username: username, onSuggestionClick: handleSuggestionClick, suggestions: suggestions })) : (react_1.default.createElement(chat_interface_1.ChatInterface, { messages: messages, input: input, handleInputChange: handleInputChange, handleSubmit: handleSubmit, isLoading: isLoading })))));
|
|
65
|
-
};
|
|
66
|
-
exports.AiChat = AiChat;
|
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
import { FC } from "react";
|
|
2
|
-
interface Chat {
|
|
3
|
-
id: string;
|
|
4
|
-
title: string;
|
|
5
|
-
preview: string;
|
|
6
|
-
timestamp: Date;
|
|
7
|
-
}
|
|
8
|
-
interface SidebarProps {
|
|
9
|
-
chats: Chat[];
|
|
10
|
-
selectedChatId: string | null;
|
|
11
|
-
onNewChat: () => void;
|
|
12
|
-
onSelectChat: (chatId: string) => void;
|
|
13
|
-
}
|
|
14
|
-
export declare const Sidebar: FC<SidebarProps>;
|
|
15
|
-
export {};
|
|
@@ -1,68 +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.Sidebar = void 0;
|
|
38
|
-
var react_1 = __importStar(require("react"));
|
|
39
|
-
var button_1 = require("../../../components/ui/button");
|
|
40
|
-
var input_1 = require("../../../components/ui/input");
|
|
41
|
-
var scroll_area_1 = require("../../../components/ui/scroll-area");
|
|
42
|
-
var lucide_react_1 = require("lucide-react");
|
|
43
|
-
var utils_1 = require("../../../lib/utils");
|
|
44
|
-
var Sidebar = function (_a) {
|
|
45
|
-
var chats = _a.chats, selectedChatId = _a.selectedChatId, onNewChat = _a.onNewChat, onSelectChat = _a.onSelectChat;
|
|
46
|
-
var _b = (0, react_1.useState)(""), searchQuery = _b[0], setSearchQuery = _b[1];
|
|
47
|
-
var filteredChats = chats.filter(function (chat) {
|
|
48
|
-
return chat.title.toLowerCase().includes(searchQuery.toLowerCase()) ||
|
|
49
|
-
chat.preview.toLowerCase().includes(searchQuery.toLowerCase());
|
|
50
|
-
});
|
|
51
|
-
return (react_1.default.createElement("div", { className: "bg-muted flex justify-between w-80 flex-col border-r" },
|
|
52
|
-
react_1.default.createElement("div", { className: "border-b p-4" },
|
|
53
|
-
react_1.default.createElement(input_1.Input, { placeholder: "Search chats...", value: searchQuery, onChange: function (e) { return setSearchQuery(e.target.value); }, className: "text-sm" })),
|
|
54
|
-
react_1.default.createElement("div", { className: "flex min-h-0 flex-col h-full" },
|
|
55
|
-
react_1.default.createElement("div", { className: "flex-1 overflow-hidden" },
|
|
56
|
-
react_1.default.createElement(scroll_area_1.ScrollArea, { className: "h-full" },
|
|
57
|
-
react_1.default.createElement("div", { className: "space-y-2 p-4" }, filteredChats.map(function (chat) { return (react_1.default.createElement(button_1.Button, { key: chat.id, variant: "ghost", onClick: function () { return onSelectChat(chat.id); }, className: (0, utils_1.cn)("h-auto w-full justify-start p-3 text-left hover:primary-100 odd:bg-gray-200 even:bg-gray-300", selectedChatId === chat.id && "bg-gray-100") },
|
|
58
|
-
react_1.default.createElement("div", { className: "flex w-full items-start gap-2" },
|
|
59
|
-
react_1.default.createElement(lucide_react_1.MessageCircle, { className: "mt-0.5 h-4 w-4 flex-shrink-0 text-gray-400" }),
|
|
60
|
-
react_1.default.createElement("div", { className: "min-w-0 flex-1" },
|
|
61
|
-
react_1.default.createElement("div", { className: "truncate text-sm font-medium" }, chat.title),
|
|
62
|
-
react_1.default.createElement("div", { className: "text-muted-foreground mt-0.5 truncate text-xs" }, chat.preview))))); }))))),
|
|
63
|
-
react_1.default.createElement("div", { className: "space-y-1 border border-t p-4" },
|
|
64
|
-
react_1.default.createElement(button_1.Button, { className: "w-full", onClick: onNewChat },
|
|
65
|
-
react_1.default.createElement(lucide_react_1.Plus, null),
|
|
66
|
-
"New Chat"))));
|
|
67
|
-
};
|
|
68
|
-
exports.Sidebar = Sidebar;
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
import { FC } from "react";
|
|
2
|
-
export interface Suggestion {
|
|
3
|
-
title: string;
|
|
4
|
-
category: string;
|
|
5
|
-
}
|
|
6
|
-
interface WelcomeScreenProps {
|
|
7
|
-
onSuggestionClick: (suggestion: string) => void;
|
|
8
|
-
suggestions: Suggestion[];
|
|
9
|
-
username: string;
|
|
10
|
-
}
|
|
11
|
-
export declare const WelcomeSection: FC<WelcomeScreenProps>;
|
|
12
|
-
export {};
|
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
"use client";
|
|
2
|
-
"use strict";
|
|
3
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
4
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
5
|
-
};
|
|
6
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
-
exports.WelcomeSection = void 0;
|
|
8
|
-
var react_1 = __importDefault(require("react"));
|
|
9
|
-
var button_1 = require("../../../components/ui/button");
|
|
10
|
-
var lucide_react_1 = require("lucide-react");
|
|
11
|
-
var WelcomeSection = function (_a) {
|
|
12
|
-
var onSuggestionClick = _a.onSuggestionClick, suggestions = _a.suggestions, username = _a.username;
|
|
13
|
-
return (react_1.default.createElement("div", { className: "mx-auto flex max-w-4xl flex-1 flex-col items-center justify-center p-8" },
|
|
14
|
-
react_1.default.createElement("div", { className: "mb-12 text-center" },
|
|
15
|
-
react_1.default.createElement("h1", { className: "mb-4 text-6xl font-bold" },
|
|
16
|
-
react_1.default.createElement("span", { className: "bg-gradient-to-r from-pink-500 via-red-500 to-red-600 bg-clip-text text-transparent" },
|
|
17
|
-
"Welcome, ",
|
|
18
|
-
username)),
|
|
19
|
-
react_1.default.createElement("p", { className: "text-muted-foreground text-xl" }, "How can I assist you today?")),
|
|
20
|
-
react_1.default.createElement("div", { className: "grid w-full max-w-4xl grid-cols-1 gap-4 md:grid-cols-2" }, suggestions.map(function (suggestion, index) { return (react_1.default.createElement(button_1.Button, { className: "group h-auto border-gray-200 p-6 text-left hover:bg-gray-50 cursor-pointer", key: index, onClick: function () { return onSuggestionClick(suggestion.title); }, variant: "outline" },
|
|
21
|
-
react_1.default.createElement("div", { className: "flex w-full items-start justify-between" },
|
|
22
|
-
react_1.default.createElement("div", { className: "flex-1 pr-4" },
|
|
23
|
-
react_1.default.createElement("p", { className: "text-muted-foreground text-sm leading-relaxed text-wrap" }, suggestion.title)),
|
|
24
|
-
react_1.default.createElement(lucide_react_1.ArrowUpRight, { className: "group-hover:text-primary text-muted-foreground h-4 w-4 flex-shrink-0" })))); }))));
|
|
25
|
-
};
|
|
26
|
-
exports.WelcomeSection = WelcomeSection;
|
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
import React, { FC } from "react";
|
|
2
|
-
export interface AuthenticationProps {
|
|
3
|
-
avatars: {
|
|
4
|
-
image: string;
|
|
5
|
-
alt: string;
|
|
6
|
-
}[];
|
|
7
|
-
backgroundImage: string;
|
|
8
|
-
description: string;
|
|
9
|
-
email: string;
|
|
10
|
-
handleEmailOnChange: (event: React.ChangeEvent<HTMLInputElement>) => void;
|
|
11
|
-
handleOnClickTopCta?: () => void;
|
|
12
|
-
handleOnSubmit?: (event: React.SyntheticEvent) => void;
|
|
13
|
-
handlePasswordOnChange: (event: React.ChangeEvent<HTMLInputElement>) => void;
|
|
14
|
-
heading: string;
|
|
15
|
-
isLoading: boolean;
|
|
16
|
-
logo: string;
|
|
17
|
-
logoAlt: string;
|
|
18
|
-
numberOfCustomers: string;
|
|
19
|
-
password: string;
|
|
20
|
-
privacyLink: string;
|
|
21
|
-
termsLink: string;
|
|
22
|
-
topCtaLabel?: string;
|
|
23
|
-
}
|
|
24
|
-
export declare const Authentication: FC<AuthenticationProps>;
|
|
@@ -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 {};
|