gea-lib 1.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 (33) hide show
  1. package/README.md +100 -0
  2. package/bin/index.js +214 -0
  3. package/package.json +38 -0
  4. package/templates/js/README.md +39 -0
  5. package/templates/js/_gitignore +42 -0
  6. package/templates/js/package.json +32 -0
  7. package/templates/js/playground/app.jsx +80 -0
  8. package/templates/js/playground/index.html +15 -0
  9. package/templates/js/playground/main.js +5 -0
  10. package/templates/js/playground/style.css +49 -0
  11. package/templates/js/src/components/Button.css +74 -0
  12. package/templates/js/src/components/Button.jsx +20 -0
  13. package/templates/js/src/components/Card.css +44 -0
  14. package/templates/js/src/components/Card.jsx +27 -0
  15. package/templates/js/src/index.js +3 -0
  16. package/templates/js/src/stores/counter.js +21 -0
  17. package/templates/js/vite.config.js +23 -0
  18. package/templates/ts/README.md +40 -0
  19. package/templates/ts/_gitignore +42 -0
  20. package/templates/ts/package.json +35 -0
  21. package/templates/ts/playground/app.tsx +80 -0
  22. package/templates/ts/playground/index.html +15 -0
  23. package/templates/ts/playground/main.ts +5 -0
  24. package/templates/ts/playground/style.css +49 -0
  25. package/templates/ts/src/components/Button.css +74 -0
  26. package/templates/ts/src/components/Button.tsx +26 -0
  27. package/templates/ts/src/components/Card.css +44 -0
  28. package/templates/ts/src/components/Card.tsx +32 -0
  29. package/templates/ts/src/index.ts +3 -0
  30. package/templates/ts/src/stores/counter.ts +21 -0
  31. package/templates/ts/tsconfig.build.json +10 -0
  32. package/templates/ts/tsconfig.json +21 -0
  33. package/templates/ts/vite.config.ts +23 -0
@@ -0,0 +1,20 @@
1
+ import { Component } from '@geajs/core';
2
+ import './Button.css';
3
+
4
+ export default class Button extends Component {
5
+ template() {
6
+ const variant = this.props?.variant || 'primary';
7
+ const disabled = this.props?.disabled || false;
8
+ const click = this.props?.click;
9
+
10
+ return (
11
+ <button
12
+ class={`gea-btn gea-btn-${variant}`}
13
+ disabled={disabled}
14
+ click={click}
15
+ >
16
+ {this.props?.children}
17
+ </button>
18
+ );
19
+ }
20
+ }
@@ -0,0 +1,44 @@
1
+ .gea-card {
2
+ background: rgba(255, 255, 255, 0.03);
3
+ border: 1px solid rgba(255, 255, 255, 0.08);
4
+ border-radius: 24px;
5
+ padding: 2rem;
6
+ backdrop-filter: blur(16px);
7
+ -webkit-backdrop-filter: blur(16px);
8
+ box-shadow: 0 8px 32px 0 rgba(0, 0, 0, 0.3);
9
+ display: flex;
10
+ flex-direction: column;
11
+ gap: 1.5rem;
12
+ transition: border-color 0.3s ease, box-shadow 0.3s ease;
13
+ }
14
+
15
+ .gea-card:hover {
16
+ border-color: rgba(124, 58, 237, 0.2);
17
+ box-shadow: 0 8px 32px 0 rgba(124, 58, 237, 0.08);
18
+ }
19
+
20
+ .gea-card-header {
21
+ border-bottom: 1px solid rgba(255, 255, 255, 0.05);
22
+ padding-bottom: 1rem;
23
+ }
24
+
25
+ .gea-card-title {
26
+ font-size: 1.5rem;
27
+ font-weight: 800;
28
+ background: linear-gradient(135deg, #ffffff 0%, #a78bfa 100%);
29
+ -webkit-background-clip: text;
30
+ -webkit-text-fill-color: transparent;
31
+ }
32
+
33
+ .gea-card-body {
34
+ color: var(--text-secondary, #9ca3af);
35
+ line-height: 1.6;
36
+ }
37
+
38
+ .gea-card-footer {
39
+ border-top: 1px solid rgba(255, 255, 255, 0.05);
40
+ padding-top: 1rem;
41
+ display: flex;
42
+ justify-content: flex-end;
43
+ gap: 1rem;
44
+ }
@@ -0,0 +1,27 @@
1
+ import { Component } from '@geajs/core';
2
+ import './Card.css';
3
+
4
+ export default class Card extends Component {
5
+ template() {
6
+ const title = this.props?.title;
7
+ const footer = this.props?.footer;
8
+
9
+ return (
10
+ <div class="gea-card">
11
+ {title && (
12
+ <div class="gea-card-header">
13
+ <h3 class="gea-card-title">{title}</h3>
14
+ </div>
15
+ )}
16
+ <div class="gea-card-body">
17
+ {this.props?.children}
18
+ </div>
19
+ {footer && (
20
+ <div class="gea-card-footer">
21
+ {footer}
22
+ </div>
23
+ )}
24
+ </div>
25
+ );
26
+ }
27
+ }
@@ -0,0 +1,3 @@
1
+ export { default as Button } from './components/Button';
2
+ export { default as Card } from './components/Card';
3
+ export { default as counterStore } from './stores/counter';
@@ -0,0 +1,21 @@
1
+ import { Store } from '@geajs/core';
2
+
3
+ class CounterStore extends Store {
4
+ count = 0;
5
+
6
+ increment() {
7
+ this.count++;
8
+ }
9
+
10
+ decrement() {
11
+ if (this.count > 0) {
12
+ this.count--;
13
+ }
14
+ }
15
+
16
+ reset() {
17
+ this.count = 0;
18
+ }
19
+ }
20
+
21
+ export default new CounterStore();
@@ -0,0 +1,23 @@
1
+ import { defineConfig } from 'vite';
2
+ import { geaPlugin } from '@geajs/vite-plugin';
3
+ import { resolve } from 'path';
4
+
5
+ export default defineConfig({
6
+ plugins: [geaPlugin()],
7
+ build: {
8
+ lib: {
9
+ entry: resolve(__dirname, 'src/index.js'),
10
+ name: '<% libraryName %>',
11
+ fileName: 'index',
12
+ formats: ['es']
13
+ },
14
+ rollupOptions: {
15
+ external: ['@geajs/core'],
16
+ output: {
17
+ globals: {
18
+ '@geajs/core': 'Gea'
19
+ }
20
+ }
21
+ }
22
+ }
23
+ });
@@ -0,0 +1,40 @@
1
+ # <% projectName %>
2
+
3
+ A modern, high-performance, and reactive component library for **GeaJS**.
4
+
5
+ Built with compiler-first reactivity, proxy-based state management, and modern glassmorphic designs.
6
+
7
+ ## Features
8
+
9
+ - ⚡ **No Virtual DOM**: Built on GeaJS, compile-time JSX transformations for surgical DOM patching.
10
+ - 🎨 **Premium Styling**: Pre-configured responsive styles, micro-animations, and glassmorphic designs.
11
+ - 🛠️ **Playground Included**: An interactive visual sandbox to test and showcase your components in real-time.
12
+ - ⚙️ **TypeScript Ready**: Full type checking, autocompletions, and type declarations bundle.
13
+
14
+ ## Development
15
+
16
+ To start the interactive playground:
17
+
18
+ ```bash
19
+ npm install
20
+ npm run dev
21
+ ```
22
+
23
+ ## Production Build
24
+
25
+ To build your library for distribution:
26
+
27
+ ```bash
28
+ npm run build
29
+ ```
30
+
31
+ The build process bundles your components into `dist/index.js` (ES Modules) and generates type declarations in `dist/index.d.ts`.
32
+
33
+ ## Usage
34
+
35
+ Register components in your main application:
36
+
37
+ ```javascript
38
+ import { Button, Card, counterStore } from '<% projectName %>';
39
+ import '<% projectName %>/style.css';
40
+ ```
@@ -0,0 +1,42 @@
1
+ # Logs
2
+ logs
3
+ *.log
4
+ npm-debug.log*
5
+ yarn-debug.log*
6
+ yarn-error.log*
7
+ pnpm-debug.log*
8
+ lerna-debug.log*
9
+
10
+ # Dependency directories
11
+ node_modules/
12
+ jspm_packages/
13
+
14
+ # Compiler outputs
15
+ dist/
16
+ tmp/
17
+ out/
18
+ .docusaurus/
19
+
20
+ # IDEs and editors
21
+ .idea/
22
+ .vscode/
23
+ *.suo
24
+ *.ntvs*
25
+ *.njsproj
26
+ *.sln
27
+ *.sw?
28
+
29
+ # OS files
30
+ .DS_Store
31
+ Thumbs.db
32
+
33
+ # Test coverage
34
+ coverage/
35
+ .nyc_output/
36
+
37
+ # Build environment
38
+ .env
39
+ .env.local
40
+ .env.development.local
41
+ .env.test.local
42
+ .env.production.local
@@ -0,0 +1,35 @@
1
+ {
2
+ "name": "<% projectName %>",
3
+ "version": "0.1.0",
4
+ "type": "module",
5
+ "main": "./dist/index.js",
6
+ "module": "./dist/index.js",
7
+ "types": "./dist/index.d.ts",
8
+ "exports": {
9
+ ".": {
10
+ "import": "./dist/index.js",
11
+ "types": "./dist/index.d.ts"
12
+ },
13
+ "./style.css": "./dist/style.css"
14
+ },
15
+ "files": [
16
+ "dist"
17
+ ],
18
+ "scripts": {
19
+ "dev": "vite",
20
+ "build": "tsc -p tsconfig.build.json && vite build",
21
+ "preview": "vite preview",
22
+ "test": "vitest run"
23
+ },
24
+ "peerDependencies": {
25
+ "@geajs/core": "^1.0.0"
26
+ },
27
+ "devDependencies": {
28
+ "@geajs/core": "^1.0.0",
29
+ "@geajs/vite-plugin": "^1.0.0",
30
+ "typescript": "^5.4.5",
31
+ "vite": "^8.0.0",
32
+ "vitest": "^2.0.0",
33
+ "jsdom": "^24.1.0"
34
+ }
35
+ }
@@ -0,0 +1,80 @@
1
+ import { Component } from '@geajs/core';
2
+ import { Button, Card, counterStore } from '../src';
3
+
4
+ export default class App extends Component {
5
+ template() {
6
+ return (
7
+ <div style="max-width: 800px; width: 100%; padding: 2rem;">
8
+ <div style="text-align: center; margin-bottom: 3rem;">
9
+ <h1 style="font-size: 3rem; font-weight: 800; background: linear-gradient(135deg, #a78bfa 0%, #ec4899 100%); -webkit-background-clip: text; -webkit-text-fill-color: transparent; margin-bottom: 0.5rem; letter-spacing: -0.05em;">
10
+ GeaJS Library Playground
11
+ </h1>
12
+ <p style="color: var(--text-secondary); font-size: 1.1rem;">
13
+ Interactive sandbox demonstrating your reactive components
14
+ </p>
15
+ </div>
16
+
17
+ <div style="display: grid; grid-template-columns: 1fr; gap: 2rem;">
18
+
19
+ {/* Reactive Counter Card */}
20
+ <Card
21
+ title="Reactive State Demo"
22
+ footer={
23
+ <Button variant="glass" click={() => counterStore.reset()}>
24
+ Reset Counter
25
+ </Button>
26
+ }
27
+ >
28
+ <p style="margin-bottom: 1.5rem;">
29
+ GeaJS utilizes deep proxies to surgically update the DOM. Click the buttons below to see the reactivity in action.
30
+ </p>
31
+
32
+ <div style="display: flex; align-items: center; justify-content: center; gap: 2rem; margin: 2rem 0; padding: 1.5rem; background: rgba(255,255,255,0.02); border-radius: 16px; border: 1px dashed rgba(255,255,255,0.08);">
33
+ <Button variant="secondary" click={() => counterStore.decrement()}>-</Button>
34
+ <span style="font-family: var(--font-mono); font-size: 3rem; font-weight: bold; min-width: 80px; text-align: center; color: #ffffff;">
35
+ {counterStore.count}
36
+ </span>
37
+ <Button variant="primary" click={() => counterStore.increment()}>+</Button>
38
+ </div>
39
+ </Card>
40
+
41
+ {/* Button Variant Showcase */}
42
+ <Card title="Button Variants">
43
+ <p style="margin-bottom: 1.5rem;">
44
+ Beautiful styled buttons with hover glows and tap micro-animations.
45
+ </p>
46
+
47
+ <div style="display: flex; flex-wrap: wrap; gap: 1rem; justify-content: center;">
48
+ <Button variant="primary" click={() => alert('Primary clicked!')}>
49
+ Primary Glow
50
+ </Button>
51
+ <Button variant="secondary" click={() => alert('Secondary clicked!')}>
52
+ Secondary Glow
53
+ </Button>
54
+ <Button variant="glass" click={() => alert('Glass clicked!')}>
55
+ Glassmorphic
56
+ </Button>
57
+ <Button variant="primary" disabled={true}>
58
+ Disabled
59
+ </Button>
60
+ </div>
61
+ </Card>
62
+
63
+ {/* Integration Guide */}
64
+ <Card title="How to Import">
65
+ <p style="margin-bottom: 1rem;">Import components directly into your GeaJS project:</p>
66
+ <pre style="background: rgba(0,0,0,0.3); padding: 1rem; border-radius: 12px; border: 1px solid rgba(255,255,255,0.05); font-family: var(--font-mono); font-size: 0.9rem; color: #a78bfa; overflow-x: auto; white-space: pre-wrap;">
67
+ {`import { Button, Card } from 'your-library-name';
68
+
69
+ // In template:
70
+ <Card title="My Card">
71
+ <Button click={() => doSomething()}>Click Me</Button>
72
+ </Card>`}
73
+ </pre>
74
+ </Card>
75
+
76
+ </div>
77
+ </div>
78
+ );
79
+ }
80
+ }
@@ -0,0 +1,15 @@
1
+ <!DOCTYPE html>
2
+ <html lang="en">
3
+ <head>
4
+ <meta charset="UTF-8" />
5
+ <meta name="viewport" content="width=device-width, initial-scale=1.0" />
6
+ <title><% projectName %> - Component Library Playground</title>
7
+ <link rel="preconnect" href="https://fonts.googleapis.com">
8
+ <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
9
+ <link href="https://fonts.googleapis.com/css2?family=Outfit:wght@300;400;600;800&family=JetBrains+Mono:wght@400;700&display=swap" rel="stylesheet">
10
+ </head>
11
+ <body>
12
+ <div id="app"></div>
13
+ <script type="module" src="/playground/main.ts"></script>
14
+ </body>
15
+ </html>
@@ -0,0 +1,5 @@
1
+ import App from './app';
2
+ import './style.css';
3
+
4
+ const app = new App();
5
+ app.render(document.getElementById('app'));
@@ -0,0 +1,49 @@
1
+ :root {
2
+ --bg-color: #030014;
3
+ --panel-bg: rgba(255, 255, 255, 0.03);
4
+ --panel-border: rgba(255, 255, 255, 0.08);
5
+ --primary-color: #7c3aed;
6
+ --primary-glow: rgba(124, 58, 237, 0.3);
7
+ --secondary-color: #06b6d4;
8
+ --secondary-glow: rgba(6, 182, 212, 0.3);
9
+ --accent-color: #ec4899;
10
+ --text-primary: #f3f4f6;
11
+ --text-secondary: #9ca3af;
12
+ --font-sans: 'Outfit', sans-serif;
13
+ --font-mono: 'JetBrains Mono', monospace;
14
+ }
15
+
16
+ * {
17
+ box-sizing: border-box;
18
+ margin: 0;
19
+ padding: 0;
20
+ }
21
+
22
+ body {
23
+ background-color: var(--bg-color);
24
+ color: var(--text-primary);
25
+ font-family: var(--font-sans);
26
+ min-height: 100vh;
27
+ display: flex;
28
+ justify-content: center;
29
+ align-items: center;
30
+ overflow-x: hidden;
31
+ background-image:
32
+ radial-gradient(circle at 10% 20%, rgba(124, 58, 237, 0.15) 0%, transparent 40%),
33
+ radial-gradient(circle at 90% 80%, rgba(6, 182, 212, 0.15) 0%, transparent 40%);
34
+ }
35
+
36
+ /* Scrollbar styles */
37
+ ::-webkit-scrollbar {
38
+ width: 8px;
39
+ }
40
+ ::-webkit-scrollbar-track {
41
+ background: var(--bg-color);
42
+ }
43
+ ::-webkit-scrollbar-thumb {
44
+ background: var(--panel-border);
45
+ border-radius: 4px;
46
+ }
47
+ ::-webkit-scrollbar-thumb:hover {
48
+ background: var(--primary-color);
49
+ }
@@ -0,0 +1,74 @@
1
+ .gea-btn {
2
+ font-family: var(--font-sans, 'Outfit', sans-serif);
3
+ font-weight: 600;
4
+ font-size: 0.95rem;
5
+ padding: 0.75rem 1.5rem;
6
+ border-radius: 12px;
7
+ border: 1px solid transparent;
8
+ cursor: pointer;
9
+ transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
10
+ display: inline-flex;
11
+ align-items: center;
12
+ justify-content: center;
13
+ gap: 0.5rem;
14
+ position: relative;
15
+ overflow: hidden;
16
+ color: #ffffff;
17
+ }
18
+
19
+ .gea-btn::after {
20
+ content: '';
21
+ position: absolute;
22
+ inset: 0;
23
+ background: rgba(255, 255, 255, 0.1);
24
+ opacity: 0;
25
+ transition: opacity 0.2s ease;
26
+ }
27
+
28
+ .gea-btn:hover::after {
29
+ opacity: 1;
30
+ }
31
+
32
+ .gea-btn:active {
33
+ transform: scale(0.97);
34
+ }
35
+
36
+ .gea-btn:disabled {
37
+ opacity: 0.5;
38
+ cursor: not-allowed;
39
+ transform: none;
40
+ }
41
+
42
+ /* Variants */
43
+ .gea-btn-primary {
44
+ background: linear-gradient(135deg, var(--primary-color, #7c3aed) 0%, #6d28d9 100%);
45
+ box-shadow: 0 4px 15px var(--primary-glow, rgba(124, 58, 237, 0.3));
46
+ }
47
+
48
+ .gea-btn-primary:hover {
49
+ box-shadow: 0 6px 20px var(--primary-glow, rgba(124, 58, 237, 0.5));
50
+ transform: translateY(-1px);
51
+ }
52
+
53
+ .gea-btn-secondary {
54
+ background: linear-gradient(135deg, var(--secondary-color, #06b6d4) 0%, #0891b2 100%);
55
+ box-shadow: 0 4px 15px var(--secondary-glow, rgba(6, 182, 212, 0.3));
56
+ }
57
+
58
+ .gea-btn-secondary:hover {
59
+ box-shadow: 0 6px 20px var(--secondary-glow, rgba(6, 182, 212, 0.5));
60
+ transform: translateY(-1px);
61
+ }
62
+
63
+ .gea-btn-glass {
64
+ background: rgba(255, 255, 255, 0.05);
65
+ border: 1px solid rgba(255, 255, 255, 0.1);
66
+ backdrop-filter: blur(10px);
67
+ -webkit-backdrop-filter: blur(10px);
68
+ }
69
+
70
+ .gea-btn-glass:hover {
71
+ background: rgba(255, 255, 255, 0.1);
72
+ border-color: rgba(255, 255, 255, 0.2);
73
+ box-shadow: 0 4px 20px rgba(0, 0, 0, 0.2);
74
+ }
@@ -0,0 +1,26 @@
1
+ import { Component } from '@geajs/core';
2
+ import './Button.css';
3
+
4
+ export interface ButtonProps {
5
+ variant?: 'primary' | 'secondary' | 'glass';
6
+ disabled?: boolean;
7
+ click?: (e: MouseEvent) => void;
8
+ }
9
+
10
+ export default class Button extends Component {
11
+ template() {
12
+ const variant = this.props?.variant || 'primary';
13
+ const disabled = this.props?.disabled || false;
14
+ const click = this.props?.click;
15
+
16
+ return (
17
+ <button
18
+ class={`gea-btn gea-btn-${variant}`}
19
+ disabled={disabled}
20
+ click={click}
21
+ >
22
+ {this.props?.children}
23
+ </button>
24
+ );
25
+ }
26
+ }
@@ -0,0 +1,44 @@
1
+ .gea-card {
2
+ background: rgba(255, 255, 255, 0.03);
3
+ border: 1px solid rgba(255, 255, 255, 0.08);
4
+ border-radius: 24px;
5
+ padding: 2rem;
6
+ backdrop-filter: blur(16px);
7
+ -webkit-backdrop-filter: blur(16px);
8
+ box-shadow: 0 8px 32px 0 rgba(0, 0, 0, 0.3);
9
+ display: flex;
10
+ flex-direction: column;
11
+ gap: 1.5rem;
12
+ transition: border-color 0.3s ease, box-shadow 0.3s ease;
13
+ }
14
+
15
+ .gea-card:hover {
16
+ border-color: rgba(124, 58, 237, 0.2);
17
+ box-shadow: 0 8px 32px 0 rgba(124, 58, 237, 0.08);
18
+ }
19
+
20
+ .gea-card-header {
21
+ border-bottom: 1px solid rgba(255, 255, 255, 0.05);
22
+ padding-bottom: 1rem;
23
+ }
24
+
25
+ .gea-card-title {
26
+ font-size: 1.5rem;
27
+ font-weight: 800;
28
+ background: linear-gradient(135deg, #ffffff 0%, #a78bfa 100%);
29
+ -webkit-background-clip: text;
30
+ -webkit-text-fill-color: transparent;
31
+ }
32
+
33
+ .gea-card-body {
34
+ color: var(--text-secondary, #9ca3af);
35
+ line-height: 1.6;
36
+ }
37
+
38
+ .gea-card-footer {
39
+ border-top: 1px solid rgba(255, 255, 255, 0.05);
40
+ padding-top: 1rem;
41
+ display: flex;
42
+ justify-content: flex-end;
43
+ gap: 1rem;
44
+ }
@@ -0,0 +1,32 @@
1
+ import { Component } from '@geajs/core';
2
+ import './Card.css';
3
+
4
+ export interface CardProps {
5
+ title?: string;
6
+ footer?: any;
7
+ }
8
+
9
+ export default class Card extends Component {
10
+ template() {
11
+ const title = this.props?.title;
12
+ const footer = this.props?.footer;
13
+
14
+ return (
15
+ <div class="gea-card">
16
+ {title && (
17
+ <div class="gea-card-header">
18
+ <h3 class="gea-card-title">{title}</h3>
19
+ </div>
20
+ )}
21
+ <div class="gea-card-body">
22
+ {this.props?.children}
23
+ </div>
24
+ {footer && (
25
+ <div class="gea-card-footer">
26
+ {footer}
27
+ </div>
28
+ )}
29
+ </div>
30
+ );
31
+ }
32
+ }
@@ -0,0 +1,3 @@
1
+ export { default as Button } from './components/Button';
2
+ export { default as Card } from './components/Card';
3
+ export { default as counterStore } from './stores/counter';
@@ -0,0 +1,21 @@
1
+ import { Store } from '@geajs/core';
2
+
3
+ class CounterStore extends Store {
4
+ count = 0;
5
+
6
+ increment() {
7
+ this.count++;
8
+ }
9
+
10
+ decrement() {
11
+ if (this.count > 0) {
12
+ this.count--;
13
+ }
14
+ }
15
+
16
+ reset() {
17
+ this.count = 0;
18
+ }
19
+ }
20
+
21
+ export default new CounterStore();
@@ -0,0 +1,10 @@
1
+ {
2
+ "extends": "./tsconfig.json",
3
+ "compilerOptions": {
4
+ "noEmit": false,
5
+ "declaration": true,
6
+ "emitDeclarationOnly": true,
7
+ "outDir": "./dist"
8
+ },
9
+ "include": ["src"]
10
+ }
@@ -0,0 +1,21 @@
1
+ {
2
+ "compilerOptions": {
3
+ "target": "ESNext",
4
+ "useDefineForClassFields": true,
5
+ "module": "ESNext",
6
+ "lib": ["ESNext", "DOM", "DOM.Iterable"],
7
+ "moduleResolution": "bundler",
8
+ "allowImportingTsExtensions": true,
9
+ "resolveJsonModule": true,
10
+ "isolatedModules": true,
11
+ "noEmit": true,
12
+ "jsx": "react-jsx",
13
+ "jsxImportSource": "@geajs/core",
14
+ "strict": true,
15
+ "noUnusedLocals": true,
16
+ "noUnusedParameters": true,
17
+ "noImplicitReturns": true,
18
+ "skipLibCheck": true
19
+ },
20
+ "include": ["src", "playground"]
21
+ }
@@ -0,0 +1,23 @@
1
+ import { defineConfig } from 'vite';
2
+ import { geaPlugin } from '@geajs/vite-plugin';
3
+ import { resolve } from 'path';
4
+
5
+ export default defineConfig({
6
+ plugins: [geaPlugin()],
7
+ build: {
8
+ lib: {
9
+ entry: resolve(__dirname, 'src/index.ts'),
10
+ name: '<% libraryName %>',
11
+ fileName: 'index',
12
+ formats: ['es']
13
+ },
14
+ rollupOptions: {
15
+ external: ['@geajs/core'],
16
+ output: {
17
+ globals: {
18
+ '@geajs/core': 'Gea'
19
+ }
20
+ }
21
+ }
22
+ }
23
+ });