srcdev-nuxt-forms 5.1.1 → 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 (157) 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 +10 -10
  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/{assets/styles/extends-layer/srcdev-forms/setup → app/assets/styles/extends-layer/srcdev-forms/setup/variants}/sizes/index.css +2 -0
  30. package/app/assets/styles/setup/_head.css +36 -0
  31. package/app/assets/styles/setup/index.css +5 -0
  32. package/{assets/styles/setup/variables → app/assets/styles/setup/theming}/colors/_blue.css +1 -1
  33. package/{assets/styles/setup/variables → app/assets/styles/setup/theming}/index.css +1 -0
  34. package/app/assets/styles/setup/theming/themes/_default.css +66 -0
  35. package/app/assets/styles/setup/theming/themes/_error.css +66 -0
  36. package/app/assets/styles/setup/theming/themes/_ghost.css +31 -0
  37. package/app/assets/styles/setup/theming/themes/_info.css +31 -0
  38. package/app/assets/styles/setup/theming/themes/_primary.css +41 -0
  39. package/app/assets/styles/setup/theming/themes/_secondary.css +66 -0
  40. package/app/assets/styles/setup/theming/themes/_success.css +66 -0
  41. package/app/assets/styles/setup/theming/themes/_tertiary.css +31 -0
  42. package/app/assets/styles/setup/theming/themes/_warning.css +68 -0
  43. package/app/assets/styles/setup/theming/themes/index.css +9 -0
  44. package/app/assets/styles/setup/typography/index.css +2 -0
  45. package/app/assets/styles/setup/typography/utility-classes/_generic-font-classes.css +217 -0
  46. package/app/assets/styles/setup/typography/utility-classes/_generic-font-variation-settings.css +29 -0
  47. package/app/assets/styles/setup/typography/utility-classes/_generic-font-weights.css +39 -0
  48. package/app/assets/styles/setup/typography/vars/_colors.css +14 -0
  49. package/{assets → app/assets}/styles/setup/typography/vars/_reponsive-font-sizes.css +2 -0
  50. package/{assets → app/assets}/styles/setup/typography/vars/index.css +1 -0
  51. package/app/assets/styles/setup/utility-classes/_fluid-spacing.css +13 -0
  52. package/app/assets/styles/setup/utility-classes/animations/_auto-rotate.css +13 -0
  53. package/app/assets/styles/setup/utility-classes/animations/_entry-exit-blur.css +16 -0
  54. package/app/assets/styles/setup/utility-classes/animations/_entry-slide-in.css +15 -0
  55. package/app/assets/styles/setup/utility-classes/animations/_entry-zoom-reveal.css +15 -0
  56. package/app/assets/styles/setup/utility-classes/animations/index.css +4 -0
  57. package/app/assets/styles/setup/utility-classes/index.css +2 -0
  58. package/app/assets/styles/setup/variables/index.css +1 -0
  59. package/{components → app/components}/forms/form-errors/InputError.vue +32 -49
  60. package/{components → app/components}/forms/form-fieldset/FormFieldset.vue +9 -9
  61. package/{components → app/components}/forms/input-button/InputButtonCore.vue +20 -18
  62. package/{components → app/components}/forms/input-button/variants/InputButtonConfirm.vue +1 -1
  63. package/app/components/forms/input-checkbox-radio/InputCheckboxRadioButton.vue +204 -0
  64. package/{components → app/components}/forms/input-checkbox-radio/InputCheckboxRadioCore.vue +29 -17
  65. package/{components → app/components}/forms/input-checkbox-radio/InputCheckboxRadioWithLabel.vue +1 -0
  66. package/{components → app/components}/forms/input-label/InputLabel.vue +26 -7
  67. package/{components → app/components}/forms/input-number/InputNumberCore.vue +7 -6
  68. package/{components → app/components}/forms/input-number/variants/InputNumberDefault.vue +5 -6
  69. package/{components → app/components}/forms/input-range/InputRangeCore.vue +1 -1
  70. package/{components → app/components}/forms/input-range/variants/InputRangeDefault.vue +5 -2
  71. package/{components → app/components}/forms/input-range-fancy/InputRangeFancyCore.vue +1 -1
  72. package/{components → app/components}/forms/input-range-fancy/InputRangeFancyWithLabel.vue +1 -1
  73. package/{components → app/components}/forms/input-select/InputSelectCore.vue +23 -21
  74. package/{components → app/components}/forms/input-select/variants/InputSelectWithLabel.vue +1 -1
  75. package/app/components/forms/input-text/InputTextCore.vue +341 -0
  76. package/{components → app/components}/forms/input-text/variants/InputPasswordWithLabel.vue +1 -1
  77. package/{components → app/components}/forms/input-text/variants/InputTextAsNumberWithLabel.vue +4 -2
  78. package/app/components/forms/input-text/variants/InputTextWithLabel.vue +158 -0
  79. package/{components → app/components}/forms/input-textarea/InputTextareaCore.vue +10 -131
  80. package/app/components/forms/input-textarea/variants/InputTextareaWithLabel.vue +125 -0
  81. package/{components → app/components}/forms/toggle-switch/ToggleSwitchCore.vue +1 -1
  82. package/{components → app/components}/forms/toggle-switch/ToggleSwitchCoreOld.vue +1 -1
  83. package/{components → app/components}/forms/toggle-switch/variants/ToggleSwitchWithLabel.vue +5 -2
  84. package/{components → app/components}/forms/toggle-switch/variants/ToggleSwitchWithLabelInline.vue +5 -2
  85. package/{components → app/components}/utils/colour-scheme-select/ColourSchemeSelect.vue +1 -1
  86. package/{components → app/components}/utils/colour-scheme-select/ColourSchemeSelectOld.vue +1 -1
  87. package/nuxt.config.ts +5 -2
  88. package/package.json +9 -11
  89. package/assets/styles/extends-layer/srcdev-forms/components/_form-core.css +0 -8
  90. package/assets/styles/extends-layer/srcdev-forms/components/_form-fieldset.css +0 -16
  91. package/assets/styles/extends-layer/srcdev-forms/components/_input-checkbox-radio-options-button.css +0 -59
  92. package/assets/styles/extends-layer/srcdev-forms/components/_input-checkbox.css +0 -72
  93. package/assets/styles/extends-layer/srcdev-forms/components/_input-error.css +0 -55
  94. package/assets/styles/extends-layer/srcdev-forms/components/_input-label.css +0 -18
  95. package/assets/styles/extends-layer/srcdev-forms/components/_input-radio.css +0 -68
  96. package/assets/styles/extends-layer/srcdev-forms/components/_input-select.css +0 -18
  97. package/assets/styles/extends-layer/srcdev-forms/components/_input-text-as-number.css +0 -22
  98. package/assets/styles/extends-layer/srcdev-forms/components/_input-textarea.css +0 -5
  99. package/assets/styles/extends-layer/srcdev-forms/setup/_generic.css +0 -7
  100. package/assets/styles/extends-layer/srcdev-forms/setup/index.css +0 -4
  101. package/assets/styles/extends-layer/srcdev-forms/setup/sizes/_default.css +0 -12
  102. package/assets/styles/extends-layer/srcdev-forms/setup/variants/_normal.css +0 -48
  103. package/assets/styles/extends-layer/srcdev-forms/setup/variants/index.css +0 -2
  104. package/assets/styles/setup/_head.css +0 -5
  105. package/assets/styles/setup/index.css +0 -5
  106. package/assets/styles/setup/typography/index.css +0 -2
  107. package/assets/styles/setup/typography/utility-classes/_generic-font-classes.css +0 -192
  108. package/assets/styles/setup/typography/utility-classes/_generic-font-variation-settings.css +0 -29
  109. package/assets/styles/setup/typography/utility-classes/_generic-font-weights.css +0 -41
  110. package/assets/styles/setup/utility-classes/_margin-helpers.css +0 -334
  111. package/assets/styles/setup/utility-classes/_padding-helpers.css +0 -308
  112. package/assets/styles/setup/utility-classes/_page.css +0 -49
  113. package/assets/styles/setup/utility-classes/index.css +0 -3
  114. package/components/forms/input-checkbox-radio/InputCheckboxRadioButton.vue +0 -218
  115. package/components/forms/input-text/InputTextCore.vue +0 -390
  116. package/components/forms/input-text/variants/InputTextWithLabel.vue +0 -300
  117. package/components/forms/input-textarea/variants/InputTextareaWithLabel.vue +0 -269
  118. package/{assets → app/assets}/styles/extends-layer/srcdev-forms/index.css +0 -0
  119. package/{assets → app/assets}/styles/extends-layer/srcdev-forms/setup/themes/index.css +0 -0
  120. package/{assets/styles/extends-layer/srcdev-forms/setup → app/assets/styles/extends-layer/srcdev-forms/setup/variants}/sizes/_large.css +0 -0
  121. package/{assets/styles/extends-layer/srcdev-forms/setup → app/assets/styles/extends-layer/srcdev-forms/setup/variants}/sizes/_medium.css +0 -0
  122. package/{assets/styles/extends-layer/srcdev-forms/setup → app/assets/styles/extends-layer/srcdev-forms/setup/variants}/sizes/_small.css +0 -0
  123. package/{assets/styles/extends-layer/srcdev-forms/setup → app/assets/styles/extends-layer/srcdev-forms/setup/variants}/sizes/_x-small.css +0 -0
  124. package/{assets → app/assets}/styles/main.css +0 -0
  125. package/{assets → app/assets}/styles/setup/a11y/_utils.css +0 -0
  126. package/{assets → app/assets}/styles/setup/a11y/_variables.css +0 -0
  127. package/{assets → app/assets}/styles/setup/a11y/index.css +0 -0
  128. package/{assets/styles/setup/variables → app/assets/styles/setup/theming}/colors/_gray.css +0 -0
  129. package/{assets/styles/setup/variables → app/assets/styles/setup/theming}/colors/_green.css +0 -0
  130. package/{assets/styles/setup/variables → app/assets/styles/setup/theming}/colors/_orange.css +0 -0
  131. package/{assets/styles/setup/variables → app/assets/styles/setup/theming}/colors/_red.css +0 -0
  132. package/{assets/styles/setup/variables → app/assets/styles/setup/theming}/colors/_yellow.css +0 -0
  133. package/{assets/styles/setup/variables → app/assets/styles/setup/theming}/colors/index.css +3 -3
  134. package/{assets → app/assets}/styles/setup/typography/utility-classes/index.css +1 -1
  135. /package/{components → app/components}/forms/c12/prop-validators/index.ts +0 -0
  136. /package/{components → app/components}/forms/c12/utils.ts +0 -0
  137. /package/{components → app/components}/forms/form-errors/tests/InputError.spec.ts +0 -0
  138. /package/{components → app/components}/forms/input-button/variants/InputButtonSubmit.vue +0 -0
  139. /package/{components → app/components}/forms/input-checkbox/MultipleCheckboxes.vue +0 -0
  140. /package/{components → app/components}/forms/input-checkbox/SingleCheckbox.vue +0 -0
  141. /package/{components → app/components}/forms/input-checkbox/tests/MultipleCheckboxes.spec.ts +0 -0
  142. /package/{components → app/components}/forms/input-checkbox/tests/data/tags.json +0 -0
  143. /package/{components → app/components}/forms/input-radio/MultipleRadiobuttons.vue +0 -0
  144. /package/{components → app/components}/forms/input-radio/tests/MultipleRadioButtons.spec.ts +0 -0
  145. /package/{components → app/components}/forms/input-radio/tests/data/tags.json +0 -0
  146. /package/{components → app/components}/forms/ui/FormField.vue +0 -0
  147. /package/{components → app/components}/forms/ui/FormWrapper.vue +0 -0
  148. /package/{components → app/components}/utils/dark-mode-switcher/DarkModeSwitcher.vue +0 -0
  149. /package/{composables → app/composables}/useApiRequest.ts +0 -0
  150. /package/{composables → app/composables}/useColourScheme.ts +0 -0
  151. /package/{composables → app/composables}/useErrorMessages.ts +0 -0
  152. /package/{composables → app/composables}/useFormControl.ts +0 -0
  153. /package/{composables → app/composables}/useSleep.ts +0 -0
  154. /package/{composables → app/composables}/useStyleClassPassthrough.ts +0 -0
  155. /package/{composables → app/composables}/useZodValidation.ts +0 -0
  156. /package/{types → app/types}/types.forms.ts +0 -0
  157. /package/{types → app/types}/types.zodFormControl.ts +0 -0
@@ -0,0 +1,125 @@
1
+ <template>
2
+ <div class="input-textarea-with-label" :data-theme="formTheme" :class="[elementClasses, inputVariant, { dirty: isDirty }, { active: isActive }]">
3
+ <InputLabel :for="id" :id :theme :name :input-variant :field-has-error :style-class-passthrough="['input-textarea-label']">
4
+ <template #textLabel>{{ label }}</template>
5
+ </InputLabel>
6
+
7
+ <InputTextareaCore
8
+ v-model="modelValue"
9
+ v-model:isDirty="isDirty"
10
+ v-model:isActive="isActive"
11
+ :maxlength
12
+ :id
13
+ :name
14
+ :placeholder
15
+ :label
16
+ :fieldHasError
17
+ :required
18
+ :styleClassPassthrough
19
+ :theme
20
+ :size
21
+ :inputVariant
22
+ >
23
+ <template v-if="hasLeftSlot" #left>
24
+ <slot name="left"></slot>
25
+ </template>
26
+ <template v-if="hasRightSlot" #right>
27
+ <slot name="right"></slot>
28
+ </template>
29
+ </InputTextareaCore>
30
+ <InputError :errorMessage :showError="fieldHasError" :id :isDetached="false" :inputVariant />
31
+ </div>
32
+ </template>
33
+
34
+ <script setup lang="ts">
35
+ import propValidators from '../../c12/prop-validators';
36
+ const props = defineProps({
37
+ maxlength: {
38
+ type: Number,
39
+ default: 255,
40
+ },
41
+ name: {
42
+ type: String,
43
+ required: true,
44
+ },
45
+ placeholder: {
46
+ type: String,
47
+ default: '',
48
+ },
49
+ label: {
50
+ type: String,
51
+ required: true,
52
+ },
53
+ errorMessage: {
54
+ type: [Object, String],
55
+ required: true,
56
+ },
57
+ fieldHasError: {
58
+ type: Boolean,
59
+ default: false,
60
+ },
61
+ required: {
62
+ type: Boolean,
63
+ default: false,
64
+ },
65
+ styleClassPassthrough: {
66
+ type: Array as PropType<string[]>,
67
+ default: () => [],
68
+ },
69
+ theme: {
70
+ type: String as PropType<string>,
71
+ default: 'primary',
72
+ validator(value: string) {
73
+ return propValidators.theme.includes(value);
74
+ },
75
+ },
76
+ size: {
77
+ type: String as PropType<string>,
78
+ default: 'default',
79
+ validator(value: string) {
80
+ return propValidators.size.includes(value);
81
+ },
82
+ },
83
+ inputVariant: {
84
+ type: String as PropType<string>,
85
+ default: 'normal',
86
+ validator(value: string) {
87
+ return propValidators.inputVariant.includes(value);
88
+ },
89
+ },
90
+ });
91
+
92
+ const slots = useSlots();
93
+ const hasLeftSlot = computed(() => slots.left !== undefined);
94
+ const hasRightSlot = computed(() => slots.right !== undefined);
95
+
96
+ const id = useId();
97
+ const formTheme = computed(() => {
98
+ return props.fieldHasError ? 'error' : props.theme;
99
+ });
100
+
101
+ const modelValue = defineModel<string | number | readonly string[] | null | undefined>();
102
+ const isActive = ref<boolean>(false);
103
+ const isDirty = ref<boolean>(false);
104
+
105
+ const { elementClasses, updateElementClasses } = useStyleClassPassthrough(props.styleClassPassthrough);
106
+
107
+ const testDirty = () => {
108
+ const watchValue = modelValue.value ?? '';
109
+
110
+ if (!isDirty.value && typeof watchValue === 'string' && watchValue.length > 0) {
111
+ isDirty.value = true;
112
+ }
113
+ };
114
+
115
+ onMounted(() => {
116
+ testDirty();
117
+ });
118
+
119
+ watch(
120
+ () => modelValue.value,
121
+ () => {
122
+ testDirty();
123
+ }
124
+ );
125
+ </script>
@@ -1,5 +1,5 @@
1
1
  <template>
2
- <div class="toggle-switch-core" :class="elementClasses" :data-size="size" :data-form-theme="formTheme">
2
+ <div class="toggle-switch-core" :class="elementClasses" :data-size="size" :data-theme="formTheme">
3
3
  <div @click="toggleSwitchValue" class="toggle-switch-wrapper" :class="[{ round }, { 'use-default-icons': useDefaultIcons }]" :for="inputId">
4
4
  <input type="checkbox" v-model="modelValue" :true-value :false-value :aria-invalid="fieldHasError" :id="inputId" :aria-describedby="`${id}-description`" :name :required :checked="isChecked" />
5
5
  <div class="symbol-wrapper" :class="[{ round }]">
@@ -1,5 +1,5 @@
1
1
  <template>
2
- <div class="toggle-switch-core" :class="elementClasses" :data-size="size" :data-form-theme="formTheme">
2
+ <div class="toggle-switch-core" :class="elementClasses" :data-size="size" :data-theme="formTheme">
3
3
  <div @click="toggleSwitchValue" class="toggle-switch-input" :class="[{ round }]" :for="inputId">
4
4
  <input type="checkbox" v-model="modelValue" :true-value :false-value :aria-invalid="fieldHasError" :id="inputId" :aria-describedby="`${id}-description`" :name :required />
5
5
  <div class="symbol-wrapper" :class="[{ round }]">
@@ -1,6 +1,9 @@
1
1
  <template>
2
- <div class="toggle-switch-with-label" :class="[elementClasses]" :data-form-theme="formTheme">
3
- <label class="toggle-switch-label input-text-label body-normal-bold" :for="`toggle-sitch-${id}`">{{ label }}</label>
2
+ <div class="toggle-switch-with-label" :class="[elementClasses]" :data-theme="formTheme">
3
+ <InputLabel :for="`toggle-sitch-${id}`" :id :theme :name input-variant="normal" :field-has-error :style-class-passthrough="['input-switch-label', 'input-text-label', 'body-normal-bold']">
4
+ <template #textLabel>{{ label }}</template>
5
+ </InputLabel>
6
+
4
7
  <div v-if="hasDescriptionSlot" :id="`${id}-description`">
5
8
  <slot name="description"></slot>
6
9
  </div>
@@ -1,6 +1,9 @@
1
1
  <template>
2
- <div class="toggle-switch-with-label-inline" :class="[elementClasses]" :data-form-theme="theme">
3
- <label class="toggle-switch-label input-text-label" :class="labelWeightClass" :for="`toggle-sitch-${id}`">{{ label }}</label>
2
+ <div class="toggle-switch-with-label-inline" :class="[elementClasses]" :data-theme="theme">
3
+ <InputLabel :for="`toggle-sitch-${id}`" :id :theme :name input-variant="normal" :style-class-passthrough="['input-switch-label', 'input-text-label', labelWeightClass]">
4
+ <template #textLabel>{{ label }}</template>
5
+ </InputLabel>
6
+
4
7
  <ToggleSwitchCore v-model="modelValue" :id :name :true-value :false-value :theme :round :size>
5
8
  <template v-if="hasIconOnSlot" #iconOn>
6
9
  <slot name="iconOn"></slot>
@@ -1,5 +1,5 @@
1
1
  <template>
2
- <div class="colour-scheme-select" :data-size="size" :data-form-theme="theme">
2
+ <div class="colour-scheme-select" :data-size="size" :data-theme="theme">
3
3
  <p>Color Scheme select</p>
4
4
 
5
5
  <form class="colour-scheme-select-form mbe-20" ref="colourSchemeWrapper">
@@ -1,5 +1,5 @@
1
1
  <template>
2
- <div class="colour-scheme-select" :data-size="size" :data-form-theme="theme">
2
+ <div class="colour-scheme-select" :data-size="size" :data-theme="theme">
3
3
  <p>Color Scheme select</p>
4
4
 
5
5
  <form class="colour-scheme-select-form mbe-20">
package/nuxt.config.ts CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  export default defineNuxtConfig({
4
4
  devtools: { enabled: true },
5
- css: ['modern-normalize', './assets/styles/main.css'],
5
+ css: ['modern-normalize', './app/assets/styles/main.css'],
6
6
  modules: ['@nuxt/icon', '@nuxt/test-utils/module'],
7
7
  typescript: {
8
8
  tsConfig: {
@@ -30,5 +30,8 @@ export default defineNuxtConfig({
30
30
  vue: {
31
31
  runtimeCompiler: true,
32
32
  },
33
- compatibilityDate: '2024-07-13',
33
+ compatibilityDate: '2024-12-01',
34
+ // future: {
35
+ // compatibilityVersion: 4,
36
+ // },
34
37
  });
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "srcdev-nuxt-forms",
3
3
  "type": "module",
4
- "version": "5.1.1",
4
+ "version": "6.0.0",
5
5
  "main": "nuxt.config.ts",
6
6
  "scripts": {
7
7
  "clean": "rm -rf .nuxt && rm -rf .output && rm -rf .playground/.nuxt && rm -rf .playground/.output",
@@ -18,27 +18,25 @@
18
18
  "test": "vitest"
19
19
  },
20
20
  "files": [
21
- "assets/",
22
- "components/",
23
- "composables/",
24
- "types/"
21
+ "app/",
22
+ "nuxt.config.ts"
25
23
  ],
26
24
  "devDependencies": {
27
25
  "@iconify-json/carbon": "1.2.10",
28
26
  "@iconify-json/material-symbols": "1.2.29",
29
27
  "@iconify-json/material-symbols-light": "1.2.29",
30
- "@nuxt/eslint-config": "1.5.2",
28
+ "@nuxt/eslint-config": "1.8.0",
31
29
  "@nuxt/icon": "1.15.0",
32
- "@nuxt/test-utils": "3.17.2",
30
+ "@nuxt/test-utils": "3.19.2",
33
31
  "@vue/test-utils": "2.4.6",
34
32
  "eslint": "9.31.0",
35
33
  "happy-dom": "16.8.1",
36
- "nuxt": "3.17.7",
34
+ "nuxt": "4.0.3",
37
35
  "release-it": "18.1.2",
38
36
  "typescript": "5.8.3",
39
- "vitest": "3.0.8",
40
- "vue": "3.5.17",
41
- "zod": "^4.0.0"
37
+ "vitest": "3.2.4",
38
+ "vue": "3.5.18",
39
+ "zod": "4.0.0"
42
40
  },
43
41
  "dependencies": {
44
42
  "@iconify-json/gridicons": "1.2.2",
@@ -1,8 +0,0 @@
1
- :root {
2
- .underlined,
3
- .normal,
4
- .input-select-core,
5
- .input-checkbox-radio-options-button {
6
- --form-core-background-color-hover: light-dark(hsl(from var(--theme-form-input-border) h s 95%), hsl(from var(--theme-form-input-border) h s 25%));
7
- }
8
- }
@@ -1,16 +0,0 @@
1
- :root {
2
- /* Label vars */
3
- .form-fieldset {
4
- --form-fieldset-legend-text-color: var(--theme-form-input-text-label-color-normal);
5
- --form-fieldset-legend-text-margin-block: 0.8rem;
6
- --form-fieldset-legend-text-size: var(--step-5);
7
- --form-fieldset-legend-text-weight: normal;
8
- --form-fieldset-legend-text-line-height: 1.5;
9
-
10
- --form-fieldset-description-font-size: 1.6rem;
11
- --form-fieldset-description-margin-top: 1.2rem;
12
-
13
- --form-fieldset-content-margin-block-start: 0;
14
- --form-fieldset-content-padding-block-start: 0;
15
- }
16
- }
@@ -1,59 +0,0 @@
1
- :root {
2
- .input-checkbox-radio-options-button {
3
- /* --input-checkbox-radio-options-button-background-color: hsl(from var(--theme-form-input-border) h s 95%); */
4
- --input-checkbox-radio-options-button-background-color: color-mix(in srgb, currentColor 5%, transparent);
5
- --input-checkbox-radio-options-button-background-color-active: light-dark(hsl(from var(--theme-form-input-border) h s 75%), hsl(from var(--theme-form-input-border) h s 25%));
6
-
7
- --input-checkbox-radio-options-button-border: 0.1rem solid var(--theme-form-input-border);
8
- --input-checkbox-radio-options-button-border-active: 0.1rem solid var(--theme-form-input-border);
9
- /* --input-checkbox-radio-options-button-border-radius: var(--form-input-border-radius); */
10
- --input-checkbox-radio-options-button-border-radius: 1lh;
11
- --input-checkbox-radio-options-button-outline: 0.1rem solid hsl(from var(--theme-form-input-border) h s 55%);
12
- --input-checkbox-radio-options-button-outline-active: 0.1rem solid hsl(from var(--theme-form-input-border) h s 5%);
13
-
14
- /* Label styles */
15
-
16
- --input-checkbox-radio-options-button-label-font-size: var(--form-element-font-size);
17
- --input-checkbox-radio-options-button-label-min-height: var(--form-element-line-height);
18
-
19
- --input-checkbox-radio-options-button-label-margin-block: 0.8rem;
20
- --input-checkbox-radio-options-button-label-padding-inline: 0.8rem;
21
-
22
- [data-form-theme='primary'] {
23
- --input-checkbox-radio-options-button-label-text-color: light-dark(var(--gray-11), var(--gray-1));
24
- --input-checkbox-radio-options-button-label-icon-color: light-dark(var(--gray-11), var(--gray-1));
25
- }
26
-
27
- /* Size variants */
28
- &.x-small {
29
- --input-checkbox-radio-options-padding-block: 0.2rem;
30
- --input-checkbox-radio-options-padding-inline: 1.6rem;
31
-
32
- --input-checkbox-radio-options-button-gap: 1rem;
33
- }
34
-
35
- &.small {
36
- --input-checkbox-radio-options-padding-block: 0.2rem;
37
- --input-checkbox-radio-options-padding-inline: 1.6rem;
38
- --input-checkbox-radio-options-button-gap: 1rem;
39
- }
40
-
41
- &.default {
42
- --input-checkbox-radio-options-padding-block: 0.4rem;
43
- --input-checkbox-radio-options-padding-inline: 1.2rem;
44
- --input-checkbox-radio-options-button-gap: 1rem;
45
- }
46
-
47
- &.medium {
48
- --input-checkbox-radio-options-padding-block: 0.4rem;
49
- --input-checkbox-radio-options-padding-inline: 1.2rem;
50
- --input-checkbox-radio-options-button-gap: 1rem;
51
- }
52
-
53
- &.large {
54
- --input-checkbox-radio-options-padding-block: 0.4rem;
55
- --input-checkbox-radio-options-padding-inline: 1.2rem;
56
- --input-checkbox-radio-options-button-gap: 1rem;
57
- }
58
- }
59
- }
@@ -1,72 +0,0 @@
1
- /*
2
- * These styles control the appearance of checkboxes.
3
- */
4
- :root {
5
- .input-checkbox-radio-wrapper {
6
- &.checkbox {
7
- --input-checkbox-radio-wrapper-transition: all var(--theme-form-transition-duration) ease-in-out;
8
- --input-checkbox-radio-wrapper-border: 0.1rem solid var(--theme-form-input-border);
9
- --input-checkbox-radio-wrapper-border-radius: var(--form-input-border-radius);
10
- --input-checkbox-radio-wrapper-outline: 0.1rem solid hsl(from var(--theme-form-input-border) h s 95%);
11
-
12
- --input-checkbox-radio-wrapper-box-shadow-off: none;
13
-
14
- /* Interactive state */
15
- --input-checkbox-radio-wrapper-border-on: 0.1rem solid var(--theme-form-input-border);
16
- --input-checkbox-radio-wrapper-outline-on: 0.1rem solid hsl(from var(--theme-form-input-border) h s 1%);
17
- --input-checkbox-radio-wrapper-box-shadow-on: 0.1rem 0.1rem 0.1rem 0.1rem hsl(from var(--theme-form-input-border) h s 95%);
18
-
19
- /* Color of checkbox */
20
- --input-checkbox-radio-symbol-color-default: light-dark(hsl(from var(--theme-form-input-border) h s 95%), hsl(from var(--theme-form-input-border) h s 15%));
21
- --input-checkbox-radio-symbol-color-active: light-dark(hsl(from var(--theme-form-input-border) h s 25%), hsl(from var(--theme-form-input-border) h s 75%));
22
-
23
- /* Size variants for radio buttons within a button */
24
- &.x-small {
25
- --form-input-checkbox-radio-button-symbol-size: var(--step-3);
26
- }
27
-
28
- &.small {
29
- --form-input-checkbox-radio-button-symbol-size: var(--step-4);
30
- }
31
-
32
- &.default {
33
- --form-input-checkbox-radio-button-symbol-size: var(--step-7);
34
- }
35
-
36
- &.medium {
37
- --form-input-checkbox-radio-button-symbol-size: var(--step-6);
38
- }
39
-
40
- &.large {
41
- --form-input-checkbox-radio-button-symbol-size: var(--step-6);
42
- }
43
-
44
- /* Size variants for default checkbox */
45
- &.button {
46
- &.display-as-disc {
47
- --input-checkbox-radio-wrapper-border-radius: 100%;
48
- }
49
-
50
- &.x-small {
51
- --form-input-checkbox-radio-button-symbol-size: var(--step-3);
52
- }
53
-
54
- &.small {
55
- --form-input-checkbox-radio-button-symbol-size: var(--step-4);
56
- }
57
-
58
- &.default {
59
- --form-input-checkbox-radio-button-symbol-size: var(--step-6);
60
- }
61
-
62
- &.medium {
63
- --form-input-checkbox-radio-button-symbol-size: var(--step-6);
64
- }
65
-
66
- &.large {
67
- --form-input-checkbox-radio-button-symbol-size: var(--step-6);
68
- }
69
- }
70
- }
71
- }
72
- }
@@ -1,55 +0,0 @@
1
- :root {
2
- --input-error-color: var(--theme-error-text);
3
- /* --input-error-background-color: transparent; */
4
- --input-error-background-color: var(--theme-error-surface);
5
-
6
- --input-error-font-size: var(--form-element-font-size);
7
- --input-error-line-height: var(--form-element-line-height);
8
- --input-error-font-weight: var(--form-element-font-weight);
9
-
10
- --input-error-margin-block-start: 0rem;
11
-
12
- --input-error-border-radius: var(--form-input-border-radius);
13
-
14
- /* Border styles */
15
- --input-error-border-top-left-radius: 0;
16
- --input-error-border-top-right-radius: 0;
17
- --input-error-border-bottom-right-radius: 0;
18
- --input-error-border-bottom-left-radius: 0;
19
-
20
- --input-error-border-top-default: var(--form-element-border-width) solid transparent;
21
- --input-error-border-right-default: var(--form-element-border-width) solid transparent;
22
- --input-error-border-bottom-default: var(--form-element-border-width-underlined) solid transparent;
23
- --input-error-border-left-default: var(--form-element-border-width) solid transparent;
24
-
25
- .detached {
26
- --input-error-margin-block-start: 2rem;
27
-
28
- --input-error-border-top-left-radius: var(--input-error-border-radius);
29
- --input-error-border-top-right-radius: var(--input-error-border-radius);
30
- --input-error-border-bottom-right-radius: var(--input-error-border-radius);
31
- --input-error-border-bottom-left-radius: var(--input-error-border-radius);
32
- }
33
-
34
- .show {
35
- --input-error-background-color: var(--theme-error-surface);
36
-
37
- --input-error-border-bottom-right-radius: var(--input-error-border-radius);
38
- --input-error-border-bottom-left-radius: var(--input-error-border-radius);
39
-
40
- --input-error-border-top-default: var(--form-element-border-width) solid var(--theme-error-surface);
41
- --input-error-border-right-default: var(--form-element-border-width) solid var(--theme-error-surface);
42
- --input-error-border-bottom-default: var(--form-element-border-width-underlined) solid var(--red-8);
43
- --input-error-border-left-default: var(--form-element-border-width) solid var(--theme-error-surface);
44
- }
45
-
46
- .Xunderlined.show {
47
- --input-error-border-bottom-right-radius: var(--input-error-border-radius);
48
- --input-error-border-bottom-left-radius: var(--input-error-border-radius);
49
-
50
- --input-error-border-top-default: var(--form-element-border-width) solid var(--theme-error-surface);
51
- --input-error-border-right-default: var(--form-element-border-width) solid var(--theme-error-surface);
52
- --input-error-border-bottom-default: var(--form-element-border-width-underlined) solid var(--red-8);
53
- --input-error-border-left-default: var(--form-element-border-width) solid var(--theme-error-surface);
54
- }
55
- }
@@ -1,18 +0,0 @@
1
- :root {
2
- /* Label vars */
3
- .normal {
4
- --input-label-text-color: var(--theme-form-input-text-label-color-normal);
5
- --input-label-text-margin-block: 0.8rem;
6
- --input-label-text-size: var(--step-5);
7
- --input-label-text-weight: normal;
8
- --input-label-text-line-height: 1.5;
9
- }
10
-
11
- .underlined {
12
- --input-label-text-color: var(--theme-form-input-text-label-color-normal);
13
- --input-label-text-margin-block: 0.8rem;
14
- --input-label-text-size: var(--step-5);
15
- --input-label-text-weight: normal;
16
- --input-label-text-line-height: 1.5;
17
- }
18
- }
@@ -1,68 +0,0 @@
1
- /*
2
- * These styles control the appearance of radio buttons.
3
- */
4
- :root {
5
- .input-checkbox-radio-wrapper {
6
- &.radio {
7
- --input-checkbox-radio-wrapper-transition: all var(--theme-form-transition-duration) ease-in-out;
8
- --input-checkbox-radio-wrapper-border: 0.1rem solid var(--theme-form-input-border);
9
- --input-checkbox-radio-wrapper-border-radius: 100%;
10
- --input-checkbox-radio-wrapper-outline: 0.1rem solid hsl(from var(--theme-form-input-border) h s 95%);
11
-
12
- --input-checkbox-radio-wrapper-box-shadow-off: none;
13
-
14
- /* Interactive state */
15
- --input-checkbox-radio-wrapper-border-on: 0.1rem solid var(--theme-form-input-border);
16
- --input-checkbox-radio-wrapper-outline-on: 0.1rem solid hsl(from var(--theme-form-input-border) h s 1%);
17
- --input-checkbox-radio-wrapper-box-shadow-on: 0rem 0rem 0rem 0.3rem hsl(from var(--theme-form-input-border) h s 95%);
18
-
19
- /* Color of radio button */
20
- --input-checkbox-radio-symbol-color-default: light-dark(hsl(from var(--theme-form-input-border) h s 95%), hsl(from var(--theme-form-input-border) h s 15%));
21
- --input-checkbox-radio-symbol-color-active: light-dark(hsl(from var(--theme-form-input-border) h s 25%), hsl(from var(--theme-form-input-border) h s 75%));
22
-
23
- /* Size variants for radio buttons within a button */
24
- &.x-small {
25
- --form-input-checkbox-radio-button-symbol-size: var(--step-3);
26
- }
27
-
28
- &.small {
29
- --form-input-checkbox-radio-button-symbol-size: var(--step-4);
30
- }
31
-
32
- &.default {
33
- --form-input-checkbox-radio-button-symbol-size: var(--step-7);
34
- }
35
-
36
- &.medium {
37
- --form-input-checkbox-radio-button-symbol-size: var(--step-6);
38
- }
39
-
40
- &.large {
41
- --form-input-checkbox-radio-button-symbol-size: var(--step-6);
42
- }
43
-
44
- /* Size variants for default radio buttons */
45
- .button {
46
- &.x-small {
47
- --form-input-checkbox-radio-button-symbol-size: var(--step-3);
48
- }
49
-
50
- &.small {
51
- --form-input-checkbox-radio-button-symbol-size: var(--step-4);
52
- }
53
-
54
- &.default {
55
- --form-input-checkbox-radio-button-symbol-size: var(--step-6);
56
- }
57
-
58
- &.medium {
59
- --form-input-checkbox-radio-button-symbol-size: var(--step-6);
60
- }
61
-
62
- &.large {
63
- --form-input-checkbox-radio-button-symbol-size: var(--step-6);
64
- }
65
- }
66
- }
67
- }
68
- }
@@ -1,18 +0,0 @@
1
- :root {
2
- .input-select-core {
3
- --input-select-animation-duration: 0.2s;
4
- --input-select-padding-block: 1.5rem;
5
- --input-select-padding-inline: 1rem;
6
-
7
- --input-select-option-padding-block: 1rem;
8
- --input-select-option-padding-inline: 1.75rem;
9
- --input-select-option-gap: 1.5rem;
10
-
11
- /* --input-select-option-background-color-hover: light-dark(hsl(from var(--theme-form-input-border) h s 75%), hsl(from var(--theme-form-input-border) h s 25%)); */
12
-
13
- --input-select-option-background-color-hover: light-dark(hsl(from var(--theme-form-input-border) h s 75%), hsl(from var(--theme-form-input-border) h s 25%));
14
-
15
- --input-select-option-icon-size: 1.5rem;
16
- --input-select-option-transition: all var(--input-select-animation-duration) ease-in-out;
17
- }
18
- }
@@ -1,22 +0,0 @@
1
- /*
2
- * See _input-select.css for the base styles
3
- **/
4
- :root {
5
- .input-text-wrapper {
6
- &[data-inputmode='numeric'] {
7
- --input-element-padding-block: 1.25rem;
8
- --element-decorator-padding-inline: 0.4rem;
9
-
10
- [data-btn-theme='input-action'] {
11
- --theme-btn-bg: light-dark(hsl(from var(--theme-form-input-border) h s 75%), hsl(from var(--theme-form-input-border) h s 25%));
12
- --theme-btn-text: var(--gray-00);
13
- --form-input-border-radius: 0.2rem;
14
-
15
- --theme-btn-border: hsl(from var(--theme-form-input-border) h s 40%);
16
-
17
- --theme-btn-border-hover: transparent;
18
- --theme-btn-outline-hover: hsl(from var(--theme-form-input-border) h s 75%);
19
- }
20
- }
21
- }
22
- }
@@ -1,5 +0,0 @@
1
- :root {
2
- .input-textarea-core {
3
- --input-textarea-min-height: 4em;
4
- }
5
- }
@@ -1,7 +0,0 @@
1
- :root {
2
- --theme-form-font-familty: var(--font-family);
3
- --theme-error-surface: var(--red-12);
4
- --theme-error-text: var(--red-0);
5
- --theme-form-button-font-size-normal: var(--form-element-font-size);
6
- --theme-form-transition-duration: 0.2s;
7
- }
@@ -1,4 +0,0 @@
1
- @import './themes/';
2
- @import './variants/';
3
- @import './sizes/';
4
- @import './_generic';
@@ -1,12 +0,0 @@
1
- :root {
2
- [data-size='default'] {
3
- --form-element-font-size: var(--step-5);
4
- --form-placeholder-font-size: calc(var(--step-5) * 0.65);
5
- --form-element-line-height: var(--step-5);
6
- --form-icon-size: var(--step-5);
7
- --form-input-border-radius: 0.4rem;
8
- --form-icon-only-button-size: calc(var(--step-4) * 2.5 + 1px);
9
- --form-toggle-symbol-size: calc(var(--step-5) * 1.72);
10
- --form-toggle-switch-width-adjustment: 0.2rem;
11
- }
12
- }