@webitel/ui-sdk 24.10.73 → 24.10.74

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.
@@ -1,125 +0,0 @@
1
- <template>
2
- <section class="nav-menu">
3
- <article class="nav-menu__wrapper">
4
- <nav-menu-lvl-1
5
- :categories="categories"
6
- :selected="selected"
7
- @select="select"
8
- >
9
- <nav-menu-lvl-2
10
- :categories="subcategories"
11
- class="nav-menu__inner-lvl-2"
12
- />
13
- </nav-menu-lvl-1>
14
- <nav-menu-lvl-2
15
- :categories="subcategories"
16
- class="nav-menu__outer-lvl-2"
17
- />
18
- </article>
19
- </section>
20
- </template>
21
-
22
- <script setup>
23
- import { ref, computed, onMounted } from 'vue';
24
- import NavMenuLvl1 from './_internals/nav-menu-lvl-1.vue';
25
- import NavMenuLvl2 from './_internals/nav-menu-lvl-2.vue';
26
-
27
- const props = defineProps({
28
- navItems: {
29
- type: Array,
30
- required: true,
31
- },
32
- });
33
-
34
- const selected = ref({});
35
- const categories = computed(() => {
36
- return props.navItems.map((navItem) => ({
37
- ...navItem,
38
- name: navItem.name,
39
- }));
40
- });
41
-
42
- const subcategories = computed(() => {
43
- if (!selected.value.subNav) return [];
44
- return selected.value.subNav.map((subNav) => {
45
- const route = `${subNav.route}`;
46
- const name = subNav.name;
47
- return {
48
- ...subNav,
49
- name,
50
- route,
51
- };
52
- });
53
- });
54
-
55
- onMounted(() => {
56
- initSelected();
57
- });
58
-
59
- function initSelected() {
60
- select(categories.value[0]);
61
- }
62
-
63
- function select(category) {
64
- selected.value = category;
65
- }
66
- </script>
67
-
68
- <style lang="scss" scoped>
69
- .nav-menu {
70
- display: flex;
71
- align-items: center;
72
- flex-grow: 1;
73
- justify-content: center;
74
- height: 100%;
75
-
76
- --button-min-height: 60px;
77
- --wrapper-width: 60%;
78
- --wrapper-height: calc(
79
- var(--spacing-sm) * 2
80
- + var(--button-min-height) * 7
81
- + var(--spacing-2xs) * 6
82
- );
83
- --lvl-1-bg: var(--dp-18-surface-color);
84
- --lvl-1-bg--hover: var(--dp-20-surface-color);
85
- --lvl-1-bg--selected: var(--primary-color);
86
- --lvl-1-text--selected: var(--primary-on-color);
87
-
88
- @media (#{$media} and #{$media-width-xs}) {
89
- --wrapper-width: 100%;
90
- --wrapper-height: 100%;
91
- }
92
-
93
- &__wrapper {
94
- @extend %wt-scrollbar;
95
-
96
- display: grid;
97
- box-sizing: border-box;
98
- width: var(--wrapper-width);
99
- height: var(--wrapper-height);
100
- margin: auto;
101
- padding: var(--spacing-xs);
102
- border-radius: var(--spacing-xs);
103
- background: var(--dp-20-surface-color);
104
- grid-template-columns: repeat(2, 1fr);
105
- grid-gap: var(--spacing-sm);
106
-
107
- @media (#{$media} and #{$media-width-xs}) {
108
- grid-template-columns: 1fr;
109
- }
110
- }
111
-
112
- &__inner-lvl-2{
113
- display: none;
114
-
115
- @media (#{$media} and #{$media-width-xs}) {
116
- display: block;
117
- }
118
- }
119
- &__outer-lvl-2{
120
- @media (#{$media} and #{$media-width-xs}) {
121
- display: none;
122
- }
123
- }
124
- }
125
- </style>
@@ -1,20 +0,0 @@
1
- .nav-menu__category {
2
- height: 100%;
3
- border-radius: var(--border-radius);
4
-
5
- &-option {
6
- @extend %typo-subtitle-2;
7
-
8
- display: flex;
9
- align-items: center;
10
- width: 100%;
11
- transition: var(--transition);
12
- text-align: left;
13
- color: var(--text-main-color);
14
- border-radius: var(--spacing-xs);
15
-
16
- .wt-icon {
17
- margin-right: var(--spacing-xs);
18
- }
19
- }
20
- }
@@ -1,23 +0,0 @@
1
- <template>
2
- <div class="start-page-logo">
3
- <img :src="image">
4
- </div>
5
- </template>
6
-
7
- <script setup>
8
- const props = defineProps({
9
- image: {
10
- type: String,
11
- required: true,
12
- },
13
- });
14
- </script>
15
-
16
- <style lang="scss" scoped>
17
- .start-page-logo{
18
- min-height: 200px;
19
- display: flex;
20
- align-items: center;
21
- justify-content: center;
22
- }
23
- </style>
@@ -1,59 +0,0 @@
1
- <template>
2
- <start-page-logo :image="logo"/>
3
- <div class="start-page-wrapper">
4
- <start-page-card
5
- v-for="(card) of navCards"
6
- :key="card.value"
7
- :card="card"
8
- />
9
- </div>
10
- </template>
11
-
12
- <script setup>
13
- import { computed } from 'vue';
14
- import { useI18n } from 'vue-i18n';
15
- import { useStore } from 'vuex';
16
- import StartPageCard from './start-page-card.vue';
17
- import StartPageLogo from './start-page-logo.vue';
18
-
19
- // Vuex store access
20
- const store = useStore();
21
-
22
- const { t } = useI18n();
23
-
24
- const props = defineProps({
25
- nav: {
26
- type: Array,
27
- required: true,
28
- },
29
- appLogo: {
30
- type: Object,
31
- required: true,
32
- }
33
- });
34
-
35
- const darkMode = computed(() => store.getters['appearance/DARK_MODE']);
36
-
37
- const logo = computed(() => {
38
- return darkMode.value ? props.appLogo.dark : props.appLogo.light;
39
- });
40
-
41
- const navCards = computed(() => {
42
- return props.nav.map((navItem) => ({
43
- ...navItem,
44
- image: darkMode.value ? navItem.images.dark : navItem.images.light,
45
- }));
46
- });
47
- </script>
48
-
49
- <style scoped>
50
- .start-page-wrapper {
51
- box-sizing: border-box;
52
- min-width: 264px;
53
- display: grid;
54
- grid-template-columns: repeat(auto-fit, 264px);
55
- justify-content: center;
56
- grid-gap: var(--spacing-sm);
57
- padding: var(--spacing-sm);
58
- }
59
- </style>