@appscode/design-system 1.1.0-alpha.9 → 1.1.0-beta.11

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 (200) hide show
  1. package/base/_video-player.scss +65 -0
  2. package/base/utilities/_all.scss +6 -5
  3. package/base/utilities/_colors.scss +408 -0
  4. package/base/utilities/_customize-bulma.scss +23 -27
  5. package/base/utilities/_extended.scss +3 -2
  6. package/base/utilities/{_default.scss → _global.scss} +185 -331
  7. package/base/utilities/_layouts.scss +157 -0
  8. package/base/utilities/_mixin.scss +11 -11
  9. package/base/utilities/_spacing.scss +96 -0
  10. package/base/utilities/_typography.scss +56 -24
  11. package/base/utilities/dark-theme.scss +1 -1
  12. package/components/_ac-accordion.scss +117 -117
  13. package/components/_ac-alert-box.scss +205 -263
  14. package/components/_ac-calendar.scss +4 -4
  15. package/components/_ac-card.scss +0 -597
  16. package/components/_ac-code-highlight.scss +6 -6
  17. package/components/_ac-content-layout.scss +165 -165
  18. package/components/_ac-drag.scss +11 -11
  19. package/components/_ac-input.scss +477 -452
  20. package/components/_ac-modal.scss +212 -212
  21. package/components/_ac-multi-select.scss +780 -751
  22. package/components/_ac-options.scss +122 -123
  23. package/components/_ac-select-box.scss +5 -5
  24. package/components/_ac-table.scss +503 -502
  25. package/components/_ac-tabs.scss +39 -38
  26. package/components/_ac-tags.scss +116 -116
  27. package/components/_ac-terminal.scss +95 -51
  28. package/components/_add-card.scss +3 -3
  29. package/components/_all.scss +29 -26
  30. package/components/_app-drawer.scss +0 -134
  31. package/components/_breadcumb.scss +0 -71
  32. package/components/_buttons.scss +779 -779
  33. package/components/_card-body-wrapper.scss +5 -5
  34. package/components/_dashboard-header.scss +0 -115
  35. package/components/_direct-deploy.scss +8 -8
  36. package/components/_go-to-top.scss +1 -1
  37. package/components/_image-upload.scss +5 -5
  38. package/components/_left-sidebar-menu.scss +448 -579
  39. package/components/_monaco-editor.scss +1 -1
  40. package/components/_navbar.scss +786 -752
  41. package/components/_nested-list.scss +1 -1
  42. package/components/_overview-info.scss +7 -7
  43. package/components/_overview-page.scss +4 -4
  44. package/components/_pagination.scss +106 -124
  45. package/components/_payment-card.scss +21 -21
  46. package/components/_preloader.scss +1 -1
  47. package/components/_preview-modal.scss +18 -18
  48. package/components/_pricing-table.scss +10 -10
  49. package/components/_progress-bar.scss +12 -12
  50. package/components/_subscription-card.scss +14 -14
  51. package/components/_table-of-content.scss +4 -4
  52. package/components/_tfa.scss +9 -9
  53. package/components/_widget-menu.scss +247 -247
  54. package/components/_wizard.scss +557 -559
  55. package/components/ac-toaster/_ac-toasted.scss +7 -12
  56. package/components/bbum/_activities-header.scss +1 -1
  57. package/components/bbum/_card-team.scss +12 -12
  58. package/components/bbum/_information-center.scss +13 -13
  59. package/components/bbum/_left-sidebar.scss +8 -8
  60. package/components/bbum/_mobile-desktop.scss +7 -7
  61. package/components/bbum/_post.scss +5 -5
  62. package/components/bbum/_sign-up-notification.scss +10 -10
  63. package/components/bbum/_single-post-preview.scss +21 -21
  64. package/components/bbum/_user-profile.scss +10 -10
  65. package/components/ui-builder/_ui-builder.scss +15 -15
  66. package/components/ui-builder/_vue-open-api.scss +515 -2
  67. package/layouts/_code-preview.scss +11 -11
  68. package/main.scss +26 -10
  69. package/package.json +1 -1
  70. package/plugins/theme.js +11 -9
  71. package/plugins/vue-toaster.js +1 -1
  72. package/vue-components/plugins/time-convert.js +49 -0
  73. package/vue-components/text.vue +1 -0
  74. package/vue-components/types/cluster.ts +6 -0
  75. package/vue-components/types/importFlow.ts +16 -0
  76. package/vue-components/types/longRunningTasks.ts +20 -0
  77. package/vue-components/types/notification.ts +6 -0
  78. package/vue-components/types/previewYaml.ts +8 -0
  79. package/vue-components/types/table.ts +54 -0
  80. package/vue-components/types/theme.ts +10 -0
  81. package/vue-components/types/user.ts +22 -0
  82. package/vue-components/v2/card/Card.vue +1 -1
  83. package/vue-components/v2/card/OverviewCards.vue +17 -2
  84. package/vue-components/v2/editor/FilteredFileEditor.vue +2 -2
  85. package/vue-components/v2/editor/ResourceKeyValueEditor.vue +21 -21
  86. package/vue-components/v2/icons/Ellipsis.vue +2 -1
  87. package/vue-components/v2/modal/Modal.vue +0 -5
  88. package/vue-components/v2/navbar/Appdrawer.vue +37 -12
  89. package/vue-components/v2/navbar/Navbar.vue +3 -3
  90. package/vue-components/v2/navbar/NavbarItem.vue +3 -1
  91. package/vue-components/v2/navbar/NavbarItemContent.vue +1 -1
  92. package/vue-components/v2/navbar/User.vue +5 -22
  93. package/vue-components/v2/pagination/Pagination.vue +66 -0
  94. package/vue-components/v2/sidebar/SidebarItem.vue +10 -7
  95. package/vue-components/v3/accordion/Accordion.vue +151 -0
  96. package/vue-components/v3/alert/Alert.vue +238 -0
  97. package/vue-components/v3/alert/Toast.vue +79 -0
  98. package/vue-components/v3/banner/Banner.vue +10 -0
  99. package/vue-components/v3/breadcrumbs/Breadcrumb.vue +104 -0
  100. package/vue-components/v3/button/Button.vue +839 -58
  101. package/vue-components/v3/button/Buttons.vue +6 -0
  102. package/vue-components/v3/button/DownloadBtn.vue +31 -0
  103. package/vue-components/v3/cards/Card.vue +32 -0
  104. package/vue-components/v3/cards/CardContent.vue +7 -0
  105. package/vue-components/v3/cards/CardHeader.vue +14 -0
  106. package/vue-components/v3/cards/Cards.vue +7 -0
  107. package/vue-components/v3/cards/Cluster.vue +149 -0
  108. package/vue-components/v3/cards/Counter.vue +39 -0
  109. package/vue-components/v3/cards/FeatureCard.vue +71 -0
  110. package/vue-components/v3/cards/FeatureCards.vue +6 -0
  111. package/vue-components/v3/cards/InfoCard.vue +243 -0
  112. package/vue-components/v3/cards/Monitoring.vue +94 -0
  113. package/vue-components/v3/cards/OverviewCard.vue +24 -0
  114. package/vue-components/v3/cards/OverviewCards.vue +31 -0
  115. package/vue-components/v3/cards/Payment.vue +62 -0
  116. package/vue-components/v3/cards/Vendor.vue +85 -0
  117. package/vue-components/v3/content/ContentHeader.vue +39 -30
  118. package/vue-components/v3/content/ContentLayout.vue +20 -0
  119. package/vue-components/v3/content/ContentTable.vue +43 -62
  120. package/vue-components/v3/dropdown/DropdownDivider.vue +2 -0
  121. package/vue-components/v3/dropdown/DropdownItem.vue +2 -0
  122. package/vue-components/v3/dropdown/DropdownMenu.vue +85 -91
  123. package/vue-components/v3/editor/Editor.vue +100 -113
  124. package/vue-components/v3/editor/FilteredFileEditor.vue +317 -127
  125. package/vue-components/v3/editor/ResourceKeyValueEditor.vue +70 -94
  126. package/vue-components/v3/footer/FooterArea.vue +34 -0
  127. package/vue-components/v3/footer/FooterItem.vue +32 -0
  128. package/vue-components/v3/footer/FooterItems.vue +15 -0
  129. package/vue-components/v3/footer/Info.vue +23 -0
  130. package/vue-components/v3/footer/Status.vue +42 -0
  131. package/vue-components/v3/footer/Usage.vue +44 -0
  132. package/vue-components/v3/form/Form.vue +24 -33
  133. package/vue-components/v3/form/FormFooterControl.vue +7 -0
  134. package/vue-components/v3/form/FormFooterControls.vue +7 -0
  135. package/vue-components/v3/form-fields/AcSingleInput.vue +528 -0
  136. package/vue-components/v3/form-fields/Input.vue +19 -14
  137. package/vue-components/v3/header/Header.vue +119 -25
  138. package/vue-components/v3/header/HeaderItem.vue +18 -0
  139. package/vue-components/v3/header/HeaderItems.vue +4 -0
  140. package/vue-components/v3/icons/Ellipsis.vue +2 -0
  141. package/vue-components/v3/loaders/InfoCardLoader.vue +65 -0
  142. package/vue-components/v3/loaders/ResourceLoader.vue +4 -12
  143. package/vue-components/v3/loaders/SidebarLoader.vue +4 -12
  144. package/vue-components/v3/long-running-tasks/LongRunningTaskItem.vue +17 -15
  145. package/vue-components/v3/modal/Modal.vue +292 -96
  146. package/vue-components/v3/modals/DeleteConfirmationModal.vue +37 -50
  147. package/vue-components/v3/modals/JsonShowModal.vue +62 -68
  148. package/vue-components/v3/modals/LongRunningTasksModal.vue +145 -143
  149. package/vue-components/v3/navbar/Appdrawer.vue +196 -51
  150. package/vue-components/v3/navbar/Navbar.vue +298 -0
  151. package/vue-components/v3/navbar/NavbarItem.vue +81 -0
  152. package/vue-components/v3/navbar/NavbarItemContent.vue +284 -0
  153. package/vue-components/v3/navbar/Notification.vue +179 -0
  154. package/vue-components/v3/navbar/ThemeMode.vue +128 -112
  155. package/vue-components/v3/navbar/User.vue +383 -268
  156. package/vue-components/v3/notification/AlertBox.vue +41 -44
  157. package/vue-components/v3/notification/Notification.vue +49 -43
  158. package/vue-components/v3/notification/NotificationItem.vue +51 -19
  159. package/vue-components/v3/option-dots/Options.vue +188 -0
  160. package/vue-components/v3/pagination/Pagination.vue +203 -99
  161. package/vue-components/v3/preloader/Preloader.vue +23 -0
  162. package/vue-components/v3/searchbars/SearchBar.vue +59 -34
  163. package/vue-components/v3/sidebar/AccentColorPicker.vue +97 -0
  164. package/vue-components/v3/sidebar/ClusterSwitcher.vue +835 -81
  165. package/vue-components/v3/sidebar/Sidebar.vue +267 -0
  166. package/vue-components/v3/sidebar/SidebarBody.vue +7 -0
  167. package/vue-components/v3/sidebar/SidebarFooter.vue +80 -0
  168. package/vue-components/v3/sidebar/SidebarHeader.vue +124 -0
  169. package/vue-components/v3/sidebar/SidebarItem.vue +62 -0
  170. package/vue-components/v3/sidebar/SidebarItemWithDropDown.vue +101 -104
  171. package/vue-components/v3/sidebar/SidebarMenuList.vue +9 -0
  172. package/vue-components/v3/sidebar/Steps.vue +152 -0
  173. package/vue-components/v3/sidebar/sidebar-tabs/SidebarTabs.vue +128 -0
  174. package/vue-components/v3/sidebar/sidebar-tabs/SidebarTabsLayout.vue +29 -0
  175. package/vue-components/v3/sidebar/sidebar-tabs/TabsContent.vue +99 -0
  176. package/vue-components/v3/tab/TabItem.vue +10 -12
  177. package/vue-components/v3/tab/Tabs.vue +9 -0
  178. package/vue-components/v3/tab/TabsBody.vue +7 -0
  179. package/vue-components/v3/table/EmptyTableInfo.vue +8 -0
  180. package/vue-components/v3/table/FakeTableCell.vue +22 -31
  181. package/vue-components/v3/table/InfoTable.vue +89 -61
  182. package/vue-components/v3/table/MultiInfoTable.vue +72 -95
  183. package/vue-components/v3/table/Table.vue +589 -151
  184. package/vue-components/v3/table/TableCell.vue +20 -23
  185. package/vue-components/v3/table/TableContainer.vue +50 -28
  186. package/vue-components/v3/table/TableRow.vue +63 -85
  187. package/vue-components/v3/table/table-cell/ArrayCell.vue +67 -79
  188. package/vue-components/v3/table/table-cell/CellValue.vue +97 -103
  189. package/vue-components/v3/table/table-cell/GenericCell.vue +43 -42
  190. package/vue-components/v3/table/table-cell/ObjectCell.vue +67 -79
  191. package/vue-components/v3/table/table-cell/ValueWithModal.vue +22 -31
  192. package/vue-components/v3/tabs/EditorTabs.vue +18 -24
  193. package/vue-components/v3/tag/Tag.vue +15 -12
  194. package/vue-components/v3/tag/Tags.vue +7 -0
  195. package/vue-components/v3/terminal/LongRunningTaskTerminal.vue +26 -23
  196. package/base/utilities/_derived-variables.scss +0 -25
  197. package/base/utilities/_initial-variables.scss +0 -215
  198. package/components/_basic-card.scss +0 -128
  199. package/mixins/stickyContent.js +0 -141
  200. package/plugins/caching.ts +0 -243
@@ -1,3 +1,100 @@
1
+ <script setup lang="ts">
2
+ import { nextTick, onMounted, ref, watch } from "vue";
3
+
4
+ interface Props {
5
+ isDropDownOpen?: boolean;
6
+ title?: string;
7
+ icon?: string;
8
+ }
9
+
10
+ const props = withDefaults(defineProps<Props>(), {
11
+ isDropDownOpen: false,
12
+ title: "Sidebar Item",
13
+ icon: "https://cdn.appscode.com/k8s/icons/apiextensions.k8s.io/customresourcedefinitions.svg",
14
+ });
15
+
16
+ const emit = defineEmits(["dropDownItemChange"]);
17
+
18
+ const dropDownStatus = ref("close");
19
+ const dropDownSectionHeight = ref<string | null>(null);
20
+ const isCompMounted = ref(false);
21
+ const sectionItems = ref(null as HTMLElement | null);
22
+
23
+ const setDropdownMaxHeight = (mode: string) => {
24
+ if (mode === "open" && sectionItems.value) {
25
+ dropDownSectionHeight.value = `${sectionItems.value.scrollHeight}px`;
26
+ } else {
27
+ dropDownSectionHeight.value = null;
28
+ }
29
+ };
30
+
31
+ const toggleDropDownStatus = () => {
32
+ if (dropDownStatus.value === "open") {
33
+ dropDownStatus.value = "close";
34
+ } else dropDownStatus.value = "open";
35
+ };
36
+
37
+ onMounted(() => {
38
+ isCompMounted.value = true;
39
+ setTimeout(() => {
40
+ // for expanding dropdown
41
+ if (props.isDropDownOpen) {
42
+ setDropdownMaxHeight("open");
43
+ } else {
44
+ setDropdownMaxHeight("close");
45
+ }
46
+ }, 700);
47
+ });
48
+
49
+ watch(
50
+ () => props.title,
51
+ (n, o) => {
52
+ if (n && isCompMounted.value) {
53
+ nextTick(() => {
54
+ // for expanding dropdown
55
+ setDropdownMaxHeight("open");
56
+ });
57
+ }
58
+
59
+ if (o && isCompMounted.value) {
60
+ nextTick(() => {
61
+ // for expanding dropdown
62
+ setDropdownMaxHeight("close");
63
+ });
64
+ }
65
+ }
66
+ );
67
+
68
+ watch(
69
+ () => props.isDropDownOpen,
70
+ (n) => {
71
+ if (n) {
72
+ dropDownStatus.value = "open";
73
+ } else dropDownStatus.value = "close";
74
+ },
75
+ {
76
+ immediate: true,
77
+ }
78
+ );
79
+
80
+ watch(dropDownStatus, (n) => {
81
+ if (n === "open") {
82
+ // emit event to close other drop down items
83
+ emit("dropDownItemChange");
84
+
85
+ nextTick(() => {
86
+ const dropDownUl = sectionItems.value;
87
+ // debugger;
88
+ if (dropDownUl)
89
+ dropDownSectionHeight.value = `${dropDownUl.scrollHeight}px`;
90
+ });
91
+ } else {
92
+ // emit event to close other drop down items
93
+ dropDownSectionHeight.value = null;
94
+ }
95
+ });
96
+ </script>
97
+
1
98
  <template>
2
99
  <li :class="`is-${dropDownStatus}`">
3
100
  <a class="ac-dropdown-button" :title="title" @click="toggleDropDownStatus">
@@ -10,111 +107,11 @@
10
107
  </span>
11
108
  </a>
12
109
 
13
- <ul ref="sectionItems" :style="{ maxHeight: dropDownSectionHeight }">
110
+ <ul
111
+ ref="sectionItems"
112
+ :style="{ maxHeight: dropDownSectionHeight || undefined }"
113
+ >
14
114
  <slot />
15
115
  </ul>
16
116
  </li>
17
117
  </template>
18
-
19
- <script>
20
- import { defineComponent } from "vue";
21
-
22
- export default defineComponent({
23
- props: {
24
- isDropDownOpen: {
25
- type: Boolean,
26
- default: false,
27
- },
28
- title: {
29
- type: String,
30
- default: "Sidebar Item",
31
- },
32
- icon: {
33
- type: String,
34
- default: "@/assets/images/icons/basic.svg",
35
- },
36
- },
37
-
38
- emits: ["dropDownItemChange"],
39
-
40
- data() {
41
- return {
42
- dropDownStatus: "close",
43
- dropDownSectionHeight: null,
44
- isCompMounted: false,
45
- };
46
- },
47
-
48
- mounted() {
49
- this.isCompMounted = true;
50
- setTimeout(() => {
51
- // for expanding dropdown
52
- if (this.isDropDownOpen) {
53
- this.setDropdownMaxHeight("open");
54
- } else {
55
- this.setDropdownMaxHeight("close");
56
- }
57
- }, 700);
58
- },
59
-
60
- watch: {
61
- title(n, o) {
62
- if (n && this.isCompMounted) {
63
- this.$nextTick(() => {
64
- // for expanding dropdown
65
- this.setDropdownMaxHeight("open");
66
- });
67
- }
68
-
69
- if (o && this.isCompMounted) {
70
- this.$nextTick(() => {
71
- // for expanding dropdown
72
- this.setDropdownMaxHeight("close");
73
- });
74
- }
75
- },
76
- isDropDownOpen: {
77
- immediate: true,
78
- handler(n) {
79
- if (n) {
80
- this.dropDownStatus = "open";
81
- } else this.dropDownStatus = "close";
82
- },
83
- },
84
- dropDownStatus: {
85
- immediate: true,
86
- handler(n) {
87
- if (n === "open") {
88
- // emit event to close other drop down items
89
- this.$emit("dropDownItemChange");
90
-
91
- this.$nextTick(() => {
92
- const dropDownUl = this.$refs["sectionItems"];
93
- // debugger;
94
- if (dropDownUl)
95
- this.dropDownSectionHeight = `${dropDownUl.scrollHeight}px`;
96
- });
97
- } else {
98
- // emit event to close other drop down items
99
- this.dropDownSectionHeight = null;
100
- }
101
- },
102
- },
103
- },
104
-
105
- methods: {
106
- setDropdownMaxHeight(mode) {
107
- if (mode === "open") {
108
- this.dropDownSectionHeight = `${this.$refs["sectionItems"].scrollHeight}px`;
109
- } else {
110
- this.dropDownSectionHeight = null;
111
- }
112
- },
113
- toggleDropDownStatus() {
114
- if (this.dropDownStatus === "open") {
115
- this.dropDownStatus = "close";
116
- } else this.dropDownStatus = "open";
117
- },
118
- },
119
- });
120
- </script>
@@ -0,0 +1,9 @@
1
+ <script setup lang="ts"></script>
2
+
3
+ <template>
4
+ <ul class="menu-list ac-menu-list">
5
+ <slot />
6
+ </ul>
7
+ </template>
8
+
9
+ <style lang="scss"></style>
@@ -0,0 +1,152 @@
1
+ <script lang="ts" setup>
2
+ import FeCheck from "~icons/fe/check";
3
+ import type { Step } from "../../types/importFlow";
4
+
5
+ interface Props {
6
+ steps?: Step[];
7
+ activeStepIdentifier?: number;
8
+ activeSubStepIdentifier?: number;
9
+ }
10
+
11
+ withDefaults(defineProps<Props>(), {
12
+ steps: () => [],
13
+ activeStepIdentifier: 1,
14
+ activeSubStepIdentifier: 1,
15
+ });
16
+ </script>
17
+
18
+ <template>
19
+ <li
20
+ v-for="step in steps"
21
+ :key="step.identifier"
22
+ :class="{
23
+ 'is-hidden': !step.isVisible,
24
+ }"
25
+ >
26
+ <strong
27
+ :class="{
28
+ 'is-active': step.identifier < activeStepIdentifier,
29
+ }"
30
+ >
31
+ <span
32
+ :class="{
33
+ 'step-count': true,
34
+ 'is-active': step.identifier < activeStepIdentifier,
35
+ }"
36
+ >{{ step.identifier }}</span
37
+ >
38
+ <span class="label-text">{{ step.title }}</span>
39
+ </strong>
40
+ <ul
41
+ :class="{
42
+ 'is-hidden': step.identifier !== activeStepIdentifier,
43
+ }"
44
+ >
45
+ <li
46
+ v-for="substep in step.substeps"
47
+ :key="substep?.identifier"
48
+ :class="{
49
+ 'is-hidden': !substep.isVisible,
50
+ 'is-active': substep.identifier < activeSubStepIdentifier,
51
+ }"
52
+ >
53
+ <strong>
54
+ <span class="step-count"><FeCheck /></span>
55
+ <span
56
+ :class="{
57
+ 'label-text': true,
58
+ 'has-text-weight-semibold':
59
+ substep.identifier <= activeSubStepIdentifier,
60
+ }"
61
+ >{{ substep.title }}</span
62
+ >
63
+ </strong>
64
+ </li>
65
+ </ul>
66
+ </li>
67
+ </template>
68
+
69
+ <style lang="scss" scoped>
70
+ ul {
71
+ padding-left: 4px !important;
72
+ position: relative;
73
+ z-index: 1;
74
+ &::after {
75
+ position: absolute;
76
+ content: "";
77
+ left: 15px;
78
+ top: -16px;
79
+ width: 1px;
80
+ height: 100%;
81
+ /* colors/primary/40-primary */
82
+ border: 1px dashed #186cb4;
83
+ z-index: -1;
84
+ }
85
+ li {
86
+ display: block;
87
+ padding: 6px 0;
88
+ cursor: pointer;
89
+ strong {
90
+ /* colors/white */
91
+ color: #ffffff;
92
+ display: flex;
93
+ align-items: center;
94
+
95
+ .step-count {
96
+ width: 32px;
97
+ height: 32px;
98
+ margin-right: 8px;
99
+ display: flex;
100
+ align-items: center;
101
+ justify-content: center;
102
+ border-radius: 50%;
103
+ background-color: $primary-20;
104
+ border: 1px solid $primary-40;
105
+ color: $primary-80;
106
+ font-size: 16px;
107
+ &.is-active {
108
+ background-color: $primary;
109
+ color: $white-100;
110
+ border: 1px solid $primary-90;
111
+ }
112
+ }
113
+ }
114
+
115
+ ul {
116
+ max-height: 100% !important;
117
+
118
+ li {
119
+ &.is-active {
120
+ strong {
121
+ .step-count {
122
+ background-color: $primary;
123
+ color: $white-100;
124
+ border: 1px solid $primary-90;
125
+ }
126
+ .label-text {
127
+ color: $white-100;
128
+ font-weight: 500;
129
+ }
130
+ }
131
+ }
132
+ strong {
133
+ .step-count {
134
+ width: 22px;
135
+ height: 22px;
136
+ margin-right: 16px;
137
+ background: $primary-20;
138
+ color: $primary-80;
139
+ border: 1px solid $primary-40;
140
+ font-size: 14px;
141
+ }
142
+
143
+ .label-text {
144
+ color: $primary-95;
145
+ font-weight: 400;
146
+ }
147
+ }
148
+ }
149
+ }
150
+ }
151
+ }
152
+ </style>
@@ -0,0 +1,128 @@
1
+ <script setup lang="ts"></script>
2
+ <template>
3
+ <div class="sidebar-tabs">
4
+ <slot />
5
+ </div>
6
+ </template>
7
+
8
+ <style lang="scss">
9
+ .sidebar-tabs {
10
+ width: 220px;
11
+ border-right: 1px solid $primary-90;
12
+ padding: 8px;
13
+ height: calc(100vh - 50px);
14
+ ul {
15
+ li {
16
+ a {
17
+ display: flex;
18
+ align-items: center;
19
+ color: $black-40;
20
+ position: relative;
21
+ z-index: 1;
22
+ padding: 8px 16px;
23
+ font-weight: 500;
24
+ transition: 0.3s ease-in-out;
25
+ align-items: center;
26
+ justify-content: space-between;
27
+
28
+ &:after {
29
+ position: absolute;
30
+ content: "";
31
+ left: 0;
32
+ top: 0;
33
+ width: 100%;
34
+ height: 100%;
35
+ background-color: $primary-95;
36
+ border-radius: 4px;
37
+ z-index: -1;
38
+ opacity: 0;
39
+ visibility: hidden;
40
+ transition: 0.3s ease-in-out;
41
+ }
42
+ &:hover {
43
+ color: $primary;
44
+
45
+ &:after {
46
+ opacity: 1;
47
+ visibility: visible;
48
+ background-color: $primary-97;
49
+ }
50
+ }
51
+ &.is-active {
52
+ color: $primary;
53
+ &:hover {
54
+ &::after {
55
+ background-color: $primary-90;
56
+ }
57
+ }
58
+ &:after {
59
+ opacity: 1;
60
+ visibility: visible;
61
+ }
62
+ }
63
+ span {
64
+ }
65
+ }
66
+ &.is-open {
67
+ transition: 0.3s ease-in-out;
68
+ ul {
69
+ max-height: 250px;
70
+ }
71
+ }
72
+ ul {
73
+ margin-left: 20px;
74
+ position: relative;
75
+ z-index: 1;
76
+ max-height: 0;
77
+ transition: 0.3s ease-in-out !important;
78
+ overflow: hidden;
79
+ &:after {
80
+ position: absolute;
81
+ content: "";
82
+ left: 4px;
83
+ top: 0;
84
+ width: 1px;
85
+ height: calc(100% - 10px);
86
+ background-color: $primary-90;
87
+ }
88
+ li {
89
+ a {
90
+ &:after {
91
+ left: -8px;
92
+ opacity: 0 !important;
93
+ visibility: hidden !important;
94
+ }
95
+ &::before {
96
+ position: absolute;
97
+ content: "";
98
+ left: 0;
99
+ top: 50%;
100
+ margin-top: -4px;
101
+ width: 8px;
102
+ height: 8px;
103
+ border-radius: 50%;
104
+ background-color: $primary;
105
+ transition: 0.3s ease-in-out;
106
+ opacity: 0;
107
+ visibility: hidden;
108
+ }
109
+ &:hover:not(&.is-active) {
110
+ &::before {
111
+ opacity: 1;
112
+ visibility: visible;
113
+ background-color: $primary-80;
114
+ }
115
+ }
116
+ &.is-active {
117
+ &::before {
118
+ opacity: 1;
119
+ visibility: visible;
120
+ }
121
+ }
122
+ }
123
+ }
124
+ }
125
+ }
126
+ }
127
+ }
128
+ </style>
@@ -0,0 +1,29 @@
1
+ <script lang="ts" setup></script>
2
+
3
+ <template>
4
+ <div class="sidebar-tabs-layout is-flex">
5
+ <!-- sidebar tabs -->
6
+ <div class="sidebar-tabs-wrapper">
7
+ <slot name="sidebar-tabs" />
8
+ </div>
9
+ <!-- sidebar tabs -->
10
+
11
+ <div class="content-wrapper">
12
+ <!-- sidebar content -->
13
+ <slot name="tabs-content" />
14
+ <!-- sidebar content -->
15
+ </div>
16
+ </div>
17
+ </template>
18
+
19
+ <style lang="scss" scoped>
20
+ .sidebar-tabs-wrapper {
21
+ position: fixed;
22
+ background-color: $white-100;
23
+ }
24
+ .content-wrapper {
25
+ padding-left: 220px;
26
+ padding-bottom: 40px;
27
+ width: 100%;
28
+ }
29
+ </style>
@@ -0,0 +1,99 @@
1
+ <script setup lang="ts"></script>
2
+ <template>
3
+ <div class="content pt-10 pl-20 pb-20">
4
+ <h1>Heading One</h1>
5
+ <p>
6
+ Lorem ipsum dolor sit amet consectetur, adipisicing elit. Cumque cum
7
+ corrupti atque voluptatum quos a commodi similique perferendis
8
+ necessitatibus. Praesentium labore laudantium assumenda consectetur
9
+ corporis ex doloremque magnam animi numquam?
10
+ </p>
11
+ <h2>Heading Two</h2>
12
+ <p>
13
+ Lorem ipsum dolor sit amet consectetur, adipisicing elit. Cumque cum
14
+ corrupti atque voluptatum quos a commodi similique perferendis
15
+ necessitatibus. Praesentium labore laudantium assumenda consectetur
16
+ corporis ex doloremque magnam animi numquam? Lorem ipsum dolor sit amet
17
+ consectetur, adipisicing elit. Cumque cum corrupti atque voluptatum quos a
18
+ commodi similique perferendis necessitatibus. Praesentium labore
19
+ laudantium assumenda consectetur corporis ex doloremque magnam animi
20
+ numquam?
21
+ </p>
22
+ <h3>Heading three</h3>
23
+ <p>
24
+ Lorem ipsum dolor sit amet consectetur, adipisicing elit. Cumque cum
25
+ corrupti atque voluptatum quos a commodi similique perferendis
26
+ necessitatibus. Praesentium labore laudantium assumenda consectetur
27
+ corporis ex doloremque magnam animi numquam?
28
+ </p>
29
+
30
+ <h4>Heading Four</h4>
31
+ <p>
32
+ Lorem ipsum dolor sit amet consectetur, adipisicing elit. Cumque cum
33
+ corrupti atque voluptatum quos a commodi similique perferendis
34
+ necessitatibus. Praesentium labore laudantium assumenda consectetur
35
+ corporis ex doloremque magnam animi numquam?
36
+ </p>
37
+ <h5>Heading Five</h5>
38
+ <p>
39
+ Lorem ipsum dolor sit amet consectetur, adipisicing elit. Cumque cum
40
+ corrupti atque voluptatum quos a commodi similique perferendis
41
+ necessitatibus. Praesentium labore laudantium assumenda consectetur
42
+ corporis ex doloremque magnam animi numquam? Lorem ipsum dolor sit amet
43
+ consectetur, adipisicing elit. Cumque cum corrupti atque voluptatum quos a
44
+ commodi similique perferendis necessitatibus. Praesentium labore
45
+ laudantium assumenda consectetur corporis ex doloremque magnam animi
46
+ numquam?
47
+ </p>
48
+ <h6>Heading Six</h6>
49
+ <p>
50
+ Lorem ipsum dolor sit amet consectetur, adipisicing elit. Cumque cum
51
+ corrupti atque voluptatum quos a commodi similique perferendis
52
+ necessitatibus. Praesentium labore laudantium assumenda consectetur
53
+ corporis ex doloremque magnam animi numquam?
54
+ </p>
55
+
56
+ <h4>Block Quote</h4>
57
+
58
+ <blockquote>
59
+ Lorem ipsum dolor sit amet consectetur adipisicing elit. Et repudiandae
60
+ officiis autem aspernatur. Ab cum quisquam dolore pariatur consequuntur
61
+ officia nostrum, commodi sint saepe delectus itaque vel quae voluptates
62
+ atque.
63
+ </blockquote>
64
+
65
+ <h5>Heading Five</h5>
66
+ <p>
67
+ Lorem ipsum dolor sit amet consectetur, adipisicing elit. Cumque cum
68
+ corrupti atque voluptatum quos a commodi similique perferendis
69
+ necessitatibus. Praesentium labore laudantium assumenda consectetur
70
+ corporis ex doloremque magnam animi numquam? Lorem ipsum dolor sit amet
71
+ consectetur, adipisicing elit. Cumque cum corrupti atque voluptatum quos a
72
+ commodi similique perferendis necessitatibus. Praesentium labore
73
+ laudantium assumenda consectetur corporis ex doloremque magnam animi
74
+ numquam?
75
+ </p>
76
+ <h6>Heading Six</h6>
77
+ <p>
78
+ Lorem ipsum dolor sit amet consectetur, adipisicing elit. Cumque cum
79
+ corrupti atque voluptatum quos a commodi similique perferendis
80
+ necessitatibus. Praesentium labore laudantium assumenda consectetur
81
+ corporis ex doloremque magnam animi numquam?
82
+ </p>
83
+
84
+ <h4>Block Quote</h4>
85
+
86
+ <blockquote>
87
+ Lorem ipsum dolor sit amet consectetur adipisicing elit. Et repudiandae
88
+ officiis autem aspernatur. Ab cum quisquam dolore pariatur consequuntur
89
+ officia nostrum, commodi sint saepe delectus itaque vel quae voluptates
90
+ atque.
91
+ </blockquote>
92
+ </div>
93
+ </template>
94
+
95
+ <style lang="scss">
96
+ .content {
97
+ width: 100%;
98
+ }
99
+ </style>
@@ -1,17 +1,15 @@
1
+ <script setup lang="ts">
2
+ interface Props {
3
+ isActive?: boolean;
4
+ }
5
+
6
+ withDefaults(defineProps<Props>(), {
7
+ isActive: false,
8
+ });
9
+ </script>
10
+
1
11
  <template>
2
12
  <li :class="{ 'is-active': isActive }" data-testid="tab-item">
3
13
  <slot />
4
14
  </li>
5
15
  </template>
6
-
7
- <script>
8
- import { defineComponent } from "vue";
9
- export default defineComponent({
10
- props: {
11
- isActive: {
12
- type: Boolean,
13
- default: false,
14
- },
15
- },
16
- });
17
- </script>
@@ -0,0 +1,9 @@
1
+ <script setup lang="ts"></script>
2
+
3
+ <template>
4
+ <div class="tabs ac-tabs">
5
+ <ul>
6
+ <slot />
7
+ </ul>
8
+ </div>
9
+ </template>
@@ -0,0 +1,7 @@
1
+ <script setup lang="ts"></script>
2
+
3
+ <template>
4
+ <div class="ac-tabs-body is-content-available">
5
+ <slot />
6
+ </div>
7
+ </template>
@@ -0,0 +1,8 @@
1
+ <script setup lang="ts"></script>
2
+
3
+ <template>
4
+ <strong>
5
+ No Data Available
6
+ <i class="pl-5 fa fa-exclamation-circle" aria-hidden="true"></i>
7
+ </strong>
8
+ </template>