@energie360/ui-library 0.1.19 → 0.1.21

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 (48) hide show
  1. package/components/badge/u-badge.vue +9 -1
  2. package/components/card/card.scss +3 -1
  3. package/components/card/u-card.vue +1 -3
  4. package/components/card-cta-header/u-card-cta-header.vue +1 -1
  5. package/components/card-footer/u-card-footer.vue +1 -1
  6. package/components/card-price/u-card-price.vue +8 -4
  7. package/components/collapsible/u-collapsible.vue +1 -1
  8. package/components/context-menu-link/u-context-menu-link.vue +2 -2
  9. package/components/data-card/data-card.scss +1 -1
  10. package/components/download-list-item/download-list-item.scss +58 -37
  11. package/components/download-list-item/u-download-list-item.vue +46 -8
  12. package/components/hint/hint.scss +85 -91
  13. package/components/hint/u-hint.vue +1 -3
  14. package/components/index.js +0 -6
  15. package/components/inline-edit/inline-edit.scss +2 -2
  16. package/components/inline-edit/u-inline-edit.vue +0 -1
  17. package/components/navigation-panel-tile/u-navigation-panel-tile.vue +5 -1
  18. package/components/navigation-toolbar-link/u-navigation-toolbar-link.vue +1 -0
  19. package/components/panel/u-panel.vue +1 -1
  20. package/components/progress-avatar/u-progress-avatar.vue +4 -4
  21. package/components/richtext/u-richtext.vue +1 -1
  22. package/components/table/cell-ctas.scss +1 -0
  23. package/components/table/u-cell-progress-bar.vue +1 -1
  24. package/components/table/u-table-cell.vue +1 -0
  25. package/components/table/u-table-heading.vue +3 -5
  26. package/components/tabs/u-tabs.vue +10 -4
  27. package/components/text-block/u-text-block.vue +1 -1
  28. package/dist/base-style.css +23 -22
  29. package/dist/base-style.css.map +1 -1
  30. package/elements/button/u-button.vue +8 -1
  31. package/elements/button-chip/u-button-chip.vue +13 -7
  32. package/elements/checkbox/u-checkbox.vue +1 -1
  33. package/elements/icon-button/u-icon-button.vue +1 -1
  34. package/elements/numeric-stepper/u-numeric-stepper.vue +3 -1
  35. package/elements/select-chip/u-select-chip.vue +4 -1
  36. package/elements/text-field/u-text-field.vue +2 -0
  37. package/elements/textarea/u-textarea.vue +1 -0
  38. package/elements/toggle-switch/u-toggle-switch.vue +1 -0
  39. package/layout/index.js +2 -1
  40. package/layout/portal/portal.scss +26 -42
  41. package/layout/portal/u-portal.vue +13 -34
  42. package/layout/portal-main/portal-main.scss +98 -0
  43. package/layout/portal-main/u-portal-main.vue +37 -0
  44. package/layout/tile-grid/u-tile-item.vue +7 -0
  45. package/modules/dialog/u-dialog.vue +8 -2
  46. package/modules/navigation-panel/navigation-panel.scss +1 -1
  47. package/package.json +7 -7
  48. package/wizard/wizard-outro/u-wizard-outro.vue +1 -1
@@ -11,7 +11,15 @@ interface Props {
11
11
  right?: number
12
12
  }
13
13
 
14
- const { color = 'var(--e-c-mono-900)', type = 'default', show = true } = defineProps<Props>()
14
+ const {
15
+ value = undefined,
16
+ state = undefined,
17
+ top = 0,
18
+ right = 0,
19
+ color = 'var(--e-c-mono-900)',
20
+ type = 'default',
21
+ show = true,
22
+ } = defineProps<Props>()
15
23
  </script>
16
24
 
17
25
  <template>
@@ -6,7 +6,9 @@
6
6
  border-radius: var(--e-brd-radius-2);
7
7
  display: flex;
8
8
  flex-direction: column;
9
- height: 100%;
9
+
10
+ // Set full-height not here, but through parent group containers, like <UCardGroup>
11
+ // height: 100%;
10
12
 
11
13
  &::after {
12
14
  pointer-events: none;
@@ -28,6 +28,4 @@ watch(
28
28
  </section>
29
29
  </template>
30
30
 
31
- <style lang="scss">
32
- @use './card.scss';
33
- </style>
31
+ <style lang="scss" src="./card.scss"></style>
@@ -5,7 +5,7 @@ interface Props {
5
5
  disabled?: boolean
6
6
  }
7
7
 
8
- const { disabled = false } = defineProps<Props>()
8
+ const { title = '', subtitle = '', disabled = false } = defineProps<Props>()
9
9
  </script>
10
10
 
11
11
  <template>
@@ -19,7 +19,7 @@ interface Props {
19
19
  cta?: Radio | Link
20
20
  }
21
21
 
22
- const { cta } = defineProps<Props>()
22
+ const { cta = undefined } = defineProps<Props>()
23
23
 
24
24
  const { toggleActiveCard } = inject('card')
25
25
  const { currentValue } = inject('card-group', {})
@@ -18,12 +18,16 @@ defineProps<Props>()
18
18
  {{ priceText }}
19
19
  </div>
20
20
 
21
- <div v-if="priceSubtext" class="card-price__subtext">
22
- {{ priceSubtext }}
21
+ <div v-if="$slots.priceSubtext || priceSubtext" class="card-price__subtext">
22
+ <slot name="priceSubtext">
23
+ <div v-html="priceSubtext"></div>
24
+ </slot>
23
25
  </div>
24
26
 
25
- <div v-if="description" class="card-price__description">
26
- {{ description }}
27
+ <div v-if="$slots.description || description" class="card-price__description">
28
+ <slot name="description">
29
+ <div v-html="description"></div>
30
+ </slot>
27
31
  </div>
28
32
  </div>
29
33
 
@@ -10,7 +10,7 @@ interface Props {
10
10
  }
11
11
 
12
12
  const cId = useId()
13
- const { level = 3, expanded = false } = defineProps<Props>()
13
+ const { header = '', panel = '', level = 3, expanded = false } = defineProps<Props>()
14
14
 
15
15
  // Initial state
16
16
  const panelHidden = ref(!expanded)
@@ -10,7 +10,7 @@ interface Props {
10
10
  active?: boolean
11
11
  }
12
12
 
13
- const { href, active = false } = defineProps<Props>()
13
+ const { label = '', href = '', target = '', active = false } = defineProps<Props>()
14
14
 
15
15
  const tag = computed(() => {
16
16
  return href ? 'a' : 'span'
@@ -18,7 +18,7 @@ const tag = computed(() => {
18
18
  </script>
19
19
 
20
20
  <template>
21
- <component :is="tag" class="context-menu-link" :class="{ active }">
21
+ <component :is="tag" class="context-menu-link" :class="{ active }" :href :target>
22
22
  <UIcon :name="icon" />
23
23
  <slot>{{ label }}</slot>
24
24
  </component>
@@ -29,6 +29,6 @@
29
29
  .data-card__ctas {
30
30
  display: flex;
31
31
  column-gap: var(--e-space-4);
32
- align-items: flex-start;
33
32
  margin-top: var(--e-space-4);
33
+ line-height: 0;
34
34
  }
@@ -1,51 +1,51 @@
1
1
  @use '../../base/abstracts' as a;
2
2
 
3
- .download-list-item {
4
- @keyframes arrow-anim {
5
- 0% {
6
- transform: translateY(-30%);
7
- opacity: 0.2;
8
- }
3
+ @keyframes arrow-anim {
4
+ 0% {
5
+ transform: translateY(-30%);
6
+ opacity: 0.2;
7
+ }
9
8
 
10
- 80% {
11
- transform: translateY(0);
12
- opacity: 1;
13
- }
9
+ 80% {
10
+ transform: translateY(0);
11
+ opacity: 1;
12
+ }
14
13
 
15
- 100% {
16
- transform: translateY(2%);
17
- opacity: 1;
18
- }
14
+ 100% {
15
+ transform: translateY(2%);
16
+ opacity: 1;
19
17
  }
18
+ }
20
19
 
21
- @keyframes hide-download {
22
- 0% {
23
- transform: none;
24
- transform-origin: bottom center;
25
- opacity: 1;
26
- }
20
+ @keyframes hide-download {
21
+ 0% {
22
+ transform: none;
23
+ transform-origin: bottom center;
24
+ opacity: 1;
25
+ }
27
26
 
28
- 100% {
29
- transform: rotate(60deg);
30
- transform-origin: bottom center;
31
- opacity: 0;
32
- }
27
+ 100% {
28
+ transform: rotate(60deg);
29
+ transform-origin: bottom center;
30
+ opacity: 0;
33
31
  }
32
+ }
34
33
 
35
- @keyframes show-check {
36
- 0% {
37
- transform: rotate(-60deg);
38
- transform-origin: bottom center;
39
- opacity: 0;
40
- }
34
+ @keyframes show-check {
35
+ 0% {
36
+ transform: rotate(-60deg);
37
+ transform-origin: bottom center;
38
+ opacity: 0;
39
+ }
41
40
 
42
- 100% {
43
- transform: rotate(0);
44
- transform-origin: bottom center;
45
- opacity: 1;
46
- }
41
+ 100% {
42
+ transform: rotate(0);
43
+ transform-origin: bottom center;
44
+ opacity: 1;
47
45
  }
46
+ }
48
47
 
48
+ .download-list-item {
49
49
  position: relative;
50
50
  transform: scale(1); // Safari hack
51
51
  height: a.rem(64);
@@ -57,6 +57,24 @@
57
57
  }
58
58
  }
59
59
 
60
+ &.loading {
61
+ pointer-events: none;
62
+
63
+ .download-list-item__cell {
64
+ color: var(--e-c-mono-500);
65
+ }
66
+
67
+ .download-list-item__link {
68
+ ~ * .download {
69
+ animation-name: arrow-anim;
70
+ animation-delay: 100ms;
71
+ animation-duration: var(--e-trs-duration-slowest);
72
+ animation-timing-function: ease-out;
73
+ animation-iteration-count: infinite;
74
+ }
75
+ }
76
+ }
77
+
60
78
  &.visited {
61
79
  .download-list-item__cell {
62
80
  background: var(--e-c-mono-50);
@@ -124,7 +142,9 @@
124
142
 
125
143
  padding: var(--e-space-5) var(--e-space-6);
126
144
  background-color: var(--e-c-secondary-01-50);
127
- transition: background-color a.$trs-default;
145
+ transition:
146
+ background-color a.$trs-default,
147
+ color a.$trs-default;
128
148
 
129
149
  + .download-list-item__cell {
130
150
  padding-left: var(--e-space-2);
@@ -171,6 +191,7 @@
171
191
  border-radius: var(--e-brd-radius-2);
172
192
  border: 2px solid transparent;
173
193
  transition: border a.$trs-default;
194
+ cursor: pointer;
174
195
 
175
196
  &:hover {
176
197
  border: 2px solid var(--e-c-secondary-01-100);
@@ -1,24 +1,59 @@
1
1
  <script setup lang="ts">
2
- import { ref, computed, inject } from 'vue'
2
+ import { computed, inject, useTemplateRef, ref, watch } from 'vue'
3
3
  import { UIcon } from '../../elements'
4
+ import { getCurrentInstance } from 'vue'
4
5
 
5
6
  interface Props {
6
7
  data: string[]
7
- url: string
8
+ url?: string
8
9
  compact?: boolean
9
10
  headings?: string[]
11
+ visited?: boolean
12
+ loading?: boolean
10
13
  }
11
14
 
12
- const { data, compact = false, headings = inject('headings', []) } = defineProps<Props>()
15
+ const {
16
+ visited,
17
+ url = '',
18
+ data,
19
+ compact = false,
20
+ headings = inject('headings', []),
21
+ } = defineProps<Props>()
13
22
 
14
- const visited = ref(false)
23
+ const linkRef = useTemplateRef('link')
24
+ const instance = getCurrentInstance()
25
+ const emit = defineEmits(['click'])
15
26
  const isCompact = inject('compact', compact)
27
+ const isVisited = ref(false)
16
28
  const label = computed(() => data.join(', '))
29
+
30
+ const onClick = (e: Event) => {
31
+ if (!url) {
32
+ e.preventDefault()
33
+ emit('click', instance)
34
+ return
35
+ }
36
+
37
+ isVisited.value = true
38
+ }
39
+
40
+ const click = () => {
41
+ linkRef.value.click()
42
+ }
43
+
44
+ watch(
45
+ () => visited,
46
+ () => {
47
+ isVisited.value = visited
48
+ },
49
+ )
50
+
51
+ defineExpose({ click })
17
52
  </script>
18
53
 
19
54
  <template>
20
55
  <tr
21
- :class="['download-list-item', { visited, compact: isCompact }]"
56
+ :class="['download-list-item', { visited: isVisited, loading, compact: isCompact }]"
22
57
  :style="{ '--rows': Math.round(data.length / 2) }"
23
58
  >
24
59
  <td v-for="(cell, idx) in data" :key="idx" class="download-list-item__cell">
@@ -29,15 +64,18 @@ const label = computed(() => data.join(', '))
29
64
  </td>
30
65
 
31
66
  <td class="download-list-item__cell cta">
32
- <a
67
+ <component
68
+ :is="url ? 'a' : 'button'"
69
+ ref="link"
33
70
  class="download-list-item__link"
34
71
  :href="url"
35
72
  target="_blank"
36
73
  download
37
74
  :aria-label="label"
38
- @click="visited = true"
75
+ :disabled="loading"
76
+ @click="onClick"
39
77
  >
40
- </a>
78
+ </component>
41
79
  <div class="download-list-item__icon-wrapper">
42
80
  <UIcon name="mini-check" class="download-list-item__check" />
43
81
 
@@ -3,66 +3,57 @@
3
3
  @use '../../base/abstracts' as a;
4
4
  @use '../../elements/text-link/text-link.scss' as t;
5
5
 
6
- .hint {
7
- @mixin type-neutral {
8
- background-color: var(--e-c-secondary-05-100);
9
- color: var(--e-c-secondary-05-900);
6
+ @mixin type-neutral {
7
+ background-color: var(--e-c-secondary-05-100);
8
+ color: var(--e-c-secondary-05-900);
10
9
 
11
- &::before {
12
- background-image: url("data:image/svg+xml,%3Csvg width='24' height='24' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2Zm0 15c-.55 0-1-.45-1-1v-4c0-.55.45-1 1-1s1 .45 1 1v4c0 .55-.45 1-1 1Zm1-8h-2V7h2v2Z' fill='%230096DC'/%3E%3C/svg%3E");
13
- }
10
+ &::before {
11
+ background-image: url("data:image/svg+xml,%3Csvg width='24' height='24' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2Zm0 15c-.55 0-1-.45-1-1v-4c0-.55.45-1 1-1s1 .45 1 1v4c0 .55-.45 1-1 1Zm1-8h-2V7h2v2Z' fill='%230096DC'/%3E%3C/svg%3E");
12
+ }
14
13
 
15
- .hint__richtext {
16
- margin-left: var(--e-space-9);
14
+ .hint__richtext {
15
+ margin-left: var(--e-space-9);
17
16
 
18
- @include a.bp(lg) {
19
- margin-left: 0;
20
- }
17
+ @include a.bp(lg) {
18
+ margin-left: 0;
21
19
  }
20
+ }
22
21
 
23
- // override some richtext styles.
24
- .richtext {
25
- a {
26
- font-size: 100px;
27
- color: inherit;
22
+ // override some richtext styles.
23
+ .richtext {
24
+ a {
25
+ font-size: 100px;
26
+ color: inherit;
28
27
 
29
- &:active,
30
- &:hover {
31
- text-decoration-color: var(--e-c-secondary-05-200);
32
- }
28
+ &:active,
29
+ &:hover {
30
+ text-decoration-color: var(--e-c-secondary-05-200);
33
31
  }
34
32
  }
35
33
  }
34
+ }
36
35
 
37
- @mixin type-warning {
38
- background-color: var(--e-c-signal-02-100);
39
- color: var(--e-c-signal-02-900);
36
+ @mixin type-warning {
37
+ background-color: var(--e-c-signal-02-100);
38
+ color: var(--e-c-signal-02-900);
40
39
 
41
- &::before {
42
- background-image: url("data:image/svg+xml,%3Csvg width='24' height='24' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M1 21 12 2l11 19H1Zm11-3c.283 0 .52-.096.713-.288A.968.968 0 0 0 13 17a.968.968 0 0 0-.287-.712A.968.968 0 0 0 12 16a.968.968 0 0 0-.713.288A.968.968 0 0 0 11 17c0 .283.096.52.287.712.192.192.43.288.713.288Zm-1-3h2v-5h-2v5Z' fill='%23FF9800'/%3E%3C/svg%3E");
43
- }
40
+ &::before {
41
+ background-image: url("data:image/svg+xml,%3Csvg width='24' height='24' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M1 21 12 2l11 19H1Zm11-3c.283 0 .52-.096.713-.288A.968.968 0 0 0 13 17a.968.968 0 0 0-.287-.712A.968.968 0 0 0 12 16a.968.968 0 0 0-.713.288A.968.968 0 0 0 11 17c0 .283.096.52.287.712.192.192.43.288.713.288Zm-1-3h2v-5h-2v5Z' fill='%23FF9800'/%3E%3C/svg%3E");
42
+ }
44
43
 
45
- .hint__richtext {
46
- margin-left: var(--e-space-9);
44
+ .hint__richtext {
45
+ margin-left: var(--e-space-9);
47
46
 
48
- @include a.bp(lg) {
49
- margin-left: 0;
50
- }
47
+ @include a.bp(lg) {
48
+ margin-left: 0;
51
49
  }
50
+ }
52
51
 
53
- // override some richtext styles.
54
- .richtext {
55
- a {
56
- color: inherit;
57
-
58
- &:active,
59
- &:hover {
60
- text-decoration-color: var(--e-c-signal-02-100);
61
- }
62
- }
63
- }
52
+ // override some richtext styles.
53
+ .richtext {
54
+ a {
55
+ color: inherit;
64
56
 
65
- .hint__link {
66
57
  &:active,
67
58
  &:hover {
68
59
  text-decoration-color: var(--e-c-signal-02-100);
@@ -70,47 +61,63 @@
70
61
  }
71
62
  }
72
63
 
73
- @mixin type-legal {
74
- background-color: var(--e-c-mono-00);
75
- border: 1px solid var(--e-c-mono-500);
76
- border-left-width: 4px;
77
- border-left-color: var(--e-c-mono-700);
78
- color: var(--e-c-mono-900);
79
-
80
- &::before {
81
- background-image: url("data:image/svg+xml,%3Csvg width='24' height='24' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath fill-rule='evenodd' clip-rule='evenodd' d='m12.86 3.404-.81.81 3.352 3.352.81-.81-3.353-3.352Zm.707-1.697a1 1 0 0 0-1.415 0l-1.8 1.8a1 1 0 0 0-.01 1.404L6.952 8.303a1 1 0 0 0-1.404.01l-1.84 1.84a1 1 0 0 0 0 1.414l4.342 4.342a1 1 0 0 0 1.414 0l1.84-1.84a1 1 0 0 0 0-1.414l-.092-.092.93-.93L20.6 20l1.4-1.4-8.46-8.366 1.063-1.062.091.091a1 1 0 0 0 1.415 0l1.8-1.8a1 1 0 0 0 0-1.414l-4.342-4.342ZM6.253 10.01l-.85.85 3.352 3.352.85-.85-3.352-3.352Zm1.975-.581 3.235-3.235L13.32 8.05l-3.235 3.235L8.23 9.429ZM16 21H4v-2h12v2Z' fill='%236B6B6B'/%3E%3C/svg%3E");
82
- top: 0;
83
- left: calc(
84
- -24px - 12px - 4px
85
- ); // 24px: icon width, 12px: distance to box, 4px: additonal border-width
64
+ .hint__link {
65
+ &:active,
66
+ &:hover {
67
+ text-decoration-color: var(--e-c-signal-02-100);
86
68
  }
69
+ }
70
+ }
87
71
 
88
- > p,
89
- .richtext {
90
- margin-left: 0;
91
- }
72
+ @mixin type-legal {
73
+ background-color: var(--e-c-mono-00);
74
+ border: 1px solid var(--e-c-mono-500);
75
+ border-left-width: 4px;
76
+ border-left-color: var(--e-c-mono-700);
77
+ color: var(--e-c-mono-900);
92
78
 
93
- .hint__link {
94
- &:active,
95
- &:hover {
96
- text-decoration-color: var(--e-c-mono-100);
97
- }
79
+ &::before {
80
+ background-image: url("data:image/svg+xml,%3Csvg width='24' height='24' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath fill-rule='evenodd' clip-rule='evenodd' d='m12.86 3.404-.81.81 3.352 3.352.81-.81-3.353-3.352Zm.707-1.697a1 1 0 0 0-1.415 0l-1.8 1.8a1 1 0 0 0-.01 1.404L6.952 8.303a1 1 0 0 0-1.404.01l-1.84 1.84a1 1 0 0 0 0 1.414l4.342 4.342a1 1 0 0 0 1.414 0l1.84-1.84a1 1 0 0 0 0-1.414l-.092-.092.93-.93L20.6 20l1.4-1.4-8.46-8.366 1.063-1.062.091.091a1 1 0 0 0 1.415 0l1.8-1.8a1 1 0 0 0 0-1.414l-4.342-4.342ZM6.253 10.01l-.85.85 3.352 3.352.85-.85-3.352-3.352Zm1.975-.581 3.235-3.235L13.32 8.05l-3.235 3.235L8.23 9.429ZM16 21H4v-2h12v2Z' fill='%236B6B6B'/%3E%3C/svg%3E");
81
+ top: 0;
82
+ left: calc(
83
+ -24px - 12px - 4px
84
+ ); // 24px: icon width, 12px: distance to box, 4px: additonal border-width
85
+ }
86
+
87
+ > p,
88
+ .richtext {
89
+ margin-left: 0;
90
+ }
91
+
92
+ .hint__link {
93
+ &:active,
94
+ &:hover {
95
+ text-decoration-color: var(--e-c-mono-100);
98
96
  }
97
+ }
99
98
 
100
- @include a.bp(lg) {
101
- margin-top: calc(4px + 4px + 24px);
102
- border: 1px solid var(--e-c-mono-500);
103
- border-top-width: 4px;
104
- border-top-color: var(--e-c-mono-700);
105
-
106
- &::before {
107
- left: 0;
108
- top: calc(
109
- -24px - 4px - 4px
110
- ); // 24px: icon height, 12px: distance to box, 4px: additonal border-width
111
- }
99
+ @include a.bp(lg) {
100
+ margin-top: calc(4px + 4px + 24px);
101
+ border: 1px solid var(--e-c-mono-500);
102
+ border-top-width: 4px;
103
+ border-top-color: var(--e-c-mono-700);
104
+
105
+ &::before {
106
+ left: 0;
107
+ top: calc(
108
+ -24px - 4px - 4px
109
+ ); // 24px: icon height, 12px: distance to box, 4px: additonal border-width
112
110
  }
113
111
  }
112
+ }
113
+
114
+ .hint {
115
+ position: relative;
116
+ padding: var(--e-space-5) var(--e-space-4);
117
+ border-radius: var(--e-brd-radius-1);
118
+
119
+ // Default type
120
+ @include type-neutral;
114
121
 
115
122
  .hint__link {
116
123
  @include t.text-link;
@@ -130,13 +137,6 @@
130
137
  }
131
138
  }
132
139
 
133
- // Default type
134
- @include type-neutral;
135
-
136
- position: relative;
137
- padding: var(--e-space-5) var(--e-space-4);
138
- border-radius: var(--e-brd-radius-1);
139
-
140
140
  .hint__label {
141
141
  + .hint__richtext {
142
142
  margin-top: var(--e-space-1);
@@ -160,12 +160,6 @@
160
160
  @include a.type(200, strong);
161
161
 
162
162
  margin-left: var(--e-space-9);
163
-
164
- // margin-bottom: var(--e-space-1);
165
-
166
- // @include a.bp(lg) {
167
- // margin-bottom: var(--e-space-2);
168
- // }
169
163
  }
170
164
 
171
165
  @include a.bp(lg) {
@@ -1,5 +1,4 @@
1
1
  <script setup lang="ts">
2
- import { useSlots } from 'vue'
3
2
  import { URichtext } from '../'
4
3
  import { Cta } from '../../elements/types'
5
4
 
@@ -10,8 +9,7 @@ interface Props {
10
9
  text?: string
11
10
  }
12
11
 
13
- const { type = 'neutral' } = defineProps<Props>()
14
- const slots = useSlots()
12
+ const { label = '', link = undefined, text = '', type = 'neutral' } = defineProps<Props>()
15
13
  </script>
16
14
 
17
15
  <template>
@@ -1,9 +1,3 @@
1
- /**
2
- * It's not recommended to import components from this file, because tree-shaking won't work then.
3
- * -> https://vite.dev/guide/performance#avoid-barrel-files
4
- */
5
- import exp from 'node:constants'
6
-
7
1
  export { default as UAccordionItem } from './accordion-item/u-accordion-item.vue'
8
2
 
9
3
  // Cards
@@ -35,12 +35,12 @@
35
35
 
36
36
  .inline-edit__description,
37
37
  .inline-edit__summary {
38
+ color: var(--e-c-mono-700);
39
+
38
40
  @include a.type(300);
39
41
 
40
42
  // We don't need a full richtext implementation. The spacings are enough.
41
43
  @include r.richtext-spacing-rules;
42
-
43
- color: var(--e-c-mono-700);
44
44
  }
45
45
 
46
46
  .inline-edit__description {
@@ -1,7 +1,6 @@
1
1
  <script setup lang="ts">
2
2
  import { ref, inject, useId, watch, useTemplateRef } from 'vue'
3
3
  import { UButton } from '../../elements'
4
- import { URichtext } from '../../components'
5
4
  import { getTranslation } from '../../utils/translations/translate'
6
5
 
7
6
  interface Props {
@@ -17,6 +17,10 @@ interface Props {
17
17
  }
18
18
 
19
19
  const {
20
+ description = '',
21
+ icon = '',
22
+ iconBadge = undefined,
23
+ title = '',
20
24
  href = '',
21
25
  target = '_self',
22
26
  active = false,
@@ -59,7 +63,7 @@ const tag = computed(() => (href ? 'a' : 'div'))
59
63
 
60
64
  <style lang="scss" scoped src="./navigation-panel-tile.scss"></style>
61
65
  <style lang="scss">
62
- @use '../../base/abstracts/' as a;
66
+ @use '../../base/abstracts' as a;
63
67
 
64
68
  .navigation-panel-tile__description {
65
69
  @include a.bp(lg) {
@@ -15,6 +15,7 @@ interface Props {
15
15
  }
16
16
 
17
17
  const {
18
+ label = '',
18
19
  active = false,
19
20
  collapsed = false,
20
21
  labelHidden = false,
@@ -10,7 +10,7 @@ interface Props {
10
10
  image?: Image
11
11
  }
12
12
 
13
- const { image = null } = defineProps<Props>()
13
+ const { title = '', text = '', image = null } = defineProps<Props>()
14
14
 
15
15
  const slots = useSlots()
16
16
 
@@ -18,7 +18,9 @@ const observer = new IntersectionObserver(
18
18
  if (entries[0].isIntersecting) {
19
19
  observer.disconnect()
20
20
 
21
- _progress.value = progress
21
+ setTimeout(() => {
22
+ _progress.value = progress
23
+ }, 200)
22
24
  }
23
25
  },
24
26
  {
@@ -28,9 +30,7 @@ const observer = new IntersectionObserver(
28
30
  )
29
31
 
30
32
  onMounted(() => {
31
- setTimeout(() => {
32
- observer.observe(el.value)
33
- }, 200)
33
+ observer.observe(el.value)
34
34
  })
35
35
  </script>
36
36