@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,263 +0,0 @@
|
|
|
1
|
-
"use client";
|
|
2
|
-
"use strict";
|
|
3
|
-
var __assign = (this && this.__assign) || function () {
|
|
4
|
-
__assign = Object.assign || function(t) {
|
|
5
|
-
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
|
6
|
-
s = arguments[i];
|
|
7
|
-
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
|
|
8
|
-
t[p] = s[p];
|
|
9
|
-
}
|
|
10
|
-
return t;
|
|
11
|
-
};
|
|
12
|
-
return __assign.apply(this, arguments);
|
|
13
|
-
};
|
|
14
|
-
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
15
|
-
if (k2 === undefined) k2 = k;
|
|
16
|
-
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
17
|
-
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
18
|
-
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
19
|
-
}
|
|
20
|
-
Object.defineProperty(o, k2, desc);
|
|
21
|
-
}) : (function(o, m, k, k2) {
|
|
22
|
-
if (k2 === undefined) k2 = k;
|
|
23
|
-
o[k2] = m[k];
|
|
24
|
-
}));
|
|
25
|
-
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
26
|
-
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
27
|
-
}) : function(o, v) {
|
|
28
|
-
o["default"] = v;
|
|
29
|
-
});
|
|
30
|
-
var __importStar = (this && this.__importStar) || (function () {
|
|
31
|
-
var ownKeys = function(o) {
|
|
32
|
-
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
33
|
-
var ar = [];
|
|
34
|
-
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
35
|
-
return ar;
|
|
36
|
-
};
|
|
37
|
-
return ownKeys(o);
|
|
38
|
-
};
|
|
39
|
-
return function (mod) {
|
|
40
|
-
if (mod && mod.__esModule) return mod;
|
|
41
|
-
var result = {};
|
|
42
|
-
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
43
|
-
__setModuleDefault(result, mod);
|
|
44
|
-
return result;
|
|
45
|
-
};
|
|
46
|
-
})();
|
|
47
|
-
var __rest = (this && this.__rest) || function (s, e) {
|
|
48
|
-
var t = {};
|
|
49
|
-
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
|
|
50
|
-
t[p] = s[p];
|
|
51
|
-
if (s != null && typeof Object.getOwnPropertySymbols === "function")
|
|
52
|
-
for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
|
|
53
|
-
if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
|
|
54
|
-
t[p[i]] = s[p[i]];
|
|
55
|
-
}
|
|
56
|
-
return t;
|
|
57
|
-
};
|
|
58
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
59
|
-
exports.BlurImage = exports.Card = exports.AppleCardsCarouselMobileControls = exports.AppleCardsCarousel = exports.CarouselContext = void 0;
|
|
60
|
-
var react_1 = __importStar(require("react"));
|
|
61
|
-
var react_dom_1 = require("react-dom");
|
|
62
|
-
var icons_react_1 = require("@tabler/icons-react");
|
|
63
|
-
var utils_1 = require("@/lib/utils");
|
|
64
|
-
var react_2 = require("motion/react");
|
|
65
|
-
var use_outside_click_1 = require("@/hooks/use-outside-click");
|
|
66
|
-
exports.CarouselContext = (0, react_1.createContext)({
|
|
67
|
-
onCardClose: function () { },
|
|
68
|
-
currentIndex: 0,
|
|
69
|
-
});
|
|
70
|
-
var AppleCardsCarousel = function (_a) {
|
|
71
|
-
var items = _a.items, _b = _a.initialScroll, initialScroll = _b === void 0 ? 0 : _b;
|
|
72
|
-
var carouselRef = react_1.default.useRef(null);
|
|
73
|
-
var _c = react_1.default.useState(false), canScrollLeft = _c[0], setCanScrollLeft = _c[1];
|
|
74
|
-
var _d = react_1.default.useState(true), canScrollRight = _d[0], setCanScrollRight = _d[1];
|
|
75
|
-
var _e = (0, react_1.useState)(0), currentIndex = _e[0], setCurrentIndex = _e[1];
|
|
76
|
-
(0, react_1.useEffect)(function () {
|
|
77
|
-
if (carouselRef.current) {
|
|
78
|
-
carouselRef.current.scrollLeft = initialScroll;
|
|
79
|
-
checkScrollability();
|
|
80
|
-
}
|
|
81
|
-
}, [initialScroll]);
|
|
82
|
-
(0, react_1.useEffect)(function () {
|
|
83
|
-
// Ensure control enabled/disabled state is correct on mount and resize
|
|
84
|
-
try {
|
|
85
|
-
checkScrollability();
|
|
86
|
-
}
|
|
87
|
-
catch (_a) {
|
|
88
|
-
/* ignore if DOM not yet ready */
|
|
89
|
-
}
|
|
90
|
-
var onResize = function () { return checkScrollability(); };
|
|
91
|
-
window.addEventListener("resize", onResize);
|
|
92
|
-
return function () { return window.removeEventListener("resize", onResize); };
|
|
93
|
-
}, []);
|
|
94
|
-
// mounted flag for portal rendering
|
|
95
|
-
var _f = (0, react_1.useState)(false), isMounted = _f[0], setIsMounted = _f[1];
|
|
96
|
-
(0, react_1.useEffect)(function () {
|
|
97
|
-
setIsMounted(true);
|
|
98
|
-
return function () { return setIsMounted(false); };
|
|
99
|
-
}, []);
|
|
100
|
-
// controls position (viewport-fixed coords) for mobile portal
|
|
101
|
-
var _g = (0, react_1.useState)(null), controlsPos = _g[0], setControlsPos = _g[1];
|
|
102
|
-
var updateControlsPosition = function () {
|
|
103
|
-
var el = carouselRef.current;
|
|
104
|
-
if (!el)
|
|
105
|
-
return;
|
|
106
|
-
var rect = el.getBoundingClientRect();
|
|
107
|
-
// Compute viewport-based coords (use getBoundingClientRect directly)
|
|
108
|
-
// Compute viewport-based coords so controls appear under the cards on the right
|
|
109
|
-
var pad = 12;
|
|
110
|
-
var offset = 8; // px below the carousel
|
|
111
|
-
// Position fixed: distance from viewport right edge to align with carousel right
|
|
112
|
-
var right = Math.max(pad, window.innerWidth - rect.right + pad);
|
|
113
|
-
var top = rect.bottom + offset;
|
|
114
|
-
top = Math.max(pad, Math.min(top, window.innerHeight - pad));
|
|
115
|
-
setControlsPos({ right: right, top: top });
|
|
116
|
-
};
|
|
117
|
-
(0, react_1.useEffect)(function () {
|
|
118
|
-
updateControlsPosition();
|
|
119
|
-
var onResize = function () { return updateControlsPosition(); };
|
|
120
|
-
var onScroll = function () { return updateControlsPosition(); };
|
|
121
|
-
window.addEventListener("resize", onResize);
|
|
122
|
-
window.addEventListener("scroll", onScroll, { passive: true });
|
|
123
|
-
return function () {
|
|
124
|
-
window.removeEventListener("resize", onResize);
|
|
125
|
-
window.removeEventListener("scroll", onScroll);
|
|
126
|
-
};
|
|
127
|
-
}, [carouselRef.current]);
|
|
128
|
-
var checkScrollability = function () {
|
|
129
|
-
if (carouselRef.current) {
|
|
130
|
-
var _a = carouselRef.current, scrollLeft_1 = _a.scrollLeft, scrollWidth = _a.scrollWidth, clientWidth = _a.clientWidth;
|
|
131
|
-
setCanScrollLeft(scrollLeft_1 > 0);
|
|
132
|
-
setCanScrollRight(scrollLeft_1 < scrollWidth - clientWidth);
|
|
133
|
-
}
|
|
134
|
-
};
|
|
135
|
-
var scrollLeft = function () {
|
|
136
|
-
if (carouselRef.current) {
|
|
137
|
-
carouselRef.current.scrollBy({ left: -300, behavior: "smooth" });
|
|
138
|
-
}
|
|
139
|
-
};
|
|
140
|
-
var scrollRight = function () {
|
|
141
|
-
if (carouselRef.current) {
|
|
142
|
-
carouselRef.current.scrollBy({ left: 300, behavior: "smooth" });
|
|
143
|
-
}
|
|
144
|
-
};
|
|
145
|
-
var handleCardClose = function (index) {
|
|
146
|
-
if (carouselRef.current) {
|
|
147
|
-
var cardWidth = isMobile() ? 230 : 384; // (md:w-96)
|
|
148
|
-
var gap = isMobile() ? 4 : 8;
|
|
149
|
-
var scrollPosition = (cardWidth + gap) * (index + 1);
|
|
150
|
-
carouselRef.current.scrollTo({
|
|
151
|
-
left: scrollPosition,
|
|
152
|
-
behavior: "smooth",
|
|
153
|
-
});
|
|
154
|
-
setCurrentIndex(index);
|
|
155
|
-
}
|
|
156
|
-
};
|
|
157
|
-
var isMobile = function () {
|
|
158
|
-
return window && window.innerWidth < 768;
|
|
159
|
-
};
|
|
160
|
-
return (react_1.default.createElement(exports.CarouselContext.Provider, { value: { onCardClose: handleCardClose, currentIndex: currentIndex } },
|
|
161
|
-
react_1.default.createElement("div", { className: "relative w-full h-auto" },
|
|
162
|
-
react_1.default.createElement("div", { className: "flex w-full overflow-x-scroll overscroll-x-auto scroll-smooth py-10 [scrollbar-width:none] md:py-20", ref: carouselRef, onScroll: checkScrollability },
|
|
163
|
-
react_1.default.createElement("div", { className: (0, utils_1.cn)("absolute right-0 z-[1000] h-auto w-[5%] overflow-hidden bg-gradient-to-l") }),
|
|
164
|
-
react_1.default.createElement("div", { className: (0, utils_1.cn)("flex flex-row justify-start gap-4 pl-4", "mx-auto max-w-7xl" // remove max-w-4xl if you want the carousel to span the full width of its container
|
|
165
|
-
) }, items.map(function (item, index) { return (react_1.default.createElement(react_2.motion.div, { initial: {
|
|
166
|
-
opacity: 0,
|
|
167
|
-
y: 20,
|
|
168
|
-
}, animate: {
|
|
169
|
-
opacity: 1,
|
|
170
|
-
y: 0,
|
|
171
|
-
transition: {
|
|
172
|
-
duration: 0.5,
|
|
173
|
-
delay: 0.2 * index,
|
|
174
|
-
ease: "easeOut",
|
|
175
|
-
},
|
|
176
|
-
}, viewport: { once: true }, key: "card" + index, className: "rounded-3xl last:pr-[5%] md:last:pr-[33%]" }, item)); }))),
|
|
177
|
-
react_1.default.createElement("div", { className: "hidden md:flex mr-10 justify-end gap-2" },
|
|
178
|
-
react_1.default.createElement("button", { className: "relative z-40 flex h-10 w-10 items-center justify-center rounded-full bg-gray-100 disabled:opacity-50", onClick: scrollLeft, disabled: !canScrollLeft, "aria-label": "Scroll left" },
|
|
179
|
-
react_1.default.createElement(icons_react_1.IconArrowNarrowLeft, { className: "h-6 w-6 text-gray-500" })),
|
|
180
|
-
react_1.default.createElement("button", { className: "relative z-40 flex h-10 w-10 items-center justify-center rounded-full bg-gray-100 disabled:opacity-50", onClick: scrollRight, disabled: !canScrollRight, "aria-label": "Scroll right" },
|
|
181
|
-
react_1.default.createElement(icons_react_1.IconArrowNarrowRight, { className: "h-6 w-6 text-gray-500" }))),
|
|
182
|
-
isMounted && (react_1.default.createElement(exports.AppleCardsCarouselMobileControls, { canScrollLeft: canScrollLeft, canScrollRight: canScrollRight, onLeft: scrollLeft, onRight: scrollRight, mounted: isMounted, coords: controlsPos })))));
|
|
183
|
-
};
|
|
184
|
-
exports.AppleCardsCarousel = AppleCardsCarousel;
|
|
185
|
-
// Render mobile controls via portal so fixed positioning isn't clipped
|
|
186
|
-
// Portal is placed after component to avoid SSR issues (renders only on mount)
|
|
187
|
-
var AppleCardsCarouselMobileControls = function (_a) {
|
|
188
|
-
var canScrollLeft = _a.canScrollLeft, canScrollRight = _a.canScrollRight, onLeft = _a.onLeft, onRight = _a.onRight, mounted = _a.mounted, coords = _a.coords;
|
|
189
|
-
if (!mounted || typeof document === "undefined")
|
|
190
|
-
return null;
|
|
191
|
-
var fallbackStyle = {
|
|
192
|
-
position: "fixed",
|
|
193
|
-
left: "50%",
|
|
194
|
-
bottom: "calc(env(safe-area-inset-bottom, 0px) + 1rem)",
|
|
195
|
-
transform: "translateX(-50%)",
|
|
196
|
-
};
|
|
197
|
-
var positionedStyle = coords
|
|
198
|
-
? {
|
|
199
|
-
position: "fixed",
|
|
200
|
-
right: coords.right,
|
|
201
|
-
top: coords.top,
|
|
202
|
-
}
|
|
203
|
-
: undefined;
|
|
204
|
-
return (0, react_dom_1.createPortal)(react_1.default.createElement("div", { className: "z-50 flex gap-2 md:hidden", style: positionedStyle !== null && positionedStyle !== void 0 ? positionedStyle : fallbackStyle },
|
|
205
|
-
react_1.default.createElement("button", { className: "relative z-40 flex h-12 w-12 items-center justify-center rounded-full bg-gray-100 disabled:opacity-50", onClick: onLeft, disabled: !canScrollLeft, "aria-label": "Scroll left" },
|
|
206
|
-
react_1.default.createElement(icons_react_1.IconArrowNarrowLeft, { className: "h-6 w-6 text-gray-500" })),
|
|
207
|
-
react_1.default.createElement("button", { className: "relative z-40 flex h-12 w-12 items-center justify-center rounded-full bg-gray-100 disabled:opacity-50", onClick: onRight, disabled: !canScrollRight, "aria-label": "Scroll right" },
|
|
208
|
-
react_1.default.createElement(icons_react_1.IconArrowNarrowRight, { className: "h-6 w-6 text-gray-500" }))), document.body);
|
|
209
|
-
};
|
|
210
|
-
exports.AppleCardsCarouselMobileControls = AppleCardsCarouselMobileControls;
|
|
211
|
-
var Card = function (_a) {
|
|
212
|
-
var card = _a.card, index = _a.index, _b = _a.layout, layout = _b === void 0 ? false : _b;
|
|
213
|
-
var _c = (0, react_1.useState)(false), open = _c[0], setOpen = _c[1];
|
|
214
|
-
var containerRef = (0, react_1.useRef)(null);
|
|
215
|
-
var onCardClose = (0, react_1.useContext)(exports.CarouselContext).onCardClose;
|
|
216
|
-
(0, react_1.useEffect)(function () {
|
|
217
|
-
function onKeyDown(event) {
|
|
218
|
-
if (event.key === "Escape") {
|
|
219
|
-
handleClose();
|
|
220
|
-
}
|
|
221
|
-
}
|
|
222
|
-
if (open) {
|
|
223
|
-
document.body.style.overflow = "hidden";
|
|
224
|
-
}
|
|
225
|
-
else {
|
|
226
|
-
document.body.style.overflow = "auto";
|
|
227
|
-
}
|
|
228
|
-
window.addEventListener("keydown", onKeyDown);
|
|
229
|
-
return function () { return window.removeEventListener("keydown", onKeyDown); };
|
|
230
|
-
}, [open]);
|
|
231
|
-
(0, use_outside_click_1.useOutsideClick)(containerRef, function () {
|
|
232
|
-
return handleClose();
|
|
233
|
-
});
|
|
234
|
-
var handleOpen = function () {
|
|
235
|
-
setOpen(true);
|
|
236
|
-
};
|
|
237
|
-
var handleClose = function () {
|
|
238
|
-
setOpen(false);
|
|
239
|
-
onCardClose(index);
|
|
240
|
-
};
|
|
241
|
-
return (react_1.default.createElement(react_1.default.Fragment, null,
|
|
242
|
-
react_1.default.createElement(react_2.AnimatePresence, null, open && (react_1.default.createElement("div", { className: "fixed inset-0 z-50 h-screen overflow-auto" },
|
|
243
|
-
react_1.default.createElement(react_2.motion.div, { initial: { opacity: 0 }, animate: { opacity: 1 }, exit: { opacity: 0 }, className: "fixed inset-0 h-full w-full bg-black/80 backdrop-blur-lg" }),
|
|
244
|
-
react_1.default.createElement(react_2.motion.div, { initial: { opacity: 0 }, animate: { opacity: 1 }, exit: { opacity: 0 }, ref: containerRef, layoutId: layout ? "card-".concat(card.title) : undefined, className: "relative z-[60] mx-auto my-10 h-fit max-w-5xl rounded-3xl bg-white p-4 font-sans md:p-10 dark:bg-neutral-900" },
|
|
245
|
-
react_1.default.createElement("button", { className: "sticky top-4 right-0 ml-auto flex h-8 w-8 items-center justify-center rounded-full bg-black dark:bg-white", onClick: handleClose },
|
|
246
|
-
react_1.default.createElement(icons_react_1.IconX, { className: "h-6 w-6 text-neutral-100 dark:text-neutral-900" })),
|
|
247
|
-
react_1.default.createElement(react_2.motion.p, { layoutId: layout ? "category-".concat(card.title) : undefined, className: "text-base font-medium text-black dark:text-white" }, card.category),
|
|
248
|
-
react_1.default.createElement(react_2.motion.p, { layoutId: layout ? "title-".concat(card.title) : undefined, className: "mt-4 text-2xl font-semibold text-neutral-700 md:text-5xl dark:text-white" }, card.title),
|
|
249
|
-
react_1.default.createElement("div", { className: "py-10" }, card.content))))),
|
|
250
|
-
react_1.default.createElement(react_2.motion.button, { layoutId: layout ? "card-".concat(card.title) : undefined, onClick: handleOpen, className: "relative z-10 flex h-80 w-56 flex-col items-start justify-start overflow-hidden rounded-3xl bg-gray-100 md:h-[40rem] md:w-96 dark:bg-neutral-900" },
|
|
251
|
-
react_1.default.createElement("div", { className: "pointer-events-none absolute inset-x-0 top-0 z-30 h-full bg-gradient-to-b from-black/50 via-transparent to-transparent" }),
|
|
252
|
-
react_1.default.createElement("div", { className: "relative z-40 p-8" },
|
|
253
|
-
react_1.default.createElement(react_2.motion.p, { layoutId: layout ? "category-".concat(card.category) : undefined, className: "text-left font-sans text-sm font-medium text-white md:text-base" }, card.category),
|
|
254
|
-
react_1.default.createElement(react_2.motion.p, { layoutId: layout ? "title-".concat(card.title) : undefined, className: "mt-2 max-w-xs text-left font-sans text-xl font-semibold [text-wrap:balance] text-white md:text-3xl" }, card.title)),
|
|
255
|
-
react_1.default.createElement(exports.BlurImage, { src: card.src, alt: card.title, fill: true, className: "absolute inset-0 z-10 object-cover" }))));
|
|
256
|
-
};
|
|
257
|
-
exports.Card = Card;
|
|
258
|
-
var BlurImage = function (_a) {
|
|
259
|
-
var height = _a.height, width = _a.width, src = _a.src, className = _a.className, alt = _a.alt, rest = __rest(_a, ["height", "width", "src", "className", "alt"]);
|
|
260
|
-
var _b = (0, react_1.useState)(true), isLoading = _b[0], setLoading = _b[1];
|
|
261
|
-
return (react_1.default.createElement("img", __assign({ className: (0, utils_1.cn)("h-full w-full transition duration-300", isLoading ? "blur-sm" : "blur-0", className), onLoad: function () { return setLoading(false); }, src: src, width: width, height: height, loading: "lazy", decoding: "async", blurDataURL: typeof src === "string" ? src : undefined, alt: alt ? alt : "Background of a beautiful view" }, rest)));
|
|
262
|
-
};
|
|
263
|
-
exports.BlurImage = BlurImage;
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
import type { ChangeEvent, FC, FormEvent } from "react";
|
|
2
|
-
import type { UIMessage as Message } from "@ai-sdk/react";
|
|
3
|
-
interface ChatInterfaceProps {
|
|
4
|
-
messages: Message[];
|
|
5
|
-
input: string;
|
|
6
|
-
handleInputChange: (e: ChangeEvent<HTMLInputElement>) => void;
|
|
7
|
-
handleSubmit: (e: FormEvent<HTMLFormElement>) => void;
|
|
8
|
-
isLoading: boolean;
|
|
9
|
-
}
|
|
10
|
-
export declare const ChatInterface: FC<ChatInterfaceProps>;
|
|
11
|
-
export {};
|
|
@@ -1,70 +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.ChatInterface = void 0;
|
|
8
|
-
var react_1 = __importDefault(require("react"));
|
|
9
|
-
var button_1 = require("../../../components/ui/button");
|
|
10
|
-
var input_1 = require("../../../components/ui/input");
|
|
11
|
-
var scroll_area_1 = require("../../../components/ui/scroll-area");
|
|
12
|
-
var avatar_1 = require("../../../components/ui/avatar");
|
|
13
|
-
var lucide_react_1 = require("lucide-react");
|
|
14
|
-
function getMessageText(message) {
|
|
15
|
-
// UIMessage uses `parts` with text parts having { type: 'text', text }
|
|
16
|
-
var parts = message.parts || [];
|
|
17
|
-
return parts
|
|
18
|
-
.filter(function (p) { return (p === null || p === void 0 ? void 0 : p.type) === "text"; })
|
|
19
|
-
.map(function (p) { return p.text; })
|
|
20
|
-
.join("");
|
|
21
|
-
}
|
|
22
|
-
var ChatInterface = function (_a) {
|
|
23
|
-
var messages = _a.messages, input = _a.input, handleInputChange = _a.handleInputChange, handleSubmit = _a.handleSubmit, isLoading = _a.isLoading;
|
|
24
|
-
return (react_1.default.createElement("div", { className: "flex flex-1 flex-col min-h-0" },
|
|
25
|
-
react_1.default.createElement(scroll_area_1.ScrollArea, { className: "flex-1 min-h-0 h-full p-4 block" },
|
|
26
|
-
react_1.default.createElement("div", { className: "mx-auto max-w-6xl space-y-6 flex-1 min-h-0 flex flex-col justify-end h-full" },
|
|
27
|
-
messages.map(function (message) { return (react_1.default.createElement("div", { key: message.id, className: "flex gap-4" }, message.role === "user" ? (react_1.default.createElement(react_1.default.Fragment, null,
|
|
28
|
-
react_1.default.createElement("div", { className: "flex-1" },
|
|
29
|
-
react_1.default.createElement("div", { className: "bg-muted rounded-lg p-4" },
|
|
30
|
-
react_1.default.createElement("p", null, getMessageText(message)))),
|
|
31
|
-
react_1.default.createElement(avatar_1.Avatar, null,
|
|
32
|
-
react_1.default.createElement(avatar_1.AvatarImage, { src: "/placeholder.svg?height=32&width=32" }),
|
|
33
|
-
react_1.default.createElement(avatar_1.AvatarFallback, null, "JD")))) : (react_1.default.createElement(react_1.default.Fragment, null,
|
|
34
|
-
react_1.default.createElement(avatar_1.Avatar, null,
|
|
35
|
-
react_1.default.createElement(avatar_1.AvatarFallback, { className: "bg-blue-500" }, "AI")),
|
|
36
|
-
react_1.default.createElement("div", { className: "flex-1" },
|
|
37
|
-
react_1.default.createElement("div", { className: "bg-muted rounded-lg border p-4" },
|
|
38
|
-
react_1.default.createElement("p", { className: "mb-4" }, getMessageText(message)),
|
|
39
|
-
react_1.default.createElement("div", { className: "flex items-center gap-2" },
|
|
40
|
-
react_1.default.createElement(button_1.Button, { variant: "ghost", size: "sm", className: "h-8 w-8 p-0" },
|
|
41
|
-
react_1.default.createElement(lucide_react_1.Copy, { className: "h-4 w-4" })),
|
|
42
|
-
react_1.default.createElement(button_1.Button, { variant: "ghost", size: "sm", className: "h-8 w-8 p-0" },
|
|
43
|
-
react_1.default.createElement(lucide_react_1.Share, { className: "h-4 w-4" })),
|
|
44
|
-
react_1.default.createElement("div", { className: "ml-auto flex items-center gap-1" },
|
|
45
|
-
react_1.default.createElement(button_1.Button, { variant: "ghost", size: "sm", className: "h-8 w-8 p-0" },
|
|
46
|
-
react_1.default.createElement(lucide_react_1.ThumbsDown, { className: "h-4 w-4" })),
|
|
47
|
-
react_1.default.createElement(button_1.Button, { variant: "ghost", size: "sm", className: "h-8 w-8 p-0" },
|
|
48
|
-
react_1.default.createElement(lucide_react_1.ThumbsUp, { className: "h-4 w-4" })))))))))); }),
|
|
49
|
-
isLoading && (react_1.default.createElement("div", { className: "flex gap-4" },
|
|
50
|
-
react_1.default.createElement(avatar_1.Avatar, { className: "h-8 w-8" },
|
|
51
|
-
react_1.default.createElement(avatar_1.AvatarFallback, { className: "bg-blue-500" }, "AI")),
|
|
52
|
-
react_1.default.createElement("div", { className: "flex-1" },
|
|
53
|
-
react_1.default.createElement("div", { className: "bg-muted rounded-lg border p-4" },
|
|
54
|
-
react_1.default.createElement("div", { className: "flex items-center gap-2" },
|
|
55
|
-
react_1.default.createElement("div", { className: "bg-muted h-2 w-2 animate-bounce rounded-full" }),
|
|
56
|
-
react_1.default.createElement("div", { className: "bg-muted h-2 w-2 animate-bounce rounded-full", style: { animationDelay: "0.1s" } }),
|
|
57
|
-
react_1.default.createElement("div", { className: "bg-muted h-2 w-2 animate-bounce rounded-full", style: { animationDelay: "0.2s" } })))))))),
|
|
58
|
-
react_1.default.createElement("div", { className: "border-t px-4 py-2" },
|
|
59
|
-
react_1.default.createElement("div", { className: "mx-auto max-w-6xl" },
|
|
60
|
-
react_1.default.createElement("form", { onSubmit: handleSubmit, className: "relative" },
|
|
61
|
-
react_1.default.createElement("div", { className: "bg-muted flex items-center gap-2 rounded-lg border p-2" },
|
|
62
|
-
react_1.default.createElement(button_1.Button, { type: "button", variant: "ghost", size: "sm", className: "h-8 w-8 p-0" },
|
|
63
|
-
react_1.default.createElement(lucide_react_1.Paperclip, { className: "h-4 w-4" })),
|
|
64
|
-
react_1.default.createElement(input_1.Input, { value: input, onChange: handleInputChange, placeholder: "Ask me anything...", className: "flex-1 border-0 bg-transparent focus-visible:ring-0 focus-visible:ring-offset-0", disabled: isLoading }),
|
|
65
|
-
react_1.default.createElement(button_1.Button, { type: "button", variant: "ghost", size: "sm", className: "h-8 w-8 p-0" },
|
|
66
|
-
react_1.default.createElement(lucide_react_1.Mic, { className: "h-4 w-4" })),
|
|
67
|
-
react_1.default.createElement(button_1.Button, { type: "submit", size: "sm", disabled: !input.trim() || isLoading, className: "h-8 w-8 p-0" },
|
|
68
|
-
react_1.default.createElement(lucide_react_1.Send, { className: "h-4 w-4" }))))))));
|
|
69
|
-
};
|
|
70
|
-
exports.ChatInterface = ChatInterface;
|
|
@@ -1,38 +0,0 @@
|
|
|
1
|
-
import React from "react";
|
|
2
|
-
import { Suggestion } from "./welcome-section";
|
|
3
|
-
import { UIMessage, UseChatHelpers } from "@ai-sdk/react";
|
|
4
|
-
export interface Message {
|
|
5
|
-
id: string;
|
|
6
|
-
role: "user" | "assistant";
|
|
7
|
-
parts: {
|
|
8
|
-
type: "text";
|
|
9
|
-
text: string;
|
|
10
|
-
}[];
|
|
11
|
-
}
|
|
12
|
-
export interface Chat {
|
|
13
|
-
id: string;
|
|
14
|
-
title: string;
|
|
15
|
-
preview: string;
|
|
16
|
-
timestamp: Date;
|
|
17
|
-
messages: Message[];
|
|
18
|
-
}
|
|
19
|
-
type AiChatProps = {
|
|
20
|
-
initialSelectedChatId?: string | null;
|
|
21
|
-
username?: string;
|
|
22
|
-
chats: Chat[];
|
|
23
|
-
suggestions: Suggestion[];
|
|
24
|
-
selectedChatId: string;
|
|
25
|
-
onSelectedChatIdChange: (chatId: string) => void;
|
|
26
|
-
chat: UseChatHelpers<UIMessage<unknown, Record<string, unknown>, Record<string, {
|
|
27
|
-
input: unknown;
|
|
28
|
-
output: unknown | undefined;
|
|
29
|
-
}>>>;
|
|
30
|
-
completion: {
|
|
31
|
-
input: string;
|
|
32
|
-
handleInputChange: (e: React.ChangeEvent<HTMLInputElement>) => void;
|
|
33
|
-
handleSubmit: (e: React.FormEvent<HTMLFormElement>) => void;
|
|
34
|
-
isLoading: boolean;
|
|
35
|
-
};
|
|
36
|
-
};
|
|
37
|
-
export declare const AiChat: ({ chat, chats, completion, onSelectedChatIdChange, selectedChatId, suggestions, username, }: AiChatProps) => React.JSX.Element;
|
|
38
|
-
export {};
|
|
@@ -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>;
|