@linktr.ee/linkapp 0.0.21 → 0.0.23

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 (115) hide show
  1. package/dev-server/README.md +5 -5
  2. package/dev-server/components/SettingsPreview.tsx +330 -0
  3. package/dev-server/components/ui/dialog.tsx +6 -3
  4. package/dev-server/env.d.ts +8 -0
  5. package/dev-server/featured/main.tsx +48 -43
  6. package/dev-server/featured.html +21 -35
  7. package/dev-server/index.html +8 -1
  8. package/dev-server/lib/utils.ts +6 -0
  9. package/dev-server/package-lock.json +245 -287
  10. package/dev-server/package.json +7 -4
  11. package/dev-server/postcss/tailwind-source-fallback.js +94 -0
  12. package/dev-server/postcss.config.mjs +30 -0
  13. package/dev-server/preview/Preview.tsx +182 -381
  14. package/dev-server/preview/preview.css +22 -34
  15. package/dev-server/public/apple-touch-icon.png +0 -0
  16. package/dev-server/public/favicon-96x96.png +0 -0
  17. package/dev-server/public/favicon.ico +0 -0
  18. package/dev-server/public/favicon.svg +6 -0
  19. package/dev-server/public/site.webmanifest +21 -0
  20. package/dev-server/public/web-app-manifest-192x192.png +0 -0
  21. package/dev-server/public/web-app-manifest-512x512.png +0 -0
  22. package/dev-server/rsbuild.config.ts +45 -0
  23. package/dev-server/shared/theme-presets.ts +315 -0
  24. package/dev-server/shared/theme-utils.ts +38 -0
  25. package/dev-server/sheet/main.tsx +44 -0
  26. package/dev-server/sheet.html +56 -0
  27. package/dist/commands/add.d.ts.map +1 -1
  28. package/dist/commands/add.js +20 -12
  29. package/dist/commands/add.js.map +1 -1
  30. package/dist/commands/build.d.ts.map +1 -1
  31. package/dist/commands/build.js +55 -36
  32. package/dist/commands/build.js.map +1 -1
  33. package/dist/commands/deploy.d.ts.map +1 -1
  34. package/dist/commands/deploy.js +74 -59
  35. package/dist/commands/deploy.js.map +1 -1
  36. package/dist/commands/dev.d.ts.map +1 -1
  37. package/dist/commands/dev.js +564 -43
  38. package/dist/commands/dev.js.map +1 -1
  39. package/dist/commands/login.d.ts.map +1 -1
  40. package/dist/commands/login.js +19 -9
  41. package/dist/commands/login.js.map +1 -1
  42. package/dist/commands/logout.d.ts.map +1 -1
  43. package/dist/commands/logout.js +9 -4
  44. package/dist/commands/logout.js.map +1 -1
  45. package/dist/commands/test-url-match-rules.d.ts.map +1 -1
  46. package/dist/commands/test-url-match-rules.js +24 -13
  47. package/dist/commands/test-url-match-rules.js.map +1 -1
  48. package/dist/components/index.d.ts +0 -1
  49. package/dist/components/index.d.ts.map +1 -1
  50. package/dist/components/index.js +2 -1
  51. package/dist/components/index.js.map +1 -1
  52. package/dist/lib/auth/device-flow.d.ts +1 -6
  53. package/dist/lib/auth/device-flow.d.ts.map +1 -1
  54. package/dist/lib/auth/device-flow.js +3 -9
  55. package/dist/lib/auth/device-flow.js.map +1 -1
  56. package/dist/lib/auth/token-storage.d.ts +0 -5
  57. package/dist/lib/auth/token-storage.d.ts.map +1 -1
  58. package/dist/lib/auth/token-storage.js +16 -14
  59. package/dist/lib/auth/token-storage.js.map +1 -1
  60. package/dist/lib/build/detect-layouts.d.ts +1 -1
  61. package/dist/lib/build/detect-layouts.d.ts.map +1 -1
  62. package/dist/lib/build/detect-layouts.js +8 -7
  63. package/dist/lib/build/detect-layouts.js.map +1 -1
  64. package/dist/lib/deploy/generate-manifest-files.js +1 -1
  65. package/dist/lib/deploy/generate-manifest-files.js.map +1 -1
  66. package/dist/lib/deploy/pack-project.js +2 -2
  67. package/dist/lib/deploy/pack-project.js.map +1 -1
  68. package/dist/lib/deploy/test-url-match-rules.d.ts +2 -1
  69. package/dist/lib/deploy/test-url-match-rules.d.ts.map +1 -1
  70. package/dist/lib/deploy/test-url-match-rules.js +1 -1
  71. package/dist/lib/deploy/test-url-match-rules.js.map +1 -1
  72. package/dist/lib/deploy/upload.d.ts.map +1 -1
  73. package/dist/lib/deploy/upload.js +7 -3
  74. package/dist/lib/deploy/upload.js.map +1 -1
  75. package/dist/lib/deploy/validation.d.ts.map +1 -1
  76. package/dist/lib/deploy/validation.js +8 -5
  77. package/dist/lib/deploy/validation.js.map +1 -1
  78. package/dist/lib/rsbuild/config-factory.d.ts +24 -0
  79. package/dist/lib/rsbuild/config-factory.d.ts.map +1 -0
  80. package/dist/lib/rsbuild/config-factory.js +135 -0
  81. package/dist/lib/rsbuild/config-factory.js.map +1 -0
  82. package/dist/lib/rsbuild/plugins/asset-versioning.d.ts +11 -0
  83. package/dist/lib/rsbuild/plugins/asset-versioning.d.ts.map +1 -0
  84. package/dist/lib/rsbuild/plugins/asset-versioning.js +62 -0
  85. package/dist/lib/rsbuild/plugins/asset-versioning.js.map +1 -0
  86. package/dist/lib/rsbuild/plugins/copy-public.d.ts +11 -0
  87. package/dist/lib/rsbuild/plugins/copy-public.d.ts.map +1 -0
  88. package/dist/lib/rsbuild/plugins/copy-public.js +32 -0
  89. package/dist/lib/rsbuild/plugins/copy-public.js.map +1 -0
  90. package/dist/lib/rsbuild/postcss/tailwind-source-fallback.d.ts +12 -0
  91. package/dist/lib/rsbuild/postcss/tailwind-source-fallback.d.ts.map +1 -0
  92. package/dist/lib/rsbuild/postcss/tailwind-source-fallback.js +60 -0
  93. package/dist/lib/rsbuild/postcss/tailwind-source-fallback.js.map +1 -0
  94. package/dist/lib/utils/setup-runtime.d.ts.map +1 -1
  95. package/dist/lib/utils/setup-runtime.js +78 -17
  96. package/dist/lib/utils/setup-runtime.js.map +1 -1
  97. package/dist/lib/vite/config-factory.d.ts.map +1 -1
  98. package/dist/lib/vite/config-factory.js +8 -3
  99. package/dist/lib/vite/config-factory.js.map +1 -1
  100. package/dist/lib/vite/plugins/copy-public.d.ts +12 -0
  101. package/dist/lib/vite/plugins/copy-public.d.ts.map +1 -0
  102. package/dist/lib/vite/plugins/copy-public.js +31 -0
  103. package/dist/lib/vite/plugins/copy-public.js.map +1 -0
  104. package/dist/schema/config.schema.d.ts +121 -32
  105. package/dist/schema/config.schema.d.ts.map +1 -1
  106. package/dist/schema/config.schema.js +28 -17
  107. package/dist/schema/config.schema.js.map +1 -1
  108. package/dist/types.d.ts +6 -57
  109. package/dist/types.d.ts.map +1 -1
  110. package/dist/types.js.map +1 -1
  111. package/package.json +7 -4
  112. package/runtime/index.html +19 -36
  113. package/dev-server/classic/main.tsx +0 -62
  114. package/dev-server/classic.html +0 -70
  115. package/dev-server/vite.config.ts +0 -29
package/dist/types.d.ts CHANGED
@@ -2,54 +2,13 @@
2
2
  * Type definitions for LinkApp
3
3
  * Note: Uses snake_case for API-facing types to match API requirements
4
4
  */
5
+ export type { PreviewProps, LinkAppTheme, Viewport, Position, LinkAppConfig, } from './schema/config.schema.js';
5
6
  export type Environment = "production" | "qa";
6
- /**
7
- * Theme configuration passed to link app iframes via postMessage
8
- */
9
- export interface LinkAppTheme {
10
- cssVariables: Record<string, string>;
11
- /** @deprecated Use cssVariables['--button-style-text'] instead */
12
- textColor: string;
13
- /** @deprecated Use cssVariables['--button-style-background'] instead */
14
- backgroundColor: string;
15
- /** @deprecated Use cssVariables['--button-style-inner-radius'] instead */
16
- borderRadius: string;
17
- /** @deprecated Use cssVariables['--button-style-border-color'] instead */
18
- borderColor: string;
19
- /** @deprecated Use cssVariables['--button-style-background-hover'] instead */
20
- backgroundHover: string;
21
- /** @deprecated Use cssVariables['--button-style-contrast-color'] instead */
22
- contrastColor: string;
23
- /** @deprecated Use cssVariables instead */
24
- textHoverColor: string;
25
- }
26
- /**
27
- * Viewport dimensions
28
- */
29
- export interface Viewport {
30
- width: number;
31
- height: number;
32
- }
33
- /**
34
- * Geographic position
35
- */
36
- export interface Position {
37
- latitude: number;
38
- longitude: number;
39
- }
40
- /**
41
- * Core Linktree context available to all LinkApps
42
- */
43
- export interface LinktreeContext {
44
- linkUrl?: string;
45
- layout?: "stack" | "grid" | "carousel" | "featured";
46
- theme?: LinkAppTheme;
47
- }
48
7
  /**
49
8
  * Props available to layout components
50
9
  * Extend with custom settings from your config
51
10
  */
52
- export type AppProps<TSettings = Record<string, unknown>> = LinktreeContext & TSettings;
11
+ export type AppProps<TSettings = Record<string, unknown>> = import('./schema/config.schema.js').PreviewProps & TSettings;
53
12
  export interface LinkAppManifest {
54
13
  name: string;
55
14
  tagline: string;
@@ -185,22 +144,12 @@ export interface SettingsElement {
185
144
  }
186
145
  export interface UrlMatchRules {
187
146
  hostnames: string[];
188
- patterns: Array<{
147
+ patterns?: Array<{
148
+ pathname: string;
149
+ }>;
150
+ notPatterns?: Array<{
189
151
  pathname: string;
190
152
  }>;
191
- }
192
- /**
193
- * Preview props for development mode
194
- */
195
- export interface PreviewProps extends LinktreeContext {
196
- [key: string]: unknown;
197
- }
198
- export interface LinkAppConfig {
199
- id: string;
200
- manifest: LinkAppManifest;
201
- settings: LinkAppSettings;
202
- url_match_rules?: UrlMatchRules;
203
- preview_props?: PreviewProps;
204
153
  }
205
154
  export interface AppConfig {
206
155
  auth: {
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
package/dist/types.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAuFH,MAAM,CAAN,IAAY,YAKX;AALD,WAAY,YAAY;IACtB,6BAAa,CAAA;IACb,qCAAqB,CAAA;IACrB,iDAAiC,CAAA;IACjC,qCAAqB,CAAA;AACvB,CAAC,EALW,YAAY,KAAZ,YAAY,QAKvB;AAED,MAAM,CAAN,IAAY,oBAgBX;AAhBD,WAAY,oBAAoB;IAC9B,yCAAiB,CAAA;IACjB,qCAAa,CAAA;IACb,6CAAqB,CAAA;IACrB,yCAAiB,CAAA;IACjB,uCAAe,CAAA;IACf,6CAAqB,CAAA;IACrB,yCAAiB,CAAA;IACjB,6CAAqB,CAAA;IACrB,yCAAiB,CAAA;IACjB,qDAA6B,CAAA;IAC7B,qCAAa,CAAA;IACb,mCAAW,CAAA;IACX,mDAA2B,CAAA;IAC3B,mDAA2B,CAAA;IAC3B,uCAAe,CAAA;AACjB,CAAC,EAhBW,oBAAoB,KAApB,oBAAoB,QAgB/B;AAED,MAAM,CAAN,IAAY,qBAEX;AAFD,WAAY,qBAAqB;IAC/B,8EAAqD,CAAA;AACvD,CAAC,EAFW,qBAAqB,KAArB,qBAAqB,QAEhC;AAED,MAAM,CAAN,IAAY,gBAEX;AAFD,WAAY,gBAAgB;IAC1B,mCAAe,CAAA;AACjB,CAAC,EAFW,gBAAgB,KAAhB,gBAAgB,QAE3B;AAED,MAAM,CAAN,IAAY,UAEX;AAFD,WAAY,UAAU;IACpB,yCAA6B,CAAA;AAC/B,CAAC,EAFW,UAAU,KAAV,UAAU,QAErB"}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;;GAGG;AA4CH,MAAM,CAAN,IAAY,YAKX;AALD,WAAY,YAAY;IACtB,6BAAa,CAAA;IACb,qCAAqB,CAAA;IACrB,iDAAiC,CAAA;IACjC,qCAAqB,CAAA;AACvB,CAAC,EALW,YAAY,KAAZ,YAAY,QAKvB;AAED,MAAM,CAAN,IAAY,oBAgBX;AAhBD,WAAY,oBAAoB;IAC9B,yCAAiB,CAAA;IACjB,qCAAa,CAAA;IACb,6CAAqB,CAAA;IACrB,yCAAiB,CAAA;IACjB,uCAAe,CAAA;IACf,6CAAqB,CAAA;IACrB,yCAAiB,CAAA;IACjB,6CAAqB,CAAA;IACrB,yCAAiB,CAAA;IACjB,qDAA6B,CAAA;IAC7B,qCAAa,CAAA;IACb,mCAAW,CAAA;IACX,mDAA2B,CAAA;IAC3B,mDAA2B,CAAA;IAC3B,uCAAe,CAAA;AACjB,CAAC,EAhBW,oBAAoB,KAApB,oBAAoB,QAgB/B;AAED,MAAM,CAAN,IAAY,qBAEX;AAFD,WAAY,qBAAqB;IAC/B,8EAAqD,CAAA;AACvD,CAAC,EAFW,qBAAqB,KAArB,qBAAqB,QAEhC;AAED,MAAM,CAAN,IAAY,gBAEX;AAFD,WAAY,gBAAgB;IAC1B,mCAAe,CAAA;AACjB,CAAC,EAFW,gBAAgB,KAAhB,gBAAgB,QAE3B;AAED,MAAM,CAAN,IAAY,UAEX;AAFD,WAAY,UAAU;IACpB,yCAA6B,CAAA;AAC/B,CAAC,EAFW,UAAU,KAAV,UAAU,QAErB"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@linktr.ee/linkapp",
3
- "version": "0.0.21",
3
+ "version": "0.0.23",
4
4
  "description": "Development, build, and deployment tooling for LinkApps",
5
5
  "type": "module",
6
6
  "bin": {
@@ -46,14 +46,18 @@
46
46
  "@ngrok/ngrok": "^1.4.1",
47
47
  "@radix-ui/react-dialog": "^1.1.15",
48
48
  "@radix-ui/react-tabs": "^1.1.7",
49
- "@tailwindcss/vite": "^4.1.14",
50
- "@vitejs/plugin-react": "^4.3.4",
49
+ "@rsbuild/core": "^1.1.14",
50
+ "@rsbuild/plugin-react": "^1.1.0",
51
+ "@tailwindcss/postcss": "^4.1.14",
52
+ "postcss": "^8.5.6",
51
53
  "archiver": "^7.0.1",
52
54
  "axios": "^1.7.9",
53
55
  "cac": "^6.7.14",
56
+ "chokidar": "^3.6.0",
54
57
  "class-variance-authority": "^0.7.1",
55
58
  "clsx": "^2.1.1",
56
59
  "connect": "^3.7.0",
60
+ "detect-port": "^2.1.0",
57
61
  "form-data": "^4.0.1",
58
62
  "fs-extra": "^11.2.0",
59
63
  "jiti": "^2.6.1",
@@ -66,7 +70,6 @@
66
70
  "react": "^19.1.0",
67
71
  "react-dom": "^19.1.0",
68
72
  "tailwind-merge": "^3.3.1",
69
- "vite": "^6.0.3",
70
73
  "zod": "^4.1.12"
71
74
  },
72
75
  "devDependencies": {
@@ -6,7 +6,7 @@
6
6
  <title>LinkApp</title>
7
7
 
8
8
  <!-- iframe-resizer: Required for LinkApps to communicate with Linktree parent frame -->
9
- <script crossorigin src="https://unpkg.com/iframe-resizer@4.3.2/js/iframeResizer.contentWindow.min.js"></script>
9
+ <script crossorigin src="https://unpkg.com/iframe-resizer@4.3.2/js/iframeResizer.contentWindow.js"></script>
10
10
 
11
11
  <!-- Linktree theme variables will be injected here -->
12
12
  <style id="linktree-theme"></style>
@@ -24,46 +24,29 @@
24
24
  }
25
25
 
26
26
  /**
27
- * Listen for theme updates from parent window
28
- * Applies CSS variables to the document root
27
+ * Apply theme CSS variables to :root
28
+ * Called once on mount when extension-data message is received
29
+ * @param {Record<string, string>} variables - CSS variables to apply
29
30
  */
30
- window.addEventListener('message', function(event) {
31
- // Only process messages with the correct structure
32
- if (
33
- event.data &&
34
- typeof event.data === 'object' &&
35
- event.data.type === 'THEME_UPDATE'
36
- ) {
37
- const themeUpdate = event.data
38
-
39
- // Get the style element where theme variables are injected
40
- const themeStyle = document.getElementById('linktree-theme')
31
+ function applyTheme(variables) {
32
+ if (!variables || typeof variables !== 'object') {
33
+ return
34
+ }
41
35
 
42
- if (!themeStyle) {
43
- console.warn('linktree-theme style element not found')
44
- return
45
- }
36
+ // Get the style element where theme variables are injected
37
+ const themeStyle = document.getElementById('linktree-theme')
46
38
 
47
- // Inject CSS variables into :root
48
- themeStyle.textContent = ':root { ' + renderCssVariables(themeUpdate.payload.variables) + ' }'
39
+ if (!themeStyle) {
40
+ console.warn('linktree-theme style element not found')
41
+ return
42
+ }
49
43
 
50
- // Remove any existing theme classes
51
- const classesToRemove = []
52
- document.documentElement.classList.forEach((className) => {
53
- if (className.startsWith('linktree-theme-')) {
54
- classesToRemove.push(className)
55
- }
56
- })
57
- classesToRemove.forEach((className) => {
58
- document.documentElement.classList.remove(className)
59
- })
44
+ // Inject CSS variables into :root
45
+ themeStyle.textContent = ':root { ' + renderCssVariables(variables) + ' }'
46
+ }
60
47
 
61
- // Add theme class for additional styling hooks
62
- if (themeUpdate.payload.name && themeUpdate.payload.name !== 'legacy') {
63
- document.documentElement.classList.add('linktree-theme-' + themeUpdate.payload.name)
64
- }
65
- }
66
- }, false)
48
+ // Export applyTheme to be used by main.tsx when receiving extension-data
49
+ window.__linkapp_applyTheme = applyTheme
67
50
  </script>
68
51
  </head>
69
52
  <body>
@@ -1,62 +0,0 @@
1
- import Classic from "@/app/classic";
2
- import { StrictMode } from "react";
3
- import { createRoot } from "react-dom/client";
4
- import "@/app/globals.css";
5
-
6
- // Conditionally import Layout if it exists
7
- const layoutModules = import.meta.glob("@/app/layout.{ts,tsx}", {
8
- eager: true,
9
- });
10
- const Layout = Object.values(layoutModules)[0]?.default as
11
- | React.ComponentType<{ children: React.ReactNode; theme?: any }>
12
- | undefined;
13
-
14
- // Preview props injected by dev server via Vite define
15
- declare const __PREVIEW_PROPS__: Record<string, unknown>;
16
-
17
- const previewProps = __PREVIEW_PROPS__ || {
18
- linkUrl: "https://example.com/demo",
19
- theme: {
20
- cssVariables: {
21
- "--button-style-text": "#000000",
22
- "--button-style-background": "#ffffff",
23
- "--button-style-inner-radius": "12px",
24
- "--button-style-border-color": "#e5e7eb",
25
- "--button-style-background-hover": "#f3f4f6",
26
- "--button-style-contrast-color": "#ffffff",
27
- "--profileBackground": "#ffffff",
28
- },
29
- // Legacy properties (deprecated)
30
- textColor: "#000000",
31
- backgroundColor: "#ffffff",
32
- borderRadius: "12px",
33
- borderColor: "#e5e7eb",
34
- backgroundHover: "#f3f4f6",
35
- contrastColor: "#ffffff",
36
- textHoverColor: "#111827",
37
- },
38
- locale: "en-US",
39
- currency: "USD",
40
- username: "demo-user",
41
- viewport: {
42
- width: 680,
43
- height: 800,
44
- },
45
- };
46
-
47
- const rootElement = document.getElementById("root");
48
- if (!rootElement) {
49
- throw new Error("Root element not found");
50
- }
51
-
52
- createRoot(rootElement).render(
53
- <StrictMode>
54
- {Layout ? (
55
- <Layout theme={previewProps.theme}>
56
- <Classic {...previewProps} />
57
- </Layout>
58
- ) : (
59
- <Classic {...previewProps} />
60
- )}
61
- </StrictMode>,
62
- );
@@ -1,70 +0,0 @@
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>Classic - LinkApp</title>
7
-
8
- <!-- Linktree theme variables will be injected here -->
9
- <style id="linktree-theme"></style>
10
-
11
- <script>
12
- /**
13
- * Helper function to convert CSS variables object to CSS string
14
- * @param {Record<string, string>} vars - Object with CSS variable names as keys
15
- * @returns {string} CSS string like "--var1: value1; --var2: value2;"
16
- */
17
- function renderCssVariables(vars) {
18
- return Object.entries(vars)
19
- .map((entry) => entry.join(': '))
20
- .join('; ') + ';'
21
- }
22
-
23
- /**
24
- * Listen for theme updates from parent window
25
- * Applies CSS variables to the document root
26
- */
27
- window.addEventListener('message', function(event) {
28
- // Only process messages with the correct structure
29
- if (
30
- event.data &&
31
- typeof event.data === 'object' &&
32
- event.data.type === 'THEME_UPDATE'
33
- ) {
34
- const themeUpdate = event.data
35
-
36
- // Get the style element where theme variables are injected
37
- const themeStyle = document.getElementById('linktree-theme')
38
-
39
- if (!themeStyle) {
40
- console.warn('linktree-theme style element not found')
41
- return
42
- }
43
-
44
- // Inject CSS variables into :root
45
- themeStyle.textContent = ':root { ' + renderCssVariables(themeUpdate.payload.variables) + ' }'
46
-
47
- // Remove any existing theme classes
48
- const classesToRemove = []
49
- document.documentElement.classList.forEach((className) => {
50
- if (className.startsWith('linktree-theme-')) {
51
- classesToRemove.push(className)
52
- }
53
- })
54
- classesToRemove.forEach((className) => {
55
- document.documentElement.classList.remove(className)
56
- })
57
-
58
- // Add theme class for additional styling hooks
59
- if (themeUpdate.payload.name && themeUpdate.payload.name !== 'legacy') {
60
- document.documentElement.classList.add('linktree-theme-' + themeUpdate.payload.name)
61
- }
62
- }
63
- }, false)
64
- </script>
65
- </head>
66
- <body>
67
- <div id="root"></div>
68
- <script type="module" src="/classic/main.tsx"></script>
69
- </body>
70
- </html>
@@ -1,29 +0,0 @@
1
- import { defineConfig } from 'vite'
2
- import react from '@vitejs/plugin-react'
3
- import tailwindcss from '@tailwindcss/vite'
4
- import { resolve } from 'path'
5
-
6
- export default defineConfig({
7
- plugins: [react(), tailwindcss()],
8
- root: resolve(__dirname),
9
- server: {
10
- port: 3000,
11
- strictPort: true,
12
- },
13
- resolve: {
14
- alias: {
15
- '@': resolve(__dirname, '..'),
16
- '@/components': resolve(__dirname, 'components'),
17
- '@/lib': resolve(__dirname, 'lib'),
18
- },
19
- },
20
- build: {
21
- rollupOptions: {
22
- input: {
23
- main: resolve(__dirname, 'index.html'),
24
- classic: resolve(__dirname, 'classic.html'),
25
- featured: resolve(__dirname, 'featured.html'),
26
- },
27
- },
28
- },
29
- })