create-plasmic-app 0.0.143 → 0.0.145

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 (90) hide show
  1. package/cpa-out/gatsby-codegen-js/package.json +2 -2
  2. package/cpa-out/gatsby-codegen-js/plasmic.json +2 -2
  3. package/cpa-out/gatsby-codegen-js/src/components/plasmic/create_plasmic_app/PlasmicButton.jsx +1 -0
  4. package/cpa-out/gatsby-codegen-js/src/components/plasmic/create_plasmic_app/PlasmicDynamicPage.jsx +1 -0
  5. package/cpa-out/gatsby-codegen-js/src/components/plasmic/create_plasmic_app/PlasmicHomepage.jsx +7 -2
  6. package/cpa-out/gatsby-codegen-ts/package.json +2 -2
  7. package/cpa-out/gatsby-codegen-ts/plasmic.json +2 -2
  8. package/cpa-out/gatsby-codegen-ts/src/components/plasmic/create_plasmic_app/PlasmicButton.tsx +1 -0
  9. package/cpa-out/gatsby-codegen-ts/src/components/plasmic/create_plasmic_app/PlasmicDynamicPage.tsx +1 -0
  10. package/cpa-out/gatsby-codegen-ts/src/components/plasmic/create_plasmic_app/PlasmicHomepage.tsx +7 -2
  11. package/cpa-out/gatsby-loader-js/gatsby-config.js +25 -21
  12. package/cpa-out/gatsby-loader-js/gatsby-node.js +58 -0
  13. package/cpa-out/gatsby-loader-js/package.json +1 -1
  14. package/cpa-out/gatsby-loader-js/src/plasmic-init.js +4 -4
  15. package/cpa-out/gatsby-loader-js/src/templates/defaultPlasmicPage.jsx +2 -1
  16. package/cpa-out/gatsby-loader-ts/gatsby-config.ts +20 -22
  17. package/cpa-out/gatsby-loader-ts/gatsby-node.ts +61 -0
  18. package/cpa-out/gatsby-loader-ts/package.json +1 -1
  19. package/cpa-out/gatsby-loader-ts/src/templates/defaultPlasmicPage.tsx +6 -2
  20. package/cpa-out/nextjs-app-codegen-js/app/dynamic/[slug]/page.jsx +11 -3
  21. package/cpa-out/nextjs-app-codegen-js/app/layout.jsx +3 -4
  22. package/cpa-out/nextjs-app-codegen-js/app/page.jsx +4 -3
  23. package/cpa-out/nextjs-app-codegen-js/components/plasmic/create_plasmic_app/PlasmicButton.jsx +1 -0
  24. package/cpa-out/nextjs-app-codegen-js/components/plasmic/create_plasmic_app/PlasmicDynamicPage.jsx +1 -0
  25. package/cpa-out/nextjs-app-codegen-js/components/plasmic/create_plasmic_app/PlasmicDynamicPageServer.jsx +1 -1
  26. package/cpa-out/nextjs-app-codegen-js/components/plasmic/create_plasmic_app/PlasmicHomepage.jsx +7 -2
  27. package/cpa-out/nextjs-app-codegen-js/components/plasmic/create_plasmic_app/PlasmicHomepageServer.jsx +1 -1
  28. package/cpa-out/nextjs-app-codegen-js/package.json +2 -2
  29. package/cpa-out/nextjs-app-codegen-js/plasmic-init-client.jsx +0 -1
  30. package/cpa-out/nextjs-app-codegen-js/plasmic.json +2 -2
  31. package/cpa-out/nextjs-app-codegen-ts/app/dynamic/[slug]/page.tsx +12 -4
  32. package/cpa-out/nextjs-app-codegen-ts/app/layout.tsx +3 -4
  33. package/cpa-out/nextjs-app-codegen-ts/app/page.tsx +4 -4
  34. package/cpa-out/nextjs-app-codegen-ts/components/plasmic/create_plasmic_app/PlasmicButton.tsx +1 -0
  35. package/cpa-out/nextjs-app-codegen-ts/components/plasmic/create_plasmic_app/PlasmicDynamicPage.tsx +1 -0
  36. package/cpa-out/nextjs-app-codegen-ts/components/plasmic/create_plasmic_app/PlasmicDynamicPageServer.tsx +1 -1
  37. package/cpa-out/nextjs-app-codegen-ts/components/plasmic/create_plasmic_app/PlasmicHomepage.tsx +7 -2
  38. package/cpa-out/nextjs-app-codegen-ts/components/plasmic/create_plasmic_app/PlasmicHomepageServer.tsx +1 -1
  39. package/cpa-out/nextjs-app-codegen-ts/package.json +2 -2
  40. package/cpa-out/nextjs-app-codegen-ts/plasmic-init-client.tsx +1 -1
  41. package/cpa-out/nextjs-app-codegen-ts/plasmic.json +2 -2
  42. package/cpa-out/nextjs-app-loader-js/package.json +1 -1
  43. package/cpa-out/nextjs-app-loader-js/plasmic-init.js +5 -0
  44. package/cpa-out/nextjs-app-loader-ts/package.json +1 -1
  45. package/cpa-out/nextjs-app-loader-ts/plasmic-init.ts +5 -0
  46. package/cpa-out/nextjs-pages-codegen-js/components/plasmic/create_plasmic_app/PlasmicButton.jsx +1 -0
  47. package/cpa-out/nextjs-pages-codegen-js/components/plasmic/create_plasmic_app/PlasmicDynamicPage.jsx +1 -0
  48. package/cpa-out/nextjs-pages-codegen-js/components/plasmic/create_plasmic_app/PlasmicHomepage.jsx +7 -2
  49. package/cpa-out/nextjs-pages-codegen-js/package.json +2 -2
  50. package/cpa-out/nextjs-pages-codegen-js/plasmic.json +2 -2
  51. package/cpa-out/nextjs-pages-codegen-ts/components/plasmic/create_plasmic_app/PlasmicButton.tsx +1 -0
  52. package/cpa-out/nextjs-pages-codegen-ts/components/plasmic/create_plasmic_app/PlasmicDynamicPage.tsx +1 -0
  53. package/cpa-out/nextjs-pages-codegen-ts/components/plasmic/create_plasmic_app/PlasmicHomepage.tsx +7 -2
  54. package/cpa-out/nextjs-pages-codegen-ts/package.json +2 -2
  55. package/cpa-out/nextjs-pages-codegen-ts/plasmic.json +2 -2
  56. package/cpa-out/nextjs-pages-loader-js/package.json +1 -1
  57. package/cpa-out/nextjs-pages-loader-ts/package.json +1 -1
  58. package/cpa-out/react-codegen-js/package.json +2 -2
  59. package/cpa-out/react-codegen-js/plasmic.json +2 -2
  60. package/cpa-out/react-codegen-ts/package.json +2 -2
  61. package/cpa-out/react-codegen-ts/plasmic.json +2 -2
  62. package/cpa-out/tanstack-codegen-ts/package.json +7 -8
  63. package/cpa-out/tanstack-codegen-ts/plasmic.json +2 -2
  64. package/cpa-out/tanstack-codegen-ts/src/components/plasmic/create_plasmic_app/PlasmicButton.tsx +1 -5
  65. package/cpa-out/tanstack-codegen-ts/src/components/plasmic/create_plasmic_app/PlasmicDynamicPage.tsx +1 -2
  66. package/cpa-out/tanstack-codegen-ts/src/components/plasmic/create_plasmic_app/PlasmicHomepage.tsx +7 -5
  67. package/cpa-out/tanstack-codegen-ts/src/components/plasmic/create_plasmic_app/PlasmicStyleTokensProvider.tsx +2 -0
  68. package/cpa-out/tanstack-codegen-ts/src/router.tsx +0 -1
  69. package/cpa-out/tanstack-codegen-ts/tsconfig.json +0 -1
  70. package/cpa-out/tanstack-codegen-ts/vite.config.ts +1 -2
  71. package/dist/gatsby/gatsby.js +4 -67
  72. package/dist/gatsby/template.d.ts +2 -1
  73. package/dist/gatsby/template.js +122 -25
  74. package/dist/nextjs/nextjs.js +2 -0
  75. package/dist/nextjs/templates/app-codegen/plasmic-init-client.js +1 -2
  76. package/dist/tanstack/tanstack.js +11 -1
  77. package/package.json +2 -2
  78. package/src/gatsby/gatsby.ts +16 -28
  79. package/src/gatsby/template.ts +139 -29
  80. package/src/nextjs/nextjs.ts +3 -0
  81. package/src/nextjs/templates/app-codegen/plasmic-init-client.ts +4 -2
  82. package/src/tanstack/tanstack.ts +11 -1
  83. package/cpa-out/nextjs-app-codegen-js/app/layout.js +0 -28
  84. package/cpa-out/tanstack-codegen-ts/src/components/Footer.tsx +0 -44
  85. package/cpa-out/tanstack-codegen-ts/src/components/Header.tsx +0 -78
  86. package/cpa-out/tanstack-codegen-ts/src/components/ThemeToggle.tsx +0 -81
  87. /package/cpa-out/gatsby-codegen-js/src/components/plasmic/create_plasmic_app/icons/{PlasmicIcon__Checksvg.jsx → PlasmicIcon__CheckSvg.jsx} +0 -0
  88. /package/cpa-out/gatsby-codegen-ts/src/components/plasmic/create_plasmic_app/icons/{PlasmicIcon__Checksvg.tsx → PlasmicIcon__CheckSvg.tsx} +0 -0
  89. /package/cpa-out/nextjs-pages-codegen-js/components/plasmic/create_plasmic_app/icons/{PlasmicIcon__Checksvg.jsx → PlasmicIcon__CheckSvg.jsx} +0 -0
  90. /package/cpa-out/nextjs-pages-codegen-ts/components/plasmic/create_plasmic_app/icons/{PlasmicIcon__Checksvg.tsx → PlasmicIcon__CheckSvg.tsx} +0 -0
@@ -118,6 +118,9 @@ async function generateFilesAppDir(args: GenerateFilesArgs) {
118
118
  makeCatchallPage_app_loader(jsOrTs)
119
119
  );
120
120
  } else {
121
+ // Replace starter layout. Removes app/layout.js in JS projects before writing layout.jsx.
122
+ deleteGlob(path.join(projectPath, "app", "layout.*"));
123
+
121
124
  // ./app/layout.tsx
122
125
  await fs.writeFile(
123
126
  path.join(projectPath, "app", `layout.${jsOrTs}x`),
@@ -4,8 +4,10 @@ import { JsOrTs } from "../../../utils/types";
4
4
  export function makePlasmicInitClient_app_codegen(jsOrTs: JsOrTs): string {
5
5
  return `"use client";
6
6
 
7
- import * as React from "react";
8
- import { PlasmicRootProvider } from "@plasmicapp/react-web";
7
+ ${ifTs(
8
+ jsOrTs,
9
+ 'import type * as React from "react";\n'
10
+ )}import { PlasmicRootProvider } from "@plasmicapp/react-web";
9
11
  import Link from "next/link";
10
12
 
11
13
  /**
@@ -29,7 +29,17 @@ export const tanstackStrategy: CPAStrategy = {
29
29
  const parentDir = path.dirname(fullProjectPath);
30
30
  process.chdir(parentDir);
31
31
 
32
- const createCommand = `npx create-tsrouter-app@latest ${projectName} --template file-router --add-ons start`;
32
+ const createCommand = [
33
+ `npx create-tsrouter-app@latest ${projectName}`,
34
+ "--framework React",
35
+ "--router-only",
36
+ "--no-toolchain",
37
+ "--package-manager yarn",
38
+ "--git",
39
+ "--no-intent",
40
+ "--no-examples",
41
+ "--yes",
42
+ ].join(" ");
33
43
 
34
44
  await spawnOrFail(createCommand);
35
45
 
@@ -1,28 +0,0 @@
1
- import localFont from "next/font/local";
2
- import "./globals.css";
3
-
4
- const geistSans = localFont({
5
- src: "./fonts/GeistVF.woff",
6
- variable: "--font-geist-sans",
7
- weight: "100 900",
8
- });
9
- const geistMono = localFont({
10
- src: "./fonts/GeistMonoVF.woff",
11
- variable: "--font-geist-mono",
12
- weight: "100 900",
13
- });
14
-
15
- export const metadata = {
16
- title: "Create Next App",
17
- description: "Generated by create next app",
18
- };
19
-
20
- export default function RootLayout({ children }) {
21
- return (
22
- <html lang="en">
23
- <body className={`${geistSans.variable} ${geistMono.variable}`}>
24
- {children}
25
- </body>
26
- </html>
27
- );
28
- }
@@ -1,44 +0,0 @@
1
- export default function Footer() {
2
- const year = new Date().getFullYear()
3
-
4
- return (
5
- <footer className="mt-20 border-t border-[var(--line)] px-4 pb-14 pt-10 text-[var(--sea-ink-soft)]">
6
- <div className="page-wrap flex flex-col items-center justify-between gap-4 text-center sm:flex-row sm:text-left">
7
- <p className="m-0 text-sm">
8
- &copy; {year} Your name here. All rights reserved.
9
- </p>
10
- <p className="island-kicker m-0">Built with TanStack Start</p>
11
- </div>
12
- <div className="mt-4 flex justify-center gap-4">
13
- <a
14
- href="https://x.com/tan_stack"
15
- target="_blank"
16
- rel="noreferrer"
17
- className="rounded-xl p-2 text-[var(--sea-ink-soft)] transition hover:bg-[var(--link-bg-hover)] hover:text-[var(--sea-ink)]"
18
- >
19
- <span className="sr-only">Follow TanStack on X</span>
20
- <svg viewBox="0 0 16 16" aria-hidden="true" width="32" height="32">
21
- <path
22
- fill="currentColor"
23
- d="M12.6 1h2.2L10 6.48 15.64 15h-4.41L7.78 9.82 3.23 15H1l5.14-5.84L.72 1h4.52l3.12 4.73L12.6 1zm-.77 12.67h1.22L4.57 2.26H3.26l8.57 11.41z"
24
- />
25
- </svg>
26
- </a>
27
- <a
28
- href="https://github.com/TanStack"
29
- target="_blank"
30
- rel="noreferrer"
31
- className="rounded-xl p-2 text-[var(--sea-ink-soft)] transition hover:bg-[var(--link-bg-hover)] hover:text-[var(--sea-ink)]"
32
- >
33
- <span className="sr-only">Go to TanStack GitHub</span>
34
- <svg viewBox="0 0 16 16" aria-hidden="true" width="32" height="32">
35
- <path
36
- fill="currentColor"
37
- d="M8 0C3.58 0 0 3.58 0 8c0 3.54 2.29 6.53 5.47 7.59.4.07.55-.17.55-.38 0-.19-.01-.82-.01-1.49-2.01.37-2.53-.49-2.69-.94-.09-.23-.48-.94-.82-1.13-.28-.15-.68-.52-.01-.53.63-.01 1.08.58 1.23.82.72 1.21 1.87.87 2.33.66.07-.52.28-.87.51-1.07-1.78-.2-3.64-.89-3.64-3.95 0-.87.31-1.59.82-2.15-.08-.2-.36-1.02.08-2.12 0 0 .67-.21 2.2.82.64-.18 1.32-.27 2-.27.68 0 1.36.09 2 .27 1.53-1.04 2.2-.82 2.2-.82.44 1.1.16 1.92.08 2.12.51.56.82 1.27.82 2.15 0 3.07-1.87 3.75-3.65 3.95.29.25.54.73.54 1.48 0 1.07-.01 1.93-.01 2.2 0 .21.15.46.55.38A8.012 8.012 0 0 0 16 8c0-4.42-3.58-8-8-8z"
38
- />
39
- </svg>
40
- </a>
41
- </div>
42
- </footer>
43
- )
44
- }
@@ -1,78 +0,0 @@
1
- import { Link } from '@tanstack/react-router'
2
- import ThemeToggle from './ThemeToggle'
3
-
4
- export default function Header() {
5
- return (
6
- <header className="sticky top-0 z-50 border-b border-[var(--line)] bg-[var(--header-bg)] px-4 backdrop-blur-lg">
7
- <nav className="page-wrap flex flex-wrap items-center gap-x-3 gap-y-2 py-3 sm:py-4">
8
- <h2 className="m-0 flex-shrink-0 text-base font-semibold tracking-tight">
9
- <Link
10
- to="/"
11
- className="inline-flex items-center gap-2 rounded-full border border-[var(--chip-line)] bg-[var(--chip-bg)] px-3 py-1.5 text-sm text-[var(--sea-ink)] no-underline shadow-[0_8px_24px_rgba(30,90,72,0.08)] sm:px-4 sm:py-2"
12
- >
13
- <span className="h-2 w-2 rounded-full bg-[linear-gradient(90deg,#56c6be,#7ed3bf)]" />
14
- TanStack Start
15
- </Link>
16
- </h2>
17
-
18
- <div className="ml-auto flex items-center gap-1.5 sm:ml-0 sm:gap-2">
19
- <a
20
- href="https://x.com/tan_stack"
21
- target="_blank"
22
- rel="noreferrer"
23
- className="hidden rounded-xl p-2 text-[var(--sea-ink-soft)] transition hover:bg-[var(--link-bg-hover)] hover:text-[var(--sea-ink)] sm:block"
24
- >
25
- <span className="sr-only">Follow TanStack on X</span>
26
- <svg viewBox="0 0 16 16" aria-hidden="true" width="24" height="24">
27
- <path
28
- fill="currentColor"
29
- d="M12.6 1h2.2L10 6.48 15.64 15h-4.41L7.78 9.82 3.23 15H1l5.14-5.84L.72 1h4.52l3.12 4.73L12.6 1zm-.77 12.67h1.22L4.57 2.26H3.26l8.57 11.41z"
30
- />
31
- </svg>
32
- </a>
33
- <a
34
- href="https://github.com/TanStack"
35
- target="_blank"
36
- rel="noreferrer"
37
- className="hidden rounded-xl p-2 text-[var(--sea-ink-soft)] transition hover:bg-[var(--link-bg-hover)] hover:text-[var(--sea-ink)] sm:block"
38
- >
39
- <span className="sr-only">Go to TanStack GitHub</span>
40
- <svg viewBox="0 0 16 16" aria-hidden="true" width="24" height="24">
41
- <path
42
- fill="currentColor"
43
- d="M8 0C3.58 0 0 3.58 0 8c0 3.54 2.29 6.53 5.47 7.59.4.07.55-.17.55-.38 0-.19-.01-.82-.01-1.49-2.01.37-2.53-.49-2.69-.94-.09-.23-.48-.94-.82-1.13-.28-.15-.68-.52-.01-.53.63-.01 1.08.58 1.23.82.72 1.21 1.87.87 2.33.66.07-.52.28-.87.51-1.07-1.78-.2-3.64-.89-3.64-3.95 0-.87.31-1.59.82-2.15-.08-.2-.36-1.02.08-2.12 0 0 .67-.21 2.2.82.64-.18 1.32-.27 2-.27.68 0 1.36.09 2 .27 1.53-1.04 2.2-.82 2.2-.82.44 1.1.16 1.92.08 2.12.51.56.82 1.27.82 2.15 0 3.07-1.87 3.75-3.65 3.95.29.25.54.73.54 1.48 0 1.07-.01 1.93-.01 2.2 0 .21.15.46.55.38A8.012 8.012 0 0 0 16 8c0-4.42-3.58-8-8-8z"
44
- />
45
- </svg>
46
- </a>
47
-
48
- <ThemeToggle />
49
- </div>
50
-
51
- <div className="order-3 flex w-full flex-wrap items-center gap-x-4 gap-y-1 pb-1 text-sm font-semibold sm:order-2 sm:w-auto sm:flex-nowrap sm:pb-0">
52
- <Link
53
- to="/"
54
- className="nav-link"
55
- activeProps={{ className: 'nav-link is-active' }}
56
- >
57
- Home
58
- </Link>
59
- <Link
60
- to="/about"
61
- className="nav-link"
62
- activeProps={{ className: 'nav-link is-active' }}
63
- >
64
- About
65
- </Link>
66
- <a
67
- href="https://tanstack.com/start/latest/docs/framework/react/overview"
68
- className="nav-link"
69
- target="_blank"
70
- rel="noreferrer"
71
- >
72
- Docs
73
- </a>
74
- </div>
75
- </nav>
76
- </header>
77
- )
78
- }
@@ -1,81 +0,0 @@
1
- import { useEffect, useState } from 'react'
2
-
3
- type ThemeMode = 'light' | 'dark' | 'auto'
4
-
5
- function getInitialMode(): ThemeMode {
6
- if (typeof window === 'undefined') {
7
- return 'auto'
8
- }
9
-
10
- const stored = window.localStorage.getItem('theme')
11
- if (stored === 'light' || stored === 'dark' || stored === 'auto') {
12
- return stored
13
- }
14
-
15
- return 'auto'
16
- }
17
-
18
- function applyThemeMode(mode: ThemeMode) {
19
- const prefersDark = window.matchMedia('(prefers-color-scheme: dark)').matches
20
- const resolved = mode === 'auto' ? (prefersDark ? 'dark' : 'light') : mode
21
-
22
- document.documentElement.classList.remove('light', 'dark')
23
- document.documentElement.classList.add(resolved)
24
-
25
- if (mode === 'auto') {
26
- document.documentElement.removeAttribute('data-theme')
27
- } else {
28
- document.documentElement.setAttribute('data-theme', mode)
29
- }
30
-
31
- document.documentElement.style.colorScheme = resolved
32
- }
33
-
34
- export default function ThemeToggle() {
35
- const [mode, setMode] = useState<ThemeMode>('auto')
36
-
37
- useEffect(() => {
38
- const initialMode = getInitialMode()
39
- setMode(initialMode)
40
- applyThemeMode(initialMode)
41
- }, [])
42
-
43
- useEffect(() => {
44
- if (mode !== 'auto') {
45
- return
46
- }
47
-
48
- const media = window.matchMedia('(prefers-color-scheme: dark)')
49
- const onChange = () => applyThemeMode('auto')
50
-
51
- media.addEventListener('change', onChange)
52
- return () => {
53
- media.removeEventListener('change', onChange)
54
- }
55
- }, [mode])
56
-
57
- function toggleMode() {
58
- const nextMode: ThemeMode =
59
- mode === 'light' ? 'dark' : mode === 'dark' ? 'auto' : 'light'
60
- setMode(nextMode)
61
- applyThemeMode(nextMode)
62
- window.localStorage.setItem('theme', nextMode)
63
- }
64
-
65
- const label =
66
- mode === 'auto'
67
- ? 'Theme mode: auto (system). Click to switch to light mode.'
68
- : `Theme mode: ${mode}. Click to switch mode.`
69
-
70
- return (
71
- <button
72
- type="button"
73
- onClick={toggleMode}
74
- aria-label={label}
75
- title={label}
76
- className="rounded-full border border-[var(--chip-line)] bg-[var(--chip-bg)] px-3 py-1.5 text-sm font-semibold text-[var(--sea-ink)] shadow-[0_8px_22px_rgba(30,90,72,0.08)] transition hover:-translate-y-0.5"
77
- >
78
- {mode === 'auto' ? 'Auto' : mode === 'dark' ? 'Dark' : 'Light'}
79
- </button>
80
- )
81
- }