@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,87 +1 @@
|
|
|
1
|
-
"use strict";
|
|
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 __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
14
|
-
if (k2 === undefined) k2 = k;
|
|
15
|
-
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
16
|
-
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
17
|
-
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
18
|
-
}
|
|
19
|
-
Object.defineProperty(o, k2, desc);
|
|
20
|
-
}) : (function(o, m, k, k2) {
|
|
21
|
-
if (k2 === undefined) k2 = k;
|
|
22
|
-
o[k2] = m[k];
|
|
23
|
-
}));
|
|
24
|
-
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
25
|
-
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
26
|
-
}) : function(o, v) {
|
|
27
|
-
o["default"] = v;
|
|
28
|
-
});
|
|
29
|
-
var __importStar = (this && this.__importStar) || (function () {
|
|
30
|
-
var ownKeys = function(o) {
|
|
31
|
-
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
32
|
-
var ar = [];
|
|
33
|
-
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
34
|
-
return ar;
|
|
35
|
-
};
|
|
36
|
-
return ownKeys(o);
|
|
37
|
-
};
|
|
38
|
-
return function (mod) {
|
|
39
|
-
if (mod && mod.__esModule) return mod;
|
|
40
|
-
var result = {};
|
|
41
|
-
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
42
|
-
__setModuleDefault(result, mod);
|
|
43
|
-
return result;
|
|
44
|
-
};
|
|
45
|
-
})();
|
|
46
|
-
var __rest = (this && this.__rest) || function (s, e) {
|
|
47
|
-
var t = {};
|
|
48
|
-
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
|
|
49
|
-
t[p] = s[p];
|
|
50
|
-
if (s != null && typeof Object.getOwnPropertySymbols === "function")
|
|
51
|
-
for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
|
|
52
|
-
if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
|
|
53
|
-
t[p[i]] = s[p[i]];
|
|
54
|
-
}
|
|
55
|
-
return t;
|
|
56
|
-
};
|
|
57
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
58
|
-
exports.EnhancedTextarea = void 0;
|
|
59
|
-
var React = __importStar(require("react"));
|
|
60
|
-
var utils_1 = require("../lib/utils");
|
|
61
|
-
var textarea_1 = require("./ui/textarea");
|
|
62
|
-
var enhanced_label_1 = require("./enhanced-label");
|
|
63
|
-
var EnhancedTextarea = React.forwardRef(function (_a, ref) {
|
|
64
|
-
var className = _a.className, error = _a.error, info = _a.info, label = _a.label, required = _a.required, id = _a.id, testIdWrapper = _a.testIdWrapper, testIdLabel = _a.testIdLabel, testIdTextarea = _a.testIdTextarea, testIdMessage = _a.testIdMessage, testIdError = _a.testIdError, testIdInfo = _a.testIdInfo, props = __rest(_a, ["className", "error", "info", "label", "required", "id", "testIdWrapper", "testIdLabel", "testIdTextarea", "testIdMessage", "testIdError", "testIdInfo"]);
|
|
65
|
-
// Determine if there's an error (for aria-invalid and styling)
|
|
66
|
-
var hasError = Boolean(error);
|
|
67
|
-
var textareaElement = (React.createElement(textarea_1.Textarea, __assign({ ref: ref, id: id, "data-testid": testIdTextarea, "aria-invalid": hasError, required: required, className: (0, utils_1.cn)(
|
|
68
|
-
// Error state styling
|
|
69
|
-
hasError &&
|
|
70
|
-
"border-destructive focus-visible:border-destructive focus-visible:ring-destructive/20",
|
|
71
|
-
// Normal state when no error
|
|
72
|
-
!hasError &&
|
|
73
|
-
"aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive", className) }, props)));
|
|
74
|
-
// If label is provided, render the complete textarea with label structure
|
|
75
|
-
if (label) {
|
|
76
|
-
return (React.createElement("div", { className: "w-full space-y-2", "data-testid": testIdWrapper },
|
|
77
|
-
React.createElement(enhanced_label_1.EnhancedLabel, { htmlFor: id, required: required, testIdLabel: testIdLabel }, label),
|
|
78
|
-
textareaElement,
|
|
79
|
-
(error || info) && (React.createElement("div", { "data-testid": testIdMessage }, error ? (React.createElement("p", { className: "text-xs text-destructive", "data-testid": testIdError }, error)) : info ? (React.createElement("p", { className: "text-xs text-blue-600 dark:text-blue-400", "data-testid": testIdInfo }, info)) : null))));
|
|
80
|
-
}
|
|
81
|
-
// If no label, render just the textarea with messages (backward compatibility)
|
|
82
|
-
return (React.createElement("div", { className: "w-full", "data-testid": testIdWrapper },
|
|
83
|
-
textareaElement,
|
|
84
|
-
(error || info) && (React.createElement("div", { "data-testid": testIdMessage }, error ? (React.createElement("p", { className: "text-xs text-destructive", "data-testid": testIdError }, error)) : info ? (React.createElement("p", { className: "text-xs text-blue-600 dark:text-blue-400", "data-testid": testIdInfo }, info)) : null))));
|
|
85
|
-
});
|
|
86
|
-
exports.EnhancedTextarea = EnhancedTextarea;
|
|
87
|
-
EnhancedTextarea.displayName = "EnhancedTextarea";
|
|
1
|
+
"use strict";var I=function(a,d){var s={};for(var e in a)Object.prototype.hasOwnProperty.call(a,e)&&d.indexOf(e)<0&&(s[e]=a[e]);if(a!=null&&typeof Object.getOwnPropertySymbols=="function")for(var t=0,e=Object.getOwnPropertySymbols(a);t<e.length;t++)d.indexOf(e[t])<0&&Object.prototype.propertyIsEnumerable.call(a,e[t])&&(s[e[t]]=a[e[t]]);return s};import*as r from"react";import{cn as y}from"../lib/utils";import{Textarea as N}from"./ui/textarea";import{EnhancedLabel as O}from"./enhanced-label";const b=r.forwardRef((a,d)=>{var{className:s,error:e,info:t,label:l,required:n,id:c,testIdWrapper:o,testIdLabel:v,testIdTextarea:x,testIdMessage:m,testIdError:u,testIdInfo:f}=a,E=I(a,["className","error","info","label","required","id","testIdWrapper","testIdLabel","testIdTextarea","testIdMessage","testIdError","testIdInfo"]);const i=!!e,p=r.createElement(N,Object.assign({ref:d,id:c,"data-testid":x,"aria-invalid":i,required:n,className:y(i&&"border-destructive focus-visible:border-destructive focus-visible:ring-destructive/20",!i&&"aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive",s)},E));return l?r.createElement("div",{className:"w-full space-y-2","data-testid":o},r.createElement(O,{htmlFor:c,required:n,testIdLabel:v},l),p,(e||t)&&r.createElement("div",{"data-testid":m},e?r.createElement("p",{className:"text-xs text-destructive","data-testid":u},e):t?r.createElement("p",{className:"text-xs text-blue-600 dark:text-blue-400","data-testid":f},t):null)):r.createElement("div",{className:"w-full","data-testid":o},p,(e||t)&&r.createElement("div",{"data-testid":m},e?r.createElement("p",{className:"text-xs text-destructive","data-testid":u},e):t?r.createElement("p",{className:"text-xs text-blue-600 dark:text-blue-400","data-testid":f},t):null))});b.displayName="EnhancedTextarea";export{b as EnhancedTextarea};
|
package/components/field.d.ts
CHANGED
|
@@ -8,7 +8,7 @@ declare function FieldLegend({ className, variant, ...props }: React.ComponentPr
|
|
|
8
8
|
declare function FieldGroup({ className, ...props }: React.ComponentProps<"div">): React.JSX.Element;
|
|
9
9
|
declare const fieldVariants: (props?: ({
|
|
10
10
|
orientation?: "horizontal" | "vertical" | "responsive" | null | undefined;
|
|
11
|
-
} & import("class-variance-authority/
|
|
11
|
+
} & import("class-variance-authority/types").ClassProp) | undefined) => string;
|
|
12
12
|
declare function Field({ className, orientation, ...props }: React.ComponentProps<"div"> & VariantProps<typeof fieldVariants>): React.JSX.Element;
|
|
13
13
|
declare function FieldContent({ className, ...props }: React.ComponentProps<"div">): React.JSX.Element;
|
|
14
14
|
declare function FieldLabel({ className, ...props }: React.ComponentProps<typeof Label>): React.JSX.Element;
|
package/components/field.js
CHANGED
|
@@ -1,153 +1 @@
|
|
|
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.Field = Field;
|
|
60
|
-
exports.FieldLabel = FieldLabel;
|
|
61
|
-
exports.FieldDescription = FieldDescription;
|
|
62
|
-
exports.FieldError = FieldError;
|
|
63
|
-
exports.FieldGroup = FieldGroup;
|
|
64
|
-
exports.FieldLegend = FieldLegend;
|
|
65
|
-
exports.FieldSeparator = FieldSeparator;
|
|
66
|
-
exports.FieldSet = FieldSet;
|
|
67
|
-
exports.FieldContent = FieldContent;
|
|
68
|
-
exports.FieldTitle = FieldTitle;
|
|
69
|
-
var react_1 = __importStar(require("react"));
|
|
70
|
-
var class_variance_authority_1 = require("class-variance-authority");
|
|
71
|
-
var utils_1 = require("../lib/utils");
|
|
72
|
-
var label_1 = require("./ui/label");
|
|
73
|
-
var separator_1 = require("./ui/separator");
|
|
74
|
-
function FieldSet(_a) {
|
|
75
|
-
var className = _a.className, props = __rest(_a, ["className"]);
|
|
76
|
-
return (react_1.default.createElement("fieldset", __assign({ "data-slot": "field-set", className: (0, utils_1.cn)("flex flex-col gap-6", "has-[>[data-slot=checkbox-group]]:gap-3 has-[>[data-slot=radio-group]]:gap-3", className) }, props)));
|
|
77
|
-
}
|
|
78
|
-
function FieldLegend(_a) {
|
|
79
|
-
var className = _a.className, _b = _a.variant, variant = _b === void 0 ? "legend" : _b, props = __rest(_a, ["className", "variant"]);
|
|
80
|
-
return (react_1.default.createElement("legend", __assign({ "data-slot": "field-legend", "data-variant": variant, className: (0, utils_1.cn)("mb-3 font-medium", "data-[variant=legend]:text-base", "data-[variant=label]:text-sm", className) }, props)));
|
|
81
|
-
}
|
|
82
|
-
function FieldGroup(_a) {
|
|
83
|
-
var className = _a.className, props = __rest(_a, ["className"]);
|
|
84
|
-
return (react_1.default.createElement("div", __assign({ "data-slot": "field-group", className: (0, utils_1.cn)("group/field-group @container/field-group flex w-full flex-col gap-7 data-[slot=checkbox-group]:gap-3 [&>[data-slot=field-group]]:gap-4", className) }, props)));
|
|
85
|
-
}
|
|
86
|
-
var fieldVariants = (0, class_variance_authority_1.cva)("group/field data-[invalid=true]:text-destructive flex w-full gap-3", {
|
|
87
|
-
variants: {
|
|
88
|
-
orientation: {
|
|
89
|
-
vertical: ["flex-col [&>*]:w-full [&>.sr-only]:w-auto"],
|
|
90
|
-
horizontal: [
|
|
91
|
-
"flex-row items-center",
|
|
92
|
-
"[&>[data-slot=field-label]]:flex-auto",
|
|
93
|
-
"has-[>[data-slot=field-content]]:[&>[role=checkbox],[role=radio]]:mt-px has-[>[data-slot=field-content]]:items-start",
|
|
94
|
-
],
|
|
95
|
-
responsive: [
|
|
96
|
-
"@md/field-group:flex-row @md/field-group:items-center @md/field-group:[&>*]:w-auto flex-col [&>*]:w-full [&>.sr-only]:w-auto",
|
|
97
|
-
"@md/field-group:[&>[data-slot=field-label]]:flex-auto",
|
|
98
|
-
"@md/field-group:has-[>[data-slot=field-content]]:items-start @md/field-group:has-[>[data-slot=field-content]]:[&>[role=checkbox],[role=radio]]:mt-px",
|
|
99
|
-
],
|
|
100
|
-
},
|
|
101
|
-
},
|
|
102
|
-
defaultVariants: {
|
|
103
|
-
orientation: "vertical",
|
|
104
|
-
},
|
|
105
|
-
});
|
|
106
|
-
function Field(_a) {
|
|
107
|
-
var className = _a.className, _b = _a.orientation, orientation = _b === void 0 ? "vertical" : _b, props = __rest(_a, ["className", "orientation"]);
|
|
108
|
-
return (react_1.default.createElement("div", __assign({ role: "group", "data-slot": "field", "data-orientation": orientation, className: (0, utils_1.cn)(fieldVariants({ orientation: orientation }), className) }, props)));
|
|
109
|
-
}
|
|
110
|
-
function FieldContent(_a) {
|
|
111
|
-
var className = _a.className, props = __rest(_a, ["className"]);
|
|
112
|
-
return (react_1.default.createElement("div", __assign({ "data-slot": "field-content", className: (0, utils_1.cn)("group/field-content flex flex-1 flex-col gap-1.5 leading-snug", className) }, props)));
|
|
113
|
-
}
|
|
114
|
-
function FieldLabel(_a) {
|
|
115
|
-
var className = _a.className, props = __rest(_a, ["className"]);
|
|
116
|
-
return (react_1.default.createElement(label_1.Label, __assign({ "data-slot": "field-label", className: (0, utils_1.cn)("group/field-label peer/field-label flex w-fit gap-2 leading-snug group-data-[disabled=true]/field:opacity-50", "has-[>[data-slot=field]]:w-full has-[>[data-slot=field]]:flex-col has-[>[data-slot=field]]:rounded-md has-[>[data-slot=field]]:border [&>[data-slot=field]]:p-4", "has-data-[state=checked]:bg-primary/5 has-data-[state=checked]:border-primary dark:has-data-[state=checked]:bg-primary/10", className) }, props)));
|
|
117
|
-
}
|
|
118
|
-
function FieldTitle(_a) {
|
|
119
|
-
var className = _a.className, props = __rest(_a, ["className"]);
|
|
120
|
-
return (react_1.default.createElement("div", __assign({ "data-slot": "field-label", className: (0, utils_1.cn)("flex w-fit items-center gap-2 text-sm font-medium leading-snug group-data-[disabled=true]/field:opacity-50", className) }, props)));
|
|
121
|
-
}
|
|
122
|
-
function FieldDescription(_a) {
|
|
123
|
-
var className = _a.className, props = __rest(_a, ["className"]);
|
|
124
|
-
return (react_1.default.createElement("p", __assign({ "data-slot": "field-description", className: (0, utils_1.cn)("text-muted-foreground text-sm font-normal leading-normal group-has-[[data-orientation=horizontal]]/field:text-balance", "nth-last-2:-mt-1 last:mt-0 [[data-variant=legend]+&]:-mt-1.5", "[&>a:hover]:text-primary [&>a]:underline [&>a]:underline-offset-4", className) }, props)));
|
|
125
|
-
}
|
|
126
|
-
function FieldSeparator(_a) {
|
|
127
|
-
var children = _a.children, className = _a.className, props = __rest(_a, ["children", "className"]);
|
|
128
|
-
return (react_1.default.createElement("div", __assign({ "data-slot": "field-separator", "data-content": !!children, className: (0, utils_1.cn)("relative -my-2 h-5 text-sm group-data-[variant=outline]/field-group:-mb-2", className) }, props),
|
|
129
|
-
react_1.default.createElement(separator_1.Separator, { className: "absolute inset-0 top-1/2" }),
|
|
130
|
-
children && (react_1.default.createElement("span", { className: "bg-background text-muted-foreground relative mx-auto block w-fit px-2", "data-slot": "field-separator-content" }, children))));
|
|
131
|
-
}
|
|
132
|
-
function FieldError(_a) {
|
|
133
|
-
var className = _a.className, children = _a.children, errors = _a.errors, props = __rest(_a, ["className", "children", "errors"]);
|
|
134
|
-
var content = (0, react_1.useMemo)(function () {
|
|
135
|
-
var _a;
|
|
136
|
-
if (children) {
|
|
137
|
-
return children;
|
|
138
|
-
}
|
|
139
|
-
if (!errors) {
|
|
140
|
-
return null;
|
|
141
|
-
}
|
|
142
|
-
if ((errors === null || errors === void 0 ? void 0 : errors.length) === 1 && ((_a = errors[0]) === null || _a === void 0 ? void 0 : _a.message)) {
|
|
143
|
-
return errors[0].message;
|
|
144
|
-
}
|
|
145
|
-
return (react_1.default.createElement("ul", { className: "ml-4 flex list-disc flex-col gap-1" }, errors.map(function (error, index) {
|
|
146
|
-
return (error === null || error === void 0 ? void 0 : error.message) && react_1.default.createElement("li", { key: index }, error.message);
|
|
147
|
-
})));
|
|
148
|
-
}, [children, errors]);
|
|
149
|
-
if (!content) {
|
|
150
|
-
return null;
|
|
151
|
-
}
|
|
152
|
-
return (react_1.default.createElement("div", __assign({ role: "alert", "data-slot": "field-error", className: (0, utils_1.cn)("text-destructive text-sm font-normal", className) }, props), content));
|
|
153
|
-
}
|
|
1
|
+
"use strict";"use client";var s=function(e,l){var a={};for(var t in e)Object.prototype.hasOwnProperty.call(e,t)&&l.indexOf(t)<0&&(a[t]=e[t]);if(e!=null&&typeof Object.getOwnPropertySymbols=="function")for(var n=0,t=Object.getOwnPropertySymbols(e);n<t.length;n++)l.indexOf(t[n])<0&&Object.prototype.propertyIsEnumerable.call(e,t[n])&&(a[t[n]]=e[t[n]]);return a};import r,{useMemo as m}from"react";import{cva as u}from"class-variance-authority";import{cn as o}from"../lib/utils";import{Label as p}from"./ui/label";import{Separator as g}from"./ui/separator";function v(e){var{className:l}=e,a=s(e,["className"]);return r.createElement("fieldset",Object.assign({"data-slot":"field-set",className:o("flex flex-col gap-6","has-[>[data-slot=checkbox-group]]:gap-3 has-[>[data-slot=radio-group]]:gap-3",l)},a))}function b(e){var{className:l,variant:a="legend"}=e,t=s(e,["className","variant"]);return r.createElement("legend",Object.assign({"data-slot":"field-legend","data-variant":a,className:o("mb-3 font-medium","data-[variant=legend]:text-base","data-[variant=label]:text-sm",l)},t))}function x(e){var{className:l}=e,a=s(e,["className"]);return r.createElement("div",Object.assign({"data-slot":"field-group",className:o("group/field-group @container/field-group flex w-full flex-col gap-7 data-[slot=checkbox-group]:gap-3 [&>[data-slot=field-group]]:gap-4",l)},a))}const h=u("group/field data-[invalid=true]:text-destructive flex w-full gap-3",{variants:{orientation:{vertical:["flex-col [&>*]:w-full [&>.sr-only]:w-auto"],horizontal:["flex-row items-center","[&>[data-slot=field-label]]:flex-auto","has-[>[data-slot=field-content]]:[&>[role=checkbox],[role=radio]]:mt-px has-[>[data-slot=field-content]]:items-start"],responsive:["@md/field-group:flex-row @md/field-group:items-center @md/field-group:[&>*]:w-auto flex-col [&>*]:w-full [&>.sr-only]:w-auto","@md/field-group:[&>[data-slot=field-label]]:flex-auto","@md/field-group:has-[>[data-slot=field-content]]:items-start @md/field-group:has-[>[data-slot=field-content]]:[&>[role=checkbox],[role=radio]]:mt-px"]}},defaultVariants:{orientation:"vertical"}});function N(e){var{className:l,orientation:a="vertical"}=e,t=s(e,["className","orientation"]);return r.createElement("div",Object.assign({role:"group","data-slot":"field","data-orientation":a,className:o(h({orientation:a}),l)},t))}function y(e){var{className:l}=e,a=s(e,["className"]);return r.createElement("div",Object.assign({"data-slot":"field-content",className:o("group/field-content flex flex-1 flex-col gap-1.5 leading-snug",l)},a))}function O(e){var{className:l}=e,a=s(e,["className"]);return r.createElement(p,Object.assign({"data-slot":"field-label",className:o("group/field-label peer/field-label flex w-fit gap-2 leading-snug group-data-[disabled=true]/field:opacity-50","has-[>[data-slot=field]]:w-full has-[>[data-slot=field]]:flex-col has-[>[data-slot=field]]:rounded-md has-[>[data-slot=field]]:border [&>[data-slot=field]]:p-4","has-data-[state=checked]:bg-primary/5 has-data-[state=checked]:border-primary dark:has-data-[state=checked]:bg-primary/10",l)},a))}function w(e){var{className:l}=e,a=s(e,["className"]);return r.createElement("div",Object.assign({"data-slot":"field-label",className:o("flex w-fit items-center gap-2 text-sm font-medium leading-snug group-data-[disabled=true]/field:opacity-50",l)},a))}function E(e){var{className:l}=e,a=s(e,["className"]);return r.createElement("p",Object.assign({"data-slot":"field-description",className:o("text-muted-foreground text-sm font-normal leading-normal group-has-[[data-orientation=horizontal]]/field:text-balance","nth-last-2:-mt-1 last:mt-0 [[data-variant=legend]+&]:-mt-1.5","[&>a:hover]:text-primary [&>a]:underline [&>a]:underline-offset-4",l)},a))}function j(e){var{children:l,className:a}=e,t=s(e,["children","className"]);return r.createElement("div",Object.assign({"data-slot":"field-separator","data-content":!!l,className:o("relative -my-2 h-5 text-sm group-data-[variant=outline]/field-group:-mb-2",a)},t),r.createElement(g,{className:"absolute inset-0 top-1/2"}),l&&r.createElement("span",{className:"bg-background text-muted-foreground relative mx-auto block w-fit px-2","data-slot":"field-separator-content"},l))}function k(e){var{className:l,children:a,errors:t}=e,n=s(e,["className","children","errors"]);const c=m(()=>{var d;return a||(t?t?.length===1&&(!((d=t[0])===null||d===void 0)&&d.message)?t[0].message:r.createElement("ul",{className:"ml-4 flex list-disc flex-col gap-1"},t.map((i,f)=>i?.message&&r.createElement("li",{key:f},i.message))):null)},[a,t]);return c?r.createElement("div",Object.assign({role:"alert","data-slot":"field-error",className:o("text-destructive text-sm font-normal",l)},n),c):null}export{N as Field,O as FieldLabel,E as FieldDescription,k as FieldError,x as FieldGroup,b as FieldLegend,j as FieldSeparator,v as FieldSet,y as FieldContent,w as FieldTitle};
|
|
@@ -1,180 +1 @@
|
|
|
1
|
-
"use client";
|
|
2
|
-
"use strict";
|
|
3
|
-
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
4
|
-
if (k2 === undefined) k2 = k;
|
|
5
|
-
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
6
|
-
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
7
|
-
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
8
|
-
}
|
|
9
|
-
Object.defineProperty(o, k2, desc);
|
|
10
|
-
}) : (function(o, m, k, k2) {
|
|
11
|
-
if (k2 === undefined) k2 = k;
|
|
12
|
-
o[k2] = m[k];
|
|
13
|
-
}));
|
|
14
|
-
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
15
|
-
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
16
|
-
}) : function(o, v) {
|
|
17
|
-
o["default"] = v;
|
|
18
|
-
});
|
|
19
|
-
var __importStar = (this && this.__importStar) || (function () {
|
|
20
|
-
var ownKeys = function(o) {
|
|
21
|
-
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
22
|
-
var ar = [];
|
|
23
|
-
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
24
|
-
return ar;
|
|
25
|
-
};
|
|
26
|
-
return ownKeys(o);
|
|
27
|
-
};
|
|
28
|
-
return function (mod) {
|
|
29
|
-
if (mod && mod.__esModule) return mod;
|
|
30
|
-
var result = {};
|
|
31
|
-
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
32
|
-
__setModuleDefault(result, mod);
|
|
33
|
-
return result;
|
|
34
|
-
};
|
|
35
|
-
})();
|
|
36
|
-
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
37
|
-
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
38
|
-
return new (P || (P = Promise))(function (resolve, reject) {
|
|
39
|
-
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
40
|
-
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
41
|
-
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
42
|
-
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
43
|
-
});
|
|
44
|
-
};
|
|
45
|
-
var __generator = (this && this.__generator) || function (thisArg, body) {
|
|
46
|
-
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);
|
|
47
|
-
return g.next = verb(0), g["throw"] = verb(1), g["return"] = verb(2), typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
|
|
48
|
-
function verb(n) { return function (v) { return step([n, v]); }; }
|
|
49
|
-
function step(op) {
|
|
50
|
-
if (f) throw new TypeError("Generator is already executing.");
|
|
51
|
-
while (g && (g = 0, op[0] && (_ = 0)), _) try {
|
|
52
|
-
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;
|
|
53
|
-
if (y = 0, t) op = [op[0] & 2, t.value];
|
|
54
|
-
switch (op[0]) {
|
|
55
|
-
case 0: case 1: t = op; break;
|
|
56
|
-
case 4: _.label++; return { value: op[1], done: false };
|
|
57
|
-
case 5: _.label++; y = op[1]; op = [0]; continue;
|
|
58
|
-
case 7: op = _.ops.pop(); _.trys.pop(); continue;
|
|
59
|
-
default:
|
|
60
|
-
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
|
|
61
|
-
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
|
|
62
|
-
if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
|
|
63
|
-
if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
|
|
64
|
-
if (t[2]) _.ops.pop();
|
|
65
|
-
_.trys.pop(); continue;
|
|
66
|
-
}
|
|
67
|
-
op = body.call(thisArg, _);
|
|
68
|
-
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
|
|
69
|
-
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
|
|
70
|
-
}
|
|
71
|
-
};
|
|
72
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
73
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
74
|
-
};
|
|
75
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
76
|
-
exports.ImageResizeDialog = void 0;
|
|
77
|
-
var react_1 = __importStar(require("react"));
|
|
78
|
-
var react_easy_crop_1 = __importDefault(require("react-easy-crop"));
|
|
79
|
-
var dialog_1 = require("./ui/dialog");
|
|
80
|
-
var button_1 = require("./ui/button");
|
|
81
|
-
var slider_1 = require("./ui/slider");
|
|
82
|
-
/**
|
|
83
|
-
* Create a cropped image from the provided source and crop area.
|
|
84
|
-
*/
|
|
85
|
-
function getCroppedImg(imageSrc_1, pixelCrop_1) {
|
|
86
|
-
return __awaiter(this, arguments, void 0, function (imageSrc, pixelCrop, fileName) {
|
|
87
|
-
var image, canvas, ctx;
|
|
88
|
-
if (fileName === void 0) { fileName = "cropped-image.jpg"; }
|
|
89
|
-
return __generator(this, function (_a) {
|
|
90
|
-
switch (_a.label) {
|
|
91
|
-
case 0: return [4 /*yield*/, createImage(imageSrc)];
|
|
92
|
-
case 1:
|
|
93
|
-
image = _a.sent();
|
|
94
|
-
canvas = document.createElement("canvas");
|
|
95
|
-
ctx = canvas.getContext("2d");
|
|
96
|
-
if (!ctx) {
|
|
97
|
-
throw new Error("No 2d context");
|
|
98
|
-
}
|
|
99
|
-
// Set canvas size to match the crop area
|
|
100
|
-
canvas.width = pixelCrop.width;
|
|
101
|
-
canvas.height = pixelCrop.height;
|
|
102
|
-
// Draw the cropped image
|
|
103
|
-
ctx.drawImage(image, pixelCrop.x, pixelCrop.y, pixelCrop.width, pixelCrop.height, 0, 0, pixelCrop.width, pixelCrop.height);
|
|
104
|
-
// Convert canvas to blob and then to File
|
|
105
|
-
return [2 /*return*/, new Promise(function (resolve, reject) {
|
|
106
|
-
canvas.toBlob(function (blob) {
|
|
107
|
-
if (!blob) {
|
|
108
|
-
reject(new Error("Canvas is empty"));
|
|
109
|
-
return;
|
|
110
|
-
}
|
|
111
|
-
var file = new File([blob], fileName, { type: "image/jpeg" });
|
|
112
|
-
resolve(file);
|
|
113
|
-
}, "image/jpeg");
|
|
114
|
-
})];
|
|
115
|
-
}
|
|
116
|
-
});
|
|
117
|
-
});
|
|
118
|
-
}
|
|
119
|
-
/**
|
|
120
|
-
* Create an HTMLImageElement from a URL.
|
|
121
|
-
*/
|
|
122
|
-
function createImage(url) {
|
|
123
|
-
return new Promise(function (resolve, reject) {
|
|
124
|
-
var image = new Image();
|
|
125
|
-
image.addEventListener("load", function () { return resolve(image); });
|
|
126
|
-
image.addEventListener("error", function (error) { return reject(error); });
|
|
127
|
-
image.src = url;
|
|
128
|
-
});
|
|
129
|
-
}
|
|
130
|
-
/**
|
|
131
|
-
* A dialog component that allows users to crop/resize an image to a square aspect ratio.
|
|
132
|
-
* Uses react-easy-crop for the cropping functionality.
|
|
133
|
-
*/
|
|
134
|
-
var ImageResizeDialog = function (_a) {
|
|
135
|
-
var open = _a.open, onClose = _a.onClose, imageUrl = _a.imageUrl, onCropComplete = _a.onCropComplete, _b = _a.fileName, fileName = _b === void 0 ? "cropped-image.jpg" : _b;
|
|
136
|
-
var _c = (0, react_1.useState)({ x: 0, y: 0 }), crop = _c[0], setCrop = _c[1];
|
|
137
|
-
var _d = (0, react_1.useState)(1), zoom = _d[0], setZoom = _d[1];
|
|
138
|
-
var _e = (0, react_1.useState)(null), croppedAreaPixels = _e[0], setCroppedAreaPixels = _e[1];
|
|
139
|
-
var handleCropComplete = (0, react_1.useCallback)(function (_croppedArea, croppedAreaPixels) {
|
|
140
|
-
setCroppedAreaPixels(croppedAreaPixels);
|
|
141
|
-
}, []);
|
|
142
|
-
var handleSave = (0, react_1.useCallback)(function () { return __awaiter(void 0, void 0, void 0, function () {
|
|
143
|
-
var croppedImage, error_1;
|
|
144
|
-
return __generator(this, function (_a) {
|
|
145
|
-
switch (_a.label) {
|
|
146
|
-
case 0:
|
|
147
|
-
if (!croppedAreaPixels)
|
|
148
|
-
return [2 /*return*/];
|
|
149
|
-
_a.label = 1;
|
|
150
|
-
case 1:
|
|
151
|
-
_a.trys.push([1, 3, , 4]);
|
|
152
|
-
return [4 /*yield*/, getCroppedImg(imageUrl, croppedAreaPixels, fileName)];
|
|
153
|
-
case 2:
|
|
154
|
-
croppedImage = _a.sent();
|
|
155
|
-
onCropComplete(croppedImage);
|
|
156
|
-
onClose();
|
|
157
|
-
return [3 /*break*/, 4];
|
|
158
|
-
case 3:
|
|
159
|
-
error_1 = _a.sent();
|
|
160
|
-
console.error("Failed to crop image:", error_1);
|
|
161
|
-
return [3 /*break*/, 4];
|
|
162
|
-
case 4: return [2 /*return*/];
|
|
163
|
-
}
|
|
164
|
-
});
|
|
165
|
-
}); }, [croppedAreaPixels, imageUrl, fileName, onCropComplete, onClose]);
|
|
166
|
-
return (react_1.default.createElement(dialog_1.Dialog, { open: open, onOpenChange: onClose },
|
|
167
|
-
react_1.default.createElement(dialog_1.DialogContent, { className: "max-w-3xl", "data-slot": "image-resize-dialog", "data-testid": "image-resize-dialog" },
|
|
168
|
-
react_1.default.createElement(dialog_1.DialogHeader, null,
|
|
169
|
-
react_1.default.createElement(dialog_1.DialogTitle, null, "Resize Image"),
|
|
170
|
-
react_1.default.createElement(dialog_1.DialogDescription, null, "Adjust the crop area to create a square image. Use the slider to zoom in or out.")),
|
|
171
|
-
react_1.default.createElement("div", { className: "relative h-[400px] w-full bg-muted rounded-md overflow-hidden" },
|
|
172
|
-
react_1.default.createElement(react_easy_crop_1.default, { image: imageUrl, crop: crop, zoom: zoom, aspect: 1, onCropChange: setCrop, onCropComplete: handleCropComplete, onZoomChange: setZoom })),
|
|
173
|
-
react_1.default.createElement("div", { className: "space-y-2" },
|
|
174
|
-
react_1.default.createElement("label", { className: "text-sm font-medium" }, "Zoom"),
|
|
175
|
-
react_1.default.createElement(slider_1.Slider, { value: [zoom], onValueChange: function (values) { return setZoom(values[0] || 1); }, min: 1, max: 3, step: 0.1, className: "w-full", "data-testid": "zoom-slider" })),
|
|
176
|
-
react_1.default.createElement(dialog_1.DialogFooter, null,
|
|
177
|
-
react_1.default.createElement(button_1.Button, { variant: "outline", onClick: onClose, "data-testid": "cancel-button" }, "Cancel"),
|
|
178
|
-
react_1.default.createElement(button_1.Button, { onClick: handleSave, "data-testid": "save-button" }, "Save")))));
|
|
179
|
-
};
|
|
180
|
-
exports.ImageResizeDialog = ImageResizeDialog;
|
|
1
|
+
"use strict";"use client";import e,{Suspense as v,useCallback as u,useState as g}from"react";import{Dialog as y,DialogContent as x,DialogDescription as z,DialogFooter as C,DialogHeader as D,DialogTitle as I}from"./ui/dialog";import{Button as p}from"./ui/button";import{Slider as j}from"./ui/slider";const N=e.lazy(()=>import("react-easy-crop"));async function b(c,t,n="cropped-image.jpg"){const a=await S(c),o=document.createElement("canvas"),m=o.getContext("2d");if(!m)throw new Error("No 2d context");return o.width=t.width,o.height=t.height,m.drawImage(a,t.x,t.y,t.width,t.height,0,0,t.width,t.height),new Promise((d,s)=>{o.toBlob(i=>{if(!i){s(new Error("Canvas is empty"));return}const l=new File([i],n,{type:"image/jpeg"});d(l)},"image/jpeg")})}function S(c){return new Promise((t,n)=>{const a=new Image;a.addEventListener("load",()=>t(a)),a.addEventListener("error",o=>n(o)),a.src=c})}export const ImageResizeDialog=({open:c,onClose:t,imageUrl:n,onCropComplete:a,fileName:o="cropped-image.jpg"})=>{const[m,d]=g({x:0,y:0}),[s,i]=g(1),[l,h]=g(null),E=u((r,w)=>{h(w)},[]),f=u(async()=>{if(l)try{const r=await b(n,l,o);a(r),t()}catch(r){console.error("Failed to crop image:",r)}},[l,n,o,a,t]);return e.createElement(y,{open:c,onOpenChange:t},e.createElement(x,{className:"max-w-3xl","data-slot":"image-resize-dialog","data-testid":"image-resize-dialog"},e.createElement(D,null,e.createElement(I,null,"Resize Image"),e.createElement(z,null,"Adjust the crop area to create a square image. Use the slider to zoom in or out.")),e.createElement("div",{className:"relative h-[400px] w-full bg-muted rounded-md overflow-hidden"},e.createElement(v,{fallback:e.createElement("div",{className:"flex h-full w-full items-center justify-center text-muted-foreground text-sm"},"Loading crop editor...")},e.createElement(N,{image:n,crop:m,zoom:s,aspect:1,onCropChange:d,onCropComplete:E,onZoomChange:i}))),e.createElement("div",{className:"space-y-2"},e.createElement("label",{className:"text-sm font-medium"},"Zoom"),e.createElement(j,{value:[s],onValueChange:r=>i(r[0]||1),min:1,max:3,step:.1,className:"w-full","data-testid":"zoom-slider"})),e.createElement(C,null,e.createElement(p,{variant:"outline",onClick:t,"data-testid":"cancel-button"},"Cancel"),e.createElement(p,{onClick:f,"data-testid":"save-button"},"Save"))))};
|
package/components/nav-main.js
CHANGED
|
@@ -1,86 +1 @@
|
|
|
1
|
-
"use client";
|
|
2
|
-
"use strict";
|
|
3
|
-
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
4
|
-
if (k2 === undefined) k2 = k;
|
|
5
|
-
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
6
|
-
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
7
|
-
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
8
|
-
}
|
|
9
|
-
Object.defineProperty(o, k2, desc);
|
|
10
|
-
}) : (function(o, m, k, k2) {
|
|
11
|
-
if (k2 === undefined) k2 = k;
|
|
12
|
-
o[k2] = m[k];
|
|
13
|
-
}));
|
|
14
|
-
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
15
|
-
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
16
|
-
}) : function(o, v) {
|
|
17
|
-
o["default"] = v;
|
|
18
|
-
});
|
|
19
|
-
var __importStar = (this && this.__importStar) || (function () {
|
|
20
|
-
var ownKeys = function(o) {
|
|
21
|
-
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
22
|
-
var ar = [];
|
|
23
|
-
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
24
|
-
return ar;
|
|
25
|
-
};
|
|
26
|
-
return ownKeys(o);
|
|
27
|
-
};
|
|
28
|
-
return function (mod) {
|
|
29
|
-
if (mod && mod.__esModule) return mod;
|
|
30
|
-
var result = {};
|
|
31
|
-
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
32
|
-
__setModuleDefault(result, mod);
|
|
33
|
-
return result;
|
|
34
|
-
};
|
|
35
|
-
})();
|
|
36
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
37
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
38
|
-
};
|
|
39
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
40
|
-
exports.NavMain = void 0;
|
|
41
|
-
var react_1 = __importStar(require("react"));
|
|
42
|
-
var lucide_react_1 = require("lucide-react");
|
|
43
|
-
var collapsible_1 = require("./ui/collapsible");
|
|
44
|
-
var sidebar_1 = require("./sidebar");
|
|
45
|
-
var link_1 = __importDefault(require("next/link"));
|
|
46
|
-
exports.NavMain = react_1.default.memo(function (_a) {
|
|
47
|
-
var items = _a.items;
|
|
48
|
-
var processedItems = (0, react_1.useMemo)(function () {
|
|
49
|
-
return items
|
|
50
|
-
.filter(function (_a) {
|
|
51
|
-
var enabled = _a.enabled;
|
|
52
|
-
return enabled;
|
|
53
|
-
})
|
|
54
|
-
.sort(function (a, b) { return a.order - b.order; });
|
|
55
|
-
}, [items]);
|
|
56
|
-
return (react_1.default.createElement(sidebar_1.SidebarGroup, null,
|
|
57
|
-
react_1.default.createElement(sidebar_1.SidebarGroupLabel, null, "Current App"),
|
|
58
|
-
react_1.default.createElement(sidebar_1.SidebarMenu, null, processedItems.map(function (item) {
|
|
59
|
-
var _a, _b;
|
|
60
|
-
if (!((_a = item.subItems) === null || _a === void 0 ? void 0 : _a.length)) {
|
|
61
|
-
return (react_1.default.createElement(sidebar_1.SidebarMenuItem, { key: item.title },
|
|
62
|
-
react_1.default.createElement(link_1.default, { href: item.url },
|
|
63
|
-
react_1.default.createElement(sidebar_1.SidebarMenuButton, { className: "cursor-pointer" },
|
|
64
|
-
item.icon && react_1.default.createElement(item.icon, null),
|
|
65
|
-
react_1.default.createElement("span", null, item.title)))));
|
|
66
|
-
}
|
|
67
|
-
return (react_1.default.createElement(collapsible_1.Collapsible, { key: item.title, asChild: true, defaultOpen: item.isActive, className: "group/collapsible" },
|
|
68
|
-
react_1.default.createElement(sidebar_1.SidebarMenuItem, null,
|
|
69
|
-
react_1.default.createElement(collapsible_1.CollapsibleTrigger, { asChild: true },
|
|
70
|
-
react_1.default.createElement(sidebar_1.SidebarMenuButton, { tooltip: item.title, className: item.isActive ? "bg-gray-300" : "" },
|
|
71
|
-
item.icon && react_1.default.createElement(item.icon, null),
|
|
72
|
-
react_1.default.createElement("span", null, item.title),
|
|
73
|
-
react_1.default.createElement(lucide_react_1.ChevronRight, { className: "ml-auto transition-transform duration-200 group-data-[state=open]/collapsible:rotate-90" }))),
|
|
74
|
-
((_b = item.subItems) === null || _b === void 0 ? void 0 : _b.length) > 0 && (react_1.default.createElement(collapsible_1.CollapsibleContent, null,
|
|
75
|
-
react_1.default.createElement(sidebar_1.SidebarMenuSub, null, item.subItems
|
|
76
|
-
.filter(function (_a) {
|
|
77
|
-
var enabled = _a.enabled;
|
|
78
|
-
return enabled;
|
|
79
|
-
})
|
|
80
|
-
.sort(function (a, b) { return a.order - b.order; })
|
|
81
|
-
.map(function (subItem) { return (react_1.default.createElement(sidebar_1.SidebarMenuSubItem, { key: subItem.title, className: "rounded-md ".concat(subItem.isActive ? "bg-gray-200" : "") },
|
|
82
|
-
react_1.default.createElement(sidebar_1.SidebarMenuSubButton, { asChild: true },
|
|
83
|
-
react_1.default.createElement(link_1.default, { href: subItem.url },
|
|
84
|
-
react_1.default.createElement("span", null, subItem.title))))); })))))));
|
|
85
|
-
}))));
|
|
86
|
-
});
|
|
1
|
+
"use strict";"use client";import e,{useMemo as m}from"react";import{ChevronRight as p}from"lucide-react";import{Collapsible as d,CollapsibleContent as E,CollapsibleTrigger as b}from"./ui/collapsible";import{SidebarGroup as f,SidebarGroupLabel as g,SidebarMenu as S,SidebarMenuButton as o,SidebarMenuItem as u,SidebarMenuSub as v,SidebarMenuSubButton as h,SidebarMenuSubItem as C}from"./sidebar";import c from"next/link";export const NavMain=e.memo(({items:a})=>{const i=m(()=>a.filter(({enabled:t})=>t).sort((t,l)=>t.order-l.order),[a]);return e.createElement(f,null,e.createElement(g,null,"Current App"),e.createElement(S,null,i.map(t=>{var l,n;return!((l=t.subItems)===null||l===void 0)&&l.length?e.createElement(d,{key:t.title,asChild:!0,defaultOpen:t.isActive,className:"group/collapsible"},e.createElement(u,null,e.createElement(b,{asChild:!0},e.createElement(o,{tooltip:t.title,className:t.isActive?"bg-gray-300":""},t.icon&&e.createElement(t.icon,null),e.createElement("span",null,t.title),e.createElement(p,{className:"ml-auto transition-transform duration-200 group-data-[state=open]/collapsible:rotate-90"}))),((n=t.subItems)===null||n===void 0?void 0:n.length)>0&&e.createElement(E,null,e.createElement(v,null,t.subItems.filter(({enabled:r})=>r).sort((r,s)=>r.order-s.order).map(r=>e.createElement(C,{key:r.title,className:`rounded-md ${r.isActive?"bg-gray-200":""}`},e.createElement(h,{asChild:!0},e.createElement(c,{href:r.url},e.createElement("span",null,r.title))))))))):e.createElement(u,{key:t.title},e.createElement(c,{href:t.url},e.createElement(o,{className:"cursor-pointer"},t.icon&&e.createElement(t.icon,null),e.createElement("span",null,t.title))))})))});
|
|
@@ -1,50 +1 @@
|
|
|
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.NavProjects = void 0;
|
|
8
|
-
var lucide_react_1 = require("lucide-react");
|
|
9
|
-
var link_1 = __importDefault(require("next/link"));
|
|
10
|
-
var dropdown_menu_1 = require("./ui/dropdown-menu");
|
|
11
|
-
var sidebar_1 = require("./sidebar");
|
|
12
|
-
var react_1 = __importDefault(require("react"));
|
|
13
|
-
var NavProjects = function (_a) {
|
|
14
|
-
var _b, _c;
|
|
15
|
-
var apps = _a.apps, offerUrl = _a.offerUrl;
|
|
16
|
-
var isMobile = (0, sidebar_1.useSidebar)().isMobile;
|
|
17
|
-
return (react_1.default.createElement(sidebar_1.SidebarGroup, { className: "group-data-[collapsible=icon]:hidden" },
|
|
18
|
-
react_1.default.createElement(sidebar_1.SidebarGroupLabel, null, "More Apps"),
|
|
19
|
-
react_1.default.createElement(sidebar_1.SidebarMenu, null, (_c = (_b = apps === null || apps === void 0 ? void 0 : apps.filter(function (_a) {
|
|
20
|
-
var enabled = _a.enabled;
|
|
21
|
-
return enabled;
|
|
22
|
-
})) === null || _b === void 0 ? void 0 : _b.sort(function (a, b) { return a.order - b.order; })) === null || _c === void 0 ? void 0 :
|
|
23
|
-
_c.map(function (item) { return (react_1.default.createElement(sidebar_1.SidebarMenuItem, { key: item.name },
|
|
24
|
-
react_1.default.createElement(sidebar_1.SidebarMenuButton, { asChild: true },
|
|
25
|
-
react_1.default.createElement(link_1.default, { href: item.url },
|
|
26
|
-
react_1.default.createElement(item.icon, null),
|
|
27
|
-
react_1.default.createElement("span", null, item.name))),
|
|
28
|
-
react_1.default.createElement(dropdown_menu_1.DropdownMenu, null,
|
|
29
|
-
react_1.default.createElement(dropdown_menu_1.DropdownMenuTrigger, { asChild: true },
|
|
30
|
-
react_1.default.createElement(sidebar_1.SidebarMenuAction, { showOnHover: true },
|
|
31
|
-
react_1.default.createElement(lucide_react_1.MoreHorizontal, null),
|
|
32
|
-
react_1.default.createElement("span", { className: "sr-only" }, "More"))),
|
|
33
|
-
react_1.default.createElement(dropdown_menu_1.DropdownMenuContent, { className: "w-48 rounded-lg", side: isMobile ? "bottom" : "right", align: isMobile ? "end" : "start" },
|
|
34
|
-
react_1.default.createElement(dropdown_menu_1.DropdownMenuItem, null,
|
|
35
|
-
react_1.default.createElement(lucide_react_1.Folder, { className: "text-muted-foreground" }),
|
|
36
|
-
react_1.default.createElement("span", null, "View Project")),
|
|
37
|
-
react_1.default.createElement(dropdown_menu_1.DropdownMenuItem, null,
|
|
38
|
-
react_1.default.createElement(lucide_react_1.Forward, { className: "text-muted-foreground" }),
|
|
39
|
-
react_1.default.createElement("span", null, "Share Project")),
|
|
40
|
-
react_1.default.createElement(dropdown_menu_1.DropdownMenuSeparator, null),
|
|
41
|
-
react_1.default.createElement(dropdown_menu_1.DropdownMenuItem, null,
|
|
42
|
-
react_1.default.createElement(lucide_react_1.Trash2, { className: "text-muted-foreground" }),
|
|
43
|
-
react_1.default.createElement("span", null, "Delete Project")))))); }),
|
|
44
|
-
offerUrl && (react_1.default.createElement(sidebar_1.SidebarMenuItem, null,
|
|
45
|
-
react_1.default.createElement(link_1.default, { href: offerUrl },
|
|
46
|
-
react_1.default.createElement(sidebar_1.SidebarMenuButton, { className: "text-sidebar-foreground/70" },
|
|
47
|
-
react_1.default.createElement(lucide_react_1.MoreHorizontal, { className: "text-sidebar-foreground/70" }),
|
|
48
|
-
react_1.default.createElement("span", null, "Offers"))))))));
|
|
49
|
-
};
|
|
50
|
-
exports.NavProjects = NavProjects;
|
|
1
|
+
"use strict";"use client";import{Folder as E,Forward as p,MoreHorizontal as c,Trash2 as b}from"lucide-react";import u from"next/link";import{DropdownMenu as f,DropdownMenuContent as M,DropdownMenuItem as a,DropdownMenuSeparator as g,DropdownMenuTrigger as h}from"./ui/dropdown-menu";import{SidebarGroup as v,SidebarGroupLabel as w,SidebarMenu as N,SidebarMenuAction as S,SidebarMenuButton as d,SidebarMenuItem as s,useSidebar as x}from"./sidebar";import e from"react";export const NavProjects=({apps:r,offerUrl:o})=>{var n,l;const{isMobile:m}=x();return e.createElement(v,{className:"group-data-[collapsible=icon]:hidden"},e.createElement(w,null,"More Apps"),e.createElement(N,null,(l=(n=r?.filter(({enabled:t})=>t))===null||n===void 0?void 0:n.sort((t,i)=>t.order-i.order))===null||l===void 0?void 0:l.map(t=>e.createElement(s,{key:t.name},e.createElement(d,{asChild:!0},e.createElement(u,{href:t.url},e.createElement(t.icon,null),e.createElement("span",null,t.name))),e.createElement(f,null,e.createElement(h,{asChild:!0},e.createElement(S,{showOnHover:!0},e.createElement(c,null),e.createElement("span",{className:"sr-only"},"More"))),e.createElement(M,{className:"w-48 rounded-lg",side:m?"bottom":"right",align:m?"end":"start"},e.createElement(a,null,e.createElement(E,{className:"text-muted-foreground"}),e.createElement("span",null,"View Project")),e.createElement(a,null,e.createElement(p,{className:"text-muted-foreground"}),e.createElement("span",null,"Share Project")),e.createElement(g,null),e.createElement(a,null,e.createElement(b,{className:"text-muted-foreground"}),e.createElement("span",null,"Delete Project")))))),o&&e.createElement(s,null,e.createElement(u,{href:o},e.createElement(d,{className:"text-sidebar-foreground/70"},e.createElement(c,{className:"text-sidebar-foreground/70"}),e.createElement("span",null,"Offers"))))))};
|