@energysage/es-ds-components 3.0.0-alpha.8 → 3.0.0

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 (183) hide show
  1. package/README.md +0 -3
  2. package/components/es-accordion-list.vue +29 -7
  3. package/components/es-breadcrumbs.vue +1 -1
  4. package/components/es-button.vue +13 -3
  5. package/components/es-carousel.vue +524 -69
  6. package/components/es-col.vue +5 -5
  7. package/components/es-collapse.vue +2 -2
  8. package/components/es-container.vue +10 -1
  9. package/components/es-cta-banner.vue +1 -1
  10. package/components/es-cta-card.vue +1 -1
  11. package/components/es-data-table-column.vue +20 -0
  12. package/components/es-data-table-simple.vue +1 -1
  13. package/components/es-data-table.vue +35 -86
  14. package/components/es-file-input.vue +8 -5
  15. package/components/es-footer.vue +33 -4
  16. package/components/es-modal.vue +1 -1
  17. package/components/es-nav-bar-account-menu.vue +4 -1
  18. package/components/es-nav-bar-featured-article.vue +1 -1
  19. package/components/es-nav-bar-link.vue +1 -1
  20. package/components/es-nav-bar-product-menu.vue +5 -1
  21. package/components/es-nav-bar-top-level-menu.vue +2 -1
  22. package/components/es-nav-bar-topic-menu.vue +4 -1
  23. package/components/es-nav-bar.vue +19 -4
  24. package/components/es-pagination.vue +1 -0
  25. package/components/es-reviews-io-card-carousel.vue +5 -1
  26. package/components/es-segmented-control.vue +237 -0
  27. package/components/es-tabs.vue +13 -3
  28. package/components/es-video.vue +4 -2
  29. package/components/es-view-more.vue +1 -0
  30. package/components/es-zip-code-form.vue +2 -2
  31. package/components/icon/arrow-clockwise.vue +1 -1
  32. package/components/icon/arrow-counter-clockwise.vue +1 -1
  33. package/components/icon/arrow-cycle.vue +1 -1
  34. package/components/icon/arrow-left.vue +1 -1
  35. package/components/icon/arrow-right.vue +1 -1
  36. package/components/icon/arrow-up.vue +1 -1
  37. package/components/icon/arrow.vue +1 -1
  38. package/components/icon/bank.vue +1 -1
  39. package/components/icon/bell.vue +1 -1
  40. package/components/icon/block.vue +1 -1
  41. package/components/icon/calculator.vue +1 -1
  42. package/components/icon/calendar.vue +1 -1
  43. package/components/icon/cart.vue +1 -1
  44. package/components/icon/ccpa-opt-out.vue +61 -0
  45. package/components/icon/chat-add.vue +1 -1
  46. package/components/icon/chat-approve.vue +1 -1
  47. package/components/icon/chat-bubble.vue +1 -1
  48. package/components/icon/chat-dots.vue +1 -1
  49. package/components/icon/check.vue +1 -1
  50. package/components/icon/chevron-down.vue +1 -1
  51. package/components/icon/chevron-horizontal.vue +1 -1
  52. package/components/icon/chevron-left.vue +1 -1
  53. package/components/icon/chevron-right.vue +1 -1
  54. package/components/icon/chevron-up.vue +1 -1
  55. package/components/icon/circle-alert.vue +1 -1
  56. package/components/icon/circle-check.vue +1 -1
  57. package/components/icon/circle-chevron-down.vue +1 -1
  58. package/components/icon/circle-chevron-left.vue +1 -1
  59. package/components/icon/circle-chevron-right.vue +1 -1
  60. package/components/icon/circle-chevron-up.vue +1 -1
  61. package/components/icon/circle-minus.vue +1 -1
  62. package/components/icon/circle-plus.vue +1 -1
  63. package/components/icon/circle-x.vue +1 -1
  64. package/components/icon/circle.vue +1 -1
  65. package/components/icon/clock.vue +1 -1
  66. package/components/icon/companies.vue +1 -1
  67. package/components/icon/contact-us.vue +1 -1
  68. package/components/icon/copy.vue +1 -1
  69. package/components/icon/credit-card.vue +1 -1
  70. package/components/icon/document.vue +1 -1
  71. package/components/icon/electricity-circle.vue +1 -1
  72. package/components/icon/envelope.vue +1 -1
  73. package/components/icon/es-leaf.vue +1 -1
  74. package/components/icon/eye.vue +1 -1
  75. package/components/icon/facebook.vue +1 -1
  76. package/components/icon/flag.vue +1 -1
  77. package/components/icon/folder.vue +1 -1
  78. package/components/icon/gift.vue +1 -1
  79. package/components/icon/hamburger.vue +1 -1
  80. package/components/icon/heart.vue +1 -1
  81. package/components/icon/image.vue +1 -1
  82. package/components/icon/info-blog-post.vue +1 -1
  83. package/components/icon/info.vue +1 -1
  84. package/components/icon/instagram.vue +1 -1
  85. package/components/icon/light-bulb.vue +1 -1
  86. package/components/icon/link-out.vue +1 -1
  87. package/components/icon/linkedin.vue +1 -1
  88. package/components/icon/location.vue +1 -1
  89. package/components/icon/lock-off.vue +1 -1
  90. package/components/icon/lock-on.vue +1 -1
  91. package/components/icon/marketplace.vue +1 -1
  92. package/components/icon/minus.vue +1 -1
  93. package/components/icon/open-envelope.vue +1 -1
  94. package/components/icon/paper.vue +1 -1
  95. package/components/icon/pencil.vue +1 -1
  96. package/components/icon/person-add.vue +1 -1
  97. package/components/icon/person-check.vue +1 -1
  98. package/components/icon/person-cross.vue +1 -1
  99. package/components/icon/person.vue +1 -1
  100. package/components/icon/phone.vue +1 -1
  101. package/components/icon/play.vue +1 -1
  102. package/components/icon/plus.vue +1 -1
  103. package/components/icon/settings-horizontal.vue +1 -1
  104. package/components/icon/settings-vertical.vue +1 -1
  105. package/components/icon/shield-with-check.vue +1 -1
  106. package/components/icon/shield.vue +1 -1
  107. package/components/icon/shopping-bag.vue +1 -1
  108. package/components/icon/sound-down.vue +1 -1
  109. package/components/icon/sound-off.vue +1 -1
  110. package/components/icon/sound-on.vue +1 -1
  111. package/components/icon/sound-up.vue +1 -1
  112. package/components/icon/star-empty.vue +1 -1
  113. package/components/icon/star-full.vue +1 -1
  114. package/components/icon/star-half.vue +1 -1
  115. package/components/icon/state-ak.vue +1 -1
  116. package/components/icon/state-al.vue +1 -1
  117. package/components/icon/state-ar.vue +1 -1
  118. package/components/icon/state-az.vue +1 -1
  119. package/components/icon/state-ca.vue +1 -1
  120. package/components/icon/state-co.vue +1 -1
  121. package/components/icon/state-ct.vue +1 -1
  122. package/components/icon/state-dc.vue +1 -1
  123. package/components/icon/state-de.vue +1 -1
  124. package/components/icon/state-fl.vue +1 -1
  125. package/components/icon/state-ga.vue +1 -1
  126. package/components/icon/state-hi.vue +1 -1
  127. package/components/icon/state-ia.vue +1 -1
  128. package/components/icon/state-id.vue +1 -1
  129. package/components/icon/state-il.vue +1 -1
  130. package/components/icon/state-in.vue +1 -1
  131. package/components/icon/state-ks.vue +1 -1
  132. package/components/icon/state-ky.vue +1 -1
  133. package/components/icon/state-la.vue +1 -1
  134. package/components/icon/state-ma.vue +1 -1
  135. package/components/icon/state-md.vue +1 -1
  136. package/components/icon/state-me.vue +1 -1
  137. package/components/icon/state-mi.vue +1 -1
  138. package/components/icon/state-mn.vue +1 -1
  139. package/components/icon/state-mo.vue +1 -1
  140. package/components/icon/state-ms.vue +1 -1
  141. package/components/icon/state-mt.vue +1 -1
  142. package/components/icon/state-nc.vue +1 -1
  143. package/components/icon/state-nd.vue +1 -1
  144. package/components/icon/state-ne.vue +1 -1
  145. package/components/icon/state-nh.vue +1 -1
  146. package/components/icon/state-nj.vue +1 -1
  147. package/components/icon/state-nm.vue +1 -1
  148. package/components/icon/state-nv.vue +1 -1
  149. package/components/icon/state-ny.vue +1 -1
  150. package/components/icon/state-oh.vue +1 -1
  151. package/components/icon/state-ok.vue +1 -1
  152. package/components/icon/state-or.vue +1 -1
  153. package/components/icon/state-pa.vue +1 -1
  154. package/components/icon/state-ri.vue +1 -1
  155. package/components/icon/state-sc.vue +1 -1
  156. package/components/icon/state-sd.vue +1 -1
  157. package/components/icon/state-tn.vue +1 -1
  158. package/components/icon/state-tx.vue +1 -1
  159. package/components/icon/state-ut.vue +1 -1
  160. package/components/icon/state-va.vue +1 -1
  161. package/components/icon/state-vt.vue +1 -1
  162. package/components/icon/state-wa.vue +1 -1
  163. package/components/icon/state-wi.vue +1 -1
  164. package/components/icon/state-wv.vue +1 -1
  165. package/components/icon/state-wy.vue +1 -1
  166. package/components/icon/thumbs-up.vue +1 -1
  167. package/components/icon/trash-can.vue +1 -1
  168. package/components/icon/twitter.vue +1 -1
  169. package/components/icon/verified.vue +1 -1
  170. package/components/icon/wifi.vue +1 -1
  171. package/components/icon/x.vue +1 -1
  172. package/components/icon/youtube.vue +1 -1
  173. package/composables/forms.ts +1 -1
  174. package/nuxt.config.ts +9 -0
  175. package/package.json +2 -1
  176. package/types/es-carousel.ts +12 -0
  177. package/types/index.ts +1 -0
  178. package/utils/forms.ts +120 -0
  179. package/utils/{get-es-footer-content.js → get-es-footer-content.ts} +1 -0
  180. package/{lib-utils/mime-type-finder.js → utils/mime-type-finder.ts} +2 -2
  181. package/utils/vuelidate-keys.ts +39 -0
  182. /package/utils/{get-es-nav-bar-account-content.js → get-es-nav-bar-account-content.ts} +0 -0
  183. /package/utils/{get-es-nav-bar-global-content.js → get-es-nav-bar-global-content.ts} +0 -0
@@ -0,0 +1,237 @@
1
+ <script setup lang="ts">
2
+ import SelectButton from 'primevue/selectbutton';
3
+
4
+ interface SegmentedControlItem {
5
+ label: string;
6
+ }
7
+
8
+ interface Props {
9
+ disabled?: boolean;
10
+ label: string;
11
+ options: SegmentedControlItem[];
12
+ }
13
+
14
+ interface ButtonDimensionsInterface {
15
+ options: Partial<CSSStyleDeclaration>[];
16
+ }
17
+
18
+ const props = withDefaults(defineProps<Props>(), {
19
+ disabled: false,
20
+ });
21
+ const model = defineModel<number>();
22
+ const segmentedControlRef = useTemplateRef('segmentedControl');
23
+ let resizeObserver: ResizeObserver | null = null;
24
+
25
+ // needed to avoid Content Layout Shift (CLS)
26
+ // as the inkbar is positioned via left and width attributes which are not set until mount
27
+ // meaning the active state would be initially missing and then pop in on mount, causing CLS
28
+ const isMounted = ref(false);
29
+
30
+ const buttonDimensions: ButtonDimensionsInterface = reactive({
31
+ options: props.options?.length ? props.options.map(() => ({})) : [],
32
+ });
33
+
34
+ const inkbarStyle: ComputedRef<Partial<CSSStyleDeclaration>> = computed(
35
+ () => buttonDimensions.options[model.value || 0],
36
+ );
37
+
38
+ // assume the provided label is unique and convert to an id
39
+ // by lowercasing and replacing all whitespace with dashes
40
+ const labelId = computed(() => {
41
+ return props.label ? props.label.toLowerCase().replace(/\s/g, '-') : '';
42
+ });
43
+
44
+ // return the left/width to use for the active state bubble, for each provided button
45
+ const getButtonDimensions = (buttons: HTMLCollection) => {
46
+ const result = [];
47
+ let runningLeftTotal = 0;
48
+ for (let i = 0; i < buttons.length; i += 1) {
49
+ const button = buttons[i] as unknown as HTMLElement;
50
+ result.push({
51
+ left: `${runningLeftTotal}px`,
52
+ width: `${button.offsetWidth}px`,
53
+ });
54
+
55
+ runningLeftTotal += button.offsetWidth;
56
+ }
57
+
58
+ return result;
59
+ };
60
+
61
+ onMounted(() => {
62
+ isMounted.value = true;
63
+
64
+ if (segmentedControlRef.value) {
65
+ // set the initial button dimensions
66
+ const buttons = segmentedControlRef.value.querySelectorAll(
67
+ '.es-segmented-control-button',
68
+ ) as unknown as HTMLCollection;
69
+ buttonDimensions.options = getButtonDimensions(buttons);
70
+
71
+ // set up a resize observer for whenever the segmented control's button group changes width
72
+ // this will most commonly happen when changing between desktop and mobile breakpoints
73
+ // but could also happen if the label text of any options changes
74
+ resizeObserver = new ResizeObserver((groups) => {
75
+ groups.forEach((group) => {
76
+ const updatedButtons = group.target.children;
77
+ buttonDimensions.options = getButtonDimensions(updatedButtons);
78
+ });
79
+ });
80
+
81
+ // start the resize observer listening to the segmented control's button group
82
+ const group = segmentedControlRef.value.querySelector('.es-segmented-control-group');
83
+ if (group) {
84
+ resizeObserver.observe(group);
85
+ }
86
+ }
87
+ });
88
+
89
+ onUnmounted(() => {
90
+ if (resizeObserver) {
91
+ resizeObserver.disconnect();
92
+ }
93
+ });
94
+ </script>
95
+
96
+ <template>
97
+ <div
98
+ v-if="options?.length"
99
+ ref="segmentedControl"
100
+ :aria-hidden="props.disabled || undefined"
101
+ class="es-segmented-control d-flex position-relative"
102
+ :class="{
103
+ disabled: props.disabled,
104
+ 'before-mount': !isMounted,
105
+ }">
106
+ <label
107
+ :id="labelId"
108
+ class="sr-only">
109
+ {{ label }}
110
+ </label>
111
+ <span
112
+ class="es-segmented-control-inkbar rounded-lg position-absolute"
113
+ :data-left="buttonDimensions.options[model || 0]?.left || 0"
114
+ :style="inkbarStyle as any" />
115
+ <select-button
116
+ v-model="model"
117
+ :allow-empty="false"
118
+ :aria-labelledby="labelId"
119
+ data-key="label"
120
+ :disabled="props.disabled"
121
+ :option-label="(option) => option.label"
122
+ :option-value="(option) => props.options.findIndex((innerOption) => option.label === innerOption.label)"
123
+ :options="props.options"
124
+ :pt="{
125
+ root: 'es-segmented-control-group bg-gray-100 d-flex rounded-lg',
126
+ button: 'es-segmented-control-button font-size-sm font-weight-bold position-relative px-200 px-lg-300 rounded-lg',
127
+ label: 'es-segmented-control-label position-relative',
128
+ }"
129
+ :unselectable="false" />
130
+ </div>
131
+ </template>
132
+
133
+ <style lang="scss" scoped>
134
+ @use '@energysage/es-ds-styles/scss/variables' as variables;
135
+
136
+ /* avoid Content Layout Shift (CLS) */
137
+ .es-segmented-control.before-mount {
138
+ .es-segmented-control-inkbar {
139
+ /* prevent inkbar with left and width of zero from showing up between first paint and mount */
140
+ opacity: 0;
141
+ }
142
+
143
+ :deep(.es-segmented-control-button) {
144
+ position: relative;
145
+
146
+ /* temporarily replicate the inkbar's active state until mount */
147
+ &[data-p-highlight='true'] {
148
+ &::before {
149
+ border-radius: variables.$border-radius-lg;
150
+ content: '';
151
+ left: 0;
152
+ position: absolute;
153
+ width: 100%;
154
+ z-index: 3;
155
+ }
156
+ }
157
+ }
158
+ }
159
+
160
+ /* active state bubble */
161
+ .es-segmented-control-inkbar,
162
+ .es-segmented-control.before-mount :deep(.es-segmented-control-button[data-p-highlight='true']::before) {
163
+ /* using style for bg instead of bg-white class so it can be overridden for disabled state */
164
+ background-color: variables.$white;
165
+ border: 2px solid variables.$warm-orange;
166
+ bottom: 2px;
167
+ top: 2px;
168
+ /* bring it ~2px away from each side to match the top/bottom */
169
+ transform: scaleX(0.98);
170
+
171
+ @media not (prefers-reduced-motion) {
172
+ transition:
173
+ left 250ms cubic-bezier(0.35, 0, 0.25, 1),
174
+ width 250ms cubic-bezier(0.35, 0, 0.25, 1);
175
+ }
176
+ }
177
+
178
+ /* each individual option */
179
+ :deep(.es-segmented-control-button) {
180
+ color: variables.$gray-700;
181
+ cursor: pointer;
182
+ /*
183
+ need a non-standard padding to cause a specific height that matches
184
+ better with our "lg" 14px border radius to get the rounded pill look
185
+ */
186
+ padding-bottom: 6px;
187
+ padding-top: 6px;
188
+ /* don't transition all properties, otherwise responsive bubble width updates will be delayed */
189
+ transition: color 250ms ease-in-out;
190
+ /* prevent text from highlighting when you click a bunch of times */
191
+ user-select: none;
192
+ white-space: nowrap;
193
+ z-index: 4;
194
+
195
+ &:hover {
196
+ color: variables.$gray-900;
197
+ }
198
+
199
+ &:focus-visible {
200
+ box-shadow: 0 0 0 3px variables.$warm-orange inset;
201
+ outline: none;
202
+ }
203
+ }
204
+
205
+ /* bring the label above the active state bubble */
206
+ :deep(.es-segmented-control-label) {
207
+ z-index: 4;
208
+ }
209
+
210
+ /* disabled state */
211
+ .es-segmented-control.disabled,
212
+ .es-segmented-control.before-mount.disabled {
213
+ cursor: default;
214
+ pointer-events: none;
215
+ user-select: none;
216
+
217
+ /* active bubble */
218
+ .es-segmented-control-inkbar,
219
+ :deep(.es-segmented-control-button[data-p-highlight='true']::before) {
220
+ background-color: variables.$gray-200;
221
+ border-color: variables.$gray-300;
222
+ }
223
+
224
+ /* text inside active bubble */
225
+ :deep(.es-segmented-control-button[data-p-highlight='true']) {
226
+ &,
227
+ &:hover {
228
+ color: variables.$gray-500;
229
+ }
230
+ }
231
+
232
+ /* all other items */
233
+ :deep(.es-segmented-control-button) {
234
+ color: variables.$gray-500;
235
+ }
236
+ }
237
+ </style>
@@ -6,20 +6,30 @@ import TabView from 'primevue/tabview';
6
6
  const model = defineModel<number>();
7
7
 
8
8
  // get the list of elements provided as children to the default slot
9
- const panels = useSlots().default?.() || [];
9
+ const initialChildren = useSlots().default?.() || [];
10
+ const panels: any[] = [];
11
+ initialChildren.forEach((child) => {
12
+ // unless this has a v-for element and we instead need to access its children
13
+ if (typeof child.type === 'symbol' && Array.isArray(child.children)) {
14
+ panels.push(...child.children);
15
+ } else {
16
+ panels.push(child);
17
+ }
18
+ });
10
19
 
11
20
  // keep track of the active tab index
12
21
  // - from above, if v-model is used
13
22
  // - from below, if the tab component receives a click
14
- const activeIndex = ref(model.value || 0);
23
+ const activeIndex: Ref<number> = ref(model.value || 0);
15
24
 
16
25
  // watch the v-model for changes and update the active index if it does change
17
26
  watch(model, (newVal) => {
27
+ // @ts-expect-error I don't know why
18
28
  activeIndex.value = newVal;
19
29
  });
20
30
 
21
31
  // called from the TabView when the user clicks a tab to make it active
22
- const updateActiveIndex = (index) => {
32
+ const updateActiveIndex = (index: number) => {
23
33
  model.value = index;
24
34
  };
25
35
  </script>
@@ -2,10 +2,12 @@
2
2
  // Props
3
3
  interface IProps {
4
4
  altText: string;
5
- coverImageUrl: string;
5
+ coverImageUrl?: string;
6
6
  embedUrl: string;
7
7
  }
8
- const props = defineProps<IProps>();
8
+ const props = withDefaults(defineProps<IProps>(), {
9
+ coverImageUrl: '',
10
+ });
9
11
  const showVideo = ref(false);
10
12
 
11
13
  // Methods
@@ -1,4 +1,5 @@
1
1
  <script setup lang="ts">
2
+ // @ts-expect-error module has no types
2
3
  import truncate from 'html-truncate';
3
4
 
4
5
  const props = defineProps({
@@ -85,13 +85,13 @@ const rules = {
85
85
 
86
86
  const { v$, validateState } = useEsForms(rules, state);
87
87
 
88
- const ctaForm = ref<HTMLFormElement>('ctaForm');
88
+ const ctaForm = useTemplateRef<HTMLFormElement>('ctaForm');
89
89
 
90
90
  const handleSubmit = () => {
91
91
  if (v$.value.$invalid) {
92
92
  v$.value.$touch();
93
93
  } else {
94
- ctaForm.value.submit();
94
+ ctaForm.value?.submit();
95
95
  }
96
96
  };
97
97
  </script>
@@ -1,4 +1,4 @@
1
- <script>
1
+ <script lang="ts">
2
2
  export default {
3
3
  name: 'IconArrowClockwise',
4
4
  props: {
@@ -1,4 +1,4 @@
1
- <script>
1
+ <script lang="ts">
2
2
  export default {
3
3
  name: 'ArrowCounterClockwiseIcon',
4
4
  props: {
@@ -1,5 +1,5 @@
1
1
  <!-- eslint-disable max-len -->
2
- <script>
2
+ <script lang="ts">
3
3
  export default {
4
4
  name: 'IconArrowCycle',
5
5
  props: {
@@ -1,5 +1,5 @@
1
1
  <!-- eslint-disable max-len -->
2
- <script>
2
+ <script lang="ts">
3
3
  export default {
4
4
  name: 'ArrowLeftIcon',
5
5
  props: {
@@ -1,5 +1,5 @@
1
1
  <!-- eslint-disable max-len -->
2
- <script>
2
+ <script lang="ts">
3
3
  export default {
4
4
  name: 'ArrowRightIcon',
5
5
  props: {
@@ -1,5 +1,5 @@
1
1
  <!-- eslint-disable max-len -->
2
- <script>
2
+ <script lang="ts">
3
3
  export default {
4
4
  name: 'ArrowUpIcon',
5
5
  props: {
@@ -1,5 +1,5 @@
1
1
  <!-- eslint-disable max-len -->
2
- <script>
2
+ <script lang="ts">
3
3
  export default {
4
4
  name: 'IconArrow',
5
5
  props: {
@@ -1,5 +1,5 @@
1
1
  <!-- eslint-disable max-len -->
2
- <script>
2
+ <script lang="ts">
3
3
  export default {
4
4
  name: 'IconBank',
5
5
  props: {
@@ -1,5 +1,5 @@
1
1
  <!-- eslint-disable max-len -->
2
- <script>
2
+ <script lang="ts">
3
3
  export default {
4
4
  name: 'IconBell',
5
5
  props: {
@@ -1,5 +1,5 @@
1
1
  <!-- eslint-disable max-len -->
2
- <script>
2
+ <script lang="ts">
3
3
  export default {
4
4
  name: 'IconBlock',
5
5
  props: {
@@ -1,5 +1,5 @@
1
1
  <!-- eslint-disable max-len -->
2
- <script>
2
+ <script lang="ts">
3
3
  export default {
4
4
  name: 'IconCalculator',
5
5
  props: {
@@ -1,5 +1,5 @@
1
1
  <!-- eslint-disable max-len -->
2
- <script>
2
+ <script lang="ts">
3
3
  export default {
4
4
  name: 'IconCalendar',
5
5
  props: {
@@ -1,5 +1,5 @@
1
1
  <!-- eslint-disable max-len -->
2
- <script>
2
+ <script lang="ts">
3
3
  export default {
4
4
  name: 'IconCart',
5
5
  props: {
@@ -0,0 +1,61 @@
1
+ <script lang="ts">
2
+ export default {
3
+ name: 'IconCcpaOptOut',
4
+ props: {
5
+ /**
6
+ * Width
7
+ */
8
+ width: {
9
+ type: String,
10
+ default: '30px',
11
+ required: false,
12
+ },
13
+ /**
14
+ * Height
15
+ */
16
+ height: {
17
+ type: String,
18
+ default: '14px',
19
+ required: false,
20
+ },
21
+ },
22
+ };
23
+ </script>
24
+
25
+ <template>
26
+ <svg
27
+ xmlns="http://www.w3.org/2000/svg"
28
+ xml:space="preserve"
29
+ id="Layer_1"
30
+ :style="{
31
+ height: height,
32
+ width: width,
33
+ }"
34
+ aria-label="California Consumer Privacy Act (CCPA) Opt-Out Icon"
35
+ role="img"
36
+ x="0"
37
+ y="0"
38
+ version="1.1"
39
+ viewBox="0 0 30 14">
40
+ <g
41
+ id="Final-Copy-2"
42
+ style="display: inline">
43
+ <path
44
+ class="st0"
45
+ d="M7.4,12.8h6.8l3.1-11.6H7.4C4.2,1.2,1.6,3.8,1.6,7S4.2,12.8,7.4,12.8z"
46
+ style="fill: #fff" />
47
+ <path
48
+ id="path2"
49
+ d="M22.6 0H7.4c-3.9 0-7 3.1-7 7s3.1 7 7 7h15.2c3.9 0 7-3.1 7-7s-3.2-7-7-7zm-21 7c0-3.2 2.6-5.8 5.8-5.8h9.9l-3.1 11.6H7.4c-3.2 0-5.8-2.6-5.8-5.8Z"
50
+ style="clip-rule: evenodd; fill: #06f; fill-rule: evenodd" />
51
+ <path
52
+ id="x"
53
+ d="M24.6 4c.2.2.2.6 0 .8L22.5 7l2.2 2.2c.2.2.2.6 0 .8-.2.2-.6.2-.8 0l-2.2-2.2-2.2 2.2c-.2.2-.6.2-.8 0-.2-.2-.2-.6 0-.8L20.8 7l-2.2-2.2c-.2-.2-.2-.6 0-.8.2-.2.6-.2.8 0l2.2 2.2L23.8 4c.2-.2.6-.2.8 0Z"
54
+ style="fill: #fff" />
55
+ <path
56
+ id="y"
57
+ d="M12.7 4.1c.2.2.3.6.1.8L8.6 9.8c-.1.1-.2.2-.3.2-.2.1-.5.1-.7-.1L5.4 7.7c-.2-.2-.2-.6 0-.8.2-.2.6-.2.8 0L8 8.6l3.8-4.5c.2-.2.6-.2.9 0z"
58
+ style="fill: #06f" />
59
+ </g>
60
+ </svg>
61
+ </template>
@@ -1,5 +1,5 @@
1
1
  <!-- eslint-disable max-len -->
2
- <script>
2
+ <script lang="ts">
3
3
  export default {
4
4
  name: 'IconChatAdd',
5
5
  props: {
@@ -1,5 +1,5 @@
1
1
  <!-- eslint-disable max-len -->
2
- <script>
2
+ <script lang="ts">
3
3
  export default {
4
4
  name: 'IconChatApprove',
5
5
  props: {
@@ -1,5 +1,5 @@
1
1
  <!-- eslint-disable max-len -->
2
- <script>
2
+ <script lang="ts">
3
3
  export default {
4
4
  name: 'IconChatBubble',
5
5
  props: {
@@ -1,5 +1,5 @@
1
1
  <!-- eslint-disable max-len -->
2
- <script>
2
+ <script lang="ts">
3
3
  export default {
4
4
  name: 'IconChatDots',
5
5
  props: {
@@ -1,5 +1,5 @@
1
1
  <!-- eslint-disable max-len -->
2
- <script>
2
+ <script lang="ts">
3
3
  export default {
4
4
  name: 'IconCheck',
5
5
  props: {
@@ -1,5 +1,5 @@
1
1
  <!-- eslint-disable max-len -->
2
- <script>
2
+ <script lang="ts">
3
3
  export default {
4
4
  name: 'IconChevronDown',
5
5
  props: {
@@ -1,5 +1,5 @@
1
1
  <!-- eslint-disable max-len -->
2
- <script>
2
+ <script lang="ts">
3
3
  export default {
4
4
  name: 'IconChevronHorizontal',
5
5
  props: {
@@ -1,5 +1,5 @@
1
1
  <!-- eslint-disable max-len -->
2
- <script>
2
+ <script lang="ts">
3
3
  export default {
4
4
  name: 'IconChevronLeft',
5
5
  props: {
@@ -1,5 +1,5 @@
1
1
  <!-- eslint-disable max-len -->
2
- <script>
2
+ <script lang="ts">
3
3
  export default {
4
4
  name: 'IconChevronRight',
5
5
  props: {
@@ -1,5 +1,5 @@
1
1
  <!-- eslint-disable max-len -->
2
- <script>
2
+ <script lang="ts">
3
3
  export default {
4
4
  name: 'IconChevronUp',
5
5
  props: {
@@ -1,5 +1,5 @@
1
1
  <!-- eslint-disable max-len -->
2
- <script>
2
+ <script lang="ts">
3
3
  export default {
4
4
  name: 'IconCircleAlert',
5
5
  props: {
@@ -1,5 +1,5 @@
1
1
  <!-- eslint-disable max-len -->
2
- <script>
2
+ <script lang="ts">
3
3
  export default {
4
4
  name: 'IconCircleCheck',
5
5
  props: {
@@ -1,6 +1,6 @@
1
1
  <!-- eslint-disable max-len -->
2
2
 
3
- <script>
3
+ <script lang="ts">
4
4
  export default {
5
5
  name: 'IconCircleChevronDown',
6
6
  props: {
@@ -1,5 +1,5 @@
1
1
  <!-- eslint-disable max-len -->
2
- <script>
2
+ <script lang="ts">
3
3
  export default {
4
4
  name: 'IconCircleChevronLeft',
5
5
  props: {
@@ -1,5 +1,5 @@
1
1
  <!-- eslint-disable max-len -->
2
- <script>
2
+ <script lang="ts">
3
3
  export default {
4
4
  name: 'IconCircleChevronRight',
5
5
  props: {
@@ -1,5 +1,5 @@
1
1
  <!-- eslint-disable max-len -->
2
- <script>
2
+ <script lang="ts">
3
3
  export default {
4
4
  name: 'IconCircleChevronUp',
5
5
  props: {
@@ -1,5 +1,5 @@
1
1
  <!-- eslint-disable max-len -->
2
- <script>
2
+ <script lang="ts">
3
3
  export default {
4
4
  name: 'IconCircleMinus',
5
5
  props: {
@@ -1,5 +1,5 @@
1
1
  <!-- eslint-disable max-len -->
2
- <script>
2
+ <script lang="ts">
3
3
  export default {
4
4
  name: 'IconCirclePlus',
5
5
  props: {
@@ -1,5 +1,5 @@
1
1
  <!-- eslint-disable max-len -->
2
- <script>
2
+ <script lang="ts">
3
3
  export default {
4
4
  name: 'IconCircleX',
5
5
  props: {
@@ -1,5 +1,5 @@
1
1
  <!-- eslint-disable max-len -->
2
- <script>
2
+ <script lang="ts">
3
3
  export default {
4
4
  name: 'IconCircle',
5
5
  props: {
@@ -1,5 +1,5 @@
1
1
  <!-- eslint-disable max-len -->
2
- <script>
2
+ <script lang="ts">
3
3
  export default {
4
4
  name: 'IconClock',
5
5
  props: {
@@ -1,4 +1,4 @@
1
- <script>
1
+ <script lang="ts">
2
2
  export default {
3
3
  name: 'IconCompanies',
4
4
  props: {
@@ -1,4 +1,4 @@
1
- <script>
1
+ <script lang="ts">
2
2
  export default {
3
3
  name: 'IconContactUs',
4
4
  props: {