├── scss ├── _vars.scss ├── _transitions.scss ├── _export.scss ├── index.scss ├── _global.scss ├── _animations.scss ├── _toaster.scss ├── _preview.scss ├── _model-preview.scss ├── _fields.scss ├── _builder.scss ├── _panels.scss ├── _expression.scss ├── _elements.scss ├── _conditions.scss ├── _tools.scss ├── _form-tabs.scss ├── _config-panel.scss ├── _modal.scss ├── _tree.scss ├── _grid.scss ├── _code.scss ├── _form-steps.scss ├── vueform.scss ├── _breakpoints.scss ├── _colorpicker.scss └── _utils.scss ├── nuxt ├── .eslintignore ├── .nuxtrc ├── playground │ ├── tsconfig.json │ ├── server │ │ └── tsconfig.json │ ├── nuxt.config.ts │ ├── app.vue │ ├── package.json │ └── vueform.config.js ├── tsconfig.json ├── .eslintrc ├── test │ ├── fixtures │ │ └── basic │ │ │ ├── package.json │ │ │ ├── app.vue │ │ │ └── nuxt.config.ts │ └── basic.test.ts ├── build.config.js ├── src │ ├── runtime │ │ └── plugin.ts │ └── module.ts ├── .editorconfig ├── README.md ├── CHANGELOG.md ├── .gitignore └── package.json ├── LICENSE.txt ├── .gitignore ├── .github ├── assets │ ├── banner.png │ ├── x.svg │ ├── linkedin.svg │ ├── nuxt.svg │ ├── vite.svg │ ├── discord.svg │ └── github.svg ├── ISSUE_TEMPLATE │ ├── config.yml │ └── bug-report.yml └── CODE_OF_CONDUCT.md ├── presets └── simple.d.mts ├── vite.d.ts ├── plugin.d.mts ├── vite.js ├── plugins └── elementSelector │ ├── TextElement.vue │ ├── TextareaElement.vue │ ├── ElementSelectOption.vue │ └── index.mjs ├── package.json ├── README.md ├── tailwind.js └── index.d.mts /scss/_vars.scss: -------------------------------------------------------------------------------- 1 | $vfb-placeholder-var: 0; -------------------------------------------------------------------------------- /nuxt/.eslintignore: -------------------------------------------------------------------------------- 1 | dist 2 | node_modules 3 | -------------------------------------------------------------------------------- /nuxt/.nuxtrc: -------------------------------------------------------------------------------- 1 | imports.autoImport=false 2 | typescript.includeWorkspace=true 3 | -------------------------------------------------------------------------------- /LICENSE.txt: -------------------------------------------------------------------------------- 1 | License terms can be found at: 2 | https://vueform.com/license-agreement -------------------------------------------------------------------------------- /nuxt/playground/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "./.nuxt/tsconfig.json" 3 | } 4 | -------------------------------------------------------------------------------- /nuxt/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "./playground/.nuxt/tsconfig.json" 3 | } 4 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | .vscode 2 | .DS_Store 3 | node_modules/ 4 | coverage/ 5 | dist/ 6 | .npmrc -------------------------------------------------------------------------------- /nuxt/.eslintrc: -------------------------------------------------------------------------------- 1 | { 2 | "root": true, 3 | "extends": ["@nuxt/eslint-config"] 4 | } 5 | -------------------------------------------------------------------------------- /nuxt/playground/server/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../.nuxt/tsconfig.server.json" 3 | } 4 | -------------------------------------------------------------------------------- /.github/assets/banner.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vueform/builder/HEAD/.github/assets/banner.png -------------------------------------------------------------------------------- /presets/simple.d.mts: -------------------------------------------------------------------------------- 1 | declare module '@vueform/builder/presets/simple' { 2 | export default BuilderConfig; 3 | } -------------------------------------------------------------------------------- /vite.d.ts: -------------------------------------------------------------------------------- 1 | declare module '@vueform/builder/vite' { 2 | export default function vitePluginVueform(): any; 3 | } -------------------------------------------------------------------------------- /nuxt/test/fixtures/basic/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "private": true, 3 | "name": "basic", 4 | "type": "module" 5 | } 6 | -------------------------------------------------------------------------------- /plugin.d.mts: -------------------------------------------------------------------------------- 1 | declare module '@vueform/builder/plugin' { 2 | export default function vueformPluginBuilder(): any; 3 | } -------------------------------------------------------------------------------- /nuxt/test/fixtures/basic/app.vue: -------------------------------------------------------------------------------- 1 | 4 | 5 | 7 | -------------------------------------------------------------------------------- /nuxt/playground/nuxt.config.ts: -------------------------------------------------------------------------------- 1 | export default defineNuxtConfig({ 2 | modules: ['../src/module'], 3 | devtools: { enabled: true } 4 | }) 5 | -------------------------------------------------------------------------------- /nuxt/test/fixtures/basic/nuxt.config.ts: -------------------------------------------------------------------------------- 1 | import MyModule from '../../../src/module' 2 | 3 | export default defineNuxtConfig({ 4 | modules: [ 5 | MyModule 6 | ] 7 | }) 8 | -------------------------------------------------------------------------------- /nuxt/build.config.js: -------------------------------------------------------------------------------- 1 | import { defineBuildConfig } from 'unbuild' 2 | 3 | export default defineBuildConfig({ 4 | externals: [ 5 | 'pathe', 6 | ], 7 | failOnWarn: false 8 | }) -------------------------------------------------------------------------------- /nuxt/src/runtime/plugin.ts: -------------------------------------------------------------------------------- 1 | import { defineNuxtPlugin } from '#imports' 2 | 3 | export default defineNuxtPlugin(() => { 4 | // console.log('Plugin injected by my-module!') 5 | }) 6 | -------------------------------------------------------------------------------- /scss/_transitions.scss: -------------------------------------------------------------------------------- 1 | .vfb-fade-in-enter-active { 2 | transition-property: opacity; 3 | transition-timing-function: ease-in-out; 4 | transition-duration: 500ms; 5 | } 6 | .vfb-fade-in-enter-from, 7 | .vfb-fade-in-leave-to { 8 | opacity: 0; 9 | } -------------------------------------------------------------------------------- /nuxt/playground/app.vue: -------------------------------------------------------------------------------- 1 | 10 | 11 | 13 | -------------------------------------------------------------------------------- /nuxt/.editorconfig: -------------------------------------------------------------------------------- 1 | root = true 2 | 3 | [*] 4 | indent_size = 2 5 | indent_style = space 6 | end_of_line = lf 7 | charset = utf-8 8 | trim_trailing_whitespace = true 9 | insert_final_newline = true 10 | 11 | [*.md] 12 | trim_trailing_whitespace = false 13 | -------------------------------------------------------------------------------- /nuxt/README.md: -------------------------------------------------------------------------------- 1 | 2 | 3 | # Official Vueform Builder module for Nuxt 4 | 5 | Installation steps: https://builder.vueform.com/docs/installation -------------------------------------------------------------------------------- /nuxt/playground/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "private": true, 3 | "name": "my-module-playground", 4 | "type": "module", 5 | "scripts": { 6 | "dev": "nuxi dev", 7 | "build": "nuxi build", 8 | "generate": "nuxi generate" 9 | }, 10 | "devDependencies": { 11 | "nuxt": "latest" 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /vite.js: -------------------------------------------------------------------------------- 1 | module.exports = function vitePluginVueform() { 2 | return { 3 | name: 'vueform-builder', 4 | config: () => ({ 5 | optimizeDeps: { 6 | include: [ 7 | 'json5', 8 | 'prismjs', 9 | '@vueform/country-phones', 10 | ] 11 | } 12 | }) 13 | } 14 | } -------------------------------------------------------------------------------- /nuxt/playground/vueform.config.js: -------------------------------------------------------------------------------- 1 | // vueform.config.js 2 | 3 | import en from '@vueform/vueform/locales/en' 4 | import vueform from '@vueform/vueform/themes/vueform' 5 | 6 | // You might place these anywhere else in your project 7 | import '@vueform/vueform/themes/vueform/css/index.min.css'; 8 | 9 | export default { 10 | theme: vueform, 11 | locales: { en }, 12 | locale: 'en', 13 | } -------------------------------------------------------------------------------- /scss/_export.scss: -------------------------------------------------------------------------------- 1 | .vfb-export-container { 2 | @apply max-w-100vw-194.5 mx-auto my-4 min-w-[352px]; 3 | } 4 | 5 | .vfb-export-code { 6 | @apply rounded-lg shadow-box-circle mx-auto; 7 | } 8 | 9 | .vfb-export-copy-container { 10 | @apply hidden; 11 | } 12 | 13 | .vfb-export-copy-icon { 14 | @apply mr-1; 15 | } 16 | 17 | .vfb-export-copied-container { 18 | @apply hidden; 19 | } 20 | 21 | .vfb-export-copied-icon { 22 | @apply mr-1; 23 | } -------------------------------------------------------------------------------- /nuxt/CHANGELOG.md: -------------------------------------------------------------------------------- 1 | 2 | ## v1.1.0 3 | 4 | 5 | ### 🚀 Enhancements 6 | 7 | - Plugin template update, types import ([51d1f8f](https://github.com/vueform/builder-nuxt/commit/51d1f8f)) 8 | - Plugin template update, types import ([a89241d](https://github.com/vueform/builder-nuxt/commit/a89241d)) 9 | - Plugin template update, types import ([5386b2e](https://github.com/vueform/builder-nuxt/commit/5386b2e)) 10 | 11 | ### ❤️ Contributors 12 | 13 | - Adam Berecz 14 | 15 | -------------------------------------------------------------------------------- /nuxt/test/basic.test.ts: -------------------------------------------------------------------------------- 1 | import { describe, it, expect } from 'vitest' 2 | import { fileURLToPath } from 'node:url' 3 | import { setup, $fetch } from '@nuxt/test-utils' 4 | 5 | describe('ssr', async () => { 6 | await setup({ 7 | rootDir: fileURLToPath(new URL('./fixtures/basic', import.meta.url)), 8 | }) 9 | 10 | it('renders the index page', async () => { 11 | // Get response to a server-rendered page with `$fetch`. 12 | const html = await $fetch('/') 13 | expect(html).toContain('
basic
') 14 | }) 15 | }) 16 | -------------------------------------------------------------------------------- /scss/index.scss: -------------------------------------------------------------------------------- 1 | // Misc 2 | @use 'vars'; 3 | @use 'code'; 4 | @use 'global'; 5 | @use 'tools'; 6 | @use 'transitions'; 7 | @use 'colorpicker'; 8 | @use 'utils'; 9 | @use 'animations'; 10 | @use 'toaster'; 11 | @use 'modal'; 12 | @use 'expression'; 13 | @use 'conditions'; 14 | @use 'fields'; 15 | @use 'grid'; 16 | 17 | // Panels 18 | @use 'config-panel'; 19 | @use 'elements'; 20 | @use 'tree'; 21 | @use 'model-preview'; 22 | 23 | // Main 24 | @use 'export'; 25 | @use 'panels'; 26 | @use 'preview'; 27 | @use 'breakpoints'; 28 | @use 'builder'; 29 | 30 | // Preview 31 | @use 'form-tabs'; 32 | @use 'form-steps'; 33 | @use 'preview-element'; -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/config.yml: -------------------------------------------------------------------------------- 1 | blank_issues_enabled: true 2 | contact_links: 3 | - name: ❓ Ask a Question 4 | url: https://github.com/vueform/builder/discussions/categories/questions 5 | about: Not sure about something? Start a "New discussion" and get an answer 6 | - name: 💡 Feature Idea 7 | url: https://github.com/vueform/builder/discussions/categories/ideas 8 | about: Suggest a feature that will improve Vueform Builder by starting a "New discussion" 9 | - name: 📚 Documentation 10 | url: https://builder.vueform.com/docs/saving 11 | about: Learning material for Vueform Builder 12 | - name: 💬 Discussions 13 | url: https://github.com/vueform/builder/discussions 14 | about: Use discussions if you have another issue, an idea for improvement or for asking questions. -------------------------------------------------------------------------------- /scss/_global.scss: -------------------------------------------------------------------------------- 1 | @import url('https://fonts.googleapis.com/css2?family=Source+Sans+Pro:wght@400;600;700&display=swap'); 2 | 3 | :not(pre) > code.vfb-inline-code { 4 | font-size: 0.8em; 5 | font-weight: normal; 6 | position: relative; 7 | top: -1px; 8 | letter-spacing: -0.2px; 9 | color: theme('colors.code.light-purple'); 10 | white-space: nowrap; 11 | 12 | &:not(.no-quote):before, &:not(.no-quote):after { 13 | content: ""; 14 | display: inline-block; 15 | width: 0.375em; 16 | } 17 | 18 | &.no-quote { 19 | padding-left: 0.2em; 20 | padding-right: 0.2em; 21 | } 22 | } 23 | 24 | .vfb-builder { 25 | font-family: 'Source Sans Pro', sans-serif; 26 | -webkit-font-smoothing: antialiased; 27 | 28 | * { 29 | -webkit-font-smoothing: antialiased; 30 | } 31 | } -------------------------------------------------------------------------------- /nuxt/.gitignore: -------------------------------------------------------------------------------- 1 | # Dependencies 2 | node_modules 3 | 4 | # Logs 5 | *.log* 6 | 7 | # Temp directories 8 | .temp 9 | .tmp 10 | .cache 11 | 12 | # Yarn 13 | **/.yarn/cache 14 | **/.yarn/*state* 15 | 16 | # Generated dirs 17 | dist 18 | 19 | # Nuxt 20 | .nuxt 21 | .output 22 | .data 23 | .vercel_build_output 24 | .build-* 25 | .netlify 26 | 27 | # Env 28 | .env 29 | 30 | # Testing 31 | reports 32 | coverage 33 | *.lcov 34 | .nyc_output 35 | 36 | # VSCode 37 | .vscode/* 38 | !.vscode/settings.json 39 | !.vscode/tasks.json 40 | !.vscode/launch.json 41 | !.vscode/extensions.json 42 | !.vscode/*.code-snippets 43 | 44 | # Intellij idea 45 | *.iml 46 | .idea 47 | 48 | # OSX 49 | .DS_Store 50 | .AppleDouble 51 | .LSOverride 52 | .AppleDB 53 | .AppleDesktop 54 | Network Trash Folder 55 | Temporary Items 56 | .apdisk 57 | -------------------------------------------------------------------------------- /scss/_animations.scss: -------------------------------------------------------------------------------- 1 | .vfb-util-flash { 2 | transition: 0.1s; 3 | animation-duration: 0.5s; 4 | animation-fill-mode: both; 5 | animation-name: flash; 6 | } 7 | 8 | @keyframes flash { 9 | from, 10 | 50%, 11 | to { 12 | opacity: 1; 13 | } 14 | 15 | 25%, 16 | 75% { 17 | opacity: 0; 18 | } 19 | } 20 | 21 | @keyframes vfb-fade-in { 22 | 0% { 23 | opacity: 0; 24 | } 25 | 26 | 100% { 27 | opacity: 1; 28 | } 29 | } 30 | 31 | @keyframes vfb-fade-in-up { 32 | 0% { 33 | opacity: 0; 34 | transform: translate3d(0,15%,0); 35 | } 36 | 37 | 100% { 38 | opacity: 1; 39 | transform: translateZ(0); 40 | } 41 | } 42 | 43 | @keyframes vfb-fade-in-down { 44 | 0% { 45 | opacity: 0; 46 | transform: translate3d(0,-15%,0); 47 | } 48 | 49 | 100% { 50 | opacity: 1; 51 | transform: translateZ(0); 52 | } 53 | } -------------------------------------------------------------------------------- /.github/assets/x.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | x 5 | Created with Sketch. 6 | 7 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /scss/_toaster.scss: -------------------------------------------------------------------------------- 1 | .vfb-toaster-container { 2 | @apply flex items-center justify-center sticky top-full pb-4 mx-16 transition duration-300 ease-toaster transform translate-y-full z-999; 3 | 4 | &.vfb-toaster-container-visible { 5 | @apply translate-y-0; 6 | } 7 | } 8 | 9 | .vfb-toaster { 10 | @apply text-white py-3 px-5 bg-black bg-opacity-80 overflow-hidden flex justify-between items-center rounded whitespace-nowrap opacity-100; 11 | 12 | &.vfb-toaster-error { 13 | @apply bg-red-500; 14 | box-shadow: 2px 2px 1px 0px rgba(126, 58, 58, 0.5); 15 | } 16 | 17 | &.vfb-toaster-info { 18 | @apply bg-blue-400; 19 | box-shadow: 2px 2px 1px 0px rgba(96, 165, 250, 0.5); 20 | } 21 | 22 | &.vfb-toaster-success { 23 | @apply bg-primary-500; 24 | box-shadow: 2px 2px 1px 0px rgba(31, 150, 118, 0.5); 25 | } 26 | } 27 | 28 | .vfb-toaster-wrapper { 29 | @apply flex items-center; 30 | } 31 | 32 | .vfb-toaster-icon { 33 | @apply mr-3; 34 | } 35 | 36 | .vfb-toaster-close-wrapper { 37 | @apply ml-4; 38 | } 39 | 40 | .vfb-toaster-close { 41 | @apply uppercase cursor-pointer text-white opacity-70 font-semibold transition hover:opacity-90; 42 | } 43 | 44 | .vfb-toast-enter-active, 45 | .vfb-toast-leave-active { 46 | } 47 | 48 | .vfb-toast-enter, 49 | .vfb-toast-leave-to { 50 | } 51 | 52 | .vfb-toast-leave, 53 | .vfb-toast-enter-to { 54 | } -------------------------------------------------------------------------------- /nuxt/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "@vueform/builder-nuxt", 3 | "version": "1.31.0", 4 | "description": "Nuxt module for Vueform Builder", 5 | "repository": "vueform/builder-nuxt", 6 | "license": "MIT", 7 | "authors": [ 8 | { 9 | "name": "Adam Berecz", 10 | "email": "adam@vueform.com" 11 | } 12 | ], 13 | "type": "module", 14 | "exports": { 15 | ".": { 16 | "types": "./dist/types.d.ts", 17 | "import": "./dist/module.mjs", 18 | "require": "./dist/module.cjs" 19 | } 20 | }, 21 | "main": "./dist/module.cjs", 22 | "types": "./dist/types.d.ts", 23 | "files": [ 24 | "dist" 25 | ], 26 | "scripts": { 27 | "prepack": "nuxt-module-build build", 28 | "dev": "nuxi dev playground", 29 | "dev:build": "nuxi build playground", 30 | "dev:prepare": "nuxt-module-build build --stub && nuxt-module-build prepare && nuxi prepare playground", 31 | "release": "npm run lint && npm run prepack && npm publish", 32 | "lint": "eslint .", 33 | "test": "vitest run", 34 | "test:watch": "vitest watch" 35 | }, 36 | "dependencies": { 37 | "@nuxt/kit": "^3.8.0", 38 | "@vueform/vueform": "^1.13.6", 39 | "@vueform/builder": "^1.12.6" 40 | }, 41 | "devDependencies": { 42 | "@nuxt/devtools": "latest", 43 | "@nuxt/eslint-config": "^0.2.0", 44 | "@nuxt/module-builder": "^0.5.2", 45 | "@nuxt/schema": "^3.8.0", 46 | "@nuxt/test-utils": "^3.8.0", 47 | "@types/node": "^18.18.6", 48 | "changelogen": "^0.5.5", 49 | "eslint": "^8.52.0", 50 | "nuxt": "^3.8.0", 51 | "vitest": "^0.34.0" 52 | } 53 | } -------------------------------------------------------------------------------- /scss/_preview.scss: -------------------------------------------------------------------------------- 1 | .vfb-preview-container { 2 | @apply w-full mx-auto flex flex-col items-center transition-all my-8 duration-300; 3 | 4 | &.vfb-hidden { 5 | @apply hidden; 6 | } 7 | } 8 | 9 | .vfb-preview-wrapper { 10 | @apply bg-white rounded-lg shadow-box-circle mx-auto w-full relative transition-all p-10 text-gray-900 dark:text-gray-900; 11 | } 12 | 13 | .vfb-preview-wrapper-dark, 14 | .vfb-preview-wrapper.vfb-preview-wrapper-dark { 15 | @apply bg-dark-900 text-white dark:text-white; 16 | 17 | .vfb-preview-empty-title { 18 | @apply text-white; 19 | } 20 | 21 | .vfb-preview-empty-description { 22 | @apply text-dark-400; 23 | } 24 | } 25 | 26 | .vfb-preview-drag-wrapper { 27 | @apply bg-primary-500 absolute h-1 rounded-full pointer-events-none -left-2 -right-2 -top-0.5 mt-8; 28 | } 29 | 30 | .vfb-preview-drag-label { 31 | @apply bg-primary-500 absolute left-1/2 top-1/2 transform -translate-x-1/2 -translate-y-1/2 px-2 pt-0.5 pb-0.75 rounded-full leading-none text-0.5sm text-white; 32 | } 33 | 34 | .vfb-preview-empty-container { 35 | @apply rounded-xl text-center py-8 leading-relaxed transition duration-300 bg-primary-500; 36 | } 37 | 38 | .vfb-preview-empty-container-active { 39 | @apply bg-opacity-10; 40 | } 41 | 42 | .vfb-preview-empty-container-inactive { 43 | @apply bg-opacity-0; 44 | } 45 | 46 | .vfb-preview-empty-icon-container { 47 | color: var(--vf-primary); 48 | @apply mx-auto mb-6 text-6xl; 49 | } 50 | 51 | .vfb-preview-empty-icon { 52 | } 53 | 54 | .vfb-preview-empty-title { 55 | @apply font-semibold text-[18px]; 56 | } 57 | 58 | .vfb-preview-empty-description { 59 | @apply text-gray-500; 60 | } 61 | 62 | .vfb-preview-form-with-tabs { 63 | @apply -mt-2; 64 | } 65 | 66 | .vfb-preview-form { 67 | @q 68 | } -------------------------------------------------------------------------------- /.github/assets/linkedin.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | linkedin 5 | Created with Sketch. 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /scss/_model-preview.scss: -------------------------------------------------------------------------------- 1 | .vfb-model-preview-container { 2 | @apply absolute px-0 inset-0 overflow-y-auto overflow-x-hidden transition transform duration-150 bg-gray-900 dark:bg-dark-1000; 3 | } 4 | 5 | .vfb-model-preview-container-hidden { 6 | @apply translate-x-full; 7 | 8 | &.vfb-model-preview-container-left { 9 | @apply -translate-x-full; 10 | } 11 | } 12 | 13 | .vfb-model-preview-wrapper { 14 | @apply flex flex-col items-start text-0.5md text-white text-0.5md; 15 | } 16 | 17 | .vfb-model-preview-warning { 18 | @apply bg-red-100 text-red-500 mt-6 mx-6 px-4 py-3 rounded leading-tight overflow-x-scroll; 19 | max-width: calc(100% - 44px); 20 | } 21 | 22 | .vfb-model-preview-warning-text { 23 | @apply my-1; 24 | } 25 | 26 | .vfb-model-preview-warning-ul { 27 | @apply list-disc pl-5 leading-tight; 28 | } 29 | 30 | .vfb-model-preview-warning-li { 31 | @apply text-xs font-semibold -ml-1 pr-4 underline cursor-pointer; 32 | } 33 | 34 | .vfb-model-preview-tabs-container { 35 | @apply flex pt-6 px-6 font-semibold; 36 | } 37 | 38 | .vfb-model-preview-tab { 39 | @apply cursor-pointer; 40 | } 41 | 42 | .vfb-model-preview-tab-active { 43 | @apply border-b border-primary-500; 44 | } 45 | 46 | .vfb-model-preview-tab-inactive { 47 | @apply opacity-50; 48 | } 49 | 50 | .vfb-model-preview-tab-data { 51 | @apply mr-4; 52 | } 53 | 54 | .vfb-model-preview-tab-request-data { 55 | } 56 | 57 | .vfb-model-preview-close { 58 | @apply absolute w-10 h-10 top-3.5 right-2 flex items-center justify-center cursor-pointer transition opacity-50 hover:opacity-100; 59 | } 60 | 61 | .vfb-model-preview-close-icon { 62 | } 63 | 64 | .vfb-model-preview-code-container { 65 | @apply overflow-x-auto w-full max-w-full; 66 | } 67 | 68 | .vfb-model-preview-code-reset { 69 | @apply bg-white bg-opacity-10 px-4 py-1.5 rounded-lg transition hover:bg-opacity-20 ml-6 cursor-pointer; 70 | } -------------------------------------------------------------------------------- /.github/assets/nuxt.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /plugins/elementSelector/TextElement.vue: -------------------------------------------------------------------------------- 1 | 43 | 44 | 55 | 56 | -------------------------------------------------------------------------------- /plugins/elementSelector/TextareaElement.vue: -------------------------------------------------------------------------------- 1 |