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.
Files changed (28) hide show
  1. package/README.md +67 -1
  2. package/dist/components/index.js +1143 -1
  3. package/dist/constants/index.js +4 -0
  4. package/dist/headphone-FHILIBNI.svg +7 -0
  5. package/dist/index.js +1160 -17
  6. package/dist/types/components/index.d.ts +19 -0
  7. package/dist/types/constants/index.d.ts +1 -0
  8. package/dist/types/mobile-app-template/components/mobile-app-footer-nav.d.ts +16 -0
  9. package/dist/types/mobile-app-template/components/mobile-app-layout.d.ts +19 -0
  10. package/dist/types/mobile-app-template/index.d.ts +2 -0
  11. package/dist/types/shared/components/Badge.d.ts +7 -0
  12. package/dist/types/shared/components/SidebarRow.d.ts +40 -0
  13. package/dist/types/shared/components/TemplateDashboardSidebar.d.ts +24 -0
  14. package/dist/types/shared/components/app-page-footer.d.ts +14 -0
  15. package/dist/types/shared/components/app-page-header.d.ts +28 -0
  16. package/dist/types/shared/components/template-dashboard/TemplateDashboard.d.ts +2 -0
  17. package/dist/types/shared/components/template-dashboard/TemplateDashboard.types.d.ts +18 -0
  18. package/dist/types/shared/components/template-dashboard/index.d.ts +3 -0
  19. package/dist/types/shared/components/template-dashboard-header/TemplateDashboardHeader.d.ts +3 -0
  20. package/dist/types/shared/components/template-dashboard-header/TemplateDashboardHeader.styles.d.ts +99 -0
  21. package/dist/types/shared/components/template-dashboard-header/TemplateDashboardHeader.types.d.ts +8 -0
  22. package/dist/types/shared/components/template-dashboard-header/index.d.ts +3 -0
  23. package/dist/types/theme/colors.d.ts +36 -0
  24. package/guidelines/Guidelines.md +15 -11
  25. package/guidelines/ai-index.md +111 -0
  26. package/guidelines/components/app-templates.md +103 -0
  27. package/package.json +5 -3
  28. 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 jsx54 } from "react/jsx-runtime";
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
- ...appColors,
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__ */ jsx54(CacheProvider, { value: dir === "rtl" ? cacheRtl : cacheLtr, children: /* @__PURE__ */ jsx54(MUIThemeProvider, { theme, children }) });
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 jsx55 } from "react/jsx-runtime";
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
- ...appColors,
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__ */ jsx55(CacheProvider2, { value: dir === "rtl" ? cacheRtl : cacheLtr, children: /* @__PURE__ */ jsx55(MUIThemeProvider2, { theme, defaultMode: "light", children }) });
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 useState9 } from "react";
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 useState8
4540
+ useState as useState10
3412
4541
  } from "react";
3413
- import { jsx as jsx56, jsxs as jsxs10 } from "react/jsx-runtime";
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] = useState8(null);
3423
- const [open, setOpen] = useState8(false);
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__ */ jsxs10(MessageContext.Provider, { value: contextValue, children: [
4566
+ return /* @__PURE__ */ jsxs17(MessageContext.Provider, { value: contextValue, children: [
3438
4567
  children,
3439
- message && /* @__PURE__ */ jsx56(
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] = useState9();
3479
- const [errorMessage, setErrorMessage] = useState9();
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,