@algorithm-shift/design-system 1.2.995 → 1.2.996
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/index.css +56 -0
- package/dist/index.css.map +1 -1
- package/dist/index.d.mts +3 -3
- package/dist/index.d.ts +3 -3
- package/dist/index.js +267 -145
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +277 -155
- package/dist/index.mjs.map +1 -1
- package/package.json +9 -8
package/dist/index.js
CHANGED
|
@@ -3280,6 +3280,7 @@ function LazyMultiSelectDropdown({
|
|
|
3280
3280
|
}) {
|
|
3281
3281
|
const [isOpen, setIsOpen] = (0, import_react29.useState)(false);
|
|
3282
3282
|
const [searchTerm, setSearchTerm] = (0, import_react29.useState)("");
|
|
3283
|
+
const [selectedDetails, setSelectedDetails] = (0, import_react29.useState)({});
|
|
3283
3284
|
const dropdownRef = (0, import_react29.useRef)(null);
|
|
3284
3285
|
const observerTarget = (0, import_react29.useRef)(null);
|
|
3285
3286
|
const ensureUnique = (arr) => {
|
|
@@ -3331,8 +3332,28 @@ function LazyMultiSelectDropdown({
|
|
|
3331
3332
|
}
|
|
3332
3333
|
};
|
|
3333
3334
|
const selectedOptions = (0, import_react29.useMemo)(() => {
|
|
3334
|
-
return
|
|
3335
|
-
|
|
3335
|
+
return normalizedValue.map((id2) => {
|
|
3336
|
+
const fromLazy = lazyOptions.find((opt) => opt.value === id2);
|
|
3337
|
+
if (fromLazy) return fromLazy;
|
|
3338
|
+
if (selectedDetails[id2]) return selectedDetails[id2];
|
|
3339
|
+
return { value: id2, label: id2 };
|
|
3340
|
+
});
|
|
3341
|
+
}, [normalizedValue, lazyOptions, selectedDetails]);
|
|
3342
|
+
(0, import_react29.useEffect)(() => {
|
|
3343
|
+
const newDetails = { ...selectedDetails };
|
|
3344
|
+
normalizedValue.forEach((id2) => {
|
|
3345
|
+
const option = lazyOptions.find((opt) => opt.value === id2);
|
|
3346
|
+
if (option && !newDetails[id2]) {
|
|
3347
|
+
newDetails[id2] = option;
|
|
3348
|
+
}
|
|
3349
|
+
});
|
|
3350
|
+
Object.keys(newDetails).forEach((key) => {
|
|
3351
|
+
if (!normalizedValue.includes(key)) {
|
|
3352
|
+
delete newDetails[key];
|
|
3353
|
+
}
|
|
3354
|
+
});
|
|
3355
|
+
setSelectedDetails(newDetails);
|
|
3356
|
+
}, [normalizedValue, lazyOptions]);
|
|
3336
3357
|
(0, import_react29.useEffect)(() => {
|
|
3337
3358
|
const handleClick = (e) => {
|
|
3338
3359
|
if (dropdownRef.current && !dropdownRef.current.contains(e.target)) {
|
|
@@ -3358,7 +3379,7 @@ function LazyMultiSelectDropdown({
|
|
|
3358
3379
|
setSearchTerm(term);
|
|
3359
3380
|
search(term);
|
|
3360
3381
|
};
|
|
3361
|
-
const toggleSelect = (val) => {
|
|
3382
|
+
const toggleSelect = (0, import_react29.useCallback)((val) => {
|
|
3362
3383
|
let updated;
|
|
3363
3384
|
if (normalizedValue.includes(val)) {
|
|
3364
3385
|
updated = normalizedValue.filter((v) => v !== val);
|
|
@@ -3366,14 +3387,18 @@ function LazyMultiSelectDropdown({
|
|
|
3366
3387
|
updated = ensureUnique([...normalizedValue, val]);
|
|
3367
3388
|
}
|
|
3368
3389
|
onChange?.(convertOutput(updated), id);
|
|
3369
|
-
};
|
|
3390
|
+
}, [normalizedValue, onChange, id, convertOutput]);
|
|
3370
3391
|
const removeTag = (val) => {
|
|
3371
3392
|
const updated = normalizedValue.filter((v) => v !== val);
|
|
3372
3393
|
onChange?.(convertOutput(updated), id);
|
|
3373
3394
|
};
|
|
3374
3395
|
const handleFocus = () => {
|
|
3375
|
-
if (!disabled)
|
|
3376
|
-
|
|
3396
|
+
if (!disabled) {
|
|
3397
|
+
setIsOpen(true);
|
|
3398
|
+
if (lazyOptions.length === 0) {
|
|
3399
|
+
loadPage(1, "");
|
|
3400
|
+
}
|
|
3401
|
+
}
|
|
3377
3402
|
};
|
|
3378
3403
|
return /* @__PURE__ */ (0, import_jsx_runtime48.jsxs)("div", { ref: dropdownRef, className: "relative w-full", children: [
|
|
3379
3404
|
/* @__PURE__ */ (0, import_jsx_runtime48.jsxs)(
|
|
@@ -4010,9 +4035,9 @@ function DataTable({
|
|
|
4010
4035
|
setLocalPageSize(newSize);
|
|
4011
4036
|
};
|
|
4012
4037
|
const pageSizeOptions = React10.useMemo(() => {
|
|
4013
|
-
const options = [10, 20, 50, 100].filter((size) => size < totalRecords);
|
|
4038
|
+
const options = [5, 10, 20, 50, 100].filter((size) => size < totalRecords);
|
|
4014
4039
|
if (options.length === 0) {
|
|
4015
|
-
options.push(
|
|
4040
|
+
options.push(5);
|
|
4016
4041
|
}
|
|
4017
4042
|
return options;
|
|
4018
4043
|
}, [totalRecords]);
|
|
@@ -5166,7 +5191,59 @@ var Tabs_default = Tabs;
|
|
|
5166
5191
|
|
|
5167
5192
|
// src/components/Navigation/Stages/Stages.tsx
|
|
5168
5193
|
var import_react33 = __toESM(require("react"));
|
|
5194
|
+
|
|
5195
|
+
// src/components/ui/tooltip.tsx
|
|
5196
|
+
var TooltipPrimitive = __toESM(require("@radix-ui/react-tooltip"));
|
|
5169
5197
|
var import_jsx_runtime60 = require("react/jsx-runtime");
|
|
5198
|
+
function TooltipProvider({
|
|
5199
|
+
delayDuration = 0,
|
|
5200
|
+
...props
|
|
5201
|
+
}) {
|
|
5202
|
+
return /* @__PURE__ */ (0, import_jsx_runtime60.jsx)(
|
|
5203
|
+
TooltipPrimitive.Provider,
|
|
5204
|
+
{
|
|
5205
|
+
"data-slot": "tooltip-provider",
|
|
5206
|
+
delayDuration,
|
|
5207
|
+
...props
|
|
5208
|
+
}
|
|
5209
|
+
);
|
|
5210
|
+
}
|
|
5211
|
+
function Tooltip({
|
|
5212
|
+
...props
|
|
5213
|
+
}) {
|
|
5214
|
+
return /* @__PURE__ */ (0, import_jsx_runtime60.jsx)(TooltipProvider, { children: /* @__PURE__ */ (0, import_jsx_runtime60.jsx)(TooltipPrimitive.Root, { "data-slot": "tooltip", ...props }) });
|
|
5215
|
+
}
|
|
5216
|
+
function TooltipTrigger({
|
|
5217
|
+
...props
|
|
5218
|
+
}) {
|
|
5219
|
+
return /* @__PURE__ */ (0, import_jsx_runtime60.jsx)(TooltipPrimitive.Trigger, { "data-slot": "tooltip-trigger", ...props });
|
|
5220
|
+
}
|
|
5221
|
+
function TooltipContent({
|
|
5222
|
+
className,
|
|
5223
|
+
sideOffset = 0,
|
|
5224
|
+
children,
|
|
5225
|
+
...props
|
|
5226
|
+
}) {
|
|
5227
|
+
return /* @__PURE__ */ (0, import_jsx_runtime60.jsx)(TooltipPrimitive.Portal, { children: /* @__PURE__ */ (0, import_jsx_runtime60.jsxs)(
|
|
5228
|
+
TooltipPrimitive.Content,
|
|
5229
|
+
{
|
|
5230
|
+
"data-slot": "tooltip-content",
|
|
5231
|
+
sideOffset,
|
|
5232
|
+
className: cn(
|
|
5233
|
+
"bg-foreground text-background animate-in fade-in-0 zoom-in-95 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 w-fit origin-(--radix-tooltip-content-transform-origin) rounded-md px-3 py-1.5 text-xs text-balance",
|
|
5234
|
+
className
|
|
5235
|
+
),
|
|
5236
|
+
...props,
|
|
5237
|
+
children: [
|
|
5238
|
+
children,
|
|
5239
|
+
/* @__PURE__ */ (0, import_jsx_runtime60.jsx)(TooltipPrimitive.Arrow, { className: "bg-foreground fill-foreground z-50 size-2.5 translate-y-[calc(-50%_-_2px)] rotate-45 rounded-[2px]" })
|
|
5240
|
+
]
|
|
5241
|
+
}
|
|
5242
|
+
) });
|
|
5243
|
+
}
|
|
5244
|
+
|
|
5245
|
+
// src/components/Navigation/Stages/Stages.tsx
|
|
5246
|
+
var import_jsx_runtime61 = require("react/jsx-runtime");
|
|
5170
5247
|
var StagesComponent = ({
|
|
5171
5248
|
stages,
|
|
5172
5249
|
isShowBtn,
|
|
@@ -5184,6 +5261,8 @@ var StagesComponent = ({
|
|
|
5184
5261
|
}) => {
|
|
5185
5262
|
const [activeStage, setActiveStage] = (0, import_react33.useState)("");
|
|
5186
5263
|
const [isCompleted, setIsCompleted] = (0, import_react33.useState)(false);
|
|
5264
|
+
const [activeChildStage, setActiveChildStage] = (0, import_react33.useState)(null);
|
|
5265
|
+
const [activeRootStage, setActiveRootStage] = (0, import_react33.useState)(null);
|
|
5187
5266
|
(0, import_react33.useEffect)(() => {
|
|
5188
5267
|
if (currentStage) {
|
|
5189
5268
|
setActiveStage(currentStage);
|
|
@@ -5194,6 +5273,9 @@ var StagesComponent = ({
|
|
|
5194
5273
|
const updateStage = (stageKey) => {
|
|
5195
5274
|
setActiveStage(stageKey);
|
|
5196
5275
|
onStageChange?.(stageKey);
|
|
5276
|
+
const { activeRoot, activeChild } = findStageContext(stages, stageKey);
|
|
5277
|
+
setActiveRootStage(activeRoot);
|
|
5278
|
+
setActiveChildStage(activeChild);
|
|
5197
5279
|
};
|
|
5198
5280
|
const nextStage = () => {
|
|
5199
5281
|
if (!stages || stages.length === 0) return;
|
|
@@ -5219,9 +5301,41 @@ var StagesComponent = ({
|
|
|
5219
5301
|
onStageChange?.(stageKey);
|
|
5220
5302
|
}
|
|
5221
5303
|
};
|
|
5222
|
-
const
|
|
5304
|
+
const findStageContext = (nodes, curr, root = null) => {
|
|
5305
|
+
if (!nodes || nodes.length === 0) {
|
|
5306
|
+
return { activeRoot: null, activeChild: null };
|
|
5307
|
+
}
|
|
5308
|
+
if (!Array.isArray(nodes)) {
|
|
5309
|
+
return { activeRoot: null, activeChild: null };
|
|
5310
|
+
}
|
|
5311
|
+
for (const node of nodes) {
|
|
5312
|
+
const currentRoot = root ?? node;
|
|
5313
|
+
if (node?.[dataKey] === curr) {
|
|
5314
|
+
return {
|
|
5315
|
+
activeRoot: root ?? node,
|
|
5316
|
+
activeChild: node
|
|
5317
|
+
};
|
|
5318
|
+
}
|
|
5319
|
+
const result = findStageContext(node?.children, curr, currentRoot);
|
|
5320
|
+
if (result.activeChild) {
|
|
5321
|
+
return result;
|
|
5322
|
+
}
|
|
5323
|
+
}
|
|
5324
|
+
return { activeRoot: null, activeChild: null };
|
|
5325
|
+
};
|
|
5326
|
+
(0, import_react33.useEffect)(() => {
|
|
5327
|
+
if (!currentStage || !Array.isArray(stages)) {
|
|
5328
|
+
setActiveRootStage(null);
|
|
5329
|
+
setActiveChildStage(null);
|
|
5330
|
+
return;
|
|
5331
|
+
}
|
|
5332
|
+
const { activeRoot, activeChild } = findStageContext(stages, currentStage);
|
|
5333
|
+
setActiveRootStage(activeRoot);
|
|
5334
|
+
setActiveChildStage(activeChild);
|
|
5335
|
+
}, [currentStage, stages]);
|
|
5336
|
+
const isAllStagesCompleted = isCompleted || activeRootStage?.[dataKey] === lastStage;
|
|
5223
5337
|
const disabled = isAllStagesCompleted || loading || saving;
|
|
5224
|
-
return /* @__PURE__ */ (0,
|
|
5338
|
+
return /* @__PURE__ */ (0, import_jsx_runtime61.jsx)("div", { className, style, children: /* @__PURE__ */ (0, import_jsx_runtime61.jsxs)(
|
|
5225
5339
|
"div",
|
|
5226
5340
|
{
|
|
5227
5341
|
className: `
|
|
@@ -5231,8 +5345,8 @@ var StagesComponent = ({
|
|
|
5231
5345
|
${isMobile ? "p-3 sm:p-4" : "p-2"}
|
|
5232
5346
|
`,
|
|
5233
5347
|
children: [
|
|
5234
|
-
/* @__PURE__ */ (0,
|
|
5235
|
-
/* @__PURE__ */ (0,
|
|
5348
|
+
/* @__PURE__ */ (0, import_jsx_runtime61.jsx)("div", { className: "flex items-center flex-shrink-0 order-1 lg:order-1", children: /* @__PURE__ */ (0, import_jsx_runtime61.jsx)("button", { className: "p-2 hover:bg-gray-100 rounded flex-shrink-0", children: /* @__PURE__ */ (0, import_jsx_runtime61.jsx)("svg", { className: "w-4 h-4 text-gray-600", fill: "none", stroke: "currentColor", viewBox: "0 0 24 24", children: /* @__PURE__ */ (0, import_jsx_runtime61.jsx)("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M19 9l-7 7-7-7" }) }) }) }),
|
|
5349
|
+
/* @__PURE__ */ (0, import_jsx_runtime61.jsx)(
|
|
5236
5350
|
"div",
|
|
5237
5351
|
{
|
|
5238
5352
|
className: `
|
|
@@ -5240,7 +5354,7 @@ var StagesComponent = ({
|
|
|
5240
5354
|
flex-wrap gap-2 sm:gap-2 lg:gap-3 w-full lg:w-auto
|
|
5241
5355
|
${isMobile ? "order-2 mt-2 lg:mt-0" : "order-2"}
|
|
5242
5356
|
`,
|
|
5243
|
-
children: loading ? Array(6).fill(null).map((_, index) => /* @__PURE__ */ (0,
|
|
5357
|
+
children: loading ? Array(6).fill(null).map((_, index) => /* @__PURE__ */ (0, import_jsx_runtime61.jsx)(
|
|
5244
5358
|
"button",
|
|
5245
5359
|
{
|
|
5246
5360
|
className: `
|
|
@@ -5254,41 +5368,49 @@ var StagesComponent = ({
|
|
|
5254
5368
|
disabled: true
|
|
5255
5369
|
},
|
|
5256
5370
|
index
|
|
5257
|
-
)) : stages?.length > 0 && stages?.map((stage, index) => {
|
|
5371
|
+
)) : (stages || [])?.length > 0 && stages?.map((stage, index) => {
|
|
5258
5372
|
const currentIndex = stages.findIndex((s) => s[dataKey] === activeStage);
|
|
5259
5373
|
const isCompletedStage = isAllStagesCompleted || index <= currentIndex;
|
|
5260
5374
|
const isActive = !isAllStagesCompleted && index === currentIndex;
|
|
5261
|
-
|
|
5262
|
-
|
|
5375
|
+
let stageColor = !stage.isSuccess ? "bg-red-50 text-red-700 border-2 border-red-700" : "bg-green-50 text-green-700 border-2 border-green-700";
|
|
5376
|
+
let stageLabel = stage[dataLabel];
|
|
5377
|
+
if (stage[dataKey] !== activeChildStage?.[dataKey] && activeRootStage?.[dataKey] === stage[dataKey]) {
|
|
5378
|
+
stageLabel = activeChildStage?.[dataLabel] || stageLabel;
|
|
5379
|
+
stageColor = activeChildStage?.isSuccess ? "bg-green-50 text-green-700 border-2 border-green-700" : "bg-red-50 text-red-700 border-2 border-red-700";
|
|
5380
|
+
}
|
|
5381
|
+
const stageKey = typeof stage[dataKey] === "string" ? stage[dataKey] : JSON.stringify(stage[dataKey]);
|
|
5382
|
+
return /* @__PURE__ */ (0, import_jsx_runtime61.jsx)(import_react33.default.Fragment, { children: /* @__PURE__ */ (0, import_jsx_runtime61.jsxs)(Tooltip, { delayDuration: 500, disableHoverableContent: true, children: [
|
|
5383
|
+
/* @__PURE__ */ (0, import_jsx_runtime61.jsx)(TooltipTrigger, { asChild: true, children: /* @__PURE__ */ (0, import_jsx_runtime61.jsx)(
|
|
5263
5384
|
"button",
|
|
5264
5385
|
{
|
|
5265
5386
|
className: `
|
|
5266
5387
|
min-w-[70px] sm:min-w-[80px] w-full sm:w-auto px-3 sm:px-4 py-1.5 sm:py-2
|
|
5267
5388
|
rounded-full text-xs sm:text-sm font-medium transition-colors duration-200
|
|
5268
|
-
whitespace-normal sm:whitespace-nowrap flex-shrink-0
|
|
5269
|
-
${isActive ? "bg-green-700 text-white shadow-md" : isCompletedStage ?
|
|
5389
|
+
whitespace-normal sm:whitespace-nowrap flex-shrink-0 max-w-[150px] text-ellipsis overflow-hidden
|
|
5390
|
+
${isActive ? "bg-green-700 text-white shadow-md" : isCompletedStage ? stageColor : "bg-white text-gray-700 hover:bg-gray-100 border border-gray-200"}
|
|
5270
5391
|
${isMobile ? "flex-1 text-center py-2.5" : ""}
|
|
5271
5392
|
`,
|
|
5272
5393
|
onClick: () => {
|
|
5273
5394
|
if (isAllStagesCompleted) return;
|
|
5274
5395
|
onStageClick(stage[dataKey]);
|
|
5275
5396
|
},
|
|
5276
|
-
children:
|
|
5397
|
+
children: stageLabel
|
|
5277
5398
|
}
|
|
5278
|
-
),
|
|
5279
|
-
|
|
5280
|
-
|
|
5399
|
+
) }),
|
|
5400
|
+
/* @__PURE__ */ (0, import_jsx_runtime61.jsx)(TooltipContent, { className: "max-w-[400px] p-3 text-xs text-muted-foreground space-y-2", children: /* @__PURE__ */ (0, import_jsx_runtime61.jsx)("span", { children: /* @__PURE__ */ (0, import_jsx_runtime61.jsx)("b", { children: stageLabel }) }) }),
|
|
5401
|
+
!isMobile && index < stages.length - 1 && /* @__PURE__ */ (0, import_jsx_runtime61.jsx)("div", { className: "hidden sm:flex sm:flex-shrink-0 w-3 h-px bg-gray-300 sm:w-4" })
|
|
5402
|
+
] }, stageKey) }, stageKey);
|
|
5281
5403
|
})
|
|
5282
5404
|
}
|
|
5283
5405
|
),
|
|
5284
|
-
isShowBtn && /* @__PURE__ */ (0,
|
|
5406
|
+
isShowBtn && /* @__PURE__ */ (0, import_jsx_runtime61.jsx)(
|
|
5285
5407
|
"div",
|
|
5286
5408
|
{
|
|
5287
5409
|
className: `
|
|
5288
5410
|
flex items-center flex-shrink-0 w-full lg:w-auto
|
|
5289
5411
|
${isMobile ? "order-3 mt-3 lg:mt-0" : "order-3"}
|
|
5290
5412
|
`,
|
|
5291
|
-
children: /* @__PURE__ */ (0,
|
|
5413
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime61.jsx)(
|
|
5292
5414
|
"button",
|
|
5293
5415
|
{
|
|
5294
5416
|
className: `
|
|
@@ -5310,20 +5432,20 @@ var StagesComponent = ({
|
|
|
5310
5432
|
var Stages_default = StagesComponent;
|
|
5311
5433
|
|
|
5312
5434
|
// src/components/Navigation/Spacer/Spacer.tsx
|
|
5313
|
-
var
|
|
5435
|
+
var import_jsx_runtime62 = require("react/jsx-runtime");
|
|
5314
5436
|
var Spacer = ({ className, style }) => {
|
|
5315
|
-
return /* @__PURE__ */ (0,
|
|
5437
|
+
return /* @__PURE__ */ (0, import_jsx_runtime62.jsx)("div", { className: `${className}`, style });
|
|
5316
5438
|
};
|
|
5317
5439
|
var Spacer_default = Spacer;
|
|
5318
5440
|
|
|
5319
5441
|
// src/components/Navigation/Profile/Profile.tsx
|
|
5320
|
-
var
|
|
5442
|
+
var import_jsx_runtime63 = require("react/jsx-runtime");
|
|
5321
5443
|
|
|
5322
5444
|
// src/components/Navigation/Notification/Notification.tsx
|
|
5323
|
-
var
|
|
5445
|
+
var import_jsx_runtime64 = require("react/jsx-runtime");
|
|
5324
5446
|
|
|
5325
5447
|
// src/components/Navigation/Logo/Logo.tsx
|
|
5326
|
-
var
|
|
5448
|
+
var import_jsx_runtime65 = require("react/jsx-runtime");
|
|
5327
5449
|
|
|
5328
5450
|
// src/components/Navigation/Navbar/Navbar.tsx
|
|
5329
5451
|
var import_react34 = require("react");
|
|
@@ -5335,8 +5457,8 @@ var import_navigation3 = require("next/navigation");
|
|
|
5335
5457
|
// src/components/ui/avatar.tsx
|
|
5336
5458
|
var React12 = __toESM(require("react"));
|
|
5337
5459
|
var AvatarPrimitive = __toESM(require("@radix-ui/react-avatar"));
|
|
5338
|
-
var
|
|
5339
|
-
var Avatar = React12.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0,
|
|
5460
|
+
var import_jsx_runtime66 = require("react/jsx-runtime");
|
|
5461
|
+
var Avatar = React12.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime66.jsx)(
|
|
5340
5462
|
AvatarPrimitive.Root,
|
|
5341
5463
|
{
|
|
5342
5464
|
ref,
|
|
@@ -5348,7 +5470,7 @@ var Avatar = React12.forwardRef(({ className, ...props }, ref) => /* @__PURE__ *
|
|
|
5348
5470
|
}
|
|
5349
5471
|
));
|
|
5350
5472
|
Avatar.displayName = AvatarPrimitive.Root.displayName;
|
|
5351
|
-
var AvatarImage = React12.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0,
|
|
5473
|
+
var AvatarImage = React12.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime66.jsx)(
|
|
5352
5474
|
AvatarPrimitive.Image,
|
|
5353
5475
|
{
|
|
5354
5476
|
ref,
|
|
@@ -5357,7 +5479,7 @@ var AvatarImage = React12.forwardRef(({ className, ...props }, ref) => /* @__PUR
|
|
|
5357
5479
|
}
|
|
5358
5480
|
));
|
|
5359
5481
|
AvatarImage.displayName = AvatarPrimitive.Image.displayName;
|
|
5360
|
-
var AvatarFallback = React12.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0,
|
|
5482
|
+
var AvatarFallback = React12.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime66.jsx)(
|
|
5361
5483
|
AvatarPrimitive.Fallback,
|
|
5362
5484
|
{
|
|
5363
5485
|
ref,
|
|
@@ -5371,7 +5493,7 @@ var AvatarFallback = React12.forwardRef(({ className, ...props }, ref) => /* @__
|
|
|
5371
5493
|
AvatarFallback.displayName = AvatarPrimitive.Fallback.displayName;
|
|
5372
5494
|
|
|
5373
5495
|
// src/components/Navigation/Navbar/Navbar.tsx
|
|
5374
|
-
var
|
|
5496
|
+
var import_jsx_runtime67 = require("react/jsx-runtime");
|
|
5375
5497
|
function Navbar({
|
|
5376
5498
|
style,
|
|
5377
5499
|
badgeType,
|
|
@@ -5429,9 +5551,9 @@ function Navbar({
|
|
|
5429
5551
|
}
|
|
5430
5552
|
return list;
|
|
5431
5553
|
}, [source, navList, list]);
|
|
5432
|
-
const RenderSearchInput = () => /* @__PURE__ */ (0,
|
|
5433
|
-
/* @__PURE__ */ (0,
|
|
5434
|
-
/* @__PURE__ */ (0,
|
|
5554
|
+
const RenderSearchInput = () => /* @__PURE__ */ (0, import_jsx_runtime67.jsx)("div", { className: "flex-1 px-2", children: /* @__PURE__ */ (0, import_jsx_runtime67.jsxs)("div", { className: "relative w-full max-w-md border border-gray-300 rounded-md", children: [
|
|
5555
|
+
/* @__PURE__ */ (0, import_jsx_runtime67.jsx)(import_lucide_react18.Search, { className: "absolute left-3 top-1/2 -translate-y-1/2 h-4 w-4 dark:text-white text-gray-400" }),
|
|
5556
|
+
/* @__PURE__ */ (0, import_jsx_runtime67.jsx)(
|
|
5435
5557
|
Input,
|
|
5436
5558
|
{
|
|
5437
5559
|
placeholder: "Search",
|
|
@@ -5447,23 +5569,23 @@ function Navbar({
|
|
|
5447
5569
|
}
|
|
5448
5570
|
)
|
|
5449
5571
|
] }) });
|
|
5450
|
-
return /* @__PURE__ */ (0,
|
|
5451
|
-
/* @__PURE__ */ (0,
|
|
5572
|
+
return /* @__PURE__ */ (0, import_jsx_runtime67.jsxs)(import_jsx_runtime67.Fragment, { children: [
|
|
5573
|
+
/* @__PURE__ */ (0, import_jsx_runtime67.jsx)(
|
|
5452
5574
|
"nav",
|
|
5453
5575
|
{
|
|
5454
5576
|
className: "w-full min-h-[75px] border-b border-gray-200 dark:border-gray-800 dark:bg-gray-800 bg-white shadow-sm",
|
|
5455
5577
|
style,
|
|
5456
|
-
children: /* @__PURE__ */ (0,
|
|
5457
|
-
/* @__PURE__ */ (0,
|
|
5578
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime67.jsxs)("div", { className: "mx-auto flex max-w-[90%] items-center justify-between px-4 py-4", children: [
|
|
5579
|
+
/* @__PURE__ */ (0, import_jsx_runtime67.jsx)(
|
|
5458
5580
|
import_link4.default,
|
|
5459
5581
|
{
|
|
5460
5582
|
href: "/",
|
|
5461
5583
|
onClick: (e) => handleBuilderExit(e, "/"),
|
|
5462
5584
|
className: "flex items-center space-x-2",
|
|
5463
|
-
children: imageUrl ? /* @__PURE__ */ (0,
|
|
5585
|
+
children: imageUrl ? /* @__PURE__ */ (0, import_jsx_runtime67.jsx)(import_image2.default, { src: imageUrl, alt: altText, width: 180, height: 40 }) : /* @__PURE__ */ (0, import_jsx_runtime67.jsx)("span", { className: "font-semibold text-blue-700", children: "Logo" })
|
|
5464
5586
|
}
|
|
5465
5587
|
),
|
|
5466
|
-
isDesktop && /* @__PURE__ */ (0,
|
|
5588
|
+
isDesktop && /* @__PURE__ */ (0, import_jsx_runtime67.jsx)("div", { className: "hidden md:flex items-center space-x-6", children: formattedMenu.map((item) => /* @__PURE__ */ (0, import_jsx_runtime67.jsx)(
|
|
5467
5589
|
import_link4.default,
|
|
5468
5590
|
{
|
|
5469
5591
|
href: item.url,
|
|
@@ -5473,23 +5595,23 @@ function Navbar({
|
|
|
5473
5595
|
},
|
|
5474
5596
|
item.id
|
|
5475
5597
|
)) }),
|
|
5476
|
-
/* @__PURE__ */ (0,
|
|
5477
|
-
(isDesktop || isTablet) && /* @__PURE__ */ (0,
|
|
5478
|
-
/* @__PURE__ */ (0,
|
|
5479
|
-
/* @__PURE__ */ (0,
|
|
5480
|
-
badgeType === "number" && !(hideBadgeWhenZero && badgeCount === 0) && Number(badgeCount) > 0 ? /* @__PURE__ */ (0,
|
|
5598
|
+
/* @__PURE__ */ (0, import_jsx_runtime67.jsxs)("div", { className: "flex items-center space-x-3", children: [
|
|
5599
|
+
(isDesktop || isTablet) && /* @__PURE__ */ (0, import_jsx_runtime67.jsx)(RenderSearchInput, {}),
|
|
5600
|
+
/* @__PURE__ */ (0, import_jsx_runtime67.jsxs)("div", { className: "relative bg-gray-200 dark:bg-gray-700 rounded-md", children: [
|
|
5601
|
+
/* @__PURE__ */ (0, import_jsx_runtime67.jsx)(Button, { variant: "ghost", size: "icon", children: /* @__PURE__ */ (0, import_jsx_runtime67.jsx)(import_lucide_react18.Bell, { className: "h-5 w-5 text-gray-700 dark:text-gray-300" }) }),
|
|
5602
|
+
badgeType === "number" && !(hideBadgeWhenZero && badgeCount === 0) && Number(badgeCount) > 0 ? /* @__PURE__ */ (0, import_jsx_runtime67.jsx)("span", { className: "absolute -top-1 -right-1 h-4 w-4 flex items-center justify-center bg-red-500 rounded-full text-white text-[10px]", children: badgeCount }) : !hideBadgeWhenZero && /* @__PURE__ */ (0, import_jsx_runtime67.jsx)("span", { className: "absolute -top-1 -right-1 h-2 w-2 bg-red-500 rounded-full" })
|
|
5481
5603
|
] }),
|
|
5482
|
-
/* @__PURE__ */ (0,
|
|
5483
|
-
/* @__PURE__ */ (0,
|
|
5484
|
-
!isMobile && showName && /* @__PURE__ */ (0,
|
|
5485
|
-
/* @__PURE__ */ (0,
|
|
5486
|
-
(isMobile || isTablet) && /* @__PURE__ */ (0,
|
|
5604
|
+
/* @__PURE__ */ (0, import_jsx_runtime67.jsxs)(DropdownMenu, { children: [
|
|
5605
|
+
/* @__PURE__ */ (0, import_jsx_runtime67.jsx)(DropdownMenuTrigger, { asChild: true, children: /* @__PURE__ */ (0, import_jsx_runtime67.jsxs)("div", { className: "flex items-center space-x-2 cursor-pointer", children: [
|
|
5606
|
+
!isMobile && showName && /* @__PURE__ */ (0, import_jsx_runtime67.jsx)("h4", { className: "text-gray-900 dark:text-gray-300 text-sm", children: userName }),
|
|
5607
|
+
/* @__PURE__ */ (0, import_jsx_runtime67.jsx)(Avatar, { className: "h-8 w-8", children: profileType === "avatar" ? /* @__PURE__ */ (0, import_jsx_runtime67.jsx)(AvatarImage, { src: "/images/appbuilder/toolset/profile.svg", alt: "profile" }) : /* @__PURE__ */ (0, import_jsx_runtime67.jsx)("div", { className: "bg-green-700 text-white h-full w-full rounded-full flex items-center justify-center text-xs", children: getInitials(userName) }) }),
|
|
5608
|
+
(isMobile || isTablet) && /* @__PURE__ */ (0, import_jsx_runtime67.jsx)(Button, { variant: "ghost", size: "icon", children: /* @__PURE__ */ (0, import_jsx_runtime67.jsx)(import_lucide_react18.Menu, { className: "h-6 w-6" }) })
|
|
5487
5609
|
] }) }),
|
|
5488
|
-
/* @__PURE__ */ (0,
|
|
5489
|
-
profileMenu.map((item) => /* @__PURE__ */ (0,
|
|
5490
|
-
(isMobile || isTablet) && /* @__PURE__ */ (0,
|
|
5491
|
-
/* @__PURE__ */ (0,
|
|
5492
|
-
formattedMenu.map((item) => /* @__PURE__ */ (0,
|
|
5610
|
+
/* @__PURE__ */ (0, import_jsx_runtime67.jsxs)(DropdownMenuContent, { align: "end", className: "bg-white dark:bg-gray-800", children: [
|
|
5611
|
+
profileMenu.map((item) => /* @__PURE__ */ (0, import_jsx_runtime67.jsx)(DropdownMenuItem, { children: /* @__PURE__ */ (0, import_jsx_runtime67.jsx)(import_link4.default, { href: item.url, onClick: (e) => handleBuilderExit(e, item.url), children: item.header }) }, item.id)),
|
|
5612
|
+
(isMobile || isTablet) && /* @__PURE__ */ (0, import_jsx_runtime67.jsxs)(import_jsx_runtime67.Fragment, { children: [
|
|
5613
|
+
/* @__PURE__ */ (0, import_jsx_runtime67.jsx)(DropdownMenuSeparator, {}),
|
|
5614
|
+
formattedMenu.map((item) => /* @__PURE__ */ (0, import_jsx_runtime67.jsx)(DropdownMenuItem, { children: /* @__PURE__ */ (0, import_jsx_runtime67.jsx)(import_link4.default, { href: item.url, onClick: (e) => handleBuilderExit(e, item.url), children: item.header }) }, item.id))
|
|
5493
5615
|
] })
|
|
5494
5616
|
] })
|
|
5495
5617
|
] })
|
|
@@ -5497,7 +5619,7 @@ function Navbar({
|
|
|
5497
5619
|
] })
|
|
5498
5620
|
}
|
|
5499
5621
|
),
|
|
5500
|
-
isMobile && /* @__PURE__ */ (0,
|
|
5622
|
+
isMobile && /* @__PURE__ */ (0, import_jsx_runtime67.jsx)("div", { className: "p-3", children: /* @__PURE__ */ (0, import_jsx_runtime67.jsx)(RenderSearchInput, {}) })
|
|
5501
5623
|
] });
|
|
5502
5624
|
}
|
|
5503
5625
|
|
|
@@ -5505,7 +5627,7 @@ function Navbar({
|
|
|
5505
5627
|
var import_react35 = __toESM(require("react"));
|
|
5506
5628
|
var import_axios3 = __toESM(require("axios"));
|
|
5507
5629
|
var import_recharts = require("recharts");
|
|
5508
|
-
var
|
|
5630
|
+
var import_jsx_runtime68 = require("react/jsx-runtime");
|
|
5509
5631
|
var getRandomColor = () => {
|
|
5510
5632
|
const palette = [
|
|
5511
5633
|
"#2563eb",
|
|
@@ -5632,27 +5754,27 @@ var ChartComponent = ({
|
|
|
5632
5754
|
const chartType = props.chartType || "bar";
|
|
5633
5755
|
const legendsPosition = ["middle", "bottom"].includes(props.legendsPosition) ? props.legendsPosition : "top";
|
|
5634
5756
|
if (effectiveLoading || data.length === 0) {
|
|
5635
|
-
return /* @__PURE__ */ (0,
|
|
5757
|
+
return /* @__PURE__ */ (0, import_jsx_runtime68.jsxs)(
|
|
5636
5758
|
"div",
|
|
5637
5759
|
{
|
|
5638
5760
|
className: `relative flex flex-col w-full h-[300px] md:h-[400px] bg-gradient-to-br from-gray-50 to-gray-100 rounded-xl p-6 ${className}`,
|
|
5639
5761
|
style,
|
|
5640
5762
|
children: [
|
|
5641
|
-
/* @__PURE__ */ (0,
|
|
5642
|
-
/* @__PURE__ */ (0,
|
|
5643
|
-
/* @__PURE__ */ (0,
|
|
5763
|
+
/* @__PURE__ */ (0, import_jsx_runtime68.jsx)("div", { className: "mb-6 flex justify-center", children: /* @__PURE__ */ (0, import_jsx_runtime68.jsxs)("div", { className: "inline-flex items-center space-x-2 bg-white/90 px-6 py-2.5 rounded-xl backdrop-blur-sm border border-gray-200 shadow-lg", children: [
|
|
5764
|
+
/* @__PURE__ */ (0, import_jsx_runtime68.jsx)("div", { className: "w-5 h-5 border-2 border-gray-400 border-t-blue-500 rounded-full animate-spin" }),
|
|
5765
|
+
/* @__PURE__ */ (0, import_jsx_runtime68.jsx)("span", { className: "text-sm font-medium text-gray-700 bg-gradient-to-r from-gray-300 bg-clip-text animate-pulse", children: "Loading chart data..." })
|
|
5644
5766
|
] }) }),
|
|
5645
|
-
/* @__PURE__ */ (0,
|
|
5646
|
-
/* @__PURE__ */ (0,
|
|
5767
|
+
/* @__PURE__ */ (0, import_jsx_runtime68.jsx)("div", { className: "absolute inset-0 bg-gradient-to-r from-transparent via-white/60 to-transparent animate-shimmer rounded-xl" }),
|
|
5768
|
+
/* @__PURE__ */ (0, import_jsx_runtime68.jsx)("div", { className: "flex-1 relative w-full h-full min-h-[240px] md:min-h-[320px] bg-white/80 rounded-lg border border-gray-200/50 shadow-sm", children: /* @__PURE__ */ (0, import_jsx_runtime68.jsx)("div", { className: "absolute bottom-0 left-4 right-4 flex gap-2 h-[200px] md:h-[280px] justify-center items-end", children: [...Array(20)].map((_, idx) => {
|
|
5647
5769
|
const randomHeight = `${Math.floor(Math.random() * 76) + 20}%`;
|
|
5648
|
-
return /* @__PURE__ */ (0,
|
|
5770
|
+
return /* @__PURE__ */ (0, import_jsx_runtime68.jsxs)(
|
|
5649
5771
|
"div",
|
|
5650
5772
|
{
|
|
5651
5773
|
className: `relative w-10 md:w-12 flex-1 max-w-[48px] rounded-t-lg bg-gradient-to-t from-gray-100 via-gray-200 to-transparent shadow-lg border border-gray-200/50 animate-slide-up stagger-${idx} overflow-hidden`,
|
|
5652
5774
|
style: { height: randomHeight, animationDelay: `${idx * 0.08}s` },
|
|
5653
5775
|
children: [
|
|
5654
|
-
/* @__PURE__ */ (0,
|
|
5655
|
-
/* @__PURE__ */ (0,
|
|
5776
|
+
/* @__PURE__ */ (0, import_jsx_runtime68.jsx)("div", { className: "absolute inset-0 bg-gradient-to-r from-white/40 via-transparent to-white/40 animate-shimmer-bar" }),
|
|
5777
|
+
/* @__PURE__ */ (0, import_jsx_runtime68.jsx)("div", { className: "absolute bottom-1 left-1/2 w-4 h-1 rounded-full transform -translate-x-1/2 blur-sm" })
|
|
5656
5778
|
]
|
|
5657
5779
|
},
|
|
5658
5780
|
`bar-${idx}`
|
|
@@ -5662,9 +5784,9 @@ var ChartComponent = ({
|
|
|
5662
5784
|
}
|
|
5663
5785
|
);
|
|
5664
5786
|
}
|
|
5665
|
-
return /* @__PURE__ */ (0,
|
|
5666
|
-
isPaginationEnabled && rawMeta && /* @__PURE__ */ (0,
|
|
5667
|
-
/* @__PURE__ */ (0,
|
|
5787
|
+
return /* @__PURE__ */ (0, import_jsx_runtime68.jsxs)("div", { className: `${className} h-[450px]`, style, children: [
|
|
5788
|
+
isPaginationEnabled && rawMeta && /* @__PURE__ */ (0, import_jsx_runtime68.jsxs)("div", { className: "flex items-center justify-between mb-4 px-2", children: [
|
|
5789
|
+
/* @__PURE__ */ (0, import_jsx_runtime68.jsxs)("div", { className: "text-sm text-gray-600 hidden sm:block", children: [
|
|
5668
5790
|
"Page ",
|
|
5669
5791
|
rawMeta.page,
|
|
5670
5792
|
" of ",
|
|
@@ -5673,52 +5795,52 @@ var ChartComponent = ({
|
|
|
5673
5795
|
rawMeta.total.toLocaleString(),
|
|
5674
5796
|
" total records)"
|
|
5675
5797
|
] }),
|
|
5676
|
-
/* @__PURE__ */ (0,
|
|
5677
|
-
/* @__PURE__ */ (0,
|
|
5798
|
+
/* @__PURE__ */ (0, import_jsx_runtime68.jsxs)("div", { className: "flex items-center space-x-2 sm:hidden w-full justify-center", children: [
|
|
5799
|
+
/* @__PURE__ */ (0, import_jsx_runtime68.jsx)(
|
|
5678
5800
|
"button",
|
|
5679
5801
|
{
|
|
5680
5802
|
onClick: () => handlePageChange(currentPage - 1),
|
|
5681
5803
|
disabled: currentPage === 1 || localLoading,
|
|
5682
5804
|
className: "flex-1 px-3 py-2 text-xs font-medium rounded-lg border bg-white shadow-sm hover:bg-gray-50 disabled:opacity-50 disabled:cursor-not-allowed transition-all duration-200 flex items-center justify-center space-x-1 min-w-0",
|
|
5683
|
-
children: /* @__PURE__ */ (0,
|
|
5805
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime68.jsx)("span", { children: "\u2190 Prev" })
|
|
5684
5806
|
}
|
|
5685
5807
|
),
|
|
5686
|
-
/* @__PURE__ */ (0,
|
|
5687
|
-
/* @__PURE__ */ (0,
|
|
5808
|
+
/* @__PURE__ */ (0, import_jsx_runtime68.jsx)("span", { className: "px-2 py-2 text-xs font-semibold text-gray-700 min-w-[36px] text-center flex-shrink-0", children: currentPage }),
|
|
5809
|
+
/* @__PURE__ */ (0, import_jsx_runtime68.jsx)(
|
|
5688
5810
|
"button",
|
|
5689
5811
|
{
|
|
5690
5812
|
onClick: () => handlePageChange(currentPage + 1),
|
|
5691
5813
|
disabled: currentPage >= rawMeta.pages || localLoading,
|
|
5692
5814
|
className: "flex-1 px-3 py-2 text-xs font-medium rounded-lg border bg-white shadow-sm hover:bg-gray-50 disabled:opacity-50 disabled:cursor-not-allowed transition-all duration-200 flex items-center justify-center space-x-1 min-w-0",
|
|
5693
|
-
children: /* @__PURE__ */ (0,
|
|
5815
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime68.jsx)("span", { children: "Next \u2192" })
|
|
5694
5816
|
}
|
|
5695
5817
|
)
|
|
5696
5818
|
] }),
|
|
5697
|
-
/* @__PURE__ */ (0,
|
|
5698
|
-
/* @__PURE__ */ (0,
|
|
5819
|
+
/* @__PURE__ */ (0, import_jsx_runtime68.jsxs)("div", { className: "flex items-center space-x-2 hidden sm:flex", children: [
|
|
5820
|
+
/* @__PURE__ */ (0, import_jsx_runtime68.jsx)(
|
|
5699
5821
|
"button",
|
|
5700
5822
|
{
|
|
5701
5823
|
onClick: () => handlePageChange(currentPage - 1),
|
|
5702
5824
|
disabled: currentPage === 1 || localLoading,
|
|
5703
5825
|
className: "px-3 py-1.5 text-sm font-medium rounded-lg border bg-white shadow-sm hover:bg-gray-50 disabled:opacity-50 disabled:cursor-not-allowed transition-all duration-200 flex items-center space-x-1",
|
|
5704
|
-
children: /* @__PURE__ */ (0,
|
|
5826
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime68.jsx)("span", { children: "\u2190 Prev" })
|
|
5705
5827
|
}
|
|
5706
5828
|
),
|
|
5707
|
-
/* @__PURE__ */ (0,
|
|
5708
|
-
/* @__PURE__ */ (0,
|
|
5829
|
+
/* @__PURE__ */ (0, import_jsx_runtime68.jsx)("span", { className: "px-3 py-1 text-sm font-medium text-gray-700", children: currentPage }),
|
|
5830
|
+
/* @__PURE__ */ (0, import_jsx_runtime68.jsx)(
|
|
5709
5831
|
"button",
|
|
5710
5832
|
{
|
|
5711
5833
|
onClick: () => handlePageChange(currentPage + 1),
|
|
5712
5834
|
disabled: currentPage >= rawMeta.pages || localLoading,
|
|
5713
5835
|
className: "px-3 py-1.5 text-sm font-medium rounded-lg border bg-white shadow-sm hover:bg-gray-50 disabled:opacity-50 disabled:cursor-not-allowed transition-all duration-200 flex items-center space-x-1",
|
|
5714
|
-
children: /* @__PURE__ */ (0,
|
|
5836
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime68.jsx)("span", { children: "Next \u2192" })
|
|
5715
5837
|
}
|
|
5716
5838
|
)
|
|
5717
5839
|
] })
|
|
5718
5840
|
] }),
|
|
5719
|
-
/* @__PURE__ */ (0,
|
|
5720
|
-
/* @__PURE__ */ (0,
|
|
5721
|
-
/* @__PURE__ */ (0,
|
|
5841
|
+
/* @__PURE__ */ (0, import_jsx_runtime68.jsx)(import_recharts.ResponsiveContainer, { width: "100%", height: "100%", children: chartType === "bar" ? /* @__PURE__ */ (0, import_jsx_runtime68.jsxs)(import_recharts.BarChart, { data, children: [
|
|
5842
|
+
/* @__PURE__ */ (0, import_jsx_runtime68.jsx)(import_recharts.CartesianGrid, { strokeDasharray: "3 3" }),
|
|
5843
|
+
/* @__PURE__ */ (0, import_jsx_runtime68.jsx)(
|
|
5722
5844
|
import_recharts.XAxis,
|
|
5723
5845
|
{
|
|
5724
5846
|
dataKey: dataLabel,
|
|
@@ -5736,7 +5858,7 @@ var ChartComponent = ({
|
|
|
5736
5858
|
className: "hidden sm:block"
|
|
5737
5859
|
}
|
|
5738
5860
|
),
|
|
5739
|
-
/* @__PURE__ */ (0,
|
|
5861
|
+
/* @__PURE__ */ (0, import_jsx_runtime68.jsx)(
|
|
5740
5862
|
import_recharts.YAxis,
|
|
5741
5863
|
{
|
|
5742
5864
|
tickFormatter: (value) => `${(value / 1e3).toFixed(0)}k`,
|
|
@@ -5749,9 +5871,9 @@ var ChartComponent = ({
|
|
|
5749
5871
|
width: 60
|
|
5750
5872
|
}
|
|
5751
5873
|
),
|
|
5752
|
-
/* @__PURE__ */ (0,
|
|
5753
|
-
/* @__PURE__ */ (0,
|
|
5754
|
-
/* @__PURE__ */ (0,
|
|
5874
|
+
/* @__PURE__ */ (0, import_jsx_runtime68.jsx)(import_recharts.Tooltip, { formatter: (value) => [`${value}`, "Count"] }),
|
|
5875
|
+
/* @__PURE__ */ (0, import_jsx_runtime68.jsx)(import_recharts.Legend, { verticalAlign: legendsPosition, align: "center" }),
|
|
5876
|
+
/* @__PURE__ */ (0, import_jsx_runtime68.jsx)(
|
|
5755
5877
|
import_recharts.Bar,
|
|
5756
5878
|
{
|
|
5757
5879
|
dataKey,
|
|
@@ -5759,13 +5881,13 @@ var ChartComponent = ({
|
|
|
5759
5881
|
isAnimationActive: false
|
|
5760
5882
|
}
|
|
5761
5883
|
)
|
|
5762
|
-
] }) : /* @__PURE__ */ (0,
|
|
5763
|
-
/* @__PURE__ */ (0,
|
|
5764
|
-
/* @__PURE__ */ (0,
|
|
5765
|
-
/* @__PURE__ */ (0,
|
|
5884
|
+
] }) : /* @__PURE__ */ (0, import_jsx_runtime68.jsxs)(import_recharts.AreaChart, { data, children: [
|
|
5885
|
+
/* @__PURE__ */ (0, import_jsx_runtime68.jsx)("defs", { children: /* @__PURE__ */ (0, import_jsx_runtime68.jsxs)("linearGradient", { id: "colorCount", x1: "0", y1: "0", x2: "0", y2: "1", children: [
|
|
5886
|
+
/* @__PURE__ */ (0, import_jsx_runtime68.jsx)("stop", { offset: "5%", stopColor: "#00695C", stopOpacity: 0.8 }),
|
|
5887
|
+
/* @__PURE__ */ (0, import_jsx_runtime68.jsx)("stop", { offset: "95%", stopColor: "#00695C", stopOpacity: 0 })
|
|
5766
5888
|
] }) }),
|
|
5767
|
-
/* @__PURE__ */ (0,
|
|
5768
|
-
/* @__PURE__ */ (0,
|
|
5889
|
+
/* @__PURE__ */ (0, import_jsx_runtime68.jsx)(import_recharts.CartesianGrid, { strokeDasharray: "3 3" }),
|
|
5890
|
+
/* @__PURE__ */ (0, import_jsx_runtime68.jsx)(
|
|
5769
5891
|
import_recharts.XAxis,
|
|
5770
5892
|
{
|
|
5771
5893
|
dataKey: dataLabel,
|
|
@@ -5779,7 +5901,7 @@ var ChartComponent = ({
|
|
|
5779
5901
|
}
|
|
5780
5902
|
}
|
|
5781
5903
|
),
|
|
5782
|
-
/* @__PURE__ */ (0,
|
|
5904
|
+
/* @__PURE__ */ (0, import_jsx_runtime68.jsx)(
|
|
5783
5905
|
import_recharts.YAxis,
|
|
5784
5906
|
{
|
|
5785
5907
|
tickFormatter: (value) => `${(value / 1e3).toFixed(0)}k`,
|
|
@@ -5792,8 +5914,8 @@ var ChartComponent = ({
|
|
|
5792
5914
|
width: 60
|
|
5793
5915
|
}
|
|
5794
5916
|
),
|
|
5795
|
-
/* @__PURE__ */ (0,
|
|
5796
|
-
/* @__PURE__ */ (0,
|
|
5917
|
+
/* @__PURE__ */ (0, import_jsx_runtime68.jsx)(import_recharts.Tooltip, { formatter: (value) => `${value}k` }),
|
|
5918
|
+
/* @__PURE__ */ (0, import_jsx_runtime68.jsx)(
|
|
5797
5919
|
import_recharts.Area,
|
|
5798
5920
|
{
|
|
5799
5921
|
type: "monotone",
|
|
@@ -5813,7 +5935,7 @@ var BarChart_default = import_react35.default.memo(ChartComponent);
|
|
|
5813
5935
|
var import_react36 = __toESM(require("react"));
|
|
5814
5936
|
var import_axios4 = __toESM(require("axios"));
|
|
5815
5937
|
var import_recharts2 = require("recharts");
|
|
5816
|
-
var
|
|
5938
|
+
var import_jsx_runtime69 = require("react/jsx-runtime");
|
|
5817
5939
|
var getRandomColor2 = () => {
|
|
5818
5940
|
const palette = [
|
|
5819
5941
|
"#2563eb",
|
|
@@ -5982,32 +6104,32 @@ var DonutChart = ({
|
|
|
5982
6104
|
}, []);
|
|
5983
6105
|
const renderLegends = (0, import_react36.useMemo)(() => {
|
|
5984
6106
|
if (!showLegends) return null;
|
|
5985
|
-
return /* @__PURE__ */ (0,
|
|
6107
|
+
return /* @__PURE__ */ (0, import_jsx_runtime69.jsx)("div", { className: "flex flex-wrap justify-center gap-2 mt-4 w-full max-w-4xl", children: chartData.map((d, index) => {
|
|
5986
6108
|
const actualValue = data.find(
|
|
5987
6109
|
(item) => item[dataLabel] === d[dataLabel]
|
|
5988
6110
|
)?.[dataKey] ?? d[dataKey];
|
|
5989
6111
|
const displayValue = actualValue >= 1e3 ? `${(actualValue / 1e3).toFixed(0)}k` : actualValue.toLocaleString();
|
|
5990
|
-
return /* @__PURE__ */ (0,
|
|
6112
|
+
return /* @__PURE__ */ (0, import_jsx_runtime69.jsxs)(
|
|
5991
6113
|
"div",
|
|
5992
6114
|
{
|
|
5993
6115
|
className: "flex items-center space-x-2 rounded-lg border border-gray-200/50 px-3 py-1.5 w-[48%] sm:w-[32%] md:w-auto bg-white/80 backdrop-blur-sm shadow-sm hover:shadow-md transition-all",
|
|
5994
6116
|
children: [
|
|
5995
|
-
/* @__PURE__ */ (0,
|
|
6117
|
+
/* @__PURE__ */ (0, import_jsx_runtime69.jsx)(
|
|
5996
6118
|
"span",
|
|
5997
6119
|
{
|
|
5998
6120
|
className: "inline-block w-[12px] h-[12px] rounded-full shrink-0 border-2 border-white/50",
|
|
5999
6121
|
style: { backgroundColor: d.color }
|
|
6000
6122
|
}
|
|
6001
6123
|
),
|
|
6002
|
-
/* @__PURE__ */ (0,
|
|
6003
|
-
/* @__PURE__ */ (0,
|
|
6004
|
-
/* @__PURE__ */ (0,
|
|
6005
|
-
/* @__PURE__ */ (0,
|
|
6006
|
-
/* @__PURE__ */ (0,
|
|
6124
|
+
/* @__PURE__ */ (0, import_jsx_runtime69.jsxs)("div", { className: "min-w-0 flex-1", children: [
|
|
6125
|
+
/* @__PURE__ */ (0, import_jsx_runtime69.jsx)("span", { className: "text-gray-900 text-[11px] md:text-[13px] font-semibold block truncate leading-tight", children: d[dataLabel] }),
|
|
6126
|
+
/* @__PURE__ */ (0, import_jsx_runtime69.jsxs)("div", { className: "flex items-center gap-1 text-xs text-gray-600 font-medium", children: [
|
|
6127
|
+
/* @__PURE__ */ (0, import_jsx_runtime69.jsx)("span", { children: displayValue }),
|
|
6128
|
+
/* @__PURE__ */ (0, import_jsx_runtime69.jsxs)("span", { children: [
|
|
6007
6129
|
(actualValue / total * 100).toFixed(1),
|
|
6008
6130
|
"%"
|
|
6009
6131
|
] }),
|
|
6010
|
-
d.isBoosted && /* @__PURE__ */ (0,
|
|
6132
|
+
d.isBoosted && /* @__PURE__ */ (0, import_jsx_runtime69.jsx)("span", { className: "text-[9px] px-1 py-0.5 bg-blue-100 text-blue-700 rounded-full", children: "min" })
|
|
6011
6133
|
] })
|
|
6012
6134
|
] })
|
|
6013
6135
|
]
|
|
@@ -6018,26 +6140,26 @@ var DonutChart = ({
|
|
|
6018
6140
|
}, [chartData, data, dataLabel, dataKey, total, showLegends]);
|
|
6019
6141
|
if (!mounted) return null;
|
|
6020
6142
|
if (effectiveLoading || data.length === 0) {
|
|
6021
|
-
return /* @__PURE__ */ (0,
|
|
6143
|
+
return /* @__PURE__ */ (0, import_jsx_runtime69.jsxs)(
|
|
6022
6144
|
"div",
|
|
6023
6145
|
{
|
|
6024
6146
|
className: `relative flex flex-col items-center w-full h-[300px] md:h-[400px] bg-gradient-to-br from-gray-50 to-gray-100 rounded-xl p-6 ${className}`,
|
|
6025
6147
|
style,
|
|
6026
6148
|
children: [
|
|
6027
|
-
/* @__PURE__ */ (0,
|
|
6028
|
-
/* @__PURE__ */ (0,
|
|
6029
|
-
/* @__PURE__ */ (0,
|
|
6030
|
-
/* @__PURE__ */ (0,
|
|
6149
|
+
/* @__PURE__ */ (0, import_jsx_runtime69.jsx)("div", { className: "absolute inset-0 bg-gradient-to-r from-transparent via-white/60 to-transparent animate-shimmer rounded-xl" }),
|
|
6150
|
+
/* @__PURE__ */ (0, import_jsx_runtime69.jsx)("div", { className: "mt-6 text-center", children: /* @__PURE__ */ (0, import_jsx_runtime69.jsxs)("div", { className: "inline-flex items-center space-x-2 bg-white/80 px-6 py-2 rounded-full backdrop-blur-sm border border-gray-200 shadow-lg", children: [
|
|
6151
|
+
/* @__PURE__ */ (0, import_jsx_runtime69.jsx)("div", { className: "w-5 h-5 border-2 border-gray-300 border-t-blue-400 rounded-full animate-spin" }),
|
|
6152
|
+
/* @__PURE__ */ (0, import_jsx_runtime69.jsx)("span", { className: "text-sm font-medium text-gray-600 bg-gradient-to-r from-gray-300 bg-clip-text animate-pulse", children: "Loading chart data..." })
|
|
6031
6153
|
] }) }),
|
|
6032
|
-
/* @__PURE__ */ (0,
|
|
6154
|
+
/* @__PURE__ */ (0, import_jsx_runtime69.jsx)("div", { className: "flex flex-wrap justify-center gap-3 mt-8 w-full max-w-4xl", children: [...Array(18)].map((_, idx) => /* @__PURE__ */ (0, import_jsx_runtime69.jsxs)(
|
|
6033
6155
|
"div",
|
|
6034
6156
|
{
|
|
6035
6157
|
className: `h-10 w-[48%] sm:w-[32%] md:w-32 rounded-xl bg-gradient-to-r from-gray-200 via-gray-300/50 to-gray-200 p-3 flex items-center space-x-3 animate-slide-up stagger-${idx} shadow-sm border border-gray-200/50`,
|
|
6036
6158
|
children: [
|
|
6037
|
-
/* @__PURE__ */ (0,
|
|
6038
|
-
/* @__PURE__ */ (0,
|
|
6039
|
-
/* @__PURE__ */ (0,
|
|
6040
|
-
/* @__PURE__ */ (0,
|
|
6159
|
+
/* @__PURE__ */ (0, import_jsx_runtime69.jsx)("div", { className: "w-4 h-4 rounded-full bg-gradient-to-r from-blue-300 to-purple-300 animate-pulse" }),
|
|
6160
|
+
/* @__PURE__ */ (0, import_jsx_runtime69.jsxs)("div", { className: "flex-1 space-y-1", children: [
|
|
6161
|
+
/* @__PURE__ */ (0, import_jsx_runtime69.jsx)("div", { className: "h-3 w-20 bg-gray-300 rounded animate-pulse" }),
|
|
6162
|
+
/* @__PURE__ */ (0, import_jsx_runtime69.jsx)("div", { className: "h-2.5 w-16 bg-gray-200/60 rounded animate-pulse-delayed" })
|
|
6041
6163
|
] })
|
|
6042
6164
|
]
|
|
6043
6165
|
},
|
|
@@ -6050,10 +6172,10 @@ var DonutChart = ({
|
|
|
6050
6172
|
const { inner, outer } = getDynamicRadius();
|
|
6051
6173
|
const innerRadius = inner;
|
|
6052
6174
|
const outerRadius = outer;
|
|
6053
|
-
return /* @__PURE__ */ (0,
|
|
6054
|
-
/* @__PURE__ */ (0,
|
|
6055
|
-
/* @__PURE__ */ (0,
|
|
6056
|
-
/* @__PURE__ */ (0,
|
|
6175
|
+
return /* @__PURE__ */ (0, import_jsx_runtime69.jsxs)("div", { className: `relative flex flex-col items-center ${className}`, style, children: [
|
|
6176
|
+
/* @__PURE__ */ (0, import_jsx_runtime69.jsxs)("div", { className: "relative w-full md:w-[75%] h-[280px] md:h-[380px] flex items-center justify-center mb-2", children: [
|
|
6177
|
+
/* @__PURE__ */ (0, import_jsx_runtime69.jsx)(import_recharts2.ResponsiveContainer, { width: "100%", height: "100%", children: /* @__PURE__ */ (0, import_jsx_runtime69.jsxs)(import_recharts2.PieChart, { children: [
|
|
6178
|
+
/* @__PURE__ */ (0, import_jsx_runtime69.jsx)(
|
|
6057
6179
|
import_recharts2.Pie,
|
|
6058
6180
|
{
|
|
6059
6181
|
data: chartData,
|
|
@@ -6066,7 +6188,7 @@ var DonutChart = ({
|
|
|
6066
6188
|
isAnimationActive: true,
|
|
6067
6189
|
animationDuration: 800,
|
|
6068
6190
|
minAngle: 3,
|
|
6069
|
-
children: chartData.map((entry, index) => /* @__PURE__ */ (0,
|
|
6191
|
+
children: chartData.map((entry, index) => /* @__PURE__ */ (0, import_jsx_runtime69.jsx)(
|
|
6070
6192
|
import_recharts2.Cell,
|
|
6071
6193
|
{
|
|
6072
6194
|
fill: entry.color,
|
|
@@ -6077,7 +6199,7 @@ var DonutChart = ({
|
|
|
6077
6199
|
))
|
|
6078
6200
|
}
|
|
6079
6201
|
),
|
|
6080
|
-
/* @__PURE__ */ (0,
|
|
6202
|
+
/* @__PURE__ */ (0, import_jsx_runtime69.jsx)(
|
|
6081
6203
|
import_recharts2.Tooltip,
|
|
6082
6204
|
{
|
|
6083
6205
|
formatter: (value, name, payload) => {
|
|
@@ -6100,9 +6222,9 @@ var DonutChart = ({
|
|
|
6100
6222
|
}
|
|
6101
6223
|
)
|
|
6102
6224
|
] }) }),
|
|
6103
|
-
total > 0 && /* @__PURE__ */ (0,
|
|
6225
|
+
total > 0 && /* @__PURE__ */ (0, import_jsx_runtime69.jsx)("div", { className: `absolute left-1/2 top-1/2 -translate-x-1/2 -translate-y-1/2 text-center pointer-events-none ${forceMobile ? "text-xl px-2" : "text-3xl px-4"} font-bold bg-white/90 backdrop-blur-sm rounded-full py-1 shadow-lg`, children: /* @__PURE__ */ (0, import_jsx_runtime69.jsxs)("div", { className: "text-[#1f2937] leading-tight", children: [
|
|
6104
6226
|
formattedTotal,
|
|
6105
|
-
/* @__PURE__ */ (0,
|
|
6227
|
+
/* @__PURE__ */ (0, import_jsx_runtime69.jsx)("span", { className: "text-sm md:text-base font-normal text-gray-600 block md:inline-block md:ml-1", children: "total" })
|
|
6106
6228
|
] }) })
|
|
6107
6229
|
] }),
|
|
6108
6230
|
renderLegends
|
|
@@ -6111,10 +6233,10 @@ var DonutChart = ({
|
|
|
6111
6233
|
var PieChart_default = import_react36.default.memo(DonutChart);
|
|
6112
6234
|
|
|
6113
6235
|
// src/components/Blocks/EmailComposer.tsx
|
|
6114
|
-
var
|
|
6236
|
+
var import_jsx_runtime70 = require("react/jsx-runtime");
|
|
6115
6237
|
function EmailComposer({ className, style, to, setTo, showCc, setShowCc, showBcc, setShowBcc, cc, setCc, bcc, setBcc, subject, setSubject, body, setBody }) {
|
|
6116
|
-
return /* @__PURE__ */ (0,
|
|
6117
|
-
/* @__PURE__ */ (0,
|
|
6238
|
+
return /* @__PURE__ */ (0, import_jsx_runtime70.jsx)("div", { className, style, children: /* @__PURE__ */ (0, import_jsx_runtime70.jsxs)("div", { className: "border rounded-md shadow bg-[#fff] p-4 mx-auto z-[50] relative", children: [
|
|
6239
|
+
/* @__PURE__ */ (0, import_jsx_runtime70.jsx)("div", { className: "mb-3", children: /* @__PURE__ */ (0, import_jsx_runtime70.jsx)(
|
|
6118
6240
|
"input",
|
|
6119
6241
|
{
|
|
6120
6242
|
type: "email",
|
|
@@ -6123,8 +6245,8 @@ function EmailComposer({ className, style, to, setTo, showCc, setShowCc, showBcc
|
|
|
6123
6245
|
required: true
|
|
6124
6246
|
}
|
|
6125
6247
|
) }),
|
|
6126
|
-
/* @__PURE__ */ (0,
|
|
6127
|
-
/* @__PURE__ */ (0,
|
|
6248
|
+
/* @__PURE__ */ (0, import_jsx_runtime70.jsx)("div", { className: "mb-3", children: /* @__PURE__ */ (0, import_jsx_runtime70.jsxs)("div", { className: "flex items-center gap-2", children: [
|
|
6249
|
+
/* @__PURE__ */ (0, import_jsx_runtime70.jsx)(
|
|
6128
6250
|
"input",
|
|
6129
6251
|
{
|
|
6130
6252
|
type: "email",
|
|
@@ -6135,7 +6257,7 @@ function EmailComposer({ className, style, to, setTo, showCc, setShowCc, showBcc
|
|
|
6135
6257
|
required: true
|
|
6136
6258
|
}
|
|
6137
6259
|
),
|
|
6138
|
-
!showCc && /* @__PURE__ */ (0,
|
|
6260
|
+
!showCc && /* @__PURE__ */ (0, import_jsx_runtime70.jsx)(
|
|
6139
6261
|
"button",
|
|
6140
6262
|
{
|
|
6141
6263
|
onClick: () => setShowCc?.(true),
|
|
@@ -6143,7 +6265,7 @@ function EmailComposer({ className, style, to, setTo, showCc, setShowCc, showBcc
|
|
|
6143
6265
|
children: "Cc"
|
|
6144
6266
|
}
|
|
6145
6267
|
),
|
|
6146
|
-
!showBcc && /* @__PURE__ */ (0,
|
|
6268
|
+
!showBcc && /* @__PURE__ */ (0, import_jsx_runtime70.jsx)(
|
|
6147
6269
|
"button",
|
|
6148
6270
|
{
|
|
6149
6271
|
onClick: () => setShowBcc?.(true),
|
|
@@ -6152,7 +6274,7 @@ function EmailComposer({ className, style, to, setTo, showCc, setShowCc, showBcc
|
|
|
6152
6274
|
}
|
|
6153
6275
|
)
|
|
6154
6276
|
] }) }),
|
|
6155
|
-
showCc && /* @__PURE__ */ (0,
|
|
6277
|
+
showCc && /* @__PURE__ */ (0, import_jsx_runtime70.jsx)("div", { className: "mb-3", children: /* @__PURE__ */ (0, import_jsx_runtime70.jsx)(
|
|
6156
6278
|
"input",
|
|
6157
6279
|
{
|
|
6158
6280
|
type: "text",
|
|
@@ -6162,7 +6284,7 @@ function EmailComposer({ className, style, to, setTo, showCc, setShowCc, showBcc
|
|
|
6162
6284
|
className: "w-full flex-1 border-2 rounded-md h-[40px] px-3 focus:outline-none border-[#E9E9E9] text-[#383838]"
|
|
6163
6285
|
}
|
|
6164
6286
|
) }),
|
|
6165
|
-
showBcc && /* @__PURE__ */ (0,
|
|
6287
|
+
showBcc && /* @__PURE__ */ (0, import_jsx_runtime70.jsx)("div", { className: "mb-3", children: /* @__PURE__ */ (0, import_jsx_runtime70.jsx)(
|
|
6166
6288
|
"input",
|
|
6167
6289
|
{
|
|
6168
6290
|
type: "text",
|
|
@@ -6172,7 +6294,7 @@ function EmailComposer({ className, style, to, setTo, showCc, setShowCc, showBcc
|
|
|
6172
6294
|
className: "w-full flex-1 border-2 rounded-md h-[40px] px-3 focus:outline-none border-[#E9E9E9] text-[#383838]"
|
|
6173
6295
|
}
|
|
6174
6296
|
) }),
|
|
6175
|
-
/* @__PURE__ */ (0,
|
|
6297
|
+
/* @__PURE__ */ (0, import_jsx_runtime70.jsx)("div", { className: "mb-3", children: /* @__PURE__ */ (0, import_jsx_runtime70.jsx)(
|
|
6176
6298
|
"input",
|
|
6177
6299
|
{
|
|
6178
6300
|
type: "text",
|
|
@@ -6182,11 +6304,11 @@ function EmailComposer({ className, style, to, setTo, showCc, setShowCc, showBcc
|
|
|
6182
6304
|
className: "w-full flex-1 border-2 rounded-md h-[40px] px-3 focus:outline-none border-[#E9E9E9] text-[#383838]"
|
|
6183
6305
|
}
|
|
6184
6306
|
) }),
|
|
6185
|
-
/* @__PURE__ */ (0,
|
|
6186
|
-
/* @__PURE__ */ (0,
|
|
6187
|
-
/* @__PURE__ */ (0,
|
|
6188
|
-
/* @__PURE__ */ (0,
|
|
6189
|
-
/* @__PURE__ */ (0,
|
|
6307
|
+
/* @__PURE__ */ (0, import_jsx_runtime70.jsx)("div", { className: "mb-4", children: /* @__PURE__ */ (0, import_jsx_runtime70.jsx)(MyEditor, { value: body, onChange: setBody }) }),
|
|
6308
|
+
/* @__PURE__ */ (0, import_jsx_runtime70.jsxs)("div", { className: "flex justify-end gap-2", children: [
|
|
6309
|
+
/* @__PURE__ */ (0, import_jsx_runtime70.jsx)("button", { className: "px-4 py-2 rounded-md text-gray-600 hover:bg-gray-100", children: "Discard" }),
|
|
6310
|
+
/* @__PURE__ */ (0, import_jsx_runtime70.jsx)("button", { className: "px-4 py-2 rounded-md border text-[#12715B] border-[#12715B]", children: "Reset" }),
|
|
6311
|
+
/* @__PURE__ */ (0, import_jsx_runtime70.jsx)("button", { className: "px-4 py-2 rounded-md bg-[#12715B] text-white", children: "Send" })
|
|
6190
6312
|
] })
|
|
6191
6313
|
] }) });
|
|
6192
6314
|
}
|
|
@@ -6194,10 +6316,10 @@ function EmailComposer({ className, style, to, setTo, showCc, setShowCc, showBcc
|
|
|
6194
6316
|
// src/components/ui/sonner.tsx
|
|
6195
6317
|
var import_next_themes = require("next-themes");
|
|
6196
6318
|
var import_sonner2 = require("sonner");
|
|
6197
|
-
var
|
|
6319
|
+
var import_jsx_runtime71 = require("react/jsx-runtime");
|
|
6198
6320
|
var Toaster = ({ ...props }) => {
|
|
6199
6321
|
const { theme = "system" } = (0, import_next_themes.useTheme)();
|
|
6200
|
-
return /* @__PURE__ */ (0,
|
|
6322
|
+
return /* @__PURE__ */ (0, import_jsx_runtime71.jsx)(
|
|
6201
6323
|
import_sonner2.Toaster,
|
|
6202
6324
|
{
|
|
6203
6325
|
theme,
|