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,104 @@
1
+ :root {
2
+ --grayscale-surface-subtle: #f3f2f4;
3
+ --grayscale-surface-default: #847d85;
4
+ --grayscale-surface-disabled: #c6c3c7;
5
+ --grayscale-border-default: #9d979d;
6
+ --grayscale-border-disabled: #ada8ad;
7
+ --grayscale-border-dark: #494549;
8
+ --grayscale-text-title: #373538;
9
+ --grayscale-text-body: #494549;
10
+ --grayscale-text-subtitle: #787279;
11
+ --grayscale-text-caption: #847d85;
12
+ --grayscale-text-negative: #f3f2f3;
13
+ --grayscale-text-disabled: #c6c3c7;
14
+
15
+ --primary-surface-subtle: #f2e8f2;
16
+ --primary-surface-light: #d5b9d7;
17
+ --primary-surface-default: #781d7d;
18
+ --primary-surface-dark: #551559;
19
+ --primary-border-subtle: #d5b9d7;
20
+ --primary-border-default: #781d7d;
21
+ --primary-border-dark: #421045;
22
+ --primary-border-light: #c197c3;
23
+ --primary-text-icon: #781d7d;
24
+
25
+ --secondary-surface-subtle: #fef1eb;
26
+ --secondary-surface-light: #fbd5c1;
27
+ --secondary-surface-default: #f37737;
28
+ --secondary-surface-dark: #ad5427;
29
+ --secondary-border-subtle: #fbd5c1;
30
+ --secondary-border-default: #f37737;
31
+ --secondary-border-dark: #86411e;
32
+ --secondary-border-light: #f9c0a3;
33
+ --secondary-text-icon: #f37737;
34
+
35
+ --accent-primary-surface-light: #e6f8fc;
36
+ --accent-primary-surface-subtle: #b0eaf7;
37
+ --accent-primary-surface-default: #00bbe4;
38
+ --accent-primary-surface-dark: #0085a2;
39
+ --accent-primary-border-subtle: #b0eaf7;
40
+ --accent-primary-border-default: #00bbe4;
41
+ --accent-primary-border-dark: #00677d;
42
+ --accent-primary-border-light: #8ae0f3;
43
+ --accent-primary-text-icon: #00bbe4;
44
+
45
+ --accent-secondary-surface-subtle: #f4f9ec;
46
+ --accent-secondary-surface-light: #dcedc3;
47
+ --accent-secondary-surface-default: #8ec63f;
48
+ --accent-secondary-surface-dark: #658d2d;
49
+ --accent-secondary-border-subtle: #dcedc3;
50
+ --accent-secondary-border-default: #8ec63f;
51
+ --accent-secondary-border-dark: #4e6d23;
52
+ --accent-secondary-border-light: #cbe5a7;
53
+ --accent-secondary-text-icon: #8ec63f;
54
+
55
+ --accent-tertiary-surface-subtle: #feecf4;
56
+ --accent-tertiary-surface-light: #fac4dd;
57
+ --accent-tertiary-surface-default: #f04292;
58
+ --accent-tertiary-surface-dark: #aa2f68;
59
+ --accent-tertiary-border-subtle: #fac4dd;
60
+ --accent-tertiary-border-default: #f04292;
61
+ --accent-tertiary-border-dark: #842450;
62
+ --accent-tertiary-border-light: #f8a8cd;
63
+ --accent-tertiary-text-icon: #f04292;
64
+
65
+ --error-surface-subtle: #fceaed;
66
+ --error-surface-light: #f5bdc6;
67
+ --error-surface-default: #e02947;
68
+ --error-surface-dark: #9f1d32;
69
+ --error-border-subtle: #f5bdc6;
70
+ --error-border-default: #e02947;
71
+ --error-border-dark: #7b1727;
72
+ --error-border-light: #f19daa;
73
+ --error-text-icon: #e02947;
74
+
75
+ --warning-orange-surface-subtle: #fef5e6;
76
+ --warning-orange-surface-light: #fce0b0;
77
+ --warning-orange-surface-default: #f59b00;
78
+ --warning-orange-surface-dark: #ae6e00;
79
+ --warning-orange-border-subtle: #fce0b0;
80
+ --warning-orange-border-default: #f59b00;
81
+ --warning-orange-border-dark: #875500;
82
+ --warning-orange-border-light: #fad18a;
83
+ --warning-orange-text-icon: #f59b00;
84
+
85
+ --warning-yellow-surface-subtle: #fffbe6;
86
+ --warning-yellow-surface-light: #fff4b0;
87
+ --warning-yellow-surface-default: #ffda00;
88
+ --warning-yellow-surface-dark: #b59b00;
89
+ --warning-yellow-border-subtle: #fff4b0;
90
+ --warning-yellow-border-default: #ffda00;
91
+ --warning-yellow-border-dark: #8c7800;
92
+ --warning-yellow-border-light: #ffee8a;
93
+ --warning-yellow-text-icon: #ffda00;
94
+
95
+ --success-surface-subtle: #e6f8f7;
96
+ --success-surface-light: #b2eae5;
97
+ --success-surface-default: #07bbac;
98
+ --success-surface-dark: #05857a;
99
+ --success-border-subtle: #b2eae5;
100
+ --success-border-default: #07bbac;
101
+ --success-border-dark: #04675f;
102
+ --success-border-light: #8de0d9;
103
+ --success-text-icon: #07bbac;
104
+ }
@@ -1,4 +1,4 @@
1
- :where(html) {
1
+ :root {
2
2
  --font-size: 16px;
3
3
  --line-height: calc((var(--font-size) * 2) - 10px);
4
4
 
@@ -7,8 +7,12 @@
7
7
  --input-border-width-default: 2px;
8
8
  --input-border-width-thick: 3px;
9
9
 
10
- --font-family: futura-pt, Seravek, 'Gill Sans Nova', Ubuntu, Calibri,
11
- 'DejaVu Sans', source-sans-pro, sans-serif;
10
+ --input-outline-radius: 4px;
11
+ --input-outline-width-thin: 1px;
12
+ --input-outline-width-default: 2px;
13
+ --input-outline-width-thick: 3px;
14
+
15
+ --font-family: futura-pt, Seravek, 'Gill Sans Nova', Ubuntu, Calibri, 'DejaVu Sans', source-sans-pro, sans-serif;
12
16
 
13
17
  --theme-form-button-font-size-x-small: 14px;
14
18
  --theme-form-button-font-size-small: 14px;
@@ -54,19 +58,9 @@
54
58
  --theme-form-button-icon-size-medium: 20px;
55
59
  --theme-form-button-icon-size-large: 22px;
56
60
 
57
- --theme-form-button-icon-gap-x-small: var(
58
- --theme-form-button-padding-inline-x-small
59
- );
60
- --theme-form-button-icon-gap-small: var(
61
- --theme-form-button-padding-inline-small
62
- );
63
- --theme-form-button-icon-gap-normal: var(
64
- --theme-form-button-padding-inline-normal
65
- );
66
- --theme-form-button-icon-gap-medium: var(
67
- --theme-form-button-padding-inline-medium
68
- );
69
- --theme-form-button-icon-gap-large: var(
70
- --theme-form-button-padding-inline-large
71
- );
61
+ --theme-form-button-icon-gap-x-small: var(--theme-form-button-padding-inline-x-small);
62
+ --theme-form-button-icon-gap-small: var(--theme-form-button-padding-inline-small);
63
+ --theme-form-button-icon-gap-normal: var(--theme-form-button-padding-inline-normal);
64
+ --theme-form-button-icon-gap-medium: var(--theme-form-button-padding-inline-medium);
65
+ --theme-form-button-icon-gap-large: var(--theme-form-button-padding-inline-large);
72
66
  }
@@ -0,0 +1,2 @@
1
+ @import './_theme.css';
2
+ @import './_palette.css';
@@ -1,2 +1,4 @@
1
1
  @import './variables';
2
2
  @import './forms';
3
+ @import './brand';
4
+ @import './scaffolding';
@@ -0,0 +1,308 @@
1
+ /* Margin */
2
+ .m-0 {
3
+ margin: 0;
4
+ }
5
+ .mbs-0 {
6
+ margin-block-start: 0;
7
+ }
8
+ .mbe-0 {
9
+ margin-block-end: 0;
10
+ }
11
+ .mis-0 {
12
+ margin-inline-start: 0;
13
+ }
14
+ .mie-0 {
15
+ margin-inline-end: 0;
16
+ }
17
+ .mi-0 {
18
+ margin-inline: 0;
19
+ }
20
+ .mb-0 {
21
+ margin-block: 0;
22
+ }
23
+
24
+ .m-1 {
25
+ margin: 1px;
26
+ }
27
+ .mbs-1 {
28
+ margin-block-start: 1px;
29
+ }
30
+ .mbe-1 {
31
+ margin-block-end: 1px;
32
+ }
33
+ .mis-1 {
34
+ margin-inline-start: 1px;
35
+ }
36
+ .mie-1 {
37
+ margin-inline-end: 1px;
38
+ }
39
+ .mi-1 {
40
+ margin-inline: 1px;
41
+ }
42
+ .mb-1 {
43
+ margin-block: 1px;
44
+ }
45
+
46
+ .m-2 {
47
+ margin: 2px;
48
+ }
49
+ .mbs-2 {
50
+ margin-block-start: 2px;
51
+ }
52
+ .mbe-2 {
53
+ margin-block-end: 2px;
54
+ }
55
+ .mis-2 {
56
+ margin-inline-start: 2px;
57
+ }
58
+ .mie-2 {
59
+ margin-inline-end: 2px;
60
+ }
61
+ .mi-2 {
62
+ margin-inline: 2px;
63
+ }
64
+ .mb-2 {
65
+ margin-block: 2px;
66
+ }
67
+
68
+ .m-4 {
69
+ margin: 4px;
70
+ }
71
+ .mbs-4 {
72
+ margin-block-start: 4px;
73
+ }
74
+ .mbe-4 {
75
+ margin-block-end: 4px;
76
+ }
77
+ .mis-4 {
78
+ margin-inline-start: 4px;
79
+ }
80
+ .mie-4 {
81
+ margin-inline-end: 4px;
82
+ }
83
+ .mi-4 {
84
+ margin-inline: 4px;
85
+ }
86
+ .mb-4 {
87
+ margin-block: 4px;
88
+ }
89
+
90
+ .m-6 {
91
+ margin: 6px;
92
+ }
93
+ .mbs-6 {
94
+ margin-block-start: 6px;
95
+ }
96
+ .mbe-6 {
97
+ margin-block-end: 6px;
98
+ }
99
+ .mis-6 {
100
+ margin-inline-start: 6px;
101
+ }
102
+ .mie-6 {
103
+ margin-inline-end: 6px;
104
+ }
105
+ .mi-6 {
106
+ margin-inline: 6px;
107
+ }
108
+ .mb-6 {
109
+ margin-block: 6px;
110
+ }
111
+
112
+ .m-8 {
113
+ margin: 8px;
114
+ }
115
+ .mbs-8 {
116
+ margin-block-start: 8px;
117
+ }
118
+ .mbe-8 {
119
+ margin-block-end: 8px;
120
+ }
121
+ .mis-8 {
122
+ margin-inline-start: 8px;
123
+ }
124
+ .mie-8 {
125
+ margin-inline-end: 8px;
126
+ }
127
+ .mi-8 {
128
+ margin-inline: 8px;
129
+ }
130
+ .mb-8 {
131
+ margin-block: 8px;
132
+ }
133
+
134
+ .m-10 {
135
+ margin: 10px;
136
+ }
137
+ .mbs-10 {
138
+ margin-block-start: 10px;
139
+ }
140
+ .mbe-10 {
141
+ margin-block-end: 10px;
142
+ }
143
+ .mis-10 {
144
+ margin-inline-start: 10px;
145
+ }
146
+ .mie-10 {
147
+ margin-inline-end: 10px;
148
+ }
149
+ .mi-10 {
150
+ margin-inline: 10px;
151
+ }
152
+ .mb-10 {
153
+ margin-block: 10px;
154
+ }
155
+
156
+ .m-12 {
157
+ margin: 12px;
158
+ }
159
+ .mbs-12 {
160
+ margin-block-start: 12px;
161
+ }
162
+ .mbe-12 {
163
+ margin-block-end: 12px;
164
+ }
165
+ .mis-12 {
166
+ margin-inline-start: 12px;
167
+ }
168
+ .mie-12 {
169
+ margin-inline-end: 12px;
170
+ }
171
+ .mi-12 {
172
+ margin-inline: 12px;
173
+ }
174
+ .mb-12 {
175
+ margin-block: 12px;
176
+ }
177
+
178
+ .m-18 {
179
+ margin: 18px;
180
+ }
181
+ .mbs-18 {
182
+ margin-block-start: 18px;
183
+ }
184
+ .mbe-18 {
185
+ margin-block-end: 18px;
186
+ }
187
+ .mis-18 {
188
+ margin-inline-start: 18px;
189
+ }
190
+ .mie-18 {
191
+ margin-inline-end: 18px;
192
+ }
193
+ .mi-18 {
194
+ margin-inline: 18px;
195
+ }
196
+ .mb-18 {
197
+ margin-block: 18px;
198
+ }
199
+
200
+ .m-20 {
201
+ margin: 20px;
202
+ }
203
+ .mbs-20 {
204
+ margin-block-start: 20px;
205
+ }
206
+ .mbe-20 {
207
+ margin-block-end: 20px;
208
+ }
209
+ .mis-20 {
210
+ margin-inline-start: 20px;
211
+ }
212
+ .mie-20 {
213
+ margin-inline-end: 20px;
214
+ }
215
+ .mi-20 {
216
+ margin-inline: 20px;
217
+ }
218
+ .mb-20 {
219
+ margin-block: 20px;
220
+ }
221
+
222
+ .m-24 {
223
+ margin: 24px;
224
+ }
225
+ .mbs-24 {
226
+ margin-block-start: 24px;
227
+ }
228
+ .mbe-24 {
229
+ margin-block-end: 24px;
230
+ }
231
+ .mis-24 {
232
+ margin-inline-start: 24px;
233
+ }
234
+ .mie-24 {
235
+ margin-inline-end: 24px;
236
+ }
237
+ .mi-24 {
238
+ margin-inline: 24px;
239
+ }
240
+ .mb-24 {
241
+ margin-block: 24px;
242
+ }
243
+
244
+ .m-32 {
245
+ margin: 32px;
246
+ }
247
+ .mbs-32 {
248
+ margin-block-start: 32px;
249
+ }
250
+ .mbe-32 {
251
+ margin-block-end: 32px;
252
+ }
253
+ .mis-32 {
254
+ margin-inline-start: 32px;
255
+ }
256
+ .mie-32 {
257
+ margin-inline-end: 32px;
258
+ }
259
+ .mi-32 {
260
+ margin-inline: 32px;
261
+ }
262
+ .mb-32 {
263
+ margin-block: 32px;
264
+ }
265
+
266
+ .m-40 {
267
+ margin: 40px;
268
+ }
269
+ .mbs-40 {
270
+ margin-block-start: 40px;
271
+ }
272
+ .mbe-40 {
273
+ margin-block-end: 40px;
274
+ }
275
+ .mis-40 {
276
+ margin-inline-start: 40px;
277
+ }
278
+ .mie-40 {
279
+ margin-inline-end: 40px;
280
+ }
281
+ .mi-40 {
282
+ margin-inline: 40px;
283
+ }
284
+ .mb-40 {
285
+ margin-block: 40px;
286
+ }
287
+
288
+ .m-60 {
289
+ margin: 60px;
290
+ }
291
+ .mbs-60 {
292
+ margin-block-start: 60px;
293
+ }
294
+ .mbe-60 {
295
+ margin-block-end: 60px;
296
+ }
297
+ .mis-60 {
298
+ margin-inline-start: 60px;
299
+ }
300
+ .mie-60 {
301
+ margin-inline-end: 60px;
302
+ }
303
+ .mi-60 {
304
+ margin-inline: 60px;
305
+ }
306
+ .mb-60 {
307
+ margin-block: 60px;
308
+ }