@mptw/skylens-ui 1.5.0 → 1.5.1

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 (111) hide show
  1. package/AGENTS.md +59 -0
  2. package/CLAUDE.md +36 -0
  3. package/README.md +7 -7
  4. package/app/app.config.ts +11 -2
  5. package/app/app.vue +5 -0
  6. package/app/assets/css/layout.css +134 -0
  7. package/app/assets/css/main.css +189 -0
  8. package/app/components/SLAlertModal.vue +24 -16
  9. package/app/components/SLBreadcrumbs.vue +12 -8
  10. package/app/components/SLButton.vue +196 -163
  11. package/app/components/SLCalendarButton.vue +40 -34
  12. package/app/components/SLCalendarPopup.vue +79 -53
  13. package/app/components/SLCard.vue +57 -41
  14. package/app/components/SLChart.vue +6 -3
  15. package/app/components/SLCheckbox.vue +92 -49
  16. package/app/components/SLCircleButton.vue +25 -16
  17. package/app/components/SLCollapsableBlock.vue +44 -33
  18. package/app/components/SLCollapsableMulitPillSelect.vue +20 -15
  19. package/app/components/SLConfirmModal.vue +9 -6
  20. package/app/components/SLContextMenu.vue +88 -48
  21. package/app/components/SLDateInput.vue +109 -92
  22. package/app/components/SLDatePicker.vue +9 -7
  23. package/app/components/SLDistributor.vue +1 -1
  24. package/app/components/SLDownloadButton.vue +39 -29
  25. package/app/components/SLDraggable.vue +2 -2
  26. package/app/components/SLDropdown.vue +33 -25
  27. package/app/components/SLDropdownItem.vue +9 -5
  28. package/app/components/SLElementWithTitle.vue +12 -7
  29. package/app/components/SLEyeCheckbox.vue +44 -31
  30. package/app/components/SLFileInput.vue +23 -16
  31. package/app/components/SLGenderAgeSelect.vue +52 -36
  32. package/app/components/SLHourRangeInput.vue +45 -32
  33. package/app/components/SLIOSSwitch.vue +81 -60
  34. package/app/components/SLIcon.vue +4 -3
  35. package/app/components/SLIconButton.vue +31 -29
  36. package/app/components/SLInfoTip.vue +51 -40
  37. package/app/components/SLInsightSitePage.vue +12 -7
  38. package/app/components/SLLegend.vue +19 -12
  39. package/app/components/SLLinearProgressBar.vue +7 -20
  40. package/app/components/SLLink.vue +12 -8
  41. package/app/components/SLLoading.vue +34 -31
  42. package/app/components/SLMapChart.vue +5 -4
  43. package/app/components/SLModal.vue +90 -66
  44. package/app/components/SLMonthCalendarButton.vue +91 -45
  45. package/app/components/SLMonthPicker.vue +42 -37
  46. package/app/components/SLMultiEmailInput.vue +163 -113
  47. package/app/components/SLMultiSelect.vue +37 -26
  48. package/app/components/SLNoData.vue +16 -11
  49. package/app/components/SLNotification.vue +133 -129
  50. package/app/components/SLPageModal.vue +14 -9
  51. package/app/components/SLPagination.vue +45 -33
  52. package/app/components/SLPillCheckbox.vue +50 -42
  53. package/app/components/SLPillLabel.vue +43 -28
  54. package/app/components/SLPopupMenuButton.vue +26 -17
  55. package/app/components/SLProfileButton.vue +28 -20
  56. package/app/components/SLProjectShareItem.vue +30 -17
  57. package/app/components/SLRadioButton.vue +41 -33
  58. package/app/components/SLRadioButtonGroup.vue +28 -23
  59. package/app/components/SLRadioGroup.vue +90 -78
  60. package/app/components/SLRangeInput.vue +53 -38
  61. package/app/components/SLRegionsMapChart.vue +5 -4
  62. package/app/components/SLRightSider.vue +50 -40
  63. package/app/components/SLSearchInput.vue +24 -19
  64. package/app/components/SLSelect.vue +114 -87
  65. package/app/components/SLSelectAllToggle.vue +52 -37
  66. package/app/components/SLSidebarNav.vue +253 -193
  67. package/app/components/SLSidebarNavGroupItem.vue +13 -10
  68. package/app/components/SLSidebarNavGroupItemSection.vue +240 -179
  69. package/app/components/SLSidebarNavLinkItem.vue +131 -109
  70. package/app/components/SLSidebarNavSectionItem.vue +21 -18
  71. package/app/components/SLSitePage.vue +35 -24
  72. package/app/components/SLSkyInsightSitePage.vue +13 -8
  73. package/app/components/SLSortByDropdown.vue +35 -22
  74. package/app/components/SLSpinIcon.vue +6 -3
  75. package/app/components/SLStayRangeInput.vue +47 -36
  76. package/app/components/SLTab.vue +7 -2
  77. package/app/components/SLTable.vue +330 -313
  78. package/app/components/SLTableTooltip.vue +44 -30
  79. package/app/components/SLTabs.vue +333 -280
  80. package/app/components/SLTextInput.vue +162 -134
  81. package/app/components/SLTextarea.vue +40 -29
  82. package/app/components/SLToast.vue +19 -11
  83. package/app/components/SLToggleButton.vue +18 -11
  84. package/app/components/SLTwoLayerMultiSelect.vue +180 -85
  85. package/app/components/SLTwoLayerSelect.vue +47 -37
  86. package/app/components/SLTwoLayerSingleSelect.vue +52 -33
  87. package/app/components/SLWarnModal.vue +9 -7
  88. package/app/interface/commons.ts +7 -0
  89. package/app/utils/index.ts +213 -146
  90. package/eslint.config.js +3 -0
  91. package/nuxt.config.ts +17 -14
  92. package/package.json +9 -8
  93. package/skills-lock.json +59 -0
  94. package/tsconfig.json +1 -6
  95. package/.eslintrc.cjs +0 -4
  96. package/app/assets/css/layout.styl +0 -98
  97. package/app/assets/css/tailwind.css +0 -3
  98. package/app/pages/index.vue +0 -15
  99. package/interface/commons.ts +0 -7
  100. package/tailwind.config.js +0 -271
  101. /package/{interface → app/interface}/IDateRange.ts +0 -0
  102. /package/{interface → app/interface}/IHourRange.ts +0 -0
  103. /package/{interface → app/interface}/IInputOption.ts +0 -0
  104. /package/{interface → app/interface}/ILegendItem.ts +0 -0
  105. /package/{interface → app/interface}/IOrganization.ts +0 -0
  106. /package/{interface → app/interface}/IPopupMenuButton.ts +0 -0
  107. /package/{interface → app/interface}/IStayRange.ts +0 -0
  108. /package/{interface → app/interface}/ITableField.ts +0 -0
  109. /package/{interface → app/interface}/IWeb.ts +0 -0
  110. /package/{interface → app/interface}/NavConfigType.ts +0 -0
  111. /package/{models → app/models}/DateRange.ts +0 -0
@@ -79,14 +79,17 @@
79
79
  </template>
80
80
 
81
81
  <script lang="ts">
82
- import { fromEvent, Subscription } from 'rxjs';
83
- import gsap from 'gsap';
84
- import { createPopper } from '@popperjs/core';
85
- import type { Instance as PopperInstance } from '@popperjs/core';
86
- import { NavItemStatus, type NavItemSection } from '~/interface/NavConfigType';
82
+ import { fromEvent, Subscription } from "rxjs";
83
+ import gsap from "gsap";
84
+ import { createPopper } from "@popperjs/core";
85
+ import type { Instance as PopperInstance } from "@popperjs/core";
86
+ import {
87
+ NavItemStatus,
88
+ type NavItemSection,
89
+ } from "~ui/app/interface/NavConfigType";
87
90
 
88
91
  export default defineComponent({
89
- name: 'SLSidebarNavGroupItemSection',
92
+ name: "SLSidebarNavGroupItemSection",
90
93
  props: {
91
94
  navCollapsed: {
92
95
  type: Boolean,
@@ -101,7 +104,7 @@ export default defineComponent({
101
104
  required: true,
102
105
  },
103
106
  },
104
- emits: ['click:item'],
107
+ emits: ["click:item"],
105
108
  setup(props, { emit }) {
106
109
  const route = useRoute();
107
110
 
@@ -126,10 +129,14 @@ export default defineComponent({
126
129
  const isLinkExactActive = computed(() => {
127
130
  if (!itemConfig.value.to) return false;
128
131
 
129
- if (itemConfig.value.code === 'M01') {
130
- return ['/application/web', '/application/web/create'].includes(route.path);
131
- } else if (itemConfig.value.code === 'M02') {
132
- return ['/application/poi', '/application/poi/create'].includes(route.path);
132
+ if (itemConfig.value.code === "M01") {
133
+ return ["/application/web", "/application/web/create"].includes(
134
+ route.path,
135
+ );
136
+ } else if (itemConfig.value.code === "M02") {
137
+ return ["/application/poi", "/application/poi/create"].includes(
138
+ route.path,
139
+ );
133
140
  }
134
141
 
135
142
  return route.path === itemConfig.value.to;
@@ -138,11 +145,12 @@ export default defineComponent({
138
145
  function onClickedSectionItem() {
139
146
  if (itemConfig.value.to || !itemConfig.value.emit) return;
140
147
 
141
- emit('click:item', itemConfig.value.emit);
148
+ emit("click:item", itemConfig.value.emit);
142
149
  }
143
150
 
144
151
  function onClickedToggle() {
145
- if (!collapsed.value && isLinkActive.value && !isLinkExactActive.value) return;
152
+ if (!collapsed.value && isLinkActive.value && !isLinkExactActive.value)
153
+ return;
146
154
  collapsed.value = !collapsed.value;
147
155
  }
148
156
 
@@ -162,7 +170,7 @@ export default defineComponent({
162
170
 
163
171
  function onClickedLinkItem(emitEvent?: string) {
164
172
  if (emitEvent) {
165
- emit('click:item', emitEvent);
173
+ emit("click:item", emitEvent);
166
174
  }
167
175
  }
168
176
 
@@ -183,7 +191,9 @@ export default defineComponent({
183
191
  function onCollapse() {
184
192
  clearTween();
185
193
 
186
- const bodyWrapper = bodyEl.value?.querySelector('.sidebar-nav-group-item-section-body-wrapper');
194
+ const bodyWrapper = bodyEl.value?.querySelector(
195
+ ".sidebar-nav-group-item-section-body-wrapper",
196
+ );
187
197
  if (!bodyEl.value || !bodyWrapper) return;
188
198
 
189
199
  const wrapperRect = bodyWrapper.getBoundingClientRect();
@@ -191,19 +201,21 @@ export default defineComponent({
191
201
  height: 0,
192
202
  alpha: 0,
193
203
  duration: 0.3,
194
- ease: 'power2.out',
204
+ ease: "power2.out",
195
205
  onStart: () => {
196
206
  if (!bodyEl.value) return;
197
207
  bodyEl.value.style.height = `${wrapperRect.height + 4}px`;
198
- bodyEl.value.style.opacity = '1';
208
+ bodyEl.value.style.opacity = "1";
199
209
  },
200
210
  });
201
211
  }
202
212
 
203
213
  function onExpand() {
204
214
  clearTween();
205
-
206
- const bodyWrapper = bodyEl.value?.querySelector('.sidebar-nav-group-item-section-body-wrapper');
215
+
216
+ const bodyWrapper = bodyEl.value?.querySelector(
217
+ ".sidebar-nav-group-item-section-body-wrapper",
218
+ );
207
219
  if (!bodyEl.value || !bodyWrapper) return;
208
220
 
209
221
  const wrapperRect = bodyWrapper.getBoundingClientRect();
@@ -211,10 +223,10 @@ export default defineComponent({
211
223
  height: wrapperRect.height + 4,
212
224
  alpha: 1,
213
225
  duration: 0.3,
214
- ease: 'power2.out',
226
+ ease: "power2.out",
215
227
  onComplete: () => {
216
228
  if (!bodyEl.value) return;
217
- bodyEl.value.removeAttribute('style');
229
+ bodyEl.value.removeAttribute("style");
218
230
  },
219
231
  });
220
232
  }
@@ -223,17 +235,17 @@ export default defineComponent({
223
235
  if (
224
236
  !headerEl.value ||
225
237
  !popupEl.value ||
226
- popupEl.value.hasAttribute('data-show') ||
238
+ popupEl.value.hasAttribute("data-show") ||
227
239
  !popperInstance
228
240
  )
229
241
  return;
230
242
 
231
- popupEl.value.setAttribute('data-show', '');
243
+ popupEl.value.setAttribute("data-show", "");
232
244
  popperInstance.setOptions((options) => ({
233
245
  ...options,
234
246
  modifiers: [
235
247
  ...(options.modifiers || []),
236
- { name: 'eventListeners', enabled: true },
248
+ { name: "eventListeners", enabled: true },
237
249
  ],
238
250
  }));
239
251
  popperInstance.update();
@@ -248,7 +260,7 @@ export default defineComponent({
248
260
 
249
261
  function onIconMouseEnter() {
250
262
  clearDisappearTimeout();
251
-
263
+
252
264
  if (!navCollapsed.value) return;
253
265
 
254
266
  showPopup();
@@ -257,12 +269,12 @@ export default defineComponent({
257
269
  function hidePopup() {
258
270
  if (!popupEl.value || !popperInstance) return;
259
271
 
260
- popupEl.value.removeAttribute('data-show');
272
+ popupEl.value.removeAttribute("data-show");
261
273
  popperInstance.setOptions((options) => ({
262
274
  ...options,
263
275
  modifiers: [
264
276
  ...(options.modifiers || []),
265
- { name: 'eventListeners', enabled: false },
277
+ { name: "eventListeners", enabled: false },
266
278
  ],
267
279
  }));
268
280
  }
@@ -281,16 +293,16 @@ export default defineComponent({
281
293
  nextTick(() => {
282
294
  if (!headerEl.value || !popupEl.value) return;
283
295
  popperInstance = createPopper(headerEl.value, popupEl.value, {
284
- placement: 'right-start',
285
- strategy: 'fixed',
296
+ placement: "right-start",
297
+ strategy: "fixed",
286
298
  modifiers: [
287
299
  {
288
- name: 'offset',
300
+ name: "offset",
289
301
  options: {
290
302
  offset: [0, 12],
291
303
  },
292
304
  },
293
- { name: 'eventListeners', enabled: false },
305
+ { name: "eventListeners", enabled: false },
294
306
  ],
295
307
  });
296
308
  });
@@ -310,7 +322,7 @@ export default defineComponent({
310
322
  }
311
323
 
312
324
  onExpand();
313
- })
325
+ });
314
326
 
315
327
  watch(isLinkActive, () => {
316
328
  if (navCollapsed.value) return;
@@ -331,9 +343,11 @@ export default defineComponent({
331
343
  collapsed.value = !isLinkActive.value;
332
344
 
333
345
  destroyWindowDragEndSubscription();
334
- windowDragEndSubscription = fromEvent(window, 'dragend').subscribe((e) => {
335
- actived.value = false;
336
- });
346
+ windowDragEndSubscription = fromEvent(window, "dragend").subscribe(
347
+ (e) => {
348
+ actived.value = false;
349
+ },
350
+ );
337
351
 
338
352
  setupPopper();
339
353
  });
@@ -366,155 +380,202 @@ export default defineComponent({
366
380
  });
367
381
  </script>
368
382
 
369
- <style lang="stylus">
370
- .sidebar.closure
371
- .sidebar-nav-group-item-section
372
- @apply items-center
373
-
374
- &-header
375
- @apply s('lg:p-2') s('lg:rounded-full') s('lg:text-lg')
376
-
377
- &-left
378
- @apply s('lg:inline-flex')
379
-
380
- &-right
381
- @apply s('lg:hidden')
382
-
383
- .sidebar.dark
384
- .sidebar-nav-group-item-section
385
- &-header
386
- @apply bg-primary-900 text-white
387
- @apply s('hover:bg-primary')
388
-
389
- &.active, &.router-link-exact-active
390
- @apply bg-primary-600
391
- @apply s('hover:bg-primary-600')
392
-
393
- &-body
394
- &-wrapper
395
- .sidebar-nav-group-item-section-link
396
- @apply bg-primary-900 text-white
397
- @apply s('hover:bg-primary-800') s('active:bg-primary-600')
398
-
399
- &.router-link-exact-active
400
- @apply bg-primary-600
401
- @apply s('hover:bg-primary-600')
402
-
403
- .sidebar-nav-group-item-section
404
- @apply flex flex-col
405
-
406
- &.collapsed
407
- .sidebar-nav-group-item-section-header
408
- &-right
409
- .sidebar-nav-group-item-section-status
410
- .sidebar-nav-group-item-section-toggle-btn
411
- @apply rotate-0
412
-
413
- &-header
414
- @apply flex items-center flex-nowrap py-2 pr-1 pl-2 bg-primary-50 rounded-lg text-base text-primary
415
- @apply s('hover:bg-primary-200') s('hover:font-bold')
416
-
417
- &:hover
418
- .sidebar-nav-group-item-section-header-right
419
- .sidebar-nav-group-item-section-status
420
- .sidebar-nav-group-item-section-add-btn
421
- @apply text-primary
422
-
423
- &.active, &.router-link-exact-active
424
- @apply bg-primary-600 text-white font-bold
425
- @apply s('hover:bg-primary-600') s('hover:text-white') s('hover:font-bold')
426
-
427
- .sidebar-nav-group-item-section-header-right
428
- .sidebar-nav-group-item-section-status
429
- .sidebar-nav-group-item-section-add-btn
430
- @apply text-white
431
-
432
- &.router-link-exact-active
433
- .sidebar-nav-group-item-section-header-right
434
- .sidebar-nav-group-item-section-status
435
- .sidebar-nav-group-item-section-add-btn
436
- @apply hidden
437
-
438
- &-left
439
- @apply flex-grow-0 flex-shrink-0 inline-flex
440
-
441
- &-right
442
- @apply flex-grow flex items-center justify-between flex-nowrap space-x-1
443
-
444
- .sidebar-nav-group-section-title
445
- @apply flex-grow inline-flex items-center h-6 pl-1 whitespace-nowrap
446
-
447
- .sidebar-nav-group-item-section-status
448
- @apply flex-grow-0 flex-shrink-0
449
-
450
- .sidebar-nav-group-item-section-toggle-btn
451
- @apply flex items-center justify-center w-4 h-4 text-sm rotate-180 transition-transform origin-center
383
+ <style>
384
+ @reference '~ui/app/assets/css/main.css';
452
385
 
453
- .sidebar-nav-group-item-section-add-btn
454
- @apply flex items-center justify-center w-4 h-4 text-sm text-primary-400
386
+ .sidebar.closure .sidebar-nav-group-item-section {
387
+ @apply items-center;
388
+ }
455
389
 
456
- &-body
457
- @apply overflow-hidden transition-height
390
+ .sidebar.closure .sidebar-nav-group-item-section-header {
391
+ @apply lg:p-2 lg:rounded-full lg:text-lg;
392
+ }
458
393
 
459
- &-wrapper
460
- @apply pl-3
394
+ .sidebar.closure .sidebar-nav-group-item-section-header-left {
395
+ @apply lg:inline-flex;
396
+ }
461
397
 
462
- .sidebar-nav-group-item-section-link
463
- @apply block py-1 px-2 bg-primary-50 rounded-lg text-sm text-primary whitespace-nowrap
464
- @apply s('hover:bg-primary-200') s('hover:font-bold') s('active:bg-primary-600') s('active:text-white') s('active:font-bold')
398
+ .sidebar.closure .sidebar-nav-group-item-section-header-right {
399
+ @apply lg:hidden;
400
+ }
465
401
 
466
- &.router-link-exact-active
467
- @apply bg-primary-600 text-white font-bold
468
- @apply s('hover:bg-primary-600') s('hover:text-white') s('hover:font-bold')
402
+ .sidebar.dark .sidebar-nav-group-item-section-header {
403
+ @apply bg-primary-900 text-white hover:bg-primary;
404
+ }
469
405
 
470
- .sidebar-nav-group-item-section-popup
471
- @apply flex-col s('min-w-[142px]') p-2 space-y-1 bg-white rounded-lg overflow-hidden shadow-md hidden
406
+ .sidebar.dark .sidebar-nav-group-item-section-header.active,
407
+ .sidebar.dark .sidebar-nav-group-item-section-header.router-link-exact-active {
408
+ @apply bg-primary-600 hover:bg-primary-600;
409
+ }
472
410
 
473
- &.dark
474
- @apply bg-primary-900
475
-
476
- &.single
477
- .sidebar-nav-group-item-section-popup-link
478
- &:hover
479
- .sidebar-nav-group-item-section-popup-link-icon
480
- @apply text-primary-500
481
-
482
- &.router-link-exact-active, &:active
483
- .sidebar-nav-group-item-section-popup-link-icon
484
- @apply text-primary
485
-
486
- &-icon
487
- @apply text-primary-500
488
-
489
- .sidebar-nav-group-item-section-popup-link
490
- @apply bg-primary-900 text-white
491
- @apply s('hover:bg-primary') s('active:bg-primary-600')
492
-
493
- &.router-link-exact-active
494
- @apply bg-primary-600
495
- @apply s('hover:bg-primary-600')
496
-
497
-
498
- &[data-show]
499
- @apply flex
500
-
501
- &.single
502
- @apply p-0
503
-
504
- .sidebar-nav-group-item-section-popup-link
505
- @apply py-2 pr-1 pl-2
506
-
507
- &-link
508
- @apply flex items-center justify-between flex-nowrap py-1 px-2 space-x-4 bg-white rounded-lg text-sm text-primary
509
- @apply s('hover:bg-primary-200') s('hover:font-bold') s('active:bg-primary-600') s('active:text-white') s('active:font-bold')
510
-
511
- &.router-link-exact-active
512
- @apply bg-primary-600 text-white font-bold
513
- @apply s('hover:bg-primary-600') s('hover:text-white') s('hover:font-bold')
514
-
515
- &-icon
516
- @apply inline-flex origin-center rotate-180
411
+ .sidebar.dark
412
+ .sidebar-nav-group-item-section-body-wrapper
413
+ .sidebar-nav-group-item-section-link {
414
+ @apply bg-primary-900 text-white hover:bg-primary-800 active:bg-primary-600;
415
+ }
517
416
 
518
- &-divide
519
- @apply h-px bg-primary-200
520
- </style>
417
+ .sidebar.dark
418
+ .sidebar-nav-group-item-section-body-wrapper
419
+ .sidebar-nav-group-item-section-link.router-link-exact-active {
420
+ @apply bg-primary-600 hover:bg-primary-600;
421
+ }
422
+
423
+ .sidebar-nav-group-item-section {
424
+ @apply flex flex-col;
425
+ }
426
+
427
+ .sidebar-nav-group-item-section.collapsed
428
+ .sidebar-nav-group-item-section-header-right
429
+ .sidebar-nav-group-item-section-status
430
+ .sidebar-nav-group-item-section-toggle-btn {
431
+ @apply rotate-0;
432
+ }
433
+
434
+ .sidebar-nav-group-item-section-header {
435
+ @apply flex items-center flex-nowrap py-2 pr-1 pl-2 bg-primary-50 rounded-lg text-base text-primary hover:bg-primary-200 hover:font-bold;
436
+ }
437
+
438
+ .sidebar-nav-group-item-section-header:hover
439
+ .sidebar-nav-group-item-section-header-right
440
+ .sidebar-nav-group-item-section-status
441
+ .sidebar-nav-group-item-section-add-btn {
442
+ @apply text-primary;
443
+ }
444
+
445
+ .sidebar-nav-group-item-section-header.active,
446
+ .sidebar-nav-group-item-section-header.router-link-exact-active {
447
+ @apply bg-primary-600 text-white font-bold hover:bg-primary-600 hover:text-white hover:font-bold;
448
+ }
449
+
450
+ .sidebar-nav-group-item-section-header.active
451
+ .sidebar-nav-group-item-section-header-right
452
+ .sidebar-nav-group-item-section-status
453
+ .sidebar-nav-group-item-section-add-btn,
454
+ .sidebar-nav-group-item-section-header.router-link-exact-active
455
+ .sidebar-nav-group-item-section-header-right
456
+ .sidebar-nav-group-item-section-status
457
+ .sidebar-nav-group-item-section-add-btn {
458
+ @apply text-white;
459
+ }
460
+
461
+ .sidebar-nav-group-item-section-header.router-link-exact-active
462
+ .sidebar-nav-group-item-section-header-right
463
+ .sidebar-nav-group-item-section-status
464
+ .sidebar-nav-group-item-section-add-btn {
465
+ @apply hidden;
466
+ }
467
+
468
+ .sidebar-nav-group-item-section-header-left {
469
+ @apply grow-0 shrink-0 inline-flex;
470
+ }
471
+
472
+ .sidebar-nav-group-item-section-header-right {
473
+ @apply grow flex items-center justify-between flex-nowrap space-x-1;
474
+ }
475
+
476
+ .sidebar-nav-group-item-section-header-right .sidebar-nav-group-section-title {
477
+ @apply grow inline-flex items-center h-6 pl-1 whitespace-nowrap;
478
+ }
479
+
480
+ .sidebar-nav-group-item-section-header-right
481
+ .sidebar-nav-group-item-section-status {
482
+ @apply grow-0 shrink-0;
483
+ }
484
+
485
+ .sidebar-nav-group-item-section-header-right
486
+ .sidebar-nav-group-item-section-status
487
+ .sidebar-nav-group-item-section-toggle-btn {
488
+ @apply flex items-center justify-center w-4 h-4 text-sm rotate-180 transition-transform origin-center;
489
+ }
490
+
491
+ .sidebar-nav-group-item-section-header-right
492
+ .sidebar-nav-group-item-section-status
493
+ .sidebar-nav-group-item-section-add-btn {
494
+ @apply flex items-center justify-center w-4 h-4 text-sm text-primary-400;
495
+ }
496
+
497
+ .sidebar-nav-group-item-section-body {
498
+ @apply overflow-hidden transition-[height];
499
+ }
500
+
501
+ .sidebar-nav-group-item-section-body-wrapper {
502
+ @apply pl-3;
503
+ }
504
+
505
+ .sidebar-nav-group-item-section-body-wrapper
506
+ .sidebar-nav-group-item-section-link {
507
+ @apply block py-1 px-2 bg-primary-50 rounded-lg text-sm text-primary whitespace-nowrap hover:bg-primary-200 hover:font-bold active:bg-primary-600 active:text-white active:font-bold;
508
+ }
509
+
510
+ .sidebar-nav-group-item-section-body-wrapper
511
+ .sidebar-nav-group-item-section-link.router-link-exact-active {
512
+ @apply bg-primary-600 text-white font-bold hover:bg-primary-600 hover:text-white hover:font-bold;
513
+ }
514
+
515
+ .sidebar-nav-group-item-section-popup {
516
+ @apply flex-col min-w-[142px] p-2 space-y-1 bg-white rounded-lg overflow-hidden shadow-md hidden;
517
+ }
518
+
519
+ .sidebar-nav-group-item-section-popup.dark {
520
+ @apply bg-primary-900;
521
+ }
522
+
523
+ .sidebar-nav-group-item-section-popup.dark.single
524
+ .sidebar-nav-group-item-section-popup-link:hover
525
+ .sidebar-nav-group-item-section-popup-link-icon {
526
+ @apply text-primary-500;
527
+ }
528
+
529
+ .sidebar-nav-group-item-section-popup.dark.single
530
+ .sidebar-nav-group-item-section-popup-link.router-link-exact-active
531
+ .sidebar-nav-group-item-section-popup-link-icon,
532
+ .sidebar-nav-group-item-section-popup.dark.single
533
+ .sidebar-nav-group-item-section-popup-link:active
534
+ .sidebar-nav-group-item-section-popup-link-icon {
535
+ @apply text-primary;
536
+ }
537
+
538
+ .sidebar-nav-group-item-section-popup.dark.single
539
+ .sidebar-nav-group-item-section-popup-link-icon {
540
+ @apply text-primary-500;
541
+ }
542
+
543
+ .sidebar-nav-group-item-section-popup.dark
544
+ .sidebar-nav-group-item-section-popup-link {
545
+ @apply bg-primary-900 text-white hover:bg-primary active:bg-primary-600;
546
+ }
547
+
548
+ .sidebar-nav-group-item-section-popup.dark
549
+ .sidebar-nav-group-item-section-popup-link.router-link-exact-active {
550
+ @apply bg-primary-600 hover:bg-primary-600;
551
+ }
552
+
553
+ .sidebar-nav-group-item-section-popup[data-show] {
554
+ @apply flex;
555
+ }
556
+
557
+ .sidebar-nav-group-item-section-popup.single {
558
+ @apply p-0;
559
+ }
560
+
561
+ .sidebar-nav-group-item-section-popup.single
562
+ .sidebar-nav-group-item-section-popup-link {
563
+ @apply py-2 pr-1 pl-2;
564
+ }
565
+
566
+ .sidebar-nav-group-item-section-popup-link {
567
+ @apply flex items-center justify-between flex-nowrap py-1 px-2 space-x-4 bg-white rounded-lg text-sm text-primary hover:bg-primary-200 hover:font-bold active:bg-primary-600 active:text-white active:font-bold;
568
+ }
569
+
570
+ .sidebar-nav-group-item-section-popup-link.router-link-exact-active {
571
+ @apply bg-primary-600 text-white font-bold hover:bg-primary-600 hover:text-white hover:font-bold;
572
+ }
573
+
574
+ .sidebar-nav-group-item-section-popup-link-icon {
575
+ @apply inline-flex origin-center rotate-180;
576
+ }
577
+
578
+ .sidebar-nav-group-item-section-popup-divide {
579
+ @apply h-px bg-primary-200;
580
+ }
581
+ </style>