injast-core 1.0.82 → 1.0.83
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/README.md +67 -1
- package/dist/components/index.js +1143 -1
- package/dist/constants/index.js +4 -0
- package/dist/headphone-FHILIBNI.svg +7 -0
- package/dist/index.js +1160 -17
- package/dist/types/components/index.d.ts +19 -0
- package/dist/types/constants/index.d.ts +1 -0
- package/dist/types/mobile-app-template/components/mobile-app-footer-nav.d.ts +16 -0
- package/dist/types/mobile-app-template/components/mobile-app-layout.d.ts +19 -0
- package/dist/types/mobile-app-template/index.d.ts +2 -0
- package/dist/types/shared/components/Badge.d.ts +7 -0
- package/dist/types/shared/components/SidebarRow.d.ts +40 -0
- package/dist/types/shared/components/TemplateDashboardSidebar.d.ts +24 -0
- package/dist/types/shared/components/app-page-footer.d.ts +14 -0
- package/dist/types/shared/components/app-page-header.d.ts +28 -0
- package/dist/types/shared/components/template-dashboard/TemplateDashboard.d.ts +2 -0
- package/dist/types/shared/components/template-dashboard/TemplateDashboard.types.d.ts +18 -0
- package/dist/types/shared/components/template-dashboard/index.d.ts +3 -0
- package/dist/types/shared/components/template-dashboard-header/TemplateDashboardHeader.d.ts +3 -0
- package/dist/types/shared/components/template-dashboard-header/TemplateDashboardHeader.styles.d.ts +99 -0
- package/dist/types/shared/components/template-dashboard-header/TemplateDashboardHeader.types.d.ts +8 -0
- package/dist/types/shared/components/template-dashboard-header/index.d.ts +3 -0
- package/dist/types/theme/colors.d.ts +36 -0
- package/guidelines/Guidelines.md +15 -11
- package/guidelines/ai-index.md +111 -0
- package/guidelines/components/app-templates.md +103 -0
- package/package.json +5 -3
- package/skills/injast-app-builder/SKILL.md +9 -4
package/dist/index.js
CHANGED
|
@@ -1530,6 +1530,9 @@ var Tab_default = Tab;
|
|
|
1530
1530
|
// src/constants/stepConnectorClasses.ts
|
|
1531
1531
|
import { stepConnectorClasses as MuiStepConnectorClasses } from "@mui/material";
|
|
1532
1532
|
|
|
1533
|
+
// src/constants/index.ts
|
|
1534
|
+
var APP_LAYOUT_MAX_WIDTH = 550;
|
|
1535
|
+
|
|
1533
1536
|
// src/components/CounterBoxInput.tsx
|
|
1534
1537
|
import { useEffect as useEffect3, useMemo, useState as useState3 } from "react";
|
|
1535
1538
|
import { Add, Minus } from "iconsax-react";
|
|
@@ -3225,6 +3228,1132 @@ var MultiSelect = ({
|
|
|
3225
3228
|
};
|
|
3226
3229
|
var MultiSelect_default = MultiSelect;
|
|
3227
3230
|
|
|
3231
|
+
// src/shared/components/Badge.tsx
|
|
3232
|
+
import { jsx as jsx54 } from "react/jsx-runtime";
|
|
3233
|
+
var Badge = ({ content, color = "#FACC15", textColor = "#1F2937" }) => {
|
|
3234
|
+
if (content == null) return null;
|
|
3235
|
+
const displayText = typeof content === "number" && content > 99 ? "+99" : String(content);
|
|
3236
|
+
return /* @__PURE__ */ jsx54(
|
|
3237
|
+
Box_default,
|
|
3238
|
+
{
|
|
3239
|
+
sx: {
|
|
3240
|
+
minWidth: 20,
|
|
3241
|
+
height: 20,
|
|
3242
|
+
px: "6px",
|
|
3243
|
+
borderRadius: "999px",
|
|
3244
|
+
bgcolor: color,
|
|
3245
|
+
color: textColor,
|
|
3246
|
+
display: "inline-flex",
|
|
3247
|
+
alignItems: "center",
|
|
3248
|
+
justifyContent: "center",
|
|
3249
|
+
fontFamily: '"IRANYekanXFaNum", "IRANYekanX", sans-serif',
|
|
3250
|
+
fontSize: 12,
|
|
3251
|
+
fontWeight: 700,
|
|
3252
|
+
lineHeight: 1,
|
|
3253
|
+
flexShrink: 0
|
|
3254
|
+
},
|
|
3255
|
+
children: displayText
|
|
3256
|
+
}
|
|
3257
|
+
);
|
|
3258
|
+
};
|
|
3259
|
+
var Badge_default = Badge;
|
|
3260
|
+
|
|
3261
|
+
// src/shared/components/SidebarRow.tsx
|
|
3262
|
+
import { ArrowDown2 as ArrowDown22, Notification, Setting2 } from "iconsax-reactjs";
|
|
3263
|
+
import { Fragment as Fragment5, jsx as jsx55, jsxs as jsxs10 } from "react/jsx-runtime";
|
|
3264
|
+
var SidebarDot = ({
|
|
3265
|
+
collapsed,
|
|
3266
|
+
disabled = false
|
|
3267
|
+
}) => /* @__PURE__ */ jsx55(
|
|
3268
|
+
Box_default,
|
|
3269
|
+
{
|
|
3270
|
+
sx: {
|
|
3271
|
+
width: collapsed ? 10 : 4,
|
|
3272
|
+
height: collapsed ? 10 : 4,
|
|
3273
|
+
borderRadius: "50%",
|
|
3274
|
+
bgcolor: disabled ? "rgba(255,255,255,0.30)" : "#FFFFFFE6",
|
|
3275
|
+
flexShrink: 0
|
|
3276
|
+
}
|
|
3277
|
+
}
|
|
3278
|
+
);
|
|
3279
|
+
var SidebarItemIcon = ({
|
|
3280
|
+
icon,
|
|
3281
|
+
color = "white"
|
|
3282
|
+
}) => {
|
|
3283
|
+
const IconComponent = icon === "notification" ? Notification : Setting2;
|
|
3284
|
+
return /* @__PURE__ */ jsx55(IconComponent, { size: 20, color, variant: "Linear" });
|
|
3285
|
+
};
|
|
3286
|
+
var SidebarRow = ({
|
|
3287
|
+
active = false,
|
|
3288
|
+
badgeColor = "#FACC15",
|
|
3289
|
+
badgeTextColor,
|
|
3290
|
+
badgeContent,
|
|
3291
|
+
child = false,
|
|
3292
|
+
collapsed,
|
|
3293
|
+
disabled = false,
|
|
3294
|
+
expanded = false,
|
|
3295
|
+
hasChildren = false,
|
|
3296
|
+
icon,
|
|
3297
|
+
onClick,
|
|
3298
|
+
title
|
|
3299
|
+
}) => {
|
|
3300
|
+
const resolvedIcon = icon;
|
|
3301
|
+
const disabledColor = "rgba(255,255,255,0.38)";
|
|
3302
|
+
const itemColor = disabled ? disabledColor : "white";
|
|
3303
|
+
const rowHeight = child ? "40px" : "48px";
|
|
3304
|
+
return /* @__PURE__ */ jsx55(
|
|
3305
|
+
Box_default,
|
|
3306
|
+
{
|
|
3307
|
+
component: "button",
|
|
3308
|
+
onClick: disabled ? void 0 : onClick,
|
|
3309
|
+
sx: {
|
|
3310
|
+
width: "100%",
|
|
3311
|
+
height: rowHeight,
|
|
3312
|
+
minHeight: rowHeight,
|
|
3313
|
+
boxSizing: "border-box",
|
|
3314
|
+
border: 0,
|
|
3315
|
+
outline: "none",
|
|
3316
|
+
appearance: "none",
|
|
3317
|
+
WebkitTapHighlightColor: "transparent",
|
|
3318
|
+
borderRadius: "8px",
|
|
3319
|
+
bgcolor: active && !disabled ? "rgba(255,255,255,0.10)" : "transparent",
|
|
3320
|
+
color: itemColor,
|
|
3321
|
+
display: "flex",
|
|
3322
|
+
alignItems: "center",
|
|
3323
|
+
justifyContent: collapsed ? "center" : "space-between",
|
|
3324
|
+
p: 0,
|
|
3325
|
+
cursor: disabled ? "not-allowed" : "pointer",
|
|
3326
|
+
transition: "background-color 0.2s ease",
|
|
3327
|
+
fontWeight: 400,
|
|
3328
|
+
"&:hover": {
|
|
3329
|
+
bgcolor: disabled ? "transparent" : active ? "rgba(255,255,255,0.10)" : "rgba(255,255,255,0.06)",
|
|
3330
|
+
fontWeight: 400
|
|
3331
|
+
},
|
|
3332
|
+
"&:disabled": {
|
|
3333
|
+
color: disabledColor
|
|
3334
|
+
},
|
|
3335
|
+
"&:focus": {
|
|
3336
|
+
outline: "none"
|
|
3337
|
+
},
|
|
3338
|
+
"&:focus-visible": {
|
|
3339
|
+
outline: "none"
|
|
3340
|
+
}
|
|
3341
|
+
},
|
|
3342
|
+
children: collapsed ? /* @__PURE__ */ jsxs10(
|
|
3343
|
+
Box_default,
|
|
3344
|
+
{
|
|
3345
|
+
sx: {
|
|
3346
|
+
position: "relative",
|
|
3347
|
+
display: "inline-flex",
|
|
3348
|
+
alignItems: "center",
|
|
3349
|
+
justifyContent: "center"
|
|
3350
|
+
},
|
|
3351
|
+
children: [
|
|
3352
|
+
resolvedIcon ? /* @__PURE__ */ jsx55(SidebarItemIcon, { icon: resolvedIcon, color: itemColor }) : null,
|
|
3353
|
+
badgeContent != null && !disabled ? /* @__PURE__ */ jsx55(
|
|
3354
|
+
Box_default,
|
|
3355
|
+
{
|
|
3356
|
+
sx: {
|
|
3357
|
+
position: "absolute",
|
|
3358
|
+
top: -10,
|
|
3359
|
+
insetInlineEnd: -14
|
|
3360
|
+
},
|
|
3361
|
+
children: /* @__PURE__ */ jsx55(Badge_default, { content: badgeContent, color: badgeColor, textColor: badgeTextColor })
|
|
3362
|
+
}
|
|
3363
|
+
) : null
|
|
3364
|
+
]
|
|
3365
|
+
}
|
|
3366
|
+
) : /* @__PURE__ */ jsxs10(Fragment5, { children: [
|
|
3367
|
+
/* @__PURE__ */ jsxs10(
|
|
3368
|
+
Box_default,
|
|
3369
|
+
{
|
|
3370
|
+
sx: {
|
|
3371
|
+
display: "flex",
|
|
3372
|
+
alignItems: "center",
|
|
3373
|
+
gap: child ? "8px" : "12px",
|
|
3374
|
+
minWidth: 0,
|
|
3375
|
+
paddingInlineEnd: child ? "16px" : "12px",
|
|
3376
|
+
paddingInlineStart: child ? "32px" : "12px"
|
|
3377
|
+
},
|
|
3378
|
+
children: [
|
|
3379
|
+
resolvedIcon ? /* @__PURE__ */ jsx55(SidebarItemIcon, { icon: resolvedIcon, color: itemColor }) : child ? /* @__PURE__ */ jsx55(SidebarDot, { collapsed, disabled }) : null,
|
|
3380
|
+
/* @__PURE__ */ jsx55(
|
|
3381
|
+
Typography_default,
|
|
3382
|
+
{
|
|
3383
|
+
fontSize: 14,
|
|
3384
|
+
sx: {
|
|
3385
|
+
color: itemColor,
|
|
3386
|
+
fontWeight: active && !disabled ? 500 : 400,
|
|
3387
|
+
whiteSpace: "nowrap",
|
|
3388
|
+
overflow: "hidden",
|
|
3389
|
+
textOverflow: "ellipsis"
|
|
3390
|
+
},
|
|
3391
|
+
children: title
|
|
3392
|
+
}
|
|
3393
|
+
)
|
|
3394
|
+
]
|
|
3395
|
+
}
|
|
3396
|
+
),
|
|
3397
|
+
hasChildren || badgeContent != null ? /* @__PURE__ */ jsxs10(
|
|
3398
|
+
Box_default,
|
|
3399
|
+
{
|
|
3400
|
+
sx: {
|
|
3401
|
+
marginInlineStart: "12px",
|
|
3402
|
+
marginInlineEnd: "12px",
|
|
3403
|
+
display: "flex",
|
|
3404
|
+
alignItems: "center",
|
|
3405
|
+
justifyContent: "center",
|
|
3406
|
+
gap: "8px",
|
|
3407
|
+
flexShrink: 0
|
|
3408
|
+
},
|
|
3409
|
+
children: [
|
|
3410
|
+
badgeContent != null && !disabled ? /* @__PURE__ */ jsx55(Badge_default, { content: badgeContent, color: badgeColor, textColor: badgeTextColor }) : null,
|
|
3411
|
+
hasChildren ? /* @__PURE__ */ jsx55(
|
|
3412
|
+
ArrowDown22,
|
|
3413
|
+
{
|
|
3414
|
+
size: 16,
|
|
3415
|
+
color: itemColor,
|
|
3416
|
+
variant: "Linear",
|
|
3417
|
+
style: {
|
|
3418
|
+
transition: "transform 0.2s ease",
|
|
3419
|
+
transform: expanded ? "rotate(180deg)" : "rotate(0deg)"
|
|
3420
|
+
}
|
|
3421
|
+
}
|
|
3422
|
+
) : null
|
|
3423
|
+
]
|
|
3424
|
+
}
|
|
3425
|
+
) : null
|
|
3426
|
+
] })
|
|
3427
|
+
}
|
|
3428
|
+
);
|
|
3429
|
+
};
|
|
3430
|
+
var SidebarRow_default = SidebarRow;
|
|
3431
|
+
|
|
3432
|
+
// src/shared/components/TemplateDashboardSidebar.tsx
|
|
3433
|
+
import { useState as useState8 } from "react";
|
|
3434
|
+
import { ArrowLeft, ArrowRight } from "iconsax-reactjs";
|
|
3435
|
+
import { jsx as jsx56, jsxs as jsxs11 } from "react/jsx-runtime";
|
|
3436
|
+
var templateDashboardSidebarWidths = {
|
|
3437
|
+
expanded: 220,
|
|
3438
|
+
collapsed: 76
|
|
3439
|
+
};
|
|
3440
|
+
var TemplateDashboardSidebar = ({
|
|
3441
|
+
activeItemId,
|
|
3442
|
+
badgeColor = "#FACC15",
|
|
3443
|
+
badgeTextColor,
|
|
3444
|
+
buttonColor = "#0F8DDC",
|
|
3445
|
+
collapsed = false,
|
|
3446
|
+
items = [],
|
|
3447
|
+
logo,
|
|
3448
|
+
logoCollapsed,
|
|
3449
|
+
onItemClick,
|
|
3450
|
+
onToggleCollapse,
|
|
3451
|
+
sidebarColor,
|
|
3452
|
+
title = "\u062A\u0646\u0638\u06CC\u0645\u0627\u062A"
|
|
3453
|
+
}) => {
|
|
3454
|
+
const resolvedItems = items.length > 0 ? items : [
|
|
3455
|
+
{
|
|
3456
|
+
id: "settings",
|
|
3457
|
+
title,
|
|
3458
|
+
icon: "settings"
|
|
3459
|
+
}
|
|
3460
|
+
];
|
|
3461
|
+
const [expandedItemIds, setExpandedItemIds] = useState8(
|
|
3462
|
+
resolvedItems.length > 0 ? [resolvedItems[0].id] : []
|
|
3463
|
+
);
|
|
3464
|
+
const handleParentClick = (item) => {
|
|
3465
|
+
if (item.disabled) return;
|
|
3466
|
+
if (!item.children?.length) {
|
|
3467
|
+
onItemClick?.(item);
|
|
3468
|
+
return;
|
|
3469
|
+
}
|
|
3470
|
+
setExpandedItemIds(
|
|
3471
|
+
(prev) => prev.includes(item.id) ? prev.filter((id) => id !== item.id) : [...prev, item.id]
|
|
3472
|
+
);
|
|
3473
|
+
};
|
|
3474
|
+
return /* @__PURE__ */ jsxs11(
|
|
3475
|
+
Box_default,
|
|
3476
|
+
{
|
|
3477
|
+
component: "aside",
|
|
3478
|
+
sx: {
|
|
3479
|
+
position: "relative",
|
|
3480
|
+
width: "100%",
|
|
3481
|
+
height: "100%",
|
|
3482
|
+
background: sidebarColor ?? "var(--Blue-primary, #0661A2)",
|
|
3483
|
+
color: "white",
|
|
3484
|
+
display: "flex",
|
|
3485
|
+
flexDirection: "column",
|
|
3486
|
+
overflow: "visible",
|
|
3487
|
+
px: collapsed ? 0.8 : 1.05,
|
|
3488
|
+
pt: logo || logoCollapsed ? 0 : "64px",
|
|
3489
|
+
pb: 1.7
|
|
3490
|
+
},
|
|
3491
|
+
children: [
|
|
3492
|
+
logo || logoCollapsed ? /* @__PURE__ */ jsx56(
|
|
3493
|
+
Box_default,
|
|
3494
|
+
{
|
|
3495
|
+
sx: {
|
|
3496
|
+
display: "flex",
|
|
3497
|
+
alignItems: "center",
|
|
3498
|
+
justifyContent: collapsed ? "center" : "flex-start",
|
|
3499
|
+
px: collapsed ? 0 : 1.5,
|
|
3500
|
+
py: 2,
|
|
3501
|
+
minHeight: collapsed ? 56 : 80,
|
|
3502
|
+
overflow: "hidden",
|
|
3503
|
+
flexShrink: 0
|
|
3504
|
+
},
|
|
3505
|
+
children: collapsed && logoCollapsed ? logoCollapsed : logo
|
|
3506
|
+
}
|
|
3507
|
+
) : null,
|
|
3508
|
+
/* @__PURE__ */ jsx56(
|
|
3509
|
+
Box_default,
|
|
3510
|
+
{
|
|
3511
|
+
component: "nav",
|
|
3512
|
+
sx: {
|
|
3513
|
+
display: "flex",
|
|
3514
|
+
flexDirection: "column",
|
|
3515
|
+
gap: "4px",
|
|
3516
|
+
minHeight: 0,
|
|
3517
|
+
overflowY: "auto",
|
|
3518
|
+
"&::-webkit-scrollbar": {
|
|
3519
|
+
width: 6
|
|
3520
|
+
},
|
|
3521
|
+
"&::-webkit-scrollbar-thumb": {
|
|
3522
|
+
bgcolor: "#73A8CF",
|
|
3523
|
+
borderRadius: 999
|
|
3524
|
+
}
|
|
3525
|
+
},
|
|
3526
|
+
children: resolvedItems.map((item) => {
|
|
3527
|
+
const hasChildren = Boolean(item.children?.length);
|
|
3528
|
+
const isExpanded = expandedItemIds.includes(item.id);
|
|
3529
|
+
return /* @__PURE__ */ jsxs11(Box_default, { children: [
|
|
3530
|
+
/* @__PURE__ */ jsx56(
|
|
3531
|
+
SidebarRow_default,
|
|
3532
|
+
{
|
|
3533
|
+
title: item.title,
|
|
3534
|
+
icon: item.icon,
|
|
3535
|
+
badgeColor,
|
|
3536
|
+
badgeTextColor,
|
|
3537
|
+
badgeContent: hasChildren && isExpanded && !collapsed ? void 0 : item.badgeContent,
|
|
3538
|
+
disabled: item.disabled,
|
|
3539
|
+
collapsed,
|
|
3540
|
+
hasChildren,
|
|
3541
|
+
expanded: isExpanded,
|
|
3542
|
+
active: item.id === activeItemId,
|
|
3543
|
+
onClick: () => handleParentClick(item)
|
|
3544
|
+
}
|
|
3545
|
+
),
|
|
3546
|
+
hasChildren ? /* @__PURE__ */ jsx56(
|
|
3547
|
+
Box_default,
|
|
3548
|
+
{
|
|
3549
|
+
sx: {
|
|
3550
|
+
overflow: "hidden",
|
|
3551
|
+
maxHeight: !collapsed && isExpanded ? "500px" : 0,
|
|
3552
|
+
opacity: !collapsed && isExpanded ? 1 : 0,
|
|
3553
|
+
visibility: !collapsed && isExpanded ? "visible" : "hidden",
|
|
3554
|
+
transition: "max-height 200ms ease, opacity 120ms ease, visibility 0s linear 200ms"
|
|
3555
|
+
},
|
|
3556
|
+
children: /* @__PURE__ */ jsx56(
|
|
3557
|
+
Box_default,
|
|
3558
|
+
{
|
|
3559
|
+
sx: {
|
|
3560
|
+
display: "flex",
|
|
3561
|
+
flexDirection: "column",
|
|
3562
|
+
gap: !collapsed && isExpanded ? "4px" : 0,
|
|
3563
|
+
pt: !collapsed && isExpanded ? "4px" : 0
|
|
3564
|
+
},
|
|
3565
|
+
children: item.children?.map((child) => /* @__PURE__ */ jsx56(
|
|
3566
|
+
Box_default,
|
|
3567
|
+
{
|
|
3568
|
+
sx: {
|
|
3569
|
+
boxSizing: "border-box"
|
|
3570
|
+
},
|
|
3571
|
+
children: /* @__PURE__ */ jsx56(
|
|
3572
|
+
SidebarRow_default,
|
|
3573
|
+
{
|
|
3574
|
+
title: child.title,
|
|
3575
|
+
icon: child.icon,
|
|
3576
|
+
badgeColor,
|
|
3577
|
+
badgeTextColor,
|
|
3578
|
+
badgeContent: child.badgeContent,
|
|
3579
|
+
disabled: child.disabled,
|
|
3580
|
+
collapsed: false,
|
|
3581
|
+
child: true,
|
|
3582
|
+
active: child.id === activeItemId,
|
|
3583
|
+
onClick: () => onItemClick?.({
|
|
3584
|
+
id: child.id,
|
|
3585
|
+
title: child.title,
|
|
3586
|
+
icon: child.icon,
|
|
3587
|
+
badgeContent: child.badgeContent,
|
|
3588
|
+
disabled: child.disabled
|
|
3589
|
+
})
|
|
3590
|
+
}
|
|
3591
|
+
)
|
|
3592
|
+
},
|
|
3593
|
+
child.id
|
|
3594
|
+
))
|
|
3595
|
+
}
|
|
3596
|
+
)
|
|
3597
|
+
}
|
|
3598
|
+
) : null
|
|
3599
|
+
] }, item.id);
|
|
3600
|
+
})
|
|
3601
|
+
}
|
|
3602
|
+
),
|
|
3603
|
+
/* @__PURE__ */ jsx56(
|
|
3604
|
+
IconButton_default,
|
|
3605
|
+
{
|
|
3606
|
+
"aria-label": collapsed ? "\u0628\u0627\u0632 \u06A9\u0631\u062F\u0646 \u0633\u0627\u06CC\u062F\u0628\u0627\u0631" : "\u0628\u0633\u062A\u0646 \u0633\u0627\u06CC\u062F\u0628\u0627\u0631",
|
|
3607
|
+
onClick: onToggleCollapse,
|
|
3608
|
+
sx: {
|
|
3609
|
+
position: "absolute",
|
|
3610
|
+
insetInlineEnd: "-16px",
|
|
3611
|
+
top: "16px",
|
|
3612
|
+
width: "34px",
|
|
3613
|
+
height: "34px",
|
|
3614
|
+
minWidth: "34px",
|
|
3615
|
+
borderRadius: "8px",
|
|
3616
|
+
bgcolor: "#FFFFFF",
|
|
3617
|
+
border: "1px solid #D8E0EA",
|
|
3618
|
+
p: 0,
|
|
3619
|
+
display: "inline-flex",
|
|
3620
|
+
alignItems: "center",
|
|
3621
|
+
justifyContent: "center",
|
|
3622
|
+
flexShrink: 0,
|
|
3623
|
+
boxSizing: "border-box",
|
|
3624
|
+
zIndex: 10,
|
|
3625
|
+
"&:hover": {
|
|
3626
|
+
bgcolor: "#FFFFFF"
|
|
3627
|
+
}
|
|
3628
|
+
},
|
|
3629
|
+
children: collapsed ? /* @__PURE__ */ jsx56(ArrowLeft, { size: 20, color: buttonColor }) : /* @__PURE__ */ jsx56(ArrowRight, { size: 20, color: buttonColor })
|
|
3630
|
+
}
|
|
3631
|
+
)
|
|
3632
|
+
]
|
|
3633
|
+
}
|
|
3634
|
+
);
|
|
3635
|
+
};
|
|
3636
|
+
var TemplateDashboardSidebar_default = TemplateDashboardSidebar;
|
|
3637
|
+
|
|
3638
|
+
// src/shared/components/template-dashboard/TemplateDashboard.tsx
|
|
3639
|
+
import { useState as useState9 } from "react";
|
|
3640
|
+
import { jsx as jsx57, jsxs as jsxs12 } from "react/jsx-runtime";
|
|
3641
|
+
function TemplateDashboard({
|
|
3642
|
+
sidebarTitle,
|
|
3643
|
+
sidebarItems,
|
|
3644
|
+
sidebarActiveItemId,
|
|
3645
|
+
sidebarExpandedItemId,
|
|
3646
|
+
sidebarColor,
|
|
3647
|
+
badgeColor,
|
|
3648
|
+
badgeTextColor,
|
|
3649
|
+
buttonColor,
|
|
3650
|
+
sidebarLogo,
|
|
3651
|
+
sidebarLogoCollapsed,
|
|
3652
|
+
onSidebarItemClick,
|
|
3653
|
+
header,
|
|
3654
|
+
pageHeader,
|
|
3655
|
+
children
|
|
3656
|
+
}) {
|
|
3657
|
+
const [collapsed, setCollapsed] = useState9(false);
|
|
3658
|
+
const sidebarWidth = collapsed ? templateDashboardSidebarWidths.collapsed : templateDashboardSidebarWidths.expanded;
|
|
3659
|
+
return /* @__PURE__ */ jsxs12(Box_default, { sx: { height: "100%", display: "flex", direction: "ltr" }, children: [
|
|
3660
|
+
/* @__PURE__ */ jsx57(
|
|
3661
|
+
Box_default,
|
|
3662
|
+
{
|
|
3663
|
+
sx: {
|
|
3664
|
+
height: "100%",
|
|
3665
|
+
width: sidebarWidth,
|
|
3666
|
+
flexShrink: 0,
|
|
3667
|
+
transition: "width 0.2s ease"
|
|
3668
|
+
},
|
|
3669
|
+
children: /* @__PURE__ */ jsx57(
|
|
3670
|
+
TemplateDashboardSidebar_default,
|
|
3671
|
+
{
|
|
3672
|
+
collapsed,
|
|
3673
|
+
logo: sidebarLogo,
|
|
3674
|
+
logoCollapsed: sidebarLogoCollapsed,
|
|
3675
|
+
sidebarColor,
|
|
3676
|
+
badgeColor,
|
|
3677
|
+
badgeTextColor,
|
|
3678
|
+
buttonColor,
|
|
3679
|
+
onToggleCollapse: () => setCollapsed((v) => !v),
|
|
3680
|
+
title: sidebarTitle,
|
|
3681
|
+
items: sidebarItems,
|
|
3682
|
+
activeItemId: sidebarActiveItemId,
|
|
3683
|
+
expandedItemId: sidebarExpandedItemId,
|
|
3684
|
+
onItemClick: onSidebarItemClick
|
|
3685
|
+
}
|
|
3686
|
+
)
|
|
3687
|
+
}
|
|
3688
|
+
),
|
|
3689
|
+
/* @__PURE__ */ jsxs12(
|
|
3690
|
+
Box_default,
|
|
3691
|
+
{
|
|
3692
|
+
sx: {
|
|
3693
|
+
height: "100%",
|
|
3694
|
+
minHeight: 0,
|
|
3695
|
+
minWidth: 0,
|
|
3696
|
+
flex: 1,
|
|
3697
|
+
display: "flex",
|
|
3698
|
+
flexDirection: "column"
|
|
3699
|
+
},
|
|
3700
|
+
children: [
|
|
3701
|
+
header ? /* @__PURE__ */ jsx57(Box_default, { sx: { flexShrink: 0 }, children: header }) : null,
|
|
3702
|
+
pageHeader ? /* @__PURE__ */ jsx57(Box_default, { sx: { flexShrink: 0 }, children: pageHeader }) : null,
|
|
3703
|
+
/* @__PURE__ */ jsx57(
|
|
3704
|
+
Box_default,
|
|
3705
|
+
{
|
|
3706
|
+
component: "main",
|
|
3707
|
+
sx: {
|
|
3708
|
+
bgcolor: defaultColors.neutral[50],
|
|
3709
|
+
flex: 1,
|
|
3710
|
+
minHeight: 0,
|
|
3711
|
+
overflowY: "auto",
|
|
3712
|
+
p: "24px"
|
|
3713
|
+
},
|
|
3714
|
+
children
|
|
3715
|
+
}
|
|
3716
|
+
)
|
|
3717
|
+
]
|
|
3718
|
+
}
|
|
3719
|
+
)
|
|
3720
|
+
] });
|
|
3721
|
+
}
|
|
3722
|
+
|
|
3723
|
+
// src/shared/components/template-dashboard-header/TemplateDashboardHeader.styles.ts
|
|
3724
|
+
var surfaceButtonStyles = {
|
|
3725
|
+
width: "42px",
|
|
3726
|
+
height: "42px",
|
|
3727
|
+
minWidth: "42px",
|
|
3728
|
+
borderRadius: "8px",
|
|
3729
|
+
bgcolor: "#F5F7FA",
|
|
3730
|
+
border: "none",
|
|
3731
|
+
p: 0,
|
|
3732
|
+
display: "inline-flex",
|
|
3733
|
+
alignItems: "center",
|
|
3734
|
+
justifyContent: "center",
|
|
3735
|
+
flexShrink: 0,
|
|
3736
|
+
boxSizing: "border-box"
|
|
3737
|
+
};
|
|
3738
|
+
var templateDashboardHeaderStyles = {
|
|
3739
|
+
root: {
|
|
3740
|
+
width: "100%",
|
|
3741
|
+
height: "72px",
|
|
3742
|
+
minHeight: "72px",
|
|
3743
|
+
maxHeight: "72px",
|
|
3744
|
+
bgcolor: "#FFFFFF",
|
|
3745
|
+
px: "24px",
|
|
3746
|
+
py: "18px",
|
|
3747
|
+
boxSizing: "border-box",
|
|
3748
|
+
display: "flex",
|
|
3749
|
+
alignItems: "center",
|
|
3750
|
+
justifyContent: "space-between",
|
|
3751
|
+
direction: "ltr",
|
|
3752
|
+
flexShrink: 0
|
|
3753
|
+
},
|
|
3754
|
+
rightCluster: {
|
|
3755
|
+
display: "flex",
|
|
3756
|
+
flexDirection: "row",
|
|
3757
|
+
alignItems: "center",
|
|
3758
|
+
gap: "16px",
|
|
3759
|
+
flexShrink: 0
|
|
3760
|
+
},
|
|
3761
|
+
datePill: {
|
|
3762
|
+
width: "192px",
|
|
3763
|
+
height: "42px",
|
|
3764
|
+
minWidth: "192px",
|
|
3765
|
+
bgcolor: "#F5F7FA",
|
|
3766
|
+
borderRadius: "8px",
|
|
3767
|
+
display: "flex",
|
|
3768
|
+
alignItems: "center",
|
|
3769
|
+
justifyContent: "center",
|
|
3770
|
+
px: "12px",
|
|
3771
|
+
boxSizing: "border-box",
|
|
3772
|
+
flexShrink: 0
|
|
3773
|
+
},
|
|
3774
|
+
dateText: {
|
|
3775
|
+
fontSize: "12px",
|
|
3776
|
+
fontWeight: 500,
|
|
3777
|
+
lineHeight: "18px",
|
|
3778
|
+
color: "#374151",
|
|
3779
|
+
whiteSpace: "nowrap"
|
|
3780
|
+
},
|
|
3781
|
+
leftCluster: {
|
|
3782
|
+
display: "flex",
|
|
3783
|
+
flexDirection: "row",
|
|
3784
|
+
alignItems: "center",
|
|
3785
|
+
gap: "12px",
|
|
3786
|
+
flexShrink: 0
|
|
3787
|
+
},
|
|
3788
|
+
logoutButton: surfaceButtonStyles,
|
|
3789
|
+
profileButton: surfaceButtonStyles,
|
|
3790
|
+
userTextBlock: {
|
|
3791
|
+
display: "flex",
|
|
3792
|
+
flexDirection: "column",
|
|
3793
|
+
alignItems: "flex-start",
|
|
3794
|
+
direction: "ltr",
|
|
3795
|
+
textAlign: "left",
|
|
3796
|
+
minWidth: 0
|
|
3797
|
+
},
|
|
3798
|
+
userName: {
|
|
3799
|
+
fontSize: "13px",
|
|
3800
|
+
fontWeight: 600,
|
|
3801
|
+
lineHeight: "20px",
|
|
3802
|
+
color: "#374151"
|
|
3803
|
+
},
|
|
3804
|
+
userRole: {
|
|
3805
|
+
fontSize: "11px",
|
|
3806
|
+
fontWeight: 400,
|
|
3807
|
+
lineHeight: "16px",
|
|
3808
|
+
color: "#8A94A6"
|
|
3809
|
+
}
|
|
3810
|
+
};
|
|
3811
|
+
|
|
3812
|
+
// src/shared/components/template-dashboard-header/TemplateDashboardHeader.tsx
|
|
3813
|
+
import { jsx as jsx58, jsxs as jsxs13 } from "react/jsx-runtime";
|
|
3814
|
+
var TemplateDashboardHeader = ({
|
|
3815
|
+
left,
|
|
3816
|
+
right,
|
|
3817
|
+
children,
|
|
3818
|
+
className,
|
|
3819
|
+
sx
|
|
3820
|
+
}) => {
|
|
3821
|
+
return /* @__PURE__ */ jsxs13(
|
|
3822
|
+
Box_default,
|
|
3823
|
+
{
|
|
3824
|
+
component: "header",
|
|
3825
|
+
className,
|
|
3826
|
+
sx: {
|
|
3827
|
+
...templateDashboardHeaderStyles.root,
|
|
3828
|
+
...sx ?? {}
|
|
3829
|
+
},
|
|
3830
|
+
children: [
|
|
3831
|
+
right ? /* @__PURE__ */ jsx58(Box_default, { sx: templateDashboardHeaderStyles.rightCluster, children: right }) : null,
|
|
3832
|
+
left ? /* @__PURE__ */ jsx58(Box_default, { sx: templateDashboardHeaderStyles.leftCluster, children: left }) : null,
|
|
3833
|
+
children
|
|
3834
|
+
]
|
|
3835
|
+
}
|
|
3836
|
+
);
|
|
3837
|
+
};
|
|
3838
|
+
var TemplateDashboardHeader_default = TemplateDashboardHeader;
|
|
3839
|
+
|
|
3840
|
+
// src/shared/components/app-page-header.tsx
|
|
3841
|
+
import { useRouter } from "@tanstack/react-router";
|
|
3842
|
+
import { ArrowRight as ArrowRight2, Notification as Notification2 } from "iconsax-reactjs";
|
|
3843
|
+
|
|
3844
|
+
// src/assets/icons/headphone.svg
|
|
3845
|
+
var headphone_default = "./headphone-FHILIBNI.svg";
|
|
3846
|
+
|
|
3847
|
+
// src/shared/components/app-page-header.tsx
|
|
3848
|
+
import { Fragment as Fragment6, jsx as jsx59, jsxs as jsxs14 } from "react/jsx-runtime";
|
|
3849
|
+
var AppPageHeader = ({
|
|
3850
|
+
title,
|
|
3851
|
+
subtitle,
|
|
3852
|
+
titleComponent,
|
|
3853
|
+
notificationBtn,
|
|
3854
|
+
chatbotBtn = true,
|
|
3855
|
+
headerActions,
|
|
3856
|
+
variant = "default",
|
|
3857
|
+
position = "fixed",
|
|
3858
|
+
rootSx,
|
|
3859
|
+
contentSx
|
|
3860
|
+
}) => {
|
|
3861
|
+
const router = useRouter();
|
|
3862
|
+
const onBackBtnClick = () => {
|
|
3863
|
+
router.history.back();
|
|
3864
|
+
};
|
|
3865
|
+
const navigateToChatbot = () => {
|
|
3866
|
+
window.location.href = "/chatbot";
|
|
3867
|
+
};
|
|
3868
|
+
const onNotificationBtnClick = () => {
|
|
3869
|
+
};
|
|
3870
|
+
const variantStyles = {
|
|
3871
|
+
default: {
|
|
3872
|
+
root: {
|
|
3873
|
+
display: "flex",
|
|
3874
|
+
flexDirection: "row",
|
|
3875
|
+
height: "60px",
|
|
3876
|
+
justifyContent: "center",
|
|
3877
|
+
alignItems: "center",
|
|
3878
|
+
bgcolor: "#F4F6FA"
|
|
3879
|
+
},
|
|
3880
|
+
content: {
|
|
3881
|
+
display: "flex",
|
|
3882
|
+
justifyContent: "space-between",
|
|
3883
|
+
alignItems: "center",
|
|
3884
|
+
p: 4,
|
|
3885
|
+
height: "60px",
|
|
3886
|
+
width: APP_LAYOUT_MAX_WIDTH,
|
|
3887
|
+
bgcolor: "#F4F6FA"
|
|
3888
|
+
},
|
|
3889
|
+
actionButton: {
|
|
3890
|
+
backgroundColor: defaultColors.neutral[200],
|
|
3891
|
+
borderRadius: "12px"
|
|
3892
|
+
},
|
|
3893
|
+
placeholder: {
|
|
3894
|
+
width: 20,
|
|
3895
|
+
height: 20
|
|
3896
|
+
},
|
|
3897
|
+
title: {
|
|
3898
|
+
variant: "h2",
|
|
3899
|
+
fontWeight: 700,
|
|
3900
|
+
sx: {
|
|
3901
|
+
textAlign: "center"
|
|
3902
|
+
}
|
|
3903
|
+
},
|
|
3904
|
+
titleContainer: {
|
|
3905
|
+
display: "flex",
|
|
3906
|
+
flexDirection: "column",
|
|
3907
|
+
alignItems: "center",
|
|
3908
|
+
justifyContent: "center",
|
|
3909
|
+
gap: "4px",
|
|
3910
|
+
flex: 1,
|
|
3911
|
+
minWidth: 0
|
|
3912
|
+
},
|
|
3913
|
+
subtitle: {
|
|
3914
|
+
sx: {
|
|
3915
|
+
textAlign: "center",
|
|
3916
|
+
fontSize: "14px",
|
|
3917
|
+
fontWeight: 400,
|
|
3918
|
+
color: defaultColors.neutral[500],
|
|
3919
|
+
lineHeight: 1.4
|
|
3920
|
+
}
|
|
3921
|
+
}
|
|
3922
|
+
},
|
|
3923
|
+
mobile: {
|
|
3924
|
+
root: {
|
|
3925
|
+
display: "flex",
|
|
3926
|
+
flexDirection: "row",
|
|
3927
|
+
justifyContent: "center",
|
|
3928
|
+
alignItems: "center",
|
|
3929
|
+
width: "100%",
|
|
3930
|
+
bgcolor: "#F4F6FA"
|
|
3931
|
+
},
|
|
3932
|
+
content: {
|
|
3933
|
+
display: "flex",
|
|
3934
|
+
justifyContent: "space-between",
|
|
3935
|
+
alignItems: "center",
|
|
3936
|
+
px: "18px",
|
|
3937
|
+
// pt: 'calc(12px + env(safe-area-inset-top))',
|
|
3938
|
+
pb: "0px",
|
|
3939
|
+
minHeight: "80px",
|
|
3940
|
+
width: "100%",
|
|
3941
|
+
maxWidth: APP_LAYOUT_MAX_WIDTH,
|
|
3942
|
+
bgcolor: "#F4F6FA",
|
|
3943
|
+
direction: "ltr",
|
|
3944
|
+
gap: "16px"
|
|
3945
|
+
},
|
|
3946
|
+
actionButton: {
|
|
3947
|
+
width: "36px",
|
|
3948
|
+
height: "36px",
|
|
3949
|
+
minWidth: "36px",
|
|
3950
|
+
backgroundColor: "#E9EDF4",
|
|
3951
|
+
borderRadius: "12px"
|
|
3952
|
+
},
|
|
3953
|
+
placeholder: {
|
|
3954
|
+
width: "64px",
|
|
3955
|
+
height: "64px"
|
|
3956
|
+
},
|
|
3957
|
+
title: {
|
|
3958
|
+
sx: {
|
|
3959
|
+
direction: "rtl",
|
|
3960
|
+
textAlign: "center",
|
|
3961
|
+
fontSize: "16px",
|
|
3962
|
+
fontWeight: 700,
|
|
3963
|
+
color: "#1F2937",
|
|
3964
|
+
lineHeight: 1.3
|
|
3965
|
+
}
|
|
3966
|
+
},
|
|
3967
|
+
titleContainer: {
|
|
3968
|
+
display: "flex",
|
|
3969
|
+
flexDirection: "column",
|
|
3970
|
+
alignItems: "center",
|
|
3971
|
+
justifyContent: "center",
|
|
3972
|
+
gap: "4px",
|
|
3973
|
+
flex: 1,
|
|
3974
|
+
minWidth: 0
|
|
3975
|
+
},
|
|
3976
|
+
subtitle: {
|
|
3977
|
+
sx: {
|
|
3978
|
+
direction: "rtl",
|
|
3979
|
+
textAlign: "center",
|
|
3980
|
+
fontSize: "14px",
|
|
3981
|
+
fontWeight: 400,
|
|
3982
|
+
color: "#9CA3AF",
|
|
3983
|
+
lineHeight: 1.4
|
|
3984
|
+
}
|
|
3985
|
+
}
|
|
3986
|
+
}
|
|
3987
|
+
};
|
|
3988
|
+
const selectedVariant = variantStyles[variant];
|
|
3989
|
+
const positionStyles = position === "fixed" ? {
|
|
3990
|
+
position: "fixed",
|
|
3991
|
+
left: 0,
|
|
3992
|
+
right: 0,
|
|
3993
|
+
top: 0,
|
|
3994
|
+
zIndex: 999
|
|
3995
|
+
} : {};
|
|
3996
|
+
const renderAction = (action) => {
|
|
3997
|
+
if (!action) {
|
|
3998
|
+
return /* @__PURE__ */ jsx59(Box_default, { sx: selectedVariant.placeholder });
|
|
3999
|
+
}
|
|
4000
|
+
return /* @__PURE__ */ jsx59(
|
|
4001
|
+
IconButton_default,
|
|
4002
|
+
{
|
|
4003
|
+
"aria-label": action.ariaLabel,
|
|
4004
|
+
onClick: action.onClick,
|
|
4005
|
+
disabled: action.disabled,
|
|
4006
|
+
sx: selectedVariant.actionButton,
|
|
4007
|
+
children: action.icon
|
|
4008
|
+
}
|
|
4009
|
+
);
|
|
4010
|
+
};
|
|
4011
|
+
const hasCustomActions = Boolean(headerActions);
|
|
4012
|
+
return /* @__PURE__ */ jsx59(
|
|
4013
|
+
Box_default,
|
|
4014
|
+
{
|
|
4015
|
+
sx: {
|
|
4016
|
+
...selectedVariant.root,
|
|
4017
|
+
...positionStyles,
|
|
4018
|
+
...rootSx
|
|
4019
|
+
},
|
|
4020
|
+
children: /* @__PURE__ */ jsxs14(
|
|
4021
|
+
Box_default,
|
|
4022
|
+
{
|
|
4023
|
+
sx: {
|
|
4024
|
+
...selectedVariant.content,
|
|
4025
|
+
...contentSx
|
|
4026
|
+
},
|
|
4027
|
+
children: [
|
|
4028
|
+
hasCustomActions ? renderAction(headerActions?.leading) : /* @__PURE__ */ jsx59(Fragment6, { children: notificationBtn ? /* @__PURE__ */ jsx59(
|
|
4029
|
+
IconButton_default,
|
|
4030
|
+
{
|
|
4031
|
+
onClick: onNotificationBtnClick,
|
|
4032
|
+
sx: selectedVariant.actionButton,
|
|
4033
|
+
children: /* @__PURE__ */ jsx59(Notification2, { size: 20, color: defaultColors.neutral[700] })
|
|
4034
|
+
}
|
|
4035
|
+
) : /* @__PURE__ */ jsx59(
|
|
4036
|
+
IconButton_default,
|
|
4037
|
+
{
|
|
4038
|
+
onClick: onBackBtnClick,
|
|
4039
|
+
sx: selectedVariant.actionButton,
|
|
4040
|
+
children: /* @__PURE__ */ jsx59(ArrowRight2, { size: 20, color: defaultColors.neutral[700] })
|
|
4041
|
+
}
|
|
4042
|
+
) }),
|
|
4043
|
+
titleComponent ? titleComponent : title && /* @__PURE__ */ jsxs14(Box_default, { sx: selectedVariant.titleContainer, children: [
|
|
4044
|
+
/* @__PURE__ */ jsx59(
|
|
4045
|
+
Typography_default,
|
|
4046
|
+
{
|
|
4047
|
+
variant: selectedVariant.title.variant,
|
|
4048
|
+
component: "h1",
|
|
4049
|
+
fontWeight: selectedVariant.title.fontWeight,
|
|
4050
|
+
sx: selectedVariant.title.sx,
|
|
4051
|
+
children: title
|
|
4052
|
+
}
|
|
4053
|
+
),
|
|
4054
|
+
subtitle ? /* @__PURE__ */ jsx59(Typography_default, { component: "span", sx: selectedVariant.subtitle.sx, children: subtitle }) : null
|
|
4055
|
+
] }),
|
|
4056
|
+
hasCustomActions ? renderAction(headerActions?.trailing) : chatbotBtn ? /* @__PURE__ */ jsx59(IconButton_default, { onClick: navigateToChatbot, sx: selectedVariant.actionButton, children: /* @__PURE__ */ jsx59("img", { src: headphone_default, width: 20, height: 20, alt: "support" }) }) : /* @__PURE__ */ jsx59(Box_default, { sx: selectedVariant.placeholder })
|
|
4057
|
+
]
|
|
4058
|
+
}
|
|
4059
|
+
)
|
|
4060
|
+
}
|
|
4061
|
+
);
|
|
4062
|
+
};
|
|
4063
|
+
var app_page_header_default = AppPageHeader;
|
|
4064
|
+
|
|
4065
|
+
// src/shared/components/app-page-footer.tsx
|
|
4066
|
+
import { jsx as jsx60 } from "react/jsx-runtime";
|
|
4067
|
+
var AppPageFooter = ({
|
|
4068
|
+
children,
|
|
4069
|
+
variant = "default",
|
|
4070
|
+
position = "fixed",
|
|
4071
|
+
rootSx,
|
|
4072
|
+
contentSx
|
|
4073
|
+
}) => {
|
|
4074
|
+
const variantStyles = {
|
|
4075
|
+
default: {
|
|
4076
|
+
root: {
|
|
4077
|
+
display: "flex",
|
|
4078
|
+
flexDirection: "row",
|
|
4079
|
+
height: "60px",
|
|
4080
|
+
justifyContent: "center",
|
|
4081
|
+
alignItems: "center",
|
|
4082
|
+
bgcolor: "#F4F6FA"
|
|
4083
|
+
},
|
|
4084
|
+
content: {
|
|
4085
|
+
bgcolor: "#F4F6FA",
|
|
4086
|
+
display: "flex",
|
|
4087
|
+
flexDirection: "row",
|
|
4088
|
+
width: APP_LAYOUT_MAX_WIDTH,
|
|
4089
|
+
height: "60px",
|
|
4090
|
+
alignItems: "center",
|
|
4091
|
+
px: 4,
|
|
4092
|
+
gap: 2.5,
|
|
4093
|
+
py: 5
|
|
4094
|
+
}
|
|
4095
|
+
},
|
|
4096
|
+
mobile: {
|
|
4097
|
+
root: {
|
|
4098
|
+
display: "flex",
|
|
4099
|
+
flexDirection: "row",
|
|
4100
|
+
justifyContent: "center",
|
|
4101
|
+
width: "100%",
|
|
4102
|
+
px: 0,
|
|
4103
|
+
pt: 0,
|
|
4104
|
+
pb: 0,
|
|
4105
|
+
mt: "auto",
|
|
4106
|
+
bgcolor: "#F4F6FA"
|
|
4107
|
+
},
|
|
4108
|
+
content: {
|
|
4109
|
+
bgcolor: "#F4F6FA",
|
|
4110
|
+
display: "flex",
|
|
4111
|
+
flexDirection: "row",
|
|
4112
|
+
width: "100%",
|
|
4113
|
+
maxWidth: APP_LAYOUT_MAX_WIDTH,
|
|
4114
|
+
alignItems: "center",
|
|
4115
|
+
px: "10px",
|
|
4116
|
+
pt: "18px",
|
|
4117
|
+
pb: "14px",
|
|
4118
|
+
minHeight: "108px"
|
|
4119
|
+
}
|
|
4120
|
+
}
|
|
4121
|
+
};
|
|
4122
|
+
const positionStyles = position === "fixed" ? {
|
|
4123
|
+
position: "fixed",
|
|
4124
|
+
left: 0,
|
|
4125
|
+
right: 0,
|
|
4126
|
+
bottom: 0,
|
|
4127
|
+
zIndex: 999
|
|
4128
|
+
} : position === "sticky" ? {
|
|
4129
|
+
position: "sticky",
|
|
4130
|
+
bottom: 0,
|
|
4131
|
+
zIndex: 2
|
|
4132
|
+
} : {};
|
|
4133
|
+
const selectedVariant = variantStyles[variant];
|
|
4134
|
+
return /* @__PURE__ */ jsx60(
|
|
4135
|
+
Box_default,
|
|
4136
|
+
{
|
|
4137
|
+
sx: {
|
|
4138
|
+
...selectedVariant.root,
|
|
4139
|
+
...positionStyles,
|
|
4140
|
+
...rootSx
|
|
4141
|
+
},
|
|
4142
|
+
children: /* @__PURE__ */ jsx60(
|
|
4143
|
+
Box_default,
|
|
4144
|
+
{
|
|
4145
|
+
sx: {
|
|
4146
|
+
...selectedVariant.content,
|
|
4147
|
+
...contentSx
|
|
4148
|
+
},
|
|
4149
|
+
children
|
|
4150
|
+
}
|
|
4151
|
+
)
|
|
4152
|
+
}
|
|
4153
|
+
);
|
|
4154
|
+
};
|
|
4155
|
+
var app_page_footer_default = AppPageFooter;
|
|
4156
|
+
|
|
4157
|
+
// src/mobile-app-template/components/mobile-app-footer-nav.tsx
|
|
4158
|
+
import { Link } from "@tanstack/react-router";
|
|
4159
|
+
|
|
4160
|
+
// src/theme/colors.ts
|
|
4161
|
+
var appColors = {
|
|
4162
|
+
primary: {
|
|
4163
|
+
50: "#EDFCF6",
|
|
4164
|
+
100: "#D4F7E8",
|
|
4165
|
+
200: "#ACEED6",
|
|
4166
|
+
300: "#76DFBF",
|
|
4167
|
+
400: "#3EC9A3",
|
|
4168
|
+
500: "#1DBF98",
|
|
4169
|
+
600: "#15A48F",
|
|
4170
|
+
700: "#0E8983",
|
|
4171
|
+
800: "#09696E",
|
|
4172
|
+
900: "#054F5B",
|
|
4173
|
+
transparent: "#1DBF981A",
|
|
4174
|
+
main: "#1DBF98",
|
|
4175
|
+
light: "#D4F7E8",
|
|
4176
|
+
dark: "#054F5B",
|
|
4177
|
+
contrastText: "#fff"
|
|
4178
|
+
},
|
|
4179
|
+
secondary: {
|
|
4180
|
+
50: "#E3FFEE",
|
|
4181
|
+
100: "#FFF9DB",
|
|
4182
|
+
200: "#FFEEA4",
|
|
4183
|
+
300: "#FBE07D",
|
|
4184
|
+
400: "#FDD352",
|
|
4185
|
+
500: "#F4BC28",
|
|
4186
|
+
600: "#DCA000",
|
|
4187
|
+
700: "#BB820D",
|
|
4188
|
+
800: "#A06B0B",
|
|
4189
|
+
900: "#89580C",
|
|
4190
|
+
transparent: "#F4BC281A",
|
|
4191
|
+
main: "#F4BC28",
|
|
4192
|
+
light: "#FFF9DB",
|
|
4193
|
+
dark: "#A06B0B",
|
|
4194
|
+
contrastText: "#fff"
|
|
4195
|
+
}
|
|
4196
|
+
};
|
|
4197
|
+
|
|
4198
|
+
// src/mobile-app-template/components/mobile-app-footer-nav.tsx
|
|
4199
|
+
import { jsx as jsx61, jsxs as jsxs15 } from "react/jsx-runtime";
|
|
4200
|
+
var MobileAppFooterNav = ({ items }) => {
|
|
4201
|
+
const renderItemContent = (item) => {
|
|
4202
|
+
const isActive = Boolean(item.active);
|
|
4203
|
+
const icon = typeof item.icon === "function" ? item.icon(isActive) : item.icon;
|
|
4204
|
+
return /* @__PURE__ */ jsxs15(
|
|
4205
|
+
Box_default,
|
|
4206
|
+
{
|
|
4207
|
+
sx: {
|
|
4208
|
+
display: "flex",
|
|
4209
|
+
flexDirection: "column",
|
|
4210
|
+
alignItems: "center",
|
|
4211
|
+
justifyContent: "center",
|
|
4212
|
+
gap: "8px",
|
|
4213
|
+
color: isActive ? appColors.primary.main : "#9CA3AF",
|
|
4214
|
+
width: "100%",
|
|
4215
|
+
minHeight: "74px"
|
|
4216
|
+
},
|
|
4217
|
+
children: [
|
|
4218
|
+
/* @__PURE__ */ jsx61(
|
|
4219
|
+
Box_default,
|
|
4220
|
+
{
|
|
4221
|
+
sx: {
|
|
4222
|
+
display: "flex",
|
|
4223
|
+
lineHeight: 0,
|
|
4224
|
+
transform: "translateY(12px)"
|
|
4225
|
+
},
|
|
4226
|
+
children: icon
|
|
4227
|
+
}
|
|
4228
|
+
),
|
|
4229
|
+
/* @__PURE__ */ jsx61(
|
|
4230
|
+
Typography_default,
|
|
4231
|
+
{
|
|
4232
|
+
component: "span",
|
|
4233
|
+
sx: {
|
|
4234
|
+
fontSize: "12px",
|
|
4235
|
+
fontWeight: isActive ? 500 : 400,
|
|
4236
|
+
color: isActive ? appColors.primary.main : "#9CA3AF",
|
|
4237
|
+
lineHeight: 1.4,
|
|
4238
|
+
transform: "translateY(12px)"
|
|
4239
|
+
},
|
|
4240
|
+
children: item.label
|
|
4241
|
+
}
|
|
4242
|
+
)
|
|
4243
|
+
]
|
|
4244
|
+
}
|
|
4245
|
+
);
|
|
4246
|
+
};
|
|
4247
|
+
return /* @__PURE__ */ jsx61(app_page_footer_default, { variant: "mobile", position: "static", children: /* @__PURE__ */ jsx61(
|
|
4248
|
+
Box_default,
|
|
4249
|
+
{
|
|
4250
|
+
component: "nav",
|
|
4251
|
+
role: "navigation",
|
|
4252
|
+
sx: {
|
|
4253
|
+
display: "grid",
|
|
4254
|
+
gridTemplateColumns: `repeat(${items.length}, minmax(0, 1fr))`,
|
|
4255
|
+
alignItems: "center",
|
|
4256
|
+
justifyItems: "center",
|
|
4257
|
+
width: "100%"
|
|
4258
|
+
},
|
|
4259
|
+
children: items.map((item) => {
|
|
4260
|
+
if (item.to) {
|
|
4261
|
+
return /* @__PURE__ */ jsx61(
|
|
4262
|
+
Link,
|
|
4263
|
+
{
|
|
4264
|
+
to: item.to,
|
|
4265
|
+
style: {
|
|
4266
|
+
width: "100%",
|
|
4267
|
+
display: "flex",
|
|
4268
|
+
justifyContent: "center"
|
|
4269
|
+
},
|
|
4270
|
+
children: renderItemContent(item)
|
|
4271
|
+
},
|
|
4272
|
+
item.key
|
|
4273
|
+
);
|
|
4274
|
+
}
|
|
4275
|
+
return /* @__PURE__ */ jsx61(
|
|
4276
|
+
Box_default,
|
|
4277
|
+
{
|
|
4278
|
+
component: item.onClick ? "button" : "div",
|
|
4279
|
+
type: item.onClick ? "button" : void 0,
|
|
4280
|
+
onClick: item.onClick,
|
|
4281
|
+
sx: {
|
|
4282
|
+
width: "100%",
|
|
4283
|
+
display: "flex",
|
|
4284
|
+
justifyContent: "center",
|
|
4285
|
+
bgcolor: "transparent",
|
|
4286
|
+
border: "none",
|
|
4287
|
+
font: "inherit",
|
|
4288
|
+
cursor: item.onClick ? "pointer" : "default"
|
|
4289
|
+
},
|
|
4290
|
+
children: renderItemContent(item)
|
|
4291
|
+
},
|
|
4292
|
+
item.key
|
|
4293
|
+
);
|
|
4294
|
+
})
|
|
4295
|
+
}
|
|
4296
|
+
) });
|
|
4297
|
+
};
|
|
4298
|
+
var mobile_app_footer_nav_default = MobileAppFooterNav;
|
|
4299
|
+
|
|
4300
|
+
// src/mobile-app-template/components/mobile-app-layout.tsx
|
|
4301
|
+
import { jsx as jsx62, jsxs as jsxs16 } from "react/jsx-runtime";
|
|
4302
|
+
var MobileAppLayout = ({
|
|
4303
|
+
title,
|
|
4304
|
+
subtitle,
|
|
4305
|
+
titleComponent,
|
|
4306
|
+
headerActions,
|
|
4307
|
+
footerItems = [],
|
|
4308
|
+
className,
|
|
4309
|
+
children
|
|
4310
|
+
}) => {
|
|
4311
|
+
return /* @__PURE__ */ jsxs16(
|
|
4312
|
+
Box_default,
|
|
4313
|
+
{
|
|
4314
|
+
className,
|
|
4315
|
+
sx: {
|
|
4316
|
+
width: "100%",
|
|
4317
|
+
minHeight: "100dvh",
|
|
4318
|
+
maxWidth: APP_LAYOUT_MAX_WIDTH,
|
|
4319
|
+
mx: "auto",
|
|
4320
|
+
display: "flex",
|
|
4321
|
+
flexDirection: "column",
|
|
4322
|
+
bgcolor: "#F5F6FA",
|
|
4323
|
+
color: defaultColors.neutral[900],
|
|
4324
|
+
overflowX: "hidden"
|
|
4325
|
+
},
|
|
4326
|
+
children: [
|
|
4327
|
+
/* @__PURE__ */ jsx62(
|
|
4328
|
+
app_page_header_default,
|
|
4329
|
+
{
|
|
4330
|
+
title,
|
|
4331
|
+
subtitle,
|
|
4332
|
+
titleComponent,
|
|
4333
|
+
headerActions,
|
|
4334
|
+
variant: "mobile",
|
|
4335
|
+
position: "static"
|
|
4336
|
+
}
|
|
4337
|
+
),
|
|
4338
|
+
/* @__PURE__ */ jsx62(
|
|
4339
|
+
Box_default,
|
|
4340
|
+
{
|
|
4341
|
+
component: "section",
|
|
4342
|
+
sx: {
|
|
4343
|
+
px: "18px",
|
|
4344
|
+
pb: "24px",
|
|
4345
|
+
flex: 1
|
|
4346
|
+
},
|
|
4347
|
+
children
|
|
4348
|
+
}
|
|
4349
|
+
),
|
|
4350
|
+
footerItems.length ? /* @__PURE__ */ jsx62(mobile_app_footer_nav_default, { items: footerItems }) : null
|
|
4351
|
+
]
|
|
4352
|
+
}
|
|
4353
|
+
);
|
|
4354
|
+
};
|
|
4355
|
+
var mobile_app_layout_default = MobileAppLayout;
|
|
4356
|
+
|
|
3228
4357
|
// src/providers/ThemeProvider.tsx
|
|
3229
4358
|
import { ThemeProvider as MUIThemeProvider } from "@mui/material/styles";
|
|
3230
4359
|
import { CacheProvider } from "@emotion/react";
|
|
@@ -3318,10 +4447,10 @@ var uiTypography = {
|
|
|
3318
4447
|
};
|
|
3319
4448
|
|
|
3320
4449
|
// src/providers/ThemeProvider.tsx
|
|
3321
|
-
import { jsx as
|
|
4450
|
+
import { jsx as jsx63 } from "react/jsx-runtime";
|
|
3322
4451
|
var ThemeProvider = ({
|
|
3323
4452
|
children,
|
|
3324
|
-
appColors,
|
|
4453
|
+
appColors: appColors2,
|
|
3325
4454
|
dir
|
|
3326
4455
|
}) => {
|
|
3327
4456
|
const cacheRtl = createCache({
|
|
@@ -3337,7 +4466,7 @@ var ThemeProvider = ({
|
|
|
3337
4466
|
// dark: false,
|
|
3338
4467
|
// },
|
|
3339
4468
|
palette: {
|
|
3340
|
-
...
|
|
4469
|
+
...appColors2,
|
|
3341
4470
|
...defaultColors
|
|
3342
4471
|
},
|
|
3343
4472
|
typography: {
|
|
@@ -3347,7 +4476,7 @@ var ThemeProvider = ({
|
|
|
3347
4476
|
spacing: 4
|
|
3348
4477
|
};
|
|
3349
4478
|
const theme = createTheme(themeOptions);
|
|
3350
|
-
return /* @__PURE__ */
|
|
4479
|
+
return /* @__PURE__ */ jsx63(CacheProvider, { value: dir === "rtl" ? cacheRtl : cacheLtr, children: /* @__PURE__ */ jsx63(MUIThemeProvider, { theme, children }) });
|
|
3351
4480
|
};
|
|
3352
4481
|
var ThemeProvider_default = ThemeProvider;
|
|
3353
4482
|
|
|
@@ -3358,10 +4487,10 @@ import rtlPlugin2 from "stylis-plugin-rtl";
|
|
|
3358
4487
|
import { prefixer as prefixer2 } from "stylis";
|
|
3359
4488
|
import { CacheProvider as CacheProvider2 } from "@emotion/react";
|
|
3360
4489
|
import createCache2 from "@emotion/cache";
|
|
3361
|
-
import { jsx as
|
|
4490
|
+
import { jsx as jsx64 } from "react/jsx-runtime";
|
|
3362
4491
|
var SPAThemeProvider = ({
|
|
3363
4492
|
children,
|
|
3364
|
-
appColors,
|
|
4493
|
+
appColors: appColors2,
|
|
3365
4494
|
dir,
|
|
3366
4495
|
defaultColors: defaultColorsProp,
|
|
3367
4496
|
themeOptions
|
|
@@ -3373,7 +4502,7 @@ var SPAThemeProvider = ({
|
|
|
3373
4502
|
dark: true
|
|
3374
4503
|
},
|
|
3375
4504
|
palette: {
|
|
3376
|
-
...
|
|
4505
|
+
...appColors2,
|
|
3377
4506
|
...paletteDefaults
|
|
3378
4507
|
},
|
|
3379
4508
|
typography: {
|
|
@@ -3391,7 +4520,7 @@ var SPAThemeProvider = ({
|
|
|
3391
4520
|
key: "muiltr",
|
|
3392
4521
|
stylisPlugins: [prefixer2]
|
|
3393
4522
|
});
|
|
3394
|
-
return /* @__PURE__ */
|
|
4523
|
+
return /* @__PURE__ */ jsx64(CacheProvider2, { value: dir === "rtl" ? cacheRtl : cacheLtr, children: /* @__PURE__ */ jsx64(MUIThemeProvider2, { theme, defaultMode: "light", children }) });
|
|
3395
4524
|
};
|
|
3396
4525
|
var SPAThemeProvider_default = SPAThemeProvider;
|
|
3397
4526
|
|
|
@@ -3403,14 +4532,14 @@ import { useColorScheme } from "@mui/material/styles";
|
|
|
3403
4532
|
import { useTheme as useTheme2 } from "@mui/material/styles";
|
|
3404
4533
|
|
|
3405
4534
|
// src/hooks/useErrorHandler.ts
|
|
3406
|
-
import { useCallback as useCallback2, useState as
|
|
4535
|
+
import { useCallback as useCallback2, useState as useState11 } from "react";
|
|
3407
4536
|
|
|
3408
4537
|
// src/context/MessageHandler.tsx
|
|
3409
4538
|
import {
|
|
3410
4539
|
createContext,
|
|
3411
|
-
useState as
|
|
4540
|
+
useState as useState10
|
|
3412
4541
|
} from "react";
|
|
3413
|
-
import { jsx as
|
|
4542
|
+
import { jsx as jsx65, jsxs as jsxs17 } from "react/jsx-runtime";
|
|
3414
4543
|
var MessageContext = createContext(
|
|
3415
4544
|
void 0
|
|
3416
4545
|
);
|
|
@@ -3419,8 +4548,8 @@ var MessageProvider = ({
|
|
|
3419
4548
|
toastPosition = { vertical: "top", horizontal: "left" },
|
|
3420
4549
|
width = "90%"
|
|
3421
4550
|
}) => {
|
|
3422
|
-
const [message, setMessage] =
|
|
3423
|
-
const [open, setOpen] =
|
|
4551
|
+
const [message, setMessage] = useState10(null);
|
|
4552
|
+
const [open, setOpen] = useState10(false);
|
|
3424
4553
|
const duration = 4e3;
|
|
3425
4554
|
const showMessage = (text, severity, showUndo = false, isWide = false) => {
|
|
3426
4555
|
setMessage({ text, severity, showUndo, isWide });
|
|
@@ -3434,9 +4563,9 @@ var MessageProvider = ({
|
|
|
3434
4563
|
inDesktop: toastPosition,
|
|
3435
4564
|
width
|
|
3436
4565
|
};
|
|
3437
|
-
return /* @__PURE__ */
|
|
4566
|
+
return /* @__PURE__ */ jsxs17(MessageContext.Provider, { value: contextValue, children: [
|
|
3438
4567
|
children,
|
|
3439
|
-
message && /* @__PURE__ */
|
|
4568
|
+
message && /* @__PURE__ */ jsx65(
|
|
3440
4569
|
Toast_default,
|
|
3441
4570
|
{
|
|
3442
4571
|
open,
|
|
@@ -3475,8 +4604,8 @@ var errorHandler = (err) => {
|
|
|
3475
4604
|
};
|
|
3476
4605
|
var useErrorHandler = () => {
|
|
3477
4606
|
const { showMessage } = useMessage();
|
|
3478
|
-
const [errFields, setErrFields] =
|
|
3479
|
-
const [errorMessage, setErrorMessage] =
|
|
4607
|
+
const [errFields, setErrFields] = useState11();
|
|
4608
|
+
const [errorMessage, setErrorMessage] = useState11();
|
|
3480
4609
|
const handleError = useCallback2(
|
|
3481
4610
|
(error, fieldHandler, isWide = false) => {
|
|
3482
4611
|
const err = errorHandler(error);
|
|
@@ -3740,10 +4869,14 @@ var postToParent = (message) => {
|
|
|
3740
4869
|
window.parent.postMessage(message, "*");
|
|
3741
4870
|
};
|
|
3742
4871
|
export {
|
|
4872
|
+
APP_LAYOUT_MAX_WIDTH,
|
|
3743
4873
|
Accordion_default as Accordion,
|
|
3744
4874
|
AccordionDetails_default as AccordionDetails,
|
|
3745
4875
|
AccordionSummary_default as AccordionSummary,
|
|
4876
|
+
app_page_footer_default as AppPageFooter,
|
|
4877
|
+
app_page_header_default as AppPageHeader,
|
|
3746
4878
|
Autocomplete_default as Autocomplete,
|
|
4879
|
+
Badge_default as Badge,
|
|
3747
4880
|
Box_default as Box,
|
|
3748
4881
|
Button_default as Button,
|
|
3749
4882
|
CardNumberInput_default as CardNumberInput,
|
|
@@ -3770,6 +4903,8 @@ export {
|
|
|
3770
4903
|
LoadingModal_default as LoadingModal,
|
|
3771
4904
|
MenuItem_default as MenuItem,
|
|
3772
4905
|
MessageProvider,
|
|
4906
|
+
mobile_app_footer_nav_default as MobileAppFooterNav,
|
|
4907
|
+
mobile_app_layout_default as MobileAppLayout,
|
|
3773
4908
|
MobileDatePicker_default as MobileDatePicker,
|
|
3774
4909
|
Modal_default as Modal,
|
|
3775
4910
|
MultiSelect_default as MultiSelect,
|
|
@@ -3782,6 +4917,9 @@ export {
|
|
|
3782
4917
|
SPAThemeProvider_default as SPAThemeProvider,
|
|
3783
4918
|
Select_default as Select,
|
|
3784
4919
|
Sentry,
|
|
4920
|
+
SidebarDot,
|
|
4921
|
+
SidebarItemIcon,
|
|
4922
|
+
SidebarRow_default as SidebarRow,
|
|
3785
4923
|
Skeleton_default as Skeleton,
|
|
3786
4924
|
Slider_default as Slider,
|
|
3787
4925
|
Step_default as Step,
|
|
@@ -3791,6 +4929,9 @@ export {
|
|
|
3791
4929
|
Stepper_default as Stepper,
|
|
3792
4930
|
SvgIcon_default as SvgIcon,
|
|
3793
4931
|
Tab_default as Tab,
|
|
4932
|
+
TemplateDashboard,
|
|
4933
|
+
TemplateDashboardHeader_default as TemplateDashboardHeader,
|
|
4934
|
+
TemplateDashboardSidebar_default as TemplateDashboardSidebar,
|
|
3794
4935
|
TextField_default as TextField,
|
|
3795
4936
|
ThemeProvider_default as ThemeProvider,
|
|
3796
4937
|
Toast_default as Toast,
|
|
@@ -3819,6 +4960,8 @@ export {
|
|
|
3819
4960
|
shortDateFormat,
|
|
3820
4961
|
MuiStepConnectorClasses as stepConnectorClasses,
|
|
3821
4962
|
muiStyled as styled,
|
|
4963
|
+
templateDashboardHeaderStyles,
|
|
4964
|
+
templateDashboardSidebarWidths,
|
|
3822
4965
|
toLatinDigits,
|
|
3823
4966
|
useColorScheme,
|
|
3824
4967
|
useErrorHandler,
|