@amirjalili1374/ui-kit 1.2.0 → 1.2.2

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 (141) hide show
  1. package/README.md +11 -11
  2. package/package.json +3 -3
  3. package/src/assets/fonts/A Massir Spray.ttf +0 -0
  4. package/src/assets/fonts/BYekan.ttf +0 -0
  5. package/src/assets/fonts/BYekan.woff +0 -0
  6. package/src/assets/fonts/BYekan.woff2 +0 -0
  7. package/src/assets/fonts/Dima Shekasteh 2 Free.ttf +0 -0
  8. package/src/assets/fonts/Dima Shekasteh Free Regular.ttf +0 -0
  9. package/src/assets/fonts/IRANSansWeb.ts +0 -1
  10. package/src/assets/fonts/IRANSansWeb.ttf +0 -0
  11. package/src/assets/fonts/IRANSansXBlack.ttf +0 -0
  12. package/src/assets/fonts/IRANSansXBold.ttf +0 -0
  13. package/src/assets/fonts/IRANSansXDemiBold.ttf +0 -0
  14. package/src/assets/fonts/IRANSansXExtraBold.ttf +0 -0
  15. package/src/assets/fonts/IRANSansXLight.ttf +0 -0
  16. package/src/assets/fonts/IRANSansXMedium.ttf +0 -0
  17. package/src/assets/fonts/IRANSansXRegular.ttf +0 -0
  18. package/src/assets/fonts/IRANSansXThin.ttf +0 -0
  19. package/src/assets/fonts/IRANSansXUltraLight.ttf +0 -0
  20. package/src/assets/fonts/IranNastaliq.ttf +0 -0
  21. package/src/assets/fonts/Vazir-Medium-FD.ttf +0 -0
  22. package/src/assets/fonts/Vazir-Medium-FD.woff +0 -0
  23. package/src/assets/fonts/Vazir-Medium-FD.woff2 +0 -0
  24. package/src/assets/fonts/Vazir-Regular-FD.eot +0 -0
  25. package/src/assets/fonts/kalamehBold.woff +0 -0
  26. package/src/assets/fonts/kalamehBold.woff2 +0 -0
  27. package/src/assets/fonts/kalamehHeavy.woff +0 -0
  28. package/src/assets/fonts/kalamehHeavy.woff2 +0 -0
  29. package/src/assets/fonts/kalamehLight.woff +0 -0
  30. package/src/assets/fonts/kalamehLight.woff2 +0 -0
  31. package/src/assets/fonts/kalamehRegular.woff +0 -0
  32. package/src/assets/fonts/kalamehRegular.woff2 +0 -0
  33. package/src/assets/images/auth/social-google.svg +0 -6
  34. package/src/assets/images/favicon.svg +0 -18
  35. package/src/assets/images/icons/icon-card.svg +0 -5
  36. package/src/assets/images/logos/logo.svg +0 -12
  37. package/src/assets/images/logos/logolight.svg +0 -12
  38. package/src/assets/images/maintenance/img-error-bg.svg +0 -34
  39. package/src/assets/images/maintenance/img-error-blue.svg +0 -43
  40. package/src/assets/images/maintenance/img-error-purple.svg +0 -42
  41. package/src/assets/images/maintenance/img-error-text.svg +0 -27
  42. package/src/assets/images/profile/profile-user-account-svgrepo-com.svg +0 -12
  43. package/src/assets/images/profile/user-round.svg +0 -15
  44. package/src/assets/images/template/template-01.ts +0 -1
  45. package/src/assets/images/vectors/colorized-bg.svg +0 -40
  46. package/src/assets/images/vectors/logo_stroke_1px.svg +0 -26
  47. package/src/assets/images/vectors/logo_stroke_2px.svg +0 -26
  48. package/src/assets/scss/components/_approval-sections.scss +0 -75
  49. package/src/assets/styles/fonts.scss +0 -77
  50. package/src/components/Loading.vue +0 -88
  51. package/src/components/common/AppStepper.vue +0 -139
  52. package/src/components/shared/BaseBreadcrumb.vue +0 -55
  53. package/src/components/shared/BaseIcon.vue +0 -27
  54. package/src/components/shared/ConfirmDialog.vue +0 -72
  55. package/src/components/shared/CustomAutocomplete.vue +0 -306
  56. package/src/components/shared/CustomDataTable.vue +0 -1859
  57. package/src/components/shared/DescriptionInput.vue +0 -204
  58. package/src/components/shared/DownloadButton.vue +0 -169
  59. package/src/components/shared/MoneyInput.vue +0 -105
  60. package/src/components/shared/PdfViewer.vue +0 -645
  61. package/src/components/shared/ShamsiDatePicker.vue +0 -444
  62. package/src/components/shared/UiChildCard.vue +0 -17
  63. package/src/components/shared/UiParentCard.vue +0 -21
  64. package/src/components/shared/VPriceTextField.vue +0 -136
  65. package/src/composables/useDataTable.ts +0 -152
  66. package/src/composables/usePermissions.ts +0 -90
  67. package/src/composables/useRouteGuard.ts +0 -36
  68. package/src/composables/useTableActions.ts +0 -207
  69. package/src/composables/useTableHeaders.ts +0 -172
  70. package/src/composables/useTableSelection.ts +0 -201
  71. package/src/constants/enums/approval.ts +0 -13
  72. package/src/constants/enums/booleanEnum.ts +0 -11
  73. package/src/constants/enums/contractType.ts +0 -11
  74. package/src/constants/enums/lcProductType.ts +0 -21
  75. package/src/constants/enums/repaymentType.ts +0 -11
  76. package/src/directives/v-digit-limit.ts +0 -15
  77. package/src/directives/v-permission.ts +0 -31
  78. package/src/features/index.ts +0 -48
  79. package/src/index.ts +0 -119
  80. package/src/plugins/key-clock.ts +0 -39
  81. package/src/plugins/mdi-icon.ts +0 -31
  82. package/src/plugins/vuetify.ts +0 -74
  83. package/src/scss/_override.scss +0 -72
  84. package/src/scss/_variables.scss +0 -124
  85. package/src/scss/components/_VButtons.scss +0 -23
  86. package/src/scss/components/_VCard.scss +0 -20
  87. package/src/scss/components/_VCustomDataTable.scss +0 -282
  88. package/src/scss/components/_VField.scss +0 -9
  89. package/src/scss/components/_VInput.scss +0 -17
  90. package/src/scss/components/_VNavigationDrawer.scss +0 -3
  91. package/src/scss/components/_VShadow.scss +0 -3
  92. package/src/scss/components/_VStepper.scss +0 -235
  93. package/src/scss/components/_VTabs.scss +0 -11
  94. package/src/scss/components/_VTextField.scss +0 -40
  95. package/src/scss/components/_approval.scss +0 -128
  96. package/src/scss/layout/_container.scss +0 -147
  97. package/src/scss/layout/_sidebar.scss +0 -138
  98. package/src/scss/layout/_topbar.scss +0 -39
  99. package/src/scss/pages/_dashboards.scss +0 -97
  100. package/src/scss/style.scss +0 -21
  101. package/src/services/apiService.ts +0 -59
  102. package/src/services/axiosInstance.ts +0 -14
  103. package/src/stores/customizer.ts +0 -55
  104. package/src/stores/permissions.ts +0 -237
  105. package/src/theme/darkThemes/DarkModernTheme.ts +0 -54
  106. package/src/theme/darkThemes/DarkOrangeTheme.ts +0 -53
  107. package/src/theme/darkThemes/DarkPurpleTheme.ts +0 -54
  108. package/src/theme/darkThemes/DarkRedTheme.ts +0 -54
  109. package/src/theme/darkThemes/DarkSilverTheme.ts +0 -53
  110. package/src/theme/darkThemes/DarkSteelTealGreen.ts +0 -53
  111. package/src/theme/darkThemes/DarkTealTheme.ts +0 -52
  112. package/src/theme/lightThemes/ModernTheme.ts +0 -55
  113. package/src/theme/lightThemes/OrangeTheme.ts +0 -54
  114. package/src/theme/lightThemes/PurpleTheme.ts +0 -54
  115. package/src/theme/lightThemes/RedTheme.ts +0 -55
  116. package/src/theme/lightThemes/SilverTheme.ts +0 -55
  117. package/src/theme/lightThemes/SteelTealGreen.ts +0 -54
  118. package/src/theme/lightThemes/TealTheme.ts +0 -54
  119. package/src/types/approval/approvalType.ts +0 -473
  120. package/src/types/cartable/cartableTypes.ts +0 -169
  121. package/src/types/componentTypes/DataTableType.ts +0 -14
  122. package/src/types/componentTypes/DataTableTypes.ts +0 -130
  123. package/src/types/enums/global.ts +0 -267
  124. package/src/types/jalaali-js.d.ts +0 -6
  125. package/src/types/models/Base.ts +0 -4
  126. package/src/types/models/env.d.ts +0 -10
  127. package/src/types/models/person.ts +0 -13
  128. package/src/types/models/userInfo.ts +0 -29
  129. package/src/types/preApproval/preApprovalTypes.ts +0 -67
  130. package/src/types/shims-tabler-icons.d.ts +0 -58
  131. package/src/types/themeTypes/ThemeType.ts +0 -47
  132. package/src/types/vue-apexcharts.d.ts +0 -1
  133. package/src/types/vue3-print-nb.d.ts +0 -1
  134. package/src/types/vue_tabler_icon.d.ts +0 -10
  135. package/src/utils/NationalCodeValidator.ts +0 -33
  136. package/src/utils/date-convertor.ts +0 -40
  137. package/src/utils/greetingUtils.ts +0 -97
  138. package/src/utils/helpers/fake-backend.ts +0 -68
  139. package/src/utils/helpers/fetch-wrapper.ts +0 -86
  140. package/src/utils/number-formatter.ts +0 -33
  141. package/src/validators/nationalCodeRule.ts +0 -6
@@ -1,39 +0,0 @@
1
- .profileBtn {
2
- height: 50px !important;
3
- margin: 0 0 0 10px !important;
4
- }
5
-
6
- .search-sheet {
7
- position: absolute;
8
- z-index: 9;
9
- }
10
-
11
- .circle {
12
- position: relative;
13
- overflow: hidden;
14
- &.sm-circle {
15
- &::before {
16
- content: '';
17
- position: absolute;
18
- width: 200px;
19
- height: 200px;
20
- border: 3px solid rgb(var(--v-theme-warning));
21
- border-radius: 50%;
22
- top: 125px;
23
- right: -70px;
24
- }
25
- }
26
-
27
- &.lg-circle {
28
- &::after {
29
- content: '';
30
- position: absolute;
31
- width: 200px;
32
- height: 200px;
33
- border: 19px solid rgb(var(--v-theme-warning));
34
- border-radius: 50%;
35
- top: 65px;
36
- right: -150px;
37
- }
38
- }
39
- }
@@ -1,97 +0,0 @@
1
- .bubble-shape {
2
- position: relative;
3
- &:before {
4
- content: '';
5
- position: absolute;
6
- width: 210px;
7
- height: 210px;
8
- border-radius: 50%;
9
- top: -125px;
10
- left: -15px;
11
- opacity: 0.5;
12
- }
13
- &:after {
14
- content: '';
15
- position: absolute;
16
- width: 210px;
17
- height: 210px;
18
- border-radius: 50%;
19
- top: -85px;
20
- left: -95px;
21
- }
22
-
23
- &.bubble-primary-shape {
24
- &::before {
25
- background: rgb(var(--v-theme-darkprimary));
26
- }
27
- &::after {
28
- background: rgb(var(--v-theme-darkprimary));
29
- }
30
- }
31
-
32
- &.bubble-secondary-shape {
33
- &::before {
34
- background: rgb(var(--v-theme-darksecondary));
35
- }
36
- &::after {
37
- background: rgb(var(--v-theme-darksecondary));
38
- }
39
- }
40
-
41
- &.bubble-secondary {
42
- &::before {
43
- background: rgb(var(--v-theme-secondary));
44
- }
45
- &::after {
46
- background: rgb(var(--v-theme-secondary));
47
- }
48
- }
49
- }
50
-
51
- .z-1 {
52
- z-index: 1;
53
- position: relative;
54
- }
55
- .bubble-shape-sm {
56
- position: relative;
57
- &::before {
58
- content: '';
59
- position: absolute;
60
- width: 210px;
61
- height: 210px;
62
- border-radius: 50%;
63
- top: -160px;
64
- right: -130px;
65
- }
66
- &.bubble-primary {
67
- &::before {
68
- background: linear-gradient(140.9deg, rgb(var(--v-theme-lightprimary)) -14.02%, rgba(var(--v-theme-darkprimary), 0) 77.58%);
69
- }
70
- }
71
- &::after {
72
- content: '';
73
- position: absolute;
74
- width: 210px;
75
- height: 210px;
76
- border-radius: 50%;
77
- top: -30px;
78
- right: -180px;
79
- }
80
- &.bubble-primary {
81
- &::after {
82
- background: linear-gradient(210.04deg, rgb(var(--v-theme-lightprimary)) -50.94%, rgba(var(--v-theme-darkprimary), 0) 83.49%);
83
- }
84
- }
85
-
86
- &.bubble-warning {
87
- &::before {
88
- background: linear-gradient(140.9deg, rgb(var(--v-theme-secondary)) -14.02%, rgba(144, 202, 249, 0) 70.5%);
89
- }
90
- }
91
-
92
- &.bubble-warning {
93
- &::after {
94
- background: linear-gradient(210.04deg, rgb(var(--v-theme-secondary)) -50.94%, rgba(144, 202, 249, 0) 83.49%);
95
- }
96
- }
97
- }
@@ -1,21 +0,0 @@
1
- @import './variables';
2
- @import 'vuetify/styles/main.sass';
3
- @import './override';
4
- @import './layout/container';
5
- @import './layout/sidebar';
6
- @import './layout/topbar';
7
-
8
- @import './components/VButtons';
9
- @import './components/VCard';
10
- @import './components/VField';
11
- @import './components/VInput';
12
- @import './components/VNavigationDrawer';
13
- @import './components/VShadow';
14
- @import './components/VTextField';
15
- @import './components/VTabs';
16
- @import './components/VCustomDataTable';
17
- @import './components/approval';
18
-
19
- @import './pages/dashboards';
20
-
21
- @import 'vue3-perfect-scrollbar/style.css';
@@ -1,59 +0,0 @@
1
- /**
2
- * API Service for making CRUD operations
3
- *
4
- * This service provides a simple interface for common API operations.
5
- * It works with any axios-compatible instance.
6
- */
7
- import type { AxiosInstance } from 'axios';
8
- import axiosInstance from './axiosInstance';
9
-
10
- export interface ApiService {
11
- fetch(params?: Record<string, any>): Promise<any>;
12
- create(data: any): Promise<any>;
13
- update(data: any): Promise<any>;
14
- delete(id: string | number): Promise<any>;
15
- get(id: string | number): Promise<any>;
16
- }
17
-
18
- /**
19
- * Creates an API service instance for a given resource
20
- * @param axiosInst - Axios instance to use (defaults to library's axiosInstance)
21
- * @param resource - API resource path (e.g., '/api/users')
22
- */
23
- export default function apiService(
24
- axiosInst: AxiosInstance = axiosInstance,
25
- resource: string
26
- ): ApiService {
27
- const baseUrl = resource.startsWith('/') ? resource : `/${resource}`;
28
-
29
- return {
30
- async fetch(params: Record<string, any> = {}) {
31
- const response = await axiosInst.get(baseUrl, { params });
32
- return response;
33
- },
34
-
35
- async create(data: any) {
36
- const response = await axiosInst.post(baseUrl, data);
37
- return response;
38
- },
39
-
40
- async update(data: any) {
41
- if (!data.id) {
42
- throw new Error('Update requires an id field');
43
- }
44
- const response = await axiosInst.put(`${baseUrl}/${data.id}`, data);
45
- return response;
46
- },
47
-
48
- async delete(id: string | number) {
49
- const response = await axiosInst.delete(`${baseUrl}/${id}`);
50
- return response;
51
- },
52
-
53
- async get(id: string | number) {
54
- const response = await axiosInst.get(`${baseUrl}/${id}`);
55
- return response;
56
- }
57
- };
58
- }
59
-
@@ -1,14 +0,0 @@
1
- /**
2
- * Axios instance for the UI Kit library
3
- *
4
- * This is a minimal wrapper around axios. In your consuming app,
5
- * you can configure axios globally and this will use the default instance.
6
- *
7
- * For custom configuration, you can import and set your own axios instance.
8
- */
9
- import axios from 'axios';
10
-
11
- // Export the default axios instance or a configured instance
12
- // Consuming apps can configure axios globally before importing the library
13
- export default axios;
14
-
@@ -1,55 +0,0 @@
1
- import { defineStore } from 'pinia';
2
-
3
- export const useCustomizerStore = defineStore({
4
- id: 'customizer',
5
- state: () => ({
6
- Sidebar_drawer: false,
7
- Customizer_drawer: false,
8
- mini_sidebar: false,
9
- fontTheme: 'inter',
10
- inputBg: 'default',
11
- layoutType: 'full-width',
12
- actTheme: 'modern',
13
- loading: false,
14
- themeMode: 'light', // 'light' or 'dark'
15
- menuOrientation: 'vertical' // 'vertical' or 'horizontal'
16
- }),
17
-
18
- getters: {
19
- getActTheme: (state) => state.actTheme,
20
- },
21
- actions: {
22
- SET_SIDEBAR_DRAWER(payload?: boolean) {
23
- if (payload !== undefined) {
24
- this.Sidebar_drawer = payload;
25
- } else {
26
- this.Sidebar_drawer = !this.Sidebar_drawer;
27
- }
28
- },
29
- SET_MINI_SIDEBAR(payload: boolean) {
30
- this.mini_sidebar = payload;
31
- },
32
- SET_CUSTOMIZER_DRAWER(payload: boolean) {
33
- this.Customizer_drawer = payload;
34
- },
35
- SET_FONT(payload: string) {
36
- this.fontTheme = payload;
37
- },
38
- SET_THEME(payload: string) {
39
- this.actTheme = payload;
40
- },
41
- SET_LOADING(payload: boolean) {
42
- this.loading = payload;
43
- },
44
- SET_LAYOUT_TYPE(payload: string) {
45
- this.layoutType = payload;
46
- },
47
- SET_THEME_MODE(payload: string) {
48
- this.themeMode = payload;
49
- },
50
- SET_MENU_ORIENTATION(payload: string) {
51
- this.menuOrientation = payload;
52
- }
53
- }
54
-
55
- });
@@ -1,237 +0,0 @@
1
- import { defineStore } from 'pinia';
2
-
3
- // Minimal customer info interface for permissions store
4
- interface CustomerInfo {
5
- isUserInfoLoaded: boolean;
6
- getUserRoles: string[];
7
- getUserLotusRoles: string[];
8
- hasRole: (role: string) => boolean;
9
- hasLotusRole: (role: string) => boolean;
10
- }
11
-
12
- // Simple stub - consuming apps should provide their own customer info store
13
- // or configure permissions store with their own user info
14
- let customerInfoStore: CustomerInfo | null = null;
15
-
16
- export function setCustomerInfoStore(store: CustomerInfo) {
17
- customerInfoStore = store;
18
- }
19
-
20
- function useCustomerInfoStore(): CustomerInfo {
21
- if (!customerInfoStore) {
22
- // Return default empty store if not configured
23
- return {
24
- isUserInfoLoaded: false,
25
- getUserRoles: [],
26
- getUserLotusRoles: [],
27
- hasRole: () => false,
28
- hasLotusRole: () => false
29
- };
30
- }
31
- return customerInfoStore;
32
- }
33
-
34
- export interface MenuPermission {
35
- menuKey: string;
36
- requiredRoles: string[];
37
- requiredLotusRoles?: string[];
38
- }
39
-
40
- export const usePermissionsStore = defineStore({
41
- id: 'permissions',
42
- state: () => ({
43
- menuPermissions: [
44
- {
45
- menuKey: 'approval_new',
46
- requiredRoles: ['SMP_CREATE_APPROVAL']
47
- },
48
- {
49
- menuKey: 'approval_edit',
50
- requiredRoles: ['SMP_EDIT_APPROVAL']
51
- },
52
- {
53
- menuKey: 'cartable',
54
- requiredRoles: ['SMP_VIEW_CARTABLE']
55
- },
56
- {
57
- menuKey: 'cartable_operation',
58
- requiredRoles: ['SMP_CARTABLE_OPERATION']
59
- },
60
- {
61
- menuKey: 'cartable_history',
62
- requiredRoles: ['SMP_CARTABLE_HIST']
63
- },
64
- {
65
- menuKey: 'approval_history',
66
- requiredRoles: ['SMP_APPROVAL_HIST']
67
- },
68
- {
69
- menuKey: 'flow_management',
70
- requiredRoles: ['SMP_CREATE_FLOW_MNG']
71
- },
72
- {
73
- menuKey: 'basic_info',
74
- requiredRoles: ['SMP_BASIC_INFO']
75
- },
76
- {
77
- menuKey: 'report',
78
- requiredRoles: ['SMP_REPORT']
79
- },
80
- {
81
- menuKey: 'flowManagement',
82
- requiredRoles: ['SMP_CREATE_FLOW_MNG']
83
- },
84
- {
85
- menuKey: 'preApprovalReport',
86
- requiredRoles: ['SMP_PRE_APPROVAL_RPT']
87
- },
88
- {
89
- menuKey: 'cartableReport',
90
- requiredRoles: ['SMP_CARTABLE_RPT']
91
- },
92
- {
93
- menuKey: 'addFile',
94
- requiredRoles: ['SMP_ADD_FILE']
95
- },
96
- {
97
- menuKey: 'download1016',
98
- requiredRoles: ['SMP_DOWNLOAD_1016']
99
- },
100
- {
101
- menuKey: 'reviewExpertReport',
102
- requiredRoles: ['SMP_REVIEW_EXPERT_RPT']
103
- },
104
- {
105
- menuKey: 'downloadExpertReport',
106
- requiredRoles: ['SMP_DOWNLOAD_EXPERT_RPT_FILE']
107
- },
108
- {
109
- menuKey: 'downloadDirectiveReport',
110
- requiredRoles: ['SMP_DL_DIRECTIVE_RPT']
111
- },
112
- {
113
- menuKey: 'regionPreApprovalReport',
114
- requiredRoles: ['SMP_REGION_PRE_APPROVAL_RPT']
115
- },
116
- {
117
- menuKey: 'directiveReport',
118
- requiredRoles: ['SMP_DIRECTIVE_RPT']
119
- },
120
- {
121
- menuKey: 'uploadExpertReport',
122
- requiredRoles: ['SMP_UPLOAD_EXPERT_RPT_FILE']
123
- },
124
- {
125
- menuKey: 'changeSigner',
126
- requiredRoles: ['SMP_CHANGE_SIGNER']
127
- },
128
- {
129
- menuKey: 'regenerate1016',
130
- requiredRoles: ['SMP_REGEN_1016']
131
- },
132
- {
133
- menuKey: 'regenerateRegionApproval',
134
- requiredRoles: ['SMP_REGEN_REGION_RPT']
135
- },
136
- {
137
- menuKey: 'regeneratePreApproval',
138
- requiredRoles: ['SMP_REGEN_PRE_APPROVAL_RPT']
139
- },
140
- {
141
- menuKey: 'regenerateDirective',
142
- requiredRoles: ['SMP_REGEN_DIRECTIVE_RPT']
143
- },
144
- {
145
- menuKey: 'approvalSignerReport',
146
- requiredRoles: ['SMP_APPROVAL_SIGNER_RPT']
147
- },
148
- {
149
- menuKey: 'downloadApprovalReport',
150
- requiredRoles: ['SMP_DL_APPROVAL_RPT']
151
- }
152
- ] as MenuPermission[]
153
- }),
154
-
155
- getters: {
156
- // Check if user has permission for a specific menu
157
- hasMenuPermission: (state) => (menuKey: string) => {
158
- const customerInfo = useCustomerInfoStore();
159
- const permission = state.menuPermissions.find((p) => p.menuKey === menuKey);
160
-
161
- if (!permission) return true; // If no permission defined, allow access
162
-
163
- // If user info is not loaded, allow access to prevent sidebar from being empty
164
- if (!customerInfo.isUserInfoLoaded) return true;
165
-
166
- const userRoles = customerInfo.getUserRoles || [];
167
- const userLotusRoles = customerInfo.getUserLotusRoles || [];
168
-
169
- // If user has no roles at all, allow access to prevent sidebar from being empty
170
- if (userRoles.length === 0 && userLotusRoles.length === 0) return true;
171
-
172
- // Check required roles
173
- const hasRequiredRole = permission.requiredRoles.some((role) => userRoles.includes(role));
174
-
175
- // Check required lotus roles if defined
176
- const hasRequiredLotusRole = permission.requiredLotusRoles
177
- ? permission.requiredLotusRoles.some((role) => userLotusRoles.includes(role))
178
- : true;
179
-
180
- return hasRequiredRole && hasRequiredLotusRole;
181
- },
182
-
183
- // Get all available menu permissions for current user
184
- getAvailableMenus: (state) => {
185
- const customerInfo = useCustomerInfoStore();
186
- if (!customerInfo.isUserInfoLoaded) return [];
187
-
188
- return state.menuPermissions.filter((permission) => {
189
- const userRoles = customerInfo.getUserRoles;
190
- const userLotusRoles = customerInfo.getUserLotusRoles;
191
-
192
- const hasRequiredRole = permission.requiredRoles.some((role) => userRoles.includes(role));
193
-
194
- const hasRequiredLotusRole = permission.requiredLotusRoles
195
- ? permission.requiredLotusRoles.some((role) => userLotusRoles.includes(role))
196
- : true;
197
-
198
- return hasRequiredRole && hasRequiredLotusRole;
199
- });
200
- },
201
-
202
- // Check if user has any of the specified roles
203
- hasAnyRole: () => (roles: string[]) => {
204
- const customerInfo = useCustomerInfoStore();
205
- return roles.some((role) => customerInfo.hasRole(role));
206
- },
207
-
208
- // Check if user has any of the specified lotus roles
209
- hasAnyLotusRole: () => (roles: string[]) => {
210
- const customerInfo = useCustomerInfoStore();
211
- return roles.some((role) => customerInfo.hasLotusRole(role));
212
- }
213
- },
214
-
215
- actions: {
216
- // Add new menu permission
217
- addMenuPermission(permission: MenuPermission) {
218
- this.menuPermissions.push(permission);
219
- },
220
-
221
- // Remove menu permission
222
- removeMenuPermission(menuKey: string) {
223
- const index = this.menuPermissions.findIndex((p) => p.menuKey === menuKey);
224
- if (index !== -1) {
225
- this.menuPermissions.splice(index, 1);
226
- }
227
- },
228
-
229
- // Update menu permission
230
- updateMenuPermission(menuKey: string, permission: Partial<MenuPermission>) {
231
- const index = this.menuPermissions.findIndex((p) => p.menuKey === menuKey);
232
- if (index !== -1) {
233
- this.menuPermissions[index] = { ...this.menuPermissions[index], ...permission };
234
- }
235
- }
236
- }
237
- });
@@ -1,54 +0,0 @@
1
- import type { ThemeTypes } from '@/types/themeTypes/ThemeType';
2
-
3
- const DarkModernTheme: ThemeTypes = {
4
- name: 'DarkModernTheme',
5
- dark: true,
6
- variables: {
7
- 'border-color': '#6366f1',
8
- 'carousel-control-size': 10
9
- },
10
- colors: {
11
- primary: '#6366f1', // Modern indigo
12
- secondary: '#8b5cf6', // Purple
13
- info: '#06b6d4', // Cyan
14
- success: '#10b981', // Emerald
15
- accent: '#f59e0b', // Amber
16
- warning: '#f59e0b', // Amber
17
- error: '#ef4444', // Red
18
- lightprimary: '#1e1b4b', // Indigo 900
19
- lightsecondary: '#1e1b4b', // Indigo 900
20
- lightsuccess: '#064e3b', // Green 900
21
- lighterror: '#7f1d1d', // Red 900
22
- lightwarning: '#78350f', // Amber 900
23
- darkText: '#f9fafb', // Gray 50
24
- lightText: '#d1d5db', // Gray 300
25
- darkprimary: '#818cf8', // Indigo 400
26
- darksecondary: '#a78bfa', // Purple 400
27
- borderLight: '#374151', // Gray 700
28
- inputBorder: '#4b5563', // Gray 600
29
- containerBg: '#111827', // Gray 900
30
- surface: '#0f172a', // Slate 900
31
- 'on-surface-variant': '#e2e8f0', // Slate 200
32
- facebook: '#4267b2',
33
- twitter: '#1da1f2',
34
- linkedin: '#0e76a8',
35
- gray100: '#1f2937', // Gray 800
36
- primary200: '#312e81', // Indigo 800
37
- secondary200: '#5b21b6', // Purple 800
38
- white: '#FFFFFF',
39
- // Additional color variations
40
- primary300: '#c7d2fe',
41
- primary400: '#7590f1',
42
- primary500: '#5a4fe4',
43
- primary600: '#483bc5',
44
- primary700: '#22215e',
45
- primary800: '#0b0b5a',
46
- primary900: '#03031b',
47
-
48
- secondary400: '#581c87', // Purple 800
49
- secondary600: '#6b21a8', // Purple 700
50
- secondary800: '#4c1d95' // Purple 900
51
- }
52
- };
53
-
54
- export { DarkModernTheme };
@@ -1,53 +0,0 @@
1
- import type { ThemeTypes } from '@/types/themeTypes/ThemeType';
2
-
3
- const DarkOrangeTheme: ThemeTypes = {
4
- name: 'DarkOrangeTheme',
5
- dark: true,
6
- variables: {
7
- 'border-color': '#C77E23',
8
- 'carousel-control-size': 10
9
- },
10
- colors: {
11
- primary: '#C77E23',
12
- secondary: '#16595A',
13
- info: '#03c9d7',
14
- success: '#00c853',
15
- accent: '#FFAB91',
16
- warning: '#ffc107',
17
- error: '#f44336',
18
- lightprimary: '#2D1B0A',
19
- lightsecondary: '#1A2A2A',
20
- lightsuccess: '#1B3A1B',
21
- lighterror: '#3A1B1B',
22
- lightwarning: '#3A2F1B',
23
- darkText: '#FFFFFF',
24
- lightText: '#B0B0B0',
25
- darkprimary: '#E89B4A',
26
- darksecondary: '#1F7A7A',
27
- borderLight: '#404040',
28
- inputBorder: '#606060',
29
- containerBg: '#1A1A1A',
30
- surface: '#121212',
31
- 'on-surface-variant': '#E0E0E0',
32
- facebook: '#4267b2',
33
- twitter: '#1da1f2',
34
- linkedin: '#0e76a8',
35
- gray100: '#2A2A2A',
36
- primary200: '#2D1B0A',
37
- secondary200: '#1A2A2A',
38
- white: '#FFFFFF',
39
- // Additional color variations
40
- primary300: '#F4E6D3',
41
- primary400: '#edb27e',
42
- primary500: '#efa168',
43
- primary600: '#dc823a',
44
- primary700: '#884a17',
45
- primary800: '#603210',
46
- primary900: '#351b09',
47
- secondary400: '#2A4040',
48
- secondary600: '#1F7A7A',
49
- secondary800: '#0F4748'
50
- }
51
- };
52
-
53
- export { DarkOrangeTheme };
@@ -1,54 +0,0 @@
1
- import type { ThemeTypes } from '@/types/themeTypes/ThemeType';
2
-
3
- const DarkPurpleTheme: ThemeTypes = {
4
- name: 'DarkPurpleTheme',
5
- dark: true,
6
- variables: {
7
- 'border-color': '#1e88e5',
8
- 'carousel-control-size': 10
9
- },
10
- colors: {
11
- primary: '#1e88e5',
12
- secondary: '#5e35b1',
13
- info: '#03c9d7',
14
- success: '#00c853',
15
- accent: '#FFAB91',
16
- warning: '#ffc107',
17
- error: '#f44336',
18
- lightprimary: '#1B2A3A',
19
- lightsecondary: '#2A1B3A',
20
- lightsuccess: '#1B3A1B',
21
- lighterror: '#3A1B1B',
22
- lightwarning: '#3A2F1B',
23
- darkText: '#FFFFFF',
24
- lightText: '#B0B0B0',
25
- darkprimary: '#42A5F5',
26
- darksecondary: '#7B1FA2',
27
- borderLight: '#404040',
28
- inputBorder: '#606060',
29
- containerBg: '#1A1A1A',
30
- surface: '#121212',
31
- 'on-surface-variant': '#E0E0E0',
32
- facebook: '#4267b2',
33
- twitter: '#1da1f2',
34
- linkedin: '#0e76a8',
35
- gray100: '#2A2A2A',
36
- primary200: '#1B2A3A',
37
- secondary200: '#2A1B3A',
38
- white: '#FFFFFF',
39
- // Additional color variations
40
- primary300: '#9fd0f3',
41
- primary400: '#87bbef',
42
- primary500: '#5c9fed',
43
- primary600: '#2567af',
44
- primary700: '#144a8f',
45
- primary800: '#093260',
46
- primary900: '#051832',
47
-
48
- secondary400: '#4A2A5A',
49
- secondary600: '#7B1FA2',
50
- secondary800: '#512DA8'
51
- }
52
- };
53
-
54
- export { DarkPurpleTheme };