srcdev-nuxt-forms 5.1.0 → 6.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 (162) hide show
  1. package/README.md +16 -0
  2. package/app/assets/styles/extends-layer/srcdev-forms/components/_form-fieldset.css +38 -0
  3. package/app/assets/styles/extends-layer/srcdev-forms/components/_input-button.css +66 -0
  4. package/app/assets/styles/extends-layer/srcdev-forms/components/_input-checkbox-radio-core.css +66 -0
  5. package/app/assets/styles/extends-layer/srcdev-forms/components/_input-checkbox-radio-options-button.css +76 -0
  6. package/app/assets/styles/extends-layer/srcdev-forms/components/_input-error.css +54 -0
  7. package/app/assets/styles/extends-layer/srcdev-forms/components/_input-label.css +21 -0
  8. package/app/assets/styles/extends-layer/srcdev-forms/components/_input-select.css +140 -0
  9. package/app/assets/styles/extends-layer/srcdev-forms/components/_input-text.css +190 -0
  10. package/app/assets/styles/extends-layer/srcdev-forms/components/_input-textarea.css +96 -0
  11. package/{assets → app/assets}/styles/extends-layer/srcdev-forms/components/index.css +3 -4
  12. package/app/assets/styles/extends-layer/srcdev-forms/setup/_generic.css +21 -0
  13. package/app/assets/styles/extends-layer/srcdev-forms/setup/index.css +4 -0
  14. package/{assets → app/assets}/styles/extends-layer/srcdev-forms/setup/themes/_error.css +12 -12
  15. package/{assets → app/assets}/styles/extends-layer/srcdev-forms/setup/themes/_ghost.css +12 -12
  16. package/{assets → app/assets}/styles/extends-layer/srcdev-forms/setup/themes/_input-action-underlined.css +7 -7
  17. package/{assets → app/assets}/styles/extends-layer/srcdev-forms/setup/themes/_input-action.css +7 -7
  18. package/{assets → app/assets}/styles/extends-layer/srcdev-forms/setup/themes/_primary.css +12 -12
  19. package/{assets → app/assets}/styles/extends-layer/srcdev-forms/setup/themes/_secondary.css +12 -12
  20. package/{assets → app/assets}/styles/extends-layer/srcdev-forms/setup/themes/_success.css +12 -12
  21. package/{assets → app/assets}/styles/extends-layer/srcdev-forms/setup/themes/_tertiary.css +12 -12
  22. package/{assets → app/assets}/styles/extends-layer/srcdev-forms/setup/themes/_warning.css +12 -12
  23. package/app/assets/styles/extends-layer/srcdev-forms/setup/variables/_a11y.css +7 -0
  24. package/app/assets/styles/extends-layer/srcdev-forms/setup/variables/index.css +1 -0
  25. package/app/assets/styles/extends-layer/srcdev-forms/setup/variants/_normal.css +48 -0
  26. package/{assets → app/assets}/styles/extends-layer/srcdev-forms/setup/variants/_underlined.css +12 -12
  27. package/app/assets/styles/extends-layer/srcdev-forms/setup/variants/index.css +3 -0
  28. package/app/assets/styles/extends-layer/srcdev-forms/setup/variants/sizes/_default.css +13 -0
  29. package/app/assets/styles/extends-layer/srcdev-forms/setup/variants/sizes/_large.css +12 -0
  30. package/app/assets/styles/extends-layer/srcdev-forms/setup/variants/sizes/_medium.css +12 -0
  31. package/app/assets/styles/extends-layer/srcdev-forms/setup/variants/sizes/_small.css +12 -0
  32. package/app/assets/styles/extends-layer/srcdev-forms/setup/variants/sizes/_x-small.css +11 -0
  33. package/{assets/styles/extends-layer/srcdev-forms/setup → app/assets/styles/extends-layer/srcdev-forms/setup/variants}/sizes/index.css +2 -0
  34. package/app/assets/styles/setup/_head.css +36 -0
  35. package/app/assets/styles/setup/index.css +5 -0
  36. package/{assets/styles/setup/variables → app/assets/styles/setup/theming}/colors/_blue.css +1 -1
  37. package/{assets/styles/setup/variables → app/assets/styles/setup/theming}/index.css +1 -0
  38. package/app/assets/styles/setup/theming/themes/_default.css +66 -0
  39. package/app/assets/styles/setup/theming/themes/_error.css +66 -0
  40. package/app/assets/styles/setup/theming/themes/_ghost.css +31 -0
  41. package/app/assets/styles/setup/theming/themes/_info.css +31 -0
  42. package/app/assets/styles/setup/theming/themes/_primary.css +41 -0
  43. package/app/assets/styles/setup/theming/themes/_secondary.css +66 -0
  44. package/app/assets/styles/setup/theming/themes/_success.css +66 -0
  45. package/app/assets/styles/setup/theming/themes/_tertiary.css +31 -0
  46. package/app/assets/styles/setup/theming/themes/_warning.css +68 -0
  47. package/app/assets/styles/setup/theming/themes/index.css +9 -0
  48. package/app/assets/styles/setup/typography/index.css +2 -0
  49. package/app/assets/styles/setup/typography/utility-classes/_generic-font-classes.css +217 -0
  50. package/app/assets/styles/setup/typography/utility-classes/_generic-font-variation-settings.css +29 -0
  51. package/app/assets/styles/setup/typography/utility-classes/_generic-font-weights.css +39 -0
  52. package/app/assets/styles/setup/typography/vars/_colors.css +14 -0
  53. package/app/assets/styles/setup/typography/vars/_reponsive-font-sizes.css +12 -0
  54. package/{assets → app/assets}/styles/setup/typography/vars/index.css +1 -0
  55. package/app/assets/styles/setup/utility-classes/_fluid-spacing.css +13 -0
  56. package/app/assets/styles/setup/utility-classes/animations/_auto-rotate.css +13 -0
  57. package/app/assets/styles/setup/utility-classes/animations/_entry-exit-blur.css +16 -0
  58. package/app/assets/styles/setup/utility-classes/animations/_entry-slide-in.css +15 -0
  59. package/app/assets/styles/setup/utility-classes/animations/_entry-zoom-reveal.css +15 -0
  60. package/app/assets/styles/setup/utility-classes/animations/index.css +4 -0
  61. package/app/assets/styles/setup/utility-classes/index.css +2 -0
  62. package/app/assets/styles/setup/variables/index.css +1 -0
  63. package/{components → app/components}/forms/form-errors/InputError.vue +32 -49
  64. package/{components → app/components}/forms/form-fieldset/FormFieldset.vue +9 -9
  65. package/{components → app/components}/forms/input-button/InputButtonCore.vue +20 -18
  66. package/{components → app/components}/forms/input-button/variants/InputButtonConfirm.vue +1 -1
  67. package/app/components/forms/input-checkbox-radio/InputCheckboxRadioButton.vue +204 -0
  68. package/{components → app/components}/forms/input-checkbox-radio/InputCheckboxRadioCore.vue +29 -17
  69. package/{components → app/components}/forms/input-checkbox-radio/InputCheckboxRadioWithLabel.vue +1 -0
  70. package/{components → app/components}/forms/input-label/InputLabel.vue +26 -7
  71. package/{components → app/components}/forms/input-number/InputNumberCore.vue +7 -6
  72. package/{components → app/components}/forms/input-number/variants/InputNumberDefault.vue +5 -6
  73. package/{components → app/components}/forms/input-range/InputRangeCore.vue +1 -1
  74. package/{components → app/components}/forms/input-range/variants/InputRangeDefault.vue +5 -2
  75. package/{components → app/components}/forms/input-range-fancy/InputRangeFancyCore.vue +1 -1
  76. package/{components → app/components}/forms/input-range-fancy/InputRangeFancyWithLabel.vue +1 -1
  77. package/{components → app/components}/forms/input-select/InputSelectCore.vue +23 -21
  78. package/{components → app/components}/forms/input-select/variants/InputSelectWithLabel.vue +1 -1
  79. package/app/components/forms/input-text/InputTextCore.vue +341 -0
  80. package/{components → app/components}/forms/input-text/variants/InputPasswordWithLabel.vue +1 -1
  81. package/{components → app/components}/forms/input-text/variants/InputTextAsNumberWithLabel.vue +4 -2
  82. package/app/components/forms/input-text/variants/InputTextWithLabel.vue +158 -0
  83. package/{components → app/components}/forms/input-textarea/InputTextareaCore.vue +10 -131
  84. package/app/components/forms/input-textarea/variants/InputTextareaWithLabel.vue +125 -0
  85. package/{components → app/components}/forms/toggle-switch/ToggleSwitchCore.vue +1 -1
  86. package/{components → app/components}/forms/toggle-switch/ToggleSwitchCoreOld.vue +1 -1
  87. package/{components → app/components}/forms/toggle-switch/variants/ToggleSwitchWithLabel.vue +5 -2
  88. package/{components → app/components}/forms/toggle-switch/variants/ToggleSwitchWithLabelInline.vue +5 -2
  89. package/{components → app/components}/utils/colour-scheme-select/ColourSchemeSelect.vue +1 -1
  90. package/{components → app/components}/utils/colour-scheme-select/ColourSchemeSelectOld.vue +1 -1
  91. package/nuxt.config.ts +5 -2
  92. package/package.json +9 -11
  93. package/assets/styles/extends-layer/srcdev-forms/components/_form-core.css +0 -8
  94. package/assets/styles/extends-layer/srcdev-forms/components/_form-fieldset.css +0 -16
  95. package/assets/styles/extends-layer/srcdev-forms/components/_input-checkbox-radio-options-button.css +0 -59
  96. package/assets/styles/extends-layer/srcdev-forms/components/_input-checkbox.css +0 -72
  97. package/assets/styles/extends-layer/srcdev-forms/components/_input-error.css +0 -55
  98. package/assets/styles/extends-layer/srcdev-forms/components/_input-label.css +0 -18
  99. package/assets/styles/extends-layer/srcdev-forms/components/_input-radio.css +0 -68
  100. package/assets/styles/extends-layer/srcdev-forms/components/_input-select.css +0 -18
  101. package/assets/styles/extends-layer/srcdev-forms/components/_input-text-as-number.css +0 -22
  102. package/assets/styles/extends-layer/srcdev-forms/components/_input-textarea.css +0 -5
  103. package/assets/styles/extends-layer/srcdev-forms/setup/_generic.css +0 -7
  104. package/assets/styles/extends-layer/srcdev-forms/setup/index.css +0 -4
  105. package/assets/styles/extends-layer/srcdev-forms/setup/sizes/_default.css +0 -12
  106. package/assets/styles/extends-layer/srcdev-forms/setup/sizes/_large.css +0 -12
  107. package/assets/styles/extends-layer/srcdev-forms/setup/sizes/_medium.css +0 -12
  108. package/assets/styles/extends-layer/srcdev-forms/setup/sizes/_small.css +0 -12
  109. package/assets/styles/extends-layer/srcdev-forms/setup/sizes/_x-small.css +0 -11
  110. package/assets/styles/extends-layer/srcdev-forms/setup/variants/_normal.css +0 -48
  111. package/assets/styles/extends-layer/srcdev-forms/setup/variants/index.css +0 -2
  112. package/assets/styles/setup/_head.css +0 -5
  113. package/assets/styles/setup/index.css +0 -5
  114. package/assets/styles/setup/typography/index.css +0 -2
  115. package/assets/styles/setup/typography/utility-classes/_generic-font-classes.css +0 -192
  116. package/assets/styles/setup/typography/utility-classes/_generic-font-variation-settings.css +0 -29
  117. package/assets/styles/setup/typography/utility-classes/_generic-font-weights.css +0 -41
  118. package/assets/styles/setup/typography/vars/_reponsive-font-sizes.css +0 -10
  119. package/assets/styles/setup/utility-classes/_margin-helpers.css +0 -334
  120. package/assets/styles/setup/utility-classes/_padding-helpers.css +0 -308
  121. package/assets/styles/setup/utility-classes/_page.css +0 -49
  122. package/assets/styles/setup/utility-classes/index.css +0 -3
  123. package/components/forms/input-checkbox-radio/InputCheckboxRadioButton.vue +0 -218
  124. package/components/forms/input-text/InputTextCore.vue +0 -390
  125. package/components/forms/input-text/variants/InputTextWithLabel.vue +0 -300
  126. package/components/forms/input-textarea/variants/InputTextareaWithLabel.vue +0 -269
  127. package/{assets → app/assets}/styles/extends-layer/srcdev-forms/index.css +0 -0
  128. package/{assets → app/assets}/styles/extends-layer/srcdev-forms/setup/themes/index.css +0 -0
  129. package/{assets → app/assets}/styles/main.css +0 -0
  130. package/{assets → app/assets}/styles/setup/a11y/_utils.css +0 -0
  131. package/{assets → app/assets}/styles/setup/a11y/_variables.css +0 -0
  132. package/{assets → app/assets}/styles/setup/a11y/index.css +0 -0
  133. package/{assets/styles/setup/variables → app/assets/styles/setup/theming}/colors/_gray.css +0 -0
  134. package/{assets/styles/setup/variables → app/assets/styles/setup/theming}/colors/_green.css +0 -0
  135. package/{assets/styles/setup/variables → app/assets/styles/setup/theming}/colors/_orange.css +0 -0
  136. package/{assets/styles/setup/variables → app/assets/styles/setup/theming}/colors/_red.css +0 -0
  137. package/{assets/styles/setup/variables → app/assets/styles/setup/theming}/colors/_yellow.css +0 -0
  138. package/{assets/styles/setup/variables → app/assets/styles/setup/theming}/colors/index.css +3 -3
  139. package/{assets → app/assets}/styles/setup/typography/utility-classes/index.css +1 -1
  140. /package/{components → app/components}/forms/c12/prop-validators/index.ts +0 -0
  141. /package/{components → app/components}/forms/c12/utils.ts +0 -0
  142. /package/{components → app/components}/forms/form-errors/tests/InputError.spec.ts +0 -0
  143. /package/{components → app/components}/forms/input-button/variants/InputButtonSubmit.vue +0 -0
  144. /package/{components → app/components}/forms/input-checkbox/MultipleCheckboxes.vue +0 -0
  145. /package/{components → app/components}/forms/input-checkbox/SingleCheckbox.vue +0 -0
  146. /package/{components → app/components}/forms/input-checkbox/tests/MultipleCheckboxes.spec.ts +0 -0
  147. /package/{components → app/components}/forms/input-checkbox/tests/data/tags.json +0 -0
  148. /package/{components → app/components}/forms/input-radio/MultipleRadiobuttons.vue +0 -0
  149. /package/{components → app/components}/forms/input-radio/tests/MultipleRadioButtons.spec.ts +0 -0
  150. /package/{components → app/components}/forms/input-radio/tests/data/tags.json +0 -0
  151. /package/{components → app/components}/forms/ui/FormField.vue +0 -0
  152. /package/{components → app/components}/forms/ui/FormWrapper.vue +0 -0
  153. /package/{components → app/components}/utils/dark-mode-switcher/DarkModeSwitcher.vue +0 -0
  154. /package/{composables → app/composables}/useApiRequest.ts +0 -0
  155. /package/{composables → app/composables}/useColourScheme.ts +0 -0
  156. /package/{composables → app/composables}/useErrorMessages.ts +0 -0
  157. /package/{composables → app/composables}/useFormControl.ts +0 -0
  158. /package/{composables → app/composables}/useSleep.ts +0 -0
  159. /package/{composables → app/composables}/useStyleClassPassthrough.ts +0 -0
  160. /package/{composables → app/composables}/useZodValidation.ts +0 -0
  161. /package/{types → app/types}/types.forms.ts +0 -0
  162. /package/{types → app/types}/types.zodFormControl.ts +0 -0
@@ -1,308 +0,0 @@
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: 0.1rem;
26
- }
27
- .pbs-1 {
28
- padding-block-start: 0.1rem;
29
- }
30
- .pbe-1 {
31
- padding-block-end: 0.1rem;
32
- }
33
- .pis-1 {
34
- padding-inline-start: 0.1rem;
35
- }
36
- .pie-1 {
37
- padding-inline-end: 0.1rem;
38
- }
39
- .pi-1 {
40
- padding-inline: 0.1rem;
41
- }
42
- .pb-1 {
43
- padding-block: 0.1rem;
44
- }
45
-
46
- .p-2 {
47
- padding: 0.2rem;
48
- }
49
- .pbs-2 {
50
- padding-block-start: 0.2rem;
51
- }
52
- .pbe-2 {
53
- padding-block-end: 0.2rem;
54
- }
55
- .pis-2 {
56
- padding-inline-start: 0.2rem;
57
- }
58
- .pie-2 {
59
- padding-inline-end: 0.2rem;
60
- }
61
- .pi-2 {
62
- padding-inline: 0.2rem;
63
- }
64
- .pb-2 {
65
- padding-block: 0.2rem;
66
- }
67
-
68
- .p-4 {
69
- padding: 0.4rem;
70
- }
71
- .pbs-4 {
72
- padding-block-start: 0.4rem;
73
- }
74
- .pbe-4 {
75
- padding-block-end: 0.4rem;
76
- }
77
- .pis-4 {
78
- padding-inline-start: 0.4rem;
79
- }
80
- .pie-4 {
81
- padding-inline-end: 0.4rem;
82
- }
83
- .pi-4 {
84
- padding-inline: 0.4rem;
85
- }
86
- .pb-4 {
87
- padding-block: 0.4rem;
88
- }
89
-
90
- .p-6 {
91
- padding: 0.6rem;
92
- }
93
- .pbs-6 {
94
- padding-block-start: 0.6rem;
95
- }
96
- .pbe-6 {
97
- padding-block-end: 0.6rem;
98
- }
99
- .pis-6 {
100
- padding-inline-start: 0.6rem;
101
- }
102
- .pie-6 {
103
- padding-inline-end: 0.6rem;
104
- }
105
- .pi-6 {
106
- padding-inline: 0.6rem;
107
- }
108
- .pb-6 {
109
- padding-block: 0.6rem;
110
- }
111
-
112
- .p-8 {
113
- padding: 0.8rem;
114
- }
115
- .pbs-8 {
116
- padding-block-start: 0.8rem;
117
- }
118
- .pbe-8 {
119
- padding-block-end: 0.8rem;
120
- }
121
- .pis-8 {
122
- padding-inline-start: 0.8rem;
123
- }
124
- .pie-8 {
125
- padding-inline-end: 0.8rem;
126
- }
127
- .pi-8 {
128
- padding-inline: 0.8rem;
129
- }
130
- .pb-8 {
131
- padding-block: 0.8rem;
132
- }
133
-
134
- .p-10 {
135
- padding: 1rem;
136
- }
137
- .pbs-10 {
138
- padding-block-start: 1rem;
139
- }
140
- .pbe-10 {
141
- padding-block-end: 1rem;
142
- }
143
- .pis-10 {
144
- padding-inline-start: 1rem;
145
- }
146
- .pie-10 {
147
- padding-inline-end: 1rem;
148
- }
149
- .pi-10 {
150
- padding-inline: 1rem;
151
- }
152
- .pb-10 {
153
- padding-block: 1rem;
154
- }
155
-
156
- .p-12 {
157
- padding: 1.2rem;
158
- }
159
- .pbs-12 {
160
- padding-block-start: 1.2rem;
161
- }
162
- .pbe-12 {
163
- padding-block-end: 1.2rem;
164
- }
165
- .pis-12 {
166
- padding-inline-start: 1.2rem;
167
- }
168
- .pie-12 {
169
- padding-inline-end: 1.2rem;
170
- }
171
- .pi-12 {
172
- padding-inline: 1.2rem;
173
- }
174
- .pb-12 {
175
- padding-block: 1.2rem;
176
- }
177
-
178
- .p-18 {
179
- padding: 1.8rem;
180
- }
181
- .pbs-18 {
182
- padding-block-start: 1.8rem;
183
- }
184
- .pbe-18 {
185
- padding-block-end: 1.8rem;
186
- }
187
- .pis-18 {
188
- padding-inline-start: 1.8rem;
189
- }
190
- .pie-18 {
191
- padding-inline-end: 1.8rem;
192
- }
193
- .pi-18 {
194
- padding-inline: 1.8rem;
195
- }
196
- .pb-18 {
197
- padding-block: 1.8rem;
198
- }
199
-
200
- .p-20 {
201
- padding: 2rem;
202
- }
203
- .pbs-20 {
204
- padding-block-start: 2rem;
205
- }
206
- .pbe-20 {
207
- padding-block-end: 2rem;
208
- }
209
- .pis-20 {
210
- padding-inline-start: 2rem;
211
- }
212
- .pie-20 {
213
- padding-inline-end: 2rem;
214
- }
215
- .pi-20 {
216
- padding-inline: 2rem;
217
- }
218
- .pb-20 {
219
- padding-block: 2rem;
220
- }
221
-
222
- .p-24 {
223
- padding: 2.4rem;
224
- }
225
- .pbs-24 {
226
- padding-block-start: 2.4rem;
227
- }
228
- .pbe-24 {
229
- padding-block-end: 2.4rem;
230
- }
231
- .pis-24 {
232
- padding-inline-start: 2.4rem;
233
- }
234
- .pie-24 {
235
- padding-inline-end: 2.4rem;
236
- }
237
- .pi-24 {
238
- padding-inline: 2.4rem;
239
- }
240
- .pb-24 {
241
- padding-block: 2.4rem;
242
- }
243
-
244
- .p-32 {
245
- padding: 3.2rem;
246
- }
247
- .pbs-32 {
248
- padding-block-start: 3.2rem;
249
- }
250
- .pbe-32 {
251
- padding-block-end: 3.2rem;
252
- }
253
- .pis-32 {
254
- padding-inline-start: 3.2rem;
255
- }
256
- .pie-32 {
257
- padding-inline-end: 3.2rem;
258
- }
259
- .pi-32 {
260
- padding-inline: 3.2rem;
261
- }
262
- .pb-32 {
263
- padding-block: 3.2rem;
264
- }
265
-
266
- .p-40 {
267
- padding: 4rem;
268
- }
269
- .pbs-40 {
270
- padding-block-start: 4rem;
271
- }
272
- .pbe-40 {
273
- padding-block-end: 4rem;
274
- }
275
- .pis-40 {
276
- padding-inline-start: 4rem;
277
- }
278
- .pie-40 {
279
- padding-inline-end: 4rem;
280
- }
281
- .pi-40 {
282
- padding-inline: 4rem;
283
- }
284
- .pb-40 {
285
- padding-block: 4rem;
286
- }
287
-
288
- .p-60 {
289
- padding: 6rem;
290
- }
291
- .pbs-60 {
292
- padding-block-start: 6rem;
293
- }
294
- .pbe-60 {
295
- padding-block-end: 6rem;
296
- }
297
- .pis-60 {
298
- padding-inline-start: 6rem;
299
- }
300
- .pie-60 {
301
- padding-inline-end: 6rem;
302
- }
303
- .pi-60 {
304
- padding-inline: 6rem;
305
- }
306
- .pb-60 {
307
- padding-block: 6rem;
308
- }
@@ -1,49 +0,0 @@
1
- html {
2
- color-scheme: light dark;
3
-
4
- &[data-color-scheme='light'] {
5
- color-scheme: light;
6
- }
7
-
8
- &[data-color-scheme='dark'] {
9
- color-scheme: dark;
10
- }
11
-
12
- background-color: var(--page-bg);
13
-
14
- font-size: 62.5%;
15
-
16
- transition: background-color 0.4s ease, color 0.4s ease;
17
- scrollbar-gutter: stable;
18
- }
19
- body,
20
- p,
21
- pre,
22
- code,
23
- div,
24
- fieldset,
25
- legend,
26
- li,
27
- a {
28
- color: light-dark(var(--gray-12), var(--gray-3));
29
- font-family: var(--font-family);
30
- font-size: var(--step-1);
31
- }
32
-
33
- body {
34
- &.page-theme-grey {
35
- background-color: lightseagreen;
36
- }
37
- }
38
-
39
- form {
40
- input {
41
- font: inherit;
42
- /* accent-color: var(--accent-color, red); */
43
- }
44
-
45
- label {
46
- text-box-trim: both;
47
- text-box-edge: cap alphabetic;
48
- }
49
- }
@@ -1,3 +0,0 @@
1
- @import './_page.css';
2
- @import './_margin-helpers.css';
3
- @import './_padding-helpers.css';
@@ -1,218 +0,0 @@
1
- <template>
2
- <div class="input-checkbox-radio-options-button" :data-form-theme="formTheme" :data-size="size" :class="[size, elementClasses, optionsLayout, { error: fieldHasError }]">
3
- <InputCheckboxRadioCore :isButton="true" :type :id :name :required v-model="modelValue" :size :trueValue :falseValue :fieldHasError :theme :ariaDescribedby :displayAsDisc>
4
- <template #checkedIcon>
5
- <slot name="checkedIcon"></slot>
6
- </template>
7
- </InputCheckboxRadioCore>
8
- <label v-if="hasLabelContent" class="input-checkbox-radio-options-button-label" :for="id">
9
- <slot name="labelContent"></slot>
10
- </label>
11
- <label v-else class="input-checkbox-radio-options-button-label" :for="id">{{ label }}</label>
12
- <div class="item-icon">
13
- <slot name="itemIcon">
14
- <Icon name="material-symbols:add-2" class="icon" />
15
- </slot>
16
- </div>
17
- </div>
18
- </template>
19
-
20
- <script setup lang="ts">
21
- import propValidators from '../c12/prop-validators';
22
-
23
- const props = defineProps({
24
- type: {
25
- type: String as PropType<'checkbox' | 'radio'>,
26
- required: true,
27
- },
28
- id: {
29
- type: String,
30
- required: true,
31
- },
32
- name: {
33
- type: String,
34
- required: true,
35
- },
36
- label: {
37
- type: String,
38
- required: true,
39
- },
40
- required: {
41
- type: Boolean,
42
- default: false,
43
- },
44
- fieldHasError: {
45
- type: Boolean,
46
- default: false,
47
- },
48
- trueValue: {
49
- type: [String, Number, Boolean],
50
- default: true,
51
- },
52
- falseValue: {
53
- type: [String, Number, Boolean],
54
- default: false,
55
- },
56
- size: {
57
- type: String as PropType<string>,
58
- default: 'medium',
59
- validator(value: string) {
60
- return propValidators.size.includes(value);
61
- },
62
- },
63
- optionsLayout: {
64
- type: String as PropType<string>,
65
- default: 'equal-widths',
66
- validator(value: string) {
67
- return propValidators.optionsLayout.includes(value);
68
- },
69
- },
70
- styleClassPassthrough: {
71
- type: Array as PropType<string[]>,
72
- default: () => [],
73
- },
74
- theme: {
75
- type: String as PropType<string>,
76
- default: 'primary',
77
- validator(value: string) {
78
- return propValidators.theme.includes(value);
79
- },
80
- },
81
- direction: {
82
- type: String as PropType<'row' | 'row-reverse'>,
83
- default: 'row',
84
- validator(value: string) {
85
- return ['row', 'row-reverse'].includes(value);
86
- },
87
- },
88
- ariaDescribedby: {
89
- type: String,
90
- default: null,
91
- },
92
- displayAsDisc: {
93
- type: Boolean,
94
- default: false,
95
- },
96
- });
97
-
98
- const slots = useSlots();
99
- const hasLabelContent = computed(() => slots.labelContent !== undefined);
100
- const { elementClasses, updateElementClasses } = useStyleClassPassthrough(props.styleClassPassthrough);
101
-
102
- const modelValue = defineModel();
103
-
104
- const formTheme = computed(() => {
105
- return props.fieldHasError ? 'error' : props.theme;
106
- });
107
-
108
- const flexDirection = ref(props.direction);
109
- </script>
110
-
111
- <style lang="css">
112
- .input-checkbox-radio-options-button {
113
- /* --_checkbox-size: initial; */
114
-
115
- --_outline-color: var(--theme-checkbox-radio-button-outline-default);
116
- --_label-color: var(--theme-checkbox-radio-button-label-default);
117
- --_box-shadow: var(--theme-checkbox-radio-button-shadow);
118
- --_white-space: wrap;
119
- /* --_border-radius: 2.2rem; */
120
- /* --_padding-block: 0.4rem;
121
- --_padding-inline: 1.2rem; */
122
-
123
- display: flex;
124
- flex-direction: v-bind(flexDirection);
125
- align-items: center;
126
- justify-content: space-between;
127
- gap: var(--input-checkbox-radio-options-button-gap);
128
-
129
- background-color: var(--input-checkbox-radio-options-button-background-color);
130
- border-radius: var(--input-checkbox-radio-options-button-border-radius);
131
- border: var(--input-checkbox-radio-options-button-border);
132
- outline: var(--input-checkbox-radio-options-button-outline);
133
-
134
- box-shadow: 0.1rem 0.1rem 0.8rem 0.1rem var(--_box-shadow);
135
- padding-block: var(--input-checkbox-radio-options-padding-block);
136
- padding-inline: var(--input-checkbox-radio-options-padding-inline);
137
-
138
- &:hover {
139
- /* background-color: var(--input-checkbox-radio-options-button-background-color-active); */
140
- background-color: var(--form-core-background-color-hover);
141
- border: var(--input-checkbox-radio-options-button-border-active);
142
- outline: var(--input-checkbox-radio-options-button-outline-active);
143
- }
144
-
145
- &.inline {
146
- --_white-space: nowrap;
147
- }
148
-
149
- /* &:focus-within {
150
- --_box-shadow: var(--theme-checkbox-radio-button-shadow-focus);
151
- --_outline-color: var(--theme-checkbox-radio-button-outline-focus);
152
- } */
153
-
154
- &:has(.input-checkbox-radio-core:focus-visible) {
155
- --_box-shadow: var(--theme-checkbox-radio-button-shadow-focus);
156
- --_outline-color: var(--theme-checkbox-radio-button-outline-focus);
157
- }
158
-
159
- /* Sizes */
160
- &.x-small {
161
- /* --_checkbox-size: 2rem; */
162
- /* --_border-radius: 2rem; */
163
- /* --_padding-block: 0.2rem; */
164
- /* --_padding-inline: 1.6rem; */
165
- }
166
- &.small {
167
- /* --_checkbox-size: 2.2rem; */
168
- /* --_border-radius: 1.8rem; */
169
- /* --_padding-block: 0rem; */
170
- /* --_padding-inline: 1.2rem; */
171
- }
172
- &.normal {
173
- /* --_checkbox-size: 3.4rem; */
174
- /* --_border-radius: 2rem; */
175
- /* --_padding-block: 0.4rem; */
176
- /* --_padding-inline: 1.2rem; */
177
- }
178
- &.medium {
179
- /* --_checkbox-size: 3.4rem; */
180
- /* --_border-radius: 2rem; */
181
- /* --_padding-block: 0.4rem; */
182
- /* --_padding-inline: 1.2rem; */
183
- }
184
- &.large {
185
- /* --_checkbox-size: 3.4rem; */
186
- /* --_border-radius: 2rem; */
187
- /* --_padding-block: 0.4rem; */
188
- /* --_padding-inline: 1.2rem; */
189
- }
190
- }
191
-
192
- .input-checkbox-radio-options-button-label {
193
- display: flex;
194
- flex-grow: 1;
195
- color: var(--input-checkbox-radio-options-button-label-text-color);
196
- font-size: var(--input-checkbox-radio-options-button-label-font-size);
197
- width: 100%;
198
- min-height: var(--input-checkbox-radio-options-button-label-min-height);
199
- align-items: center;
200
- justify-content: center;
201
- margin-block: var(--input-checkbox-radio-options-button-label-margin-block);
202
- padding-inline: var(--input-checkbox-radio-options-button-label-padding-inline);
203
- white-space: var(--_white-space);
204
-
205
- &:hover {
206
- cursor: pointer;
207
- }
208
- }
209
-
210
- .item-icon {
211
- display: flex;
212
- align-items: center;
213
- justify-content: center;
214
- color: var(--input-checkbox-radio-options-button-label-icon-color);
215
- height: var(--form-input-checkbox-radio-button-size);
216
- width: var(--form-input-checkbox-radio-button-size);
217
- }
218
- </style>