@teamnovu/nuxt-statamic-formbuilder-nuxt-ui 0.1.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 (58) hide show
  1. package/README.md +5 -0
  2. package/dist/module.d.mts +9 -0
  3. package/dist/module.json +9 -0
  4. package/dist/module.mjs +45 -0
  5. package/dist/runtime/components/FormBuilder.d.vue.ts +33 -0
  6. package/dist/runtime/components/FormBuilder.vue +164 -0
  7. package/dist/runtime/components/FormBuilder.vue.d.ts +33 -0
  8. package/dist/runtime/components/FormField.d.vue.ts +20 -0
  9. package/dist/runtime/components/FormField.vue +42 -0
  10. package/dist/runtime/components/FormField.vue.d.ts +20 -0
  11. package/dist/runtime/components/fields/FormFieldCheckboxes.d.vue.ts +10 -0
  12. package/dist/runtime/components/fields/FormFieldCheckboxes.vue +46 -0
  13. package/dist/runtime/components/fields/FormFieldCheckboxes.vue.d.ts +10 -0
  14. package/dist/runtime/components/fields/FormFieldDate.d.vue.ts +13 -0
  15. package/dist/runtime/components/fields/FormFieldDate.vue +86 -0
  16. package/dist/runtime/components/fields/FormFieldDate.vue.d.ts +13 -0
  17. package/dist/runtime/components/fields/FormFieldDisplayText.d.vue.ts +7 -0
  18. package/dist/runtime/components/fields/FormFieldDisplayText.vue +25 -0
  19. package/dist/runtime/components/fields/FormFieldDisplayText.vue.d.ts +7 -0
  20. package/dist/runtime/components/fields/FormFieldEmail.d.vue.ts +10 -0
  21. package/dist/runtime/components/fields/FormFieldEmail.vue +32 -0
  22. package/dist/runtime/components/fields/FormFieldEmail.vue.d.ts +10 -0
  23. package/dist/runtime/components/fields/FormFieldFileUpload.d.vue.ts +10 -0
  24. package/dist/runtime/components/fields/FormFieldFileUpload.vue +34 -0
  25. package/dist/runtime/components/fields/FormFieldFileUpload.vue.d.ts +10 -0
  26. package/dist/runtime/components/fields/FormFieldNumber.d.vue.ts +10 -0
  27. package/dist/runtime/components/fields/FormFieldNumber.vue +31 -0
  28. package/dist/runtime/components/fields/FormFieldNumber.vue.d.ts +10 -0
  29. package/dist/runtime/components/fields/FormFieldPhone.d.vue.ts +10 -0
  30. package/dist/runtime/components/fields/FormFieldPhone.vue +130 -0
  31. package/dist/runtime/components/fields/FormFieldPhone.vue.d.ts +10 -0
  32. package/dist/runtime/components/fields/FormFieldRadioButtons.d.vue.ts +10 -0
  33. package/dist/runtime/components/fields/FormFieldRadioButtons.vue +54 -0
  34. package/dist/runtime/components/fields/FormFieldRadioButtons.vue.d.ts +10 -0
  35. package/dist/runtime/components/fields/FormFieldSelect.d.vue.ts +10 -0
  36. package/dist/runtime/components/fields/FormFieldSelect.vue +65 -0
  37. package/dist/runtime/components/fields/FormFieldSelect.vue.d.ts +10 -0
  38. package/dist/runtime/components/fields/FormFieldSlider.d.vue.ts +10 -0
  39. package/dist/runtime/components/fields/FormFieldSlider.vue +31 -0
  40. package/dist/runtime/components/fields/FormFieldSlider.vue.d.ts +10 -0
  41. package/dist/runtime/components/fields/FormFieldSwitch.d.vue.ts +10 -0
  42. package/dist/runtime/components/fields/FormFieldSwitch.vue +33 -0
  43. package/dist/runtime/components/fields/FormFieldSwitch.vue.d.ts +10 -0
  44. package/dist/runtime/components/fields/FormFieldText.d.vue.ts +11 -0
  45. package/dist/runtime/components/fields/FormFieldText.vue +42 -0
  46. package/dist/runtime/components/fields/FormFieldText.vue.d.ts +11 -0
  47. package/dist/runtime/components/fields/FormFieldTextarea.d.vue.ts +10 -0
  48. package/dist/runtime/components/fields/FormFieldTextarea.vue +41 -0
  49. package/dist/runtime/components/fields/FormFieldTextarea.vue.d.ts +10 -0
  50. package/dist/runtime/plugin.d.ts +2 -0
  51. package/dist/runtime/plugin.js +31 -0
  52. package/dist/runtime/reexports.d.ts +3 -0
  53. package/dist/runtime/reexports.js +7 -0
  54. package/dist/runtime/styles/form-builder.css +1 -0
  55. package/dist/runtime/types.d.ts +9 -0
  56. package/dist/runtime/types.js +0 -0
  57. package/dist/types.d.mts +5 -0
  58. package/package.json +56 -0
@@ -0,0 +1,41 @@
1
+ <template>
2
+ <FormField
3
+ :config="config"
4
+ :style-config="styleConfig"
5
+ :input="input"
6
+ >
7
+ <UTextarea
8
+ v-bind="{ ...input, ...styleConfig }"
9
+ v-model="state[input?.name]"
10
+ type="text"
11
+ :placeholder="config?.floating_label ? '' : translateInput(config?.placeholder)"
12
+ :maxlength="config?.character_limit"
13
+ :ui="{
14
+ base: 'peer field-sizing-content min-h-[4.5rem]',
15
+ root: 'w-full'
16
+ }"
17
+ />
18
+
19
+ <!-- Character count for textarea if character_limit is set -->
20
+ <div
21
+ v-if="config?.character_limit"
22
+ class="absolute right-0 bottom-1 text-dimmed"
23
+ :class="{ 'text-(--ui-text-error)/70!': state[input?.name]?.length >= (config?.character_limit ?? 0) }"
24
+ >
25
+ {{ state[input?.name]?.length ?? 0 }} / {{ config?.character_limit }}
26
+ </div>
27
+ </FormField>
28
+ </template>
29
+
30
+ <script setup>
31
+ import { useTranslatableInput } from "@teamnovu/nuxt-statamic-formbuilder/runtime/composables/useTranslatableInput";
32
+ import { inject } from "vue";
33
+ import { formBuilderStateKey } from "../../reexports";
34
+ const state = inject(formBuilderStateKey);
35
+ const translateInput = useTranslatableInput();
36
+ defineProps({
37
+ config: { type: Object, required: false },
38
+ input: { type: Object, required: true },
39
+ styleConfig: { type: Object, required: true }
40
+ });
41
+ </script>
@@ -0,0 +1,10 @@
1
+ import { type DefaultInputField, type InputTextareaFieldConfig } from '../../reexports.js';
2
+ import type { FormBuilderStyleConfig } from '../../types.js';
3
+ type __VLS_Props = {
4
+ config?: InputTextareaFieldConfig;
5
+ input: DefaultInputField;
6
+ styleConfig: FormBuilderStyleConfig;
7
+ };
8
+ declare const __VLS_export: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
9
+ declare const _default: typeof __VLS_export;
10
+ export default _default;
@@ -0,0 +1,2 @@
1
+ declare const _default: import("#app").Plugin<Record<string, unknown>> & import("#app").ObjectPlugin<Record<string, unknown>>;
2
+ export default _default;
@@ -0,0 +1,31 @@
1
+ import { defineNuxtPlugin } from "#imports";
2
+ import { registerFormField } from "#imports";
3
+ import FormFieldText from "./components/fields/FormFieldText.vue";
4
+ import FormFieldTextarea from "./components/fields/FormFieldTextarea.vue";
5
+ import FormFieldEmail from "./components/fields/FormFieldEmail.vue";
6
+ import FormFieldPhone from "./components/fields/FormFieldPhone.vue";
7
+ import FormFieldNumber from "./components/fields/FormFieldNumber.vue";
8
+ import FormFieldSelect from "./components/fields/FormFieldSelect.vue";
9
+ import FormFieldDate from "./components/fields/FormFieldDate.vue";
10
+ import FormFieldSlider from "./components/fields/FormFieldSlider.vue";
11
+ import FormFieldCheckboxes from "./components/fields/FormFieldCheckboxes.vue";
12
+ import FormFieldRadioButtons from "./components/fields/FormFieldRadioButtons.vue";
13
+ import FormFieldSwitch from "./components/fields/FormFieldSwitch.vue";
14
+ import FormFieldFileUpload from "./components/fields/FormFieldFileUpload.vue";
15
+ import FormFieldDisplayText from "./components/fields/FormFieldDisplayText.vue";
16
+ export default defineNuxtPlugin(() => {
17
+ registerFormField("input_text", FormFieldText);
18
+ registerFormField("input_textarea", FormFieldTextarea);
19
+ registerFormField("input_email", FormFieldEmail);
20
+ registerFormField("input_phone", FormFieldPhone);
21
+ registerFormField("input_number", FormFieldNumber);
22
+ registerFormField("input_select", FormFieldSelect);
23
+ registerFormField("input_date", FormFieldDate);
24
+ registerFormField("input_daterange", FormFieldDate);
25
+ registerFormField("input_slider", FormFieldSlider);
26
+ registerFormField("input_checkboxes", FormFieldCheckboxes);
27
+ registerFormField("input_radio_buttons", FormFieldRadioButtons);
28
+ registerFormField("input_switch", FormFieldSwitch);
29
+ registerFormField("input_file_upload", FormFieldFileUpload);
30
+ registerFormField("display_text", FormFieldDisplayText);
31
+ });
@@ -0,0 +1,3 @@
1
+ export type { ValidationTrigger, TranslatableInput, BaseFieldConfig, FormFieldOption, InputTextFieldConfig, InputTextareaFieldConfig, InputEmailFieldConfig, InputPhoneFieldConfig, InputNumberFieldConfig, InputSelectFieldConfig, InputDateFieldConfig, InputSliderFieldConfig, InputCheckboxesFieldConfig, InputRadioButtonsFieldConfig, InputSwitchFieldConfig, InputFileUploadFieldConfig, DisplayTextFieldConfig, FormBuilderFieldBase, FormBuilderField, FormBuilderFieldType, InputFormBuilderField, InputRules, DefaultInputField, defaultInputField, FormBuilderConfiguration, FormBuilderTexts, FormBuilderRequestState, FormBuilderSubmitter, UseFormBuilderOptions, } from '@teamnovu/nuxt-statamic-formbuilder/runtime/types';
2
+ export { isDisplayOrSpacerField, isInputField, isFileUploadField, isMultiValueField, formBuilderStateKey, } from '@teamnovu/nuxt-statamic-formbuilder/runtime/types';
3
+ export type { FormBuilderStyleConfig } from './types.js';
@@ -0,0 +1,7 @@
1
+ export {
2
+ isDisplayOrSpacerField,
3
+ isInputField,
4
+ isFileUploadField,
5
+ isMultiValueField,
6
+ formBuilderStateKey
7
+ } from "@teamnovu/nuxt-statamic-formbuilder/runtime/types";
@@ -0,0 +1 @@
1
+ @import "@teamnovu/nuxt-statamic-formbuilder/style.css";@source "../components/**/*.{vue,js,ts}";
@@ -0,0 +1,9 @@
1
+ export type FormBuilderStyleConfig = {
2
+ /** Nuxt UI color token (e.g. `neutral`, `primary`) */
3
+ color?: string;
4
+ /** Nuxt UI variant (e.g. `outline`, `soft`) */
5
+ variant?: string;
6
+ /** Nuxt UI size (e.g. `md`, `lg`) */
7
+ size?: string;
8
+ highlight?: boolean;
9
+ };
File without changes
@@ -0,0 +1,5 @@
1
+ export { type FormBuilderStyleConfig } from '../dist/runtime/types.js'
2
+
3
+ export { default } from './module.mjs'
4
+
5
+ export { type ModuleOptions } from './module.mjs'
package/package.json ADDED
@@ -0,0 +1,56 @@
1
+ {
2
+ "name": "@teamnovu/nuxt-statamic-formbuilder-nuxt-ui",
3
+ "version": "0.1.0",
4
+ "description": "Nuxt UI field renderer for @teamnovu/nuxt-statamic-formbuilder",
5
+ "license": "MIT",
6
+ "type": "module",
7
+ "exports": {
8
+ ".": {
9
+ "types": "./dist/types.d.mts",
10
+ "import": "./dist/module.mjs"
11
+ },
12
+ "./style.css": "./dist/runtime/styles/form-builder.css"
13
+ },
14
+ "main": "./dist/module.mjs",
15
+ "typesVersions": {
16
+ "*": {
17
+ ".": [
18
+ "./dist/types.d.mts"
19
+ ]
20
+ }
21
+ },
22
+ "files": [
23
+ "dist"
24
+ ],
25
+ "publishConfig": {
26
+ "access": "public"
27
+ },
28
+ "dependencies": {
29
+ "@internationalized/date": "^3.12.2",
30
+ "@nuxt/kit": "^4.3.1",
31
+ "maska": "^3.2.0"
32
+ },
33
+ "peerDependencies": {
34
+ "@nuxt/ui": ">=4",
35
+ "@teamnovu/nuxt-statamic-formbuilder": ">=0.1.0",
36
+ "nuxt": ">=3.16",
37
+ "vue-i18n": ">=9"
38
+ },
39
+ "devDependencies": {
40
+ "@nuxt/module-builder": "^1.0.2",
41
+ "@nuxt/schema": "^4.3.1",
42
+ "@nuxt/ui": "^4.2.1",
43
+ "@types/node": "^24.11.0",
44
+ "eslint": "^10.0.2",
45
+ "nuxt": "^4.3.1",
46
+ "typescript": "^5.9.3",
47
+ "vue": "^3.5.13",
48
+ "vue-i18n": "^11.4.6",
49
+ "vue-tsc": "^3.3.7",
50
+ "@teamnovu/nuxt-statamic-formbuilder": "0.1.0"
51
+ },
52
+ "scripts": {
53
+ "dev:prepare": "nuxt-module-build build --stub && nuxt-module-build prepare",
54
+ "lint": "eslint ."
55
+ }
56
+ }