@mptw/skylens-ui 1.4.109 → 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 (130) 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 +14 -0
  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/{components → app/components}/SLAlertModal.vue +24 -16
  9. package/{components → app/components}/SLBreadcrumbs.vue +12 -8
  10. package/app/components/SLButton.vue +370 -0
  11. package/{components → app/components}/SLCalendarButton.vue +40 -34
  12. package/{components → app/components}/SLCalendarPopup.vue +79 -53
  13. package/{components → app/components}/SLCard.vue +57 -41
  14. package/{components → app/components}/SLChart.vue +6 -3
  15. package/{components → app/components}/SLCheckbox.vue +92 -49
  16. package/{components → app/components}/SLCircleButton.vue +25 -16
  17. package/{components → app/components}/SLCollapsableBlock.vue +44 -33
  18. package/{components → app/components}/SLCollapsableMulitPillSelect.vue +20 -15
  19. package/{components → app/components}/SLConfirmModal.vue +9 -6
  20. package/{components → app/components}/SLContextMenu.vue +88 -48
  21. package/{components → app/components}/SLDateInput.vue +109 -92
  22. package/{components → app/components}/SLDatePicker.vue +9 -7
  23. package/{components → app/components}/SLDistributor.vue +1 -1
  24. package/{components → app/components}/SLDownloadButton.vue +39 -29
  25. package/{components → app/components}/SLDraggable.vue +2 -2
  26. package/{components → app/components}/SLDropdown.vue +33 -25
  27. package/{components → app/components}/SLDropdownItem.vue +9 -5
  28. package/{components → app/components}/SLElementWithTitle.vue +12 -7
  29. package/{components → app/components}/SLEyeCheckbox.vue +44 -31
  30. package/{components → app/components}/SLFileInput.vue +23 -16
  31. package/{components → app/components}/SLGenderAgeSelect.vue +52 -36
  32. package/{components → app/components}/SLHourRangeInput.vue +45 -32
  33. package/{components → app/components}/SLIOSSwitch.vue +81 -60
  34. package/{components → app/components}/SLIcon.vue +4 -3
  35. package/{components → app/components}/SLIconButton.vue +31 -29
  36. package/{components → app/components}/SLInfoTip.vue +51 -40
  37. package/{components → app/components}/SLInsightSitePage.vue +12 -7
  38. package/{components → app/components}/SLLegend.vue +19 -12
  39. package/app/components/SLLinearProgressBar.vue +22 -0
  40. package/{components → app/components}/SLLink.vue +12 -8
  41. package/{components → app/components}/SLLoading.vue +34 -31
  42. package/{components → app/components}/SLMapChart.vue +5 -4
  43. package/{components → app/components}/SLModal.vue +90 -66
  44. package/{components → app/components}/SLMonthCalendarButton.vue +91 -45
  45. package/{components → app/components}/SLMonthPicker.vue +42 -37
  46. package/{components → app/components}/SLMultiEmailInput.vue +163 -113
  47. package/{components → app/components}/SLMultiSelect.vue +37 -26
  48. package/{components → app/components}/SLNoData.vue +16 -11
  49. package/app/components/SLNotification.vue +155 -0
  50. package/{components → app/components}/SLPageModal.vue +14 -9
  51. package/{components → app/components}/SLPagination.vue +45 -33
  52. package/{components → app/components}/SLPillCheckbox.vue +50 -42
  53. package/{components → app/components}/SLPillLabel.vue +43 -28
  54. package/{components → app/components}/SLPopupMenuButton.vue +26 -17
  55. package/{components → app/components}/SLProfileButton.vue +28 -20
  56. package/{components → app/components}/SLProjectShareItem.vue +30 -17
  57. package/{components → app/components}/SLRadioButton.vue +41 -33
  58. package/{components → app/components}/SLRadioButtonGroup.vue +28 -23
  59. package/app/components/SLRadioGroup.vue +221 -0
  60. package/{components → app/components}/SLRangeInput.vue +53 -38
  61. package/{components → app/components}/SLRegionsMapChart.vue +5 -4
  62. package/{components → app/components}/SLRightSider.vue +50 -40
  63. package/{components → app/components}/SLSearchInput.vue +24 -19
  64. package/{components → app/components}/SLSelect.vue +114 -87
  65. package/{components → app/components}/SLSelectAllToggle.vue +52 -37
  66. package/app/components/SLSidebarNav.vue +487 -0
  67. package/{components → app/components}/SLSidebarNavGroupItem.vue +13 -10
  68. package/{components → app/components}/SLSidebarNavGroupItemSection.vue +240 -179
  69. package/{components → app/components}/SLSidebarNavLinkItem.vue +131 -109
  70. package/{components → app/components}/SLSidebarNavSectionItem.vue +21 -18
  71. package/{components → app/components}/SLSitePage.vue +35 -24
  72. package/{components → app/components}/SLSkyInsightSitePage.vue +13 -8
  73. package/{components → app/components}/SLSortByDropdown.vue +35 -22
  74. package/{components → app/components}/SLSpinIcon.vue +6 -3
  75. package/{components → app/components}/SLStayRangeInput.vue +47 -36
  76. package/{components → app/components}/SLTab.vue +7 -2
  77. package/app/components/SLTable.vue +472 -0
  78. package/{components → app/components}/SLTableTooltip.vue +44 -30
  79. package/app/components/SLTabs.vue +528 -0
  80. package/{components → app/components}/SLTextInput.vue +162 -134
  81. package/{components → app/components}/SLTextarea.vue +40 -29
  82. package/{components → app/components}/SLToast.vue +19 -11
  83. package/{components → app/components}/SLToggleButton.vue +18 -11
  84. package/{components → app/components}/SLTwoLayerMultiSelect.vue +180 -85
  85. package/{components → app/components}/SLTwoLayerSelect.vue +47 -37
  86. package/{components → app/components}/SLTwoLayerSingleSelect.vue +52 -33
  87. package/{components → app/components}/SLWarnModal.vue +9 -7
  88. package/app/interface/commons.ts +7 -0
  89. package/{utils → app/utils}/index.ts +213 -146
  90. package/eslint.config.js +3 -0
  91. package/nuxt.config.ts +17 -14
  92. package/package.json +10 -9
  93. package/skills-lock.json +59 -0
  94. package/tsconfig.json +1 -6
  95. package/.eslintrc.cjs +0 -4
  96. package/app.config.ts +0 -5
  97. package/assets/css/layout.styl +0 -98
  98. package/assets/css/tailwind.css +0 -3
  99. package/components/SLButton.vue +0 -337
  100. package/components/SLLinearProgressBar.vue +0 -35
  101. package/components/SLNotification.vue +0 -151
  102. package/components/SLRadioGroup.vue +0 -209
  103. package/components/SLSidebarNav.vue +0 -427
  104. package/components/SLTable.vue +0 -455
  105. package/components/SLTabs.vue +0 -475
  106. package/interface/commons.ts +0 -7
  107. package/pages/index.vue +0 -15
  108. package/tailwind.config.js +0 -271
  109. /package/{assets → app/assets}/css/fonts/MEShPlus-font-icon.eot +0 -0
  110. /package/{assets → app/assets}/css/fonts/MEShPlus-font-icon.svg +0 -0
  111. /package/{assets → app/assets}/css/fonts/MEShPlus-font-icon.ttf +0 -0
  112. /package/{assets → app/assets}/css/fonts/MEShPlus-font-icon.woff +0 -0
  113. /package/{assets → app/assets}/css/icons.css +0 -0
  114. /package/{assets → app/assets}/images/commons/app-logo-white.png +0 -0
  115. /package/{assets → app/assets}/images/commons/app-logo.png +0 -0
  116. /package/{assets → app/assets}/images/commons/empty-box.png +0 -0
  117. /package/{interface → app/interface}/IDateRange.ts +0 -0
  118. /package/{interface → app/interface}/IHourRange.ts +0 -0
  119. /package/{interface → app/interface}/IInputOption.ts +0 -0
  120. /package/{interface → app/interface}/ILegendItem.ts +0 -0
  121. /package/{interface → app/interface}/IOrganization.ts +0 -0
  122. /package/{interface → app/interface}/IPopupMenuButton.ts +0 -0
  123. /package/{interface → app/interface}/IStayRange.ts +0 -0
  124. /package/{interface → app/interface}/ITableField.ts +0 -0
  125. /package/{interface → app/interface}/IWeb.ts +0 -0
  126. /package/{interface → app/interface}/NavConfigType.ts +0 -0
  127. /package/{models → app/models}/DateRange.ts +0 -0
  128. /package/{plugins → app/plugins}/v-calendar.ts +0 -0
  129. /package/{utils → app/utils}/constants.ts +0 -0
  130. /package/{utils → app/utils}/generateSheet.ts +0 -0
@@ -0,0 +1,528 @@
1
+ <template lang="pug">
2
+ .tabs(:class='tabsClass')
3
+ .tabs-nav(
4
+ v-show="!tabItemsOversize"
5
+ :class="{ show: !tabItemsOversize }"
6
+ )
7
+ .tabs-nav-left(ref='tabsNavLeftEl')
8
+ SLDistributor(
9
+ tag='ul',
10
+ :header='true',
11
+ :changeTabTo='changeTabTo',
12
+ ref='navComp'
13
+ )
14
+ slot
15
+ .tabs-nav-right(v-if='(type === 1 || type === 5) && $slots["tabs-nav-right"]')
16
+ slot(name='tabs-nav-right')
17
+ .tabs-content
18
+ SLDistributor
19
+ .tabs-content-header(v-show="tabItemsOversize")
20
+ .tabs-content-header-left
21
+ SLDropdown.tabs-dropdown(
22
+ :title='currentTab',
23
+ v-model:showDropdown='showDropdown',
24
+ :class='{ active: showDropdown }',
25
+ )
26
+ SLDropdownItem(
27
+ v-for='(tabTitle, i) in tabTitles',
28
+ :title='tabTitle',
29
+ :class='{ active: i === activeTabIndex }',
30
+ @click='onClickedTab(i)',
31
+ :key='`${tabTitle}-${i}`'
32
+ )
33
+ .tabs-content-header-right(v-if='$slots["tabs-nav-right"]')
34
+ slot(name='tabs-nav-right')
35
+ .tabs-content-body(ref='tabsContentBody')
36
+ slot
37
+ </template>
38
+
39
+ <script lang="ts">
40
+ import { fromEvent, interval, Subscription } from "rxjs";
41
+ import { debounce, startWith } from "rxjs/operators";
42
+ import { SLDistributor } from "#components";
43
+
44
+ type SLDistributorType = InstanceType<typeof SLDistributor>;
45
+
46
+ export default defineComponent({
47
+ name: "SLTabs",
48
+ components: {},
49
+ props: {
50
+ size: {
51
+ type: String,
52
+ default: "",
53
+ validator: (value: string) => ["", "xs", "sm"].includes(value),
54
+ },
55
+ navMode: {
56
+ type: String,
57
+ default: "",
58
+ },
59
+ type: {
60
+ type: Number,
61
+ default: 1,
62
+ validator: (value: number) => [1, 2, 3, 4, 5, 6].includes(value),
63
+ },
64
+ activeTab: {
65
+ type: Number,
66
+ default: 0,
67
+ },
68
+ },
69
+ emits: ["update:activeTab"],
70
+ setup(props, { emit }) {
71
+ const { activeTab, size, type, navMode } = toRefs(props);
72
+
73
+ const tabsContentBody = shallowRef<HTMLElement | null>(null);
74
+ const tabsNavLeftEl = shallowRef<HTMLElement | null>(null);
75
+ const navComp = shallowRef<SLDistributorType | null>(null);
76
+ const tabTitles = ref<Array<string>>([]);
77
+ const showDropdown = ref(false);
78
+ const tabItemsOversizeProxy = ref(false);
79
+
80
+ let observer: MutationObserver | null = null;
81
+ let resizeSubscriber: Subscription | null = null;
82
+
83
+ const activeTabIndex = computed(() => activeTab.value || 0);
84
+ const tabsClass = computed(() => {
85
+ const classes: Array<string> = [`tabs-type-${type.value}`];
86
+
87
+ if (size.value !== "") {
88
+ classes.push(`tabs-${size.value}`);
89
+ }
90
+
91
+ return classes.join(" ");
92
+ });
93
+ const currentTab = computed(() => {
94
+ return tabTitles.value[activeTabIndex.value];
95
+ });
96
+ const tabItemsOversize = computed({
97
+ get: () => {
98
+ return (
99
+ type.value !== 4 &&
100
+ (tabItemsOversizeProxy.value || navMode.value === "dropdown")
101
+ );
102
+ },
103
+ set: (newValue: boolean) => {
104
+ tabItemsOversizeProxy.value = newValue;
105
+ },
106
+ });
107
+
108
+ provide("activeTab", readonly(activeTabIndex));
109
+ provide("initialTab", readonly(activeTab));
110
+
111
+ function caculateTabs() {
112
+ nextTick(() => {
113
+ const tabLinks =
114
+ navComp.value?.$el.querySelectorAll(".tab-nav-item-link");
115
+ const tabLinkTitles = [];
116
+ if (tabLinks) {
117
+ for (let i = 0; i < tabLinks.length; i += 1) {
118
+ tabLinkTitles.push((tabLinks[i] as HTMLElement).innerText);
119
+ }
120
+ }
121
+ tabTitles.value = tabLinkTitles;
122
+
123
+ const tabsNavLeftRect = tabsNavLeftEl.value?.getBoundingClientRect();
124
+ const navRect = navComp.value?.$el?.getBoundingClientRect();
125
+
126
+ if (tabsNavLeftRect && navRect) {
127
+ tabItemsOversizeProxy.value = navRect.width > tabsNavLeftRect.width;
128
+ }
129
+ });
130
+ }
131
+
132
+ function changeTabTo(newTab: number) {
133
+ emit("update:activeTab", newTab);
134
+ }
135
+
136
+ function onClickedTab(i: number) {
137
+ changeTabTo(i);
138
+ }
139
+
140
+ onMounted(() => {
141
+ resizeSubscriber = fromEvent(window, "resize")
142
+ .pipe(debounce(() => interval(500)))
143
+ .pipe(startWith(0))
144
+ .subscribe(() => {
145
+ caculateTabs();
146
+ });
147
+
148
+ if (navComp.value) {
149
+ observer = new MutationObserver(caculateTabs);
150
+ observer.observe(navComp.value.$el, {
151
+ characterData: true,
152
+ attributes: false,
153
+ childList: true,
154
+ subtree: true,
155
+ });
156
+ }
157
+ });
158
+
159
+ onBeforeUnmount(() => {
160
+ if (resizeSubscriber) {
161
+ resizeSubscriber.unsubscribe();
162
+ }
163
+ if (observer) {
164
+ observer.disconnect();
165
+ }
166
+ resizeSubscriber = null;
167
+ observer = null;
168
+ });
169
+
170
+ return {
171
+ tabsContentBody,
172
+ tabsNavLeftEl,
173
+ navComp,
174
+ activeTabIndex,
175
+ tabTitles,
176
+ showDropdown,
177
+ tabItemsOversize,
178
+ tabsClass,
179
+ currentTab,
180
+ changeTabTo,
181
+ onClickedTab,
182
+ };
183
+ },
184
+ });
185
+ </script>
186
+
187
+ <style>
188
+ @reference '~ui/app/assets/css/main.css';
189
+
190
+ .tabs.tabs-sm.tabs-type-1 > .tabs-nav ul .tab-nav-item-link {
191
+ @apply text-sm;
192
+ }
193
+
194
+ .tabs.tabs-xs.tabs-type-1 > .tabs-nav ul .tab-nav-item.active::before {
195
+ @apply hidden;
196
+ }
197
+
198
+ .tabs.tabs-xs.tabs-type-1 > .tabs-nav ul .tab-nav-item-link {
199
+ @apply py-0.75 text-base;
200
+ }
201
+
202
+ .tabs.tabs-type-1 > .tabs-nav {
203
+ @apply flex items-start justify-between h-0 space-x-8 overflow-hidden lg:space-x-30;
204
+ }
205
+
206
+ .tabs.tabs-type-1 > .tabs-nav.show {
207
+ @apply h-auto -mb-1.5;
208
+ }
209
+
210
+ .tabs.tabs-type-1 > .tabs-nav .tabs-nav-left {
211
+ @apply grow overflow-hidden;
212
+ }
213
+
214
+ .tabs.tabs-type-1 > .tabs-nav .tabs-nav-right {
215
+ @apply grow-0 shrink-0;
216
+ }
217
+
218
+ .tabs.tabs-type-1 > .tabs-nav ul {
219
+ @apply inline-flex items-start -space-x-px;
220
+ }
221
+
222
+ .tabs.tabs-type-1 > .tabs-nav ul .tab-nav-item {
223
+ @apply relative rounded-t bg-white;
224
+ }
225
+
226
+ .tabs.tabs-type-1
227
+ > .tabs-nav
228
+ ul
229
+ .tab-nav-item:first-child
230
+ .tab-nav-item-link::after {
231
+ content: "";
232
+ @apply absolute bottom-0 left-0 w-px h-3 -mb-3 -ml-px bg-primary-600;
233
+ }
234
+
235
+ .tabs.tabs-type-1 > .tabs-nav ul .tab-nav-item.active {
236
+ @apply pb-1.75;
237
+ }
238
+
239
+ .tabs.tabs-type-1 > .tabs-nav ul .tab-nav-item.active::before {
240
+ content: "";
241
+ @apply block absolute top-0.5 right-0.75 left-0.75 h-1 bg-highlight-400;
242
+ }
243
+
244
+ .tabs.tabs-type-1 > .tabs-nav ul .tab-nav-item.active .tab-nav-item-link {
245
+ @apply text-primary cursor-default;
246
+ }
247
+
248
+ .tabs.tabs-type-1 > .tabs-nav ul .tab-nav-item-link {
249
+ @apply relative block py-1.75 px-3.75 border-t border-r border-l border-primary-600 rounded-t text-lg text-primary-600;
250
+ }
251
+
252
+ .tabs.tabs-type-1 > .tabs-nav ul .tab-nav-item-link-title {
253
+ @apply truncate;
254
+ }
255
+
256
+ .tabs.tabs-type-1 > .tabs-nav ul .tab-pane {
257
+ @apply space-y-8;
258
+ }
259
+
260
+ .tabs.tabs-type-1 > .tabs-content {
261
+ @apply p-4 border border-primary-600 rounded-lg bg-white overflow-hidden;
262
+ }
263
+
264
+ .tabs.tabs-type-1 > .tabs-content .tabs-content-header {
265
+ @apply flex items-start justify-between mb-4;
266
+ }
267
+
268
+ .tabs.tabs-type-2 > .tabs-nav {
269
+ @apply mb-0;
270
+ }
271
+
272
+ .tabs.tabs-type-2 > .tabs-nav ul {
273
+ @apply flex px-8 pb-5 space-x-8 lg:px-6 lg:space-x-14;
274
+ }
275
+
276
+ .tabs.tabs-type-2 > .tabs-nav ul .tab-nav-item {
277
+ @apply relative grow py-6 rounded bg-primary-100 text-lg text-primary-600 text-center lg:py-5.5;
278
+ }
279
+
280
+ .tabs.tabs-type-2 > .tabs-nav ul .tab-nav-item::before {
281
+ content: "";
282
+ @apply absolute top-0.5 left-0.5 block rounded bg-white;
283
+ width: calc(100% - var(--spacing));
284
+ height: calc(100% - var(--spacing));
285
+ }
286
+
287
+ .tabs.tabs-type-2 > .tabs-nav ul .tab-nav-item::after {
288
+ content: "";
289
+ @apply absolute left-0 bottom-0 -ml-4 -mb-5 block w-full h-3 rounded-t bg-primary-300 opacity-0;
290
+ width: calc(100% + var(--spacing) * 4 * 2);
291
+ }
292
+
293
+ .tabs.tabs-type-2 > .tabs-nav ul .tab-nav-item.active {
294
+ @apply text-primary font-bold;
295
+ }
296
+
297
+ .tabs.tabs-type-2 > .tabs-nav ul .tab-nav-item.active::after {
298
+ @apply opacity-100;
299
+ }
300
+
301
+ .tabs.tabs-type-2 > .tabs-nav ul .tab-nav-item.active:nth-child(odd) {
302
+ @apply bg-transparent bg-linear-to-r from-insight-web-title-start to-insight-web-title-end;
303
+ }
304
+
305
+ .tabs.tabs-type-2 > .tabs-nav ul .tab-nav-item.active:nth-child(odd)::after {
306
+ @apply bg-transparent bg-linear-to-r from-insight-web-title-start to-insight-web-title-end;
307
+ }
308
+
309
+ .tabs.tabs-type-2 > .tabs-nav ul .tab-nav-item.active:nth-child(even) {
310
+ @apply bg-transparent bg-linear-to-r from-insight-poi-title-start to-insight-poi-title-end;
311
+ }
312
+
313
+ .tabs.tabs-type-2 > .tabs-nav ul .tab-nav-item.active:nth-child(even)::after {
314
+ @apply bg-transparent bg-linear-to-r from-insight-poi-title-start to-insight-poi-title-end;
315
+ }
316
+
317
+ .tabs.tabs-type-2 > .tabs-nav ul .tab-nav-item.active .tab-nav-item-link {
318
+ @apply cursor-default;
319
+ }
320
+
321
+ .tabs.tabs-type-2 > .tabs-nav ul .tab-nav-item-link {
322
+ @apply relative;
323
+ }
324
+
325
+ .tabs.tabs-type-3 > .tabs-nav {
326
+ @apply flex items-start justify-between h-0 space-x-8 overflow-hidden lg:space-x-30;
327
+ }
328
+
329
+ .tabs.tabs-type-3 > .tabs-nav.show {
330
+ @apply h-auto mb-1;
331
+ }
332
+
333
+ .tabs.tabs-type-3 > .tabs-nav .tabs-nav-left {
334
+ @apply grow overflow-hidden;
335
+ }
336
+
337
+ .tabs.tabs-type-3 > .tabs-nav .tabs-nav-right {
338
+ @apply grow-0 shrink-0;
339
+ }
340
+
341
+ .tabs.tabs-type-3 > .tabs-nav ul {
342
+ @apply inline-flex items-start space-x-2;
343
+ }
344
+
345
+ .tabs.tabs-type-3 > .tabs-nav ul .tab-nav-item {
346
+ @apply relative rounded-t bg-primary-100;
347
+ }
348
+
349
+ .tabs.tabs-type-3 > .tabs-nav ul .tab-nav-item.active {
350
+ @apply bg-primary;
351
+ }
352
+
353
+ .tabs.tabs-type-3 > .tabs-nav ul .tab-nav-item.active .tab-nav-item-link {
354
+ @apply text-white cursor-default;
355
+ }
356
+
357
+ .tabs.tabs-type-3 > .tabs-nav ul .tab-nav-item-link {
358
+ @apply relative block py-2 px-8 rounded-t text-base text-primary;
359
+ }
360
+
361
+ .tabs.tabs-type-3 > .tabs-nav ul .tab-nav-item-link-title {
362
+ @apply truncate;
363
+ }
364
+
365
+ .tabs.tabs-type-3 > .tabs-nav ul .tab-pane {
366
+ @apply space-y-8;
367
+ }
368
+
369
+ .tabs.tabs-type-3 > .tabs-content {
370
+ @apply p-6 rounded-tr-lg rounded-b-lg bg-white shadow-default overflow-hidden;
371
+ }
372
+
373
+ .tabs.tabs-type-3 > .tabs-content .tabs-content-header {
374
+ @apply flex items-start justify-between;
375
+ }
376
+
377
+ .tabs.tabs-type-3 > .tabs-content .tabs-dropdown {
378
+ @apply mb-4;
379
+ }
380
+
381
+ .tabs.tabs-type-4 {
382
+ @apply flex;
383
+ }
384
+
385
+ .tabs.tabs-type-4 > .tabs-nav {
386
+ @apply grow-0 shrink-0;
387
+ }
388
+
389
+ .tabs.tabs-type-4 > .tabs-nav .tabs-nav-left ul {
390
+ @apply flex flex-col space-y-0.5;
391
+ }
392
+
393
+ .tabs.tabs-type-4 > .tabs-nav .tabs-nav-left ul .tab-nav-item {
394
+ @apply flex justify-between w-[184px] py-3 pl-3 pr-5 bg-primary-50 rounded-l-lg text-xs;
395
+ }
396
+
397
+ .tabs.tabs-type-4 > .tabs-nav .tabs-nav-left ul .tab-nav-item.active {
398
+ @apply bg-primary-600 text-white font-bold shadow-md;
399
+ }
400
+
401
+ .tabs.tabs-type-4 > .tabs-nav .tabs-nav-left ul .tab-nav-item-link {
402
+ @apply block w-full;
403
+ }
404
+
405
+ .tabs.tabs-type-4 .tabs-content {
406
+ @apply grow -ml-2 p-4 bg-white border border-primary-600 rounded-lg shadow-md;
407
+ }
408
+
409
+ .tabs.tabs-type-4 .tabs-content > div {
410
+ @apply flex min-h-full;
411
+ }
412
+
413
+ .tabs.tabs-type-4 .tabs-content > div .tabs-content-body {
414
+ @apply w-full;
415
+ }
416
+
417
+ .tabs.tabs-type-5 > .tabs-nav {
418
+ @apply flex items-start justify-between h-0 mb-4 space-x-8 overflow-hidden lg:space-x-30;
419
+ }
420
+
421
+ .tabs.tabs-type-5 > .tabs-nav.show {
422
+ @apply h-auto;
423
+ }
424
+
425
+ .tabs.tabs-type-5 > .tabs-nav.show .tabs-nav-left::before {
426
+ content: "";
427
+ @apply absolute right-0 bottom-0 left-0 h-px rounded-[1px] bg-primary-300;
428
+ }
429
+
430
+ .tabs.tabs-type-5 > .tabs-nav .tabs-nav-left {
431
+ @apply relative grow overflow-hidden;
432
+ }
433
+
434
+ .tabs.tabs-type-5 > .tabs-nav .tabs-nav-right {
435
+ @apply grow-0 shrink-0;
436
+ }
437
+
438
+ .tabs.tabs-type-5 > .tabs-nav ul {
439
+ @apply inline-flex items-start;
440
+ }
441
+
442
+ .tabs.tabs-type-5 > .tabs-nav ul .tab-nav-item {
443
+ @apply relative;
444
+ }
445
+
446
+ .tabs.tabs-type-5 > .tabs-nav ul .tab-nav-item.active::after {
447
+ content: "";
448
+ @apply block absolute right-0 bottom-0 left-0 h-1 rounded-[1px] bg-primary;
449
+ }
450
+
451
+ .tabs.tabs-type-5 > .tabs-nav ul .tab-nav-item.active .tab-nav-item-link {
452
+ @apply cursor-default;
453
+ }
454
+
455
+ .tabs.tabs-type-5 > .tabs-nav ul .tab-nav-item.disabled .tab-nav-item-link {
456
+ @apply text-pgray-4 cursor-default;
457
+ }
458
+
459
+ .tabs.tabs-type-5 > .tabs-nav ul .tab-nav-item-link {
460
+ @apply relative block px-4 pb-2 text-lg text-pgray-2;
461
+ }
462
+
463
+ .tabs.tabs-type-5 > .tabs-nav ul .tab-nav-item-link-title {
464
+ @apply truncate;
465
+ }
466
+
467
+ .tabs.tabs-type-5 > .tabs-nav ul .tab-pane {
468
+ @apply space-y-8;
469
+ }
470
+
471
+ .tabs.tabs-type-6 > .tabs-nav {
472
+ @apply flex items-start justify-between h-0 mb-6 space-x-8 overflow-hidden lg:space-x-30;
473
+ }
474
+
475
+ .tabs.tabs-type-6 > .tabs-nav.show {
476
+ @apply h-auto;
477
+ }
478
+
479
+ .tabs.tabs-type-6 > .tabs-nav.show .tabs-nav-left::before {
480
+ content: "";
481
+ @apply absolute right-0 bottom-0 left-0 h-1 bg-pgray-5;
482
+ }
483
+
484
+ .tabs.tabs-type-6 > .tabs-nav .tabs-nav-left {
485
+ @apply relative grow-0 shrink-0;
486
+ }
487
+
488
+ .tabs.tabs-type-6 > .tabs-nav .tabs-nav-right {
489
+ @apply grow-0 shrink-0;
490
+ }
491
+
492
+ .tabs.tabs-type-6 > .tabs-nav ul {
493
+ @apply inline-flex items-start;
494
+ }
495
+
496
+ .tabs.tabs-type-6 > .tabs-nav ul .tab-nav-item {
497
+ @apply relative;
498
+ }
499
+
500
+ .tabs.tabs-type-6 > .tabs-nav ul .tab-nav-item.active::after {
501
+ content: "";
502
+ @apply block absolute right-0 bottom-0 left-0 h-1 bg-blue-1;
503
+ }
504
+
505
+ .tabs.tabs-type-6 > .tabs-nav ul .tab-nav-item.active .tab-nav-item-link {
506
+ @apply text-blue-1 cursor-default;
507
+ }
508
+
509
+ .tabs.tabs-type-6 > .tabs-nav ul .tab-nav-item.disabled .tab-nav-item-link {
510
+ @apply text-pgray-4 cursor-default;
511
+ }
512
+
513
+ .tabs.tabs-type-6 > .tabs-nav ul .tab-nav-item-link {
514
+ @apply relative block pt-1 px-6 pb-2 text-base text-secondary-500;
515
+ }
516
+
517
+ .tabs.tabs-type-6 > .tabs-nav ul .tab-nav-item-link-title {
518
+ @apply truncate;
519
+ }
520
+
521
+ .tabs.tabs-type-6 > .tabs-nav ul .tab-pane {
522
+ @apply space-y-8;
523
+ }
524
+
525
+ .tabs > .tabs-content .tabs > .tabs-content {
526
+ @apply shadow-md;
527
+ }
528
+ </style>