feat(gnosis-vue): add Vue 3 wrapper package with v-model support and dev example#629
Draft
marios-tsigkas with Copilot wants to merge 8 commits into
Draft
feat(gnosis-vue): add Vue 3 wrapper package with v-model support and dev example#629marios-tsigkas with Copilot wants to merge 8 commits into
marios-tsigkas with Copilot wants to merge 8 commits into
Conversation
…components Co-authored-by: marios-tsigkas <[email protected]>
Copilot
AI
changed the title
[WIP] Create gnosis-vue directory for Vue 3 components
feat: add gnosis-vue package — Vue 3 wrappers for all gnosis components
Mar 10, 2026
…nd update package.json
…nup) (#631) * Initial plan * Remove Storybook files from gnosis-vue directory branch Co-authored-by: marios-tsigkas <[email protected]> --------- Co-authored-by: copilot-swe-agent[bot] <[email protected]> Co-authored-by: marios-tsigkas <[email protected]>
Co-authored-by: marios-tsigkas <[email protected]>
Copilot
AI
changed the title
feat: add gnosis-vue package — Vue 3 wrappers for all gnosis components
feat(gnosis-vue): add Vue 3 wrapper package with v-model support and dev example
Mar 10, 2026
Align gnosis-vue wrapper runtime and build configuration on this branch by moving src/index.ts, package.json, vite config, and lockfile changes without reintroducing Storybook-related files. Made-with: Cursor
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Description
Adds
gnosis-vue/— a new package in the monorepo that re-exports all gnosis React components as Vue 3 components via Veaury. Form components get nativev-modelsupport through a reusable factory. Includes a runnable dev-server example page.Changes
gnosis-vue/package scaffoldpackage.json—@epignosis_llc/gnosis-vue;vue/react/react-domas peer deps,veaury+@epignosis_llc/gnosisas runtime depstsconfig.json— ES2020 target,bundlermodule resolution, type-check only (noEmit: true)vite.config.ts— library build via Veaury's Vite plugin +vite-plugin-dtssrc/utils/withVModel.ts— reusable factory wrapping any React component with Vue'smodelValue/update:modelValueconvention. Four mapping presets cover all gnosis form components:withVModelis also exported so consumers can wrap additional React components themselves.src/index.ts— single entry point:applyPureReactInVuewithVModel(Input, Textarea, Select, Checkbox, CheckboxGroup, RadioButtonGroup, RadioGroup, Radio, ToggleSwitch)DefaultTheme,typeScale, and key TypeScript types from@epignosis_llc/gnosisDev example (
index.html/src/main.ts/src/App.vue)Buttonacross all color variants, style variants (outline/ghost/link), sizes, and states (loading, disabled)ref)cd gnosis-vue && npm install && npm run devOriginal prompt
Summary
Create a
gnosis-vue/directory inside the monorepo that exports all gnosis React components as Vue 3 components. Presentational components are wrapped viaveaury'sapplyPureReactInVue. Form components getv-modelsupport via a reusablewithVModelfactory.Files to create
1.
gnosis-vue/package.json{ "name": "@epignosis_llc/gnosis-vue", "version": "1.0.0", "type": "module", "description": "Vue 3 wrapper for the Epignosis Gnosis design system", "main": "dist/gnosis-vue.umd.cjs", "module": "dist/gnosis-vue.js", "types": "dist/types/index.d.ts", "exports": { ".": { "types": "./dist/types/index.d.ts", "import": "./dist/gnosis-vue.js", "require": "./dist/gnosis-vue.umd.cjs" } }, "files": ["dist"], "peerDependencies": { "vue": "^3.3.0", "react": ">=18.0.0", "react-dom": ">=18.0.0" }, "dependencies": { "@epignosis_llc/gnosis": "^6.6.3", "veaury": "^2.6.0" }, "devDependencies": { "@vitejs/plugin-vue": "^5.0.0", "@vitejs/plugin-react": "^4.0.0", "vite": "^5.0.0", "vite-plugin-dts": "^3.0.0", "vue": "^3.4.0", "vue-tsc": "^2.0.0", "typescript": "^5.0.0", "react": "^18.3.1", "react-dom": "^18.3.1" }, "scripts": { "dev": "vite", "build": "vue-tsc --noEmit && vite build", "preview": "vite preview" } }2.
gnosis-vue/tsconfig.json{ "compilerOptions": { "target": "ES2020", "module": "ESNext", "lib": ["ES2020", "DOM", "DOM.Iterable"], "jsx": "preserve", "declaration": true, "declarationDir": "dist/types", "emitDeclarationOnly": false, "strict": true, "moduleResolution": "bundler", "allowImportingTsExtensions": true, "noEmit": true, "esModuleInterop": true, "skipLibCheck": true, "forceConsistentCasingInFileNames": true, "resolveJsonModule": true, "isolatedModules": true }, "include": ["src/**/*"], "exclude": ["node_modules", "dist"] }3.
gnosis-vue/vite.config.ts4.
gnosis-vue/src/utils/withVModel.ts5.
gnosis-vue/src/index.ts