@pagamio/frontend-commons-lib 0.8.239 → 0.8.242
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/lib/api/ReactQuery.js +3 -1
- package/lib/api/context.d.ts +6 -0
- package/lib/api/context.js +9 -0
- package/lib/api/swr.d.ts +1 -1
- package/lib/auth/components/AuthFormUtils.d.ts +1 -1
- package/lib/auth/components/ChangePasswordPage.js +1 -1
- package/lib/auth/components/CustomerRegistrationPage.js +1 -1
- package/lib/auth/components/ForgotPasswordPage.js +1 -1
- package/lib/auth/components/LoginPage.js +1 -1
- package/lib/auth/components/ResetPasswordPage.js +1 -1
- package/lib/auth/shared/layout/AuthPageLayout.js +0 -1
- package/lib/components/layout/VerticalTabsLayout.js +0 -1
- package/lib/components/sidebar-v2/NavbarV2.js +1 -2
- package/lib/components/sidebar-v2/SidebarV2.js +1 -2
- package/lib/components/sidebar-v2/SidebarV2Context.js +1 -2
- package/lib/components/sidebar-v2/SidebarV2Primitives.js +1 -3
- package/lib/components/sidebar-v2/iconResolver.d.ts +38 -38
- package/lib/components/sidebar-v2/iconResolver.js +3 -2
- package/lib/components/ui/Chart.js +12 -5
- package/lib/components/ui/DateRangeModal.js +1 -1
- package/lib/components/ui/DetailsCard.d.ts +1 -1
- package/lib/components/ui/FilterComponent.js +8 -4
- package/lib/components/ui/FilterList.js +0 -1
- package/lib/components/ui/FilterSection.js +0 -1
- package/lib/components/ui/FilterWrapper.d.ts +2 -1
- package/lib/components/ui/ImageUploader.d.ts +1 -0
- package/lib/components/ui/ImageUploader.js +3 -4
- package/lib/components/ui/MultiSelect.js +1 -1
- package/lib/components/ui/PageLoader.d.ts +23 -0
- package/lib/components/ui/PageLoader.js +18 -0
- package/lib/components/ui/Progress.js +1 -2
- package/lib/components/ui/Select.js +8 -7
- package/lib/components/ui/Switch.d.ts +2 -1
- package/lib/components/ui/TailwindIndicator.js +3 -1
- package/lib/components/ui/Tooltip.js +0 -1
- package/lib/components/ui/index.d.ts +1 -0
- package/lib/components/ui/index.js +1 -0
- package/lib/context/BreadcrumbContext.js +0 -1
- package/lib/dashboard-visuals/components/ChartWrapper.d.ts +1 -1
- package/lib/dashboard-visuals/components/DataTable.js +1 -1
- package/lib/dashboard-visuals/components/ErrorState.js +1 -1
- package/lib/dashboard-visuals/components/Switch.js +1 -1
- package/lib/dashboard-visuals/components/molecules/NoChartData.js +1 -1
- package/lib/dashboard-visuals/hooks/useChartData.js +23 -2
- package/lib/dashboard-visuals/hooks/useChartDataV2.js +4 -2
- package/lib/dashboard-visuals/v2/components/ApexChartWrapper.js +51 -8
- package/lib/dashboard-visuals/v2/components/DashboardWrapperV2.js +1 -1
- package/lib/dashboard-visuals/visuals/DistributionChart.d.ts +2 -1
- package/lib/form-engine/Form.js +9 -4
- package/lib/form-engine/FormEngine.d.ts +2 -1
- package/lib/form-engine/FormEngine.js +11 -0
- package/lib/form-engine/components/FieldWrapper.js +0 -1
- package/lib/form-engine/index.d.ts +1 -0
- package/lib/form-engine/index.js +1 -0
- package/lib/form-engine/registry/RegisterComponents.d.ts +5 -1
- package/lib/form-engine/registry/RegisterComponents.js +51 -17
- package/lib/form-engine/registry/Registry.d.ts +2 -0
- package/lib/form-engine/registry/Registry.js +8 -4
- package/lib/form-engine/types/index.d.ts +1 -1
- package/lib/pagamio-table/data-table/MantineCoreTable.js +8 -14
- package/lib/pagamio-table/data-table/Pagination.js +1 -1
- package/lib/pagamio-table/utils/functionHelper.d.ts +2 -1
- package/lib/pagamio-table/utils/functionHelper.js +5 -4
- package/lib/permissions/Can.d.ts +20 -0
- package/lib/permissions/Can.js +14 -0
- package/lib/permissions/PermissionProvider.d.ts +15 -0
- package/lib/permissions/PermissionProvider.js +23 -0
- package/lib/permissions/hooks.d.ts +20 -0
- package/lib/permissions/hooks.js +34 -0
- package/lib/permissions/index.d.ts +4 -0
- package/lib/permissions/index.js +3 -0
- package/lib/permissions/types.d.ts +19 -0
- package/lib/permissions/types.js +7 -0
- package/lib/shared/hooks/useContainerWidth.d.ts +1 -1
- package/lib/shared/hooks/useImageUpload.d.ts +1 -1
- package/lib/shared/hooks/useImageUpload.js +2 -2
- package/lib/styles.css +21 -21
- package/package.json +123 -57
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Check if the current user has a specific permission.
|
|
3
|
+
* @example usePermission("order", "refund") // → true/false
|
|
4
|
+
*/
|
|
5
|
+
export declare function usePermission(resource: string, action: string): boolean;
|
|
6
|
+
/**
|
|
7
|
+
* Check if a feature flag is enabled.
|
|
8
|
+
* @example useFeature("inventory.transfers") // → true/false
|
|
9
|
+
*/
|
|
10
|
+
export declare function useFeature(flag: string): boolean;
|
|
11
|
+
/**
|
|
12
|
+
* Check if the user has access to a specific scope.
|
|
13
|
+
* @example useScope("store:123") // → true/false
|
|
14
|
+
*/
|
|
15
|
+
export declare function useScope(scope: string): boolean;
|
|
16
|
+
/**
|
|
17
|
+
* Batch permission check — returns an array of booleans in the same order.
|
|
18
|
+
* @example usePermissions([["order","refund"], ["order","create"]]) // → [true, false]
|
|
19
|
+
*/
|
|
20
|
+
export declare function usePermissions(checks: [resource: string, action: string][]): boolean[];
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { useMemo } from 'react';
|
|
2
|
+
import { usePermissionContext } from './PermissionProvider';
|
|
3
|
+
/**
|
|
4
|
+
* Check if the current user has a specific permission.
|
|
5
|
+
* @example usePermission("order", "refund") // → true/false
|
|
6
|
+
*/
|
|
7
|
+
export function usePermission(resource, action) {
|
|
8
|
+
const { can } = usePermissionContext();
|
|
9
|
+
return can(resource, action);
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* Check if a feature flag is enabled.
|
|
13
|
+
* @example useFeature("inventory.transfers") // → true/false
|
|
14
|
+
*/
|
|
15
|
+
export function useFeature(flag) {
|
|
16
|
+
const { hasFeature } = usePermissionContext();
|
|
17
|
+
return hasFeature(flag);
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Check if the user has access to a specific scope.
|
|
21
|
+
* @example useScope("store:123") // → true/false
|
|
22
|
+
*/
|
|
23
|
+
export function useScope(scope) {
|
|
24
|
+
const { hasScope } = usePermissionContext();
|
|
25
|
+
return hasScope(scope);
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Batch permission check — returns an array of booleans in the same order.
|
|
29
|
+
* @example usePermissions([["order","refund"], ["order","create"]]) // → [true, false]
|
|
30
|
+
*/
|
|
31
|
+
export function usePermissions(checks) {
|
|
32
|
+
const { can } = usePermissionContext();
|
|
33
|
+
return useMemo(() => checks.map(([resource, action]) => can(resource, action)), [can, JSON.stringify(checks)]);
|
|
34
|
+
}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Frontend Permission Engine Types
|
|
3
|
+
*
|
|
4
|
+
* Routes check identity (isAuthenticated, roleGroup).
|
|
5
|
+
* Components check capabilities (usePermission).
|
|
6
|
+
*/
|
|
7
|
+
export interface Permission {
|
|
8
|
+
resource: string;
|
|
9
|
+
action: string;
|
|
10
|
+
scope?: string;
|
|
11
|
+
}
|
|
12
|
+
export interface PermissionPolicy {
|
|
13
|
+
/** Array of granted permissions */
|
|
14
|
+
permissions: Permission[];
|
|
15
|
+
/** Feature flags — "is inventory.transfers enabled?" */
|
|
16
|
+
features: Record<string, boolean>;
|
|
17
|
+
/** Scopes the user can access — "store:123", "org:456" */
|
|
18
|
+
scopes: string[];
|
|
19
|
+
}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
import { type RefObject } from 'react';
|
|
2
|
-
export declare function useContainerWidth<T extends HTMLElement>(): [RefObject<T>, number];
|
|
2
|
+
export declare function useContainerWidth<T extends HTMLElement>(): [RefObject<T | null>, number];
|
|
@@ -5,7 +5,7 @@ export interface UploadResponse {
|
|
|
5
5
|
export interface UseImageUploadProps {
|
|
6
6
|
project: 'vas' | 'stocklink' | 'events' | 'commerce';
|
|
7
7
|
env: 'dev' | 'uat' | 'prod';
|
|
8
|
-
endpoint
|
|
8
|
+
endpoint: string;
|
|
9
9
|
}
|
|
10
10
|
export declare const useImageUpload: ({ project, env, endpoint }: UseImageUploadProps) => {
|
|
11
11
|
getPresignedUrl: (fileName: string, contentType: string) => Promise<UploadResponse>;
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { useCallback, useState } from 'react';
|
|
2
2
|
import { generateSecureRandomString, uploadFileWithXHR } from '../utils/functionHelper';
|
|
3
3
|
export const useImageUpload = ({ project, env, endpoint }) => {
|
|
4
|
-
const resolvedEndpoint = endpoint
|
|
4
|
+
const resolvedEndpoint = endpoint;
|
|
5
5
|
if (!resolvedEndpoint) {
|
|
6
|
-
throw new Error('
|
|
6
|
+
throw new Error('"endpoint" is required. Pass the upload URL endpoint explicitly');
|
|
7
7
|
}
|
|
8
8
|
const [isLoading, setIsLoading] = useState(false);
|
|
9
9
|
const [error, setError] = useState(null);
|
package/lib/styles.css
CHANGED
|
@@ -105,7 +105,7 @@
|
|
|
105
105
|
--tw-contain-paint: ;
|
|
106
106
|
--tw-contain-style: ;
|
|
107
107
|
}/*
|
|
108
|
-
! tailwindcss v3.4.
|
|
108
|
+
! tailwindcss v3.4.19 | MIT License | https://tailwindcss.com
|
|
109
109
|
*//*
|
|
110
110
|
1. Prevent padding and border from affecting element width. (https://github.com/mozdevs/cssremedy/issues/4)
|
|
111
111
|
2. Allow adding a border to an element by just adding a border-width. (https://github.com/tailwindcss/tailwindcss/pull/116)
|
|
@@ -1703,6 +1703,9 @@ input[type="range"]::-ms-fill-lower {
|
|
|
1703
1703
|
.min-h-\[60px\] {
|
|
1704
1704
|
min-height: 60px;
|
|
1705
1705
|
}
|
|
1706
|
+
.min-h-\[calc\(100vh-5rem\)\] {
|
|
1707
|
+
min-height: calc(100vh - 5rem);
|
|
1708
|
+
}
|
|
1706
1709
|
.min-h-screen {
|
|
1707
1710
|
min-height: 100vh;
|
|
1708
1711
|
}
|
|
@@ -2537,6 +2540,9 @@ input[type="range"]::-ms-fill-lower {
|
|
|
2537
2540
|
--tw-border-opacity: 1;
|
|
2538
2541
|
border-color: rgb(214 31 105 / var(--tw-border-opacity, 1));
|
|
2539
2542
|
}
|
|
2543
|
+
.border-primary {
|
|
2544
|
+
border-color: hsl(var(--primary));
|
|
2545
|
+
}
|
|
2540
2546
|
.border-purple-500 {
|
|
2541
2547
|
--tw-border-opacity: 1;
|
|
2542
2548
|
border-color: rgb(144 97 249 / var(--tw-border-opacity, 1));
|
|
@@ -2646,10 +2652,6 @@ input[type="range"]::-ms-fill-lower {
|
|
|
2646
2652
|
--tw-bg-opacity: 1;
|
|
2647
2653
|
background-color: rgb(235 245 255 / var(--tw-bg-opacity, 1));
|
|
2648
2654
|
}
|
|
2649
|
-
.bg-blue-500 {
|
|
2650
|
-
--tw-bg-opacity: 1;
|
|
2651
|
-
background-color: rgb(63 131 248 / var(--tw-bg-opacity, 1));
|
|
2652
|
-
}
|
|
2653
2655
|
.bg-blue-600 {
|
|
2654
2656
|
--tw-bg-opacity: 1;
|
|
2655
2657
|
background-color: rgb(28 100 242 / var(--tw-bg-opacity, 1));
|
|
@@ -3912,18 +3914,14 @@ input[type="range"]::-ms-fill-lower {
|
|
|
3912
3914
|
}
|
|
3913
3915
|
.backdrop-blur-md {
|
|
3914
3916
|
--tw-backdrop-blur: blur(12px);
|
|
3915
|
-
-webkit-backdrop-filter: var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);
|
|
3916
3917
|
backdrop-filter: var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);
|
|
3917
3918
|
}
|
|
3918
3919
|
.backdrop-blur-sm {
|
|
3919
3920
|
--tw-backdrop-blur: blur(4px);
|
|
3920
|
-
-webkit-backdrop-filter: var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);
|
|
3921
3921
|
backdrop-filter: var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);
|
|
3922
3922
|
}
|
|
3923
3923
|
.transition {
|
|
3924
|
-
transition-property: color, background-color, border-color, text-decoration-color, fill, stroke, opacity, box-shadow, transform, filter, -webkit-backdrop-filter;
|
|
3925
3924
|
transition-property: color, background-color, border-color, text-decoration-color, fill, stroke, opacity, box-shadow, transform, filter, backdrop-filter;
|
|
3926
|
-
transition-property: color, background-color, border-color, text-decoration-color, fill, stroke, opacity, box-shadow, transform, filter, backdrop-filter, -webkit-backdrop-filter;
|
|
3927
3925
|
transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
|
|
3928
3926
|
transition-duration: 150ms;
|
|
3929
3927
|
}
|
|
@@ -3932,6 +3930,11 @@ input[type="range"]::-ms-fill-lower {
|
|
|
3932
3930
|
transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
|
|
3933
3931
|
transition-duration: 150ms;
|
|
3934
3932
|
}
|
|
3933
|
+
.transition-\[margin-left\] {
|
|
3934
|
+
transition-property: margin-left;
|
|
3935
|
+
transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
|
|
3936
|
+
transition-duration: 150ms;
|
|
3937
|
+
}
|
|
3935
3938
|
.transition-all {
|
|
3936
3939
|
transition-property: all;
|
|
3937
3940
|
transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
|
|
@@ -4275,10 +4278,6 @@ input[type="range"]::-ms-fill-lower {
|
|
|
4275
4278
|
--tw-bg-opacity: 1;
|
|
4276
4279
|
background-color: rgb(195 221 253 / var(--tw-bg-opacity, 1));
|
|
4277
4280
|
}
|
|
4278
|
-
.hover\:bg-blue-600:hover {
|
|
4279
|
-
--tw-bg-opacity: 1;
|
|
4280
|
-
background-color: rgb(28 100 242 / var(--tw-bg-opacity, 1));
|
|
4281
|
-
}
|
|
4282
4281
|
.hover\:bg-blue-800:hover {
|
|
4283
4282
|
--tw-bg-opacity: 1;
|
|
4284
4283
|
background-color: rgb(30 66 159 / var(--tw-bg-opacity, 1));
|
|
@@ -4417,6 +4416,9 @@ input[type="range"]::-ms-fill-lower {
|
|
|
4417
4416
|
.hover\:opacity-100:hover {
|
|
4418
4417
|
opacity: 1;
|
|
4419
4418
|
}
|
|
4419
|
+
.hover\:opacity-90:hover {
|
|
4420
|
+
opacity: 0.9;
|
|
4421
|
+
}
|
|
4420
4422
|
.hover\:shadow:hover {
|
|
4421
4423
|
--tw-shadow: 0 1px 3px 0 rgb(0 0 0 / 0.1), 0 1px 2px -1px rgb(0 0 0 / 0.1);
|
|
4422
4424
|
--tw-shadow-colored: 0 1px 3px 0 var(--tw-shadow-color), 0 1px 2px -1px var(--tw-shadow-color);
|
|
@@ -4430,10 +4432,6 @@ input[type="range"]::-ms-fill-lower {
|
|
|
4430
4432
|
.focus\:z-10:focus {
|
|
4431
4433
|
z-index: 10;
|
|
4432
4434
|
}
|
|
4433
|
-
.focus\:border-blue-500:focus {
|
|
4434
|
-
--tw-border-opacity: 1;
|
|
4435
|
-
border-color: rgb(63 131 248 / var(--tw-border-opacity, 1));
|
|
4436
|
-
}
|
|
4437
4435
|
.focus\:border-blue-600:focus {
|
|
4438
4436
|
--tw-border-opacity: 1;
|
|
4439
4437
|
border-color: rgb(28 100 242 / var(--tw-border-opacity, 1));
|
|
@@ -4450,6 +4448,9 @@ input[type="range"]::-ms-fill-lower {
|
|
|
4450
4448
|
--tw-border-opacity: 1;
|
|
4451
4449
|
border-color: rgb(5 122 85 / var(--tw-border-opacity, 1));
|
|
4452
4450
|
}
|
|
4451
|
+
.focus\:border-primary:focus {
|
|
4452
|
+
border-color: hsl(var(--primary));
|
|
4453
|
+
}
|
|
4453
4454
|
.focus\:border-red-500:focus {
|
|
4454
4455
|
--tw-border-opacity: 1;
|
|
4455
4456
|
border-color: rgb(240 82 82 / var(--tw-border-opacity, 1));
|
|
@@ -4512,10 +4513,6 @@ input[type="range"]::-ms-fill-lower {
|
|
|
4512
4513
|
--tw-ring-opacity: 1;
|
|
4513
4514
|
--tw-ring-color: rgb(118 169 250 / var(--tw-ring-opacity, 1));
|
|
4514
4515
|
}
|
|
4515
|
-
.focus\:ring-blue-500:focus {
|
|
4516
|
-
--tw-ring-opacity: 1;
|
|
4517
|
-
--tw-ring-color: rgb(63 131 248 / var(--tw-ring-opacity, 1));
|
|
4518
|
-
}
|
|
4519
4516
|
.focus\:ring-blue-600:focus {
|
|
4520
4517
|
--tw-ring-opacity: 1;
|
|
4521
4518
|
--tw-ring-color: rgb(28 100 242 / var(--tw-ring-opacity, 1));
|
|
@@ -4632,6 +4629,9 @@ input[type="range"]::-ms-fill-lower {
|
|
|
4632
4629
|
--tw-ring-opacity: 1;
|
|
4633
4630
|
--tw-ring-color: rgb(214 31 105 / var(--tw-ring-opacity, 1));
|
|
4634
4631
|
}
|
|
4632
|
+
.focus\:ring-primary:focus {
|
|
4633
|
+
--tw-ring-color: hsl(var(--primary));
|
|
4634
|
+
}
|
|
4635
4635
|
.focus\:ring-purple-200:focus {
|
|
4636
4636
|
--tw-ring-opacity: 1;
|
|
4637
4637
|
--tw-ring-color: rgb(220 215 254 / var(--tw-ring-opacity, 1));
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@pagamio/frontend-commons-lib",
|
|
3
3
|
"description": "Pagamio library for Frontend reusable components like the form engine and table container",
|
|
4
|
-
"version": "0.8.
|
|
4
|
+
"version": "0.8.242",
|
|
5
5
|
"publishConfig": {
|
|
6
6
|
"access": "public",
|
|
7
7
|
"provenance": false
|
|
@@ -19,6 +19,14 @@
|
|
|
19
19
|
"types": "./lib/index.d.ts",
|
|
20
20
|
"default": "./lib/index.js"
|
|
21
21
|
},
|
|
22
|
+
"./dashboard-visuals": {
|
|
23
|
+
"types": "./lib/dashboard-visuals/index.d.ts",
|
|
24
|
+
"default": "./lib/dashboard-visuals/index.js"
|
|
25
|
+
},
|
|
26
|
+
"./dashboard-visuals/v2": {
|
|
27
|
+
"types": "./lib/dashboard-visuals/v2/index.d.ts",
|
|
28
|
+
"default": "./lib/dashboard-visuals/v2/index.js"
|
|
29
|
+
},
|
|
22
30
|
"./components/layout": {
|
|
23
31
|
"types": "./lib/components/layout/index.d.ts",
|
|
24
32
|
"default": "./lib/components/layout/index.js"
|
|
@@ -85,106 +93,164 @@
|
|
|
85
93
|
"extract-translations": "i18next-scanner --config i18next-scanner.config.js 'src/**/*.{js,jsx,ts,tsx}'"
|
|
86
94
|
},
|
|
87
95
|
"dependencies": {
|
|
88
|
-
"@emotion/react": "^11.13.5",
|
|
89
|
-
"@heroicons/react": "^2.1.5",
|
|
90
|
-
"@hookform/resolvers": "^3.9.0",
|
|
91
|
-
"@mantine/core": "6.0.21",
|
|
92
|
-
"@mantine/dates": "6.0.21",
|
|
93
|
-
"@mantine/hooks": "6.0.21",
|
|
94
|
-
"@radix-ui/react-avatar": "^1.1.0",
|
|
95
|
-
"@radix-ui/react-checkbox": "^1.1.1",
|
|
96
|
-
"@radix-ui/react-dialog": "^1.1.2",
|
|
97
|
-
"@radix-ui/react-icons": "^1.3.0",
|
|
98
|
-
"@radix-ui/react-label": "^2.1.0",
|
|
99
|
-
"@radix-ui/react-popover": "^1.1.1",
|
|
100
|
-
"@radix-ui/react-radio-group": "^1.2.1",
|
|
101
|
-
"@radix-ui/react-select": "^2.1.1",
|
|
102
|
-
"@radix-ui/react-separator": "^1.1.0",
|
|
103
|
-
"@radix-ui/react-switch": "^1.1.1",
|
|
104
|
-
"@radix-ui/react-tooltip": "^1.2.8",
|
|
105
|
-
"@tabler/icons-react": "^3.23.0",
|
|
106
|
-
"@tanstack/react-query": "^5.90.16",
|
|
107
|
-
"@tanstack/react-query-devtools": "^5.91.2",
|
|
108
|
-
"@tanstack/react-table": "^8.20.5",
|
|
109
|
-
"@testing-library/react": "^16.0.1",
|
|
110
|
-
"@types/file-saver": "^2.0.7",
|
|
111
|
-
"@types/papaparse": "^5.3.15",
|
|
112
|
-
"@typescript-eslint/eslint-plugin": "^8.26.1",
|
|
113
|
-
"@typescript-eslint/parser": "^8.26.1",
|
|
114
|
-
"apexcharts": "^4.4.0",
|
|
115
96
|
"class-variance-authority": "^0.7.0",
|
|
116
97
|
"classnames": "^2.5.1",
|
|
117
98
|
"clsx": "^2.1.1",
|
|
118
|
-
"cmdk": "1.0.0",
|
|
119
99
|
"date-fns": "^4.1.0",
|
|
120
100
|
"dayjs": "^1.11.13",
|
|
121
|
-
"echarts": "^5.5.1",
|
|
122
|
-
"echarts-for-react": "^3.0.2",
|
|
123
|
-
"eslint-plugin-jsx-a11y": "^6.10.2",
|
|
124
|
-
"eslint-plugin-unicorn": "^57.0.0",
|
|
125
101
|
"file-saver": "^2.0.5",
|
|
126
|
-
"flowbite": "^2.5.2",
|
|
127
|
-
"flowbite-react": "^0.10.2",
|
|
128
102
|
"js-cookie": "^3.0.5",
|
|
129
103
|
"jspdf": "^2.5.2",
|
|
130
104
|
"jspdf-autotable": "^3.8.4",
|
|
131
105
|
"jwt-decode": "^4.0.0",
|
|
132
106
|
"lodash": "^4.17.21",
|
|
133
|
-
"lucide-react": "^0.441.0",
|
|
134
|
-
"mantine-react-table": "^1.3.4",
|
|
135
|
-
"next": "^16.0.10",
|
|
136
107
|
"papaparse": "^5.4.1",
|
|
137
|
-
"react": "^19.2.3",
|
|
138
|
-
"react-apexcharts": "^1.7.0",
|
|
139
|
-
"react-date-range": "^2.0.1",
|
|
140
|
-
"react-datepicker": "^7.6.0",
|
|
141
|
-
"react-day-picker": "^9.4.4",
|
|
142
|
-
"react-dom": "^19.2.3",
|
|
143
|
-
"react-dropzone": "^14.2.3",
|
|
144
|
-
"react-hook-form": "^7.53.1",
|
|
145
|
-
"react-icons": "^5.3.0",
|
|
146
|
-
"react-phone-number-input": "^3.4.12",
|
|
147
|
-
"react-table": "^7.8.0",
|
|
148
|
-
"swr": "^2.3.3",
|
|
149
108
|
"tailwind-merge": "^2.5.2",
|
|
150
|
-
"tailwindcss-animate": "^1.0.7",
|
|
151
109
|
"uuid": "^11.1.0",
|
|
152
110
|
"xlsx": "^0.18.5",
|
|
153
111
|
"zod": "^3.23.8"
|
|
154
112
|
},
|
|
113
|
+
"peerDependencies": {
|
|
114
|
+
"@emotion/react": "^11.0.0",
|
|
115
|
+
"@heroicons/react": "^2.0.0",
|
|
116
|
+
"@hookform/resolvers": "^3.0.0",
|
|
117
|
+
"@mantine/core": ">=6.0.0",
|
|
118
|
+
"@mantine/dates": ">=6.0.0",
|
|
119
|
+
"@mantine/hooks": ">=6.0.0",
|
|
120
|
+
"@radix-ui/react-avatar": "^1.1.0",
|
|
121
|
+
"@radix-ui/react-checkbox": "^1.1.0",
|
|
122
|
+
"@radix-ui/react-dialog": "^1.1.0",
|
|
123
|
+
"@radix-ui/react-icons": "^1.3.0",
|
|
124
|
+
"@radix-ui/react-label": "^2.1.0",
|
|
125
|
+
"@radix-ui/react-popover": "^1.1.0",
|
|
126
|
+
"@radix-ui/react-radio-group": "^1.2.0",
|
|
127
|
+
"@radix-ui/react-scroll-area": "^1.2.0",
|
|
128
|
+
"@radix-ui/react-select": "^2.1.0",
|
|
129
|
+
"@radix-ui/react-separator": "^1.1.0",
|
|
130
|
+
"@radix-ui/react-slot": "^1.1.0",
|
|
131
|
+
"@radix-ui/react-switch": "^1.1.0",
|
|
132
|
+
"@radix-ui/react-tooltip": "^1.1.0",
|
|
133
|
+
"@tabler/icons-react": "^3.0.0",
|
|
134
|
+
"@tanstack/react-query": "^5.0.0",
|
|
135
|
+
"@tanstack/react-query-devtools": "^5.0.0",
|
|
136
|
+
"@tanstack/react-table": "^8.0.0",
|
|
137
|
+
"@types/react": "^18 || ^19",
|
|
138
|
+
"@types/react-dom": "^18 || ^19",
|
|
139
|
+
"apexcharts": "^4.0.0",
|
|
140
|
+
"cmdk": "^1.0.0",
|
|
141
|
+
"echarts": "^5.0.0",
|
|
142
|
+
"echarts-for-react": "^3.0.0",
|
|
143
|
+
"flowbite-react": "^0.10.0",
|
|
144
|
+
"lucide-react": ">=0.400.0",
|
|
145
|
+
"mantine-react-table": "^1.3.0",
|
|
146
|
+
"react": "^18.0.0 || ^19.0.0",
|
|
147
|
+
"react-apexcharts": "^1.5.0",
|
|
148
|
+
"react-date-range": "^2.0.0",
|
|
149
|
+
"react-datepicker": "^7.0.0",
|
|
150
|
+
"react-day-picker": "^9.0.0",
|
|
151
|
+
"react-dom": "^18.0.0 || ^19.0.0",
|
|
152
|
+
"react-dropzone": "^14.0.0",
|
|
153
|
+
"react-hook-form": "^7.0.0",
|
|
154
|
+
"react-icons": "^5.0.0",
|
|
155
|
+
"react-phone-number-input": "^3.0.0",
|
|
156
|
+
"react-table": "^7.0.0",
|
|
157
|
+
"swr": "^2.0.0"
|
|
158
|
+
},
|
|
159
|
+
"peerDependenciesMeta": {
|
|
160
|
+
"@tanstack/react-query-devtools": {
|
|
161
|
+
"optional": true
|
|
162
|
+
},
|
|
163
|
+
"apexcharts": {
|
|
164
|
+
"optional": true
|
|
165
|
+
},
|
|
166
|
+
"echarts": {
|
|
167
|
+
"optional": true
|
|
168
|
+
},
|
|
169
|
+
"echarts-for-react": {
|
|
170
|
+
"optional": true
|
|
171
|
+
},
|
|
172
|
+
"react-apexcharts": {
|
|
173
|
+
"optional": true
|
|
174
|
+
}
|
|
175
|
+
},
|
|
155
176
|
"devDependencies": {
|
|
156
|
-
"@
|
|
177
|
+
"@emotion/react": "^11.0.0",
|
|
178
|
+
"@heroicons/react": "^2.0.0",
|
|
179
|
+
"@hookform/resolvers": "^3.0.0",
|
|
180
|
+
"@mantine/core": ">=6.0.0",
|
|
181
|
+
"@mantine/dates": ">=6.0.0",
|
|
182
|
+
"@mantine/hooks": ">=6.0.0",
|
|
183
|
+
"@radix-ui/react-avatar": "^1.1.0",
|
|
184
|
+
"@radix-ui/react-checkbox": "^1.1.0",
|
|
185
|
+
"@radix-ui/react-dialog": "^1.1.0",
|
|
186
|
+
"@radix-ui/react-icons": "^1.3.0",
|
|
187
|
+
"@radix-ui/react-label": "^2.1.0",
|
|
188
|
+
"@radix-ui/react-popover": "^1.1.0",
|
|
189
|
+
"@radix-ui/react-radio-group": "^1.2.0",
|
|
190
|
+
"@radix-ui/react-select": "^2.1.0",
|
|
191
|
+
"@radix-ui/react-separator": "^1.1.0",
|
|
192
|
+
"@radix-ui/react-switch": "^1.1.0",
|
|
193
|
+
"@radix-ui/react-tooltip": "^1.1.0",
|
|
194
|
+
"@tabler/icons-react": "^3.0.0",
|
|
195
|
+
"@tanstack/react-query": "^5.0.0",
|
|
196
|
+
"@tanstack/react-query-devtools": "^5.0.0",
|
|
197
|
+
"@tanstack/react-table": "^8.0.0",
|
|
157
198
|
"@testing-library/jest-dom": "^6.6.3",
|
|
199
|
+
"@testing-library/react": "^16.0.1",
|
|
158
200
|
"@testing-library/user-event": "^14.5.2",
|
|
159
201
|
"@trivago/prettier-plugin-sort-imports": "^5.2.2",
|
|
202
|
+
"@types/file-saver": "^2.0.7",
|
|
160
203
|
"@types/jest": "^29.5.14",
|
|
161
204
|
"@types/js-cookie": "^3.0.6",
|
|
162
205
|
"@types/lodash": "^4.17.13",
|
|
163
206
|
"@types/node": "^20",
|
|
164
|
-
"@types/
|
|
207
|
+
"@types/papaparse": "^5.3.15",
|
|
208
|
+
"@types/react": "^19",
|
|
165
209
|
"@types/react-date-range": "^1.4.10",
|
|
166
|
-
"@types/react-dom": "^
|
|
210
|
+
"@types/react-dom": "^19",
|
|
167
211
|
"@types/react-dropzone": "^5.1.0",
|
|
168
212
|
"@types/react-table": "^7.7.20",
|
|
169
|
-
"@
|
|
213
|
+
"@typescript-eslint/eslint-plugin": "^8.26.1",
|
|
214
|
+
"@typescript-eslint/parser": "^8.26.1",
|
|
215
|
+
"apexcharts": "^4.0.0",
|
|
170
216
|
"autoprefixer": "^10.4.20",
|
|
217
|
+
"cmdk": "^1.0.0",
|
|
171
218
|
"concurrently": "^9.0.1",
|
|
172
219
|
"copyfiles": "^2.4.1",
|
|
220
|
+
"echarts": "^5.0.0",
|
|
221
|
+
"echarts-for-react": "^3.0.0",
|
|
173
222
|
"eslint": "^9.22.0",
|
|
174
223
|
"eslint-config-prettier": "^10.0.1",
|
|
224
|
+
"eslint-plugin-jsx-a11y": "^6.10.2",
|
|
175
225
|
"eslint-plugin-prettier": "^5.2.3",
|
|
176
226
|
"eslint-plugin-react": "^7.37.4",
|
|
177
227
|
"eslint-plugin-react-hooks": "^5.2.0",
|
|
178
228
|
"eslint-plugin-tailwindcss": "^3.18.0",
|
|
229
|
+
"eslint-plugin-unicorn": "^57.0.0",
|
|
230
|
+
"flowbite-react": "^0.10.0",
|
|
179
231
|
"husky": "^9.1.7",
|
|
180
232
|
"i18next-scanner": "^4.4.0",
|
|
181
233
|
"lint-staged": "^15.5.0",
|
|
234
|
+
"lucide-react": ">=0.400.0",
|
|
235
|
+
"mantine-react-table": "^1.3.0",
|
|
182
236
|
"postcss": "^8.4.47",
|
|
183
237
|
"postcss-cli": "^11.0.0",
|
|
184
238
|
"prettier": "^3.4.2",
|
|
239
|
+
"react": "^19.0.0",
|
|
240
|
+
"react-apexcharts": "^1.5.0",
|
|
241
|
+
"react-date-range": "^2.0.0",
|
|
242
|
+
"react-datepicker": "^7.0.0",
|
|
243
|
+
"react-day-picker": "^9.0.0",
|
|
244
|
+
"react-dom": "^19.0.0",
|
|
245
|
+
"react-dropzone": "^14.0.0",
|
|
246
|
+
"react-hook-form": "^7.0.0",
|
|
247
|
+
"react-icons": "^5.0.0",
|
|
248
|
+
"react-phone-number-input": "^3.0.0",
|
|
249
|
+
"react-table": "^7.0.0",
|
|
250
|
+
"swr": "^2.0.0",
|
|
185
251
|
"tailwindcss": "^3.4.1",
|
|
186
|
-
"
|
|
187
|
-
"
|
|
252
|
+
"tailwindcss-animate": "^1.0.7",
|
|
253
|
+
"typescript": "^5.9.3"
|
|
188
254
|
},
|
|
189
255
|
"lint-staged": {
|
|
190
256
|
"*.{js,ts,tsx}": "eslint . --fix"
|