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.
Files changed (58) hide show
  1. package/.storybook/main.ts +1 -1
  2. package/dist/IconVerified-000f615f.js +20 -0
  3. package/dist/IconVerified-b71255f2.cjs +2 -0
  4. package/dist/css/dynamic-buttons.css +279 -0
  5. package/dist/css/dynamic-utilities.css +123 -0
  6. package/dist/css/main.css +4 -0
  7. package/dist/css/utilities-lg.css +402 -0
  8. package/dist/css/utilities-md.css +404 -0
  9. package/dist/css/utilities-sm.css +402 -0
  10. package/dist/css/utilities-xl.css +402 -0
  11. package/dist/css/utilities.css +4 -1520
  12. package/dist/css/variables.css +7 -15
  13. package/dist/style.css +1 -1
  14. package/dist/tide-design-system.cjs +2 -2
  15. package/dist/tide-design-system.esm.d.ts +112 -127
  16. package/dist/tide-design-system.esm.js +853 -866
  17. package/index.ts +2 -8
  18. package/package.json +1 -1
  19. package/src/assets/css/dynamic-buttons.css +279 -0
  20. package/src/assets/css/dynamic-utilities.css +123 -0
  21. package/src/assets/css/main.css +4 -0
  22. package/src/assets/css/utilities-lg.css +402 -0
  23. package/src/assets/css/utilities-md.css +404 -0
  24. package/src/assets/css/utilities-sm.css +402 -0
  25. package/src/assets/css/utilities-xl.css +402 -0
  26. package/src/assets/css/utilities.css +4 -1520
  27. package/src/assets/css/variables.css +7 -15
  28. package/src/assets/svg/icons/IconVerified.svg +1 -0
  29. package/src/components/TideAccordionItem.vue +8 -6
  30. package/src/components/TideAlert.vue +2 -2
  31. package/src/components/TideBadge.vue +17 -6
  32. package/src/components/TideBadgeTrustedPartner.vue +2 -2
  33. package/src/components/TideBadgeVerifiedVehicle.vue +32 -0
  34. package/src/components/TideBreadCrumbs.vue +3 -3
  35. package/src/components/TideButton.vue +1 -1
  36. package/src/components/TideButtonPagination.vue +1 -1
  37. package/src/components/TideButtonSegmented.vue +4 -3
  38. package/src/components/TideChipAction.vue +1 -2
  39. package/src/components/TideChipFilter.vue +2 -3
  40. package/src/components/TideChipInput.vue +1 -2
  41. package/src/components/TideColumns.vue +1 -1
  42. package/src/components/TideIndicator.vue +14 -18
  43. package/src/components/TideInputCheckbox.vue +6 -1
  44. package/src/components/TideInputRadio.vue +14 -2
  45. package/src/components/TideInputSelect.vue +3 -4
  46. package/src/components/TideInputText.vue +17 -6
  47. package/src/components/TideInputTextarea.vue +3 -15
  48. package/src/components/TideLink.vue +1 -3
  49. package/src/components/TideSeoLinks.vue +2 -2
  50. package/src/stories/FoundationsShadow.stories.ts +27 -8
  51. package/src/stories/TideBadge.stories.ts +13 -2
  52. package/src/stories/TideBadgeVerifiedVehicle.stories.ts +20 -0
  53. package/src/types/Badge.ts +0 -14
  54. package/src/types/Styles.ts +1 -0
  55. package/dist/IconVerified-04c12500.cjs +0 -2
  56. package/dist/IconVerified-a78449ea.js +0 -16
  57. package/src/components/TideBadgePremium.vue +0 -31
  58. 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: #D1E0EB;
56
- --tide-blue-200: #A4C1D7;
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: #E6EFCF;
72
- --tide-green-200: #CDE09E;
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: #EFCFCF;
77
- --tide-red-200: #E09E9E;
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.WEIGHT.SEVEN_HUNDRED]">
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 :icon="isExpanded ? ICON.EXPAND_LESS : ICON.EXPAND_MORE" />
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
- <div :class="[CSS.MARGIN.Y.ONE, CSS.FONT.WEIGHT.FOUR_HUNDRED, CSS.FONT.COLOR.SURFACE.DEFAULT]">
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.SIZE.SIXTEEN, CSS.FONT.WEIGHT.SIX_HUNDRED, CSS.FONT.COLOR.SURFACE.DEFAULT]">
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.WEIGHT.FIVE_HUNDRED, CSS.FONT.COLOR.SURFACE.VARIANT]">
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
- CSS.FONT.COLOR.SURFACE.DEFAULT,
16
- CSS.BG.SURFACE.FLOATING,
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.SIZE.FOURTEEN,
28
+ CSS.FONT.ROLE.LABEL_2,
29
29
  ]"
30
30
  >
31
- <TideIcon :icon="ICON.VIEW_IN_AR" />
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.SIZE.FOURTEEN]">
24
+ <li :class="[CSS.FONT.ROLE.BODY_2]">
25
25
  <a
26
- :class="[CSS.FONT.WEIGHT.SEVEN_HUNDRED, CSS.FONT.COLOR.SURFACE.DEFAULT]"
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.WEIGHT.FIVE_HUNDRED, CSS.FONT.COLOR.SURFACE.VARIANT]"
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.WEIGHT.SIX_HUNDRED,
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.WEIGHT.SEVEN_HUNDRED],
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.WEIGHT.SIX_HUNDRED,
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.WEIGHT.SIX_HUNDRED]">
53
+ <span :class="[CSS.FONT.ROLE.LABEL_1_SEMIBOLD]">
54
54
  {{ tab.label }}
55
55
  </span>
56
+
56
57
  <span
57
- :class="[CSS.FONT.WEIGHT.SIX_HUNDRED]"
58
+ :class="[CSS.FONT.ROLE.LABEL_1_SEMIBOLD]"
58
59
  v-if="tab.count && tab.count > 0"
59
60
  >
60
61
  ({{ tab.count }})
@@ -27,8 +27,7 @@
27
27
  CSS.PADDING.X.ONE,
28
28
  CSS.PADDING.Y.HALF,
29
29
  CSS.BG.SURFACE.DEFAULT,
30
- CSS.FONT.SIZE.FOURTEEN,
31
- CSS.FONT.WEIGHT.FIVE_HUNDRED,
30
+ CSS.FONT.ROLE.LINK_2,
32
31
  CSS.FONT.COLOR.SURFACE.DEFAULT,
33
32
  CSS.UNDERLINE.OFF,
34
33
  ]"
@@ -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.SIZE.FOURTEEN,
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.WEIGHT.FIVE_HUNDRED, CSS.WHITESPACE_WRAP.OFF]">
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>
@@ -23,8 +23,7 @@
23
23
  CSS.BORDER.RADIUS.FULL,
24
24
  CSS.PADDING.X.ONE,
25
25
  CSS.PADDING.Y.HALF,
26
- CSS.FONT.SIZE.FOURTEEN,
27
- CSS.FONT.WEIGHT.FIVE_HUNDRED,
26
+ CSS.FONT.ROLE.LABEL_2,
28
27
  ]"
29
28
  >
30
29
  <span>{{ props.label }}</span>
@@ -12,7 +12,7 @@
12
12
 
13
13
  <template>
14
14
  <section class="tide-columns">
15
- <h2 :class="[CSS.MARGIN.BOTTOM.HALF, CSS.FONT.SIZE.SIXTEEN]">
15
+ <h2 :class="[CSS.MARGIN.BOTTOM.HALF]">
16
16
  {{ props.heading }}
17
17
  </h2>
18
18
 
@@ -14,20 +14,15 @@
14
14
  <div
15
15
  :class="[
16
16
  'tide-indicator',
17
- props.label && 'tide-indicator-background',
18
- CSS.BG.SURFACE.ACCENT,
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
- CSS.POSITION.RELATIVE,
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: 0.5rem;
45
- height: 0.5rem;
38
+ .tide-indicator:not(.dot) {
39
+ min-width: 1rem;
40
+ min-height: 1rem;
46
41
  }
47
42
 
48
- .tide-indicator-background {
49
- width: 1.125rem;
50
- height: 1.125rem;
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="[CSS.DISPLAY.FLEX, CSS.GAP.HALF, disabled ? CSS.CURSOR.NOT_ALLOWED : CSS.CURSOR.POINTER]"
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 :class="['tide-input-radio', CSS.DISPLAY.FLEX, CSS.AXIS2.CENTER, CSS.GAP.HALF, props.disabled && 'disabled']">
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.WEIGHT.FOUR_HUNDRED"
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.SIZE.TWELVE] : CSS.FONT.SIZE.SIXTEEN,
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, CSS.MARGIN.LEFT.ONE]"
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.SIZE.TWELVE, CSS.FONT.WEIGHT.FIVE_HUNDRED]">
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="['tide-input-text-prefix', !hasError && CSS.FONT.COLOR.SURFACE.VARIANT, hasMinilabel ? '' : 'offset']"
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.SIZE.TWELVE] : CSS.FONT.SIZE.SIXTEEN,
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="['tide-input-text-suffix', !hasError && CSS.FONT.COLOR.SURFACE.VARIANT, hasMinilabel ? '' : 'offset']"
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, CSS.MARGIN.LEFT.ONE]"
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.SIZE.TWELVE, CSS.FONT.WEIGHT.FIVE_HUNDRED]">
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.SIZE.TWELVE] : CSS.FONT.SIZE.SIXTEEN,
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, CSS.MARGIN.LEFT.ONE]"
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.SIZE.TWELVE, CSS.FONT.WEIGHT.FIVE_HUNDRED]">
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, typography]"
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, CSS.FONT.SIZE.SIXTEEN]">
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.SIZE.FOURTEEN]"
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
  >