tide-design-system 2.1.11 → 2.1.13
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/.storybook/main.ts +1 -1
- package/dist/IconVerified-000f615f.js +20 -0
- package/dist/IconVerified-b71255f2.cjs +2 -0
- package/dist/css/dynamic-buttons.css +279 -0
- package/dist/css/dynamic-utilities.css +123 -0
- package/dist/css/main.css +4 -0
- package/dist/css/utilities-lg.css +402 -0
- package/dist/css/utilities-md.css +404 -0
- package/dist/css/utilities-sm.css +402 -0
- package/dist/css/utilities-xl.css +402 -0
- package/dist/css/utilities.css +4 -1520
- package/dist/css/variables.css +7 -15
- package/dist/style.css +1 -1
- package/dist/tide-design-system.cjs +2 -2
- package/dist/tide-design-system.esm.d.ts +112 -127
- package/dist/tide-design-system.esm.js +853 -866
- package/index.ts +2 -8
- package/package.json +1 -1
- package/src/assets/css/dynamic-buttons.css +279 -0
- package/src/assets/css/dynamic-utilities.css +123 -0
- package/src/assets/css/main.css +4 -0
- package/src/assets/css/utilities-lg.css +402 -0
- package/src/assets/css/utilities-md.css +404 -0
- package/src/assets/css/utilities-sm.css +402 -0
- package/src/assets/css/utilities-xl.css +402 -0
- package/src/assets/css/utilities.css +4 -1520
- package/src/assets/css/variables.css +7 -15
- package/src/assets/svg/icons/IconVerified.svg +1 -0
- package/src/components/TideAccordionItem.vue +8 -6
- package/src/components/TideAlert.vue +2 -2
- package/src/components/TideBadge.vue +17 -6
- package/src/components/TideBadgeTrustedPartner.vue +2 -2
- package/src/components/TideBadgeVerifiedVehicle.vue +32 -0
- package/src/components/TideBreadCrumbs.vue +3 -3
- package/src/components/TideButton.vue +1 -1
- package/src/components/TideButtonPagination.vue +1 -1
- package/src/components/TideButtonSegmented.vue +4 -3
- package/src/components/TideChipAction.vue +1 -2
- package/src/components/TideChipFilter.vue +2 -3
- package/src/components/TideChipInput.vue +1 -2
- package/src/components/TideColumns.vue +1 -1
- package/src/components/TideIndicator.vue +14 -18
- package/src/components/TideInputCheckbox.vue +6 -1
- package/src/components/TideInputRadio.vue +14 -2
- package/src/components/TideInputSelect.vue +3 -4
- package/src/components/TideInputText.vue +17 -6
- package/src/components/TideInputTextarea.vue +3 -15
- package/src/components/TideLink.vue +1 -3
- package/src/components/TideSeoLinks.vue +2 -2
- package/src/stories/FoundationsShadow.stories.ts +27 -8
- package/src/stories/TideBadge.stories.ts +13 -2
- package/src/stories/TideBadgeVerifiedVehicle.stories.ts +20 -0
- package/src/types/Badge.ts +0 -14
- package/src/types/Styles.ts +1 -0
- package/dist/IconVerified-04c12500.cjs +0 -2
- package/dist/IconVerified-a78449ea.js +0 -16
- package/src/components/TideBadgePremium.vue +0 -31
- package/src/stories/TideBadgePremium.stories.ts +0 -31
|
@@ -44,6 +44,7 @@
|
|
|
44
44
|
/* Shadow */
|
|
45
45
|
--tide-shadow-bottom: 0px 2px 8px 2px rgba(0, 0, 0, 0.07);
|
|
46
46
|
--tide-shadow-top: 0px -2px 8px 2px rgba(0, 0, 0, 0.07);
|
|
47
|
+
--tide-shadow-text: 0px 0px 5px rgba(0, 0, 0, 0.6);
|
|
47
48
|
|
|
48
49
|
/* Transparency */
|
|
49
50
|
--tide-transparent-100: color-mix(in srgb, white 90%, transparent);
|
|
@@ -52,10 +53,8 @@
|
|
|
52
53
|
--tide-transparent-400: color-mix(in srgb, black 50%, transparent);
|
|
53
54
|
|
|
54
55
|
/* Global tonal palette */
|
|
55
|
-
--tide-blue-100: #
|
|
56
|
-
--tide-blue-
|
|
57
|
-
--tide-blue-300: #76A3C4;
|
|
58
|
-
--tide-blue-400: #4984B0;
|
|
56
|
+
--tide-blue-100: #EBF1FD;
|
|
57
|
+
--tide-blue-400: #3870E9;
|
|
59
58
|
|
|
60
59
|
--tide-gray-100: #FFFFFF;
|
|
61
60
|
--tide-gray-200: #F5F5F5;
|
|
@@ -68,20 +67,13 @@
|
|
|
68
67
|
--tide-gray-900: #252526;
|
|
69
68
|
--tide-gray-1000: #000000;
|
|
70
69
|
|
|
71
|
-
--tide-green-100: #
|
|
72
|
-
--tide-green-
|
|
73
|
-
--tide-green-300: #B4D06E;
|
|
74
|
-
--tide-green-400: #9BC13D;
|
|
70
|
+
--tide-green-100: #E7F6ED;
|
|
71
|
+
--tide-green-400: #30B351;
|
|
75
72
|
|
|
76
|
-
--tide-red-100: #
|
|
77
|
-
--tide-red-
|
|
78
|
-
--tide-red-300: #D06E6E;
|
|
79
|
-
--tide-red-400: #C13D3D;
|
|
80
|
-
--tide-red-500: #912E2E;
|
|
73
|
+
--tide-red-100: #FBE9EA;
|
|
74
|
+
--tide-red-400: #D8202E;
|
|
81
75
|
|
|
82
76
|
--tide-yellow-100: #FEF2CC;
|
|
83
|
-
--tide-yellow-200: #FCE499;
|
|
84
|
-
--tide-yellow-300: #FBD766;
|
|
85
77
|
--tide-yellow-400: #FACA33;
|
|
86
78
|
|
|
87
79
|
/* Global color roles */
|
|
@@ -1,3 +1,4 @@
|
|
|
1
1
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
|
|
2
|
+
<path d="M7 8H17V16H7V8Z" fill="white"/>
|
|
2
3
|
<path d="m8.6 22.5-1.9-3.2-3.6-.8.35-3.7L1 12l2.45-2.8-.35-3.7 3.6-.8 1.9-3.2L12 2.95l3.4-1.45 1.9 3.2 3.6.8-.35 3.7L23 12l-2.45 2.8.35 3.7-3.6.8-1.9 3.2-3.4-1.45-3.4 1.45Zm2.35-6.95L16.6 9.9l-1.4-1.45-4.25 4.25-2.15-2.1L7.4 12l3.55 3.55Z" />
|
|
3
4
|
</svg>
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
import TideDivider from '@/components/TideDivider.vue';
|
|
3
3
|
import TideIcon from '@/components/TideIcon.vue';
|
|
4
4
|
import { ICON } from '@/types/Icon';
|
|
5
|
+
import { SIZE } from '@/types/Size';
|
|
5
6
|
import { CSS } from '@/types/Styles';
|
|
6
7
|
|
|
7
8
|
const emit = defineEmits(['toggle']);
|
|
@@ -35,7 +36,7 @@
|
|
|
35
36
|
:class="['tide-accordion-head', CSS.DISPLAY.FLEX, CSS.AXIS1.BETWEEN, CSS.PADDING.Y.HALF, CSS.CURSOR.POINTER]"
|
|
36
37
|
@click="handleToggleClick"
|
|
37
38
|
>
|
|
38
|
-
<div :class="[CSS.DISPLAY.FLEX, CSS.AXIS2.CENTER, CSS.GAP.HALF, CSS.FONT.
|
|
39
|
+
<div :class="[CSS.DISPLAY.FLEX, CSS.AXIS2.CENTER, CSS.GAP.HALF, CSS.FONT.ROLE.LABEL_1_SEMIBOLD]">
|
|
39
40
|
<span>{{ props.label }}</span>
|
|
40
41
|
|
|
41
42
|
<span
|
|
@@ -46,14 +47,15 @@
|
|
|
46
47
|
</span>
|
|
47
48
|
</div>
|
|
48
49
|
|
|
49
|
-
<TideIcon
|
|
50
|
+
<TideIcon
|
|
51
|
+
:icon="isExpanded ? ICON.EXPAND_LESS : ICON.EXPAND_MORE"
|
|
52
|
+
:size="SIZE.LARGE"
|
|
53
|
+
/>
|
|
50
54
|
</div>
|
|
51
55
|
|
|
52
56
|
<div :class="['tide-accordion-body', props.isExpanded ? 'expanded' : 'collapsed', CSS.DISPLAY.GRID]">
|
|
53
|
-
<div :class="[CSS.OVERFLOW.Y.HIDDEN]">
|
|
54
|
-
<
|
|
55
|
-
<slot />
|
|
56
|
-
</div>
|
|
57
|
+
<div :class="[CSS.OVERFLOW.Y.HIDDEN, CSS.MARGIN.Y.ONE, CSS.FONT.ROLE.BODY_1, CSS.FONT.COLOR.SURFACE.DEFAULT]">
|
|
58
|
+
<slot />
|
|
57
59
|
</div>
|
|
58
60
|
</div>
|
|
59
61
|
|
|
@@ -78,7 +78,7 @@
|
|
|
78
78
|
</div>
|
|
79
79
|
|
|
80
80
|
<div :class="['tide-alert-heading', CSS.DISPLAY.FLEX, CSS.AXIS2.CENTER]">
|
|
81
|
-
<h2 :class="[CSS.FONT.
|
|
81
|
+
<h2 :class="[CSS.FONT.ROLE.LABEL_1_SEMIBOLD, CSS.FONT.COLOR.SURFACE.DEFAULT]">
|
|
82
82
|
{{ props.heading }}
|
|
83
83
|
</h2>
|
|
84
84
|
</div>
|
|
@@ -90,7 +90,7 @@
|
|
|
90
90
|
aria-label="Close alert"
|
|
91
91
|
/>
|
|
92
92
|
|
|
93
|
-
<div :class="['tide-alert-body', CSS.FONT.
|
|
93
|
+
<div :class="['tide-alert-body', CSS.FONT.ROLE.LABEL_1, CSS.FONT.COLOR.SURFACE.VARIANT]">
|
|
94
94
|
<slot />
|
|
95
95
|
</div>
|
|
96
96
|
</div>
|
|
@@ -1,30 +1,41 @@
|
|
|
1
1
|
<script lang="ts" setup>
|
|
2
|
+
import TideIcon from '@/components/TideIcon.vue';
|
|
2
3
|
import { CSS } from '@/types/Styles';
|
|
3
4
|
|
|
5
|
+
import type { Icon } from '@/types/Icon';
|
|
6
|
+
|
|
4
7
|
type Props = {
|
|
8
|
+
iconLeading?: Icon;
|
|
9
|
+
isFloating?: boolean;
|
|
5
10
|
label: string;
|
|
6
11
|
};
|
|
7
12
|
|
|
8
|
-
const props = defineProps<Props>()
|
|
13
|
+
const props = withDefaults(defineProps<Props>(), {
|
|
14
|
+
iconLeading: undefined,
|
|
15
|
+
isFloating: false,
|
|
16
|
+
});
|
|
9
17
|
</script>
|
|
10
18
|
|
|
11
19
|
<template>
|
|
12
20
|
<div
|
|
13
21
|
:class="[
|
|
14
22
|
'tide-badge',
|
|
15
|
-
|
|
16
|
-
|
|
23
|
+
props.isFloating
|
|
24
|
+
? [CSS.BG.SURFACE.FLOATING, CSS.FONT.ROLE.LABEL_3, CSS.SHADOW.BOTTOM]
|
|
25
|
+
: [CSS.BG.SURFACE.VARIANT, CSS.FONT.ROLE.LABEL_2],
|
|
17
26
|
CSS.DISPLAY.INLINE_FLEX,
|
|
18
27
|
CSS.AXIS2.CENTER,
|
|
19
28
|
CSS.GAP.QUARTER,
|
|
20
29
|
CSS.BORDER.RADIUS.QUARTER,
|
|
21
30
|
CSS.PADDING.Y.QUARTER,
|
|
22
31
|
CSS.PADDING.X.HALF,
|
|
23
|
-
CSS.FONT.SIZE.FOURTEEN,
|
|
24
32
|
]"
|
|
25
33
|
>
|
|
34
|
+
<TideIcon
|
|
35
|
+
:icon="props.iconLeading"
|
|
36
|
+
v-if="props.iconLeading"
|
|
37
|
+
/>
|
|
38
|
+
|
|
26
39
|
{{ props.label }}
|
|
27
40
|
</div>
|
|
28
41
|
</template>
|
|
29
|
-
|
|
30
|
-
<style scoped></style>
|
|
@@ -25,10 +25,10 @@
|
|
|
25
25
|
CSS.GAP.QUARTER,
|
|
26
26
|
CSS.PADDING.Y.QUARTER,
|
|
27
27
|
CSS.PADDING.X.HALF,
|
|
28
|
-
CSS.FONT.
|
|
28
|
+
CSS.FONT.ROLE.LABEL_2,
|
|
29
29
|
]"
|
|
30
30
|
>
|
|
31
|
-
<TideIcon :icon="ICON.
|
|
31
|
+
<TideIcon :icon="ICON.AWARD_STAR" />
|
|
32
32
|
<div :class="[]">
|
|
33
33
|
<span>{{ props.years }} year trusted partner</span>
|
|
34
34
|
</div>
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
<script lang="ts" setup>
|
|
2
|
+
import TideIcon from '@/components/TideIcon.vue';
|
|
3
|
+
import { ICON } from '@/types/Icon';
|
|
4
|
+
import { CSS } from '@/types/Styles';
|
|
5
|
+
</script>
|
|
6
|
+
|
|
7
|
+
<template>
|
|
8
|
+
<div
|
|
9
|
+
:class="[
|
|
10
|
+
'tide-badge-verified-vehicle',
|
|
11
|
+
CSS.BG.SECONDARY,
|
|
12
|
+
CSS.FONT.ROLE.LABEL_2,
|
|
13
|
+
CSS.FONT.COLOR.SECONDARY,
|
|
14
|
+
CSS.DISPLAY.INLINE_FLEX,
|
|
15
|
+
CSS.AXIS2.CENTER,
|
|
16
|
+
CSS.GAP.QUARTER,
|
|
17
|
+
CSS.BORDER.RADIUS.QUARTER,
|
|
18
|
+
CSS.PADDING.Y.QUARTER,
|
|
19
|
+
CSS.PADDING.X.HALF,
|
|
20
|
+
]"
|
|
21
|
+
>
|
|
22
|
+
<TideIcon :icon="ICON.VERIFIED" />
|
|
23
|
+
|
|
24
|
+
<span>Verified vehicle</span>
|
|
25
|
+
</div>
|
|
26
|
+
</template>
|
|
27
|
+
|
|
28
|
+
<style scoped>
|
|
29
|
+
.tide-icon {
|
|
30
|
+
color: var(--tide-blue-400);
|
|
31
|
+
}
|
|
32
|
+
</style>
|
|
@@ -21,9 +21,9 @@
|
|
|
21
21
|
:key="crumb.label"
|
|
22
22
|
v-for="(crumb, index) in props.breadCrumbs"
|
|
23
23
|
>
|
|
24
|
-
<li :class="[CSS.FONT.
|
|
24
|
+
<li :class="[CSS.FONT.ROLE.BODY_2]">
|
|
25
25
|
<a
|
|
26
|
-
:class="[CSS.FONT.
|
|
26
|
+
:class="[CSS.FONT.ROLE.LINK_2, CSS.FONT.COLOR.SURFACE.DEFAULT]"
|
|
27
27
|
:data-track="crumb.dataTrack || undefined"
|
|
28
28
|
:href="crumb.url"
|
|
29
29
|
v-if="crumb.url"
|
|
@@ -32,7 +32,7 @@
|
|
|
32
32
|
</a>
|
|
33
33
|
|
|
34
34
|
<span
|
|
35
|
-
:class="[CSS.FONT.
|
|
35
|
+
:class="[CSS.FONT.ROLE.LABEL_2, CSS.FONT.COLOR.SURFACE.VARIANT]"
|
|
36
36
|
:data-track="crumb.dataTrack || undefined"
|
|
37
37
|
v-else
|
|
38
38
|
>
|
|
@@ -49,7 +49,7 @@
|
|
|
49
49
|
CSS.AXIS2.CENTER,
|
|
50
50
|
CSS.GAP.HALF,
|
|
51
51
|
CSS.BORDER.RADIUS.HALF,
|
|
52
|
-
CSS.FONT.
|
|
52
|
+
CSS.FONT.ROLE.LABEL_1_SEMIBOLD,
|
|
53
53
|
]"
|
|
54
54
|
:disabled="props.element === ELEMENT.BUTTON && props.disabled"
|
|
55
55
|
:href="props.element === ELEMENT.LINK && props.href ? props.href : undefined"
|
|
@@ -26,7 +26,7 @@
|
|
|
26
26
|
[CSS.DISPLAY.INLINE_BLOCK, CSS.BORDER.RADIUS.FULL, CSS.PADDING.FULL.HALF],
|
|
27
27
|
props.element === ELEMENT_TEXT_AS_ICON.LINK ? [CSS.UNDERLINE.OFF] : '',
|
|
28
28
|
props.element === ELEMENT_TEXT_AS_ICON.DIV ? [CSS.CURSOR.POINTER] : '',
|
|
29
|
-
[CSS.FONT.
|
|
29
|
+
[CSS.FONT.ROLE.HEADLINE_3],
|
|
30
30
|
]"
|
|
31
31
|
:disabled="props.element === ELEMENT_TEXT_AS_ICON.BUTTON && props.disabled"
|
|
32
32
|
:href="props.element === ELEMENT_TEXT_AS_ICON.LINK && props.href ? props.href : undefined"
|
|
@@ -42,7 +42,7 @@
|
|
|
42
42
|
CSS.BORDER.RADIUS.QUARTER,
|
|
43
43
|
CSS.PADDING.Y.QUARTER,
|
|
44
44
|
CSS.WIDTH.FULL,
|
|
45
|
-
CSS.FONT.
|
|
45
|
+
CSS.FONT.ROLE.BUTTON_1,
|
|
46
46
|
CSS.WHITESPACE_WRAP.OFF,
|
|
47
47
|
]"
|
|
48
48
|
:data-track="tab.dataTrack || undefined"
|
|
@@ -50,11 +50,12 @@
|
|
|
50
50
|
@click="handleClick(index)"
|
|
51
51
|
v-for="(tab, index) in props.tabs"
|
|
52
52
|
>
|
|
53
|
-
<span :class="[CSS.FONT.
|
|
53
|
+
<span :class="[CSS.FONT.ROLE.LABEL_1_SEMIBOLD]">
|
|
54
54
|
{{ tab.label }}
|
|
55
55
|
</span>
|
|
56
|
+
|
|
56
57
|
<span
|
|
57
|
-
:class="[CSS.FONT.
|
|
58
|
+
:class="[CSS.FONT.ROLE.LABEL_1_SEMIBOLD]"
|
|
58
59
|
v-if="tab.count && tab.count > 0"
|
|
59
60
|
>
|
|
60
61
|
({{ tab.count }})
|
|
@@ -23,14 +23,13 @@
|
|
|
23
23
|
CSS.BORDER.RADIUS.FULL,
|
|
24
24
|
CSS.PADDING.X.ONE,
|
|
25
25
|
CSS.PADDING.Y.HALF,
|
|
26
|
-
CSS.FONT.
|
|
27
|
-
CSS.FONT.WEIGHT.FIVE_HUNDRED,
|
|
26
|
+
CSS.FONT.ROLE.LABEL_2,
|
|
28
27
|
props.isActive ? 'active' : '',
|
|
29
28
|
]"
|
|
30
29
|
>
|
|
31
30
|
<slot />
|
|
32
31
|
<div :class="[CSS.DISPLAY.FLEX, CSS.AXIS1.CENTER, CSS.AXIS2.CENTER, CSS.GAP.HALF]">
|
|
33
|
-
<span :class="[props.isActive ? '' : 'icon-spacing', CSS.FONT.
|
|
32
|
+
<span :class="[props.isActive ? '' : 'icon-spacing', CSS.FONT.ROLE.LABEL_1, CSS.WHITESPACE_WRAP.OFF]">
|
|
34
33
|
{{ props.label }}
|
|
35
34
|
</span>
|
|
36
35
|
</div>
|
|
@@ -14,20 +14,15 @@
|
|
|
14
14
|
<div
|
|
15
15
|
:class="[
|
|
16
16
|
'tide-indicator',
|
|
17
|
-
props.label
|
|
18
|
-
CSS.
|
|
17
|
+
props.label ? '' : 'dot',
|
|
18
|
+
CSS.DISPLAY.INLINE_BLOCK,
|
|
19
|
+
CSS.ALIGN.X.CENTER,
|
|
20
|
+
CSS.BG.GLOBAL.PRIMARY.ERROR,
|
|
19
21
|
CSS.BORDER.RADIUS.FULL,
|
|
22
|
+
props.label && props.label.toString().length > 1 ? [CSS.PADDING.X.HALF] : [],
|
|
20
23
|
props.label
|
|
21
|
-
? [
|
|
22
|
-
|
|
23
|
-
CSS.FONT.SIZE.TWELVE,
|
|
24
|
-
CSS.FONT.WEIGHT.SEVEN_HUNDRED,
|
|
25
|
-
CSS.FONT.COLOR.SURFACE.DEFAULT,
|
|
26
|
-
CSS.DISPLAY.FLEX,
|
|
27
|
-
CSS.AXIS1.CENTER,
|
|
28
|
-
CSS.AXIS2.CENTER,
|
|
29
|
-
]
|
|
30
|
-
: [],
|
|
24
|
+
? [CSS.POSITION.RELATIVE, CSS.FONT.ROLE.LABEL_3, CSS.FONT.COLOR.SURFACE.INVERSE]
|
|
25
|
+
: [CSS.BORDER.FULL.ONE],
|
|
31
26
|
]"
|
|
32
27
|
>
|
|
33
28
|
<div
|
|
@@ -40,14 +35,15 @@
|
|
|
40
35
|
</template>
|
|
41
36
|
|
|
42
37
|
<style scoped>
|
|
43
|
-
.tide-indicator {
|
|
44
|
-
width:
|
|
45
|
-
height:
|
|
38
|
+
.tide-indicator:not(.dot) {
|
|
39
|
+
min-width: 1rem;
|
|
40
|
+
min-height: 1rem;
|
|
46
41
|
}
|
|
47
42
|
|
|
48
|
-
.tide-indicator
|
|
49
|
-
|
|
50
|
-
|
|
43
|
+
.tide-indicator.dot {
|
|
44
|
+
border-color: var(--tide-gray-100);
|
|
45
|
+
width: 10px;
|
|
46
|
+
height: 10px;
|
|
51
47
|
}
|
|
52
48
|
|
|
53
49
|
.tide-indicator-label {
|
|
@@ -78,7 +78,12 @@
|
|
|
78
78
|
</div>
|
|
79
79
|
|
|
80
80
|
<label
|
|
81
|
-
:class="[
|
|
81
|
+
:class="[
|
|
82
|
+
CSS.DISPLAY.FLEX,
|
|
83
|
+
CSS.GAP.HALF,
|
|
84
|
+
CSS.FONT.ROLE.LABEL_1,
|
|
85
|
+
disabled ? CSS.CURSOR.NOT_ALLOWED : CSS.CURSOR.POINTER,
|
|
86
|
+
]"
|
|
82
87
|
:for="props.inputId"
|
|
83
88
|
@click.prevent
|
|
84
89
|
v-if="label"
|
|
@@ -33,7 +33,16 @@
|
|
|
33
33
|
</script>
|
|
34
34
|
|
|
35
35
|
<template>
|
|
36
|
-
<div
|
|
36
|
+
<div
|
|
37
|
+
:class="[
|
|
38
|
+
'tide-input-radio',
|
|
39
|
+
CSS.DISPLAY.FLEX,
|
|
40
|
+
CSS.AXIS2.CENTER,
|
|
41
|
+
CSS.GAP.HALF,
|
|
42
|
+
CSS.POINTER_EVENTS.OFF,
|
|
43
|
+
props.disabled && 'disabled',
|
|
44
|
+
]"
|
|
45
|
+
>
|
|
37
46
|
<input
|
|
38
47
|
:checked="checked"
|
|
39
48
|
:class="[CSS.DISPLAY.NONE]"
|
|
@@ -53,6 +62,9 @@
|
|
|
53
62
|
CSS.BORDER.FULL.ONE,
|
|
54
63
|
checked ? CSS.BORDER.COLOR.HIGH : CSS.BORDER.COLOR.DEFAULT,
|
|
55
64
|
CSS.BORDER.RADIUS.FULL,
|
|
65
|
+
CSS.BG.SURFACE.DEFAULT,
|
|
66
|
+
CSS.CURSOR.POINTER,
|
|
67
|
+
CSS.POINTER_EVENTS.ON,
|
|
56
68
|
checked && 'checked',
|
|
57
69
|
]"
|
|
58
70
|
>
|
|
@@ -60,7 +72,7 @@
|
|
|
60
72
|
</div>
|
|
61
73
|
|
|
62
74
|
<label
|
|
63
|
-
:class="CSS.FONT.
|
|
75
|
+
:class="[CSS.FONT.ROLE.BODY_1, CSS.CURSOR.POINTER, CSS.POINTER_EVENTS.ON]"
|
|
64
76
|
:for="props.inputId"
|
|
65
77
|
>
|
|
66
78
|
{{ props.label }}
|
|
@@ -90,13 +90,12 @@
|
|
|
90
90
|
<div :class="[CSS.DISPLAY.FLEX, CSS.FLEX.DIRECTION.COLUMN, CSS.WIDTH.FULL]">
|
|
91
91
|
<label
|
|
92
92
|
:class="[
|
|
93
|
-
hasMinilabel ? ['minilabel', CSS.FONT.
|
|
93
|
+
hasMinilabel ? ['minilabel', CSS.FONT.ROLE.LABEL_3] : CSS.FONT.ROLE.LABEL_1,
|
|
94
94
|
CSS.POSITION.ABSOLUTE,
|
|
95
95
|
CSS.POSITIONING.LEFT,
|
|
96
96
|
CSS.MARGIN.TOP.HALF,
|
|
97
97
|
CSS.MARGIN.LEFT.ONE,
|
|
98
98
|
!hasError && CSS.FONT.COLOR.SURFACE.VARIANT,
|
|
99
|
-
CSS.FONT.WEIGHT.FIVE_HUNDRED,
|
|
100
99
|
CSS.POINTER_EVENTS.OFF,
|
|
101
100
|
]"
|
|
102
101
|
:for="props.inputId"
|
|
@@ -164,7 +163,7 @@
|
|
|
164
163
|
</div>
|
|
165
164
|
|
|
166
165
|
<div
|
|
167
|
-
:class="[CSS.DISPLAY.FLEX, CSS.AXIS2.CENTER, CSS.GAP.QUARTER
|
|
166
|
+
:class="[CSS.DISPLAY.FLEX, CSS.AXIS2.CENTER, CSS.GAP.QUARTER]"
|
|
168
167
|
v-if="props.supportingText || hasError"
|
|
169
168
|
>
|
|
170
169
|
<TideIcon
|
|
@@ -174,7 +173,7 @@
|
|
|
174
173
|
v-if="hasError"
|
|
175
174
|
/>
|
|
176
175
|
|
|
177
|
-
<div :class="[CSS.FONT.
|
|
176
|
+
<div :class="[CSS.FONT.ROLE.LABEL_3]">
|
|
178
177
|
{{ hasError ? errorMessage : props.supportingText }}
|
|
179
178
|
</div>
|
|
180
179
|
</div>
|
|
@@ -160,6 +160,7 @@
|
|
|
160
160
|
]"
|
|
161
161
|
>
|
|
162
162
|
<TideIcon
|
|
163
|
+
:class="[CSS.FONT.COLOR.SURFACE.VARIANT]"
|
|
163
164
|
:icon="props.iconLeading"
|
|
164
165
|
:size="SIZE.SMALL"
|
|
165
166
|
v-if="props.iconLeading"
|
|
@@ -167,7 +168,13 @@
|
|
|
167
168
|
|
|
168
169
|
<div :class="[CSS.DISPLAY.FLEX, CSS.AXIS2.CENTER, CSS.GAP.QUARTER, CSS.WIDTH.FULL]">
|
|
169
170
|
<div
|
|
170
|
-
:class="[
|
|
171
|
+
:class="[
|
|
172
|
+
'tide-input-text-prefix',
|
|
173
|
+
CSS.FONT.ROLE.BODY_1,
|
|
174
|
+
,
|
|
175
|
+
!hasError && CSS.FONT.COLOR.SURFACE.VARIANT,
|
|
176
|
+
hasMinilabel ? '' : 'offset',
|
|
177
|
+
]"
|
|
171
178
|
v-if="props.prefix"
|
|
172
179
|
>
|
|
173
180
|
{{ props.prefix }}
|
|
@@ -179,9 +186,8 @@
|
|
|
179
186
|
>
|
|
180
187
|
<label
|
|
181
188
|
:class="[
|
|
182
|
-
hasMinilabel ? ['minilabel', CSS.FONT.
|
|
189
|
+
hasMinilabel ? ['minilabel', CSS.FONT.ROLE.LABEL_3] : CSS.FONT.ROLE.LABEL_1,
|
|
183
190
|
!hasError && CSS.FONT.COLOR.SURFACE.VARIANT,
|
|
184
|
-
CSS.FONT.WEIGHT.FIVE_HUNDRED,
|
|
185
191
|
CSS.CURSOR.TEXT,
|
|
186
192
|
CSS.POINTER_EVENTS.OFF,
|
|
187
193
|
]"
|
|
@@ -212,7 +218,12 @@
|
|
|
212
218
|
</div>
|
|
213
219
|
|
|
214
220
|
<div
|
|
215
|
-
:class="[
|
|
221
|
+
:class="[
|
|
222
|
+
'tide-input-text-suffix',
|
|
223
|
+
CSS.FONT.ROLE.BODY_1,
|
|
224
|
+
!hasError && CSS.FONT.COLOR.SURFACE.VARIANT,
|
|
225
|
+
hasMinilabel ? '' : 'offset',
|
|
226
|
+
]"
|
|
216
227
|
v-if="props.suffix"
|
|
217
228
|
>
|
|
218
229
|
{{ props.suffix }}
|
|
@@ -237,7 +248,7 @@
|
|
|
237
248
|
</div>
|
|
238
249
|
|
|
239
250
|
<div
|
|
240
|
-
:class="[CSS.DISPLAY.FLEX, CSS.AXIS2.CENTER, CSS.GAP.QUARTER
|
|
251
|
+
:class="[CSS.DISPLAY.FLEX, CSS.AXIS2.CENTER, CSS.GAP.QUARTER]"
|
|
241
252
|
v-if="props.supportingText || hasError"
|
|
242
253
|
>
|
|
243
254
|
<TideIcon
|
|
@@ -247,7 +258,7 @@
|
|
|
247
258
|
v-if="hasError"
|
|
248
259
|
/>
|
|
249
260
|
|
|
250
|
-
<div :class="[CSS.FONT.
|
|
261
|
+
<div :class="[CSS.FONT.ROLE.LABEL_3]">
|
|
251
262
|
{{ hasError ? errorMessage : props.supportingText }}
|
|
252
263
|
</div>
|
|
253
264
|
</div>
|
|
@@ -107,9 +107,8 @@
|
|
|
107
107
|
>
|
|
108
108
|
<label
|
|
109
109
|
:class="[
|
|
110
|
-
hasMinilabel ? ['minilabel', CSS.FONT.
|
|
110
|
+
hasMinilabel ? ['minilabel', CSS.FONT.ROLE.LABEL_3] : CSS.FONT.ROLE.LABEL_1,
|
|
111
111
|
!hasError && CSS.FONT.COLOR.SURFACE.VARIANT,
|
|
112
|
-
CSS.FONT.WEIGHT.FIVE_HUNDRED,
|
|
113
112
|
CSS.CURSOR.TEXT,
|
|
114
113
|
CSS.POINTER_EVENTS.OFF,
|
|
115
114
|
]"
|
|
@@ -138,7 +137,7 @@
|
|
|
138
137
|
</div>
|
|
139
138
|
|
|
140
139
|
<div
|
|
141
|
-
:class="[CSS.DISPLAY.FLEX, CSS.AXIS2.CENTER, CSS.GAP.QUARTER
|
|
140
|
+
:class="[CSS.DISPLAY.FLEX, CSS.AXIS2.CENTER, CSS.GAP.QUARTER]"
|
|
142
141
|
v-if="props.supportingText || hasError"
|
|
143
142
|
>
|
|
144
143
|
<TideIcon
|
|
@@ -147,7 +146,7 @@
|
|
|
147
146
|
v-if="hasError"
|
|
148
147
|
/>
|
|
149
148
|
|
|
150
|
-
<div :class="[CSS.FONT.
|
|
149
|
+
<div :class="[CSS.FONT.ROLE.LABEL_3]">
|
|
151
150
|
{{ hasError ? errorMessage : props.supportingText }}
|
|
152
151
|
</div>
|
|
153
152
|
</div>
|
|
@@ -166,17 +165,6 @@
|
|
|
166
165
|
transition: font-size var(--tide-animate), transform var(--tide-animate);
|
|
167
166
|
}
|
|
168
167
|
|
|
169
|
-
label:not(.minilabel),
|
|
170
|
-
.tide-input-textarea-prefix:not(.offset),
|
|
171
|
-
.tide-input-textarea-suffix:not(.offset) {
|
|
172
|
-
transform: translate(0, calc(9 / 16 * 1rem));
|
|
173
|
-
}
|
|
174
|
-
|
|
175
|
-
.tide-input-textarea-prefix,
|
|
176
|
-
.tide-input-textarea-suffix {
|
|
177
|
-
transition: transform var(--tide-animate);
|
|
178
|
-
}
|
|
179
|
-
|
|
180
168
|
.tide-input-textarea.error {
|
|
181
169
|
color: var(--tide-error-primary);
|
|
182
170
|
}
|
|
@@ -14,7 +14,6 @@
|
|
|
14
14
|
iconTrailing?: Icon;
|
|
15
15
|
isNewTab?: boolean;
|
|
16
16
|
label: string;
|
|
17
|
-
typography?: (typeof CSS.FONT.ROLE)['LINK_1' | 'LINK_2' | 'LINK_3'];
|
|
18
17
|
};
|
|
19
18
|
|
|
20
19
|
const props = withDefaults(defineProps<Props>(), {
|
|
@@ -24,13 +23,12 @@
|
|
|
24
23
|
iconTrailing: undefined,
|
|
25
24
|
isNewTab: false,
|
|
26
25
|
label: undefined,
|
|
27
|
-
typography: CSS.FONT.ROLE.LINK_1,
|
|
28
26
|
});
|
|
29
27
|
</script>
|
|
30
28
|
|
|
31
29
|
<template>
|
|
32
30
|
<component
|
|
33
|
-
:class="['tide-link', CSS.DISPLAY.INLINE, CSS.UNDERLINE.ON, CSS.ALIGN.X.LEFT
|
|
31
|
+
:class="['tide-link', CSS.DISPLAY.INLINE, CSS.UNDERLINE.ON, CSS.ALIGN.X.LEFT]"
|
|
34
32
|
:href="props.href"
|
|
35
33
|
:target="props.isNewTab ? TARGET.BLANK : TARGET.SELF"
|
|
36
34
|
:is="props.element === ELEMENT.LINK ? ELEMENT.LINK : ELEMENT.BUTTON"
|
|
@@ -16,13 +16,13 @@
|
|
|
16
16
|
|
|
17
17
|
<template>
|
|
18
18
|
<section class="tide-seo-links">
|
|
19
|
-
<h2 :class="[CSS.MARGIN.BOTTOM.HALF
|
|
19
|
+
<h2 :class="[CSS.MARGIN.BOTTOM.HALF]">
|
|
20
20
|
{{ props.heading }}
|
|
21
21
|
</h2>
|
|
22
22
|
|
|
23
23
|
<ul :class="[CSS.DISPLAY.FLEX, CSS.FLEX.WRAP, CSS.GAP.TWO, CSS.LIST_BULLETS.OFF]">
|
|
24
24
|
<li
|
|
25
|
-
:class="['tide-seo-link', CSS.DISPLAY.FLEX, CSS.FLEX.DIRECTION.COLUMN, CSS.GAP.QUARTER, CSS.FONT.
|
|
25
|
+
:class="['tide-seo-link', CSS.DISPLAY.FLEX, CSS.FLEX.DIRECTION.COLUMN, CSS.GAP.QUARTER, CSS.FONT.ROLE.BODY_2]"
|
|
26
26
|
:key="link.label"
|
|
27
27
|
v-for="link in props.links"
|
|
28
28
|
>
|