srcdev-nuxt-forms 0.1.0 → 1.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 (87) hide show
  1. package/LICENSE +21 -0
  2. package/assets/styles/brand/_brand.css +150 -0
  3. package/assets/styles/brand/_brand_dark.css +152 -0
  4. package/assets/styles/brand/_palette_dark.css +148 -0
  5. package/assets/styles/brand/_palette_light.css +148 -0
  6. package/assets/styles/brand/_typography.css +176 -0
  7. package/assets/styles/brand/index.css +1 -0
  8. package/assets/styles/forms/index.css +1 -1
  9. package/assets/styles/forms/themes/_default.css +3 -0
  10. package/assets/styles/forms/themes/_error.css +45 -11
  11. package/assets/styles/forms/themes/_ghost.css +42 -10
  12. package/assets/styles/forms/themes/_primary.css +42 -10
  13. package/assets/styles/forms/themes/_secondary.css +42 -10
  14. package/assets/styles/forms/themes/_success.css +42 -11
  15. package/assets/styles/forms/themes/_tertiary.css +42 -10
  16. package/assets/styles/forms/themes/_warning.css +42 -10
  17. package/assets/styles/forms/themes/index.css +1 -0
  18. package/assets/styles/forms/variables/_palette.css +104 -0
  19. package/assets/styles/forms/variables/_theme.css +12 -18
  20. package/assets/styles/forms/variables/index.css +2 -0
  21. package/assets/styles/main.css +2 -0
  22. package/assets/styles/scaffolding/_margin-helpers.css +308 -0
  23. package/assets/styles/scaffolding/_padding-helpers.css +308 -0
  24. package/assets/styles/scaffolding/_page.css +23 -0
  25. package/assets/styles/scaffolding/index.css +3 -0
  26. package/assets/styles/variables/colors/_blue.css +2 -2
  27. package/assets/styles/variables/colors/_gray.css +2 -1
  28. package/assets/styles/variables/colors/_green.css +2 -2
  29. package/assets/styles/variables/colors/_orange.css +2 -2
  30. package/assets/styles/variables/colors/_red.css +2 -2
  31. package/assets/styles/variables/colors/_yellow.css +1 -1
  32. package/components/forms/c12/prop-validators/index.ts +8 -20
  33. package/components/forms/c12/utils.ts +14 -0
  34. package/components/forms/c12/validation-patterns/en.json +12 -0
  35. package/components/forms/form-errors/InputError.vue +177 -0
  36. package/components/forms/input-button/InputButtonCore.vue +33 -109
  37. package/components/forms/input-button/variants/InputButtonConfirm.vue +1 -1
  38. package/components/forms/input-button/variants/InputButtonSubmit.vue +1 -1
  39. package/components/forms/input-checkbox/InputCheckboxCore.vue +263 -0
  40. package/components/forms/input-checkbox/InputCheckboxWithLabel.vue +116 -0
  41. package/components/forms/input-checkbox/variants/MultipleCheckboxes.vue +167 -0
  42. package/components/forms/input-checkbox/variants/SingleCheckbox.vue +172 -0
  43. package/components/forms/input-number/InputNumberCore.vue +184 -0
  44. package/components/forms/input-number/variants/InputNumberDefault.vue +155 -0
  45. package/components/forms/input-radio/InputRadiobuttonCore.vue +212 -0
  46. package/components/forms/input-radio/InputRadiobuttonWithLabel.vue +103 -0
  47. package/components/forms/input-radio/variants/MultipleRadiobuttons.vue +166 -0
  48. package/components/forms/input-range/InputRangeCore.vue +153 -0
  49. package/components/forms/input-range/variants/InputRangeDefault.vue +159 -0
  50. package/components/forms/input-text/InputTextCore.vue +149 -87
  51. package/components/forms/input-text/variants/material/InputPasswordWithLabel.vue +99 -0
  52. package/components/forms/input-text/variants/material/InputTextAsNumberWithLabel.vue +142 -0
  53. package/components/forms/input-text/variants/material/InputTextWithLabel.vue +125 -0
  54. package/components/forms/input-textarea/InputTextareaCore.vue +161 -0
  55. package/components/forms/input-textarea/variants/InputTextareaWithLabel.vue +106 -0
  56. package/components/scaffolding/footer/NavFooter.vue +62 -0
  57. package/components/ui/content-grid/ContentGrid.vue +85 -0
  58. package/composables/useApiRequest.ts +25 -0
  59. package/composables/useErrorMessages.ts +17 -5
  60. package/composables/useFormControl.ts +149 -37
  61. package/composables/useSleep.ts +2 -2
  62. package/composables/useStyleClassPassthrough.ts +30 -0
  63. package/composables/useZodValidation.ts +120 -0
  64. package/layouts/default.vue +26 -16
  65. package/nuxt.config.ts +22 -0
  66. package/package.json +13 -8
  67. package/pages/forms/examples/buttons/index.vue +14 -13
  68. package/pages/forms/examples/material/cssbattle.vue +60 -0
  69. package/pages/forms/examples/material/text-fields.vue +551 -93
  70. package/pages/index.vue +2 -2
  71. package/pages/limit-text.vue +43 -0
  72. package/pages/typography.vue +83 -0
  73. package/server/api/places/list.get.ts +23 -0
  74. package/server/api/textFields.post.ts +37 -0
  75. package/server/api/utils/index.get.ts +20 -0
  76. package/server/data/places/cities.json +43 -0
  77. package/server/data/places/countries.json +55 -0
  78. package/server/data/utils/title.json +49 -0
  79. package/types/types.forms.ts +135 -3
  80. package/types/types.places.ts +8 -0
  81. package/types/types.zodFormControl.ts +21 -0
  82. package/components/forms/input-text/variants/material/InputEmailMaterial.vue +0 -72
  83. package/components/forms/input-text/variants/material/InputPasswordMaterial.vue +0 -88
  84. package/components/forms/input-text/variants/material/InputTextMaterial.vue +0 -75
  85. package/components/forms/input-text/variants/material/InputTextMaterialCore.vue +0 -258
  86. package/composables/useUpdateStyleClassPassthrough.ts +0 -29
  87. package/pages/forms/examples/material/text-fields-compact.vue +0 -136
@@ -0,0 +1,308 @@
1
+ /* Padding */
2
+ .p-0 {
3
+ padding: 0;
4
+ }
5
+ .pbs-0 {
6
+ padding-block-start: 0;
7
+ }
8
+ .pbe-0 {
9
+ padding-block-end: 0;
10
+ }
11
+ .pis-0 {
12
+ padding-inline-start: 0;
13
+ }
14
+ .pie-0 {
15
+ padding-inline-end: 0;
16
+ }
17
+ .pi-0 {
18
+ padding-inline: 0;
19
+ }
20
+ .pb-0 {
21
+ padding-block: 0;
22
+ }
23
+
24
+ .p-1 {
25
+ padding: 1px;
26
+ }
27
+ .pbs-1 {
28
+ padding-block-start: 1px;
29
+ }
30
+ .pbe-1 {
31
+ padding-block-end: 1px;
32
+ }
33
+ .pis-1 {
34
+ padding-inline-start: 1px;
35
+ }
36
+ .pie-1 {
37
+ padding-inline-end: 1px;
38
+ }
39
+ .pi-1 {
40
+ padding-inline: 1px;
41
+ }
42
+ .pb-1 {
43
+ padding-block: 1px;
44
+ }
45
+
46
+ .p-2 {
47
+ padding: 2px;
48
+ }
49
+ .pbs-2 {
50
+ padding-block-start: 2px;
51
+ }
52
+ .pbe-2 {
53
+ padding-block-end: 2px;
54
+ }
55
+ .pis-2 {
56
+ padding-inline-start: 2px;
57
+ }
58
+ .pie-2 {
59
+ padding-inline-end: 2px;
60
+ }
61
+ .pi-2 {
62
+ padding-inline: 2px;
63
+ }
64
+ .pb-2 {
65
+ padding-block: 2px;
66
+ }
67
+
68
+ .p-4 {
69
+ padding: 4px;
70
+ }
71
+ .pbs-4 {
72
+ padding-block-start: 4px;
73
+ }
74
+ .pbe-4 {
75
+ padding-block-end: 4px;
76
+ }
77
+ .pis-4 {
78
+ padding-inline-start: 4px;
79
+ }
80
+ .pie-4 {
81
+ padding-inline-end: 4px;
82
+ }
83
+ .pi-4 {
84
+ padding-inline: 4px;
85
+ }
86
+ .pb-4 {
87
+ padding-block: 4px;
88
+ }
89
+
90
+ .p-6 {
91
+ padding: 6px;
92
+ }
93
+ .pbs-6 {
94
+ padding-block-start: 6px;
95
+ }
96
+ .pbe-6 {
97
+ padding-block-end: 6px;
98
+ }
99
+ .pis-6 {
100
+ padding-inline-start: 6px;
101
+ }
102
+ .pie-6 {
103
+ padding-inline-end: 6px;
104
+ }
105
+ .pi-6 {
106
+ padding-inline: 6px;
107
+ }
108
+ .pb-6 {
109
+ padding-block: 6px;
110
+ }
111
+
112
+ .p-8 {
113
+ padding: 8px;
114
+ }
115
+ .pbs-8 {
116
+ padding-block-start: 8px;
117
+ }
118
+ .pbe-8 {
119
+ padding-block-end: 8px;
120
+ }
121
+ .pis-8 {
122
+ padding-inline-start: 8px;
123
+ }
124
+ .pie-8 {
125
+ padding-inline-end: 8px;
126
+ }
127
+ .pi-8 {
128
+ padding-inline: 8px;
129
+ }
130
+ .pb-8 {
131
+ padding-block: 8px;
132
+ }
133
+
134
+ .p-10 {
135
+ padding: 10px;
136
+ }
137
+ .pbs-10 {
138
+ padding-block-start: 10px;
139
+ }
140
+ .pbe-10 {
141
+ padding-block-end: 10px;
142
+ }
143
+ .pis-10 {
144
+ padding-inline-start: 10px;
145
+ }
146
+ .pie-10 {
147
+ padding-inline-end: 10px;
148
+ }
149
+ .pi-10 {
150
+ padding-inline: 10px;
151
+ }
152
+ .pb-10 {
153
+ padding-block: 10px;
154
+ }
155
+
156
+ .p-12 {
157
+ padding: 12px;
158
+ }
159
+ .pbs-12 {
160
+ padding-block-start: 12px;
161
+ }
162
+ .pbe-12 {
163
+ padding-block-end: 12px;
164
+ }
165
+ .pis-12 {
166
+ padding-inline-start: 12px;
167
+ }
168
+ .pie-12 {
169
+ padding-inline-end: 12px;
170
+ }
171
+ .pi-12 {
172
+ padding-inline: 12px;
173
+ }
174
+ .pb-12 {
175
+ padding-block: 12px;
176
+ }
177
+
178
+ .p-18 {
179
+ padding: 18px;
180
+ }
181
+ .pbs-18 {
182
+ padding-block-start: 18px;
183
+ }
184
+ .pbe-18 {
185
+ padding-block-end: 18px;
186
+ }
187
+ .pis-18 {
188
+ padding-inline-start: 18px;
189
+ }
190
+ .pie-18 {
191
+ padding-inline-end: 18px;
192
+ }
193
+ .pi-18 {
194
+ padding-inline: 18px;
195
+ }
196
+ .pb-18 {
197
+ padding-block: 18px;
198
+ }
199
+
200
+ .p-20 {
201
+ padding: 20px;
202
+ }
203
+ .pbs-20 {
204
+ padding-block-start: 20px;
205
+ }
206
+ .pbe-20 {
207
+ padding-block-end: 20px;
208
+ }
209
+ .pis-20 {
210
+ padding-inline-start: 20px;
211
+ }
212
+ .pie-20 {
213
+ padding-inline-end: 20px;
214
+ }
215
+ .pi-20 {
216
+ padding-inline: 20px;
217
+ }
218
+ .pb-20 {
219
+ padding-block: 20px;
220
+ }
221
+
222
+ .p-24 {
223
+ padding: 24px;
224
+ }
225
+ .pbs-24 {
226
+ padding-block-start: 24px;
227
+ }
228
+ .pbe-24 {
229
+ padding-block-end: 24px;
230
+ }
231
+ .pis-24 {
232
+ padding-inline-start: 24px;
233
+ }
234
+ .pie-24 {
235
+ padding-inline-end: 24px;
236
+ }
237
+ .pi-24 {
238
+ padding-inline: 24px;
239
+ }
240
+ .pb-24 {
241
+ padding-block: 24px;
242
+ }
243
+
244
+ .p-32 {
245
+ padding: 32px;
246
+ }
247
+ .pbs-32 {
248
+ padding-block-start: 32px;
249
+ }
250
+ .pbe-32 {
251
+ padding-block-end: 32px;
252
+ }
253
+ .pis-32 {
254
+ padding-inline-start: 32px;
255
+ }
256
+ .pie-32 {
257
+ padding-inline-end: 32px;
258
+ }
259
+ .pi-32 {
260
+ padding-inline: 32px;
261
+ }
262
+ .pb-32 {
263
+ padding-block: 32px;
264
+ }
265
+
266
+ .p-40 {
267
+ padding: 40px;
268
+ }
269
+ .pbs-40 {
270
+ padding-block-start: 40px;
271
+ }
272
+ .pbe-40 {
273
+ padding-block-end: 40px;
274
+ }
275
+ .pis-40 {
276
+ padding-inline-start: 40px;
277
+ }
278
+ .pie-40 {
279
+ padding-inline-end: 40px;
280
+ }
281
+ .pi-40 {
282
+ padding-inline: 40px;
283
+ }
284
+ .pb-40 {
285
+ padding-block: 40px;
286
+ }
287
+
288
+ .p-60 {
289
+ padding: 60px;
290
+ }
291
+ .pbs-60 {
292
+ padding-block-start: 60px;
293
+ }
294
+ .pbe-60 {
295
+ padding-block-end: 60px;
296
+ }
297
+ .pis-60 {
298
+ padding-inline-start: 60px;
299
+ }
300
+ .pie-60 {
301
+ padding-inline-end: 60px;
302
+ }
303
+ .pi-60 {
304
+ padding-inline: 60px;
305
+ }
306
+ .pb-60 {
307
+ padding-block: 60px;
308
+ }
@@ -0,0 +1,23 @@
1
+ :root {
2
+ /* color-scheme: light dark; */
3
+ }
4
+
5
+ html {
6
+ background-color: var(--body-background-color);
7
+ /* background-color: light-dark(var(--light-body-background-color), var(--dark-body-background-color)); */
8
+
9
+ font-size: 62.5%;
10
+ }
11
+ body,
12
+ p,
13
+ span,
14
+ pre,
15
+ code,
16
+ div,
17
+ fieldset,
18
+ legend,
19
+ li,
20
+ a {
21
+ font-family: var(--font-family);
22
+ font-size: var(--step-1);
23
+ }
@@ -0,0 +1,3 @@
1
+ @import './_page.css';
2
+ @import './_margin-helpers.css';
3
+ @import './_padding-helpers.css';
@@ -1,4 +1,4 @@
1
- :where(html) {
1
+ :root {
2
2
  --blue-0: #e7f5ff;
3
3
  --blue-1: #d0ebff;
4
4
  --blue-2: #a5d8ff;
@@ -11,5 +11,5 @@
11
11
  --blue-9: #1864ab;
12
12
  --blue-10: #145591;
13
13
  --blue-11: #114678;
14
- --blue-12: #0d375e;
14
+ --blue-12: #0e01cd;
15
15
  }
@@ -1,4 +1,5 @@
1
- :where(html) {
1
+ :root {
2
+ --gray-00: #ffffff;
2
3
  --gray-0: #f8f9fa;
3
4
  --gray-1: #f1f3f5;
4
5
  --gray-2: #e9ecef;
@@ -1,4 +1,4 @@
1
- :where(html) {
1
+ :root {
2
2
  --green-0: #ebfbee;
3
3
  --green-1: #d3f9d8;
4
4
  --green-2: #b2f2bb;
@@ -11,5 +11,5 @@
11
11
  --green-9: #2b8a3e;
12
12
  --green-10: #237032;
13
13
  --green-11: #1b5727;
14
- --green-12: #133d1b;
14
+ --green-12: #00a21e;
15
15
  }
@@ -1,4 +1,4 @@
1
- :where(html) {
1
+ :root {
2
2
  --orange-0: #fff4e6;
3
3
  --orange-1: #ffe8cc;
4
4
  --orange-2: #ffd8a8;
@@ -11,5 +11,5 @@
11
11
  --orange-9: #d9480f;
12
12
  --orange-10: #bf400d;
13
13
  --orange-11: #99330b;
14
- --orange-12: #802b09;
14
+ --orange-12: #db3e00;
15
15
  }
@@ -1,4 +1,4 @@
1
- :where(html) {
1
+ :root {
2
2
  --red-0: #fff5f5;
3
3
  --red-1: #ffe3e3;
4
4
  --red-2: #ffc9c9;
@@ -11,5 +11,5 @@
11
11
  --red-9: #ff0b0b;
12
12
  --red-10: #b02525;
13
13
  --red-11: #962020;
14
- --red-12: #7d1a1a;
14
+ --red-12: #cc0000;
15
15
  }
@@ -1,4 +1,4 @@
1
- :where(html) {
1
+ :root {
2
2
  --yellow-0: #fff9db;
3
3
  --yellow-1: #fff3bf;
4
4
  --yellow-2: #ffec99;
@@ -1,25 +1,13 @@
1
1
  export const propValidators = {
2
2
  size: ['x-small', 'small', 'normal', 'medium', 'large'],
3
- weight: [
4
- 'wght-100',
5
- 'wght-200',
6
- 'wght-300',
7
- 'wght-400',
8
- 'wght-500',
9
- 'wght-600',
10
- 'wght-700',
11
- 'wght-800',
12
- 'wght-900',
13
- ],
14
- theme: [
15
- 'primary',
16
- 'secondary',
17
- 'tertiary',
18
- 'ghost',
19
- 'error',
20
- 'success',
21
- 'warning',
22
- ],
3
+ weight: ['wght-100', 'wght-200', 'wght-300', 'wght-400', 'wght-500', 'wght-600', 'wght-700', 'wght-800', 'wght-900'],
4
+ theme: ['primary', 'secondary', 'tertiary', 'ghost', 'error', 'success', 'warning'],
5
+ checkboxAppearance: [null, 'with-decorator'],
6
+ checkboxStyle: ['check', 'cross'],
7
+ radioAppearance: [null, 'with-decorator'],
8
+ optionsLayout: ['block', 'inline', 'equal-widths'],
9
+ inputTypesButton: ['button', 'cancel', 'reset', 'submit'],
10
+ inputTypesText: ['text', 'email', 'password', 'number', 'tel', 'url'],
23
11
  };
24
12
 
25
13
  export default propValidators;
@@ -0,0 +1,14 @@
1
+ import type { InpuTextC12, IFormFieldC12, IFormData } from '@/types/types.forms';
2
+
3
+ const formFieldC12 = <IFormFieldC12>{
4
+ label: '',
5
+ placeholder: '',
6
+ errorMessage: '',
7
+ useCustomError: false,
8
+ customErrors: {},
9
+ isValid: false,
10
+ isDirty: false,
11
+ type: 'string',
12
+ };
13
+
14
+ export { formFieldC12 };
@@ -40,5 +40,17 @@
40
40
  "minlength": 11,
41
41
  "maxlength": 14,
42
42
  "hint": "+441632123123"
43
+ },
44
+ "message": {
45
+ "pattern": "^[a-zA-Z0-9 ,.<>?@:;]{1,255}$",
46
+ "minlength": 1,
47
+ "maxlength": 255,
48
+ "hint": "+441632123123"
49
+ },
50
+ "positiveNumber0to100": {
51
+ "pattern": "^(100|[1-9]?[0-9])$",
52
+ "minlength": 1,
53
+ "maxlength": 3,
54
+ "hint": "Enter a number between 0 and 100"
43
55
  }
44
56
  }
@@ -0,0 +1,177 @@
1
+ <template>
2
+ <div class="input-error-message" :class="[elementClasses, { show: fieldHasError }, { detached: isDetached }, { hide: !fieldHasError }]">
3
+ <div class="inner" :class="[{ show: fieldHasError }]">
4
+ <div class="inner-content">
5
+ <div class="inner-icon">
6
+ <Icon name="radix-icons:circle-backslash" class="icon" />
7
+ </div>
8
+ <div class="message" :id="`${id}-error-message`">
9
+ <ul v-if="isArray" class="message-list">
10
+ <li v-for="(message, index) in errorMessage" :key="index" class="message-list-item">{{ message }}</li>
11
+ </ul>
12
+ <span v-else class="message-single">
13
+ {{ errorMessage }}
14
+ </span>
15
+ </div>
16
+ </div>
17
+ </div>
18
+ </div>
19
+ </template>
20
+
21
+ <script setup lang="ts">
22
+ const props = defineProps({
23
+ errorMessage: {
24
+ type: [Array, Object, String],
25
+ required: true,
26
+ },
27
+ fieldHasError: {
28
+ type: Boolean,
29
+ required: true,
30
+ },
31
+ id: {
32
+ type: String,
33
+ required: true,
34
+ },
35
+ styleClassPassthrough: {
36
+ type: Array as PropType<string[]>,
37
+ default: () => [],
38
+ },
39
+ compact: {
40
+ type: Boolean,
41
+ value: false,
42
+ },
43
+ isDetached: {
44
+ type: Boolean,
45
+ required: true,
46
+ },
47
+ });
48
+
49
+ const isArray = computed(() => {
50
+ return Array.isArray(props.errorMessage);
51
+ });
52
+
53
+ const { elementClasses, updateElementClasses } = useStyleClassPassthrough(props.styleClassPassthrough);
54
+ </script>
55
+
56
+ <style lang="css" scoped>
57
+ .input-error-message {
58
+ --_grid-template-rows: 0fr;
59
+ --_opacity-show: 1;
60
+ --_opacity-hide: 0;
61
+ --_opacity: var(--_opacity-hide);
62
+
63
+ --_display-show: block;
64
+ --_display-hide: none;
65
+ --_display: var(--_display-hide);
66
+ --_gutter: 12px;
67
+ --_gutter-block: 0;
68
+ --_gutter-inline: var(--_gutter);
69
+ --_transition-duration: 500ms;
70
+ --_transition-timing-function: linear;
71
+ --_message-translate-y-hide: calc(var(--_gutter) * -2);
72
+ --_message-translate-y-show: 0;
73
+ --_message-translate-y: var(--_message-translate-y-hide);
74
+ --_padding-message-show: var(--_gutter);
75
+ --_padding-message-hide: 0;
76
+ --_padding-message: var(--_padding-message-hide);
77
+
78
+ grid-row: 2;
79
+ grid-column: 1;
80
+ display: grid;
81
+ grid-template-rows: var(--_grid-template-rows);
82
+
83
+ color: var(--theme-error-text);
84
+ background-color: var(--theme-error-surface);
85
+ border-radius: 0 0 4px 4px;
86
+
87
+ transition-property: grid-template-rows;
88
+ transition-duration: var(--_transition-duration);
89
+ transition-timing-function: var(--_transition-timing-function);
90
+ transition-behavior: allow-discrete;
91
+
92
+ &.detached {
93
+ border-radius: var(--input-border-radius);
94
+ margin-block-start: 20px;
95
+ }
96
+
97
+ /* &.mbs-12 {
98
+ transition: margin-block-start var(--_transition-duration) var(--_transition-timing-function);
99
+ &.hide {
100
+ margin-block-start: 0;
101
+ }
102
+ &.show {
103
+ margin-block-start: 12px;
104
+ }
105
+ } */
106
+
107
+ &.show {
108
+ --_grid-template-rows: 1fr;
109
+ --_opacity: var(--_opacity-show);
110
+ --_display: var(--_display-show);
111
+ --_message-translate-y: var(--_message-translate-y-show);
112
+ --_gutter-block: var(--_gutter);
113
+ --_padding-message: var(--_padding-message-show);
114
+ }
115
+
116
+ .inner {
117
+ align-items: center;
118
+
119
+ overflow: hidden;
120
+ transition: opacity var(--_transition-duration) var(--_transition-timing-function), display var(--_transition-duration) var(--_transition-timing-function) allow-discrete;
121
+
122
+ &.show {
123
+ display: var(--_display-show);
124
+ opacity: var(--_opacity-show);
125
+ }
126
+
127
+ .inner-content {
128
+ display: flex;
129
+ align-items: center;
130
+
131
+ .inner-icon {
132
+ display: inline-block;
133
+ padding-left: 12px;
134
+
135
+ .icon {
136
+ color: white;
137
+ transform: translateY(3px);
138
+ }
139
+ }
140
+
141
+ .message {
142
+ display: inline-block;
143
+ flex-grow: 1;
144
+ font-family: var(--font-family);
145
+ font-size: 16px;
146
+ font-weight: 500;
147
+ padding-block: var(--_padding-message);
148
+ padding-inline: var(--_gutter-inline);
149
+ transform: translateY(var(--_message-translate-y));
150
+
151
+ transition-property: transform, padding;
152
+ transition-duration: var(--_transition-duration);
153
+ transition-timing-function: linear;
154
+
155
+ .message-single {
156
+ color: white;
157
+ }
158
+
159
+ .message-list {
160
+ list-style-type: none;
161
+ padding-inline-start: 0;
162
+ margin-block-start: 0;
163
+ margin-block-end: 0;
164
+
165
+ .message-list-item {
166
+ color: white;
167
+ }
168
+
169
+ .message-list-item + .message-list-item {
170
+ margin-block-start: 6px;
171
+ }
172
+ }
173
+ }
174
+ }
175
+ }
176
+ }
177
+ </style>