@citizenplane/pimp 18.6.2 → 18.8.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 (159) hide show
  1. package/biome.json +178 -0
  2. package/dist/components/BaseInputLabel.vue.d.ts.map +1 -1
  3. package/dist/components/BaseSelectClearButton.vue.d.ts.map +1 -1
  4. package/dist/components/CpAccordion.vue.d.ts.map +1 -1
  5. package/dist/components/CpAlert.vue.d.ts.map +1 -1
  6. package/dist/components/CpBadge.vue.d.ts.map +1 -1
  7. package/dist/components/CpButton.vue.d.ts.map +1 -1
  8. package/dist/components/CpButtonToggle.vue.d.ts +1 -1
  9. package/dist/components/CpButtonToggle.vue.d.ts.map +1 -1
  10. package/dist/components/CpCalendar.vue.d.ts.map +1 -1
  11. package/dist/components/CpCheckbox.vue.d.ts.map +1 -1
  12. package/dist/components/CpContextualMenu.vue.d.ts.map +1 -1
  13. package/dist/components/CpDate.vue.d.ts.map +1 -1
  14. package/dist/components/CpDatepicker.vue.d.ts.map +1 -1
  15. package/dist/components/CpInput.vue.d.ts.map +1 -1
  16. package/dist/components/CpItemActions.vue.d.ts +2 -0
  17. package/dist/components/CpItemActions.vue.d.ts.map +1 -1
  18. package/dist/components/CpMenu.vue.d.ts.map +1 -1
  19. package/dist/components/CpMenuItem.vue.d.ts.map +1 -1
  20. package/dist/components/CpMultiselect.vue.d.ts.map +1 -1
  21. package/dist/components/CpRadio.vue.d.ts.map +1 -1
  22. package/dist/components/CpRadioGroup.vue.d.ts.map +1 -1
  23. package/dist/components/CpRadioNew.vue.d.ts.map +1 -1
  24. package/dist/components/CpSelect.vue.d.ts.map +1 -1
  25. package/dist/components/CpSelectMenu.vue.d.ts.map +1 -1
  26. package/dist/components/CpSelectableButton.vue.d.ts +1 -1
  27. package/dist/components/CpSelectableButton.vue.d.ts.map +1 -1
  28. package/dist/components/CpSwitch.vue.d.ts.map +1 -1
  29. package/dist/components/CpTable.vue.d.ts.map +1 -1
  30. package/dist/components/CpTelInput.vue.d.ts.map +1 -1
  31. package/dist/components/CpTooltip.vue.d.ts +2 -0
  32. package/dist/components/CpTooltip.vue.d.ts.map +1 -1
  33. package/dist/components/CpTrip.vue.d.ts +48 -0
  34. package/dist/components/CpTrip.vue.d.ts.map +1 -0
  35. package/dist/components/CpTripTimeline.vue.d.ts +24 -0
  36. package/dist/components/CpTripTimeline.vue.d.ts.map +1 -0
  37. package/dist/components/index.d.ts +2 -1
  38. package/dist/components/index.d.ts.map +1 -1
  39. package/dist/composables/useDynamicSize.d.ts +9 -0
  40. package/dist/composables/useDynamicSize.d.ts.map +1 -0
  41. package/dist/constants/index.d.ts +2 -2
  42. package/dist/constants/index.d.ts.map +1 -1
  43. package/dist/constants/layout/Breakpoints.d.ts +9 -0
  44. package/dist/constants/layout/Breakpoints.d.ts.map +1 -0
  45. package/dist/constants/layout/Sizes.d.ts +2 -0
  46. package/dist/constants/layout/Sizes.d.ts.map +1 -0
  47. package/dist/constants/layout/index.d.ts +3 -0
  48. package/dist/constants/layout/index.d.ts.map +1 -0
  49. package/dist/helpers/functions.d.ts +1 -0
  50. package/dist/helpers/functions.d.ts.map +1 -1
  51. package/dist/libs/CoreDatepicker.vue.d.ts.map +1 -1
  52. package/dist/pimp.es.js +6797 -6461
  53. package/dist/pimp.umd.js +54 -54
  54. package/dist/style.css +1 -1
  55. package/package.json +14 -24
  56. package/src/assets/css/base.css +17 -11
  57. package/src/assets/css/colors.css +12 -22
  58. package/src/assets/css/dimensions.css +4 -0
  59. package/src/assets/css/shadows.css +0 -3
  60. package/src/assets/css/tokens.css +21 -65
  61. package/src/assets/css/typography.css +0 -17
  62. package/src/assets/main.css +7 -7
  63. package/src/assets/styles/helpers/_functions.scss +2 -2
  64. package/src/assets/styles/utilities/_index.scss +2 -3
  65. package/src/components/BaseInputLabel.vue +7 -11
  66. package/src/components/BaseSelectClearButton.vue +6 -7
  67. package/src/components/CpAccordion.vue +27 -28
  68. package/src/components/CpAccordionGroup.vue +2 -2
  69. package/src/components/CpAlert.vue +12 -11
  70. package/src/components/CpBadge.vue +4 -19
  71. package/src/components/CpButton.vue +23 -25
  72. package/src/components/CpButtonGroup.vue +2 -2
  73. package/src/components/CpButtonToggle.vue +22 -22
  74. package/src/components/CpCalendar.vue +30 -26
  75. package/src/components/CpCheckbox.vue +29 -33
  76. package/src/components/CpContextualMenu.vue +1 -2
  77. package/src/components/CpDate.vue +72 -76
  78. package/src/components/CpDatepicker.vue +2 -3
  79. package/src/components/CpDialog.vue +8 -8
  80. package/src/components/CpHeading.vue +6 -6
  81. package/src/components/CpIcon.vue +2 -2
  82. package/src/components/CpInput.vue +46 -48
  83. package/src/components/CpItemActions.vue +17 -16
  84. package/src/components/CpMenu.vue +8 -9
  85. package/src/components/CpMenuItem.vue +7 -7
  86. package/src/components/CpMenuList.vue +3 -3
  87. package/src/components/CpMultiselect.vue +29 -30
  88. package/src/components/CpRadio.vue +53 -59
  89. package/src/components/CpRadioGroup.vue +11 -12
  90. package/src/components/CpRadioNew.vue +56 -58
  91. package/src/components/CpSelect.vue +42 -42
  92. package/src/components/CpSelectMenu.vue +32 -32
  93. package/src/components/CpSelectableButton.vue +50 -51
  94. package/src/components/CpSwitch.vue +43 -44
  95. package/src/components/CpTable.vue +69 -81
  96. package/src/components/CpTableColumnEditor.vue +16 -16
  97. package/src/components/CpTableEmptyState.vue +4 -4
  98. package/src/components/CpTableFooter.vue +2 -2
  99. package/src/components/CpTableFooterDesktop.vue +2 -2
  100. package/src/components/CpTableFooterDetails.vue +2 -2
  101. package/src/components/CpTableFooterMobile.vue +4 -4
  102. package/src/components/CpTabs.vue +1 -1
  103. package/src/components/CpTelInput.vue +31 -32
  104. package/src/components/CpTextarea.vue +13 -13
  105. package/src/components/CpToast.vue +25 -24
  106. package/src/components/CpTooltip.vue +15 -13
  107. package/src/components/CpTransitionCounter.vue +1 -1
  108. package/src/components/CpTransitionExpand.vue +5 -5
  109. package/src/components/CpTransitionSize.vue +1 -1
  110. package/src/components/CpTrip.vue +190 -0
  111. package/src/components/CpTripTimeline.vue +272 -0
  112. package/src/components/index.ts +36 -34
  113. package/src/composables/useDynamicSize.ts +60 -0
  114. package/src/constants/index.ts +2 -2
  115. package/src/constants/layout/Breakpoints.ts +8 -0
  116. package/src/constants/layout/Sizes.ts +1 -0
  117. package/src/constants/layout/index.ts +3 -0
  118. package/src/directives/ClickOutside.ts +1 -1
  119. package/src/directives/ResizeSelect.ts +1 -1
  120. package/src/helpers/functions.ts +1 -1
  121. package/src/helpers/index.ts +1 -1
  122. package/src/libs/CoreDatepicker.vue +115 -134
  123. package/src/stories/Colors.stories.ts +2 -1
  124. package/src/stories/CpAccordion.stories.ts +2 -2
  125. package/src/stories/CpAccordionGroup.stories.ts +1 -2
  126. package/src/stories/CpButtonToggle.stories.ts +1 -2
  127. package/src/stories/CpCheckbox.stories.ts +1 -2
  128. package/src/stories/CpContextualMenu.stories.ts +1 -2
  129. package/src/stories/CpDate.stories.ts +1 -2
  130. package/src/stories/CpDatepicker.stories.ts +1 -2
  131. package/src/stories/CpDialog.stories.ts +1 -2
  132. package/src/stories/CpInput.stories.ts +1 -2
  133. package/src/stories/CpItemActions.stories.ts +10 -5
  134. package/src/stories/CpMenu.stories.ts +1 -2
  135. package/src/stories/CpMenuItem.stories.ts +1 -2
  136. package/src/stories/CpMultiselect.stories.ts +1 -2
  137. package/src/stories/CpRadio.stories.ts +1 -2
  138. package/src/stories/CpRadioGroup.stories.ts +1 -2
  139. package/src/stories/CpSelect.stories.ts +1 -2
  140. package/src/stories/CpSelectMenu.stories.ts +1 -2
  141. package/src/stories/CpSwitch.stories.ts +1 -2
  142. package/src/stories/CpTable.stories.ts +2 -3
  143. package/src/stories/CpTabs.stories.ts +1 -2
  144. package/src/stories/CpText.stories.ts +2 -1
  145. package/src/stories/CpTextarea.stories.ts +1 -2
  146. package/src/stories/CpToast.stories.ts +2 -3
  147. package/src/stories/CpTransitionCounter.stories.ts +1 -2
  148. package/src/stories/CpTransitionExpand.stories.ts +1 -2
  149. package/src/stories/CpTransitionListItems.stories.ts +1 -2
  150. package/src/stories/CpTransitionSize.stories.ts +1 -2
  151. package/src/stories/CpTransitionSlide.stories.ts +1 -2
  152. package/src/stories/CpTransitionTabContent.stories.ts +1 -2
  153. package/src/stories/CpTrip.stories.ts +323 -0
  154. package/src/stories/Dimensions.stories.ts +1 -0
  155. package/src/stories/Shadows.stories.ts +1 -0
  156. package/src/stories/Typography.stories.ts +1 -0
  157. package/src/vendors/ff-polyfill.ts +1 -1
  158. package/vitest.workspace.js +1 -1
  159. package/src/components/Pimp.vue +0 -10
@@ -81,7 +81,7 @@
81
81
  </template>
82
82
 
83
83
  <script setup lang="ts">
84
- import { computed, ref, useTemplateRef, useId } from 'vue'
84
+ import { computed, ref, useId, useTemplateRef } from 'vue'
85
85
 
86
86
  import type { CpTableColumnObject } from '@/constants/CpTableColumn'
87
87
 
@@ -149,21 +149,21 @@ const handleDropdownShown = () => {
149
149
 
150
150
  <style lang="scss">
151
151
  .cpTableColumnEditor {
152
- text-align: right;
153
152
  padding-bottom: var(--cp-spacing-xs);
153
+ text-align: right;
154
154
 
155
155
  &__trigger {
156
156
  @extend %u-focus-outline;
157
157
 
158
- color: var(--cp-text-secondary);
159
158
  border-radius: var(--cp-radius-md);
159
+ color: var(--cp-text-secondary);
160
160
 
161
161
  &--isOpen,
162
162
  &:hover,
163
163
  &:focus-within {
164
- transform: none;
165
- outline-offset: 0;
166
164
  background-color: var(--cp-background-primary-hover);
165
+ outline-offset: 0;
166
+ transform: none;
167
167
  }
168
168
  }
169
169
 
@@ -183,24 +183,24 @@ const handleDropdownShown = () => {
183
183
  padding-inline: var(--cp-spacing-lg);
184
184
  }
185
185
 
186
+ &__column,
187
+ &__empty {
188
+ font-size: var(--cp-text-size-sm);
189
+ }
190
+
191
+ &__column {
192
+ text-transform: capitalize;
193
+ }
194
+
186
195
  &__heading,
187
196
  &__column:not(:has(.cpTableColumnEditor__checkbox)) {
188
197
  padding: var(--cp-spacing-sm) var(--cp-spacing-lg);
189
198
  }
190
199
 
191
200
  &__heading {
201
+ color: var(--cp-text-secondary);
192
202
  font-size: var(--cp-text-size-xs);
193
203
  line-height: var(--cp-line-height-md);
194
- color: var(--cp-text-secondary);
195
- }
196
-
197
- &__column,
198
- &__empty {
199
- font-size: var(--cp-text-size-sm);
200
- }
201
-
202
- &__column {
203
- text-transform: capitalize;
204
204
  }
205
205
 
206
206
  &__empty {
@@ -213,8 +213,8 @@ const handleDropdownShown = () => {
213
213
  }
214
214
 
215
215
  &__checkbox {
216
- color: var(--cp-text-primary);
217
216
  padding: var(--cp-spacing-sm) var(--cp-spacing-md);
217
+ color: var(--cp-text-primary);
218
218
  }
219
219
  }
220
220
  </style>
@@ -20,17 +20,17 @@ defineProps<Props>()
20
20
 
21
21
  <style lang="scss">
22
22
  .cpTableEmptyState {
23
- padding: 10vh var(--cp-spacing-xl);
24
23
  display: flex;
25
24
  align-items: center;
26
25
  justify-content: center;
26
+ padding: 10vh var(--cp-spacing-xl);
27
27
 
28
28
  &__icon {
29
- margin-bottom: var(--cp-spacing-2xl);
30
- border-radius: var(--cp-radius-sm);
31
29
  display: inline-block;
32
- background-color: var(--cp-background-secondary);
33
30
  padding: var(--cp-spacing-xl);
31
+ border-radius: var(--cp-radius-sm);
32
+ margin-bottom: var(--cp-spacing-2xl);
33
+ background-color: var(--cp-background-secondary);
34
34
  color: var(--cp-foreground-secondary);
35
35
  }
36
36
 
@@ -98,15 +98,15 @@ const pageLastResultIndex = computed(() => {
98
98
  <style scoped lang="scss">
99
99
  .cpTableFooter {
100
100
  position: sticky;
101
- bottom: var(--cp-spacing-md);
102
101
  z-index: 3;
102
+ bottom: var(--cp-spacing-md);
103
103
 
104
104
  &__loader {
105
105
  display: inline-flex;
106
106
  align-items: center;
107
- gap: var(--cp-spacing-sm);
108
107
  color: var(--cp-text-secondary);
109
108
  font-size: var(--cp-text-size-sm);
109
+ gap: var(--cp-spacing-sm);
110
110
  line-height: var(--cp-line-height-sm);
111
111
  }
112
112
 
@@ -57,8 +57,8 @@ const emit = defineEmits<Emits>()
57
57
  }
58
58
 
59
59
  &__results {
60
- font-variant-numeric: tabular-nums;
61
60
  color: var(--cp-text-secondary);
61
+ font-variant-numeric: tabular-nums;
62
62
  }
63
63
 
64
64
  &__results strong {
@@ -66,8 +66,8 @@ const emit = defineEmits<Emits>()
66
66
  }
67
67
 
68
68
  &__pagination {
69
- justify-content: flex-end;
70
69
  display: flex;
70
+ justify-content: flex-end;
71
71
  gap: var(--cp-spacing-md);
72
72
  }
73
73
  }
@@ -35,17 +35,17 @@ const paginationResultsDetails = computed(() => {
35
35
  <style lang="scss">
36
36
  .cpTableFooterDetails {
37
37
  &__paginationLabel {
38
- font-weight: 600;
39
38
  color: var(--cp-text-primary);
40
39
  font-size: var(--cp-text-size-xs);
40
+ font-weight: 600;
41
41
  line-height: var(--cp-line-height-xs);
42
42
  }
43
43
 
44
44
  &__resultsCount,
45
45
  &__noResults {
46
- font-weight: 500;
47
46
  color: var(--cp-text-secondary);
48
47
  font-size: var(--cp-text-size-xs);
48
+ font-weight: 500;
49
49
  line-height: var(--cp-line-height-xs);
50
50
  }
51
51
  }
@@ -47,16 +47,16 @@ const emit = defineEmits<Emits>()
47
47
 
48
48
  <style scoped lang="scss">
49
49
  .cpTableFooterMobile {
50
+ z-index: 3;
50
51
  display: flex;
51
52
  align-items: center;
52
53
  justify-content: space-between;
53
- gap: var(--cp-spacing-md);
54
- font-size: var(--cp-text-size-sm);
55
54
  padding: var(--cp-spacing-xs) var(--cp-spacing-xl);
56
- box-shadow: var(--cp-shadows-overlay);
57
55
  border-radius: var(--cp-radius-md);
58
56
  background: var(--cp-background-primary);
59
- z-index: 3;
57
+ box-shadow: var(--cp-shadows-overlay);
58
+ font-size: var(--cp-text-size-sm);
59
+ gap: var(--cp-spacing-md);
60
60
 
61
61
  .cpButton--isDisabled {
62
62
  background: var(--cp-background-primary);
@@ -192,8 +192,8 @@ watch(
192
192
  @include mx.media-query-min(769px) {
193
193
  .cpTabs {
194
194
  &__tab--isActive {
195
- border-bottom-right-radius: 0;
196
195
  border-bottom-left-radius: 0;
196
+ border-bottom-right-radius: 0;
197
197
  }
198
198
  }
199
199
  }
@@ -41,13 +41,13 @@
41
41
  </template>
42
42
 
43
43
  <script setup lang="ts">
44
+ import type { ComponentPublicInstance } from 'vue'
44
45
  import { computed, nextTick, ref, useAttrs, useId, useTemplateRef } from 'vue'
45
46
 
46
- import type { ComponentPublicInstance } from 'vue'
47
+ import type { Sizes } from '@/constants'
47
48
 
48
49
  import BaseInputLabel from '@/components/BaseInputLabel.vue'
49
50
 
50
- import type { Sizes } from '@/constants'
51
51
  import { capitalizeFirstLetter } from '@/helpers'
52
52
 
53
53
  interface Props {
@@ -179,21 +179,21 @@ const handleOnValidate = (phoneObject: PhoneObject) => emit('validate', phoneObj
179
179
  }
180
180
 
181
181
  &__container {
182
- z-index: 9;
183
182
  position: relative;
183
+ z-index: 9;
184
184
  display: flex;
185
185
  }
186
186
 
187
187
  &__wrapper {
188
188
  --box-shadow: var(--cp-shadows-3xs-inset);
189
189
 
190
+ width: 100%;
190
191
  border: 0;
192
+ border-radius: var(--cp-radius-md-lg);
193
+ appearance: none;
191
194
  box-shadow:
192
195
  var(--box-shadow),
193
196
  0 0 0 var(--cp-dimensions-0_25) var(--cp-border-soft);
194
- appearance: none;
195
- border-radius: var(--cp-radius-md-lg);
196
- width: 100%;
197
197
  color: inherit;
198
198
 
199
199
  &:not(.cpTelInput__wrapper--isDisabled):focus-within {
@@ -237,19 +237,19 @@ const handleOnValidate = (phoneObject: PhoneObject) => emit('validate', phoneObj
237
237
 
238
238
  &__input {
239
239
  padding: var(--cp-spacing-md) var(--cp-spacing-xl);
240
+ border-bottom-right-radius: var(--cp-radius-md-lg);
241
+ border-top-right-radius: var(--cp-radius-md-lg);
240
242
  color: inherit;
241
- line-height: var(--cp-line-height-md);
242
243
  font-size: var(--cp-text-size-sm);
243
- border-top-right-radius: var(--cp-radius-md-lg);
244
- border-bottom-right-radius: var(--cp-radius-md-lg);
244
+ line-height: var(--cp-line-height-md);
245
245
 
246
246
  &:is(:hover, :focus) {
247
247
  z-index: 1;
248
248
  }
249
249
 
250
250
  &:not(.cpTelInput__input--isInvalid, .cpTelInput__input--isDisabled):focus {
251
- outline: var(--cp-dimensions-0_5) solid var(--cp-border-accent-solid);
252
251
  background-color: var(--cp-background-primary);
252
+ outline: var(--cp-dimensions-0_5) solid var(--cp-border-accent-solid);
253
253
  }
254
254
 
255
255
  &::placeholder {
@@ -257,8 +257,8 @@ const handleOnValidate = (phoneObject: PhoneObject) => emit('validate', phoneObj
257
257
  }
258
258
 
259
259
  &--isDisabled {
260
- pointer-events: none;
261
260
  background-color: var(--cp-background-disabled);
261
+ pointer-events: none;
262
262
  }
263
263
  }
264
264
 
@@ -268,8 +268,8 @@ const handleOnValidate = (phoneObject: PhoneObject) => emit('validate', phoneObj
268
268
  }
269
269
 
270
270
  .cpTelInput__input:focus {
271
- outline: var(--cp-dimensions-0_5) solid var(--cp-border-error-solid);
272
271
  box-shadow: 0 0 0 var(--cp-dimensions-0_25) solid var(--cp-border-error-solid);
272
+ outline: var(--cp-dimensions-0_5) solid var(--cp-border-error-solid);
273
273
  }
274
274
  }
275
275
 
@@ -280,20 +280,20 @@ const handleOnValidate = (phoneObject: PhoneObject) => emit('validate', phoneObj
280
280
  }
281
281
 
282
282
  .vti__dropdown.open .cpTelInput__arrow {
283
- transform: rotate(180deg);
284
283
  color: var(--cp-foreground-primary);
284
+ transform: rotate(180deg);
285
285
  }
286
286
 
287
287
  .vti__dropdown {
288
- z-index: 1;
289
288
  position: unset;
289
+ z-index: 1;
290
290
  border-right: var(--cp-dimensions-0_25) solid var(--cp-border-strong);
291
291
 
292
292
  &:focus,
293
293
  &:focus-within {
294
294
  z-index: 2;
295
- outline: var(--cp-dimensions-0_5) solid var(--cp-border-accent-solid);
296
295
  border-right: var(--cp-dimensions-0_25) solid transparent;
296
+ outline: var(--cp-dimensions-0_5) solid var(--cp-border-accent-solid);
297
297
  }
298
298
  }
299
299
 
@@ -323,8 +323,8 @@ const handleOnValidate = (phoneObject: PhoneObject) => emit('validate', phoneObj
323
323
  }
324
324
 
325
325
  .vti__flag {
326
- max-width: var(--cp-dimensions-5);
327
326
  min-width: var(--cp-dimensions-5);
327
+ max-width: var(--cp-dimensions-5);
328
328
  border-radius: var(--cp-radius-xs);
329
329
  }
330
330
 
@@ -342,26 +342,26 @@ const handleOnValidate = (phoneObject: PhoneObject) => emit('validate', phoneObj
342
342
  }
343
343
 
344
344
  .vti__search_box {
345
+ width: 100%;
346
+ padding: var(--cp-spacing-sm) var(--cp-spacing-sm) var(--cp-spacing-sm) var(--cp-spacing-md);
347
+ border: none;
348
+ border-radius: var(--cp-radius-sm-md);
349
+ appearance: none;
345
350
  box-shadow:
346
351
  var(--cp-shadows-3xs),
347
352
  0 0 0 var(--cp-dimensions-0_25) var(--cp-border-soft);
348
- appearance: none;
349
- border-radius: var(--cp-radius-sm-md);
350
- width: 100%;
351
353
  color: inherit;
352
- padding: var(--cp-spacing-sm) var(--cp-spacing-sm) var(--cp-spacing-sm) var(--cp-spacing-md);
353
- line-height: var(--cp-line-height-md);
354
354
  font-size: var(--cp-text-size-sm);
355
+ line-height: var(--cp-line-height-md);
355
356
  text-indent: calc(var(--cp-dimensions-1) * 7);
356
- border: none;
357
357
 
358
358
  &:hover {
359
359
  box-shadow: 0 0 0 var(--cp-dimensions-0_25) var(--cp-border-soft-hover);
360
360
  }
361
361
 
362
362
  &:focus {
363
- outline: var(--cp-dimensions-0_5) solid var(--cp-border-accent-solid);
364
363
  background-color: var(--cp-background-primary);
364
+ outline: var(--cp-dimensions-0_5) solid var(--cp-border-accent-solid);
365
365
  }
366
366
 
367
367
  &::placeholder {
@@ -370,22 +370,21 @@ const handleOnValidate = (phoneObject: PhoneObject) => emit('validate', phoneObj
370
370
  }
371
371
 
372
372
  &__searchIcon {
373
- width: var(--cp-dimensions-4);
374
- height: var(--cp-dimensions-4);
375
-
376
373
  position: absolute;
377
374
  top: 50%;
378
- transform: translateY(-50%);
379
375
  left: var(--cp-dimensions-3);
376
+ width: var(--cp-dimensions-4);
377
+ height: var(--cp-dimensions-4);
378
+ transform: translateY(-50%);
380
379
  }
381
380
 
382
381
  .vti__dropdown-list {
383
- clip-path: inset(0 round var(--cp-radius-md-lg));
384
- max-height: calc(var(--cp-dimensions-1) * 32.5);
385
382
  width: calc(100% + var(--cp-dimensions-0_5));
383
+ max-height: calc(var(--cp-dimensions-1) * 32.5);
386
384
  padding: var(--cp-spacing-sm);
387
- border-radius: var(--cp-radius-md-lg);
388
385
  border: var(--cp-dimensions-0_25) solid var(--cp-border-soft);
386
+ border-radius: var(--cp-radius-md-lg);
387
+ clip-path: inset(0 round var(--cp-radius-md-lg));
389
388
 
390
389
  &:has(.vti__search_box) {
391
390
  max-height: calc(var(--cp-dimensions-1) * 42.5);
@@ -401,9 +400,9 @@ const handleOnValidate = (phoneObject: PhoneObject) => emit('validate', phoneObj
401
400
  }
402
401
 
403
402
  .vti__dropdown-item {
404
- padding: var(--cp-spacing-lg) var(--cp-spacing-xl) var(--cp-spacing-lg) var(--cp-spacing-lg);
405
403
  display: flex;
406
404
  align-items: flex-start;
405
+ padding: var(--cp-spacing-lg) var(--cp-spacing-xl) var(--cp-spacing-lg) var(--cp-spacing-lg);
407
406
  border-radius: var(--cp-radius-sm-md);
408
407
  font-size: var(--cp-text-size-sm);
409
408
  line-height: var(--cp-line-height-md);
@@ -430,8 +429,8 @@ const handleOnValidate = (phoneObject: PhoneObject) => emit('validate', phoneObj
430
429
 
431
430
  &--lg {
432
431
  .cpTelInput__input {
433
- font-size: var(--cp-text-size-md);
434
432
  padding: var(--cp-spacing-lg) var(--cp-spacing-xl);
433
+ font-size: var(--cp-text-size-md);
435
434
  }
436
435
 
437
436
  .vti__dropdown {
@@ -28,7 +28,7 @@
28
28
  </template>
29
29
 
30
30
  <script setup lang="ts">
31
- import { ref, computed, useId } from 'vue'
31
+ import { computed, ref, useId } from 'vue'
32
32
 
33
33
  import BaseInputLabel from '@/components/BaseInputLabel.vue'
34
34
  import CpTransitionExpand from '@/components/CpTransitionExpand.vue'
@@ -89,19 +89,19 @@ const handleChange = (newValue: string) => emit('update:modelValue', newValue)
89
89
  position: relative;
90
90
 
91
91
  &__input {
92
- appearance: none;
92
+ width: 100%;
93
+ max-width: 100%;
94
+ height: 100%;
95
+ padding: var(--cp-spacing-xl);
93
96
  border: none;
97
+ border-radius: var(--cp-radius-md-lg);
98
+ appearance: none;
94
99
  box-shadow:
95
100
  var(--cp-shadows-3xs),
96
101
  0 0 0 var(--cp-dimensions-0_25) var(--cp-border-soft);
97
- border-radius: var(--cp-radius-md-lg);
98
- outline: none;
99
- padding: var(--cp-spacing-xl);
100
- width: 100%;
101
- max-width: 100%;
102
- height: 100%;
103
- font-size: var(--cp-text-size-md);
104
102
  color: var(--cp-text-primary);
103
+ font-size: var(--cp-text-size-md);
104
+ outline: none;
105
105
 
106
106
  &:hover {
107
107
  box-shadow:
@@ -110,15 +110,15 @@ const handleChange = (newValue: string) => emit('update:modelValue', newValue)
110
110
  }
111
111
 
112
112
  &:focus {
113
- outline: var(--cp-dimensions-0_5) solid var(--cp-focus);
114
113
  background-color: var(--cp-background-primary);
114
+ outline: var(--cp-dimensions-0_5) solid var(--cp-focus);
115
115
  }
116
116
 
117
117
  &:disabled {
118
- cursor: not-allowed;
119
118
  background: var(--cp-background-disabled);
120
- color: var(--cp-text-disabled);
121
119
  box-shadow: 0 0 0 var(--cp-dimensions-0_25) var(--cp-border-disabled);
120
+ color: var(--cp-text-disabled);
121
+ cursor: not-allowed;
122
122
  }
123
123
 
124
124
  &::placeholder {
@@ -144,9 +144,9 @@ const handleChange = (newValue: string) => emit('update:modelValue', newValue)
144
144
  }
145
145
 
146
146
  &__error {
147
+ color: var(--cp-text-error-primary);
147
148
  font-size: var(--cp-text-size-sm);
148
149
  line-height: var(--cp-line-height-md);
149
- color: var(--cp-text-error-primary);
150
150
  }
151
151
  }
152
152
  </style>
@@ -68,7 +68,6 @@ import { useWebHaptics } from 'web-haptics/vue'
68
68
 
69
69
  import { CpToastTypes } from '@/constants/CpToastTypes'
70
70
  import { Haptics } from '@/constants/Hapitcs'
71
-
72
71
  import { capitalizeFirstLetter } from '@/helpers'
73
72
 
74
73
  interface Message {
@@ -177,9 +176,9 @@ const handleToastAdded = (message: Message) => {
177
176
 
178
177
  .p-toast-message-enter-from,
179
178
  .p-toast-message-leave-to {
179
+ z-index: -1;
180
180
  opacity: 0;
181
181
  transform: translate3d(0, calc(var(--cp-dimensions-1) * -7.5), 0) scale3d(0.75, 0.75, 1);
182
- z-index: -1;
183
182
  }
184
183
 
185
184
  .cpToasts {
@@ -188,8 +187,8 @@ const handleToastAdded = (message: Message) => {
188
187
 
189
188
  .cpToasts .p-toast-message-leave-active:not(:only-child) {
190
189
  position: absolute;
191
- left: 0;
192
190
  right: 0;
191
+ left: 0;
193
192
  }
194
193
 
195
194
  .cpToasts[data-p$='center'] {
@@ -206,24 +205,24 @@ const handleToastAdded = (message: Message) => {
206
205
  .cpToasts > div {
207
206
  display: flex;
208
207
  flex-direction: column;
209
- pointer-events: auto;
210
208
  gap: var(--cp-spacing-md);
209
+ pointer-events: auto;
211
210
  }
212
211
 
213
212
  .cpToast {
214
213
  --toaster-shadow: #{var(--cp-drop-shadow-md-offset-x)} #{var(--cp-drop-shadow-md-offset-y)}
215
214
  #{var(--cp-drop-shadow-md-blur)} #{var(--cp-drop-shadow-md-spread)} #{var(--cp-drop-shadow-md-color)};
216
215
 
216
+ position: relative;
217
217
  display: inline-flex;
218
218
  overflow: hidden;
219
- position: relative;
220
- flex-direction: column;
221
219
  max-width: calc(var(--cp-dimensions-1) * 100);
220
+ flex-direction: column;
222
221
  padding: var(--cp-spacing-lg);
223
222
  border-radius: var(--cp-radius-md);
223
+ background-color: var(--cp-background-primary);
224
224
  box-shadow: var(--toaster-shadow);
225
225
  gap: var(--cp-spacing-md);
226
- background-color: var(--cp-background-primary);
227
226
 
228
227
  &__inner {
229
228
  display: flex;
@@ -233,11 +232,11 @@ const handleToastAdded = (message: Message) => {
233
232
 
234
233
  &__content {
235
234
  display: flex;
235
+ flex: 1;
236
236
  flex-direction: column;
237
237
  align-items: flex-start;
238
- flex: 1;
239
- text-align: left;
240
238
  gap: var(--cp-spacing-sm);
239
+ text-align: left;
241
240
  }
242
241
 
243
242
  &__icon {
@@ -255,30 +254,30 @@ const handleToastAdded = (message: Message) => {
255
254
  }
256
255
 
257
256
  &__summary {
258
- font-weight: 600;
259
257
  color: var(--cp-text-accent-primary);
258
+ font-weight: 600;
260
259
 
261
- &:first-letter {
260
+ &::first-letter {
262
261
  text-transform: capitalize;
263
262
  }
264
263
  }
265
264
 
266
265
  &__detail {
267
- font-weight: 500;
268
266
  color: var(--cp-text-accent-secondary);
267
+ font-weight: 500;
269
268
  }
270
269
 
271
270
  &__actions {
272
- margin-top: var(--cp-spacing-sm);
273
271
  display: flex;
274
272
  justify-content: flex-end;
273
+ margin-top: var(--cp-spacing-sm);
275
274
  gap: var(--cp-spacing-md);
276
275
  }
277
276
 
278
277
  &__close {
279
278
  display: flex;
280
- margin-top: var(--cp-spacing-xs);
281
279
  border-radius: var(--cp-radius-full);
280
+ margin-top: var(--cp-spacing-xs);
282
281
 
283
282
  &:focus-visible {
284
283
  outline: var(--cp-dimensions-0_5) solid var(--cp-border-accent-solid);
@@ -289,25 +288,23 @@ const handleToastAdded = (message: Message) => {
289
288
  from {
290
289
  transform: scale3d(1, 1, 1);
291
290
  }
291
+
292
292
  to {
293
293
  transform: scale3d(0, 1, 1);
294
294
  }
295
295
  }
296
296
 
297
- &:has(.cpToast__timer):hover .cpToast__timer {
298
- animation-play-state: paused;
299
- }
300
-
301
297
  &__timer {
302
298
  position: absolute;
303
- inset: 0;
304
299
  top: auto;
305
300
  height: var(--cp-dimensions-1);
306
- transform-origin: left;
301
+ animation-fill-mode: forwards;
307
302
  animation-name: toast-timer;
308
303
  animation-timing-function: linear;
309
- animation-fill-mode: forwards;
310
304
  background-color: var(--cp-border-accent-solid);
305
+ // stylelint-disable-next-line declaration-block-no-shorthand-property-overrides
306
+ inset: 0;
307
+ transform-origin: left;
311
308
  }
312
309
 
313
310
  &--isInfo {
@@ -393,21 +390,25 @@ const handleToastAdded = (message: Message) => {
393
390
  background-color: var(--cp-border-warning-solid);
394
391
  }
395
392
  }
393
+
394
+ &:has(.cpToast__timer):hover .cpToast__timer {
395
+ animation-play-state: paused;
396
+ }
396
397
  }
397
398
 
398
399
  @media (max-width: 551px) {
399
400
  .cpToasts {
400
- max-width: calc(100% - #{calc(var(--cp-spacing-2xl) * 3)});
401
- width: 100%;
402
401
  right: 0 !important;
403
402
  left: 0;
403
+ width: 100%;
404
+ max-width: calc(100% - #{calc(var(--cp-spacing-2xl) * 3)});
404
405
  margin: 0 auto;
405
406
  text-align: center;
406
407
  }
407
408
 
408
409
  .cpToast {
409
- max-width: 100%;
410
410
  min-width: 100%;
411
+ max-width: 100%;
411
412
  }
412
413
  }
413
414