@myrjfa/ui 1.1.0 → 1.1.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/dist/chat/ChatMain.d.ts.map +1 -1
- package/dist/chat/ChatMain.js +173 -145
- package/dist/chat/ChatSidebar.js +7 -8
- package/dist/chat/ConversationList.d.ts.map +1 -1
- package/dist/chat/ConversationList.js +20 -18
- package/dist/chat/ExpensePanel.d.ts +4 -1
- package/dist/chat/ExpensePanel.d.ts.map +1 -1
- package/dist/chat/ExpensePanel.js +215 -195
- package/dist/chat/MessageBubble.d.ts +5 -3
- package/dist/chat/MessageBubble.d.ts.map +1 -1
- package/dist/chat/MessageBubble.js +185 -103
- package/dist/chat/MessageInput.d.ts +8 -1
- package/dist/chat/MessageInput.d.ts.map +1 -1
- package/dist/chat/MessageInput.js +182 -165
- package/dist/chat/MilestonePanel.d.ts +4 -1
- package/dist/chat/MilestonePanel.d.ts.map +1 -1
- package/dist/chat/MilestonePanel.js +150 -150
- package/dist/chat/components/ParticipantSelector.d.ts +11 -0
- package/dist/chat/components/ParticipantSelector.d.ts.map +1 -0
- package/dist/chat/components/ParticipantSelector.js +17 -0
- package/dist/chat/components/SplitInputs.d.ts +11 -0
- package/dist/chat/components/SplitInputs.d.ts.map +1 -0
- package/dist/chat/components/SplitInputs.js +83 -0
- package/dist/chat/components/SplitTypeSelector.d.ts +8 -0
- package/dist/chat/components/SplitTypeSelector.d.ts.map +1 -0
- package/dist/chat/components/SplitTypeSelector.js +13 -0
- package/dist/chat/dialogs/AddMemberDialog.js +30 -90
- package/dist/chat/dialogs/CameraDialog.js +38 -86
- package/dist/chat/dialogs/CreatePollDialog.d.ts +8 -0
- package/dist/chat/dialogs/CreatePollDialog.d.ts.map +1 -0
- package/dist/chat/dialogs/CreatePollDialog.js +38 -0
- package/dist/chat/dialogs/ExpenseAnalyticsDialog.d.ts +19 -0
- package/dist/chat/dialogs/ExpenseAnalyticsDialog.d.ts.map +1 -0
- package/dist/chat/dialogs/ExpenseAnalyticsDialog.js +52 -0
- package/dist/chat/dialogs/GroupInfoDialog.d.ts.map +1 -1
- package/dist/chat/dialogs/GroupInfoDialog.js +55 -92
- package/dist/chat/dialogs/GroupInfoViewDialog.js +5 -6
- package/dist/chat/dialogs/NewChatDialog.d.ts.map +1 -1
- package/dist/chat/dialogs/NewChatDialog.js +49 -113
- package/dist/chat/dialogs/NewGroupDialog.d.ts.map +1 -1
- package/dist/chat/dialogs/NewGroupDialog.js +49 -92
- package/dist/chat/dialogs/ParticipantsDialog.d.ts.map +1 -1
- package/dist/chat/dialogs/ParticipantsDialog.js +68 -118
- package/dist/chat/dialogs/UserProfileDialog.d.ts +10 -0
- package/dist/chat/dialogs/UserProfileDialog.d.ts.map +1 -0
- package/dist/chat/dialogs/UserProfileDialog.js +100 -0
- package/dist/dashboard/action-buttons.js +4 -5
- package/dist/dashboard/app-sidebar.js +46 -128
- package/dist/dashboard/card-header.js +1 -2
- package/dist/dashboard/dashboard-components.js +3 -5
- package/dist/dashboard/data-table.js +21 -33
- package/dist/dashboard/nav-main.js +4 -5
- package/dist/dashboard/nav-secondary.js +2 -25
- package/dist/dashboard/stats-card.js +1 -2
- package/dist/dashboard/table.js +8 -54
- package/dist/header/mobile-nav-item.js +1 -2
- package/dist/header/mobile-navbar.js +8 -9
- package/dist/header/nav-item.js +1 -2
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/main/footer.js +5 -9
- package/dist/main/navbar.js +53 -136
- package/dist/main/paginationBar.js +12 -14
- package/dist/main/portfolio/portfolioItem.js +1 -2
- package/dist/main/portfolio/portfolioPopup.js +16 -17
- package/dist/main/review-page.d.ts.map +1 -1
- package/dist/main/review-page.js +131 -198
- package/dist/misc/accordion.js +8 -34
- package/dist/misc/alert-dialog.js +22 -55
- package/dist/misc/alert.js +7 -32
- package/dist/misc/alertdialogclaude.js +50 -125
- package/dist/misc/avatar.js +6 -31
- package/dist/misc/badge.js +4 -27
- package/dist/misc/button.js +4 -27
- package/dist/misc/card.js +12 -40
- package/dist/misc/carousel.js +37 -61
- package/dist/misc/checkbox.js +2 -25
- package/dist/misc/command.js +18 -49
- package/dist/misc/datepicker.js +66 -76
- package/dist/misc/dialog.js +20 -52
- package/dist/misc/dropdown-menu.js +30 -67
- package/dist/misc/faq.js +2 -3
- package/dist/misc/file-preview.js +43 -97
- package/dist/misc/filter.d.ts.map +1 -1
- package/dist/misc/filter.js +18 -21
- package/dist/misc/filterBar.js +136 -160
- package/dist/misc/form.js +39 -60
- package/dist/misc/image-cropper.d.ts +10 -0
- package/dist/misc/image-cropper.d.ts.map +1 -0
- package/dist/misc/image-cropper.js +44 -0
- package/dist/misc/input.js +2 -25
- package/dist/misc/label.js +2 -25
- package/dist/misc/line-carousel.js +3 -13
- package/dist/misc/multiImageUploader.js +2 -3
- package/dist/misc/newsLetter.js +18 -78
- package/dist/misc/notification.d.ts +1 -2
- package/dist/misc/notification.d.ts.map +1 -1
- package/dist/misc/notification.js +89 -125
- package/dist/misc/pagination.js +16 -45
- package/dist/misc/password-eye.js +2 -3
- package/dist/misc/popover.d.ts.map +1 -1
- package/dist/misc/popover.js +8 -34
- package/dist/misc/progress.js +2 -25
- package/dist/misc/scroll-area.js +5 -29
- package/dist/misc/searchBar.js +27 -31
- package/dist/misc/searchBox.js +18 -22
- package/dist/misc/select.d.ts.map +1 -1
- package/dist/misc/select.js +22 -54
- package/dist/misc/separator.js +2 -25
- package/dist/misc/share.js +48 -104
- package/dist/misc/sheet.js +21 -53
- package/dist/misc/sidebar.js +112 -153
- package/dist/misc/skeleton.js +2 -25
- package/dist/misc/slider.js +3 -26
- package/dist/misc/starRating.js +5 -15
- package/dist/misc/stateCard.js +7 -8
- package/dist/misc/switch.d.ts +5 -0
- package/dist/misc/switch.d.ts.map +1 -0
- package/dist/misc/switch.js +8 -0
- package/dist/misc/tabs.js +8 -34
- package/dist/misc/textarea.js +2 -25
- package/dist/misc/tile.js +31 -92
- package/dist/misc/tooltip.js +8 -34
- package/dist/profile/socialLink.d.ts +1 -1
- package/dist/profile/socialLink.d.ts.map +1 -1
- package/dist/profile/socialLink.js +53 -69
- package/dist/utils/permissions.d.ts +7 -0
- package/dist/utils/permissions.d.ts.map +1 -0
- package/dist/utils/permissions.js +38 -0
- package/package.json +3 -2
package/dist/main/review-page.js
CHANGED
|
@@ -1,60 +1,4 @@
|
|
|
1
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
2
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
59
3
|
import { zodResolver } from "@hookform/resolvers/zod";
|
|
60
4
|
import { addReview, deleteReview, editReview, getReviewsById } from "@myrjfa/state/dist/lib/actions";
|
|
@@ -72,55 +16,56 @@ import { Card, CardContent, CardDescription, CardFooter, CardHeader, CardTitle }
|
|
|
72
16
|
import { Form, FormControl, FormField, FormItem, FormLabel, FormMessage, } from "../misc/form";
|
|
73
17
|
import { Separator } from "../misc/separator";
|
|
74
18
|
import { Textarea } from "../misc/textarea";
|
|
75
|
-
|
|
76
|
-
|
|
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)); }) }));
|
|
19
|
+
const StarRating = ({ value, onChange, onHover, size = 8, interactive = false }) => {
|
|
20
|
+
return (_jsx("div", { className: "flex space-x-1", children: [1, 2, 3, 4, 5].map((star) => (_jsx("button", { type: "button", onClick: () => interactive && (onChange === null || onChange === void 0 ? void 0 : onChange(star)), onMouseEnter: () => interactive && (onHover === null || onHover === void 0 ? void 0 : onHover(star)), onMouseLeave: () => interactive && (onHover === null || onHover === void 0 ? void 0 : onHover(null)), className: `focus:outline-none text-${size}xl`, children: _jsx(StarIcon, { className: `h-${size} w-${size} ${star <= value ? 'text-yellow-400 fill-yellow-400' : 'text-gray-300'}` }) }, star))) }));
|
|
78
21
|
};
|
|
79
|
-
export default function ReviewPage(
|
|
80
|
-
var
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
22
|
+
export default function ReviewPage({ title, subtitle, targetId, targetType = "opportunity", editable = false, initialReviews = [], reviewCategory = "review", }) {
|
|
23
|
+
var _a;
|
|
24
|
+
const user = useAtomValue(userAtom);
|
|
25
|
+
const loading = useAtomValue(userLoadingAtom);
|
|
26
|
+
const [review, setReview] = useState(Array.isArray(initialReviews) ? ((_a = initialReviews.find((r) => r.reviewerUsername === (user === null || user === void 0 ? void 0 : user.username))) !== null && _a !== void 0 ? _a : null) : null);
|
|
27
|
+
const [reviews, setReviews] = useState(initialReviews);
|
|
28
|
+
const [displayReviews, setDisplayReviews] = useState([]);
|
|
29
|
+
const [page, setPage] = useState(1);
|
|
30
|
+
const [hasMore, setHasMore] = useState(false);
|
|
31
|
+
const [totalCount, setTotalCount] = useState(Array.isArray(initialReviews) ? initialReviews.length : 0);
|
|
32
|
+
const [hoveredRating, setHoveredRating] = useState(null);
|
|
33
|
+
const [isSubmitting, setIsSubmitting] = useState(false);
|
|
34
|
+
const [isDeleting, setIsDeleting] = useState(false);
|
|
35
|
+
const [isFormInitialized, setIsFormInitialized] = useState(false);
|
|
36
|
+
const [isLoadingMore, setIsLoadingMore] = useState(false);
|
|
37
|
+
const form = useForm({
|
|
93
38
|
resolver: zodResolver(reviewBasicSchema),
|
|
94
39
|
defaultValues: {
|
|
95
40
|
rating: reviewCategory === "comment" ? 1 : ((review === null || review === void 0 ? void 0 : review.rating) || 0),
|
|
96
41
|
comment: (review === null || review === void 0 ? void 0 : review.comment) || "",
|
|
97
42
|
},
|
|
98
43
|
});
|
|
99
|
-
|
|
100
|
-
useEffect(
|
|
44
|
+
const ratingValue = hoveredRating !== null && hoveredRating !== void 0 ? hoveredRating : form.watch("rating");
|
|
45
|
+
useEffect(() => {
|
|
101
46
|
if (loading)
|
|
102
47
|
return;
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
}
|
|
123
|
-
}
|
|
48
|
+
const fetchData = async () => {
|
|
49
|
+
// Cast to any to bypass stale type definitions in @myrjfa/state/dist
|
|
50
|
+
const response = await getReviewsById(targetId, targetType, { page: 1, limit: 10 });
|
|
51
|
+
if (response === null || response === void 0 ? void 0 : response.error) {
|
|
52
|
+
console.error("Error: " + response.error);
|
|
53
|
+
}
|
|
54
|
+
else if (Array.isArray(response.reviews)) {
|
|
55
|
+
setReviews(response.reviews);
|
|
56
|
+
setTotalCount(response.totalCount);
|
|
57
|
+
setHasMore(response.hasMore);
|
|
58
|
+
setPage(1);
|
|
59
|
+
const myReview = response.reviews.find((r) => r.reviewerUsername === (user === null || user === void 0 ? void 0 : user.username));
|
|
60
|
+
setReview(myReview !== null && myReview !== void 0 ? myReview : null);
|
|
61
|
+
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) || "" });
|
|
62
|
+
setIsFormInitialized(true);
|
|
63
|
+
}
|
|
64
|
+
else {
|
|
65
|
+
setReviews([]);
|
|
66
|
+
setIsFormInitialized(true);
|
|
67
|
+
}
|
|
68
|
+
};
|
|
124
69
|
if (!initialReviews || initialReviews.length === 0) {
|
|
125
70
|
fetchData();
|
|
126
71
|
}
|
|
@@ -128,7 +73,28 @@ export default function ReviewPage(_a) {
|
|
|
128
73
|
setIsFormInitialized(true); // Initialize immediately if already present
|
|
129
74
|
}
|
|
130
75
|
}, [targetId, targetType, user, loading]);
|
|
131
|
-
|
|
76
|
+
const handleLoadMore = async () => {
|
|
77
|
+
if (isLoadingMore || !hasMore)
|
|
78
|
+
return;
|
|
79
|
+
setIsLoadingMore(true);
|
|
80
|
+
try {
|
|
81
|
+
const nextPage = page + 1;
|
|
82
|
+
// Cast to any to bypass stale type definitions in @myrjfa/state/dist
|
|
83
|
+
const response = await getReviewsById(targetId, targetType, { page: nextPage, limit: 10 });
|
|
84
|
+
if (response === null || response === void 0 ? void 0 : response.error) {
|
|
85
|
+
console.error("Error: " + response.error);
|
|
86
|
+
}
|
|
87
|
+
else if (Array.isArray(response.reviews)) {
|
|
88
|
+
setReviews([...reviews, ...response.reviews]);
|
|
89
|
+
setPage(nextPage);
|
|
90
|
+
setHasMore(response.hasMore);
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
finally {
|
|
94
|
+
setIsLoadingMore(false);
|
|
95
|
+
}
|
|
96
|
+
};
|
|
97
|
+
useEffect(() => {
|
|
132
98
|
if (review) {
|
|
133
99
|
form.reset({
|
|
134
100
|
rating: reviewCategory === "comment" ? 1 : review.rating,
|
|
@@ -137,110 +103,77 @@ export default function ReviewPage(_a) {
|
|
|
137
103
|
}
|
|
138
104
|
setIsFormInitialized(true);
|
|
139
105
|
}, [review]);
|
|
140
|
-
useEffect(
|
|
141
|
-
|
|
106
|
+
useEffect(() => {
|
|
107
|
+
if (Array.isArray(reviews)) {
|
|
108
|
+
setDisplayReviews(reviews.filter((r) => r.comment));
|
|
109
|
+
}
|
|
110
|
+
else {
|
|
111
|
+
setDisplayReviews([]);
|
|
112
|
+
}
|
|
142
113
|
}, [reviews]);
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
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*/];
|
|
114
|
+
const onSubmit = async (data) => {
|
|
115
|
+
setIsSubmitting(true);
|
|
116
|
+
try {
|
|
117
|
+
let response;
|
|
118
|
+
if (review) {
|
|
119
|
+
response = await editReview(review._id, data);
|
|
120
|
+
}
|
|
121
|
+
else {
|
|
122
|
+
response = await addReview(targetId, targetType, data);
|
|
186
123
|
}
|
|
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*/];
|
|
124
|
+
if (response === null || response === void 0 ? void 0 : response.error) {
|
|
125
|
+
await showAlert(response.error, `Error reviewing ${targetType}`);
|
|
233
126
|
}
|
|
234
|
-
|
|
235
|
-
|
|
127
|
+
else {
|
|
128
|
+
const newReview = response.review;
|
|
129
|
+
if (newReview) {
|
|
130
|
+
setReviews([newReview, ...reviews.filter((r) => r._id !== newReview._id)]);
|
|
131
|
+
setReview(newReview);
|
|
132
|
+
setTotalCount(prev => review ? prev : prev + 1);
|
|
133
|
+
form.reset({ rating: reviewCategory === "comment" ? 1 : newReview.rating, comment: newReview.comment || "" });
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
catch (error) {
|
|
138
|
+
console.error("Failed to submit review:", error);
|
|
139
|
+
form.setError("root", { message: "Failed to submit review. Please try again." });
|
|
140
|
+
}
|
|
141
|
+
finally {
|
|
142
|
+
setIsSubmitting(false);
|
|
143
|
+
}
|
|
144
|
+
};
|
|
145
|
+
const handleDeleteReview = async () => {
|
|
146
|
+
if (!review)
|
|
147
|
+
return;
|
|
148
|
+
let confirmed = true;
|
|
149
|
+
await showAlert("Are you sure you want to delete your review?", undefined, deleteActions(() => {
|
|
150
|
+
confirmed = false;
|
|
151
|
+
}));
|
|
152
|
+
if (!confirmed)
|
|
153
|
+
return;
|
|
154
|
+
setIsDeleting(true);
|
|
155
|
+
try {
|
|
156
|
+
const response = await deleteReview(review._id);
|
|
157
|
+
if (response === null || response === void 0 ? void 0 : response.error) {
|
|
158
|
+
await showAlert(response.error, "Error deleting review:");
|
|
159
|
+
}
|
|
160
|
+
else {
|
|
161
|
+
setReviews(reviews.filter((r) => r._id !== review._id));
|
|
162
|
+
setReview(null);
|
|
163
|
+
setTotalCount(prev => Math.max(0, prev - 1));
|
|
164
|
+
form.reset({ rating: reviewCategory === "comment" ? 1 : 0, comment: "" });
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
catch (err) {
|
|
168
|
+
console.error("Failed to delete review:", err);
|
|
169
|
+
await showAlert("Something went wrong while deleting. Please try again.");
|
|
170
|
+
}
|
|
171
|
+
finally {
|
|
172
|
+
setIsDeleting(false);
|
|
173
|
+
}
|
|
174
|
+
};
|
|
236
175
|
if (loading || !isFormInitialized)
|
|
237
176
|
return _jsx(Card, { className: "w-full h-50 flex items-center justify-center", children: "Loading Reviews..." });
|
|
238
|
-
|
|
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,
|
|
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." }) })] }));
|
|
177
|
+
const averageRating = reviews.length ? reviews.reduce((acc, r) => acc + r.rating, 0) / reviews.length : 0;
|
|
178
|
+
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, { ...form, children: _jsxs("form", { onSubmit: form.handleSubmit(onSubmit), className: "space-y-6 pb-4", children: [_jsx(FormField, { control: form.control, name: "rating", render: ({ field }) => (_jsxs(FormItem, { className: reviewCategory === "comment" ? "hidden" : "", children: [_jsx(FormLabel, { children: "Your Rating" }), _jsx(FormControl, { children: _jsx(StarRating, { value: ratingValue, onChange: (val) => field.onChange(val), onHover: setHoveredRating, interactive: true }) }), _jsx(FormMessage, {})] })) }), _jsx(FormField, { control: form.control, name: "comment", render: ({ field }) => (_jsxs(FormItem, { children: [_jsxs(FormLabel, { children: ["Your ", reviewCategory == "review" ? "Review" : "Comment"] }), _jsx(FormControl, { children: _jsx(Textarea, { placeholder: `Share your ${reviewCategory == "review" ? "experience" : "thoughts"}...`, className: "resize-none", rows: 4, ...field }) }), _jsx(FormMessage, {})] })) }), 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", " (", totalCount || 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((review) => (_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))) }), hasMore && (_jsx("div", { className: "flex justify-center mt-6", children: _jsx(Button, { variant: "outline", onClick: handleLoadMore, disabled: isLoadingMore, className: "w-full sm:w-auto", children: isLoadingMore ? "Loading more..." : "View More" }) }))] })) : (_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
179
|
}
|
package/dist/misc/accordion.js
CHANGED
|
@@ -1,44 +1,18 @@
|
|
|
1
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
2
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
25
3
|
import * as AccordionPrimitive from "@radix-ui/react-accordion";
|
|
26
4
|
import { cn } from "@myrjfa/state/dist/lib/utils";
|
|
27
5
|
import { ChevronDownIcon } from "lucide-react";
|
|
28
|
-
function Accordion(
|
|
29
|
-
|
|
30
|
-
return _jsx(AccordionPrimitive.Root, __assign({ "data-slot": "accordion" }, props));
|
|
6
|
+
function Accordion({ ...props }) {
|
|
7
|
+
return _jsx(AccordionPrimitive.Root, { "data-slot": "accordion", ...props });
|
|
31
8
|
}
|
|
32
|
-
function AccordionItem(
|
|
33
|
-
|
|
34
|
-
return (_jsx(AccordionPrimitive.Item, __assign({ "data-slot": "accordion-item", className: cn("border-b last:border-b-0", className) }, props)));
|
|
9
|
+
function AccordionItem({ className, ...props }) {
|
|
10
|
+
return (_jsx(AccordionPrimitive.Item, { "data-slot": "accordion-item", className: cn("border-b last:border-b-0", className), ...props }));
|
|
35
11
|
}
|
|
36
|
-
function AccordionTrigger(
|
|
37
|
-
|
|
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" })] })) }));
|
|
12
|
+
function AccordionTrigger({ className, children, ...props }) {
|
|
13
|
+
return (_jsx(AccordionPrimitive.Header, { className: "flex", children: _jsxs(AccordionPrimitive.Trigger, { "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
14
|
}
|
|
40
|
-
function AccordionContent(
|
|
41
|
-
|
|
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 }) })));
|
|
15
|
+
function AccordionContent({ className, children, ...props }) {
|
|
16
|
+
return (_jsx(AccordionPrimitive.Content, { "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
17
|
}
|
|
44
18
|
export { Accordion, AccordionItem, AccordionTrigger, AccordionContent };
|
|
@@ -1,72 +1,39 @@
|
|
|
1
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
2
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
25
3
|
import * as AlertDialogPrimitive from "@radix-ui/react-alert-dialog";
|
|
26
4
|
import { cn } from "@myrjfa/state/dist/lib/utils";
|
|
27
5
|
import { buttonVariants } from "./button";
|
|
28
|
-
function AlertDialog(
|
|
29
|
-
|
|
30
|
-
return _jsx(AlertDialogPrimitive.Root, __assign({ "data-slot": "alert-dialog" }, props));
|
|
6
|
+
function AlertDialog({ ...props }) {
|
|
7
|
+
return _jsx(AlertDialogPrimitive.Root, { "data-slot": "alert-dialog", ...props });
|
|
31
8
|
}
|
|
32
|
-
function AlertDialogTrigger(
|
|
33
|
-
|
|
34
|
-
return (_jsx(AlertDialogPrimitive.Trigger, __assign({ "data-slot": "alert-dialog-trigger" }, props)));
|
|
9
|
+
function AlertDialogTrigger({ ...props }) {
|
|
10
|
+
return (_jsx(AlertDialogPrimitive.Trigger, { "data-slot": "alert-dialog-trigger", ...props }));
|
|
35
11
|
}
|
|
36
|
-
function AlertDialogPortal(
|
|
37
|
-
|
|
38
|
-
return (_jsx(AlertDialogPrimitive.Portal, __assign({ "data-slot": "alert-dialog-portal" }, props)));
|
|
12
|
+
function AlertDialogPortal({ ...props }) {
|
|
13
|
+
return (_jsx(AlertDialogPrimitive.Portal, { "data-slot": "alert-dialog-portal", ...props }));
|
|
39
14
|
}
|
|
40
|
-
function AlertDialogOverlay(
|
|
41
|
-
|
|
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)));
|
|
15
|
+
function AlertDialogOverlay({ className, ...props }) {
|
|
16
|
+
return (_jsx(AlertDialogPrimitive.Overlay, { "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
17
|
}
|
|
44
|
-
function AlertDialogContent(
|
|
45
|
-
|
|
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))] }));
|
|
18
|
+
function AlertDialogContent({ className, ...props }) {
|
|
19
|
+
return (_jsxs(AlertDialogPortal, { children: [_jsx(AlertDialogOverlay, {}), _jsx(AlertDialogPrimitive.Content, { "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
20
|
}
|
|
48
|
-
function AlertDialogHeader(
|
|
49
|
-
|
|
50
|
-
return (_jsx("div", __assign({ "data-slot": "alert-dialog-header", className: cn("flex flex-col gap-2 text-center sm:text-left", className) }, props)));
|
|
21
|
+
function AlertDialogHeader({ className, ...props }) {
|
|
22
|
+
return (_jsx("div", { "data-slot": "alert-dialog-header", className: cn("flex flex-col gap-2 text-center sm:text-left", className), ...props }));
|
|
51
23
|
}
|
|
52
|
-
function AlertDialogFooter(
|
|
53
|
-
|
|
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)));
|
|
24
|
+
function AlertDialogFooter({ className, ...props }) {
|
|
25
|
+
return (_jsx("div", { "data-slot": "alert-dialog-footer", className: cn("flex flex-col-reverse gap-2 sm:flex-row sm:justify-end", className), ...props }));
|
|
55
26
|
}
|
|
56
|
-
function AlertDialogTitle(
|
|
57
|
-
|
|
58
|
-
return (_jsx(AlertDialogPrimitive.Title, __assign({ "data-slot": "alert-dialog-title", className: cn("text-lg font-semibold", className) }, props)));
|
|
27
|
+
function AlertDialogTitle({ className, ...props }) {
|
|
28
|
+
return (_jsx(AlertDialogPrimitive.Title, { "data-slot": "alert-dialog-title", className: cn("text-lg font-semibold", className), ...props }));
|
|
59
29
|
}
|
|
60
|
-
function AlertDialogDescription(
|
|
61
|
-
|
|
62
|
-
return (_jsx(AlertDialogPrimitive.Description, __assign({ "data-slot": "alert-dialog-description", className: cn("text-muted-foreground text-sm", className) }, props)));
|
|
30
|
+
function AlertDialogDescription({ className, ...props }) {
|
|
31
|
+
return (_jsx(AlertDialogPrimitive.Description, { "data-slot": "alert-dialog-description", className: cn("text-muted-foreground text-sm", className), ...props }));
|
|
63
32
|
}
|
|
64
|
-
function AlertDialogAction(
|
|
65
|
-
|
|
66
|
-
return (_jsx(AlertDialogPrimitive.Action, __assign({ className: cn(buttonVariants(), className) }, props)));
|
|
33
|
+
function AlertDialogAction({ className, ...props }) {
|
|
34
|
+
return (_jsx(AlertDialogPrimitive.Action, { className: cn(buttonVariants(), className), ...props }));
|
|
67
35
|
}
|
|
68
|
-
function AlertDialogCancel(
|
|
69
|
-
|
|
70
|
-
return (_jsx(AlertDialogPrimitive.Cancel, __assign({ className: cn(buttonVariants({ variant: "outline" }), className) }, props)));
|
|
36
|
+
function AlertDialogCancel({ className, ...props }) {
|
|
37
|
+
return (_jsx(AlertDialogPrimitive.Cancel, { className: cn(buttonVariants({ variant: "outline" }), className), ...props }));
|
|
71
38
|
}
|
|
72
39
|
export { AlertDialog, AlertDialogPortal, AlertDialogOverlay, AlertDialogTrigger, AlertDialogContent, AlertDialogHeader, AlertDialogFooter, AlertDialogTitle, AlertDialogDescription, AlertDialogAction, AlertDialogCancel, };
|
package/dist/misc/alert.js
CHANGED
|
@@ -1,29 +1,7 @@
|
|
|
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
1
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
24
2
|
import { cn } from "@myrjfa/state/dist/lib/utils";
|
|
25
3
|
import { cva } from "class-variance-authority";
|
|
26
|
-
|
|
4
|
+
const 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
5
|
variants: {
|
|
28
6
|
variant: {
|
|
29
7
|
default: "bg-card text-card-foreground",
|
|
@@ -34,16 +12,13 @@ var alertVariants = cva("relative w-full rounded-lg border px-4 py-3 text-sm gri
|
|
|
34
12
|
variant: "default",
|
|
35
13
|
},
|
|
36
14
|
});
|
|
37
|
-
function Alert(
|
|
38
|
-
|
|
39
|
-
return (_jsx("div", __assign({ role: "alert", className: cn(alertVariants({ variant: variant }), className) }, props), "alert"));
|
|
15
|
+
function Alert({ className, variant, ...props }) {
|
|
16
|
+
return (_jsx("div", { role: "alert", className: cn(alertVariants({ variant }), className), ...props }, "alert"));
|
|
40
17
|
}
|
|
41
|
-
function AlertTitle(
|
|
42
|
-
|
|
43
|
-
return (_jsx("div", __assign({ className: cn("col-start-2 line-clamp-1 min-h-4 font-medium tracking-tight", className) }, props), "alert-title"));
|
|
18
|
+
function AlertTitle({ className, ...props }) {
|
|
19
|
+
return (_jsx("div", { className: cn("col-start-2 line-clamp-1 min-h-4 font-medium tracking-tight", className), ...props }, "alert-title"));
|
|
44
20
|
}
|
|
45
|
-
function AlertDescription(
|
|
46
|
-
|
|
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"));
|
|
21
|
+
function AlertDescription({ className, ...props }) {
|
|
22
|
+
return (_jsx("div", { className: cn("text-muted-foreground col-start-2 grid justify-items-start gap-1 text-sm [&_p]:leading-relaxed", className), ...props }, "alert-description"));
|
|
48
23
|
}
|
|
49
24
|
export { Alert, AlertTitle, AlertDescription };
|