jobdone-shared-files 1.0.2 → 1.0.4

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.
@@ -1,360 +1,360 @@
1
- <template>
2
- <div class="bg-gray-000 sticky-top d-print-none">
3
- <nav class="navbar navbar-main navbar-expand-lg border-bottoms py-0" data-bs-theme="dark">
4
- <div class="navbar-placeholder-content px-4 placeholder-glow">
5
- <span class="placeholder w-1rem"></span>
6
- <span class="placeholder w-20rem"></span>
7
- <span class="placeholder w-5rem"></span>
8
- <span class="placeholder w-5rem"></span>
9
- <span class="placeholder w-5rem"></span>
10
- </div>
11
- <div class="navbar-content opacity-0 d-flex align-items-center flex-fill w-100">
12
- <div class="border-end">
13
- <a :href="arrowBackLink" class="btn btn-normal btn-square" title="離開專案"><span class="material-icons">home</span></a>
14
- </div>
15
- <span class="fs-6 mb-0 mx-4 text-nowrap text-project-title text-overflow"><b class="">{{projectInfo?.name}}</b></span>
16
- <!--TODO: 解決 overflow scroll 與 dropdown 衝突-->
17
- <div class="flex-grow-1 text-nowrap">
18
- <div class="d-flex flex-grow-1 border-start">
19
- <nav class="navbar-nav navbar-main navbar-tab navbar-line navbar-line-lg">
20
- <div class="nav-item navbar-line-item btn nav-link border-0 dropdown"
21
- :class="{'active': isActive(null)}">
22
- <a class="dropdown-link" :href="finalRootDomain + '/ProjectManagement/ProjectInfo?id=' + projectId">
23
- 專案資訊
24
- </a>
25
- </div>
26
- <div class="nav-item navbar-line-item btn nav-link border-0 dropdown"
27
- :class="{'active': isActive(navLinkObj.moduleLink)}">
28
- <a :href="navLinkObj.url + projectId" class="dropdown-link" v-if="navLinkObj?.moduleLink?.selfIsApp">
29
- <span class="material-icons icon-18 me-2">{{ navLinkObj?.moduleLink?.icon }}</span>
30
- {{ navLinkObj?.moduleLink?.name }}
31
- </a>
32
- <span class="dropdown-link dropdown-toggle" data-bs-toggle="dropdown" aria-expanded="false" v-else>
33
- <span class="material-icons icon-18 icon-shine me-1">{{ navLinkObj?.moduleLink?.icon }}</span>
34
- 功能選單
35
- </span>
36
- <ul class="dropdown-menu" :class="{'p-0': navLinkObj?.moduleLink?.apps?.length == 0}">
37
- <li v-if="navLinkObj?.moduleLink?.apps?.length > 0">
38
- <a class="dropdown-item" :href="app.url + '?projectId=' + projectId" v-for="(app, index) in navLinkObj.moduleLink.apps" :key="index">
39
- <span class="material-icons icon-18 align-middle me-2">{{app.icon}}</span>
40
- <span class="align-middle">{{app.name}}</span>
41
- </a>
42
- </li>
43
- </ul>
44
- </div>
45
- <div class="nav-item navbar-line-item btn nav-link border-0 dropdown"
46
- :class="{'active': isActive(item.clientId)}"
47
- v-for="item in navLinkObj.generalLink">
48
- <a :href="item.url + '?projectId=' + projectId" class="dropdown-link">
49
- <span class="material-icons icon-18 me-2">{{item.icon}}</span>
50
- {{item.name}}
51
- </a>
52
- </div>
53
- </nav>
54
- <nav class="navbar-nav navbar-main navbar-line navbar-line-lg ms-auto">
55
- <div class="nav-item navbar-line-item btn nav-link border-0">
56
- <a href="https://docs.jobdone.cc/" target="_blank">
57
- <span class="align-middle">使用指南</span>
58
- <span class="material-icons icon-18 align-middle icon-help ms-1">help</span>
59
- </a>
60
- </div>
61
- <div class="nav-item navbar-line-item btn nav-link border-0 dropdown">
62
- <span class="dropdown-link dropdown-toggle" data-bs-toggle="dropdown" aria-expanded="false">
63
- <div class="thumbnail-content thumbnail-32 rounded-circle me-2" :style="'background-image: url(' + userPicture + ');'"></div>
64
- {{userId}}
65
- </span>
66
- <ul class="dropdown-menu dropdown-menu-end">
67
- <li>
68
- <a class="dropdown-item" :href="finalRootDomain + '/Profile'">個人資訊</a>
69
- </li>
70
- <li><hr class="dropdown-divider"></li>
71
- <li>
72
- <a class="dropdown-item" :href="logOutLink">登出</a>
73
- </li>
74
- </ul>
75
- </div>
76
- </nav>
77
- </div>
78
- </div>
79
- </div>
80
- </nav>
81
- <div class="info-project bg-primary bg-opacity-25 border-top border-bottom border-primary border-opacity-25 py-2">
82
- <div class="navbar-placeholder-content px-5 placeholder-glow">
83
- <span class="placeholder placeholder-xs w-10rem ms-4"></span>
84
- <span class="placeholder placeholder-xs w-12rem"></span>
85
- <span class="placeholder placeholder-xs w-6rem"></span>
86
- </div>
87
- <div class="navbar-content opacity-0 d-flex align-items-center">
88
- <span class="badge badge-outline-purple me-3">{{ navLinkObj?.moduleLink?.name }}</span>
89
- <small class="d-flex me-4" v-if="projectInfo?.caseNo">
90
- <b class="me-2">案號</b>
91
- <span>{{projectInfo?.caseNo}}</span>
92
- </small>
93
- <small class="d-flex me-4">
94
- <b class="me-2">開工/完工日期</b>
95
- <span>{{formatDate(projectInfo?.beginDT)}} - {{formatDate(projectInfo?.endDT)}}</span>
96
- </small>
97
- <small class="d-flex me-4">
98
- <b class="me-2">核定工期</b>
99
- <span>{{projectInfo?.approvedWorkingPeriod}}天</span>
100
- </small>
101
- <small class="d-flex" v-if="projectInfo?.extendToDT">
102
- <b class="me-2">展延至</b>
103
- <span>{{ formatDate(projectInfo?.extendToDT) }} ({{projectInfo?.extendDays}}天)</span>
104
- </small>
105
- <small class="d-flex ms-auto">
106
- <slot></slot>
107
- </small>
108
- </div>
109
- </div>
110
- </div>
111
- </template>
112
-
113
- <script>
114
- import { formatDate } from '../../../node_modules/jobdone-shared-files/common/format';
115
- import { onMounted, ref, computed, nextTick } from 'vue';
116
- import axios from 'axios';
117
- import '../../bootstrap/js/dist/dropdown.js';
118
-
119
- export default {
120
- props: {
121
- arrowBackLink: {
122
- type: String,
123
- required: true
124
- },
125
- projectId: {
126
- type: String,
127
- required: true
128
- },
129
- projectInfo: {
130
- type: [String, Object],
131
- required: true
132
- },
133
- projectApps: {
134
- type: [String, Object],
135
- required: true
136
- },
137
- activeClientId: {
138
- type: String,
139
- required: false,
140
- },
141
- rootDomain: {
142
- type: String,
143
- required: true
144
- },
145
- userId: {
146
- type: String,
147
- required: true
148
- },
149
- userPicture: {
150
- type: String,
151
- required: true
152
- },
153
- logOutLink: {
154
- type: String,
155
- required: true
156
- }
157
- },
158
- setup(props) {
159
- const projectInfo = ref({});
160
- const navLinkObj = ref({});
161
- const finalRootDomain = computed(() => {
162
- if (props.rootDomain.substr(-1) === "/") {
163
- return props.rootDomain.slice(0, -1);
164
- }
165
- return props.rootDomain;
166
- });
167
-
168
- const isActive = (target) => {
169
- if (target === null) {
170
- return target === null && !props.activeClientId;
171
- }
172
- if (typeof target === 'object') {
173
- return !!props.activeClientId && (target.clientId === props.activeClientId || target.apps.some(x => x.clientId == props.activeClientId))
174
- }
175
- if (!!props.activeClientId && target == props.activeClientId) {
176
- return true;
177
- }
178
- return false;
179
- }
180
-
181
- onMounted(async () => {
182
- try {
183
- switch (typeof props.projectInfo) {
184
- case 'string':
185
- axios.get(props.projectInfo).then((res) => {
186
- projectInfo.value = res.data;
187
- });
188
- break;
189
- case 'object':
190
- projectInfo.value = props.projectInfo;
191
- break;
192
- default:
193
- projectInfo.value = {
194
- caseNo: '',
195
- name: '',
196
- beginDT: '',
197
- endDT: '',
198
- approvedWorkingPeriod: '',
199
- extendToDT: '',
200
- extendDays: ''
201
- };
202
- break;
203
- }
204
- } catch (e) {
205
- projectInfo.value = {
206
- caseNo: '',
207
- name: '',
208
- beginDT: '',
209
- endDT: '',
210
- approvedWorkingPeriod: '',
211
- extendToDT: '',
212
- extendDays: ''
213
- };
214
- }
215
- try {
216
- switch (typeof props.projectApps) {
217
- case 'string':
218
- axios.get(props.projectApps).then((res) => {
219
- navLinkObj.value = res.data;
220
- });
221
- break;
222
- case 'object':
223
- navLinkObj.value = props.projectApps;
224
- break;
225
- default:
226
- navLinkObj.value = {
227
- "moduleLink": {
228
- "apps": [],
229
- "icon": "edit_document",
230
- "name": "Module",
231
- "url": "",
232
- "mobileUrl": "",
233
- "mobileAppRoute": "",
234
- "clientId": null,
235
- "selfIsApp": false
236
- },
237
- "generalLink": []
238
- }
239
- break;
240
- }
241
- } catch (e) {
242
- navLinkObj.value = {
243
- "moduleLink": {
244
- "apps": [],
245
- "icon": "edit_document",
246
- "name": "Module",
247
- "url": "",
248
- "mobileUrl": "",
249
- "mobileAppRoute": "",
250
- "clientId": null,
251
- "selfIsApp": false
252
- },
253
- "generalLink": []
254
- }
255
- }
256
-
257
-
258
- nextTick(() => {
259
- let navbarElements = document.getElementsByClassName('navbar-content');
260
- Array.from(navbarElements).forEach(function (item) {
261
- item.classList.remove("opacity-0");
262
- });
263
-
264
- let placeholderElements = document.getElementsByClassName('navbar-placeholder-content');
265
- Array.from(placeholderElements).forEach(function (item) {
266
- item.classList.add("opacity-0");
267
- });
268
- });
269
- });
270
-
271
-
272
- return {
273
- formatDate,
274
- projectInfo,
275
- navLinkObj,
276
- finalRootDomain,
277
- isActive
278
- }
279
- }
280
- }
281
- </script>
282
-
283
- <style scoped lang="scss">
284
- @import "../../bootstrap/scss/functions";
285
- @import "../../bootstrap/scss/mixins";
286
- @import "../style/scss/Settings/bs-variables";
287
- @import "../style/scss/Settings/Mixins";
288
-
289
- .navbar-content{
290
- transition: .5s;
291
- }
292
-
293
- .navbar-placeholder-content{
294
- @include position-center();
295
- display: flex;
296
- align-items: center;
297
- gap: 1rem;
298
- mix-blend-mode: color-burn;
299
- pointer-events: none;
300
- }
301
-
302
- .text-project-title {
303
- color: var(--dark-theme-primary);
304
- }
305
-
306
- .navbar[data-bs-theme="dark"] {
307
- --bs-body-color: var(--gray-500);
308
- color: var(--bs-body-color);
309
- }
310
-
311
- .navbar-main {
312
- .navbar-line-item {
313
- --bs-navbar-nav-link-padding-x: 1rem;
314
- }
315
- .dropdown-menu {
316
- max-height: 80vh;
317
- }
318
- }
319
-
320
-
321
- .navbar[data-bs-theme="dark"], .navbar-main {
322
- background-color: var(--gray-900);
323
- }
324
-
325
- .navbar-line-item.active {
326
- background-color: var(--gray-800);
327
- }
328
-
329
- .navbar-tab{
330
- min-height: 60px;
331
- padding-top: 0.75rem;
332
- padding-left: 0.5rem;
333
- .navbar-line-item{
334
- min-height: auto;
335
- }
336
- }
337
-
338
- .navbar-line-item.dropdown .dropdown-menu {
339
- z-index: $zindex-sticky + 1;
340
- }
341
- .navbar-line-item.dropdown .dropdown-toggle[aria-expanded=true]{
342
- color: $white;
343
- }
344
-
345
- .info-project {
346
- position: relative;
347
- padding-left: 60px;
348
- padding-right: 1rem;
349
- }
350
-
351
- .icon-shine{
352
- background: linear-gradient(120deg, #fff 20%, #24BCE7 40%, #e8ecff 45%, #5872ff 60%, #fff 90%);
353
- -webkit-background-clip: text;
354
- color: transparent;
355
- }
356
-
357
- .icon-help{
358
- color: #c8d1ff;
359
- }
1
+ <template>
2
+ <div class="bg-gray-000 sticky-top d-print-none">
3
+ <nav class="navbar navbar-main navbar-expand-lg border-bottoms py-0" data-bs-theme="dark">
4
+ <div class="navbar-placeholder-content px-4 placeholder-glow">
5
+ <span class="placeholder w-1rem"></span>
6
+ <span class="placeholder w-20rem"></span>
7
+ <span class="placeholder w-5rem"></span>
8
+ <span class="placeholder w-5rem"></span>
9
+ <span class="placeholder w-5rem"></span>
10
+ </div>
11
+ <div class="navbar-content opacity-0 d-flex align-items-center flex-fill w-100">
12
+ <div class="border-end">
13
+ <a :href="arrowBackLink" class="btn btn-normal btn-square" title="離開專案"><span class="material-icons">home</span></a>
14
+ </div>
15
+ <span class="fs-6 mb-0 mx-4 text-nowrap text-project-title text-overflow"><b class="">{{projectInfo?.name}}</b></span>
16
+ <!--TODO: 解決 overflow scroll 與 dropdown 衝突-->
17
+ <div class="flex-grow-1 text-nowrap">
18
+ <div class="d-flex flex-grow-1 border-start">
19
+ <nav class="navbar-nav navbar-main navbar-tab navbar-line navbar-line-lg">
20
+ <div class="nav-item navbar-line-item btn nav-link border-0 dropdown"
21
+ :class="{'active': isActive(null)}">
22
+ <a class="dropdown-link" :href="finalRootDomain + '/ProjectManagement/ProjectInfo?id=' + projectId">
23
+ 專案資訊
24
+ </a>
25
+ </div>
26
+ <div class="nav-item navbar-line-item btn nav-link border-0 dropdown"
27
+ :class="{'active': isActive(navLinkObj.moduleLink)}">
28
+ <a :href="navLinkObj.url + projectId" class="dropdown-link" v-if="navLinkObj?.moduleLink?.selfIsApp">
29
+ <span class="material-icons icon-18 me-2">{{ navLinkObj?.moduleLink?.icon }}</span>
30
+ {{ navLinkObj?.moduleLink?.name }}
31
+ </a>
32
+ <span class="dropdown-link dropdown-toggle" data-bs-toggle="dropdown" aria-expanded="false" v-else>
33
+ <span class="material-icons icon-18 icon-shine me-1">{{ navLinkObj?.moduleLink?.icon }}</span>
34
+ 功能選單
35
+ </span>
36
+ <ul class="dropdown-menu" :class="{'p-0': navLinkObj?.moduleLink?.apps?.length == 0}">
37
+ <li v-if="navLinkObj?.moduleLink?.apps?.length > 0">
38
+ <a class="dropdown-item" :href="app.url + '?projectId=' + projectId" v-for="(app, index) in navLinkObj.moduleLink.apps" :key="index">
39
+ <span class="material-icons icon-18 align-middle me-2">{{app.icon}}</span>
40
+ <span class="align-middle">{{app.name}}</span>
41
+ </a>
42
+ </li>
43
+ </ul>
44
+ </div>
45
+ <div class="nav-item navbar-line-item btn nav-link border-0 dropdown"
46
+ :class="{'active': isActive(item.clientId)}"
47
+ v-for="item in navLinkObj.generalLink">
48
+ <a :href="item.url + '?projectId=' + projectId" class="dropdown-link">
49
+ <span class="material-icons icon-18 me-2">{{item.icon}}</span>
50
+ {{item.name}}
51
+ </a>
52
+ </div>
53
+ </nav>
54
+ <nav class="navbar-nav navbar-main navbar-line navbar-line-lg ms-auto">
55
+ <div class="nav-item navbar-line-item btn nav-link border-0">
56
+ <a href="https://docs.jobdone.cc/" target="_blank">
57
+ <span class="align-middle">使用指南</span>
58
+ <span class="material-icons icon-18 align-middle icon-help ms-1">help</span>
59
+ </a>
60
+ </div>
61
+ <div class="nav-item navbar-line-item btn nav-link border-0 dropdown">
62
+ <span class="dropdown-link dropdown-toggle" data-bs-toggle="dropdown" aria-expanded="false">
63
+ <div class="thumbnail-content thumbnail-32 rounded-circle me-2" :style="'background-image: url(' + userPicture + ');'"></div>
64
+ {{userId}}
65
+ </span>
66
+ <ul class="dropdown-menu dropdown-menu-end">
67
+ <li>
68
+ <a class="dropdown-item" :href="finalRootDomain + '/Profile'">個人資訊</a>
69
+ </li>
70
+ <li><hr class="dropdown-divider"></li>
71
+ <li>
72
+ <a class="dropdown-item" :href="logOutLink">登出</a>
73
+ </li>
74
+ </ul>
75
+ </div>
76
+ </nav>
77
+ </div>
78
+ </div>
79
+ </div>
80
+ </nav>
81
+ <div class="info-project bg-primary bg-opacity-25 border-top border-bottom border-primary border-opacity-25 py-2">
82
+ <div class="navbar-placeholder-content px-5 placeholder-glow">
83
+ <span class="placeholder placeholder-xs w-10rem ms-4"></span>
84
+ <span class="placeholder placeholder-xs w-12rem"></span>
85
+ <span class="placeholder placeholder-xs w-6rem"></span>
86
+ </div>
87
+ <div class="navbar-content opacity-0 d-flex align-items-center">
88
+ <span class="badge badge-outline-purple me-3">{{ navLinkObj?.moduleLink?.name }}</span>
89
+ <small class="d-flex me-4" v-if="projectInfo?.caseNo">
90
+ <b class="me-2">案號</b>
91
+ <span>{{projectInfo?.caseNo}}</span>
92
+ </small>
93
+ <small class="d-flex me-4">
94
+ <b class="me-2">開工/完工日期</b>
95
+ <span>{{formatDate(projectInfo?.beginDT)}} - {{formatDate(projectInfo?.endDT)}}</span>
96
+ </small>
97
+ <small class="d-flex me-4">
98
+ <b class="me-2">核定工期</b>
99
+ <span>{{projectInfo?.approvedWorkingPeriod}}天</span>
100
+ </small>
101
+ <small class="d-flex" v-if="projectInfo?.extendToDT">
102
+ <b class="me-2">展延至</b>
103
+ <span>{{ formatDate(projectInfo?.extendToDT) }} ({{projectInfo?.extendDays}}天)</span>
104
+ </small>
105
+ <small class="d-flex ms-auto">
106
+ <slot></slot>
107
+ </small>
108
+ </div>
109
+ </div>
110
+ </div>
111
+ </template>
112
+
113
+ <script>
114
+ import { formatDate } from '../../../node_modules/jobdone-shared-files/common/format';
115
+ import { onMounted, ref, computed, nextTick } from 'vue';
116
+ import axios from 'axios';
117
+ import '../../bootstrap/js/dist/dropdown.js';
118
+
119
+ export default {
120
+ props: {
121
+ arrowBackLink: {
122
+ type: String,
123
+ required: true
124
+ },
125
+ projectId: {
126
+ type: String,
127
+ required: true
128
+ },
129
+ projectInfo: {
130
+ type: [String, Object],
131
+ required: true
132
+ },
133
+ projectApps: {
134
+ type: [String, Object],
135
+ required: true
136
+ },
137
+ activeClientId: {
138
+ type: String,
139
+ required: false,
140
+ },
141
+ rootDomain: {
142
+ type: String,
143
+ required: true
144
+ },
145
+ userId: {
146
+ type: String,
147
+ required: true
148
+ },
149
+ userPicture: {
150
+ type: String,
151
+ required: true
152
+ },
153
+ logOutLink: {
154
+ type: String,
155
+ required: true
156
+ }
157
+ },
158
+ setup(props) {
159
+ const projectInfo = ref({});
160
+ const navLinkObj = ref({});
161
+ const finalRootDomain = computed(() => {
162
+ if (props.rootDomain.substr(-1) === "/") {
163
+ return props.rootDomain.slice(0, -1);
164
+ }
165
+ return props.rootDomain;
166
+ });
167
+
168
+ const isActive = (target) => {
169
+ if (target === null) {
170
+ return target === null && !props.activeClientId;
171
+ }
172
+ if (typeof target === 'object') {
173
+ return !!props.activeClientId && (target.clientId === props.activeClientId || target.apps.some(x => x.clientId == props.activeClientId))
174
+ }
175
+ if (!!props.activeClientId && target == props.activeClientId) {
176
+ return true;
177
+ }
178
+ return false;
179
+ }
180
+
181
+ onMounted(async () => {
182
+ try {
183
+ switch (typeof props.projectInfo) {
184
+ case 'string':
185
+ axios.get(props.projectInfo).then((res) => {
186
+ projectInfo.value = res.data;
187
+ });
188
+ break;
189
+ case 'object':
190
+ projectInfo.value = props.projectInfo;
191
+ break;
192
+ default:
193
+ projectInfo.value = {
194
+ caseNo: '',
195
+ name: '',
196
+ beginDT: '',
197
+ endDT: '',
198
+ approvedWorkingPeriod: '',
199
+ extendToDT: '',
200
+ extendDays: ''
201
+ };
202
+ break;
203
+ }
204
+ } catch (e) {
205
+ projectInfo.value = {
206
+ caseNo: '',
207
+ name: '',
208
+ beginDT: '',
209
+ endDT: '',
210
+ approvedWorkingPeriod: '',
211
+ extendToDT: '',
212
+ extendDays: ''
213
+ };
214
+ }
215
+ try {
216
+ switch (typeof props.projectApps) {
217
+ case 'string':
218
+ axios.get(props.projectApps).then((res) => {
219
+ navLinkObj.value = res.data;
220
+ });
221
+ break;
222
+ case 'object':
223
+ navLinkObj.value = props.projectApps;
224
+ break;
225
+ default:
226
+ navLinkObj.value = {
227
+ "moduleLink": {
228
+ "apps": [],
229
+ "icon": "edit_document",
230
+ "name": "Module",
231
+ "url": "",
232
+ "mobileUrl": "",
233
+ "mobileAppRoute": "",
234
+ "clientId": null,
235
+ "selfIsApp": false
236
+ },
237
+ "generalLink": []
238
+ }
239
+ break;
240
+ }
241
+ } catch (e) {
242
+ navLinkObj.value = {
243
+ "moduleLink": {
244
+ "apps": [],
245
+ "icon": "edit_document",
246
+ "name": "Module",
247
+ "url": "",
248
+ "mobileUrl": "",
249
+ "mobileAppRoute": "",
250
+ "clientId": null,
251
+ "selfIsApp": false
252
+ },
253
+ "generalLink": []
254
+ }
255
+ }
256
+
257
+
258
+ nextTick(() => {
259
+ let navbarElements = document.getElementsByClassName('navbar-content');
260
+ Array.from(navbarElements).forEach(function (item) {
261
+ item.classList.remove("opacity-0");
262
+ });
263
+
264
+ let placeholderElements = document.getElementsByClassName('navbar-placeholder-content');
265
+ Array.from(placeholderElements).forEach(function (item) {
266
+ item.classList.add("opacity-0");
267
+ });
268
+ });
269
+ });
270
+
271
+
272
+ return {
273
+ formatDate,
274
+ projectInfo,
275
+ navLinkObj,
276
+ finalRootDomain,
277
+ isActive
278
+ }
279
+ }
280
+ }
281
+ </script>
282
+
283
+ <style scoped lang="scss">
284
+ @import "../../bootstrap/scss/functions";
285
+ @import "../../bootstrap/scss/mixins";
286
+ @import "../style/scss/Settings/bs-variables";
287
+ @import "../style/scss/Settings/Mixins";
288
+
289
+ .navbar-content{
290
+ transition: .5s;
291
+ }
292
+
293
+ .navbar-placeholder-content{
294
+ @include position-center();
295
+ display: flex;
296
+ align-items: center;
297
+ gap: 1rem;
298
+ mix-blend-mode: color-burn;
299
+ pointer-events: none;
300
+ }
301
+
302
+ .text-project-title {
303
+ color: var(--dark-theme-primary);
304
+ }
305
+
306
+ .navbar[data-bs-theme="dark"] {
307
+ --bs-body-color: var(--gray-500);
308
+ color: var(--bs-body-color);
309
+ }
310
+
311
+ .navbar-main {
312
+ .navbar-line-item {
313
+ --bs-navbar-nav-link-padding-x: 1rem;
314
+ }
315
+ .dropdown-menu {
316
+ max-height: 80vh;
317
+ }
318
+ }
319
+
320
+
321
+ .navbar[data-bs-theme="dark"], .navbar-main {
322
+ background-color: var(--gray-900);
323
+ }
324
+
325
+ .navbar-line-item.active {
326
+ background-color: var(--gray-800);
327
+ }
328
+
329
+ .navbar-tab{
330
+ min-height: 60px;
331
+ padding-top: 0.75rem;
332
+ padding-left: 0.5rem;
333
+ .navbar-line-item{
334
+ min-height: auto;
335
+ }
336
+ }
337
+
338
+ .navbar-line-item.dropdown .dropdown-menu {
339
+ z-index: $zindex-sticky + 1;
340
+ }
341
+ .navbar-line-item.dropdown .dropdown-toggle[aria-expanded=true]{
342
+ color: $white;
343
+ }
344
+
345
+ .info-project {
346
+ position: relative;
347
+ padding-left: 60px;
348
+ padding-right: 1rem;
349
+ }
350
+
351
+ .icon-shine{
352
+ background: linear-gradient(120deg, #fff 20%, #24BCE7 40%, #e8ecff 45%, #5872ff 60%, #fff 90%);
353
+ -webkit-background-clip: text;
354
+ color: transparent;
355
+ }
356
+
357
+ .icon-help{
358
+ color: #c8d1ff;
359
+ }
360
360
  </style>