@energie360/ui-library 0.1.33 → 0.1.34
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/_resets.scss +4 -0
- package/components/button-group/button-group.scss +12 -0
- package/components/button-group/u-button-group.vue +15 -0
- package/components/data-card/data-card.scss +15 -0
- package/components/data-card/u-data-card.vue +6 -1
- package/components/index.js +1 -0
- package/components/notification-item/notification-item.scss +1 -0
- package/components/table/table-cell.scss +1 -0
- package/components/welcome/butterfly-sprite.json +9 -0
- package/components/welcome/butterfly-sprite.png +0 -0
- package/components/welcome/u-welcome.vue +69 -1
- package/components/welcome/welcome.scss +10 -0
- package/dist/base-style.css +4 -0
- package/dist/base-style.css.map +1 -1
- package/dist/elements/form.css +1 -1
- package/dist/layout/form-grid.css.map +1 -1
- package/elements/form/form.scss +1 -1
- package/i18n/i18n.ts +22 -20
- package/layout/form-grid/form-grid.scss +2 -0
- package/layout/form-grid/u-form-col.vue +1 -1
- package/layout/form-grid/u-form-fieldset.vue +36 -0
- package/layout/form-grid/u-form-row.vue +29 -3
- package/layout/form-grid/u-form-wrapper.vue +7 -0
- package/layout/index.js +2 -0
- package/modules/dialog/dialog.scss +6 -1
- package/modules/footer/footer.scss +30 -4
- package/modules/login-animation/login-animation.scss +1 -3
- package/modules/login-animation/u-login-animation.vue +9 -5
- package/package.json +5 -5
package/base/_resets.scss
CHANGED
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
<script setup lang="ts">
|
|
2
|
+
interface Props {
|
|
3
|
+
type?: 'inline' | 'stacked'
|
|
4
|
+
}
|
|
5
|
+
|
|
6
|
+
const { type = 'inline' } = defineProps<Props>()
|
|
7
|
+
</script>
|
|
8
|
+
|
|
9
|
+
<template>
|
|
10
|
+
<div :class="['button-group', type]">
|
|
11
|
+
<slot />
|
|
12
|
+
</div>
|
|
13
|
+
</template>
|
|
14
|
+
|
|
15
|
+
<style scoped lang="scss" src="./button-group.scss"></style>
|
|
@@ -24,6 +24,11 @@
|
|
|
24
24
|
|
|
25
25
|
.data-card__value {
|
|
26
26
|
@include a.type(100);
|
|
27
|
+
|
|
28
|
+
&:has(.data-card__dot) {
|
|
29
|
+
display: flex;
|
|
30
|
+
column-gap: var(--e-space-2);
|
|
31
|
+
}
|
|
27
32
|
}
|
|
28
33
|
|
|
29
34
|
.data-card__ctas {
|
|
@@ -32,3 +37,13 @@
|
|
|
32
37
|
margin-top: var(--e-space-4);
|
|
33
38
|
line-height: 0;
|
|
34
39
|
}
|
|
40
|
+
|
|
41
|
+
.data-card__dot {
|
|
42
|
+
align-self: center;
|
|
43
|
+
flex: 0 0 auto;
|
|
44
|
+
display: block;
|
|
45
|
+
width: 8px;
|
|
46
|
+
height: 8px;
|
|
47
|
+
border-radius: 100%;
|
|
48
|
+
background-color: transparent;
|
|
49
|
+
}
|
|
@@ -3,6 +3,7 @@
|
|
|
3
3
|
interface dataItem {
|
|
4
4
|
heading: string
|
|
5
5
|
value: string
|
|
6
|
+
dotColor?: string
|
|
6
7
|
}
|
|
7
8
|
|
|
8
9
|
interface Props {
|
|
@@ -23,7 +24,11 @@ defineProps<Props>()
|
|
|
23
24
|
<slot>
|
|
24
25
|
<div v-for="(item, idx) in data" :key="idx">
|
|
25
26
|
<dt class="data-card__heading">{{ item.heading }}</dt>
|
|
26
|
-
<dd class="data-card__value"
|
|
27
|
+
<dd v-if="item.dotColor" class="data-card__value">
|
|
28
|
+
<span class="data-card__dot" :style="{ backgroundColor: item.dotColor }"></span>
|
|
29
|
+
<span class="data-card__value" v-html="item.value" />
|
|
30
|
+
</dd>
|
|
31
|
+
<dd v-else class="data-card__value" v-html="item.value"></dd>
|
|
27
32
|
</div>
|
|
28
33
|
</slot>
|
|
29
34
|
</dl>
|
package/components/index.js
CHANGED
|
@@ -74,3 +74,4 @@ export { default as UDefinitionList } from './definition-list/u-definition-list.
|
|
|
74
74
|
export { default as UDefinitionListItem } from './definition-list-item/u-definition-list-item.vue'
|
|
75
75
|
export { default as UCardStatistic } from './card-statistic/u-card-statistic.vue'
|
|
76
76
|
export { default as UEmpty } from './empty/u-empty.vue'
|
|
77
|
+
export { default as UButtonGroup } from './button-group/u-button-group.vue'
|
|
Binary file
|
|
@@ -1,15 +1,66 @@
|
|
|
1
1
|
<script setup lang="ts">
|
|
2
|
+
import USpriteAnimation from '../sprite-animation/u-sprite-animation.vue'
|
|
2
3
|
import { Image } from '../../elements/types'
|
|
4
|
+
import butterflySpritePositions from './butterfly-sprite.json'
|
|
5
|
+
import butterflySprite from './butterfly-sprite.png'
|
|
6
|
+
import { gsap } from 'gsap'
|
|
7
|
+
import { ref, useTemplateRef } from 'vue'
|
|
3
8
|
|
|
4
9
|
interface Props {
|
|
5
10
|
text?: string
|
|
6
11
|
image?: Image
|
|
7
12
|
}
|
|
8
13
|
defineProps<Props>()
|
|
14
|
+
|
|
15
|
+
const butterfly = useTemplateRef('butterfly')
|
|
16
|
+
const container = useTemplateRef('container')
|
|
17
|
+
const butterflyWrapper = useTemplateRef('butterflyWrapper')
|
|
18
|
+
const mouseRightSide = ref(true)
|
|
19
|
+
const xOffset = -300
|
|
20
|
+
|
|
21
|
+
const onMouseleave = () => {
|
|
22
|
+
mouseRightSide.value = Number(gsap.getProperty(butterflyWrapper.value, 'x')) < 0
|
|
23
|
+
|
|
24
|
+
gsap.to(butterflyWrapper.value, {
|
|
25
|
+
x: 0,
|
|
26
|
+
y: 0,
|
|
27
|
+
ease: 'power2',
|
|
28
|
+
duration: 4,
|
|
29
|
+
overwrite: true,
|
|
30
|
+
})
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
const onMousemove = (e: MouseEvent) => {
|
|
34
|
+
const { left, top, width, height } = container.value.getBoundingClientRect()
|
|
35
|
+
|
|
36
|
+
const halfW = width / 2
|
|
37
|
+
const halfH = height / 2
|
|
38
|
+
const mouseX = e.x - left
|
|
39
|
+
const mouseY = e.y - top
|
|
40
|
+
|
|
41
|
+
const x = gsap.utils.interpolate(-halfW, halfW, mouseX / width)
|
|
42
|
+
const y = gsap.utils.interpolate(-halfH, halfH, mouseY / height)
|
|
43
|
+
|
|
44
|
+
gsap.to(butterflyWrapper.value, {
|
|
45
|
+
x: x + xOffset,
|
|
46
|
+
y: y,
|
|
47
|
+
duration: 10,
|
|
48
|
+
ease: 'power1',
|
|
49
|
+
overwrite: true,
|
|
50
|
+
onUpdate() {
|
|
51
|
+
mouseRightSide.value =
|
|
52
|
+
Number(gsap.getProperty(butterflyWrapper.value, 'x')) < mouseX + xOffset - width / 2
|
|
53
|
+
},
|
|
54
|
+
})
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
const onSpriteReady = () => {
|
|
58
|
+
butterfly.value.playLoop()
|
|
59
|
+
}
|
|
9
60
|
</script>
|
|
10
61
|
|
|
11
62
|
<template>
|
|
12
|
-
<div class="welcome">
|
|
63
|
+
<div ref="container" class="welcome" @mousemove="onMousemove" @mouseleave="onMouseleave">
|
|
13
64
|
<div class="welcome__content">
|
|
14
65
|
<h2>
|
|
15
66
|
<slot>{{ text }}</slot>
|
|
@@ -21,6 +72,23 @@ defineProps<Props>()
|
|
|
21
72
|
<img :src="image.src" :alt="image.alt" />
|
|
22
73
|
</slot>
|
|
23
74
|
</div>
|
|
75
|
+
|
|
76
|
+
<div ref="butterflyWrapper" class="welcome__sprite-animation">
|
|
77
|
+
<USpriteAnimation
|
|
78
|
+
ref="butterfly"
|
|
79
|
+
:style="{
|
|
80
|
+
transform: mouseRightSide ? 'scaleX(1)' : 'scaleX(-1)',
|
|
81
|
+
}"
|
|
82
|
+
:spritesheet-path="butterflySprite"
|
|
83
|
+
:frame-positions="butterflySpritePositions"
|
|
84
|
+
:frame-width="202"
|
|
85
|
+
:frame-height="300"
|
|
86
|
+
:width="32"
|
|
87
|
+
:height="47"
|
|
88
|
+
:duration="1000"
|
|
89
|
+
@ready="onSpriteReady"
|
|
90
|
+
/>
|
|
91
|
+
</div>
|
|
24
92
|
</div>
|
|
25
93
|
</template>
|
|
26
94
|
|
|
@@ -18,6 +18,7 @@
|
|
|
18
18
|
min-height: a.rem(86);
|
|
19
19
|
height: auto;
|
|
20
20
|
padding: var(--e-space-3) var(--e-space-4);
|
|
21
|
+
pointer-events: none;
|
|
21
22
|
}
|
|
22
23
|
}
|
|
23
24
|
|
|
@@ -46,3 +47,12 @@
|
|
|
46
47
|
display: none;
|
|
47
48
|
}
|
|
48
49
|
}
|
|
50
|
+
|
|
51
|
+
.welcome__sprite-animation {
|
|
52
|
+
position: absolute;
|
|
53
|
+
right: 290px;
|
|
54
|
+
|
|
55
|
+
@include a.bp(lg) {
|
|
56
|
+
right: 32px;
|
|
57
|
+
}
|
|
58
|
+
}
|
package/dist/base-style.css
CHANGED
package/dist/base-style.css.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sourceRoot":"","sources":["../base/main-base.scss","../base/_resets.scss","../base/abstracts/_resets.scss","../base/abstracts/_variables.scss","../base/abstracts/_functions.scss","../base/_input-resets.scss","../base/abstracts/_mixins.scss","../base/_html.scss","../base/_body.scss","../base/_focus-handling.scss","../node_modules/@energie360/design-tokens/dist/fonts/fonts.css","../node_modules/@energie360/design-tokens/dist/css/design-tokens.css"],"names":[],"mappings":";AAAA;AAAA;AAAA;AAAA;ACEA;EACE;EACA;;;AAGF;AAAA;AAAA;AAAA;AAAA;AAAA;EAME;EACA;EACA;EACA;;;AAGF;EACE;EACA;;;AAGF;AAAA;AAAA;EAGE;;;AC1BA;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;ADuBJ;AAAA;EAEE;EACA;EACA;;;AAGF;AAAA;AAAA;EAGE;;;AAGF;EACE;;;AAGF;AAAA;EAEE;EACA;;;AAGF;EACE;EACA;EACA;;;
|
|
1
|
+
{"version":3,"sourceRoot":"","sources":["../base/main-base.scss","../base/_resets.scss","../base/abstracts/_resets.scss","../base/abstracts/_variables.scss","../base/abstracts/_functions.scss","../base/_input-resets.scss","../base/abstracts/_mixins.scss","../base/_html.scss","../base/_body.scss","../base/_focus-handling.scss","../node_modules/@energie360/design-tokens/dist/fonts/fonts.css","../node_modules/@energie360/design-tokens/dist/css/design-tokens.css"],"names":[],"mappings":";AAAA;AAAA;AAAA;AAAA;ACEA;EACE;EACA;;;AAGF;AAAA;AAAA;AAAA;AAAA;AAAA;EAME;EACA;EACA;EACA;;;AAGF;EACE;EACA;;;AAGF;AAAA;AAAA;EAGE;;;AC1BA;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;ADuBJ;AAAA;EAEE;EACA;EACA;;;AAGF;AAAA;AAAA;EAGE;;;AAGF;EACE;;;AAGF;AAAA;EAEE;EACA;;;AAGF;EACE;EACA;EACA;;;AAGF;EACE;;;AEzB+E;AChCjF;ACHA;AAAA;AAAA;EAGE;EACA;EACA;EACA;EACA;EACA;;;AAGF;AAAA;AAAA;EC8BE;EACA;EAKE;;;AD7BF;EACE;;AAGF;EACE;;;AAIJ;EACE;;;AAGF;EACE;EACA;;;AAIA;EACE;;;AAIJ;EACE;;;AAGF;EAEE;;AAEA;EAEE;EACA;;;AEvDJ;EACE;EACA;EACA;;;AAGF;AAAA;AAAA;EAGE;;;ACTF;EACE;EACA;EACA;EACA;EACA;;;ACAF;EACE;;;AAGF;EACE;EACA;EACA;;;AAGF;EACE;;;AChBF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAqBA;AAEA;AAEA;AAEA;AAEA;AACA;EACE;EACA;EACA;EACA;EACA,KACE;;AAIJ;AACA;EACE;EACA;EACA;EACA;EACA,KACE;;AC/CJ;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;AAAA;EAEA;AAAA;EAEA;AAAA;EAEA;AAAA;EAEA;;;AX7MA;AAAA;AAAA;AAAA;EACE","file":"base-style.css"}
|
package/dist/elements/form.css
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sourceRoot":"","sources":["../../base/abstracts/_variables.scss","../../base/abstracts/_functions.scss","../../layout/grid/grid.mixin.scss","../../layout/form-grid/form-grid.scss","../../base/abstracts/_mixins.scss"],"names":[],"mappings":"AAqCiF;AChCjF;ACFA;AAAA;AAAA;AAAA;AA0BA;AAAA;;AAAA;AAAA;AAAA;
|
|
1
|
+
{"version":3,"sourceRoot":"","sources":["../../base/abstracts/_variables.scss","../../base/abstracts/_functions.scss","../../layout/grid/grid.mixin.scss","../../layout/form-grid/form-grid.scss","../../base/abstracts/_mixins.scss"],"names":[],"mappings":"AAqCiF;AChCjF;ACFA;AAAA;AAAA;AAAA;AA0BA;AAAA;;AAAA;AAAA;AAAA;ACvBA;EACE;;;AAGF;EDEE;EACA;EACA,KFgBgB;;AIThB;EDXF;IDOI,KFca;;;AIVf;EDXF;IDWI,KFWY;;;AIXd;EDXF;IDeI,KFQY;;;AGpBd;EDyBA;EACA,WAHY;;AEfZ;EDRA;ID+BE;IACA,WAHW;;;AErBb;EDRA;IDsCE;IACA,WAHU;;;AE5BZ;EDRA;ID6CE;IACA,WAHU;;;ACtCZ;EDoBA;EACA,WAHY;;AEfZ;EDHA;ID0BE;IACA,WAHW;;;AErBb;EDHA;IDiCE;IACA,WAHU;;;AE5BZ;EDHA;IDwCE;IACA,WAHU;;;AClCZ;EDgBA;EACA,WAHY;;AEfZ;EDCA;IDsBE;IACA,WAHW;;;AErBb;EDCA;ID6BE;IACA,WAHU;;;AE5BZ;EDCA;IDoCE;IACA,WAHU;;;AC7BZ;EDWA;EACA,WAHY;;AEfZ;EDMA;IDiBE;IACA,WAHW;;;AErBb;EDMA;IDwBE;IACA,WAHU;;;AE5BZ;EDMA;ID+BE;IACA,WAHU;;;ACzBZ;EDOA;EACA,WAHY;;AEfZ;EDUA;IDaE;IACA,WAHW;;;AErBb;EDUA;IDoBE;IACA,WAHU;;;AE5BZ;EDUA;ID2BE;IACA,WAHU;;;AEnCZ;EDcA;AAAA;AAAA;AAAA;IDGA;IACA,WAHY;;;AEfZ;EDcA;AAAA;AAAA;AAAA;IDSE;IACA,WAHW;;;AErBb;EDcA;AAAA;AAAA;AAAA;IDgBE;IACA,WAHU;;;AE5BZ;EDcA;AAAA;AAAA;AAAA;IDuBE;IACA,WAHU;;;ACZZ;EACE","file":"form-grid.css"}
|
package/elements/form/form.scss
CHANGED
package/i18n/i18n.ts
CHANGED
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
// TODO: Update translations
|
|
2
|
+
|
|
1
3
|
const translations = {
|
|
2
4
|
DE: {
|
|
3
5
|
yes: 'Ja',
|
|
@@ -26,13 +28,13 @@ const translations = {
|
|
|
26
28
|
removeNotification: 'Benachrichtigung entfernen',
|
|
27
29
|
},
|
|
28
30
|
FR: {
|
|
29
|
-
yes: '
|
|
30
|
-
no: '
|
|
31
|
-
optional: '
|
|
32
|
-
increaseValue: '
|
|
33
|
-
decreaseValue: '
|
|
34
|
-
showPassword: '
|
|
35
|
-
hidePassword: '
|
|
31
|
+
yes: 'Oui',
|
|
32
|
+
no: 'Non',
|
|
33
|
+
optional: 'Facultatif',
|
|
34
|
+
increaseValue: 'Augmenter la valeur',
|
|
35
|
+
decreaseValue: 'Diminuer la valeur',
|
|
36
|
+
showPassword: 'Afficher le mot de passe',
|
|
37
|
+
hidePassword: 'Masquer le mot de passe',
|
|
36
38
|
close: 'Fermer',
|
|
37
39
|
passwordRequirements: 'Exigences relatives au mot de passe',
|
|
38
40
|
edit: 'Modifier',
|
|
@@ -52,13 +54,13 @@ const translations = {
|
|
|
52
54
|
removeNotification: 'supprimer la notification',
|
|
53
55
|
},
|
|
54
56
|
IT: {
|
|
55
|
-
yes: '
|
|
56
|
-
no: '
|
|
57
|
-
optional: '
|
|
58
|
-
increaseValue: '
|
|
59
|
-
decreaseValue: '
|
|
60
|
-
showPassword: '
|
|
61
|
-
hidePassword: '
|
|
57
|
+
yes: 'Sì',
|
|
58
|
+
no: 'No',
|
|
59
|
+
optional: 'Opzionale',
|
|
60
|
+
increaseValue: 'Aumentare il valore',
|
|
61
|
+
decreaseValue: 'Diminuire il valore',
|
|
62
|
+
showPassword: 'Mostra password',
|
|
63
|
+
hidePassword: 'Nascondi password',
|
|
62
64
|
close: 'Chiudere',
|
|
63
65
|
passwordRequirements: 'Requisiti per la password',
|
|
64
66
|
edit: 'modificare',
|
|
@@ -78,13 +80,13 @@ const translations = {
|
|
|
78
80
|
removeNotification: 'rimuovere la notifica',
|
|
79
81
|
},
|
|
80
82
|
EN: {
|
|
81
|
-
yes: '
|
|
82
|
-
no: '
|
|
83
|
+
yes: 'Yes',
|
|
84
|
+
no: 'No',
|
|
83
85
|
optional: 'Optional',
|
|
84
|
-
increaseValue: '
|
|
85
|
-
decreaseValue: '
|
|
86
|
-
showPassword: '
|
|
87
|
-
hidePassword: '
|
|
86
|
+
increaseValue: 'Increase value',
|
|
87
|
+
decreaseValue: 'Decrease value',
|
|
88
|
+
showPassword: 'Show password',
|
|
89
|
+
hidePassword: 'Hide Password',
|
|
88
90
|
close: 'Close',
|
|
89
91
|
passwordRequirements: 'Password requirements',
|
|
90
92
|
edit: 'Edit',
|
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
@use '../grid/grid.mixin' as g;
|
|
2
2
|
@use '../../base/abstracts' as a;
|
|
3
3
|
|
|
4
|
+
// TODO: Refactor form-grid. Implement styles from `elements/form/form.scss` here.
|
|
5
|
+
|
|
4
6
|
// TODO: This class doesn't seem to be necessary. Check first then remove it.
|
|
5
7
|
.form-grid {
|
|
6
8
|
width: 100%;
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
<template>
|
|
2
|
+
<fieldset class="form-fieldset">
|
|
3
|
+
<legend v-if="$slots.legend" class="form-fieldset__legend">
|
|
4
|
+
<slot name="legend" />
|
|
5
|
+
</legend>
|
|
6
|
+
|
|
7
|
+
<p v-if="$slots.text" class="form-fieldset__text">
|
|
8
|
+
<slot name="text" />
|
|
9
|
+
</p>
|
|
10
|
+
|
|
11
|
+
<slot />
|
|
12
|
+
</fieldset>
|
|
13
|
+
</template>
|
|
14
|
+
|
|
15
|
+
<style scoped lang="scss" src="./form-grid.scss"></style>
|
|
16
|
+
<style scoped lang="scss">
|
|
17
|
+
@use '../../base/abstracts' as a;
|
|
18
|
+
|
|
19
|
+
.form-fieldset + .form-fieldset {
|
|
20
|
+
margin-top: var(--e-space-10);
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
.form-fieldset__legend {
|
|
24
|
+
@include a.type(300, strong);
|
|
25
|
+
|
|
26
|
+
&:not(:has(+ .form-fieldset__text)) {
|
|
27
|
+
margin-bottom: var(--e-space-6);
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
.form-fieldset__text {
|
|
32
|
+
@include a.type(300);
|
|
33
|
+
|
|
34
|
+
margin-bottom: var(--e-space-6);
|
|
35
|
+
}
|
|
36
|
+
</style>
|
|
@@ -1,7 +1,33 @@
|
|
|
1
|
+
<script setup lang="ts">
|
|
2
|
+
interface Props {
|
|
3
|
+
type?: 'input' | 'cta'
|
|
4
|
+
}
|
|
5
|
+
|
|
6
|
+
const { type = 'input' } = defineProps<Props>()
|
|
7
|
+
</script>
|
|
8
|
+
|
|
1
9
|
<template>
|
|
2
|
-
<div class="form-row">
|
|
3
|
-
<slot />
|
|
4
|
-
</div>
|
|
10
|
+
<div :class="['form-row', `form__${type}-row`]"><slot /></div>
|
|
5
11
|
</template>
|
|
6
12
|
|
|
7
13
|
<style lang="scss" scoped src="./form-grid.scss"></style>
|
|
14
|
+
|
|
15
|
+
<style scoped lang="scss">
|
|
16
|
+
@use '../../base/abstracts' as a;
|
|
17
|
+
|
|
18
|
+
.form-row {
|
|
19
|
+
:slotted(.form__input-col + .form__input-col) {
|
|
20
|
+
@include a.bp(lg) {
|
|
21
|
+
margin-top: var(--e-space-6);
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
.form__input-row + .form__input-row {
|
|
27
|
+
margin-top: var(--e-space-6);
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
*:not(legend) + .form-row.form__cta-row {
|
|
31
|
+
margin-top: var(--e-space-10);
|
|
32
|
+
}
|
|
33
|
+
</style>
|
package/layout/index.js
CHANGED
|
@@ -8,3 +8,5 @@ export { default as UPortalBlock } from './portal-block/u-portal-block.vue'
|
|
|
8
8
|
export { default as USplitLayout } from './split/u-split-layout.vue'
|
|
9
9
|
export { default as UFormRow } from './form-grid/u-form-row.vue'
|
|
10
10
|
export { default as UFormCol } from './form-grid/u-form-col.vue'
|
|
11
|
+
export { default as UFormWrapper } from './form-grid/u-form-wrapper.vue'
|
|
12
|
+
export { default as UFormFieldset } from './form-grid/u-form-fieldset.vue'
|
|
@@ -125,7 +125,12 @@
|
|
|
125
125
|
left: 0;
|
|
126
126
|
width: 100%;
|
|
127
127
|
height: var(--overflow-gradient-height);
|
|
128
|
-
background-image: linear-gradient(
|
|
128
|
+
background-image: linear-gradient(
|
|
129
|
+
0deg,
|
|
130
|
+
rgb(255 255 255 / 100%) 0%,
|
|
131
|
+
rgb(255 255 255 / 80%) 50%,
|
|
132
|
+
rgb(255 255 255 / 0%) 100%
|
|
133
|
+
);
|
|
129
134
|
}
|
|
130
135
|
|
|
131
136
|
&.cta-inline {
|
|
@@ -28,9 +28,35 @@
|
|
|
28
28
|
}
|
|
29
29
|
|
|
30
30
|
&.portal {
|
|
31
|
+
container-type: inline-size;
|
|
32
|
+
|
|
31
33
|
.footer__container {
|
|
32
34
|
@include l.portal-content-container;
|
|
33
35
|
}
|
|
36
|
+
|
|
37
|
+
@container (width < 820px) {
|
|
38
|
+
// Mobile Layout
|
|
39
|
+
.footer__bottom-row {
|
|
40
|
+
flex-direction: column;
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
.footer__meta-navigation {
|
|
44
|
+
flex-direction: column;
|
|
45
|
+
gap: var(--e-space-4);
|
|
46
|
+
margin-bottom: var(--e-space-8);
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
.footer__copyright {
|
|
50
|
+
position: absolute;
|
|
51
|
+
left: 0;
|
|
52
|
+
bottom: 0;
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
.footer__language-nav {
|
|
56
|
+
position: relative;
|
|
57
|
+
margin-bottom: calc(var(--e-space-8) + #{a.rem(18)});
|
|
58
|
+
}
|
|
59
|
+
}
|
|
34
60
|
}
|
|
35
61
|
}
|
|
36
62
|
|
|
@@ -48,7 +74,7 @@
|
|
|
48
74
|
.footer__top-row {
|
|
49
75
|
display: flex;
|
|
50
76
|
flex-wrap: wrap;
|
|
51
|
-
|
|
77
|
+
gap: var(--e-space-12);
|
|
52
78
|
}
|
|
53
79
|
|
|
54
80
|
.footer__addresses-column {
|
|
@@ -87,7 +113,7 @@
|
|
|
87
113
|
|
|
88
114
|
.footer__social-links {
|
|
89
115
|
display: flex;
|
|
90
|
-
|
|
116
|
+
gap: var(--e-space-6);
|
|
91
117
|
}
|
|
92
118
|
|
|
93
119
|
.footer__bottom {
|
|
@@ -126,7 +152,7 @@
|
|
|
126
152
|
@include a.type(100);
|
|
127
153
|
|
|
128
154
|
display: flex;
|
|
129
|
-
|
|
155
|
+
gap: var(--e-space-6);
|
|
130
156
|
margin-bottom: var(--e-space-3);
|
|
131
157
|
|
|
132
158
|
a {
|
|
@@ -139,7 +165,7 @@
|
|
|
139
165
|
|
|
140
166
|
@include a.bp(m) {
|
|
141
167
|
flex-direction: column;
|
|
142
|
-
|
|
168
|
+
gap: var(--e-space-4);
|
|
143
169
|
margin-bottom: var(--e-space-8);
|
|
144
170
|
}
|
|
145
171
|
}
|
|
@@ -27,6 +27,7 @@ $sprite-height-mobile: 59px;
|
|
|
27
27
|
position: relative;
|
|
28
28
|
max-width: 680px;
|
|
29
29
|
margin: 0 60px;
|
|
30
|
+
padding: 5%;
|
|
30
31
|
|
|
31
32
|
img {
|
|
32
33
|
user-select: none;
|
|
@@ -59,7 +60,4 @@ $sprite-height-mobile: 59px;
|
|
|
59
60
|
width: $sprite-width-mobile;
|
|
60
61
|
height: $sprite-height-mobile;
|
|
61
62
|
}
|
|
62
|
-
|
|
63
|
-
&.flip {
|
|
64
|
-
}
|
|
65
63
|
}
|
|
@@ -15,6 +15,8 @@ const onSpriteReady = () => {
|
|
|
15
15
|
}
|
|
16
16
|
|
|
17
17
|
const onMouseleave = () => {
|
|
18
|
+
mouseRightSide.value = Number(gsap.getProperty(butterflyWrapper.value, 'x')) < 0
|
|
19
|
+
|
|
18
20
|
gsap.to(butterflyWrapper.value, {
|
|
19
21
|
x: 0,
|
|
20
22
|
y: 0,
|
|
@@ -24,7 +26,7 @@ const onMouseleave = () => {
|
|
|
24
26
|
})
|
|
25
27
|
}
|
|
26
28
|
|
|
27
|
-
const onMousemove = (e) => {
|
|
29
|
+
const onMousemove = (e: MouseEvent) => {
|
|
28
30
|
const { left, top, width, height } = container.value.getBoundingClientRect()
|
|
29
31
|
|
|
30
32
|
const halfW = width / 2
|
|
@@ -32,17 +34,19 @@ const onMousemove = (e) => {
|
|
|
32
34
|
const mouseX = e.x - left
|
|
33
35
|
const mouseY = e.y - top
|
|
34
36
|
|
|
35
|
-
mouseRightSide.value = mouseX > halfW
|
|
36
|
-
|
|
37
37
|
const x = gsap.utils.interpolate(-halfW, halfW, mouseX / width)
|
|
38
38
|
const y = gsap.utils.interpolate(-halfH, halfH, mouseY / height)
|
|
39
39
|
|
|
40
40
|
gsap.to(butterflyWrapper.value, {
|
|
41
41
|
x: x,
|
|
42
42
|
y: y,
|
|
43
|
-
duration:
|
|
43
|
+
duration: 3.5,
|
|
44
44
|
ease: 'power1',
|
|
45
45
|
overwrite: true,
|
|
46
|
+
onUpdate() {
|
|
47
|
+
mouseRightSide.value =
|
|
48
|
+
Number(gsap.getProperty(butterflyWrapper.value, 'x')) < mouseX - width / 2
|
|
49
|
+
},
|
|
46
50
|
})
|
|
47
51
|
}
|
|
48
52
|
</script>
|
|
@@ -50,7 +54,7 @@ const onMousemove = (e) => {
|
|
|
50
54
|
<template>
|
|
51
55
|
<div ref="container" class="login-animation" @mousemove="onMousemove" @mouseleave="onMouseleave">
|
|
52
56
|
<div class="login-animation__image">
|
|
53
|
-
<div ref="butterflyWrapper"
|
|
57
|
+
<div ref="butterflyWrapper" class="login-animation__sprite">
|
|
54
58
|
<USpriteAnimation
|
|
55
59
|
ref="butterfly"
|
|
56
60
|
:style="{
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@energie360/ui-library",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.34",
|
|
4
4
|
"description": "",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.js",
|
|
@@ -24,18 +24,18 @@
|
|
|
24
24
|
"author": "",
|
|
25
25
|
"license": "MIT",
|
|
26
26
|
"devDependencies": {
|
|
27
|
-
"@lottiefiles/dotlottie-web": "^0.60.0",
|
|
28
27
|
"@tsconfig/node22": "^22.0.5",
|
|
29
|
-
"@types/node": "^25.0.
|
|
28
|
+
"@types/node": "^25.0.10",
|
|
30
29
|
"@vue/tsconfig": "^0.8.1",
|
|
31
30
|
"autoprefixer": "^10.4.23",
|
|
32
31
|
"chokidar": "^5.0.0",
|
|
33
32
|
"postcss": "^8.5.6",
|
|
34
|
-
"sass": "^1.97.
|
|
33
|
+
"sass": "^1.97.3",
|
|
35
34
|
"typescript": "^5.9.3"
|
|
36
35
|
},
|
|
37
36
|
"dependencies": {
|
|
38
|
-
"@lottiefiles/dotlottie-vue": "^0.10.
|
|
37
|
+
"@lottiefiles/dotlottie-vue": "^0.10.13",
|
|
38
|
+
"@lottiefiles/dotlottie-web": "^0.61.0",
|
|
39
39
|
"@lottiefiles/lottie-player": "^2.0.12",
|
|
40
40
|
"gsap": "^3.14.2",
|
|
41
41
|
"@energie360/design-tokens": "^1.3.0"
|