@myrjfa/ui 1.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/LICENSE +201 -0
- package/README.md +2 -0
- package/dist/dashboard/action-buttons.d.ts +16 -0
- package/dist/dashboard/action-buttons.d.ts.map +1 -0
- package/dist/dashboard/action-buttons.js +10 -0
- package/dist/dashboard/app-sidebar.d.ts +3 -0
- package/dist/dashboard/app-sidebar.d.ts.map +1 -0
- package/dist/dashboard/app-sidebar.js +145 -0
- package/dist/dashboard/card-header.d.ts +11 -0
- package/dist/dashboard/card-header.d.ts.map +1 -0
- package/dist/dashboard/card-header.js +8 -0
- package/dist/dashboard/dashboard-components.d.ts +13 -0
- package/dist/dashboard/dashboard-components.d.ts.map +1 -0
- package/dist/dashboard/dashboard-components.js +12 -0
- package/dist/dashboard/data-table.d.ts +19 -0
- package/dist/dashboard/data-table.d.ts.map +1 -0
- package/dist/dashboard/data-table.js +59 -0
- package/dist/dashboard/nav-main.d.ts +9 -0
- package/dist/dashboard/nav-main.d.ts.map +1 -0
- package/dist/dashboard/nav-main.js +10 -0
- package/dist/dashboard/nav-secondary.d.ts +10 -0
- package/dist/dashboard/nav-secondary.d.ts.map +1 -0
- package/dist/dashboard/nav-secondary.js +29 -0
- package/dist/dashboard/stats-card.d.ts +6 -0
- package/dist/dashboard/stats-card.d.ts.map +1 -0
- package/dist/dashboard/stats-card.js +6 -0
- package/dist/dashboard/table.d.ts +11 -0
- package/dist/dashboard/table.d.ts.map +1 -0
- package/dist/dashboard/table.js +67 -0
- package/dist/header/mobile-nav-item.d.ts +9 -0
- package/dist/header/mobile-nav-item.d.ts.map +1 -0
- package/dist/header/mobile-nav-item.js +7 -0
- package/dist/header/mobile-navbar.d.ts +5 -0
- package/dist/header/mobile-navbar.d.ts.map +1 -0
- package/dist/header/mobile-navbar.js +22 -0
- package/dist/header/nav-item.d.ts +9 -0
- package/dist/header/nav-item.d.ts.map +1 -0
- package/dist/header/nav-item.js +7 -0
- package/dist/index.d.ts +57 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +57 -0
- package/dist/main/footer.d.ts +6 -0
- package/dist/main/footer.d.ts.map +1 -0
- package/dist/main/footer.js +47 -0
- package/dist/main/navbar.d.ts +6 -0
- package/dist/main/navbar.d.ts.map +1 -0
- package/dist/main/navbar.js +180 -0
- package/dist/main/paginationBar.d.ts +5 -0
- package/dist/main/paginationBar.d.ts.map +1 -0
- package/dist/main/paginationBar.js +30 -0
- package/dist/main/review-page.d.ts +13 -0
- package/dist/main/review-page.d.ts.map +1 -0
- package/dist/main/review-page.js +246 -0
- package/dist/misc/accordion.d.ts +7 -0
- package/dist/misc/accordion.d.ts.map +1 -0
- package/dist/misc/accordion.js +44 -0
- package/dist/misc/alert-dialog.d.ts +14 -0
- package/dist/misc/alert-dialog.d.ts.map +1 -0
- package/dist/misc/alert-dialog.js +72 -0
- package/dist/misc/alert.d.ts +9 -0
- package/dist/misc/alert.d.ts.map +1 -0
- package/dist/misc/alert.js +49 -0
- package/dist/misc/alertdialogclaude.d.ts +15 -0
- package/dist/misc/alertdialogclaude.d.ts.map +1 -0
- package/dist/misc/alertdialogclaude.js +226 -0
- package/dist/misc/avatar.d.ts +6 -0
- package/dist/misc/avatar.d.ts.map +1 -0
- package/dist/misc/avatar.js +39 -0
- package/dist/misc/badge.d.ts +9 -0
- package/dist/misc/badge.d.ts.map +1 -0
- package/dist/misc/badge.js +45 -0
- package/dist/misc/button.d.ts +10 -0
- package/dist/misc/button.d.ts.map +1 -0
- package/dist/misc/button.js +54 -0
- package/dist/misc/card.d.ts +9 -0
- package/dist/misc/card.d.ts.map +1 -0
- package/dist/misc/card.js +49 -0
- package/dist/misc/carousel.d.ts +20 -0
- package/dist/misc/carousel.d.ts.map +1 -0
- package/dist/misc/carousel.js +115 -0
- package/dist/misc/checkbox.d.ts +4 -0
- package/dist/misc/checkbox.d.ts.map +1 -0
- package/dist/misc/checkbox.js +32 -0
- package/dist/misc/command.d.ts +16 -0
- package/dist/misc/command.d.ts.map +1 -0
- package/dist/misc/command.js +65 -0
- package/dist/misc/datepicker.d.ts +12 -0
- package/dist/misc/datepicker.d.ts.map +1 -0
- package/dist/misc/datepicker.js +199 -0
- package/dist/misc/dialog.d.ts +13 -0
- package/dist/misc/dialog.d.ts.map +1 -0
- package/dist/misc/dialog.js +68 -0
- package/dist/misc/dropdown-menu.d.ts +25 -0
- package/dist/misc/dropdown-menu.d.ts.map +1 -0
- package/dist/misc/dropdown-menu.js +88 -0
- package/dist/misc/faq.d.ts +5 -0
- package/dist/misc/faq.d.ts.map +1 -0
- package/dist/misc/faq.js +6 -0
- package/dist/misc/file-preview.d.ts +8 -0
- package/dist/misc/file-preview.d.ts.map +1 -0
- package/dist/misc/file-preview.js +130 -0
- package/dist/misc/filter.d.ts +12 -0
- package/dist/misc/filter.d.ts.map +1 -0
- package/dist/misc/filter.js +47 -0
- package/dist/misc/filterBar.d.ts +5 -0
- package/dist/misc/filterBar.d.ts.map +1 -0
- package/dist/misc/filterBar.js +196 -0
- package/dist/misc/form.d.ts +25 -0
- package/dist/misc/form.d.ts.map +1 -0
- package/dist/misc/form.js +81 -0
- package/dist/misc/input.d.ts +4 -0
- package/dist/misc/input.d.ts.map +1 -0
- package/dist/misc/input.js +29 -0
- package/dist/misc/label.d.ts +4 -0
- package/dist/misc/label.d.ts.map +1 -0
- package/dist/misc/label.js +31 -0
- package/dist/misc/line-carousel.d.ts +9 -0
- package/dist/misc/line-carousel.d.ts.map +1 -0
- package/dist/misc/line-carousel.js +15 -0
- package/dist/misc/multiImageUploader.d.ts +9 -0
- package/dist/misc/multiImageUploader.d.ts.map +1 -0
- package/dist/misc/multiImageUploader.js +11 -0
- package/dist/misc/newsLetter.d.ts +3 -0
- package/dist/misc/newsLetter.d.ts.map +1 -0
- package/dist/misc/newsLetter.js +101 -0
- package/dist/misc/notification.d.ts +6 -0
- package/dist/misc/notification.d.ts.map +1 -0
- package/dist/misc/notification.js +148 -0
- package/dist/misc/pagination.d.ts +15 -0
- package/dist/misc/pagination.d.ts.map +1 -0
- package/dist/misc/pagination.js +59 -0
- package/dist/misc/password-eye.d.ts +6 -0
- package/dist/misc/password-eye.d.ts.map +1 -0
- package/dist/misc/password-eye.js +7 -0
- package/dist/misc/popover.d.ts +7 -0
- package/dist/misc/popover.d.ts.map +1 -0
- package/dist/misc/popover.js +43 -0
- package/dist/misc/progress.d.ts +4 -0
- package/dist/misc/progress.d.ts.map +1 -0
- package/dist/misc/progress.js +31 -0
- package/dist/misc/scroll-area.d.ts +5 -0
- package/dist/misc/scroll-area.d.ts.map +1 -0
- package/dist/misc/scroll-area.js +37 -0
- package/dist/misc/searchBar.d.ts +6 -0
- package/dist/misc/searchBar.d.ts.map +1 -0
- package/dist/misc/searchBar.js +93 -0
- package/dist/misc/searchBox.d.ts +12 -0
- package/dist/misc/searchBox.d.ts.map +1 -0
- package/dist/misc/searchBox.js +66 -0
- package/dist/misc/select.d.ts +13 -0
- package/dist/misc/select.d.ts.map +1 -0
- package/dist/misc/select.js +70 -0
- package/dist/misc/separator.d.ts +4 -0
- package/dist/misc/separator.d.ts.map +1 -0
- package/dist/misc/separator.js +31 -0
- package/dist/misc/share.d.ts +5 -0
- package/dist/misc/share.d.ts.map +1 -0
- package/dist/misc/share.js +213 -0
- package/dist/misc/sheet.d.ts +13 -0
- package/dist/misc/sheet.d.ts.map +1 -0
- package/dist/misc/sheet.js +72 -0
- package/dist/misc/sidebar.d.ts +70 -0
- package/dist/misc/sidebar.d.ts.map +1 -0
- package/dist/misc/sidebar.js +253 -0
- package/dist/misc/skeleton.d.ts +3 -0
- package/dist/misc/skeleton.d.ts.map +1 -0
- package/dist/misc/skeleton.js +29 -0
- package/dist/misc/starRating.d.ts +4 -0
- package/dist/misc/starRating.d.ts.map +1 -0
- package/dist/misc/starRating.js +21 -0
- package/dist/misc/stateCard.d.ts +7 -0
- package/dist/misc/stateCard.d.ts.map +1 -0
- package/dist/misc/stateCard.js +22 -0
- package/dist/misc/tabs.d.ts +8 -0
- package/dist/misc/tabs.d.ts.map +1 -0
- package/dist/misc/tabs.js +43 -0
- package/dist/misc/textarea.d.ts +4 -0
- package/dist/misc/textarea.d.ts.map +1 -0
- package/dist/misc/textarea.js +29 -0
- package/dist/misc/tile.d.ts +3 -0
- package/dist/misc/tile.d.ts.map +1 -0
- package/dist/misc/tile.js +137 -0
- package/dist/misc/tooltip.d.ts +8 -0
- package/dist/misc/tooltip.d.ts.map +1 -0
- package/dist/misc/tooltip.js +43 -0
- package/dist/profile/socialLink.d.ts +10 -0
- package/dist/profile/socialLink.d.ts.map +1 -0
- package/dist/profile/socialLink.js +82 -0
- package/package.json +79 -0
|
@@ -0,0 +1,246 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
var __assign = (this && this.__assign) || function () {
|
|
3
|
+
__assign = Object.assign || function(t) {
|
|
4
|
+
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
|
5
|
+
s = arguments[i];
|
|
6
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
|
|
7
|
+
t[p] = s[p];
|
|
8
|
+
}
|
|
9
|
+
return t;
|
|
10
|
+
};
|
|
11
|
+
return __assign.apply(this, arguments);
|
|
12
|
+
};
|
|
13
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
14
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
15
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
16
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
17
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
18
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
19
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
20
|
+
});
|
|
21
|
+
};
|
|
22
|
+
var __generator = (this && this.__generator) || function (thisArg, body) {
|
|
23
|
+
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === "function" ? Iterator : Object).prototype);
|
|
24
|
+
return g.next = verb(0), g["throw"] = verb(1), g["return"] = verb(2), typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
|
|
25
|
+
function verb(n) { return function (v) { return step([n, v]); }; }
|
|
26
|
+
function step(op) {
|
|
27
|
+
if (f) throw new TypeError("Generator is already executing.");
|
|
28
|
+
while (g && (g = 0, op[0] && (_ = 0)), _) try {
|
|
29
|
+
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
|
|
30
|
+
if (y = 0, t) op = [op[0] & 2, t.value];
|
|
31
|
+
switch (op[0]) {
|
|
32
|
+
case 0: case 1: t = op; break;
|
|
33
|
+
case 4: _.label++; return { value: op[1], done: false };
|
|
34
|
+
case 5: _.label++; y = op[1]; op = [0]; continue;
|
|
35
|
+
case 7: op = _.ops.pop(); _.trys.pop(); continue;
|
|
36
|
+
default:
|
|
37
|
+
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
|
|
38
|
+
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
|
|
39
|
+
if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
|
|
40
|
+
if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
|
|
41
|
+
if (t[2]) _.ops.pop();
|
|
42
|
+
_.trys.pop(); continue;
|
|
43
|
+
}
|
|
44
|
+
op = body.call(thisArg, _);
|
|
45
|
+
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
|
|
46
|
+
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
|
|
47
|
+
}
|
|
48
|
+
};
|
|
49
|
+
var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
|
|
50
|
+
if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
|
|
51
|
+
if (ar || !(i in from)) {
|
|
52
|
+
if (!ar) ar = Array.prototype.slice.call(from, 0, i);
|
|
53
|
+
ar[i] = from[i];
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
return to.concat(ar || Array.prototype.slice.call(from));
|
|
57
|
+
};
|
|
58
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
59
|
+
import { zodResolver } from "@hookform/resolvers/zod";
|
|
60
|
+
import { addReview, deleteReview, editReview, getReviewsById } from "@myrjfa/state/dist/lib/actions";
|
|
61
|
+
import { reviewBasicSchema } from "@myrjfa/state/dist/lib/models/review";
|
|
62
|
+
import { userAtom, userLoadingAtom } from "@myrjfa/state/dist/lib/userAtom";
|
|
63
|
+
import { formatDate } from "@myrjfa/state/dist/lib/utils";
|
|
64
|
+
import { useAtomValue } from "jotai";
|
|
65
|
+
import { StarIcon } from "lucide-react";
|
|
66
|
+
import { useEffect, useState } from "react";
|
|
67
|
+
import { useForm } from "react-hook-form";
|
|
68
|
+
import { deleteActions, showAlert } from "../misc/alertdialogclaude";
|
|
69
|
+
import { Avatar, AvatarFallback, AvatarImage } from "../misc/avatar";
|
|
70
|
+
import { Button } from "../misc/button";
|
|
71
|
+
import { Card, CardContent, CardDescription, CardFooter, CardHeader, CardTitle } from "../misc/card";
|
|
72
|
+
import { Form, FormControl, FormField, FormItem, FormLabel, FormMessage, } from "../misc/form";
|
|
73
|
+
import { Separator } from "../misc/separator";
|
|
74
|
+
import { Textarea } from "../misc/textarea";
|
|
75
|
+
var StarRating = function (_a) {
|
|
76
|
+
var value = _a.value, onChange = _a.onChange, onHover = _a.onHover, _b = _a.size, size = _b === void 0 ? 8 : _b, _c = _a.interactive, interactive = _c === void 0 ? false : _c;
|
|
77
|
+
return (_jsx("div", { className: "flex space-x-1", children: [1, 2, 3, 4, 5].map(function (star) { return (_jsx("button", { type: "button", onClick: function () { return interactive && (onChange === null || onChange === void 0 ? void 0 : onChange(star)); }, onMouseEnter: function () { return interactive && (onHover === null || onHover === void 0 ? void 0 : onHover(star)); }, onMouseLeave: function () { return interactive && (onHover === null || onHover === void 0 ? void 0 : onHover(null)); }, className: "focus:outline-none text-".concat(size, "xl"), children: _jsx(StarIcon, { className: "h-".concat(size, " w-").concat(size, " ").concat(star <= value ? 'text-yellow-400 fill-yellow-400' : 'text-gray-300') }) }, star)); }) }));
|
|
78
|
+
};
|
|
79
|
+
export default function ReviewPage(_a) {
|
|
80
|
+
var _this = this;
|
|
81
|
+
var _b;
|
|
82
|
+
var title = _a.title, subtitle = _a.subtitle, targetId = _a.targetId, _c = _a.targetType, targetType = _c === void 0 ? "opportunity" : _c, _d = _a.editable, editable = _d === void 0 ? false : _d, _e = _a.initialReviews, initialReviews = _e === void 0 ? [] : _e, _f = _a.reviewCategory, reviewCategory = _f === void 0 ? "review" : _f;
|
|
83
|
+
var user = useAtomValue(userAtom);
|
|
84
|
+
var loading = useAtomValue(userLoadingAtom);
|
|
85
|
+
var _g = useState((_b = initialReviews.find(function (r) { return r.reviewerUsername === (user === null || user === void 0 ? void 0 : user.username); })) !== null && _b !== void 0 ? _b : null), review = _g[0], setReview = _g[1];
|
|
86
|
+
var _h = useState(initialReviews), reviews = _h[0], setReviews = _h[1];
|
|
87
|
+
var _j = useState([]), displayReviews = _j[0], setDisplayReviews = _j[1];
|
|
88
|
+
var _k = useState(null), hoveredRating = _k[0], setHoveredRating = _k[1];
|
|
89
|
+
var _l = useState(false), isSubmitting = _l[0], setIsSubmitting = _l[1];
|
|
90
|
+
var _m = useState(false), isDeleting = _m[0], setIsDeleting = _m[1];
|
|
91
|
+
var _o = useState(false), isFormInitialized = _o[0], setIsFormInitialized = _o[1];
|
|
92
|
+
var form = useForm({
|
|
93
|
+
resolver: zodResolver(reviewBasicSchema),
|
|
94
|
+
defaultValues: {
|
|
95
|
+
rating: reviewCategory === "comment" ? 1 : ((review === null || review === void 0 ? void 0 : review.rating) || 0),
|
|
96
|
+
comment: (review === null || review === void 0 ? void 0 : review.comment) || "",
|
|
97
|
+
},
|
|
98
|
+
});
|
|
99
|
+
var ratingValue = hoveredRating !== null && hoveredRating !== void 0 ? hoveredRating : form.watch("rating");
|
|
100
|
+
useEffect(function () {
|
|
101
|
+
if (loading)
|
|
102
|
+
return;
|
|
103
|
+
var fetchData = function () { return __awaiter(_this, void 0, void 0, function () {
|
|
104
|
+
var response, myReview;
|
|
105
|
+
return __generator(this, function (_a) {
|
|
106
|
+
switch (_a.label) {
|
|
107
|
+
case 0: return [4 /*yield*/, getReviewsById(targetId, targetType)];
|
|
108
|
+
case 1:
|
|
109
|
+
response = _a.sent();
|
|
110
|
+
if (response === null || response === void 0 ? void 0 : response.error) {
|
|
111
|
+
console.error("Error: " + response.error);
|
|
112
|
+
}
|
|
113
|
+
else {
|
|
114
|
+
setReviews(response.reviews);
|
|
115
|
+
myReview = response.reviews.find(function (r) { return r.reviewerUsername === (user === null || user === void 0 ? void 0 : user.username); });
|
|
116
|
+
setReview(myReview !== null && myReview !== void 0 ? myReview : null);
|
|
117
|
+
form.reset({ rating: reviewCategory === "comment" ? 1 : ((myReview === null || myReview === void 0 ? void 0 : myReview.rating) || 0), comment: (myReview === null || myReview === void 0 ? void 0 : myReview.comment) || "" });
|
|
118
|
+
setIsFormInitialized(true);
|
|
119
|
+
}
|
|
120
|
+
return [2 /*return*/];
|
|
121
|
+
}
|
|
122
|
+
});
|
|
123
|
+
}); };
|
|
124
|
+
if (!initialReviews || initialReviews.length === 0) {
|
|
125
|
+
fetchData();
|
|
126
|
+
}
|
|
127
|
+
else {
|
|
128
|
+
setIsFormInitialized(true); // Initialize immediately if already present
|
|
129
|
+
}
|
|
130
|
+
}, [targetId, targetType, user, loading]);
|
|
131
|
+
useEffect(function () {
|
|
132
|
+
if (review) {
|
|
133
|
+
form.reset({
|
|
134
|
+
rating: reviewCategory === "comment" ? 1 : review.rating,
|
|
135
|
+
comment: review.comment || "",
|
|
136
|
+
});
|
|
137
|
+
}
|
|
138
|
+
setIsFormInitialized(true);
|
|
139
|
+
}, [review]);
|
|
140
|
+
useEffect(function () {
|
|
141
|
+
setDisplayReviews(reviews.filter(function (r) { return r.comment; }));
|
|
142
|
+
}, [reviews]);
|
|
143
|
+
var onSubmit = function (data) { return __awaiter(_this, void 0, void 0, function () {
|
|
144
|
+
var response, newReview_1, error_1;
|
|
145
|
+
return __generator(this, function (_a) {
|
|
146
|
+
switch (_a.label) {
|
|
147
|
+
case 0:
|
|
148
|
+
setIsSubmitting(true);
|
|
149
|
+
_a.label = 1;
|
|
150
|
+
case 1:
|
|
151
|
+
_a.trys.push([1, 9, 10, 11]);
|
|
152
|
+
response = void 0;
|
|
153
|
+
if (!review) return [3 /*break*/, 3];
|
|
154
|
+
return [4 /*yield*/, editReview(review._id, data)];
|
|
155
|
+
case 2:
|
|
156
|
+
response = _a.sent();
|
|
157
|
+
return [3 /*break*/, 5];
|
|
158
|
+
case 3: return [4 /*yield*/, addReview(targetId, targetType, data)];
|
|
159
|
+
case 4:
|
|
160
|
+
response = _a.sent();
|
|
161
|
+
_a.label = 5;
|
|
162
|
+
case 5:
|
|
163
|
+
if (!(response === null || response === void 0 ? void 0 : response.error)) return [3 /*break*/, 7];
|
|
164
|
+
return [4 /*yield*/, showAlert(response.error, "Error reviewing ".concat(targetType))];
|
|
165
|
+
case 6:
|
|
166
|
+
_a.sent();
|
|
167
|
+
return [3 /*break*/, 8];
|
|
168
|
+
case 7:
|
|
169
|
+
newReview_1 = response.review;
|
|
170
|
+
if (newReview_1) {
|
|
171
|
+
setReviews(__spreadArray([newReview_1], reviews.filter(function (r) { return r._id !== newReview_1._id; }), true));
|
|
172
|
+
setReview(newReview_1);
|
|
173
|
+
form.reset({ rating: reviewCategory === "comment" ? 1 : newReview_1.rating, comment: newReview_1.comment || "" });
|
|
174
|
+
}
|
|
175
|
+
_a.label = 8;
|
|
176
|
+
case 8: return [3 /*break*/, 11];
|
|
177
|
+
case 9:
|
|
178
|
+
error_1 = _a.sent();
|
|
179
|
+
console.error("Failed to submit review:", error_1);
|
|
180
|
+
form.setError("root", { message: "Failed to submit review. Please try again." });
|
|
181
|
+
return [3 /*break*/, 11];
|
|
182
|
+
case 10:
|
|
183
|
+
setIsSubmitting(false);
|
|
184
|
+
return [7 /*endfinally*/];
|
|
185
|
+
case 11: return [2 /*return*/];
|
|
186
|
+
}
|
|
187
|
+
});
|
|
188
|
+
}); };
|
|
189
|
+
var handleDeleteReview = function () { return __awaiter(_this, void 0, void 0, function () {
|
|
190
|
+
var confirmed, response, err_1;
|
|
191
|
+
return __generator(this, function (_a) {
|
|
192
|
+
switch (_a.label) {
|
|
193
|
+
case 0:
|
|
194
|
+
if (!review)
|
|
195
|
+
return [2 /*return*/];
|
|
196
|
+
confirmed = true;
|
|
197
|
+
return [4 /*yield*/, showAlert("Are you sure you want to delete your review?", undefined, deleteActions(function () {
|
|
198
|
+
confirmed = false;
|
|
199
|
+
}))];
|
|
200
|
+
case 1:
|
|
201
|
+
_a.sent();
|
|
202
|
+
if (!confirmed)
|
|
203
|
+
return [2 /*return*/];
|
|
204
|
+
setIsDeleting(true);
|
|
205
|
+
_a.label = 2;
|
|
206
|
+
case 2:
|
|
207
|
+
_a.trys.push([2, 7, 9, 10]);
|
|
208
|
+
return [4 /*yield*/, deleteReview(review._id)];
|
|
209
|
+
case 3:
|
|
210
|
+
response = _a.sent();
|
|
211
|
+
if (!(response === null || response === void 0 ? void 0 : response.error)) return [3 /*break*/, 5];
|
|
212
|
+
return [4 /*yield*/, showAlert(response.error, "Error deleting review:")];
|
|
213
|
+
case 4:
|
|
214
|
+
_a.sent();
|
|
215
|
+
return [3 /*break*/, 6];
|
|
216
|
+
case 5:
|
|
217
|
+
setReviews(reviews.filter(function (r) { return r._id !== review._id; }));
|
|
218
|
+
setReview(null);
|
|
219
|
+
form.reset({ rating: reviewCategory === "comment" ? 1 : 0, comment: "" });
|
|
220
|
+
_a.label = 6;
|
|
221
|
+
case 6: return [3 /*break*/, 10];
|
|
222
|
+
case 7:
|
|
223
|
+
err_1 = _a.sent();
|
|
224
|
+
console.error("Failed to delete review:", err_1);
|
|
225
|
+
return [4 /*yield*/, showAlert("Something went wrong while deleting. Please try again.")];
|
|
226
|
+
case 8:
|
|
227
|
+
_a.sent();
|
|
228
|
+
return [3 /*break*/, 10];
|
|
229
|
+
case 9:
|
|
230
|
+
setIsDeleting(false);
|
|
231
|
+
return [7 /*endfinally*/];
|
|
232
|
+
case 10: return [2 /*return*/];
|
|
233
|
+
}
|
|
234
|
+
});
|
|
235
|
+
}); };
|
|
236
|
+
if (loading || !isFormInitialized)
|
|
237
|
+
return _jsx(Card, { className: "w-full h-50 flex items-center justify-center", children: "Loading Reviews..." });
|
|
238
|
+
var averageRating = reviews.length ? reviews.reduce(function (acc, r) { return acc + r.rating; }, 0) / reviews.length : 0;
|
|
239
|
+
return (_jsxs(Card, { className: "w-full mb-10", children: [(title || subtitle) && _jsxs(CardHeader, { children: [title && _jsx(CardTitle, { children: title }), subtitle && _jsx(CardDescription, { children: subtitle })] }), _jsxs(CardContent, { children: [editable && _jsx(Form, __assign({}, form, { children: _jsxs("form", { onSubmit: form.handleSubmit(onSubmit), className: "space-y-6 pb-4", children: [_jsx(FormField, { control: form.control, name: "rating", render: function (_a) {
|
|
240
|
+
var field = _a.field;
|
|
241
|
+
return (_jsxs(FormItem, { className: reviewCategory === "comment" ? "hidden" : "", children: [_jsx(FormLabel, { children: "Your Rating" }), _jsx(FormControl, { children: _jsx(StarRating, { value: ratingValue, onChange: function (val) { return field.onChange(val); }, onHover: setHoveredRating, interactive: true }) }), _jsx(FormMessage, {})] }));
|
|
242
|
+
} }), _jsx(FormField, { control: form.control, name: "comment", render: function (_a) {
|
|
243
|
+
var field = _a.field;
|
|
244
|
+
return (_jsxs(FormItem, { children: [_jsxs(FormLabel, { children: ["Your ", reviewCategory == "review" ? "Review" : "Comment"] }), _jsx(FormControl, { children: _jsx(Textarea, __assign({ placeholder: "Share your ".concat(reviewCategory == "review" ? "experience" : "thoughts", "..."), className: "resize-none", rows: 4 }, field)) }), _jsx(FormMessage, {})] }));
|
|
245
|
+
} }), form.formState.errors.root && (_jsx("p", { className: "text-sm font-medium text-destructive", children: form.formState.errors.root.message })), _jsxs("div", { className: "flex flex-wrap gap-2", children: [_jsx(Button, { type: "submit", disabled: isSubmitting, className: "w-full sm:w-auto", children: isSubmitting ? (reviewCategory == "review" ? "Submitting... Review" : "Posting... Comment") : (reviewCategory == "review" ? "Submit Review" : "Post Comment") }), review && _jsx(Button, { type: "button", variant: "destructive", className: "w-full sm:w-auto", disabled: isDeleting, onClick: handleDeleteReview, children: isDeleting ? "Deleting..." : reviewCategory == "review" ? "Delete Review" : "Delete Comment" })] })] }) })), displayReviews.length > 0 ? (_jsxs("div", { className: "mt-4", children: [_jsxs("div", { className: "flex justify-between items-center mb-4", children: [_jsxs("h3", { className: "text-lg font-medium", children: [reviewCategory == "review" ? "Reviews" : "Comments", " (", displayReviews.length, ")"] }), reviewCategory == "review" && _jsxs("div", { className: "flex items-center", children: [_jsx("span", { className: "font-medium mr-2", children: averageRating.toFixed(1) }), _jsx(StarRating, { value: Math.round(averageRating), size: 5 })] })] }), _jsx(Separator, { className: "my-4" }), _jsx("div", { className: "space-y-6", children: displayReviews.map(function (review) { return (_jsxs("div", { className: "pb-4", children: [_jsxs("div", { className: "flex items-start justify-between", children: [_jsxs("div", { className: "flex items-center", children: [_jsxs(Avatar, { className: "h-10 w-10 mr-3", children: [_jsx(AvatarImage, { src: review.reviewerPic || "/images/profile_placeholder.webp", alt: review.reviewerUsername }), _jsx(AvatarFallback, { children: review.reviewerUsername.charAt(0) })] }), _jsxs("div", { children: [_jsx("h4", { className: "font-medium", children: review.reviewerUsername }), _jsx("p", { className: "text-sm text-gray-500", children: formatDate(review.createdAt) })] })] }), reviewCategory == "review" && _jsx(StarRating, { value: review.rating, size: 4 })] }), _jsx("p", { className: "mt-2 text-gray-600 whitespace-pre-line", children: review.comment }), _jsx(Separator, { className: "mt-4" })] }, review._id)); }) })] })) : (_jsxs("div", { className: "text-center justify-center p-5", children: ["No ", reviewCategory == "comment" ? "comments" : "reviews", " yet"] }))] }), displayReviews.length > 0 && _jsx(CardFooter, { children: _jsx("p", { className: "text-sm text-gray-500", children: "Thank you for sharing your feedback. All reviews are moderated and typically appear within 24-48 hours." }) })] }));
|
|
246
|
+
}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import * as AccordionPrimitive from "@radix-ui/react-accordion";
|
|
2
|
+
declare function Accordion({ ...props }: React.ComponentProps<typeof AccordionPrimitive.Root>): import("react/jsx-runtime").JSX.Element;
|
|
3
|
+
declare function AccordionItem({ className, ...props }: React.ComponentProps<typeof AccordionPrimitive.Item>): import("react/jsx-runtime").JSX.Element;
|
|
4
|
+
declare function AccordionTrigger({ className, children, ...props }: React.ComponentProps<typeof AccordionPrimitive.Trigger>): import("react/jsx-runtime").JSX.Element;
|
|
5
|
+
declare function AccordionContent({ className, children, ...props }: React.ComponentProps<typeof AccordionPrimitive.Content>): import("react/jsx-runtime").JSX.Element;
|
|
6
|
+
export { Accordion, AccordionItem, AccordionTrigger, AccordionContent };
|
|
7
|
+
//# sourceMappingURL=accordion.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"accordion.d.ts","sourceRoot":"","sources":["../../src/misc/accordion.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,kBAAkB,MAAM,2BAA2B,CAAA;AAK/D,iBAAS,SAAS,CAAC,EACjB,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,kBAAkB,CAAC,IAAI,CAAC,2CAEtD;AAED,iBAAS,aAAa,CAAC,EACrB,SAAS,EACT,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,kBAAkB,CAAC,IAAI,CAAC,2CAQtD;AAED,iBAAS,gBAAgB,CAAC,EACxB,SAAS,EACT,QAAQ,EACR,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,kBAAkB,CAAC,OAAO,CAAC,2CAgBzD;AAED,iBAAS,gBAAgB,CAAC,EACxB,SAAS,EACT,QAAQ,EACR,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,kBAAkB,CAAC,OAAO,CAAC,2CAUzD;AAED,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,CAAA"}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
var __assign = (this && this.__assign) || function () {
|
|
3
|
+
__assign = Object.assign || function(t) {
|
|
4
|
+
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
|
5
|
+
s = arguments[i];
|
|
6
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
|
|
7
|
+
t[p] = s[p];
|
|
8
|
+
}
|
|
9
|
+
return t;
|
|
10
|
+
};
|
|
11
|
+
return __assign.apply(this, arguments);
|
|
12
|
+
};
|
|
13
|
+
var __rest = (this && this.__rest) || function (s, e) {
|
|
14
|
+
var t = {};
|
|
15
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
|
|
16
|
+
t[p] = s[p];
|
|
17
|
+
if (s != null && typeof Object.getOwnPropertySymbols === "function")
|
|
18
|
+
for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
|
|
19
|
+
if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
|
|
20
|
+
t[p[i]] = s[p[i]];
|
|
21
|
+
}
|
|
22
|
+
return t;
|
|
23
|
+
};
|
|
24
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
25
|
+
import * as AccordionPrimitive from "@radix-ui/react-accordion";
|
|
26
|
+
import { cn } from "@myrjfa/state/dist/lib/utils";
|
|
27
|
+
import { ChevronDownIcon } from "lucide-react";
|
|
28
|
+
function Accordion(_a) {
|
|
29
|
+
var props = __rest(_a, []);
|
|
30
|
+
return _jsx(AccordionPrimitive.Root, __assign({ "data-slot": "accordion" }, props));
|
|
31
|
+
}
|
|
32
|
+
function AccordionItem(_a) {
|
|
33
|
+
var className = _a.className, props = __rest(_a, ["className"]);
|
|
34
|
+
return (_jsx(AccordionPrimitive.Item, __assign({ "data-slot": "accordion-item", className: cn("border-b last:border-b-0", className) }, props)));
|
|
35
|
+
}
|
|
36
|
+
function AccordionTrigger(_a) {
|
|
37
|
+
var className = _a.className, children = _a.children, props = __rest(_a, ["className", "children"]);
|
|
38
|
+
return (_jsx(AccordionPrimitive.Header, { className: "flex", children: _jsxs(AccordionPrimitive.Trigger, __assign({ "data-slot": "accordion-trigger", className: cn("focus-visible:border-ring focus-visible:ring-ring/50 flex flex-1 items-start justify-between gap-4 rounded-md py-4 text-left text-sm font-medium transition-all outline-none hover:underline focus-visible:ring-[3px] disabled:pointer-events-none disabled:opacity-50 [&[data-state=open]>svg]:rotate-180", className) }, props, { children: [children, _jsx(ChevronDownIcon, { className: "text-muted-foreground pointer-events-none size-4 shrink-0 translate-y-0.5 transition-transform duration-200" })] })) }));
|
|
39
|
+
}
|
|
40
|
+
function AccordionContent(_a) {
|
|
41
|
+
var className = _a.className, children = _a.children, props = __rest(_a, ["className", "children"]);
|
|
42
|
+
return (_jsx(AccordionPrimitive.Content, __assign({ "data-slot": "accordion-content", className: "data-[state=closed]:animate-accordion-up data-[state=open]:animate-accordion-down overflow-hidden text-sm" }, props, { children: _jsx("div", { className: cn("pt-0 pb-4", className), children: children }) })));
|
|
43
|
+
}
|
|
44
|
+
export { Accordion, AccordionItem, AccordionTrigger, AccordionContent };
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import * as AlertDialogPrimitive from "@radix-ui/react-alert-dialog";
|
|
2
|
+
declare function AlertDialog({ ...props }: React.ComponentProps<typeof AlertDialogPrimitive.Root>): import("react/jsx-runtime").JSX.Element;
|
|
3
|
+
declare function AlertDialogTrigger({ ...props }: React.ComponentProps<typeof AlertDialogPrimitive.Trigger>): import("react/jsx-runtime").JSX.Element;
|
|
4
|
+
declare function AlertDialogPortal({ ...props }: React.ComponentProps<typeof AlertDialogPrimitive.Portal>): import("react/jsx-runtime").JSX.Element;
|
|
5
|
+
declare function AlertDialogOverlay({ className, ...props }: React.ComponentProps<typeof AlertDialogPrimitive.Overlay>): import("react/jsx-runtime").JSX.Element;
|
|
6
|
+
declare function AlertDialogContent({ className, ...props }: React.ComponentProps<typeof AlertDialogPrimitive.Content>): import("react/jsx-runtime").JSX.Element;
|
|
7
|
+
declare function AlertDialogHeader({ className, ...props }: React.ComponentProps<"div">): import("react/jsx-runtime").JSX.Element;
|
|
8
|
+
declare function AlertDialogFooter({ className, ...props }: React.ComponentProps<"div">): import("react/jsx-runtime").JSX.Element;
|
|
9
|
+
declare function AlertDialogTitle({ className, ...props }: React.ComponentProps<typeof AlertDialogPrimitive.Title>): import("react/jsx-runtime").JSX.Element;
|
|
10
|
+
declare function AlertDialogDescription({ className, ...props }: React.ComponentProps<typeof AlertDialogPrimitive.Description>): import("react/jsx-runtime").JSX.Element;
|
|
11
|
+
declare function AlertDialogAction({ className, ...props }: React.ComponentProps<typeof AlertDialogPrimitive.Action>): import("react/jsx-runtime").JSX.Element;
|
|
12
|
+
declare function AlertDialogCancel({ className, ...props }: React.ComponentProps<typeof AlertDialogPrimitive.Cancel>): import("react/jsx-runtime").JSX.Element;
|
|
13
|
+
export { AlertDialog, AlertDialogPortal, AlertDialogOverlay, AlertDialogTrigger, AlertDialogContent, AlertDialogHeader, AlertDialogFooter, AlertDialogTitle, AlertDialogDescription, AlertDialogAction, AlertDialogCancel, };
|
|
14
|
+
//# sourceMappingURL=alert-dialog.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"alert-dialog.d.ts","sourceRoot":"","sources":["../../src/misc/alert-dialog.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,oBAAoB,MAAM,8BAA8B,CAAA;AAIpE,iBAAS,WAAW,CAAC,EACnB,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,oBAAoB,CAAC,IAAI,CAAC,2CAExD;AAED,iBAAS,kBAAkB,CAAC,EAC1B,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,oBAAoB,CAAC,OAAO,CAAC,2CAI3D;AAED,iBAAS,iBAAiB,CAAC,EACzB,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,oBAAoB,CAAC,MAAM,CAAC,2CAI1D;AAED,iBAAS,kBAAkB,CAAC,EAC1B,SAAS,EACT,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,oBAAoB,CAAC,OAAO,CAAC,2CAW3D;AAED,iBAAS,kBAAkB,CAAC,EAC1B,SAAS,EACT,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,oBAAoB,CAAC,OAAO,CAAC,2CAc3D;AAED,iBAAS,iBAAiB,CAAC,EACzB,SAAS,EACT,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,2CAQ7B;AAED,iBAAS,iBAAiB,CAAC,EACzB,SAAS,EACT,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,2CAW7B;AAED,iBAAS,gBAAgB,CAAC,EACxB,SAAS,EACT,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,oBAAoB,CAAC,KAAK,CAAC,2CAQzD;AAED,iBAAS,sBAAsB,CAAC,EAC9B,SAAS,EACT,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,oBAAoB,CAAC,WAAW,CAAC,2CAQ/D;AAED,iBAAS,iBAAiB,CAAC,EACzB,SAAS,EACT,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,oBAAoB,CAAC,MAAM,CAAC,2CAO1D;AAED,iBAAS,iBAAiB,CAAC,EACzB,SAAS,EACT,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,oBAAoB,CAAC,MAAM,CAAC,2CAO1D;AAED,OAAO,EACL,WAAW,EACX,iBAAiB,EACjB,kBAAkB,EAClB,kBAAkB,EAClB,kBAAkB,EAClB,iBAAiB,EACjB,iBAAiB,EACjB,gBAAgB,EAChB,sBAAsB,EACtB,iBAAiB,EACjB,iBAAiB,GAClB,CAAA"}
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
var __assign = (this && this.__assign) || function () {
|
|
3
|
+
__assign = Object.assign || function(t) {
|
|
4
|
+
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
|
5
|
+
s = arguments[i];
|
|
6
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
|
|
7
|
+
t[p] = s[p];
|
|
8
|
+
}
|
|
9
|
+
return t;
|
|
10
|
+
};
|
|
11
|
+
return __assign.apply(this, arguments);
|
|
12
|
+
};
|
|
13
|
+
var __rest = (this && this.__rest) || function (s, e) {
|
|
14
|
+
var t = {};
|
|
15
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
|
|
16
|
+
t[p] = s[p];
|
|
17
|
+
if (s != null && typeof Object.getOwnPropertySymbols === "function")
|
|
18
|
+
for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
|
|
19
|
+
if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
|
|
20
|
+
t[p[i]] = s[p[i]];
|
|
21
|
+
}
|
|
22
|
+
return t;
|
|
23
|
+
};
|
|
24
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
25
|
+
import * as AlertDialogPrimitive from "@radix-ui/react-alert-dialog";
|
|
26
|
+
import { cn } from "@myrjfa/state/dist/lib/utils";
|
|
27
|
+
import { buttonVariants } from "./button";
|
|
28
|
+
function AlertDialog(_a) {
|
|
29
|
+
var props = __rest(_a, []);
|
|
30
|
+
return _jsx(AlertDialogPrimitive.Root, __assign({ "data-slot": "alert-dialog" }, props));
|
|
31
|
+
}
|
|
32
|
+
function AlertDialogTrigger(_a) {
|
|
33
|
+
var props = __rest(_a, []);
|
|
34
|
+
return (_jsx(AlertDialogPrimitive.Trigger, __assign({ "data-slot": "alert-dialog-trigger" }, props)));
|
|
35
|
+
}
|
|
36
|
+
function AlertDialogPortal(_a) {
|
|
37
|
+
var props = __rest(_a, []);
|
|
38
|
+
return (_jsx(AlertDialogPrimitive.Portal, __assign({ "data-slot": "alert-dialog-portal" }, props)));
|
|
39
|
+
}
|
|
40
|
+
function AlertDialogOverlay(_a) {
|
|
41
|
+
var className = _a.className, props = __rest(_a, ["className"]);
|
|
42
|
+
return (_jsx(AlertDialogPrimitive.Overlay, __assign({ "data-slot": "alert-dialog-overlay", className: cn("data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 fixed inset-0 z-50 bg-black/50", className) }, props)));
|
|
43
|
+
}
|
|
44
|
+
function AlertDialogContent(_a) {
|
|
45
|
+
var className = _a.className, props = __rest(_a, ["className"]);
|
|
46
|
+
return (_jsxs(AlertDialogPortal, { children: [_jsx(AlertDialogOverlay, {}), _jsx(AlertDialogPrimitive.Content, __assign({ "data-slot": "alert-dialog-content", className: cn("bg-background data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 fixed top-[50%] left-[50%] z-50 grid w-full max-w-[calc(100%-2rem)] translate-x-[-50%] translate-y-[-50%] gap-4 rounded-lg border p-6 shadow-lg duration-200 sm:max-w-lg", className) }, props))] }));
|
|
47
|
+
}
|
|
48
|
+
function AlertDialogHeader(_a) {
|
|
49
|
+
var className = _a.className, props = __rest(_a, ["className"]);
|
|
50
|
+
return (_jsx("div", __assign({ "data-slot": "alert-dialog-header", className: cn("flex flex-col gap-2 text-center sm:text-left", className) }, props)));
|
|
51
|
+
}
|
|
52
|
+
function AlertDialogFooter(_a) {
|
|
53
|
+
var className = _a.className, props = __rest(_a, ["className"]);
|
|
54
|
+
return (_jsx("div", __assign({ "data-slot": "alert-dialog-footer", className: cn("flex flex-col-reverse gap-2 sm:flex-row sm:justify-end", className) }, props)));
|
|
55
|
+
}
|
|
56
|
+
function AlertDialogTitle(_a) {
|
|
57
|
+
var className = _a.className, props = __rest(_a, ["className"]);
|
|
58
|
+
return (_jsx(AlertDialogPrimitive.Title, __assign({ "data-slot": "alert-dialog-title", className: cn("text-lg font-semibold", className) }, props)));
|
|
59
|
+
}
|
|
60
|
+
function AlertDialogDescription(_a) {
|
|
61
|
+
var className = _a.className, props = __rest(_a, ["className"]);
|
|
62
|
+
return (_jsx(AlertDialogPrimitive.Description, __assign({ "data-slot": "alert-dialog-description", className: cn("text-muted-foreground text-sm", className) }, props)));
|
|
63
|
+
}
|
|
64
|
+
function AlertDialogAction(_a) {
|
|
65
|
+
var className = _a.className, props = __rest(_a, ["className"]);
|
|
66
|
+
return (_jsx(AlertDialogPrimitive.Action, __assign({ className: cn(buttonVariants(), className) }, props)));
|
|
67
|
+
}
|
|
68
|
+
function AlertDialogCancel(_a) {
|
|
69
|
+
var className = _a.className, props = __rest(_a, ["className"]);
|
|
70
|
+
return (_jsx(AlertDialogPrimitive.Cancel, __assign({ className: cn(buttonVariants({ variant: "outline" }), className) }, props)));
|
|
71
|
+
}
|
|
72
|
+
export { AlertDialog, AlertDialogPortal, AlertDialogOverlay, AlertDialogTrigger, AlertDialogContent, AlertDialogHeader, AlertDialogFooter, AlertDialogTitle, AlertDialogDescription, AlertDialogAction, AlertDialogCancel, };
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { type VariantProps } from "class-variance-authority";
|
|
2
|
+
declare const alertVariants: (props?: ({
|
|
3
|
+
variant?: "default" | "destructive" | null | undefined;
|
|
4
|
+
} & import("class-variance-authority/dist/types").ClassProp) | undefined) => string;
|
|
5
|
+
declare function Alert({ className, variant, ...props }: React.ComponentProps<"div"> & VariantProps<typeof alertVariants>): import("react/jsx-runtime").JSX.Element;
|
|
6
|
+
declare function AlertTitle({ className, ...props }: React.ComponentProps<"div">): import("react/jsx-runtime").JSX.Element;
|
|
7
|
+
declare function AlertDescription({ className, ...props }: React.ComponentProps<"div">): import("react/jsx-runtime").JSX.Element;
|
|
8
|
+
export { Alert, AlertTitle, AlertDescription };
|
|
9
|
+
//# sourceMappingURL=alert.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"alert.d.ts","sourceRoot":"","sources":["../../src/misc/alert.tsx"],"names":[],"mappings":"AACA,OAAO,EAAO,KAAK,YAAY,EAAE,MAAM,0BAA0B,CAAA;AAEjE,QAAA,MAAM,aAAa;;mFAclB,CAAA;AAED,iBAAS,KAAK,CAAC,EACb,SAAS,EACT,OAAO,EACP,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,GAAG,YAAY,CAAC,OAAO,aAAa,CAAC,2CASlE;AAED,iBAAS,UAAU,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,2CAWvE;AAED,iBAAS,gBAAgB,CAAC,EACxB,SAAS,EACT,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,2CAW7B;AAED,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE,gBAAgB,EAAE,CAAA"}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
var __assign = (this && this.__assign) || function () {
|
|
2
|
+
__assign = Object.assign || function(t) {
|
|
3
|
+
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
|
4
|
+
s = arguments[i];
|
|
5
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
|
|
6
|
+
t[p] = s[p];
|
|
7
|
+
}
|
|
8
|
+
return t;
|
|
9
|
+
};
|
|
10
|
+
return __assign.apply(this, arguments);
|
|
11
|
+
};
|
|
12
|
+
var __rest = (this && this.__rest) || function (s, e) {
|
|
13
|
+
var t = {};
|
|
14
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
|
|
15
|
+
t[p] = s[p];
|
|
16
|
+
if (s != null && typeof Object.getOwnPropertySymbols === "function")
|
|
17
|
+
for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
|
|
18
|
+
if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
|
|
19
|
+
t[p[i]] = s[p[i]];
|
|
20
|
+
}
|
|
21
|
+
return t;
|
|
22
|
+
};
|
|
23
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
24
|
+
import { cn } from "@myrjfa/state/dist/lib/utils";
|
|
25
|
+
import { cva } from "class-variance-authority";
|
|
26
|
+
var alertVariants = cva("relative w-full rounded-lg border px-4 py-3 text-sm grid has-[>svg]:grid-cols-[calc(var(--spacing)*4)_1fr] grid-cols-[0_1fr] has-[>svg]:gap-x-3 gap-y-0.5 items-start [&>svg]:size-4 [&>svg]:translate-y-0.5 [&>svg]:text-current", {
|
|
27
|
+
variants: {
|
|
28
|
+
variant: {
|
|
29
|
+
default: "bg-card text-card-foreground",
|
|
30
|
+
destructive: "text-destructive bg-card [&>svg]:text-current *:data-[slot=alert-description]:text-destructive/90",
|
|
31
|
+
},
|
|
32
|
+
},
|
|
33
|
+
defaultVariants: {
|
|
34
|
+
variant: "default",
|
|
35
|
+
},
|
|
36
|
+
});
|
|
37
|
+
function Alert(_a) {
|
|
38
|
+
var className = _a.className, variant = _a.variant, props = __rest(_a, ["className", "variant"]);
|
|
39
|
+
return (_jsx("div", __assign({ role: "alert", className: cn(alertVariants({ variant: variant }), className) }, props), "alert"));
|
|
40
|
+
}
|
|
41
|
+
function AlertTitle(_a) {
|
|
42
|
+
var className = _a.className, props = __rest(_a, ["className"]);
|
|
43
|
+
return (_jsx("div", __assign({ className: cn("col-start-2 line-clamp-1 min-h-4 font-medium tracking-tight", className) }, props), "alert-title"));
|
|
44
|
+
}
|
|
45
|
+
function AlertDescription(_a) {
|
|
46
|
+
var className = _a.className, props = __rest(_a, ["className"]);
|
|
47
|
+
return (_jsx("div", __assign({ className: cn("text-muted-foreground col-start-2 grid justify-items-start gap-1 text-sm [&_p]:leading-relaxed", className) }, props), "alert-description"));
|
|
48
|
+
}
|
|
49
|
+
export { Alert, AlertTitle, AlertDescription };
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { ActionButton } from '../dashboard/action-buttons';
|
|
2
|
+
interface AlertDialogProps {
|
|
3
|
+
message: string;
|
|
4
|
+
title?: string;
|
|
5
|
+
actions?: Array<ActionButton>;
|
|
6
|
+
isOpen: boolean;
|
|
7
|
+
onOpenChange: (open: boolean) => void;
|
|
8
|
+
}
|
|
9
|
+
export declare const deleteActions: (cancel: any) => ActionButton[];
|
|
10
|
+
export declare const confirmActions: (cancel: any) => ActionButton[];
|
|
11
|
+
export declare function showAlert(message: string, title?: string, actions?: Array<ActionButton>): Promise<void>;
|
|
12
|
+
export declare function AlertDialog({ message, title, actions, isOpen, onOpenChange, }: AlertDialogProps): import("react/jsx-runtime").JSX.Element;
|
|
13
|
+
export declare function AlertDialogDemo(): import("react/jsx-runtime").JSX.Element;
|
|
14
|
+
export {};
|
|
15
|
+
//# sourceMappingURL=alertdialogclaude.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"alertdialogclaude.d.ts","sourceRoot":"","sources":["../../src/misc/alertdialogclaude.tsx"],"names":[],"mappings":"AAUA,OAAO,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAE3D,UAAU,gBAAgB;IACtB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,KAAK,CAAC,YAAY,CAAC,CAAC;IAC9B,MAAM,EAAE,OAAO,CAAC;IAChB,YAAY,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAC;CACzC;AAED,eAAO,MAAM,aAAa,GAAI,QAAQ,GAAG,KAapC,YAAY,EAAE,CAAC;AAEpB,eAAO,MAAM,cAAc,GAAI,QAAQ,GAAG,KAarC,YAAY,EAAE,CAAC;AAEpB,wBAAgB,SAAS,CACrB,OAAO,EAAE,MAAM,EACf,KAAK,CAAC,EAAE,MAAM,EACd,OAAO,CAAC,EAAE,KAAK,CAAC,YAAY,CAAC,GAC9B,OAAO,CAAC,IAAI,CAAC,CAiCf;AAED,wBAAgB,WAAW,CAAC,EACxB,OAAO,EACP,KAAK,EACL,OAAY,EACZ,MAAM,EACN,YAAY,GACf,EAAE,gBAAgB,2CA0DlB;AAyBD,wBAAgB,eAAe,4CA2I9B"}
|