@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.
- package/base/_video-player.scss +65 -0
- package/base/utilities/_all.scss +6 -5
- package/base/utilities/_colors.scss +408 -0
- package/base/utilities/_customize-bulma.scss +23 -27
- package/base/utilities/_extended.scss +3 -2
- package/base/utilities/{_default.scss → _global.scss} +185 -331
- package/base/utilities/_layouts.scss +157 -0
- package/base/utilities/_mixin.scss +11 -11
- package/base/utilities/_spacing.scss +96 -0
- package/base/utilities/_typography.scss +56 -24
- package/base/utilities/dark-theme.scss +1 -1
- package/components/_ac-accordion.scss +117 -117
- package/components/_ac-alert-box.scss +205 -263
- package/components/_ac-calendar.scss +4 -4
- package/components/_ac-card.scss +0 -597
- package/components/_ac-code-highlight.scss +6 -6
- package/components/_ac-content-layout.scss +165 -165
- package/components/_ac-drag.scss +11 -11
- package/components/_ac-input.scss +477 -452
- package/components/_ac-modal.scss +212 -212
- package/components/_ac-multi-select.scss +780 -751
- package/components/_ac-options.scss +122 -123
- package/components/_ac-select-box.scss +5 -5
- package/components/_ac-table.scss +503 -502
- package/components/_ac-tabs.scss +39 -38
- package/components/_ac-tags.scss +116 -116
- package/components/_ac-terminal.scss +95 -51
- package/components/_add-card.scss +3 -3
- package/components/_all.scss +29 -26
- package/components/_app-drawer.scss +0 -134
- package/components/_breadcumb.scss +0 -71
- package/components/_buttons.scss +779 -779
- package/components/_card-body-wrapper.scss +5 -5
- package/components/_dashboard-header.scss +0 -115
- package/components/_direct-deploy.scss +8 -8
- package/components/_go-to-top.scss +1 -1
- package/components/_image-upload.scss +5 -5
- package/components/_left-sidebar-menu.scss +448 -579
- package/components/_monaco-editor.scss +1 -1
- package/components/_navbar.scss +786 -752
- package/components/_nested-list.scss +1 -1
- package/components/_overview-info.scss +7 -7
- package/components/_overview-page.scss +4 -4
- package/components/_pagination.scss +106 -124
- package/components/_payment-card.scss +21 -21
- package/components/_preloader.scss +1 -1
- package/components/_preview-modal.scss +18 -18
- package/components/_pricing-table.scss +10 -10
- package/components/_progress-bar.scss +12 -12
- package/components/_subscription-card.scss +14 -14
- package/components/_table-of-content.scss +4 -4
- package/components/_tfa.scss +9 -9
- package/components/_widget-menu.scss +247 -247
- package/components/_wizard.scss +557 -559
- package/components/ac-toaster/_ac-toasted.scss +7 -12
- package/components/bbum/_activities-header.scss +1 -1
- package/components/bbum/_card-team.scss +12 -12
- package/components/bbum/_information-center.scss +13 -13
- package/components/bbum/_left-sidebar.scss +8 -8
- package/components/bbum/_mobile-desktop.scss +7 -7
- package/components/bbum/_post.scss +5 -5
- package/components/bbum/_sign-up-notification.scss +10 -10
- package/components/bbum/_single-post-preview.scss +21 -21
- package/components/bbum/_user-profile.scss +10 -10
- package/components/ui-builder/_ui-builder.scss +15 -15
- package/components/ui-builder/_vue-open-api.scss +515 -2
- package/layouts/_code-preview.scss +11 -11
- package/main.scss +26 -10
- package/package.json +1 -1
- package/plugins/theme.js +11 -9
- package/plugins/vue-toaster.js +1 -1
- package/vue-components/plugins/time-convert.js +49 -0
- package/vue-components/text.vue +1 -0
- package/vue-components/types/cluster.ts +6 -0
- package/vue-components/types/importFlow.ts +16 -0
- package/vue-components/types/longRunningTasks.ts +20 -0
- package/vue-components/types/notification.ts +6 -0
- package/vue-components/types/previewYaml.ts +8 -0
- package/vue-components/types/table.ts +54 -0
- package/vue-components/types/theme.ts +10 -0
- package/vue-components/types/user.ts +22 -0
- package/vue-components/v2/card/Card.vue +1 -1
- package/vue-components/v2/card/OverviewCards.vue +17 -2
- package/vue-components/v2/editor/FilteredFileEditor.vue +2 -2
- package/vue-components/v2/editor/ResourceKeyValueEditor.vue +21 -21
- package/vue-components/v2/icons/Ellipsis.vue +2 -1
- package/vue-components/v2/modal/Modal.vue +0 -5
- package/vue-components/v2/navbar/Appdrawer.vue +37 -12
- package/vue-components/v2/navbar/Navbar.vue +3 -3
- package/vue-components/v2/navbar/NavbarItem.vue +3 -1
- package/vue-components/v2/navbar/NavbarItemContent.vue +1 -1
- package/vue-components/v2/navbar/User.vue +5 -22
- package/vue-components/v2/pagination/Pagination.vue +66 -0
- package/vue-components/v2/sidebar/SidebarItem.vue +10 -7
- package/vue-components/v3/accordion/Accordion.vue +151 -0
- package/vue-components/v3/alert/Alert.vue +238 -0
- package/vue-components/v3/alert/Toast.vue +79 -0
- package/vue-components/v3/banner/Banner.vue +10 -0
- package/vue-components/v3/breadcrumbs/Breadcrumb.vue +104 -0
- package/vue-components/v3/button/Button.vue +839 -58
- package/vue-components/v3/button/Buttons.vue +6 -0
- package/vue-components/v3/button/DownloadBtn.vue +31 -0
- package/vue-components/v3/cards/Card.vue +32 -0
- package/vue-components/v3/cards/CardContent.vue +7 -0
- package/vue-components/v3/cards/CardHeader.vue +14 -0
- package/vue-components/v3/cards/Cards.vue +7 -0
- package/vue-components/v3/cards/Cluster.vue +149 -0
- package/vue-components/v3/cards/Counter.vue +39 -0
- package/vue-components/v3/cards/FeatureCard.vue +71 -0
- package/vue-components/v3/cards/FeatureCards.vue +6 -0
- package/vue-components/v3/cards/InfoCard.vue +243 -0
- package/vue-components/v3/cards/Monitoring.vue +94 -0
- package/vue-components/v3/cards/OverviewCard.vue +24 -0
- package/vue-components/v3/cards/OverviewCards.vue +31 -0
- package/vue-components/v3/cards/Payment.vue +62 -0
- package/vue-components/v3/cards/Vendor.vue +85 -0
- package/vue-components/v3/content/ContentHeader.vue +39 -30
- package/vue-components/v3/content/ContentLayout.vue +20 -0
- package/vue-components/v3/content/ContentTable.vue +43 -62
- package/vue-components/v3/dropdown/DropdownDivider.vue +2 -0
- package/vue-components/v3/dropdown/DropdownItem.vue +2 -0
- package/vue-components/v3/dropdown/DropdownMenu.vue +85 -91
- package/vue-components/v3/editor/Editor.vue +100 -113
- package/vue-components/v3/editor/FilteredFileEditor.vue +317 -127
- package/vue-components/v3/editor/ResourceKeyValueEditor.vue +70 -94
- package/vue-components/v3/footer/FooterArea.vue +34 -0
- package/vue-components/v3/footer/FooterItem.vue +32 -0
- package/vue-components/v3/footer/FooterItems.vue +15 -0
- package/vue-components/v3/footer/Info.vue +23 -0
- package/vue-components/v3/footer/Status.vue +42 -0
- package/vue-components/v3/footer/Usage.vue +44 -0
- package/vue-components/v3/form/Form.vue +24 -33
- package/vue-components/v3/form/FormFooterControl.vue +7 -0
- package/vue-components/v3/form/FormFooterControls.vue +7 -0
- package/vue-components/v3/form-fields/AcSingleInput.vue +528 -0
- package/vue-components/v3/form-fields/Input.vue +19 -14
- package/vue-components/v3/header/Header.vue +119 -25
- package/vue-components/v3/header/HeaderItem.vue +18 -0
- package/vue-components/v3/header/HeaderItems.vue +4 -0
- package/vue-components/v3/icons/Ellipsis.vue +2 -0
- package/vue-components/v3/loaders/InfoCardLoader.vue +65 -0
- package/vue-components/v3/loaders/ResourceLoader.vue +4 -12
- package/vue-components/v3/loaders/SidebarLoader.vue +4 -12
- package/vue-components/v3/long-running-tasks/LongRunningTaskItem.vue +17 -15
- package/vue-components/v3/modal/Modal.vue +292 -96
- package/vue-components/v3/modals/DeleteConfirmationModal.vue +37 -50
- package/vue-components/v3/modals/JsonShowModal.vue +62 -68
- package/vue-components/v3/modals/LongRunningTasksModal.vue +145 -143
- package/vue-components/v3/navbar/Appdrawer.vue +196 -51
- package/vue-components/v3/navbar/Navbar.vue +298 -0
- package/vue-components/v3/navbar/NavbarItem.vue +81 -0
- package/vue-components/v3/navbar/NavbarItemContent.vue +284 -0
- package/vue-components/v3/navbar/Notification.vue +179 -0
- package/vue-components/v3/navbar/ThemeMode.vue +128 -112
- package/vue-components/v3/navbar/User.vue +383 -268
- package/vue-components/v3/notification/AlertBox.vue +41 -44
- package/vue-components/v3/notification/Notification.vue +49 -43
- package/vue-components/v3/notification/NotificationItem.vue +51 -19
- package/vue-components/v3/option-dots/Options.vue +188 -0
- package/vue-components/v3/pagination/Pagination.vue +203 -99
- package/vue-components/v3/preloader/Preloader.vue +23 -0
- package/vue-components/v3/searchbars/SearchBar.vue +59 -34
- package/vue-components/v3/sidebar/AccentColorPicker.vue +97 -0
- package/vue-components/v3/sidebar/ClusterSwitcher.vue +835 -81
- package/vue-components/v3/sidebar/Sidebar.vue +267 -0
- package/vue-components/v3/sidebar/SidebarBody.vue +7 -0
- package/vue-components/v3/sidebar/SidebarFooter.vue +80 -0
- package/vue-components/v3/sidebar/SidebarHeader.vue +124 -0
- package/vue-components/v3/sidebar/SidebarItem.vue +62 -0
- package/vue-components/v3/sidebar/SidebarItemWithDropDown.vue +101 -104
- package/vue-components/v3/sidebar/SidebarMenuList.vue +9 -0
- package/vue-components/v3/sidebar/Steps.vue +152 -0
- package/vue-components/v3/sidebar/sidebar-tabs/SidebarTabs.vue +128 -0
- package/vue-components/v3/sidebar/sidebar-tabs/SidebarTabsLayout.vue +29 -0
- package/vue-components/v3/sidebar/sidebar-tabs/TabsContent.vue +99 -0
- package/vue-components/v3/tab/TabItem.vue +10 -12
- package/vue-components/v3/tab/Tabs.vue +9 -0
- package/vue-components/v3/tab/TabsBody.vue +7 -0
- package/vue-components/v3/table/EmptyTableInfo.vue +8 -0
- package/vue-components/v3/table/FakeTableCell.vue +22 -31
- package/vue-components/v3/table/InfoTable.vue +89 -61
- package/vue-components/v3/table/MultiInfoTable.vue +72 -95
- package/vue-components/v3/table/Table.vue +589 -151
- package/vue-components/v3/table/TableCell.vue +20 -23
- package/vue-components/v3/table/TableContainer.vue +50 -28
- package/vue-components/v3/table/TableRow.vue +63 -85
- package/vue-components/v3/table/table-cell/ArrayCell.vue +67 -79
- package/vue-components/v3/table/table-cell/CellValue.vue +97 -103
- package/vue-components/v3/table/table-cell/GenericCell.vue +43 -42
- package/vue-components/v3/table/table-cell/ObjectCell.vue +67 -79
- package/vue-components/v3/table/table-cell/ValueWithModal.vue +22 -31
- package/vue-components/v3/tabs/EditorTabs.vue +18 -24
- package/vue-components/v3/tag/Tag.vue +15 -12
- package/vue-components/v3/tag/Tags.vue +7 -0
- package/vue-components/v3/terminal/LongRunningTaskTerminal.vue +26 -23
- package/base/utilities/_derived-variables.scss +0 -25
- package/base/utilities/_initial-variables.scss +0 -215
- package/components/_basic-card.scss +0 -128
- package/mixins/stickyContent.js +0 -141
- 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
|
|
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,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>
|