@mptw/skylens-ui 1.5.0 → 1.5.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 (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
@@ -5,10 +5,10 @@
5
5
  .sidebar-wrapper
6
6
  .sidebar-logo
7
7
  a.logo(href="javascript:;" @click="onClickedLogo")
8
- img.color-big(src="~/assets/images/commons/app-logo-big.svg", @load='onLogoLoaded')
9
- img.white-big(src="~/assets/images/commons/app-logo-big-white.svg", @load='onLogoLoaded')
10
- img.color-small(src='~/assets/images/commons/app-logo-small.svg', @load='onLogoLoaded')
11
- img.white-small(src='~/assets/images/commons/app-logo-small-white.svg', @load='onLogoLoaded')
8
+ img.color-big(src="~ui/app/assets/images/commons/app-logo-big.svg", @load='onLogoLoaded')
9
+ img.white-big(src="~ui/app/assets/images/commons/app-logo-big-white.svg", @load='onLogoLoaded')
10
+ img.color-small(src='~ui/app/assets/images/commons/app-logo-small.svg', @load='onLogoLoaded')
11
+ img.white-small(src='~ui/app/assets/images/commons/app-logo-small-white.svg', @load='onLogoLoaded')
12
12
  nav.site-nav
13
13
  .nav-wrapper.custom-scrollbar-y
14
14
  template(v-for='item in config')
@@ -64,9 +64,9 @@
64
64
 
65
65
  <script lang="ts">
66
66
  import type { PropType } from "vue";
67
- import { createPopper } from '@popperjs/core';
68
- import type { Instance as PopperInstance } from '@popperjs/core';
69
- import { NavType, type NavConfigType } from "~/interface/NavConfigType";
67
+ import { createPopper } from "@popperjs/core";
68
+ import type { Instance as PopperInstance } from "@popperjs/core";
69
+ import { NavType, type NavConfigType } from "~ui/app/interface/NavConfigType";
70
70
 
71
71
  export default defineComponent({
72
72
  name: "SLSidebarNav",
@@ -84,21 +84,30 @@ export default defineComponent({
84
84
  default: () => [],
85
85
  },
86
86
  navIntros: {
87
- type: Array as PropType<{
88
- code: string;
89
- title: string;
90
- content: string;
91
- targetCode: string;
92
- }[]>,
87
+ type: Array as PropType<
88
+ {
89
+ code: string;
90
+ title: string;
91
+ content: string;
92
+ targetCode: string;
93
+ }[]
94
+ >,
93
95
  default: () => [],
94
96
  },
95
97
  switchColor: {
96
98
  type: String,
97
- default: '',
98
- validator: (v: string) => ['', 'primary-600', 'primary'].includes(v),
99
+ default: "",
100
+ validator: (v: string) => ["", "primary-600", "primary"].includes(v),
99
101
  },
100
102
  },
101
- emits: ["click:logo", "update:dark", "update:closured", "click:insight", 'close:intro', 'logo:loaded'],
103
+ emits: [
104
+ "click:logo",
105
+ "update:dark",
106
+ "update:closured",
107
+ "click:insight",
108
+ "close:intro",
109
+ "logo:loaded",
110
+ ],
102
111
  setup(props, { emit }) {
103
112
  const { closured, navIntros } = toRefs(props);
104
113
 
@@ -107,7 +116,7 @@ export default defineComponent({
107
116
 
108
117
  const closuredProxy = computed({
109
118
  get: () => closured.value,
110
- set: (newValue) => emit('update:closured', newValue),
119
+ set: (newValue) => emit("update:closured", newValue),
111
120
  });
112
121
 
113
122
  let introPopperInstance: PopperInstance | null = null;
@@ -129,7 +138,7 @@ export default defineComponent({
129
138
  | "click:logo"
130
139
  | "update:dark"
131
140
  | "update:closured"
132
- | "click:insight"
141
+ | "click:insight",
133
142
  ) {
134
143
  emit(eventName);
135
144
  }
@@ -143,20 +152,22 @@ export default defineComponent({
143
152
 
144
153
  if (!navLinkIntro.value) return;
145
154
 
146
- const navLinkIndexEl = document.getElementById(`nav-link-${navLinkIntro.value.targetCode}`);
155
+ const navLinkIndexEl = document.getElementById(
156
+ `nav-link-${navLinkIntro.value.targetCode}`,
157
+ );
147
158
 
148
159
  if (!introEl.value || !navLinkIndexEl) return;
149
160
 
150
161
  introPopperInstance = createPopper(navLinkIndexEl, introEl.value, {
151
162
  modifiers: [
152
163
  {
153
- name: 'offset',
164
+ name: "offset",
154
165
  options: {
155
166
  offset: [-6, 39],
156
167
  },
157
168
  },
158
169
  ],
159
- placement: 'right-start',
170
+ placement: "right-start",
160
171
  });
161
172
  }
162
173
 
@@ -172,12 +183,12 @@ export default defineComponent({
172
183
 
173
184
  if (!introEl.value || !introPopperInstance) return;
174
185
 
175
- introEl.value.setAttribute('data-show', '');
186
+ introEl.value.setAttribute("data-show", "");
176
187
  introPopperInstance.setOptions((options) => ({
177
188
  ...options,
178
189
  modifiers: [
179
190
  ...(options.modifiers || []),
180
- { name: 'eventListeners', enabled: true },
191
+ { name: "eventListeners", enabled: true },
181
192
  ],
182
193
  }));
183
194
  introPopperInstance.update();
@@ -189,12 +200,12 @@ export default defineComponent({
189
200
 
190
201
  if (!introEl.value || !introPopperInstance) return;
191
202
 
192
- introEl.value.removeAttribute('data-show');
203
+ introEl.value.removeAttribute("data-show");
193
204
  introPopperInstance.setOptions((options) => ({
194
205
  ...options,
195
206
  modifiers: [
196
207
  ...(options.modifiers || []),
197
- { name: 'eventListeners', enabled: false },
208
+ { name: "eventListeners", enabled: false },
198
209
  ],
199
210
  }));
200
211
  }
@@ -211,11 +222,11 @@ export default defineComponent({
211
222
 
212
223
  if (!navLinkIntro.value) return;
213
224
 
214
- emit('close:intro', navLinkIntro.value.code);
225
+ emit("close:intro", navLinkIntro.value.code);
215
226
  }
216
227
 
217
228
  function onLogoLoaded() {
218
- emit('logo:loaded');
229
+ emit("logo:loaded");
219
230
  }
220
231
 
221
232
  return {
@@ -235,193 +246,242 @@ export default defineComponent({
235
246
  });
236
247
  </script>
237
248
 
238
- <style lang="stylus">
239
- .sidebar
240
- @apply relative h-full
249
+ <style>
250
+ @reference '~ui/app/assets/css/main.css';
241
251
 
242
- &.dark
243
- .sidebar-wrapper
244
- @apply bg-primary-800
252
+ .sidebar {
253
+ @apply relative h-full;
254
+ }
245
255
 
246
- &.closure
247
- .sidebar-logo
248
- .logo
249
- img.color-small
250
- @apply s('lg:hidden')
256
+ .sidebar.dark .sidebar-wrapper {
257
+ @apply bg-primary-800;
258
+ }
251
259
 
252
- img.white-big
253
- @apply s('lg:hidden')
260
+ .sidebar.dark.closure .sidebar-logo .logo img.color-small {
261
+ @apply lg:hidden;
262
+ }
254
263
 
255
- img.white-small
256
- @apply s('lg:block')
264
+ .sidebar.dark.closure .sidebar-logo .logo img.white-big {
265
+ @apply lg:hidden;
266
+ }
257
267
 
258
- .sidebar-toggle
259
- @apply bg-primary-900
268
+ .sidebar.dark.closure .sidebar-logo .logo img.white-small {
269
+ @apply lg:block;
270
+ }
260
271
 
261
- &:hover
262
- @apply bg-primary-600
272
+ .sidebar.dark.closure .sidebar-toggle {
273
+ @apply bg-primary-900;
274
+ }
263
275
 
264
- .sidebar-logo
265
- .logo
266
- img.color-big
267
- @apply hidden
268
-
269
- img.white-big
270
- @apply block
271
-
272
- nav
273
- .nav-wrapper.custom-scrollbar-y
274
- /* Handle */
275
- &::-webkit-scrollbar-thumb
276
- @apply bg-primary-600
277
-
278
- /* Handle on hover */
279
- &::-webkit-scrollbar-thumb:hover
280
- @apply bg-primary-600
281
-
282
- .sidebar-mode-setting
283
- @apply text-white
284
-
285
- .ios-switch
286
- label
287
- @apply bg-nav-color-switch-bg border-primary-600
288
-
289
- &:before
290
- @apply border-primary-600 bg-primary-300
291
-
292
- .sidebar-toggle
293
- @apply bg-primary-900 text-white
294
-
295
- &:hover
296
- @apply bg-primary-600
297
-
298
- &.closure
299
- .sidebar-modal
300
- @apply hidden
301
-
302
- .sidebar-wrapper
303
- @apply s('-ml-[188px]')
304
- @apply s('lg:ml-0') s('lg:w-[84px]')
305
-
306
- .sidebar-logo
307
- @apply s('lg:py-3') s('lg:px-0')
308
- .logo
309
- img.color-big
310
- @apply s('lg:hidden')
311
-
312
- img.color-small
313
- @apply s('lg:block')
314
-
315
- .sidebar-toggle
316
- @apply s('-mr-5') bg-primary-300 rounded-l-none rounded-r-xl text-white
317
-
318
- &:hover
319
- @apply bg-primary-400 text-white
320
-
321
- .icon-chevron-left
322
- @apply hidden
323
-
324
- .icon-chevron-right
325
- @apply inline-block
326
-
327
- nav.site-nav
328
- .nav-wrapper
329
- @apply s('lg:items-center')
330
-
331
- .sidebar-mode-setting
332
- @apply p-0 justify-center space-x-0
333
-
334
- &-title
335
- @apply hidden
336
-
337
- .ios-switch
338
- @apply flex-grow-0 flex-shrink-0
339
-
340
- &.introing
341
- .sidebar-intro-modal
342
- @apply block
343
-
344
- .sidebar-wrapper
345
- @apply pointer-events-none
346
-
347
- &-modal
348
- @apply fixed top-0 left-0 w-full h-full bg-white opacity-0
349
- @apply s('lg:hidden')
350
-
351
- &-intro-modal
352
- @apply fixed top-0 left-0 w-full h-full s('bg-mask/80') hidden
353
-
354
- &-wrapper
355
- @apply relative flex flex-col s('w-[188px]') h-full bg-white rounded-r-lg shadow transition-all
356
-
357
- &-logo
358
- @apply flex-grow-0 flex-shrink-0 relative flex justify-center py-4 pr-11 pl-6 transition-all
359
-
360
- .logo
361
- @apply block
362
-
363
- img.white-big, img.white-small, img.color-small
364
- @apply hidden
365
-
366
- nav.site-nav
367
- @apply flex-grow px-1 overflow-hidden
368
-
369
- .nav-wrapper
370
- @apply flex flex-col h-full px-3
371
-
372
- .sidebar-nav-divide-item
373
- @apply w-full h-px my-2 bg-primary-200
276
+ .sidebar.dark.closure .sidebar-toggle:hover {
277
+ @apply bg-primary-600;
278
+ }
374
279
 
375
- .sidebar-mode-setting
376
- @apply flex-grow-0 flex-shrink-0 flex items-center justify-start my-4 pl-4 space-x-2 text-xs text-primary
280
+ .sidebar.dark .sidebar-logo .logo img.color-big {
281
+ @apply hidden;
282
+ }
377
283
 
378
- &-title
379
- @apply flex-grow-0 flex-shrink-0
284
+ .sidebar.dark .sidebar-logo .logo img.white-big {
285
+ @apply block;
286
+ }
380
287
 
381
- .ios-switch
382
- @apply flex-grow-0 flex-shrink-0
288
+ .sidebar.dark nav .nav-wrapper.custom-scrollbar-y::-webkit-scrollbar-thumb {
289
+ @apply bg-primary-600;
290
+ }
383
291
 
384
- label
385
- @apply border-primary-100 bg-primary-25
292
+ .sidebar.dark
293
+ nav
294
+ .nav-wrapper.custom-scrollbar-y::-webkit-scrollbar-thumb:hover {
295
+ @apply bg-primary-600;
296
+ }
386
297
 
387
- &:before
388
- @apply border-primary-100
298
+ .sidebar.dark .sidebar-mode-setting {
299
+ @apply text-white;
300
+ }
389
301
 
390
- &-toggle
391
- @apply absolute top-0 right-0 flex justify-center items-center w-5 h-10 s('mt-2.5') bg-primary-50 rounded-l-xl text-sm text-primary-500 leading-none transition-all
302
+ .sidebar.dark .sidebar-mode-setting .ios-switch label {
303
+ @apply bg-nav-color-switch-bg border-primary-600;
304
+ }
392
305
 
393
- &:hover
394
- @apply bg-primary-300 text-white
306
+ .sidebar.dark .sidebar-mode-setting .ios-switch label::before {
307
+ @apply border-primary-600 bg-primary-300;
308
+ }
395
309
 
396
- .icon-chevron-right
397
- @apply hidden
310
+ .sidebar.dark .sidebar-toggle {
311
+ @apply bg-primary-900 text-white;
312
+ }
398
313
 
399
- &-nav-intro
400
- @apply s('w-[288px]') p-4 bg-white rounded-lg hidden
314
+ .sidebar.dark .sidebar-toggle:hover {
315
+ @apply bg-primary-600;
316
+ }
401
317
 
402
- &[data-show]
403
- @apply block
318
+ .sidebar.closure .sidebar-modal {
319
+ @apply hidden;
320
+ }
404
321
 
405
- &[data-popper-placement^='right'] > &-arrow
406
- @apply s('-left-3.75') s('top-4')
322
+ .sidebar.closure .sidebar-wrapper {
323
+ @apply -ml-[188px] lg:ml-0 lg:w-[84px];
324
+ }
407
325
 
408
- &-header
409
- @apply mb-2 text-base font-bold text-primary
326
+ .sidebar.closure .sidebar-logo {
327
+ @apply lg:py-3 lg:px-0;
328
+ }
410
329
 
411
- &-body
412
- @apply mb-4 text-base text-pgray-2 whitespace-pre-line
330
+ .sidebar.closure .sidebar-logo .logo img.color-big {
331
+ @apply lg:hidden;
332
+ }
413
333
 
414
- &-footer
415
- @apply text-right
334
+ .sidebar.closure .sidebar-logo .logo img.color-small {
335
+ @apply lg:block;
336
+ }
416
337
 
417
- &-arrow, &-arrow:before
418
- @apply absolute s('w-[17px]') s('h-[20px]') bg-contain
419
- background url('~/assets/images/commons/nav-intro-arrow.svg') top left no-repeat
338
+ .sidebar.closure .sidebar-toggle {
339
+ @apply -mr-5 bg-primary-300 rounded-l-none rounded-r-xl text-white;
340
+ }
420
341
 
421
- &-arrow
422
- @apply invisible
342
+ .sidebar.closure .sidebar-toggle:hover {
343
+ @apply bg-primary-400 text-white;
344
+ }
423
345
 
424
- &:before
425
- content ''
426
- @apply visible
427
- </style>
346
+ .sidebar.closure .sidebar-toggle .icon-chevron-left {
347
+ @apply hidden;
348
+ }
349
+
350
+ .sidebar.closure .sidebar-toggle .icon-chevron-right {
351
+ @apply inline-block;
352
+ }
353
+
354
+ .sidebar.closure nav.site-nav .nav-wrapper {
355
+ @apply lg:items-center;
356
+ }
357
+
358
+ .sidebar.closure .sidebar-mode-setting {
359
+ @apply p-0 justify-center space-x-0;
360
+ }
361
+
362
+ .sidebar.closure .sidebar-mode-setting-title {
363
+ @apply hidden;
364
+ }
365
+
366
+ .sidebar.closure .sidebar-mode-setting .ios-switch {
367
+ @apply grow-0 shrink-0;
368
+ }
369
+
370
+ .sidebar.introing .sidebar-intro-modal {
371
+ @apply block;
372
+ }
373
+
374
+ .sidebar.introing .sidebar-wrapper {
375
+ @apply pointer-events-none;
376
+ }
377
+
378
+ .sidebar-modal {
379
+ @apply fixed top-0 left-0 w-full h-full bg-white opacity-0 lg:hidden;
380
+ }
381
+
382
+ .sidebar-intro-modal {
383
+ @apply fixed top-0 left-0 w-full h-full bg-mask/80 hidden;
384
+ }
385
+
386
+ .sidebar-wrapper {
387
+ @apply relative flex flex-col w-[188px] h-full bg-white rounded-r-lg shadow-default transition-all;
388
+ }
389
+
390
+ .sidebar-logo {
391
+ @apply grow-0 shrink-0 relative flex justify-center py-4 pr-11 pl-6 transition-all;
392
+ }
393
+
394
+ .sidebar-logo .logo {
395
+ @apply block;
396
+ }
397
+
398
+ .sidebar-logo .logo img.white-big,
399
+ .sidebar-logo .logo img.white-small,
400
+ .sidebar-logo .logo img.color-small {
401
+ @apply hidden;
402
+ }
403
+
404
+ .sidebar nav.site-nav {
405
+ @apply grow px-1 overflow-hidden;
406
+ }
407
+
408
+ .sidebar nav.site-nav .nav-wrapper {
409
+ @apply flex flex-col h-full px-3;
410
+ }
411
+
412
+ .sidebar nav.site-nav .nav-wrapper .sidebar-nav-divide-item {
413
+ @apply w-full h-px my-2 bg-primary-200;
414
+ }
415
+
416
+ .sidebar .sidebar-mode-setting {
417
+ @apply grow-0 shrink-0 flex items-center justify-start my-4 pl-4 space-x-2 text-xs text-primary;
418
+ }
419
+
420
+ .sidebar .sidebar-mode-setting-title {
421
+ @apply grow-0 shrink-0;
422
+ }
423
+
424
+ .sidebar .sidebar-mode-setting .ios-switch {
425
+ @apply grow-0 shrink-0;
426
+ }
427
+
428
+ .sidebar .sidebar-mode-setting .ios-switch label {
429
+ @apply border-primary-100 bg-primary-25;
430
+ }
431
+
432
+ .sidebar .sidebar-mode-setting .ios-switch label::before {
433
+ @apply border-primary-100;
434
+ }
435
+
436
+ .sidebar-toggle {
437
+ @apply absolute top-0 right-0 flex justify-center items-center w-5 h-10 mt-2.5 bg-primary-50 rounded-l-xl text-sm text-primary-500 leading-none transition-all;
438
+ }
439
+
440
+ .sidebar-toggle:hover {
441
+ @apply bg-primary-300 text-white;
442
+ }
443
+
444
+ .sidebar-toggle .icon-chevron-right {
445
+ @apply hidden;
446
+ }
447
+
448
+ .sidebar-nav-intro {
449
+ @apply w-[288px] p-4 bg-white rounded-lg hidden;
450
+ }
451
+
452
+ .sidebar-nav-intro[data-show] {
453
+ @apply block;
454
+ }
455
+
456
+ .sidebar-nav-intro[data-popper-placement^="right"] > .sidebar-nav-intro-arrow {
457
+ @apply -left-3.75 top-4;
458
+ }
459
+
460
+ .sidebar-nav-intro-header {
461
+ @apply mb-2 text-base font-bold text-primary;
462
+ }
463
+
464
+ .sidebar-nav-intro-body {
465
+ @apply mb-4 text-base text-pgray-2 whitespace-pre-line;
466
+ }
467
+
468
+ .sidebar-nav-intro-footer {
469
+ @apply text-right;
470
+ }
471
+
472
+ .sidebar-nav-intro-arrow,
473
+ .sidebar-nav-intro-arrow::before {
474
+ @apply absolute w-[17px] h-[20px] bg-contain;
475
+ background: url("~ui/app/assets/images/commons/nav-intro-arrow.svg") top left
476
+ no-repeat;
477
+ }
478
+
479
+ .sidebar-nav-intro-arrow {
480
+ @apply invisible;
481
+ }
482
+
483
+ .sidebar-nav-intro-arrow::before {
484
+ content: "";
485
+ @apply visible;
486
+ }
487
+ </style>
@@ -11,10 +11,10 @@
11
11
  </template>
12
12
 
13
13
  <script lang="ts">
14
- import type { NavItemGroup } from '~/interface/NavConfigType';
14
+ import type { NavItemGroup } from "~ui/app/interface/NavConfigType";
15
15
 
16
16
  export default defineComponent({
17
- name: 'SLSidebarNavGroupItem',
17
+ name: "SLSidebarNavGroupItem",
18
18
  props: {
19
19
  navCollapsed: {
20
20
  type: Boolean,
@@ -29,18 +29,21 @@ export default defineComponent({
29
29
  required: true,
30
30
  },
31
31
  },
32
- emits: ['click:item'],
32
+ emits: ["click:item"],
33
33
  setup() {
34
34
  return {};
35
35
  },
36
36
  });
37
37
  </script>
38
38
 
39
- <style lang="stylus">
40
- .sidebar.dark
41
- .sidebar-nav-group-item
42
- @apply bg-primary-900
39
+ <style>
40
+ @reference '~ui/app/assets/css/main.css';
43
41
 
44
- .sidebar-nav-group-item
45
- @apply w-full mt-1 p-2 space-y-1 bg-primary-50 rounded-lg
46
- </style>
42
+ .sidebar.dark .sidebar-nav-group-item {
43
+ @apply bg-primary-900;
44
+ }
45
+
46
+ .sidebar-nav-group-item {
47
+ @apply w-full mt-1 p-2 space-y-1 bg-primary-50 rounded-lg;
48
+ }
49
+ </style>